From d52daa6e61fbf4755c450fd770e19cac8c9c9c39 Mon Sep 17 00:00:00 2001 From: Felipe Trindade Date: Thu, 22 Feb 2024 16:33:06 -0300 Subject: [PATCH] add instrumentation to the code --- .gitignore | 2 + Dockerfile | 2 +- README.md | 54 +- config/grafana.yaml | 7 +- config/otel-collector.yaml | 17 + config/tempo.yaml | 30 + docker-compose.yaml | 22 + package.json | 11 +- pnpm-lock.yaml | 1513 +++++++++++++++++++++++++++++++-- src/config/environments.ts | 1 + src/config/instrumentation.ts | 31 + 11 files changed, 1619 insertions(+), 71 deletions(-) create mode 100644 config/otel-collector.yaml create mode 100644 config/tempo.yaml create mode 100644 src/config/instrumentation.ts diff --git a/.gitignore b/.gitignore index 91dc8cf..24be389 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # Created by https://www.toptal.com/developers/gitignore/api/node,visualstudiocode,macos # Edit at https://www.toptal.com/developers/gitignore?templates=node,visualstudiocode,macos +.vscode/ + ############################## ###### macOS ############################## diff --git a/Dockerfile b/Dockerfile index d002803..c9afd2b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,4 +17,4 @@ RUN pnpm install --prod COPY --from=build /app/dist ./ COPY src/config/database/migrations ./src/config/database/migrations EXPOSE 3000 -CMD ["node", "./src/index.js"] +CMD ["node", "--require", "./src/config/instrumentation.js", "./src/index.js"] diff --git a/README.md b/README.md index 71d6108..a840bb9 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ The architecture of this project is simple: an API that uses MySQL as the databa ## Getting Started -This project uses [pnpm](https://pnpm.io/) as the package manager, so this must be installed in your machine in order to start contributing to this project. +This project uses [pnpm](https://pnpm.io/) as the package manager, so this must be installed in your machine to start contributing to this project. -Several helpful script are present in the `package.json` file, such as: create the infrastructure needed (MySQL database), run tests, run locally the code, build the code... +Several helpful scripts are present in the `package.json` file, such as: creating the infrastructure needed (MySQL database), running tests, running the code, build the code... A step-by-step guide on how to run this project is the following: @@ -50,27 +50,44 @@ DB_NAME=api DB_HOST=localhost DB_PORT=3306 DATABASE_URL=mysql://user:password123@localhost:3306/api -LOGGER_FILENAME=poll.log +OTEL_COLLECTOR_URL=http://otel-collector:4318 ``` -5. Setup database infrastructure +Besides these environment variables (related to the application) some others need to be set (OpenTelemetry): -In order to setup the infrastructure the following steps are executed: MySQL Docker container is created, migrations are execute, database is seeded, observability stack is created. In order to simplify all these steps a script was created for you, so you can simply run: +```shell +OTEL_SERVICE_NAME=poll-api +``` + +5. Setup database infrastructure +To set up the infrastructure the following steps are executed: MySQL Docker container is created, migrations are executed, the database is seeded, and the observability stack is created. To simplify all these steps a script was created for you, so you can simply run: ``` pnpm infra:up ``` -We are using [dbmate](https://github.com/amacneil/dbmate), an agnostic tool used for database migration. For MySQL databases it expect the [DATABASE_URL](https://github.com/amacneil/dbmate#mysql) environment variable to be set with the string URL used to connect to the database, that is why we are creating this environment variable in the `.env` file given above. +We are using [dbmate](https://github.com/amacneil/dbmate), an agnostic tool used for database migration. For MySQL databases it expects the [DATABASE_URL](https://github.com/amacneil/dbmate#mysql)(https://github.com/amacneil/dbmate#mysql) environment variable to be set with the string URL used to connect to the database, that is why we are creating this environment variable in the `.env` file given above. 6. Run the code -You can run the code in a watch mode, which means the API will auto-refresh with new changes everytime you modify and save any files, this helps you increase your productivity. You can run the API with the following script: +You can run the code in a watch mode, which means the API will auto-refresh with new changes every time you modify and save any files, this helps you increase your productivity. You can run the API with the following script: ``` pnpm start:dev ``` +If you want to use the observability stack (log, traces, metrics) you can't simply run locally, you will need to run the container version in the same network as all the other components (MySQL, Loki, Grafana, Tempo, Prometheus). So instead of running `pnpm start:dev` you can run the following: + +``` +pnpm container:up +``` + +Notice that it won't auto-refresh, so if you want to test your change you will need to: + +``` +pnpm container:down +``` + 7. Run tests Always create tests for new features. The tests are not mocking the database, so it will run tests against the MySQL docker database created! For it to work perfectly it expects the database to be seeded! @@ -85,6 +102,7 @@ You can destroy all the created infrastructure with the following command: ``` pnpm infra:down +pnpm container:down ``` ## Database Modeling @@ -97,26 +115,26 @@ This project fullfills the following requirements: ### Poll Creation -- User should be able to create a poll and get a link to share with people -- User can choose if the poll allows more than one choice in the same vote (multi choice poll) +- Users should be able to create a poll and get a link to share with people +- Users can choose if the poll allows more than one choice in the same vote (multi choice poll) ### Poll Voting System - -- User should be able to vote in a given poll -- User should be able to see the vote results of a given poll after voting +- Users should be able to vote in a given poll +- Users should be able to see the vote results of a given poll after voting ## Observability -It's beeing implemented a whole observability stack to monitor the application correctly. +It's being implemented a whole observability stack to monitor the application correctly. -- **Logs**: are being collected by [FluentBit](https://fluentbit.io/) and forwarded to Loki. +- **Logs**: are being collected by [FluentBit](https://fluentbit.io/) and forwarded to [Loki](https://grafana.com/docs/loki/latest/). +- **Traces**: Traces are automatically generated (instrumentation) using OpenTelemetry and are collected by [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) and forwarded to [Tempo](https://grafana.com/oss/tempo/) using [OTLP protocol](https://opentelemetry.io/docs/specs/otel/protocol/) via HTTP requests -In order to fully test this locally you will need to build the local application using Docker. To make it easier a script was created and added in `package.json`, so you can simply run `pnpm container` +To fully test this locally you will need to build the local application using Docker. To make it easier a script was created and added in `package.json`, so you can simply run `pnpm container` ## Next Steps -The following requirements should be implemented in next versions: +The following requirements should be implemented in the next versions: -- Add observability to the application: metrics, traces +- Add observability to the application: metrics - Add cache layer (e.g. Redis) to minimize latency time -- Validate the need of using a poll of connections to manage the connection to the database +- Validate the need to use a poll of connections to manage the connection to the database diff --git a/config/grafana.yaml b/config/grafana.yaml index a8d26bd..1f7a970 100644 --- a/config/grafana.yaml +++ b/config/grafana.yaml @@ -1,7 +1,12 @@ apiVersion: 1 datasources: + # https://grafana.com/docs/grafana/latest/datasources/loki/#provision-the-loki-data-source - name: Loki type: loki access: proxy url: http://loki:3100 - basicAuth: false \ No newline at end of file + basicAuth: false + # https://grafana.com/docs/grafana/latest/datasources/tempo/configure-tempo-data-source/#provision-the-data-source + - name: Tempo + type: tempo + url: http://tempo:3200 \ No newline at end of file diff --git a/config/otel-collector.yaml b/config/otel-collector.yaml new file mode 100644 index 0000000..345851d --- /dev/null +++ b/config/otel-collector.yaml @@ -0,0 +1,17 @@ +receivers: + otlp: + protocols: + http: + endpoint: 0.0.0.0:4318 + grpc: + endpoint: 0.0.0.0:4317 + +exporters: + otlphttp: + endpoint: http://tempo:4318 + +service: + pipelines: + traces: + receivers: [otlp] + exporters: [otlphttp] diff --git a/config/tempo.yaml b/config/tempo.yaml new file mode 100644 index 0000000..a17c6cf --- /dev/null +++ b/config/tempo.yaml @@ -0,0 +1,30 @@ +stream_over_http_enabled: true + +# https://grafana.com/docs/tempo/latest/configuration/#server +server: + http_listen_port: 3200 + log_level: info + +# https://grafana.com/docs/tempo/latest/configuration/#query-frontend +query_frontend: + search: + duration_slo: 5s + trace_by_id: + duration_slo: 5s + +# https://grafana.com/docs/tempo/latest/configuration/#distributor +distributor: + receivers: + otlp: + protocols: + http: + grpc: + +# https://grafana.com/docs/tempo/latest/configuration/#storage +storage: + trace: + backend: local + wal: + path: /tmp/tempo/wal # where to store the the wal locally + local: + path: /tmp/tempo/blocks diff --git a/docker-compose.yaml b/docker-compose.yaml index 3289e41..6007527 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -76,6 +76,28 @@ services: timeout: 5s retries: 5 + otel-collector: + image: otel/opentelemetry-collector:0.95.0 + container_name: otel-collector + command: [ "--config=/etc/otel-collector.yaml" ] + networks: + - pollNetwork + volumes: + - ./config/otel-collector.yaml:/etc/otel-collector.yaml + + tempo: + image: grafana/tempo:2.3.1 + container_name: tempo + networks: + - pollNetwork + ports: + - 3200:3200 + - 4317:4317 # OTLP gRPC receiver + - 4318:4318 # OTLP http receiver + volumes: + - ./config/tempo.yaml:/etc/tempo/config.yaml + command: -config.file=/etc/tempo/config.yaml + networks: pollNetwork: name: pollNetwork diff --git a/package.json b/package.json index 28131f0..6fbe075 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "db:migrate:up": "pnpm exec dbmate --migrations-dir ./src/config/database/migrations up", "db:migrate:down": "pnpm exec dbmate --migrations-dir ./src/config/database/migrations down", "db:seed": "pnpm exec dbmate --migrations-dir ./src/config/database/seeds up", - "start": "ts-node src/index.ts", - "start:dev": "nodemon src/index.ts", + "start": "npx ts-node src/index.ts", + "start:dev": "npx nodemon --require ./src/config/instrumentation.ts src/index.ts", "container:up": "docker build -t poll-api . && docker container run -d -p 3000:3000 --name poll --env-file .env -e DB_HOST='mysql' --network pollNetwork --log-driver fluentd --log-opt fluentd-address=127.0.0.1:24224 --log-opt fluentd-async-connect=true --log-opt tag=poll-api poll-api", "container:down": "docker rm -f poll" }, @@ -42,6 +42,12 @@ "typescript": "^5.2.2" }, "dependencies": { + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/auto-instrumentations-node": "^0.41.1", + "@opentelemetry/exporter-trace-otlp-proto": "^0.48.0", + "@opentelemetry/sdk-metrics": "^1.21.0", + "@opentelemetry/sdk-node": "^0.48.0", + "@opentelemetry/sdk-trace-node": "^1.21.0", "body-parser": "^1.20.2", "compression": "^1.7.4", "cors": "^2.8.5", @@ -52,6 +58,7 @@ "iconv-lite": "^0.6.3", "jest": "^29.7.0", "mysql2": "^3.6.3", + "npx": "^10.2.2", "supertest": "^6.3.3", "uuid": "^9.0.1", "winston": "^3.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8281142..9b65999 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,24 @@ settings: excludeLinksFromLockfile: false dependencies: + '@opentelemetry/api': + specifier: ^1.7.0 + version: 1.7.0 + '@opentelemetry/auto-instrumentations-node': + specifier: ^0.41.1 + version: 0.41.1(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-proto': + specifier: ^0.48.0 + version: 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': + specifier: ^1.21.0 + version: 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-node': + specifier: ^0.48.0 + version: 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-node': + specifier: ^1.21.0 + version: 1.21.0(@opentelemetry/api@1.7.0) body-parser: specifier: ^1.20.2 version: 1.20.2 @@ -35,6 +53,9 @@ dependencies: mysql2: specifier: ^3.6.3 version: 3.6.3 + npx: + specifier: ^10.2.2 + version: 10.2.2 supertest: specifier: ^6.3.3 version: 6.3.3 @@ -528,6 +549,88 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@grpc/grpc-js@1.10.1: + resolution: {integrity: sha512-55ONqFytZExfOIjF1RjXPcVmT/jJqFzbbDqxK9jmRV4nxiYWtL9hENSW1Jfx0SdZfrvoqd44YJ/GJTqfRrawSQ==} + engines: {node: ^8.13.0 || >=10.10.0} + dependencies: + '@grpc/proto-loader': 0.7.10 + '@types/node': 20.8.10 + dev: false + + /@grpc/proto-loader@0.7.10: + resolution: {integrity: sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.2.6 + yargs: 17.7.2 + dev: false + + /@hapi/b64@5.0.0: + resolution: {integrity: sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/boom@9.1.4: + resolution: {integrity: sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/bourne@2.1.0: + resolution: {integrity: sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==} + dev: false + + /@hapi/cryptiles@5.1.0: + resolution: {integrity: sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==} + engines: {node: '>=12.0.0'} + dependencies: + '@hapi/boom': 9.1.4 + dev: false + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: false + + /@hapi/iron@6.0.0: + resolution: {integrity: sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==} + dependencies: + '@hapi/b64': 5.0.0 + '@hapi/boom': 9.1.4 + '@hapi/bourne': 2.1.0 + '@hapi/cryptiles': 5.1.0 + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/podium@4.1.3: + resolution: {integrity: sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/teamwork': 5.1.1 + '@hapi/validate': 1.1.3 + dev: false + + /@hapi/teamwork@5.1.1: + resolution: {integrity: sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==} + engines: {node: '>=12.0.0'} + dev: false + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@hapi/validate@1.1.3: + resolution: {integrity: sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + dev: false + /@humanwhocodes/config-array@0.11.13: resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} @@ -766,53 +869,1026 @@ packages: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@opentelemetry/api-logs@0.48.0: + resolution: {integrity: sha512-1/aMiU4Eqo3Zzpfwu51uXssp5pzvHFObk8S9pKAiXb1ne8pvg1qxBQitYL1XUiAMEXFzgjaidYG2V6624DRhhw==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + + /@opentelemetry/api@1.7.0: + resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} + engines: {node: '>=8.0.0'} + dev: false + + /@opentelemetry/auto-instrumentations-node@0.41.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-gQG0mHlPVBQveuemqNYkrL4IB3T6v2e5sMiDI6FQzFWeLzzFrC04R4fY6AE1YmkhOyteCDpHL/U6CULP2mkt8w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.4.1 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-amqplib': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-aws-lambda': 0.38.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-aws-sdk': 0.38.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-bunyan': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-cassandra-driver': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-connect': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-cucumber': 0.3.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-dataloader': 0.6.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-dns': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-express': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-fastify': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-fs': 0.9.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-generic-pool': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-graphql': 0.37.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-grpc': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-hapi': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-http': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-ioredis': 0.37.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-knex': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-koa': 0.37.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-memcached': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mongodb': 0.39.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mongoose': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mysql': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-mysql2': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-nestjs-core': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-net': 0.33.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-pg': 0.38.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-pino': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-redis': 0.36.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-redis-4': 0.36.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-restify': 0.35.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-router': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-socket.io': 0.36.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-tedious': 0.7.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-winston': 0.34.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-alibaba-cloud': 0.28.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-aws': 1.3.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-container': 0.3.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resource-detector-gcp': 0.29.6(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-node': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@opentelemetry/context-async-hooks@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-t0iulGPiMjG/NrSjinPQoIf8ST/o9V0dGOJthfrFporJlNdlKIQPfC7lkrV+5s2dyBThfmSbJlp/4hO1eOcDXA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + + /@opentelemetry/core@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-KP+OIweb3wYoP7qTYL/j5IpOlu52uxBv5M4+QhSmmUfLyTgu1OIS71msK3chFo1D6Y61BIH3wMiMYRCxJCQctA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/exporter-trace-otlp-grpc@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-+qRQXUbdRW6aNRT5yWOG3G6My1VxxKeqgUyLkkdIjkT20lvymjiN2RpBfGMtAf/oqnuRknf9snFl9VSIO2gniw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.10.1 + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/exporter-trace-otlp-http@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QEZKbfWqXrbKVpr2PHd4KyKI0XVOhUYC+p2RPV8s+2K5QzZBE3+F9WlxxrXDfkrvGmpQAZytBoHQQYA3AGOtpw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/exporter-trace-otlp-proto@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-hVXr/8DYlAKAzQYMsCf3ZsGweS6NTK3IHIEqmLokJZYcvJQBEEazeAdISfrL/utWnapg1Qnpw8u+W6SpxNzmTw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-proto-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/exporter-zipkin@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-J0ejrOx52s1PqvjNalIHvY/4v9ZxR2r7XS7WZbwK3qpVYZlGVq5V1+iCNweqsKnb/miUt/4TFvJBc9f5Q/kGcA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/instrumentation-amqplib@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-lVGRkyGnjFJv9O8oO/+uT40nrNj4UO+UN0k8708guy/toVgxsVpv4PtdWJTjbtu89UDk9gUxq62jpHxqrVaNnw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-aws-lambda@0.38.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-MIPvM8S4LqGKE+IAnYVCRUnEjaWbPsbqL4p2BnGcox08e6+JQe+0d16DI0cKVSFZOzV5T/or3ewQ/bB0lPm8yg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-aws-xray': 1.3.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/aws-lambda': 8.10.122 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-aws-sdk@0.38.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-/Tupb4UfVVkmcopq2H2nr2D/pHLF0riVw2biQQUJ/jGIkfrOgUMMKbShi2RQE4Zy8NFv3xaDn4/pNxzodLBy3w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagation-utils': 0.30.6(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-bunyan@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-bQ8OzV7nVTA+oGiTzLjUmRFAbnXi0U/Z4VJCpj+1DRsaAaMT17eRpAOh22LQR0JBnv2vBm8CvIQl4CcAnsB46g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@types/bunyan': 1.8.9 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-cassandra-driver@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-NlJkEiP37/WQvtSyYe4zxaBcaoweO/2+UtDssldk9NFmFutLHyMT/P5q5fe8i73ylmkPOAZnN8P48oHOhZHM1g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-connect@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-EAMmUC2/KfeZl4qNgUsiVqT5Jti0jDl4GHi4TpDg41VBEJkRX/0+JcPBWgdFUgEfeiZr0GPVQud4i8jAwJ+ORw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-cucumber@0.3.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-nM9BL0t2Nxwbb41MXxNXTDL0zq7FXhOX9F3OiAqYUJHqb7BHyzV9KoQ+Ao1BjqJR91hUm1OFNgHAk3y8uiuq4w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-dataloader@0.6.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-jkPdn83WV/TcnhQ5bOIoYcJGvMxXyYlCzbqfuB6HsMqf3CqpdgBQYlMuKi6qIfD4QWYt2R992yglNxPLuJ7xeg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-dns@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QDJadJOQg9CLqMC79r4T5ugN4C4lb6eJYLmHgnLg3fh1JUGfyjQHtD3T7lH0P8251Mnt5m8zjDDbPKcqK2aGcw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-express@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-ZmSB4WMd88sSecOL7DlghzdBl56/8ymb02n+xEJ/6zUgONuw/1uoTh1TAaNPKfEWdNLoLKXQm+Gd2zBrUVOX0w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fastify@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-sl3q9Mt+yM6GlZJKhfLUIRrVEYqfmI0hqYLha5OFG5rLrgnZCCZVy8ra4+Pa40ecH1409cvwwBPf7k9AHEQBTw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fs@0.9.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Xp31lb2Sj50ppsJ393650HxSi5IJIgddXxrUeVljmsabdmECPUj0YAt/Wwb1oIHFn04iL9Tq4VkF/otlLaI9ww==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-generic-pool@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QMSSOfIqMJhXqFryLVbAMsgRktNHdhMEpsOgEiHurLfvAJhyEOBcTTUuo6Laqt50IIzIm3YuHL9ZtEl9fve2ag==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-graphql@0.37.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-WL5Qn1aRudJDxVN0Ao73/yzXBGBJAH1Fd2tteuGXku/Qw9hYQ936CgoO66GWmSiq2lyjsojAk1t5f+HF9j3NXw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-grpc@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-MmJHkbqaulqfECjotRtco9AXOq+D1HLq53wI7UFeE8bl8kISP9iMkt+A7PrtPFpRGCglwFvSa0djId6EWsP0DQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-hapi@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-qUENVxwCYbRbJ8HBY54ZL1Z9q1guCEurW6tCFFJJKQFu/MKEw7GSFImy5DR2Mp8b5ggZO36lYFcx0QUxfy4GJg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/hapi__hapi': 20.0.13 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-http@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-uXqOsLhW9WC3ZlGm6+PSX0xjSDTCfy4CMjfYj6TPWusOO8dtdx040trOriF24y+sZmS3M+5UQc6/3/ZxBJh4Mw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-ioredis@0.37.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-xBPfu03IIG8x1pmt1Dx+XrBO4ZB4UjEcrouGbp6eV3dLQ7eJPYZgfNXmsqkpsxgNQuVCi2a3WEAwZ5Wl2hk7Vw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/redis-common': 0.36.1 + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/ioredis4': /@types/ioredis@4.28.10 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-knex@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-7L3Q8Yy5vY4W4zpRrjKEc0OpVPYyERtDz5dAumKjkJsEVPANr7E8Cc+No6VjZGeN+HgFFwEo+jcQCTWJzdxvRw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-koa@0.37.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-EfuGv1RJCSZh77dDc3PtvZXGwcsTufn9tU6T9VOTFcxovpyJ6w0og73eD0D02syR8R+kzv6rg1TeS8+lj7pyrQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/koa': 2.14.0 + '@types/koa__router': 12.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-lru-memoizer@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-m1kXrc11XNj7cC6sfcsYqd+kuCcN2wI9LXpB2l2BZCogqxHCgjuVoiXvT6K9LfO4tLefcvhoK0N8XuVJ8xyyOw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-memcached@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-TdGT5ytt8o7FTIsQvx010ykYbqu+IfGoOKA+IXLHdX1+l7vFWyv3ZOzQbRDmA4rxujJAAPf/n4/D7QECyedE/g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/memcached': 2.2.10 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongodb@0.39.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-m9dMj39pcCshzlfCEn2lGrlNo7eV5fb9pGBnPyl/Am9Crh7Or8vOqvByCNd26Dgf5J978zTdLGF+6tM8j1WOew==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongoose@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-gReBMWD2Oa/wBGRWyg6B2dbPHhgkpOqDio31gE3DbC4JaqCsMByyeix75rZSzZ71RQmVh3d4jRLsqUtNVBzcyg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql2@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-DI9NXYJBbQ72rjz1KCKerQFQE+Z4xRDoyYek6JpITv5BlhPboA8zKkltxyQLL06Y2RTFYslw1gvg+x9CWlRzJw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-QKRHd3aFA2vKOPzIZ9Q3UIxYeNPweB62HGlX2l3shOKrUhrtTg2/BzaKpHQBy2f2nO2mxTF/mOFeVEDeANnhig==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/mysql': 2.15.22 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-nestjs-core@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-HvbcCVAMZEIFrJ0Si9AfjxOr14KcH5h/lq5zLQ8AjZJpW0WaeO/ox5UgFi3J73Br91WbZHRgbXxMeodNycJJuA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-net@0.33.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-x6awrqF0YfEhGGNE2JtEWvB+zEls7mFvLDii54DnWxpQU69+AqKCW/ZwC91EDefOMGSYBckL0uEn6XNOgkTTbw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-pg@0.38.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Q7V/OJ1OZwaWYNOP/E9S6sfS03Z+PNU1SAjdAoXTj5j4u4iJSMSieLRWXFaHwsbefIOMkYvA00EBKF9IgbgbLA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-pino@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-gMfJ5Qy793mbaAGnQE3yp1Cb0y4np74rBPu20Oy/v8TTgPQOEV5PyNI0GNGggmZQIJSkdtYa8Ndb3huH3iZE5g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-redis-4@0.36.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-XO0EV2TxUsaRdcp79blyLGG5JWWl7NWVd/XNbU8vY7CuYUfRhWiTXYoM4PI+lwkAnUPvPtyiOzYs9px23GnibA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/redis-common': 0.36.1 + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-redis@0.36.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-rKFylIacEBwLxKFrPvxpVi8hHY9qXfQSybYnYNyF/VxUWMGYDPMpbCnTQkiVR5u+tIhwSvhSDG2YQEq6syHUIQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/redis-common': 0.36.1 + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-restify@0.35.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-0ghtxsGJxHEwJfIzxDN3FCbNiTXqwv2jV6ip716jyjWN3f6MuRHm7NPWI/KNvu+IjqDj16KRGZG7nUAEB1ojog==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-router@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-7LsonkdnQi35eF7CWl8394QDgyd811gCawJ6QuS8GbWNIvZ3S2f9j+Zy0fWSmFgO28ruW1pUG51ql8xdXWa8TA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-socket.io@0.36.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-c9Zc6WKxTZtMaOj01kmJGLKabEj805YgTav4l9vgojHrf6MH1fTlw+SGvOKhfPfzmu2QhNORAfqPAB1poDwqEQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-tedious@0.7.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-o/5my8ZOuxACPSzMaXdPnQiMpmOPIJoTj+DRcs4vEJxk+KwlVNucoafSMpWQEyTNNuq2JI87Ru6Di2mp5T20EQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-winston@0.34.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Ejssv6Uih7ipoNGYQLXd+cKZdEfTfTJ/vzpUSeYiJZ36mVYER1f8fs9Kb7jTKjHD55g2s6cUJj9lifbDFI4EEw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-sjtZQB5PStIdCw5ovVTDGwnmQC+GGYArJNgIcydrDSqUTdYBnMrN9P4pwQZgS3vTGIp+TU1L8vMXGe51NVmIKQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.7.1 + require-in-the-middle: 7.2.0 + semver: 7.5.4 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/otlp-exporter-base@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-T4LJND+Ugl87GUONoyoQzuV9qCn4BFIPOnCH1biYqdGhc2JahjuLqVD9aefwLzGBW638iLAo88Lh68h2F1FLiA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/otlp-grpc-exporter-base@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Vdp56RK9OU+Oeoy3YQC/UMOWglKQ9qvgGr49FgF4r8vk5DlcTUgVS0m3KG8pykmRPA+5ZKaDuqwPw5aTvWmHFw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.10.1 + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + protobufjs: 7.2.6 + dev: false + + /@opentelemetry/otlp-proto-exporter-base@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-14GSTvPZPfrWsB54fYMGb8v+Uge5xGXyz0r2rf4SzcRnO2hXCPHEuL3yyL50emaKPAY+fj29Dm0bweawe8UA6A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + protobufjs: 7.2.6 + dev: false + + /@opentelemetry/otlp-transformer@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-yuoS4cUumaTK/hhxW3JUy3wl2U4keMo01cFDrUOmjloAdSSXvv1zyQ920IIH4lymp5Xd21Dj2/jq2LOro56TJg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/propagation-utils@0.30.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-qvnYee5I/xrBY5XClUlOASIOdoTbnFGNI6+ViKqdoErF2xKmhysXcmxlJNzQFNDK0muTfjvJMZcFyEielARk7g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + + /@opentelemetry/propagator-aws-xray@1.3.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/propagator-b3@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-3ZTobj2VDIOzLsIvvYCdpw6tunxUVElPxDvog9lS49YX4hohHeD84A8u9Ns/6UYUcaN5GSoEf891lzhcBFiOLA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/propagator-jaeger@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-8TQSwXjBmaDx7JkxRD7hdmBmRK2RGRgzHX1ArJfJhIc5trzlVweyorzqQrXOvqVEdEg+zxUMHkL5qbGH/HDTPA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/redis-common@0.36.1: + resolution: {integrity: sha512-YjfNEr7DK1Ymc5H0bzhmqVvMcCs+PUEUerzrpTFdHfZxj3HpnnjZTIFKx/gxiL/sajQ8dxycjlreoYTVYKBXlw==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/resource-detector-alibaba-cloud@0.28.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-VuJXc+oDQ/SYRHBCQbEshl0WJtEMvgfSkTDBq+WSxj6y9sKe0HCt55Sxeb5nLmBdtCYWMQFniHe2K4GLSjDZVw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/resource-detector-aws@1.3.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-hFJ19yFwChqGCv1uMkXtjZU9BG8GcChe8cRCAkGWg1RZADse5S2ausf3D8pYw1cR3ktJtuAmRrGZniT6TDUPDw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/resource-detector-container@0.3.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-psxtzQakVuZKFl/ukn+nPW4Ixn+KPHGsWJMYKndmXrsgdFri78X+MHR0wLOO41Zn79sc35DiSk+GdJ24cCylbg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/resource-detector-gcp@0.29.6(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-cx03fXPknmiVW0hpWAJr0Nr8xwkwRB8VNWPvNrmP7UzJ8eEztY9lHnVke4ZVFaVGvm/4EFxk2y5hPNggbIezoA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + gcp-metadata: 6.1.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@opentelemetry/resources@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-1Z86FUxPKL6zWVy2LdhueEGl9AHDJcx+bvHStxomruz6Whd02mE3lNUMjVJ+FGRoktx/xYQcxccYb03DiUP6Yw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/sdk-logs@0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-lRcA5/qkSJuSh4ItWCddhdn/nNbVvnzM+cm9Fg1xpZUeTeozjJDBcHnmeKoOaWRnrGYBdz6UTY6bynZR9aBeAA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.8.0' + '@opentelemetry/api-logs': '>=0.39.1' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + dev: false + + /@opentelemetry/sdk-metrics@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-on1jTzIHc5DyWhRP+xpf+zrgrREXcHBH4EDAfaB5mIG7TWpKxNXooQ1JCylaPsswZUv4wGnVTinr4HrBdGARAQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + lodash.merge: 4.6.2 + dev: false + + /@opentelemetry/sdk-node@0.48.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-3o3GS6t+VLGVFCV5bqfGOcWIgOdkR/UE6Qz7hHksP5PXrVBeYsPqts7cPma5YXweaI3r3h26mydg9PqQIcqksg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.48.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-http': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-zipkin': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-node': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/sdk-trace-base@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-yrElGX5Fv0umzp8Nxpta/XqU71+jCAyaLk34GmBzNcrW43nqbrqvdPs4gj4MVy/HcTjr6hifCDCYA3rMkajxxA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.21.0 + dev: false + + /@opentelemetry/sdk-trace-node@1.21.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-1pdm8jnqs+LuJ0Bvx6sNL28EhC8Rv7NYV8rnoXq3GIQo7uOHBDAFSj7makAfbakrla7ecO1FRfI8emnR4WvhYA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.8.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/context-async-hooks': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-b3': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/propagator-jaeger': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + semver: 7.5.4 + dev: false + + /@opentelemetry/semantic-conventions@1.21.0: + resolution: {integrity: sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/sql-common@0.40.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-vSqRJYUPJVjMFQpYkQS3ruexCPSZJ8esne3LazLwtCPaPRvzZ7WG3tX44RouAn7w4wMp8orKguBqtt+ng2UTnw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + dev: false - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + dev: false - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + dev: false - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + dev: false - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + dev: false - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + dev: false - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: false - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: false - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: false + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: false + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: false + + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true + '@hapi/hoek': 9.3.0 + dev: false + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: false + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -839,6 +1915,16 @@ packages: /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + /@types/accepts@1.3.7: + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} + dependencies: + '@types/node': 20.8.10 + dev: false + + /@types/aws-lambda@8.10.122: + resolution: {integrity: sha512-vBkIh9AY22kVOCEKo5CJlyCgmSWvasC+SWUxL/x/vOwRobMpI/HG1xp/Ae3AqmSiZeLUbOhW0FCD3ZjqqUxmXw==} + dev: false + /@types/babel__core@7.20.4: resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==} dependencies: @@ -869,7 +1955,12 @@ packages: dependencies: '@types/connect': 3.4.37 '@types/node': 20.8.10 - dev: true + + /@types/bunyan@1.8.9: + resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} + dependencies: + '@types/node': 20.8.10 + dev: false /@types/compression@1.7.4: resolution: {integrity: sha512-sdFVnQJRkQBX83ydsLCBm4A39p45y0QkxdAR689yOtAFNbbS9Acrp86RZWJj6BHRXyZH9tX4t1dU7XDiGdY3nA==} @@ -877,16 +1968,34 @@ packages: '@types/express': 4.17.20 dev: true + /@types/connect@3.4.36: + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + dependencies: + '@types/node': 20.8.10 + dev: false + /@types/connect@3.4.37: resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==} dependencies: '@types/node': 20.8.10 - dev: true + + /@types/content-disposition@0.5.8: + resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} + dev: false /@types/cookiejar@2.1.4: resolution: {integrity: sha512-b698BLJ6kPVd6uhHsY7wlebZdrWPXYied883PDSzpJZYOP97EOn/oGdLCH3jJf157srkFReIZY5v0H1s8Dozrg==} dev: true + /@types/cookies@0.9.0: + resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} + dependencies: + '@types/connect': 3.4.37 + '@types/express': 4.17.20 + '@types/keygrip': 1.0.6 + '@types/node': 20.8.10 + dev: false + /@types/cors@2.8.15: resolution: {integrity: sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==} dependencies: @@ -900,7 +2009,6 @@ packages: '@types/qs': 6.9.9 '@types/range-parser': 1.2.6 '@types/send': 0.17.3 - dev: true /@types/express@4.17.20: resolution: {integrity: sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==} @@ -909,16 +2017,53 @@ packages: '@types/express-serve-static-core': 4.17.39 '@types/qs': 6.9.9 '@types/serve-static': 1.15.4 - dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: '@types/node': 20.8.10 + /@types/hapi__catbox@10.2.6: + resolution: {integrity: sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==} + dev: false + + /@types/hapi__hapi@20.0.13: + resolution: {integrity: sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==} + dependencies: + '@hapi/boom': 9.1.4 + '@hapi/iron': 6.0.0 + '@hapi/podium': 4.1.3 + '@types/hapi__catbox': 10.2.6 + '@types/hapi__mimos': 4.1.4 + '@types/hapi__shot': 4.1.6 + '@types/node': 20.8.10 + joi: 17.12.2 + dev: false + + /@types/hapi__mimos@4.1.4: + resolution: {integrity: sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==} + dependencies: + '@types/mime-db': 1.43.5 + dev: false + + /@types/hapi__shot@4.1.6: + resolution: {integrity: sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==} + dependencies: + '@types/node': 20.8.10 + dev: false + + /@types/http-assert@1.5.5: + resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} + dev: false + /@types/http-errors@2.0.3: resolution: {integrity: sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==} - dev: true + + /@types/ioredis@4.28.10: + resolution: {integrity: sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==} + dependencies: + '@types/node': 20.8.10 + dev: false /@types/istanbul-lib-coverage@2.0.6: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -948,26 +2093,81 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/keygrip@1.0.6: + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} + dev: false + + /@types/koa-compose@3.2.8: + resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} + dependencies: + '@types/koa': 2.14.0 + dev: false + + /@types/koa@2.14.0: + resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==} + dependencies: + '@types/accepts': 1.3.7 + '@types/content-disposition': 0.5.8 + '@types/cookies': 0.9.0 + '@types/http-assert': 1.5.5 + '@types/http-errors': 2.0.3 + '@types/keygrip': 1.0.6 + '@types/koa-compose': 3.2.8 + '@types/node': 20.8.10 + dev: false + + /@types/koa__router@12.0.3: + resolution: {integrity: sha512-5YUJVv6NwM1z7m6FuYpKfNLTZ932Z6EF6xy2BbtpJSyn13DKNQEkXVffFVSnJHxvwwWh2SAeumpjAYUELqgjyw==} + dependencies: + '@types/koa': 2.14.0 + dev: false + + /@types/memcached@2.2.10: + resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} + dependencies: + '@types/node': 20.8.10 + dev: false + + /@types/mime-db@1.43.5: + resolution: {integrity: sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==} + dev: false + /@types/mime@1.3.4: resolution: {integrity: sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==} - dev: true /@types/mime@3.0.3: resolution: {integrity: sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ==} - dev: true + + /@types/mysql@2.15.22: + resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==} + dependencies: + '@types/node': 20.8.10 + dev: false /@types/node@20.8.10: resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} dependencies: undici-types: 5.26.5 + /@types/pg-pool@2.0.4: + resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==} + dependencies: + '@types/pg': 8.6.1 + dev: false + + /@types/pg@8.6.1: + resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} + dependencies: + '@types/node': 20.8.10 + pg-protocol: 1.6.0 + pg-types: 2.2.0 + dev: false + /@types/qs@6.9.9: resolution: {integrity: sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==} - dev: true /@types/range-parser@1.2.6: resolution: {integrity: sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==} - dev: true /@types/semver@7.5.4: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} @@ -978,7 +2178,6 @@ packages: dependencies: '@types/mime': 1.3.4 '@types/node': 20.8.10 - dev: true /@types/serve-static@1.15.4: resolution: {integrity: sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==} @@ -986,7 +2185,10 @@ packages: '@types/http-errors': 2.0.3 '@types/mime': 3.0.3 '@types/node': 20.8.10 - dev: true + + /@types/shimmer@1.0.5: + resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==} + dev: false /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -1004,6 +2206,12 @@ packages: '@types/superagent': 4.1.21 dev: true + /@types/tedious@4.0.14: + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + dependencies: + '@types/node': 20.8.10 + dev: false + /@types/triple-beam@1.3.5: resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} dev: false @@ -1167,6 +2375,14 @@ packages: negotiator: 0.6.3 dev: false + /acorn-import-assertions@1.9.0(acorn@8.11.2): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.2 + dev: false + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1184,6 +2400,15 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1396,6 +2621,10 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -2306,6 +3535,10 @@ packages: - supports-color dev: false + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -2468,6 +3701,30 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /gaxios@6.3.0: + resolution: {integrity: sha512-p+ggrQw3fBwH2F5N/PAI4k/G/y1art5OxKpb2J2chwNNHM4hHuAOtivjPuirMF4KNKwTTUal/lPfL2+7h2mEcg==} + engines: {node: '>=14'} + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.4 + is-stream: 2.0.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + dependencies: + gaxios: 6.3.0 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /generate-function@2.3.1: resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} dependencies: @@ -2635,6 +3892,16 @@ packages: toidentifier: 1.0.1 dev: false + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2670,6 +3937,15 @@ packages: resolve-from: 4.0.0 dev: true + /import-in-the-middle@1.7.1: + resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==} + dependencies: + acorn: 8.11.2 + acorn-import-assertions: 1.9.0(acorn@8.11.2) + cjs-module-lexer: 1.2.3 + module-details-from-path: 1.0.3 + dev: false + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -3293,6 +4569,16 @@ packages: - supports-color - ts-node + /joi@17.12.2: + resolution: {integrity: sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3315,6 +4601,12 @@ packages: engines: {node: '>=4'} hasBin: true + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.1.2 + dev: false + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -3384,13 +4676,16 @@ packages: p-locate: 5.0.0 dev: true + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: false + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true /logform@2.6.0: resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} @@ -3509,6 +4804,10 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /module-details-from-path@1.0.3: + resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} + dev: false + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false @@ -3549,6 +4848,18 @@ packages: engines: {node: '>= 0.6'} dev: false + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -3589,6 +4900,14 @@ packages: dependencies: path-key: 3.1.1 + /npx@10.2.2: + resolution: {integrity: sha512-eImmySusyeWphzs5iNh791XbZnZG0FSNvM4KSah34pdQQIDsdTDhIwg1sjN3AIVcjGLpbQ/YcfqHPshKZQK1fA==} + hasBin: true + dev: false + bundledDependencies: + - npm + - libnpx + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3754,6 +5073,26 @@ packages: engines: {node: '>=8'} dev: true + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: false + + /pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + dev: false + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -3771,6 +5110,28 @@ packages: dependencies: find-up: 4.1.0 + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3797,6 +5158,25 @@ packages: kleur: 3.0.3 sisteransi: 1.0.5 + /protobufjs@7.2.6: + resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.8.10 + long: 5.2.3 + dev: false + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -3885,6 +5265,17 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + /require-in-the-middle@7.2.0: + resolution: {integrity: sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==} + engines: {node: '>=8.6.0'} + dependencies: + debug: 4.3.4 + module-details-from-path: 1.0.3 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -4049,6 +5440,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + dev: false + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -4272,6 +5667,10 @@ packages: nopt: 1.0.10 dev: true + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + /triple-beam@1.4.1: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} @@ -4502,6 +5901,17 @@ packages: dependencies: makeerror: 1.0.12 + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -4574,6 +5984,11 @@ packages: imurmurhash: 0.1.4 signal-exit: 3.0.7 + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} diff --git a/src/config/environments.ts b/src/config/environments.ts index 87ad441..60ac005 100644 --- a/src/config/environments.ts +++ b/src/config/environments.ts @@ -16,3 +16,4 @@ export const MAX_NUMBER_OF_CHOICES = process.env.MAX_NUMBER_OF_CHOICES === undef // OBSERVABILITY export const LOGGER_LEVEL = process.env.LOGGER_LEVEL ?? 'info' +export const OTEL_COLLECTOR_URL = process.env.OTEL_COLLECTOR_URL diff --git a/src/config/instrumentation.ts b/src/config/instrumentation.ts new file mode 100644 index 0000000..8774350 --- /dev/null +++ b/src/config/instrumentation.ts @@ -0,0 +1,31 @@ +// import { NodeSDK } from '@opentelemetry/sdk-node' +// import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node' +// import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' +// import { +// PeriodicExportingMetricReader, +// ConsoleMetricExporter +// } from '@opentelemetry/sdk-metrics' + +// const sdk = new NodeSDK({ +// traceExporter: new ConsoleSpanExporter(), +// metricReader: new PeriodicExportingMetricReader({ +// exporter: new ConsoleMetricExporter() +// }), +// instrumentations: [getNodeAutoInstrumentations()] +// }) + +// sdk.start() + +import { NodeSDK } from '@opentelemetry/sdk-node' +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto' +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' +import { OTEL_COLLECTOR_URL } from './environments' + +const sdk = new NodeSDK({ + traceExporter: new OTLPTraceExporter({ + url: `${OTEL_COLLECTOR_URL}/v1/traces` + }), + instrumentations: [getNodeAutoInstrumentations()] +}) + +sdk.start()