From 5012247f9cef9b75eb813ae99c866bb5a57529b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 17 Apr 2023 11:33:25 -0300 Subject: [PATCH 01/49] chore: add open telemetry to api --- package.json | 6 + src/server/index.ts | 62 ++++++++++ yarn.lock | 285 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 352 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4cb9343f..e2e02f1f 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,18 @@ "@builder.io/partytown": "^0.6.1", "@envelop/core": "^1.2.0", "@envelop/graphql-jit": "^1.1.1", + "@envelop/opentelemetry": "^4.0.6", "@envelop/parser-cache": "^2.2.0", "@envelop/validation-cache": "^2.2.0", "@faststore/api": "^1.12.38", "@faststore/graphql-utils": "^1.11.8", "@faststore/sdk": "^1.11.8", "@faststore/ui": "^1.12.23", + "@opentelemetry/exporter-trace-otlp-grpc": "^0.38.0", + "@opentelemetry/instrumentation": "^0.38.0", + "@opentelemetry/instrumentation-http": "^0.38.0", + "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/sdk-trace-base": "^1.12.0", "@types/react": "^18.0.14", "@vtex/client-cms": "^0.2.12", "@vtex/tsconfig": "0.6.0", diff --git a/src/server/index.ts b/src/server/index.ts index 78f53652..1599db90 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -12,6 +12,17 @@ import { useValidationCache } from '@envelop/validation-cache' import { getContextFactory, getSchema, isFastStoreError } from '@faststore/api' import { GraphQLError } from 'graphql' import type { Maybe, Options as APIOptions, CacheControl } from '@faststore/api' +// Import the required OpenTelemetry libraries and plugins +import { + BasicTracerProvider, + ConsoleSpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base' +import { Resource } from '@opentelemetry/resources' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' +import { useOpenTelemetry } from '@envelop/opentelemetry' import persisted from '../../@generated/graphql/persisted.json' import storeConfig from '../../store.config' @@ -22,6 +33,41 @@ interface ExecuteOptions> { query?: string | null } +const collectorOptions = { + // url is optional and can be omitted - default is http://localhost:4317 + url: 'opentelemetry-collector-beta.vtex.systems', +} + +// Create a new tracer provider +const tracerProvider = new BasicTracerProvider({ + resource: new Resource({ + service: 'faststore-api', + }), +}) + +// Create a new exporter +const exporter = new OTLPTraceExporter(collectorOptions) + +// Set up a span processor to export spans to Honeycomb +const spanProcessor = new SimpleSpanProcessor(exporter) + +// Set up a console exporter for debugging purposes +const consoleExporter = new ConsoleSpanExporter() +const debugProcessor = new SimpleSpanProcessor(consoleExporter) + +// Register the span processors with the tracer provider +tracerProvider.addSpanProcessor(spanProcessor) +tracerProvider.addSpanProcessor(debugProcessor) + +// Register the tracer provider with the OpenTelemetry API +tracerProvider.register() + +// Register OpenTelemetry instrumentations and plugins +registerInstrumentations({ + instrumentations: [new HttpInstrumentation()], + tracerProvider, +}) + const persistedQueries = new Map(Object.entries(persisted)) const apiOptions: APIOptions = { @@ -59,6 +105,22 @@ const getEnvelop = async () => useGraphQlJit(), useValidationCache(), useParserCache(), + useOpenTelemetry( + { + resolvers: true, // Tracks resolvers calls, and tracks resolvers thrown errors + variables: true, // Includes the operation variables values as part of the metadata collected + result: true, // Includes execution result object as part of the metadata collected + }, + + // The @opentelemetry/sdk-trace-base was renamed from @opentelemetry/tracing but the + // envelop plugin doesn't support this change yet. This causes the class type to be incompatible, + // even if they are the same. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + tracerProvider as any, + undefined, + undefined, + 'faststore-api' + ), ], }) diff --git a/yarn.lock b/yarn.lock index 9e5eccb7..0a06d932 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1276,6 +1276,21 @@ graphql-jit "^0.7.0" tiny-lru "7.0.6" +"@envelop/on-resolve@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@envelop/on-resolve/-/on-resolve-2.0.6.tgz#10619d65552ae64461f96a35cbdca19466ef54c4" + integrity sha512-l4vH0RKF0gdzyUcetaio/UP/BE84iw2TXvHXGAqDGoiMjRy0MVoeWF30SzwDb5IwNme2XaOsPlRmYRw1K0DAVA== + +"@envelop/opentelemetry@^4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@envelop/opentelemetry/-/opentelemetry-4.0.6.tgz#f441f3b6dae66e45f6b4c5f4b6947970de94084f" + integrity sha512-eYTsNmOOJczJOWmU+3BTufujXi4C+iNGGq/nnmxDA/2CMQ8xZuv+H1TWd/+uRtiyHrjOx8dhOfqZmW8yS4+iOQ== + dependencies: + "@envelop/on-resolve" "^2.0.6" + "@opentelemetry/api" "^1.0.0" + "@opentelemetry/tracing" "^0.24.0" + tslib "^2.5.0" + "@envelop/parser-cache@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@envelop/parser-cache/-/parser-cache-2.2.1.tgz#c4105c85ac46bee1951b7d91d47bf42f318ea973" @@ -1799,6 +1814,25 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== +"@grpc/grpc-js@^1.7.1": + version "1.8.14" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.14.tgz#4fe0f9917d6f094cf59245763c275442b182e9ad" + integrity sha512-w84maJ6CKl5aApCMzFll0hxtFNT6or9WwMslobKaqWUEf1K+zhlL43bSQhFreyYWIWR+Z0xnVFC1KtLm4ZpM/A== + dependencies: + "@grpc/proto-loader" "^0.7.0" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.7.0", "@grpc/proto-loader@^0.7.3": + version "0.7.6" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.6.tgz#b71fdf92b184af184b668c4e9395a5ddc23d61de" + integrity sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw== + dependencies: + "@types/long" "^4.0.1" + lodash.camelcase "^4.3.0" + long "^4.0.0" + protobufjs "^7.0.0" + yargs "^16.2.0" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2247,6 +2281,138 @@ resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== +"@opentelemetry/api@^1.0.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" + integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== + +"@opentelemetry/core@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.24.0.tgz#94033ebab10fdf008f8dae19c9547dadef30a2b2" + integrity sha512-KpsfxBbFTZT9zaB4Es/fFLbvSzVl9Io/8UUu/TYl4/HgqkmyVInNlWTgRiKyz9nsHzFpGP1kdZJj+YIut0IFsw== + dependencies: + "@opentelemetry/semantic-conventions" "0.24.0" + semver "^7.1.3" + +"@opentelemetry/core@1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.12.0.tgz#afa32341b794045c54c979d4561de2f8f00d0da9" + integrity sha512-4DWYNb3dLs2mSCGl65jY3aEgbvPWSHVQV/dmDWiYeWUrMakZQFcymqZOSUNZO0uDrEJoxMu8O5tZktX6UKFwag== + dependencies: + "@opentelemetry/semantic-conventions" "1.12.0" + +"@opentelemetry/exporter-trace-otlp-grpc@^0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.38.0.tgz#0c2a40bf812a7ffbe8695d4a95f350d735b95075" + integrity sha512-9pwDRnBr7qDeAZ81WHbM+aA1GSu9p8nh2ARmKgA4YrCo1E9IY94goaSBV03pbGe7gh/frOp18FQMvXmiRITGUg== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.12.0" + "@opentelemetry/otlp-grpc-exporter-base" "0.38.0" + "@opentelemetry/otlp-transformer" "0.38.0" + "@opentelemetry/resources" "1.12.0" + "@opentelemetry/sdk-trace-base" "1.12.0" + +"@opentelemetry/instrumentation-http@^0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.38.0.tgz#0226ff67e9f79063aae771bfdb04389da457c828" + integrity sha512-9kpRVnG6oVvt3/WYCzrHwW+s69BW4ap38NWFJLFB+Mcq1wmAcNSoBYUM7j2AfJB4w4y3A6r6mYgnusnxdmPYYg== + dependencies: + "@opentelemetry/core" "1.12.0" + "@opentelemetry/instrumentation" "0.38.0" + "@opentelemetry/semantic-conventions" "1.12.0" + semver "^7.3.5" + +"@opentelemetry/instrumentation@0.38.0", "@opentelemetry/instrumentation@^0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.38.0.tgz#e97c6d4ea699006ec2541fd83b26a10f0edaada4" + integrity sha512-wr1WkIbzHGV+oz6SCme88D2c+zNG23COkCjcida8b3jIzX2lJafOpEHPDcbBF38F8ChkRSj/tVnx1wnYAXZvbA== + dependencies: + require-in-the-middle "^6.0.0" + semver "^7.3.2" + shimmer "^1.2.1" + +"@opentelemetry/otlp-exporter-base@0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.38.0.tgz#803d0e29825023721963384a9c64c5db254d4cf1" + integrity sha512-VWQo7vUDyW/7/FT8RErAtM/29i/fllCc9xMtnK7kDuheAjJU68zrZ88bQOsLamHvOCU3KVpozjfTZVxZKQRYXw== + dependencies: + "@opentelemetry/core" "1.12.0" + +"@opentelemetry/otlp-grpc-exporter-base@0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.38.0.tgz#b0ce7db44ee36ef9ff1cb298bd6087139e12877f" + integrity sha512-wwGxeJt80w+mIA0aE+K9OshkyEoYQrXuwXl1TNZBs9K7qE4AAiEuxU9cbd3VX3BTsp+xzNcDRWIb9WWkiU9+kA== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@grpc/proto-loader" "^0.7.3" + "@opentelemetry/core" "1.12.0" + "@opentelemetry/otlp-exporter-base" "0.38.0" + +"@opentelemetry/otlp-transformer@0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.38.0.tgz#0e759cf494b9c1cb7ee272ac6e936f9a2abf6514" + integrity sha512-ykQEipby0NVSi2ih5E8J2GNJ6y9zYDPSef0nD8j33XPKxfyVG5184rUrCsh6TIk1d/GlYl8gB9Wy4TdRvwl6kA== + dependencies: + "@opentelemetry/core" "1.12.0" + "@opentelemetry/resources" "1.12.0" + "@opentelemetry/sdk-metrics" "1.12.0" + "@opentelemetry/sdk-trace-base" "1.12.0" + +"@opentelemetry/resources@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.24.0.tgz#834e5a4d0a64ed4de085add8308be203959c44b4" + integrity sha512-uEr2m13IRkjQAjX6fsYqJ21aONCspRvuQunaCl8LbH1NS1Gj82TuRUHF6TM82ulBPK8pU+nrrqXKuky2cMcIzw== + dependencies: + "@opentelemetry/core" "0.24.0" + "@opentelemetry/semantic-conventions" "0.24.0" + +"@opentelemetry/resources@1.12.0", "@opentelemetry/resources@^1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.12.0.tgz#895394c727dc3e7e51d1d2cc50907ec07a626dca" + integrity sha512-gunMKXG0hJrR0LXrqh7BVbziA/+iJBL3ZbXCXO64uY+SrExkwoyJkpiq9l5ismkGF/A20mDEV7tGwh+KyPw00Q== + dependencies: + "@opentelemetry/core" "1.12.0" + "@opentelemetry/semantic-conventions" "1.12.0" + +"@opentelemetry/sdk-metrics@1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.12.0.tgz#52c135b8ca6af677a3e93b6721bc866a74c98b4b" + integrity sha512-zOy88Jfk88eTxqu+9ypHLs184dGydJocSWtvWMY10QKVVaxhC3SLKa0uxI/zBtD9S+x0LP65wxrTSfSoUNtCOA== + dependencies: + "@opentelemetry/core" "1.12.0" + "@opentelemetry/resources" "1.12.0" + lodash.merge "4.6.2" + +"@opentelemetry/sdk-trace-base@1.12.0", "@opentelemetry/sdk-trace-base@^1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.12.0.tgz#62b895dbb5900048a85e4899c38fec5585447d4b" + integrity sha512-pfCOB3tNDlYVoWuz4D7Ji+Jmy9MHnATWHVpkERdCEiwUGEZ+4IvNPXUcPc37wJVmMpjGLeaWgPPrie0KIpWf1A== + dependencies: + "@opentelemetry/core" "1.12.0" + "@opentelemetry/resources" "1.12.0" + "@opentelemetry/semantic-conventions" "1.12.0" + +"@opentelemetry/semantic-conventions@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.24.0.tgz#1028ef0e0923b24916158d80d2ddfd67ea8b6740" + integrity sha512-a/szuMQV0Quy0/M7kKdglcbRSoorleyyOwbTNNJ32O+RBN766wbQlMTvdimImTmwYWGr+NJOni1EcC242WlRcA== + +"@opentelemetry/semantic-conventions@1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" + integrity sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA== + +"@opentelemetry/tracing@^0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.24.0.tgz#63077fe77b2f450442cb36710ea355db76f60faa" + integrity sha512-sTLEs1SIon3xV8vLe53PzfbU0FahoxL9NPY/CYvA1mwGbMu4zHkHAjqy1Tc8JmqRrfa+XrHkmzeSM4hrvloBaA== + dependencies: + "@opentelemetry/core" "0.24.0" + "@opentelemetry/resources" "0.24.0" + "@opentelemetry/semantic-conventions" "0.24.0" + lodash.merge "^4.6.2" + "@peculiar/asn1-schema@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" @@ -2310,6 +2476,59 @@ "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "@reach/observe-rect@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.2.0.tgz#d7a6013b8aafcc64c778a0ccb83355a11204d3b2" @@ -3532,6 +3751,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285" integrity sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A== +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + "@types/mdast@^3.0.0": version "3.0.11" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.11.tgz#dc130f7e7d9306124286f6d6cee40cf4d14a3dc0" @@ -3557,7 +3781,7 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*": +"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": version "18.15.11" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== @@ -11154,6 +11378,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.capitalize@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" @@ -11275,6 +11504,16 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + lookup-closest-locale@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz#57f665e604fd26f77142d48152015402b607bcf3" @@ -11848,6 +12087,11 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== +module-details-from-path@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -13348,6 +13592,24 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== +protobufjs@^7.0.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2" + integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg== + 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" ">=13.7.0" + long "^5.0.0" + protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" @@ -14100,6 +14362,15 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-in-the-middle@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-6.0.0.tgz#01cc6416286fb5e672d0fe031d996f8bc202509d" + integrity sha512-+dtWQ7l2lqQDxheaG3jjyN1QI37gEwvzACSgjYi4/C2y+ZTUMeRW8BIOm+9NBKvwaMBUSZfPXVOt1skB0vBkRw== + dependencies: + debug "^4.1.1" + module-details-from-path "^1.0.3" + resolve "^1.22.1" + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -14430,6 +14701,13 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.3: + version "7.4.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318" + integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -14588,6 +14866,11 @@ shelljs@0.8.5: interpret "^1.0.0" rechoir "^0.6.2" +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" From f5368d0e3c0e0843691858f1fd6d3c1ac197e216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 17 Apr 2023 12:27:18 -0300 Subject: [PATCH 02/49] up From 2eb58570eccb9a72b67066670079f6a100096414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 17 Apr 2023 16:56:39 -0300 Subject: [PATCH 03/49] fix: resolver spans not working because of graphql-jit package outdated version --- package.json | 8 +++--- src/server/index.ts | 8 +++--- yarn.lock | 64 +++++++++++++++++++++++++-------------------- 3 files changed, 43 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index e2e02f1f..53bfa511 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,11 @@ }, "dependencies": { "@builder.io/partytown": "^0.6.1", - "@envelop/core": "^1.2.0", - "@envelop/graphql-jit": "^1.1.1", + "@envelop/core": "^2", + "@envelop/graphql-jit": "^4", "@envelop/opentelemetry": "^4.0.6", - "@envelop/parser-cache": "^2.2.0", - "@envelop/validation-cache": "^2.2.0", + "@envelop/parser-cache": "^4", + "@envelop/validation-cache": "^4", "@faststore/api": "^1.12.38", "@faststore/graphql-utils": "^1.11.8", "@faststore/sdk": "^1.11.8", diff --git a/src/server/index.ts b/src/server/index.ts index 1599db90..49c7b12b 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -102,9 +102,6 @@ const getEnvelop = async () => useAsyncSchema(apiSchema), useExtendContext(apiContextFactory), useMaskedErrors({ formatError }), - useGraphQlJit(), - useValidationCache(), - useParserCache(), useOpenTelemetry( { resolvers: true, // Tracks resolvers calls, and tracks resolvers thrown errors @@ -114,13 +111,16 @@ const getEnvelop = async () => // The @opentelemetry/sdk-trace-base was renamed from @opentelemetry/tracing but the // envelop plugin doesn't support this change yet. This causes the class type to be incompatible, - // even if they are the same. + // even if they are the same. https://github.com/n1ru4l/envelop/issues/1610 // eslint-disable-next-line @typescript-eslint/no-explicit-any tracerProvider as any, undefined, undefined, 'faststore-api' ), + useGraphQlJit(), + useValidationCache(), + useParserCache(), ], }) diff --git a/yarn.lock b/yarn.lock index 0a06d932..feb32817 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1261,20 +1261,22 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@envelop/core@^1.2.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@envelop/core/-/core-1.7.1.tgz#4cb397349ff40e3dc229175b9af58700d5742232" - integrity sha512-ZxeQs4G0FOzoFAH+zskubx5aM9kx6BiUvcSI9Lo3MfYBmnK7cjwcwDdwk6Mq48QDuAeVdGfDmQz+BiWg0k2GmQ== +"@envelop/core@^2": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@envelop/core/-/core-2.6.0.tgz#1b7a346a37040c217f0f9b60c3358efc6c3b1b94" + integrity sha512-yTptKinJN//i6m1kXUbnLBl/FobzddI4ehURAMS08eRUOQwAuXqJU9r8VdTav8nIZLb4t6cuDWFb3n331LiwLw== dependencies: - "@envelop/types" "1.5.1" + "@envelop/types" "2.4.0" + tslib "2.4.0" -"@envelop/graphql-jit@^1.1.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@envelop/graphql-jit/-/graphql-jit-1.3.1.tgz#8ded44de52ca67da54297badbd949823f7c245b1" - integrity sha512-9BdMuQVt0/g1YkSQRzipCzgxp9UAC5DQw2yQXuCrXcdWPEaLxf6Nxokx0GznoxGxulGLiR/iTuboqH6Kt24HLA== +"@envelop/graphql-jit@^4": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@envelop/graphql-jit/-/graphql-jit-4.6.0.tgz#3b771d1fa7c6907f7d64120382a3e9f405a8cbaa" + integrity sha512-6RM+uSfKN7i9rlEcaAvraF/GsFNB4JoCuEUDEdMjOxJVoADvg1MsmzgGPoIAlpZZIQ//A8Pp+A+qWkJW4Wn4PA== dependencies: graphql-jit "^0.7.0" - tiny-lru "7.0.6" + lru-cache "^6.0.0" + tslib "^2.4.0" "@envelop/on-resolve@^2.0.6": version "2.0.6" @@ -1291,24 +1293,28 @@ "@opentelemetry/tracing" "^0.24.0" tslib "^2.5.0" -"@envelop/parser-cache@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@envelop/parser-cache/-/parser-cache-2.2.1.tgz#c4105c85ac46bee1951b7d91d47bf42f318ea973" - integrity sha512-7PHYjln5Jl0JieCd5mVCKZoCpxyL3EQf2etxvmB1ALB6D9QjLYSv+zSPQRT/rmeDtLDohFKVN6cIyhYNSUG2bQ== +"@envelop/parser-cache@^4": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@envelop/parser-cache/-/parser-cache-4.7.0.tgz#fc438d8ed390c88fa24bf56da3e4da36f088e3fc" + integrity sha512-63NfXDcW/vGn4U6NFxaZ0JbYWAcJb9A6jhTvghsSz1ZS+Dny/ci8bVSgVmM1q+N56hPyGsVPuyI+rIc71mPU5g== dependencies: - tiny-lru "7.0.6" + lru-cache "^6.0.0" + tslib "^2.4.0" -"@envelop/types@1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@envelop/types/-/types-1.5.1.tgz#8a47ca9f6e78b40b176dac0dea6c5045f92c644d" - integrity sha512-NrwLVzyNqiSzgRRqOxkU2IgRc5hSGS73VsgxqchU3jl36rYo7AXVAnITkytmB9wk+jN2vUOVvayLkaTXooARwg== +"@envelop/types@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@envelop/types/-/types-2.4.0.tgz#129163df73503581b68950704f4064a6b0f2c6ed" + integrity sha512-pjxS98cDQBS84X29VcwzH3aJ/KiLCGwyMxuj7/5FkdiaCXAD1JEvKEj9LARWlFYj1bY43uII4+UptFebrhiIaw== + dependencies: + tslib "^2.4.0" -"@envelop/validation-cache@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@envelop/validation-cache/-/validation-cache-2.3.0.tgz#71b3455757426a2f30c1179466fad546435ad6be" - integrity sha512-yCsACrSo3psIjxakfn5tJBG2jG7XAjCCyZJ1YCY3/jogzHAXL2ypRh4r5x0K/aivygf4TrgQQkyizYwM8v5ETw== +"@envelop/validation-cache@^4": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@envelop/validation-cache/-/validation-cache-4.7.0.tgz#6871116c5387cd7c310b9ae9187d29c2793ae33f" + integrity sha512-PzL+GfWJRT+JjsJqZAIxHKEkvkM3hxkeytS5O0QLXT8kURNBV28r+Kdnn2RCF5+6ILhyGpiDb60vaquBi7g4lw== dependencies: - tiny-lru "7.0.6" + lru-cache "^6.0.0" + tslib "^2.4.0" "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -15868,11 +15874,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tiny-lru@7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-7.0.6.tgz#b0c3cdede1e5882aa2d1ae21cb2ceccf2a331f24" - integrity sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow== - tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -16064,6 +16065,11 @@ tsconfig-paths@^3.11.0, tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" From 8440f0a77a818ec1a215f2f6d843dcc52d39c879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 10:42:20 -0300 Subject: [PATCH 04/49] chore: add service and platform attributes --- src/server/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/index.ts b/src/server/index.ts index 49c7b12b..2f6ebe79 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -41,7 +41,13 @@ const collectorOptions = { // Create a new tracer provider const tracerProvider = new BasicTracerProvider({ resource: new Resource({ - service: 'faststore-api', + 'service.name': 'faststore-api', + 'service.version': '1.12.38', + 'service.name_and_version': 'faststore-api@1.12.38', + platform: storeConfig.platform, + [`${storeConfig.platform}.account`]: storeConfig.api.storeId, + [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, + [`${storeConfig.platform}.environment`]: storeConfig.api.environment, }), }) From 0a5666f71cf17b9f079686d38ce0ea4f5a93327a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 11:08:58 -0300 Subject: [PATCH 05/49] chore: test changes in instrumentation --- package.json | 1 + src/server/index.ts | 9 ++++++++- yarn.lock | 25 +++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 53bfa511..f19a1a7f 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@faststore/ui": "^1.12.23", "@opentelemetry/exporter-trace-otlp-grpc": "^0.38.0", "@opentelemetry/instrumentation": "^0.38.0", + "@opentelemetry/instrumentation-graphql": "^0.34.0", "@opentelemetry/instrumentation-http": "^0.38.0", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-trace-base": "^1.12.0", diff --git a/src/server/index.ts b/src/server/index.ts index 2f6ebe79..6f57f4b7 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -21,6 +21,7 @@ import { import { Resource } from '@opentelemetry/resources' import { registerInstrumentations } from '@opentelemetry/instrumentation' import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' +import { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' import { useOpenTelemetry } from '@envelop/opentelemetry' @@ -70,7 +71,13 @@ tracerProvider.register() // Register OpenTelemetry instrumentations and plugins registerInstrumentations({ - instrumentations: [new HttpInstrumentation()], + instrumentations: [ + new HttpInstrumentation({ serverName: 'faststore/api' }), + new GraphQLInstrumentation({ + mergeItems: true, + ignoreTrivialResolveSpans: true, + }), + ], tracerProvider, }) diff --git a/yarn.lock b/yarn.lock index feb32817..abee76d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2319,6 +2319,13 @@ "@opentelemetry/resources" "1.12.0" "@opentelemetry/sdk-trace-base" "1.12.0" +"@opentelemetry/instrumentation-graphql@^0.34.0": + version "0.34.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.34.0.tgz#215161603fe78d39dd8b9a4bc66ae726afa73201" + integrity sha512-vRlaxApRW2FuWTsUE/0rrfgk7aQiOPQZDLlG5KIMvC+ExCT0bw//09D5GskUKU596CZy4j/n9WBOBc+Wu5zweA== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/instrumentation-http@^0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.38.0.tgz#0226ff67e9f79063aae771bfdb04389da457c828" @@ -2338,6 +2345,15 @@ semver "^7.3.2" shimmer "^1.2.1" +"@opentelemetry/instrumentation@^0.35.1": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.35.1.tgz#065bdbc4771137347e648eb4c6c6de6e9e97e4d1" + integrity sha512-EZsvXqxenbRTSNsft6LDcrT4pjAiyZOx3rkDNeqKpwZZe6GmZtsXaZZKuDkJtz9fTjOGjDHjZj9/h80Ya9iIJw== + dependencies: + require-in-the-middle "^5.0.3" + semver "^7.3.2" + shimmer "^1.2.1" + "@opentelemetry/otlp-exporter-base@0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.38.0.tgz#803d0e29825023721963384a9c64c5db254d4cf1" @@ -14368,6 +14384,15 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-in-the-middle@^5.0.3: + version "5.2.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz#4b71e3cc7f59977100af9beb76bf2d056a5a6de2" + integrity sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg== + dependencies: + debug "^4.1.1" + module-details-from-path "^1.0.3" + resolve "^1.22.1" + require-in-the-middle@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-6.0.0.tgz#01cc6416286fb5e672d0fe031d996f8bc202509d" From ce5b1df5a076853573fdb30bc538c1c14067a77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 11:59:04 -0300 Subject: [PATCH 06/49] remove instrumentations --- src/server/index.ts | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index 6f57f4b7..634d1240 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -21,7 +21,6 @@ import { import { Resource } from '@opentelemetry/resources' import { registerInstrumentations } from '@opentelemetry/instrumentation' import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' -import { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' import { useOpenTelemetry } from '@envelop/opentelemetry' @@ -69,18 +68,6 @@ tracerProvider.addSpanProcessor(debugProcessor) // Register the tracer provider with the OpenTelemetry API tracerProvider.register() -// Register OpenTelemetry instrumentations and plugins -registerInstrumentations({ - instrumentations: [ - new HttpInstrumentation({ serverName: 'faststore/api' }), - new GraphQLInstrumentation({ - mergeItems: true, - ignoreTrivialResolveSpans: true, - }), - ], - tracerProvider, -}) - const persistedQueries = new Map(Object.entries(persisted)) const apiOptions: APIOptions = { From 38b59636c00a44f805a0c51dd39c2a54999937f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 12:47:31 -0300 Subject: [PATCH 07/49] remove unused imports --- src/server/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index 634d1240..6a2aab3e 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -19,8 +19,6 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base' import { Resource } from '@opentelemetry/resources' -import { registerInstrumentations } from '@opentelemetry/instrumentation' -import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' import { useOpenTelemetry } from '@envelop/opentelemetry' From 9f18230b5a3a3e353980bdf12c3008b6fe077354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 14:04:01 -0300 Subject: [PATCH 08/49] chore: add custom open telemetry plugin --- src/server/index.ts | 2 +- src/server/openTelemetry.ts | 191 ++++++++++++++++++++++++++++++++++++ 2 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 src/server/openTelemetry.ts diff --git a/src/server/index.ts b/src/server/index.ts index 6a2aab3e..9e5ddf95 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -20,8 +20,8 @@ import { } from '@opentelemetry/sdk-trace-base' import { Resource } from '@opentelemetry/resources' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' -import { useOpenTelemetry } from '@envelop/opentelemetry' +import { useOpenTelemetry } from './openTelemetry' import persisted from '../../@generated/graphql/persisted.json' import storeConfig from '../../store.config' diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts new file mode 100644 index 00000000..7d34989c --- /dev/null +++ b/src/server/openTelemetry.ts @@ -0,0 +1,191 @@ +import type { Plugin, OnExecuteHookResult } from '@envelop/core' +import { isAsyncIterable } from '@envelop/core' +import { useOnResolve } from '@envelop/on-resolve' +import type { Attributes } from '@opentelemetry/api' +import { SpanKind } from '@opentelemetry/api' +import * as opentelemetry from '@opentelemetry/api' +import { + BasicTracerProvider, + ConsoleSpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base' +import { print } from 'graphql' +import type { Path } from 'graphql/jsutils/Path' + +// eslint-disable-next-line +export enum AttributeName { + EXECUTION_ERROR = 'graphql.execute.error', + EXECUTION_RESULT = 'graphql.execute.result', + RESOLVER_EXCEPTION = 'graphql.resolver.exception', + RESOLVER_FIELD_NAME = 'graphql.resolver.fieldName', + RESOLVER_TYPE_NAME = 'graphql.resolver.typeName', + RESOLVER_RESULT_TYPE = 'graphql.resolver.resultType', + RESOLVER_ARGS = 'graphql.resolver.args', + EXECUTION_OPERATION_NAME = 'graphql.execute.operationName', + EXECUTION_OPERATION_DOCUMENT = 'graphql.execute.document', + EXECUTION_VARIABLES = 'graphql.execute.variables', +} + +const tracingSpanSymbol = Symbol('OPEN_TELEMETRY_GRAPHQL') + +export type TracingOptions = { + resolvers: boolean + variables: boolean + result: boolean +} + +type PluginContext = { + [tracingSpanSymbol]: opentelemetry.Span +} + +function getResolverSpanKey(path: Path) { + const nodes = [] + + let currentPath: Path | undefined = path + + while (currentPath) { + nodes.push(currentPath.key) + + currentPath = currentPath.prev + } + + return nodes.reverse().join('::') +} + +export const useOpenTelemetry = ( + options: TracingOptions, + tracingProvider?: BasicTracerProvider, + spanKind: SpanKind = SpanKind.SERVER, + spanAdditionalAttributes: Attributes = {}, + serviceName = 'graphql' +): Plugin => { + if (!tracingProvider) { + tracingProvider = new BasicTracerProvider() + tracingProvider.addSpanProcessor( + new SimpleSpanProcessor(new ConsoleSpanExporter()) + ) + tracingProvider.register() + } + + const tracer = tracingProvider.getTracer(serviceName) + + return { + onPluginInit({ addPlugin }) { + if (options.resolvers) { + const parentTypeMap = new Map() + + addPlugin( + // eslint-disable-next-line + useOnResolve(({ info, context, args }) => { + if ( + context && + typeof context === 'object' && + context[tracingSpanSymbol] + ) { + tracer.getActiveSpanProcessor() + + const { fieldName, returnType, parentType, path } = info + + const parentSpan = + path.prev && parentTypeMap.has(getResolverSpanKey(path.prev)) + ? parentTypeMap.get(getResolverSpanKey(path.prev)) + : context[tracingSpanSymbol] + + const ctx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + parentSpan + ) + + const resolverSpan = tracer.startSpan( + fieldName, + { + attributes: { + [AttributeName.RESOLVER_FIELD_NAME]: fieldName, + [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), + [AttributeName.RESOLVER_RESULT_TYPE]: returnType.toString(), + [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), + }, + }, + ctx + ) + + parentTypeMap.set(getResolverSpanKey(path), resolverSpan) + + return ({ result }) => { + if (result instanceof Error) { + resolverSpan.recordException({ + name: AttributeName.RESOLVER_EXCEPTION, + message: JSON.stringify(result), + }) + } else { + resolverSpan.end() + } + } + } + + return () => {} + }) + ) + } + }, + onExecute({ args, extendContext }) { + const executionSpan = tracer.startSpan( + `${args.operationName || 'Anonymous Operation'}`, + { + kind: spanKind, + attributes: { + ...spanAdditionalAttributes, + [AttributeName.EXECUTION_OPERATION_NAME]: + args.operationName ?? undefined, + [AttributeName.EXECUTION_OPERATION_DOCUMENT]: print(args.document), + ...(options.variables + ? { + [AttributeName.EXECUTION_VARIABLES]: JSON.stringify( + args.variableValues ?? {} + ), + } + : {}), + }, + } + ) + + const resultCbs: OnExecuteHookResult = { + onExecuteDone({ result }) { + if (isAsyncIterable(result)) { + executionSpan.end() + // eslint-disable-next-line no-console + console.warn( + `Plugin "newrelic" encountered a AsyncIterator which is not supported yet, so tracing data is not available for the operation.` + ) + + return + } + + if (result.data && options.result) { + executionSpan.setAttribute( + AttributeName.EXECUTION_RESULT, + JSON.stringify(result) + ) + } + + if (result.errors && result.errors.length > 0) { + executionSpan.recordException({ + name: AttributeName.EXECUTION_ERROR, + message: JSON.stringify(result.errors), + }) + } + + executionSpan.end() + }, + } + + if (options.resolvers) { + extendContext({ + [tracingSpanSymbol]: executionSpan, + }) + } + + return resultCbs + }, + } +} From 0bdf87daa06a49dd8a07796018dcaeef4350c429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 14:25:11 -0300 Subject: [PATCH 09/49] add back parentType to resolver span name --- src/server/openTelemetry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 7d34989c..007705a9 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -97,7 +97,7 @@ export const useOpenTelemetry = ( ) const resolverSpan = tracer.startSpan( - fieldName, + `${parentType.toString()}.${fieldName}`, { attributes: { [AttributeName.RESOLVER_FIELD_NAME]: fieldName, From 255d7161cdaeb3393697c050fd21f683aba15d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 14:35:40 -0300 Subject: [PATCH 10/49] test --- src/server/openTelemetry.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 007705a9..f616ec1c 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -109,7 +109,10 @@ export const useOpenTelemetry = ( ctx ) - parentTypeMap.set(getResolverSpanKey(path), resolverSpan) + parentTypeMap.set( + getResolverSpanKey(path), + context[tracingSpanSymbol] + ) return ({ result }) => { if (result instanceof Error) { From a55b5810a38762fa3c301be3d91beb96b0925673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 15:46:32 -0300 Subject: [PATCH 11/49] teste louco --- src/server/openTelemetry.ts | 88 ++++++++++++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 7 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index f616ec1c..9d1ce7e9 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -52,6 +52,20 @@ function getResolverSpanKey(path: Path) { return nodes.reverse().join('::') } +// function getParentTypeSpanKey(parentType: string, parentTypeMap: Map) { +// const nodes = [parentType] + +// let currentPath: opentelemetry.Span | undefined = parentTypeMap.get(parentType) + +// while (currentPath) { +// nodes.push(currentPath.key) + +// currentPath = currentPath.prev +// } + +// return nodes.reverse().join('::') +// } + export const useOpenTelemetry = ( options: TracingOptions, tracingProvider?: BasicTracerProvider, @@ -72,7 +86,9 @@ export const useOpenTelemetry = ( return { onPluginInit({ addPlugin }) { if (options.resolvers) { - const parentTypeMap = new Map() + const parentNameMap = new Map() + const parentNameTypeMap = new Map() + const parentNameTypePromiseMap = new Map>() addPlugin( // eslint-disable-next-line @@ -86,9 +102,14 @@ export const useOpenTelemetry = ( const { fieldName, returnType, parentType, path } = info + const previousResolverSpanKey = path.prev + ? getResolverSpanKey(path.prev) + : null + const parentSpan = - path.prev && parentTypeMap.has(getResolverSpanKey(path.prev)) - ? parentTypeMap.get(getResolverSpanKey(path.prev)) + previousResolverSpanKey && + parentNameMap.has(previousResolverSpanKey) + ? parentNameMap.get(previousResolverSpanKey) : context[tracingSpanSymbol] const ctx = opentelemetry.trace.setSpan( @@ -96,6 +117,38 @@ export const useOpenTelemetry = ( parentSpan ) + const currentResolverTypeSpanKey = [ + previousResolverSpanKey, + parentType, + ] + .filter(Boolean) + .join('::') + + const resolverTypeSpan = parentNameTypeMap.has( + currentResolverTypeSpanKey + ) + ? parentNameTypeMap.get(currentResolverTypeSpanKey)! + : tracer.startSpan( + parentType.toString(), + { + attributes: { + [AttributeName.RESOLVER_TYPE_NAME]: + parentType.toString(), + }, + }, + ctx + ) + + parentNameTypeMap.set( + currentResolverTypeSpanKey, + resolverTypeSpan + ) + + const parentTypeCtx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + resolverTypeSpan + ) + const resolverSpan = tracer.startSpan( `${parentType.toString()}.${fieldName}`, { @@ -106,12 +159,31 @@ export const useOpenTelemetry = ( [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), }, }, - ctx + parentTypeCtx ) - parentTypeMap.set( - getResolverSpanKey(path), - context[tracingSpanSymbol] + let resolvePromise: null | ((value: unknown) => void) = null + let mainResolve: null | ((value: unknown) => void) = null + let rejectPromise: null | ((value: unknown) => void) = null + + const promise = new Promise((resolve, reject) => { + resolvePromise = resolve + rejectPromise = reject + }) + + new Promise((resolve) => { + mainResolve = resolve + }).then(() => { + resolverTypeSpan.end() + }) + + parentNameMap.set(getResolverSpanKey(path), resolverSpan) + parentNameTypePromiseMap.set( + currentResolverTypeSpanKey, + Promise.all([ + parentNameTypePromiseMap.get(currentResolverTypeSpanKey), + promise, + ]).then(mainResolve) ) return ({ result }) => { @@ -123,6 +195,8 @@ export const useOpenTelemetry = ( } else { resolverSpan.end() } + + resolvePromise?.(true) } } From 52dd53580b14feaffae3d7f2011b99f3dae4cb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 15:48:30 -0300 Subject: [PATCH 12/49] teste louco pt 2 --- src/server/openTelemetry.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 9d1ce7e9..8e4c5493 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -164,11 +164,11 @@ export const useOpenTelemetry = ( let resolvePromise: null | ((value: unknown) => void) = null let mainResolve: null | ((value: unknown) => void) = null - let rejectPromise: null | ((value: unknown) => void) = null + // let rejectPromise: null | ((value: unknown) => void) = null - const promise = new Promise((resolve, reject) => { + const promise = new Promise((resolve) => { resolvePromise = resolve - rejectPromise = reject + // rejectPromise = reject }) new Promise((resolve) => { From 231d1ce7ad63b5095a0395d4cefe7c927007c938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 16:15:38 -0300 Subject: [PATCH 13/49] fix parenting I guess --- src/server/openTelemetry.ts | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 8e4c5493..b6c48f71 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -87,7 +87,7 @@ export const useOpenTelemetry = ( onPluginInit({ addPlugin }) { if (options.resolvers) { const parentNameMap = new Map() - const parentNameTypeMap = new Map() + const parentNameTypeMap = new Map() const parentNameTypePromiseMap = new Map>() addPlugin( @@ -124,10 +124,12 @@ export const useOpenTelemetry = ( .filter(Boolean) .join('::') - const resolverTypeSpan = parentNameTypeMap.has( + const hasResolverTypeSpan = parentNameTypeMap.has( currentResolverTypeSpanKey ) - ? parentNameTypeMap.get(currentResolverTypeSpanKey)! + + const resolverTypeSpan = hasResolverTypeSpan + ? null : tracer.startSpan( parentType.toString(), { @@ -139,15 +141,18 @@ export const useOpenTelemetry = ( ctx ) - parentNameTypeMap.set( - currentResolverTypeSpanKey, - resolverTypeSpan + let parentTypeCtx = parentNameTypeMap.get( + currentResolverTypeSpanKey ) - const parentTypeCtx = opentelemetry.trace.setSpan( - opentelemetry.context.active(), - resolverTypeSpan - ) + if (!hasResolverTypeSpan && resolverTypeSpan) { + parentTypeCtx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + resolverTypeSpan + ) + + parentNameTypeMap.set(currentResolverTypeSpanKey, parentTypeCtx) + } const resolverSpan = tracer.startSpan( `${parentType.toString()}.${fieldName}`, @@ -174,7 +179,7 @@ export const useOpenTelemetry = ( new Promise((resolve) => { mainResolve = resolve }).then(() => { - resolverTypeSpan.end() + resolverTypeSpan?.end() }) parentNameMap.set(getResolverSpanKey(path), resolverSpan) From 290aa3da3c3bd40ee252d71c8e15813119bb2ef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 16:37:42 -0300 Subject: [PATCH 14/49] fix context switching --- src/server/openTelemetry.ts | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index b6c48f71..7fb02253 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -112,11 +112,6 @@ export const useOpenTelemetry = ( ? parentNameMap.get(previousResolverSpanKey) : context[tracingSpanSymbol] - const ctx = opentelemetry.trace.setSpan( - opentelemetry.context.active(), - parentSpan - ) - const currentResolverTypeSpanKey = [ previousResolverSpanKey, parentType, @@ -128,18 +123,24 @@ export const useOpenTelemetry = ( currentResolverTypeSpanKey ) - const resolverTypeSpan = hasResolverTypeSpan - ? null - : tracer.startSpan( - parentType.toString(), - { - attributes: { - [AttributeName.RESOLVER_TYPE_NAME]: - parentType.toString(), - }, + let resolverTypeSpan: opentelemetry.Span | null = null + + if (!hasResolverTypeSpan) { + const ctx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + parentSpan + ) + + resolverTypeSpan = tracer.startSpan( + parentType.toString(), + { + attributes: { + [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), }, - ctx - ) + }, + ctx + ) + } let parentTypeCtx = parentNameTypeMap.get( currentResolverTypeSpanKey From 316558462d6cf90ab1cbcc52b430467afdbe8179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 18 Apr 2023 16:59:30 -0300 Subject: [PATCH 15/49] fix early span end call --- src/server/openTelemetry.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 7fb02253..0902ae9e 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -88,7 +88,10 @@ export const useOpenTelemetry = ( if (options.resolvers) { const parentNameMap = new Map() const parentNameTypeMap = new Map() - const parentNameTypePromiseMap = new Map>() + const parentNameTypePromiseMap = new Map< + string, + Set> + >() addPlugin( // eslint-disable-next-line @@ -186,10 +189,9 @@ export const useOpenTelemetry = ( parentNameMap.set(getResolverSpanKey(path), resolverSpan) parentNameTypePromiseMap.set( currentResolverTypeSpanKey, - Promise.all([ - parentNameTypePromiseMap.get(currentResolverTypeSpanKey), - promise, - ]).then(mainResolve) + new Set( + parentNameTypePromiseMap.get(currentResolverTypeSpanKey) + ).add(promise) ) return ({ result }) => { @@ -203,6 +205,7 @@ export const useOpenTelemetry = ( } resolvePromise?.(true) + Promise.all(parentNameTypePromiseMap).then(mainResolve) } } From 3dad4be9fefef17ec4a12499b78b2e2c6f3502ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 10:33:59 -0300 Subject: [PATCH 16/49] remove all the fieldType stuff --- src/server/openTelemetry.ts | 102 +++--------------------------------- 1 file changed, 8 insertions(+), 94 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 0902ae9e..007705a9 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -52,20 +52,6 @@ function getResolverSpanKey(path: Path) { return nodes.reverse().join('::') } -// function getParentTypeSpanKey(parentType: string, parentTypeMap: Map) { -// const nodes = [parentType] - -// let currentPath: opentelemetry.Span | undefined = parentTypeMap.get(parentType) - -// while (currentPath) { -// nodes.push(currentPath.key) - -// currentPath = currentPath.prev -// } - -// return nodes.reverse().join('::') -// } - export const useOpenTelemetry = ( options: TracingOptions, tracingProvider?: BasicTracerProvider, @@ -86,12 +72,7 @@ export const useOpenTelemetry = ( return { onPluginInit({ addPlugin }) { if (options.resolvers) { - const parentNameMap = new Map() - const parentNameTypeMap = new Map() - const parentNameTypePromiseMap = new Map< - string, - Set> - >() + const parentTypeMap = new Map() addPlugin( // eslint-disable-next-line @@ -105,59 +86,16 @@ export const useOpenTelemetry = ( const { fieldName, returnType, parentType, path } = info - const previousResolverSpanKey = path.prev - ? getResolverSpanKey(path.prev) - : null - const parentSpan = - previousResolverSpanKey && - parentNameMap.has(previousResolverSpanKey) - ? parentNameMap.get(previousResolverSpanKey) + path.prev && parentTypeMap.has(getResolverSpanKey(path.prev)) + ? parentTypeMap.get(getResolverSpanKey(path.prev)) : context[tracingSpanSymbol] - const currentResolverTypeSpanKey = [ - previousResolverSpanKey, - parentType, - ] - .filter(Boolean) - .join('::') - - const hasResolverTypeSpan = parentNameTypeMap.has( - currentResolverTypeSpanKey - ) - - let resolverTypeSpan: opentelemetry.Span | null = null - - if (!hasResolverTypeSpan) { - const ctx = opentelemetry.trace.setSpan( - opentelemetry.context.active(), - parentSpan - ) - - resolverTypeSpan = tracer.startSpan( - parentType.toString(), - { - attributes: { - [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), - }, - }, - ctx - ) - } - - let parentTypeCtx = parentNameTypeMap.get( - currentResolverTypeSpanKey + const ctx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + parentSpan ) - if (!hasResolverTypeSpan && resolverTypeSpan) { - parentTypeCtx = opentelemetry.trace.setSpan( - opentelemetry.context.active(), - resolverTypeSpan - ) - - parentNameTypeMap.set(currentResolverTypeSpanKey, parentTypeCtx) - } - const resolverSpan = tracer.startSpan( `${parentType.toString()}.${fieldName}`, { @@ -168,31 +106,10 @@ export const useOpenTelemetry = ( [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), }, }, - parentTypeCtx + ctx ) - let resolvePromise: null | ((value: unknown) => void) = null - let mainResolve: null | ((value: unknown) => void) = null - // let rejectPromise: null | ((value: unknown) => void) = null - - const promise = new Promise((resolve) => { - resolvePromise = resolve - // rejectPromise = reject - }) - - new Promise((resolve) => { - mainResolve = resolve - }).then(() => { - resolverTypeSpan?.end() - }) - - parentNameMap.set(getResolverSpanKey(path), resolverSpan) - parentNameTypePromiseMap.set( - currentResolverTypeSpanKey, - new Set( - parentNameTypePromiseMap.get(currentResolverTypeSpanKey) - ).add(promise) - ) + parentTypeMap.set(getResolverSpanKey(path), resolverSpan) return ({ result }) => { if (result instanceof Error) { @@ -203,9 +120,6 @@ export const useOpenTelemetry = ( } else { resolverSpan.end() } - - resolvePromise?.(true) - Promise.all(parentNameTypePromiseMap).then(mainResolve) } } From 9d15d854c7683440f25e08321ac90ef035e667b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 10:44:59 -0300 Subject: [PATCH 17/49] Test moving the ctx around --- src/server/openTelemetry.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 007705a9..857dc5d3 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -72,7 +72,7 @@ export const useOpenTelemetry = ( return { onPluginInit({ addPlugin }) { if (options.resolvers) { - const parentTypeMap = new Map() + const parentTypeMap = new Map() addPlugin( // eslint-disable-next-line @@ -86,15 +86,13 @@ export const useOpenTelemetry = ( const { fieldName, returnType, parentType, path } = info - const parentSpan = + const ctx = path.prev && parentTypeMap.has(getResolverSpanKey(path.prev)) ? parentTypeMap.get(getResolverSpanKey(path.prev)) - : context[tracingSpanSymbol] - - const ctx = opentelemetry.trace.setSpan( - opentelemetry.context.active(), - parentSpan - ) + : opentelemetry.trace.setSpan( + opentelemetry.context.active(), + context[tracingSpanSymbol] + ) const resolverSpan = tracer.startSpan( `${parentType.toString()}.${fieldName}`, @@ -109,7 +107,12 @@ export const useOpenTelemetry = ( ctx ) - parentTypeMap.set(getResolverSpanKey(path), resolverSpan) + const resolverCtx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + resolverSpan + ) + + parentTypeMap.set(getResolverSpanKey(path), resolverCtx) return ({ result }) => { if (result instanceof Error) { From 27cd55c48555e2da7c352b6c363e319045726edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 10:48:36 -0300 Subject: [PATCH 18/49] AGORA VAI HEIN TO CONFIANTE --- src/server/openTelemetry.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 857dc5d3..ec8d1992 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -88,7 +88,7 @@ export const useOpenTelemetry = ( const ctx = path.prev && parentTypeMap.has(getResolverSpanKey(path.prev)) - ? parentTypeMap.get(getResolverSpanKey(path.prev)) + ? parentTypeMap.get(getResolverSpanKey(path.prev))! : opentelemetry.trace.setSpan( opentelemetry.context.active(), context[tracingSpanSymbol] @@ -107,10 +107,7 @@ export const useOpenTelemetry = ( ctx ) - const resolverCtx = opentelemetry.trace.setSpan( - opentelemetry.context.active(), - resolverSpan - ) + const resolverCtx = opentelemetry.trace.setSpan(ctx, resolverSpan) parentTypeMap.set(getResolverSpanKey(path), resolverCtx) From 8f9f2f3468711ccc5c4a6eda42ab2b05e610cbce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 11:26:02 -0300 Subject: [PATCH 19/49] add root span prefix to map keys --- src/server/openTelemetry.ts | 41 ++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index ec8d1992..d72f8165 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -38,7 +38,7 @@ type PluginContext = { [tracingSpanSymbol]: opentelemetry.Span } -function getResolverSpanKey(path: Path) { +function getResolverSpanKey(path: Path, id: string) { const nodes = [] let currentPath: Path | undefined = path @@ -49,7 +49,7 @@ function getResolverSpanKey(path: Path) { currentPath = currentPath.prev } - return nodes.reverse().join('::') + return [...nodes, id].reverse().join('::') } export const useOpenTelemetry = ( @@ -86,13 +86,28 @@ export const useOpenTelemetry = ( const { fieldName, returnType, parentType, path } = info - const ctx = - path.prev && parentTypeMap.has(getResolverSpanKey(path.prev)) - ? parentTypeMap.get(getResolverSpanKey(path.prev))! - : opentelemetry.trace.setSpan( - opentelemetry.context.active(), - context[tracingSpanSymbol] - ) + const previousResolverSpanKey = + path.prev && + getResolverSpanKey( + path.prev, + context[tracingSpanSymbol].spanContext().spanId + ) + + let ctx = null + + if ( + previousResolverSpanKey && + parentTypeMap.has(previousResolverSpanKey) + ) { + ctx = parentTypeMap.get(previousResolverSpanKey) + } else { + // parentTypeMap.clear() + + ctx = opentelemetry.trace.setSpan( + opentelemetry.context.active(), + context[tracingSpanSymbol] + ) + } const resolverSpan = tracer.startSpan( `${parentType.toString()}.${fieldName}`, @@ -109,7 +124,13 @@ export const useOpenTelemetry = ( const resolverCtx = opentelemetry.trace.setSpan(ctx, resolverSpan) - parentTypeMap.set(getResolverSpanKey(path), resolverCtx) + parentTypeMap.set( + getResolverSpanKey( + path, + context[tracingSpanSymbol].spanContext().spanId + ), + resolverCtx + ) return ({ result }) => { if (result instanceof Error) { From 265d706a9744855a9e59b8fa442cbe7a0cf896ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 11:29:13 -0300 Subject: [PATCH 20/49] add assurance to ctx type --- src/server/openTelemetry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index d72f8165..509e761f 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -99,7 +99,7 @@ export const useOpenTelemetry = ( previousResolverSpanKey && parentTypeMap.has(previousResolverSpanKey) ) { - ctx = parentTypeMap.get(previousResolverSpanKey) + ctx = parentTypeMap.get(previousResolverSpanKey)! } else { // parentTypeMap.clear() From 55f1a22e6f5a7a298e5bfa608f7e386d8a9faf7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 11:35:10 -0300 Subject: [PATCH 21/49] add debug path to attribute list --- src/server/openTelemetry.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 509e761f..390ee8d5 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -117,6 +117,10 @@ export const useOpenTelemetry = ( [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), [AttributeName.RESOLVER_RESULT_TYPE]: returnType.toString(), [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), + 'debug.path': getResolverSpanKey( + path, + context[tracingSpanSymbol].spanContext().spanId + ), }, }, ctx From b8a9ed7533caac1ff3fab33c8b120f333fc9f4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 11:49:48 -0300 Subject: [PATCH 22/49] fix list spans --- src/server/openTelemetry.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 390ee8d5..cd03ac82 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -41,7 +41,15 @@ type PluginContext = { function getResolverSpanKey(path: Path, id: string) { const nodes = [] - let currentPath: Path | undefined = path + // If the first node (after reversed, it will be the last one) is an integer, that is, identifies a list, + // we don't want to include it in the key. Note that this will only happen when analysing .prev paths in + // a list of elements. We just want to remove the initial node that is a integer, not all of them. + // + // Nodes with keys 6bc73341b2a183fc::product::image::0::url would not be able to find + // parents with key 6bc73341b2a183fc::product::image because of the "0" list index - + // it would search for 6bc73341b2a183fc::product::image::0 + let currentPath: Path | undefined = + nodes.length === 0 && Number.isInteger(path.key) ? path.prev : path while (currentPath) { nodes.push(currentPath.key) From 0fe7ea55d00beb72323f0675cd2c20ecccfc99a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 12:01:14 -0300 Subject: [PATCH 23/49] improve readability of list items in spans --- src/server/openTelemetry.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index cd03ac82..8efeb924 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -117,15 +117,20 @@ export const useOpenTelemetry = ( ) } + const maybeResolverIndexInList = Number.isInteger(path.prev?.key) + const resolverIndexInListText = maybeResolverIndexInList + ? `[${maybeResolverIndexInList}]` + : '' + const resolverSpan = tracer.startSpan( - `${parentType.toString()}.${fieldName}`, + `${parentType.toString()}.${fieldName}${resolverIndexInListText}`, { attributes: { [AttributeName.RESOLVER_FIELD_NAME]: fieldName, [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), [AttributeName.RESOLVER_RESULT_TYPE]: returnType.toString(), [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), - 'debug.path': getResolverSpanKey( + 'meta.span.path': getResolverSpanKey( path, context[tracingSpanSymbol].spanContext().spanId ), From 0e1478cf89e3578f27bbde1f0fce0d0c815e3a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 12:10:58 -0300 Subject: [PATCH 24/49] fix indexInList --- src/server/openTelemetry.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 8efeb924..7275dc29 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -117,13 +117,12 @@ export const useOpenTelemetry = ( ) } - const maybeResolverIndexInList = Number.isInteger(path.prev?.key) - const resolverIndexInListText = maybeResolverIndexInList - ? `[${maybeResolverIndexInList}]` + const resolverIndexInList = Number.isInteger(path.prev?.key) + ? `[${path.prev?.key}]` : '' const resolverSpan = tracer.startSpan( - `${parentType.toString()}.${fieldName}${resolverIndexInListText}`, + `${parentType.toString()}.${fieldName}${resolverIndexInList}`, { attributes: { [AttributeName.RESOLVER_FIELD_NAME]: fieldName, From 46519fb9e49b222b0a24e5fba92a7621f5c704eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 12:24:59 -0300 Subject: [PATCH 25/49] clear key map after every query (hopefully) --- src/server/openTelemetry.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 7275dc29..9f20a8ce 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -38,9 +38,12 @@ type PluginContext = { [tracingSpanSymbol]: opentelemetry.Span } +// eslint-disable-next-line function getResolverSpanKey(path: Path, id: string) { const nodes = [] + id + // If the first node (after reversed, it will be the last one) is an integer, that is, identifies a list, // we don't want to include it in the key. Note that this will only happen when analysing .prev paths in // a list of elements. We just want to remove the initial node that is a integer, not all of them. @@ -57,7 +60,7 @@ function getResolverSpanKey(path: Path, id: string) { currentPath = currentPath.prev } - return [...nodes, id].reverse().join('::') + return [...nodes].reverse().join('.') } export const useOpenTelemetry = ( @@ -109,7 +112,7 @@ export const useOpenTelemetry = ( ) { ctx = parentTypeMap.get(previousResolverSpanKey)! } else { - // parentTypeMap.clear() + parentTypeMap.clear() ctx = opentelemetry.trace.setSpan( opentelemetry.context.active(), From 55962f60ecac53237177fd9e3f7b3cccb319b5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 12:43:58 -0300 Subject: [PATCH 26/49] change code mecanichs and clean up --- src/server/openTelemetry.ts | 55 +++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 9f20a8ce..24f27a72 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -38,12 +38,9 @@ type PluginContext = { [tracingSpanSymbol]: opentelemetry.Span } -// eslint-disable-next-line -function getResolverSpanKey(path: Path, id: string) { +function getResolverSpanKey(path: Path) { const nodes = [] - id - // If the first node (after reversed, it will be the last one) is an integer, that is, identifies a list, // we don't want to include it in the key. Note that this will only happen when analysing .prev paths in // a list of elements. We just want to remove the initial node that is a integer, not all of them. @@ -80,11 +77,14 @@ export const useOpenTelemetry = ( const tracer = tracingProvider.getTracer(serviceName) + let resolverContextsByRootSpans: Record< + string, + Record + > = {} + return { onPluginInit({ addPlugin }) { if (options.resolvers) { - const parentTypeMap = new Map() - addPlugin( // eslint-disable-next-line useOnResolve(({ info, context, args }) => { @@ -94,26 +94,27 @@ export const useOpenTelemetry = ( context[tracingSpanSymbol] ) { tracer.getActiveSpanProcessor() + const rootContextSpanId = + context[tracingSpanSymbol].spanContext().spanId const { fieldName, returnType, parentType, path } = info const previousResolverSpanKey = - path.prev && - getResolverSpanKey( - path.prev, - context[tracingSpanSymbol].spanContext().spanId - ) + path.prev && getResolverSpanKey(path.prev) - let ctx = null + let ctx: opentelemetry.Context | null = null if ( previousResolverSpanKey && - parentTypeMap.has(previousResolverSpanKey) + resolverContextsByRootSpans[rootContextSpanId][ + previousResolverSpanKey + ] ) { - ctx = parentTypeMap.get(previousResolverSpanKey)! + ctx = + resolverContextsByRootSpans[rootContextSpanId][ + previousResolverSpanKey + ] } else { - parentTypeMap.clear() - ctx = opentelemetry.trace.setSpan( opentelemetry.context.active(), context[tracingSpanSymbol] @@ -132,10 +133,7 @@ export const useOpenTelemetry = ( [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), [AttributeName.RESOLVER_RESULT_TYPE]: returnType.toString(), [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), - 'meta.span.path': getResolverSpanKey( - path, - context[tracingSpanSymbol].spanContext().spanId - ), + 'meta.span.path': getResolverSpanKey(path), }, }, ctx @@ -143,13 +141,9 @@ export const useOpenTelemetry = ( const resolverCtx = opentelemetry.trace.setSpan(ctx, resolverSpan) - parentTypeMap.set( - getResolverSpanKey( - path, - context[tracingSpanSymbol].spanContext().spanId - ), - resolverCtx - ) + resolverContextsByRootSpans[rootContextSpanId][ + getResolverSpanKey(path) + ] = resolverCtx return ({ result }) => { if (result instanceof Error) { @@ -201,6 +195,13 @@ export const useOpenTelemetry = ( return } + const rootContextSpanId = executionSpan.spanContext().spanId + + const { [rootContextSpanId]: _, ...rest } = + resolverContextsByRootSpans + + resolverContextsByRootSpans = rest + if (result.data && options.result) { executionSpan.setAttribute( AttributeName.EXECUTION_RESULT, From 29f91c49c15c7eb95f01cfcab792fbc586f11948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 13:18:23 -0300 Subject: [PATCH 27/49] trigger cicd From 71a20c81e54d158f0fa46fb0b03c4d8187730511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Wed, 19 Apr 2023 16:40:16 -0300 Subject: [PATCH 28/49] fix: initialize resolverContextsByRootSpans[rootContextSpanId] object --- src/server/openTelemetry.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 24f27a72..d05a766d 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -119,6 +119,9 @@ export const useOpenTelemetry = ( opentelemetry.context.active(), context[tracingSpanSymbol] ) + + resolverContextsByRootSpans[rootContextSpanId] = + resolverContextsByRootSpans[rootContextSpanId] ?? {} } const resolverIndexInList = Number.isInteger(path.prev?.key) From 1be2879c12d0fb796e1d3ffffe159fc53b259cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 20 Apr 2023 10:51:49 -0300 Subject: [PATCH 29/49] remove logging attributes from trace --- src/server/index.ts | 4 ++-- src/server/openTelemetry.ts | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index 9e5ddf95..54bfe52d 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -103,8 +103,8 @@ const getEnvelop = async () => useOpenTelemetry( { resolvers: true, // Tracks resolvers calls, and tracks resolvers thrown errors - variables: true, // Includes the operation variables values as part of the metadata collected - result: true, // Includes execution result object as part of the metadata collected + variables: false, // Includes the operation variables values as part of the metadata collected + result: false, // Includes execution result object as part of the metadata collected }, // The @opentelemetry/sdk-trace-base was renamed from @opentelemetry/tracing but the diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index d05a766d..44738664 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -9,7 +9,6 @@ import { ConsoleSpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base' -import { print } from 'graphql' import type { Path } from 'graphql/jsutils/Path' // eslint-disable-next-line @@ -174,7 +173,7 @@ export const useOpenTelemetry = ( ...spanAdditionalAttributes, [AttributeName.EXECUTION_OPERATION_NAME]: args.operationName ?? undefined, - [AttributeName.EXECUTION_OPERATION_DOCUMENT]: print(args.document), + // [AttributeName.EXECUTION_OPERATION_DOCUMENT]: print(args.document), ...(options.variables ? { [AttributeName.EXECUTION_VARIABLES]: JSON.stringify( From 6549ced6e20ce6701d6f0976e41df64a7d8233c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 20 Apr 2023 10:52:14 -0300 Subject: [PATCH 30/49] add custom resolver to test custom resolvers and errors --- src/server/index.ts | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index 54bfe52d..176e4fd6 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -9,8 +9,15 @@ import { import { useGraphQlJit } from '@envelop/graphql-jit' import { useParserCache } from '@envelop/parser-cache' import { useValidationCache } from '@envelop/validation-cache' -import { getContextFactory, getSchema, isFastStoreError } from '@faststore/api' +import { + getContextFactory, + getSchema, + getTypeDefs, + isFastStoreError, +} from '@faststore/api' import { GraphQLError } from 'graphql' +import { makeExecutableSchema, mergeSchemas } from '@graphql-tools/schema' +import { mergeTypeDefs } from '@graphql-tools/merge' import type { Maybe, Options as APIOptions, CacheControl } from '@faststore/api' // Import the required OpenTelemetry libraries and plugins import { @@ -68,6 +75,27 @@ tracerProvider.register() const persistedQueries = new Map(Object.entries(persisted)) +// Creating type definitions +const typeDefs = ` + type ProductCluster { + id: String + name: String + } + + extend type StoreProduct { + clusterHighlights: [ProductCluster!] + } +` + +// Creating resolvers +const resolvers = { + StoreProduct: { + clusterHighlights: () => { + throw Error('This is my test error from OpenTelemetry') + }, + }, +} + const apiOptions: APIOptions = { platform: storeConfig.platform as APIOptions['platform'], account: storeConfig.api.storeId, @@ -82,6 +110,19 @@ const apiOptions: APIOptions = { export const apiSchema = getSchema(apiOptions) +const mergedTypeDefs = mergeTypeDefs([getTypeDefs(), typeDefs]) + +const getMergedSchemas = async () => + mergeSchemas({ + schemas: [ + await apiSchema, + makeExecutableSchema({ + resolvers, + typeDefs: mergedTypeDefs, + }), + ], + }) + const apiContextFactory = getContextFactory(apiOptions) const formatError: FormatErrorHandler = (err) => { @@ -97,7 +138,7 @@ const formatError: FormatErrorHandler = (err) => { const getEnvelop = async () => envelop({ plugins: [ - useAsyncSchema(apiSchema), + useAsyncSchema(getMergedSchemas()), useExtendContext(apiContextFactory), useMaskedErrors({ formatError }), useOpenTelemetry( From 126f47bf7d9d59d88fa522978bbf73c16a4f9fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 20 Apr 2023 11:28:38 -0300 Subject: [PATCH 31/49] add resolver to fail --- src/components/product/ProductCard/ProductCard.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/product/ProductCard/ProductCard.tsx b/src/components/product/ProductCard/ProductCard.tsx index 5d724c3d..669e42f4 100644 --- a/src/components/product/ProductCard/ProductCard.tsx +++ b/src/components/product/ProductCard/ProductCard.tsx @@ -142,7 +142,10 @@ export const fragment = gql` productGroupID name } - + clusterHighlights { + name + id + } image { url alternateName From 285f32dea2b90d4dc4df1a59f72824b7bcddf4f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 20 Apr 2023 11:44:08 -0300 Subject: [PATCH 32/49] now it's breaking! --- @generated/graphql/index.ts | 74 +++++++------------------------ @generated/graphql/persisted.json | 4 +- src/server/index.ts | 2 +- 3 files changed, 18 insertions(+), 62 deletions(-) diff --git a/@generated/graphql/index.ts b/@generated/graphql/index.ts index 843cf436..f99624d0 100644 --- a/@generated/graphql/index.ts +++ b/@generated/graphql/index.ts @@ -16,69 +16,10 @@ export type Scalars = { Boolean: boolean Int: number Float: number - /** - * Example: - * - * ```json - * { - * Color: 'Red', Size: '42' - * } - * ``` - */ ActiveVariations: any - /** - * Example: - * - * ```json - * { - * Color: [ - * { - * src: "https://storecomponents.vtexassets.com/...", - * alt: "...", - * label: "...", - * value: "..." - * }, - * { - * src: "https://storecomponents.vtexassets.com/...", - * alt: "...", - * label: "...", - * value: "..." - * } - * ], - * Size: [ - * { - * src: "https://storecomponents.vtexassets.com/...", - * alt: "...", - * label: "...", - * value: "..." - * } - * ] - * } - * ``` - */ FormattedVariants: any - /** A string or the string representation of an object (a stringified object). */ ObjectOrString: any - /** - * Example: - * - * ```json - * { - * 'Color-Red-Size-40': 'classic-shoes-37' - * } - * ``` - */ SlugsMap: any - /** - * Example: - * - * ```json - * { - * Color: [ "Red", "Blue", "Green" ], - * Size: [ "40", "41" ] - * } - * ``` - */ VariantsByName: any } @@ -376,6 +317,11 @@ export type PickupStoreInfo = { isPickupStore: Maybe } +export type ProductCluster = { + id: Maybe + name: Maybe +} + export type Query = { /** Returns information about all collections. */ allCollections: StoreCollectionConnection @@ -773,6 +719,7 @@ export type StoreProduct = { brand: StoreBrand /** List of items consisting of chain linked web pages, ending with the current page. */ breadcrumbList: StoreBreadcrumbList + clusterHighlights: Maybe> /** Product description. */ description: Scalars['String'] /** Global Trade Item Number. */ @@ -947,6 +894,7 @@ export type ProductSummary_ProductFragment = { id: string brand: { name: string; brandName: string } isVariantOf: { productGroupID: string; name: string } + clusterHighlights: Array<{ name: string | null; id: string | null }> | null image: Array<{ url: string; alternateName: string }> offers: { lowPrice: number @@ -1269,6 +1217,10 @@ export type ProductsQueryQuery = { id: string brand: { name: string; brandName: string } isVariantOf: { productGroupID: string; name: string } + clusterHighlights: Array<{ + name: string | null + id: string | null + }> | null image: Array<{ url: string; alternateName: string }> offers: { lowPrice: number @@ -1303,6 +1255,10 @@ export type SearchSuggestionsQueryQuery = { id: string brand: { name: string; brandName: string } isVariantOf: { productGroupID: string; name: string } + clusterHighlights: Array<{ + name: string | null + id: string | null + }> | null image: Array<{ url: string; alternateName: string }> offers: { lowPrice: number diff --git a/@generated/graphql/persisted.json b/@generated/graphql/persisted.json index c6a13f8f..800af74a 100644 --- a/@generated/graphql/persisted.json +++ b/@generated/graphql/persisted.json @@ -5,8 +5,8 @@ "ValidateCartMutation": "mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) {\n validateCart(cart: $cart, session: $session) {\n order {\n orderNumber\n acceptedOffer {\n seller {\n identifier\n }\n quantity\n price\n listPrice\n itemOffered {\n sku\n name\n image {\n url\n alternateName\n }\n brand {\n name\n }\n isVariantOf {\n productGroupID\n name\n }\n gtin\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n }\n }\n messages {\n text\n status\n }\n }\n}\n", "SubscribeToNewsletter": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) {\n subscribeToNewsletter(data: $data) {\n id\n }\n}\n", "BrowserProductQuery": "query BrowserProductQuery($locator: [IStoreSelectedFacet!]!) {\n product(locator: $locator) {\n id: productID\n sku\n name\n gtin\n description\n isVariantOf {\n name\n productGroupID\n skuVariants {\n activeVariations\n slugsMap(dominantVariantName: \"Color\")\n availableVariations(dominantVariantName: \"Color\")\n }\n }\n image {\n url\n alternateName\n }\n brand {\n name\n }\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n seller {\n identifier\n }\n }\n }\n breadcrumbList {\n itemListElement {\n item\n name\n position\n }\n }\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n}\n", - "ProductsQuery": "query ProductsQuery($first: Int!, $after: String, $sort: StoreSort!, $term: String!, $selectedFacets: [IStoreSelectedFacet!]!) {\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n id: productID\n slug\n sku\n brand {\n brandName: name\n name\n }\n name\n gtin\n isVariantOf {\n productGroupID\n name\n }\n image {\n url\n alternateName\n }\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n quantity\n seller {\n identifier\n }\n }\n }\n }\n }\n }\n }\n}\n", - "SearchSuggestionsQuery": "query SearchSuggestionsQuery($term: String!, $selectedFacets: [IStoreSelectedFacet!]) {\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n id: productID\n slug\n sku\n brand {\n brandName: name\n name\n }\n name\n gtin\n isVariantOf {\n productGroupID\n name\n }\n image {\n url\n alternateName\n }\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n quantity\n seller {\n identifier\n }\n }\n }\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n isTermMisspelled\n logicalOperator\n }\n }\n}\n", + "ProductsQuery": "query ProductsQuery($first: Int!, $after: String, $sort: StoreSort!, $term: String!, $selectedFacets: [IStoreSelectedFacet!]!) {\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n id: productID\n slug\n sku\n brand {\n brandName: name\n name\n }\n name\n gtin\n isVariantOf {\n productGroupID\n name\n }\n clusterHighlights {\n name\n id\n }\n image {\n url\n alternateName\n }\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n quantity\n seller {\n identifier\n }\n }\n }\n }\n }\n }\n }\n}\n", + "SearchSuggestionsQuery": "query SearchSuggestionsQuery($term: String!, $selectedFacets: [IStoreSelectedFacet!]) {\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n id: productID\n slug\n sku\n brand {\n brandName: name\n name\n }\n name\n gtin\n isVariantOf {\n productGroupID\n name\n }\n clusterHighlights {\n name\n id\n }\n image {\n url\n alternateName\n }\n offers {\n lowPrice\n offers {\n availability\n price\n listPrice\n quantity\n seller {\n identifier\n }\n }\n }\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n isTermMisspelled\n logicalOperator\n }\n }\n}\n", "TopSearchSuggestionsQuery": "query TopSearchSuggestionsQuery($term: String!, $selectedFacets: [IStoreSelectedFacet!]) {\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n }\n }\n}\n", "ValidateSession": "mutation ValidateSession($session: IStoreSession!, $search: String!) {\n validateSession(session: $session, search: $search) {\n locale\n channel\n country\n postalCode\n currency {\n code\n symbol\n }\n person {\n id\n email\n givenName\n familyName\n }\n }\n}\n", "ShippingSimulationQuery": "query ShippingSimulationQuery($postalCode: String!, $country: String!, $items: [IShippingItem!]!) {\n shipping(items: $items, postalCode: $postalCode, country: $country) {\n logisticsInfo {\n slas {\n carrier\n price\n shippingEstimate\n localizedEstimates\n }\n }\n address {\n city\n neighborhood\n }\n }\n}\n" diff --git a/src/server/index.ts b/src/server/index.ts index 176e4fd6..0758f5b6 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -91,7 +91,7 @@ const typeDefs = ` const resolvers = { StoreProduct: { clusterHighlights: () => { - throw Error('This is my test error from OpenTelemetry') + throw new Error('This is my test error from OpenTelemetry') }, }, } From bb1a1c53ff741002f8a380273a6a1f4bd86169c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 20 Apr 2023 16:21:05 -0300 Subject: [PATCH 33/49] end resolver span even after errors --- src/server/openTelemetry.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 44738664..05511690 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -153,9 +153,9 @@ export const useOpenTelemetry = ( name: AttributeName.RESOLVER_EXCEPTION, message: JSON.stringify(result), }) - } else { - resolverSpan.end() } + + resolverSpan.end() } } From 78b76a3886e11a170f88d083000802470738b36d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 20 Apr 2023 16:49:42 -0300 Subject: [PATCH 34/49] record span error apropriately --- src/server/openTelemetry.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 05511690..68bbf08d 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -149,10 +149,7 @@ export const useOpenTelemetry = ( return ({ result }) => { if (result instanceof Error) { - resolverSpan.recordException({ - name: AttributeName.RESOLVER_EXCEPTION, - message: JSON.stringify(result), - }) + resolverSpan.recordException(result) } resolverSpan.end() From 62f69d1a0fa83307a5c0fb7dba8ca2881008b63e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 24 Apr 2023 15:40:43 -0300 Subject: [PATCH 35/49] change masked errors order --- src/server/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/index.ts b/src/server/index.ts index 0758f5b6..47edd1bf 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -140,7 +140,6 @@ const getEnvelop = async () => plugins: [ useAsyncSchema(getMergedSchemas()), useExtendContext(apiContextFactory), - useMaskedErrors({ formatError }), useOpenTelemetry( { resolvers: true, // Tracks resolvers calls, and tracks resolvers thrown errors @@ -157,6 +156,7 @@ const getEnvelop = async () => undefined, 'faststore-api' ), + useMaskedErrors({ formatError }), useGraphQlJit(), useValidationCache(), useParserCache(), From 30c66ba2398ce0f49f5b8b43be0e633e623bc8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 24 Apr 2023 16:13:36 -0300 Subject: [PATCH 36/49] add node auto instrumentations --- package.json | 1 + src/server/index.ts | 7 + yarn.lock | 823 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 819 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index f19a1a7f..b769575b 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@faststore/graphql-utils": "^1.11.8", "@faststore/sdk": "^1.11.8", "@faststore/ui": "^1.12.23", + "@opentelemetry/auto-instrumentations-node": "^0.36.5", "@opentelemetry/exporter-trace-otlp-grpc": "^0.38.0", "@opentelemetry/instrumentation": "^0.38.0", "@opentelemetry/instrumentation-graphql": "^0.34.0", diff --git a/src/server/index.ts b/src/server/index.ts index 47edd1bf..326f3440 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -27,6 +27,8 @@ import { } from '@opentelemetry/sdk-trace-base' import { Resource } from '@opentelemetry/resources' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' +import { registerInstrumentations } from '@opentelemetry/instrumentation' import { useOpenTelemetry } from './openTelemetry' import persisted from '../../@generated/graphql/persisted.json' @@ -73,6 +75,11 @@ tracerProvider.addSpanProcessor(debugProcessor) // Register the tracer provider with the OpenTelemetry API tracerProvider.register() +registerInstrumentations({ + instrumentations: [getNodeAutoInstrumentations()], + tracerProvider, +}) + const persistedQueries = new Map(Object.entries(persisted)) // Creating type definitions diff --git a/yarn.lock b/yarn.lock index abee76d7..8860d0d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1839,6 +1839,77 @@ protobufjs "^7.0.0" yargs "^16.2.0" +"@hapi/b64@5.x.x": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-5.0.0.tgz#b8210cbd72f4774985e78569b77e97498d24277d" + integrity sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/boom@9.x.x", "@hapi/boom@^9.0.0": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" + integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/bourne@2.x.x": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.1.0.tgz#66aff77094dc3080bd5df44ec63881f2676eb020" + integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== + +"@hapi/cryptiles@5.x.x": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-5.1.0.tgz#655de4cbbc052c947f696148c83b187fc2be8f43" + integrity sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA== + dependencies: + "@hapi/boom" "9.x.x" + +"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/iron@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-6.0.0.tgz#ca3f9136cda655bdd6028de0045da0de3d14436f" + integrity sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw== + dependencies: + "@hapi/b64" "5.x.x" + "@hapi/boom" "9.x.x" + "@hapi/bourne" "2.x.x" + "@hapi/cryptiles" "5.x.x" + "@hapi/hoek" "9.x.x" + +"@hapi/podium@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-4.1.3.tgz#91e20838fc2b5437f511d664aabebbb393578a26" + integrity sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g== + dependencies: + "@hapi/hoek" "9.x.x" + "@hapi/teamwork" "5.x.x" + "@hapi/validate" "1.x.x" + +"@hapi/teamwork@5.x.x": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-5.1.1.tgz#4d2ba3cac19118a36c44bf49a3a47674de52e4e4" + integrity sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@hapi/validate@1.x.x": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@hapi/validate/-/validate-1.1.3.tgz#f750a07283929e09b51aa16be34affb44e1931ad" + integrity sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2292,6 +2363,49 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== +"@opentelemetry/auto-instrumentations-node@^0.36.5": + version "0.36.5" + resolved "https://registry.yarnpkg.com/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.36.5.tgz#2c2476fead72b7c27c67ef325accf761bc3a2caf" + integrity sha512-tps0UDvV9H9Cz+XlycvLHo/3t5zYwXVUq5mW2WLubfWUheZiRYKpo4F7va7oFt7r1RKRo19YJVuJVHOFkgJZdw== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/instrumentation-amqplib" "^0.32.2" + "@opentelemetry/instrumentation-aws-lambda" "^0.35.0" + "@opentelemetry/instrumentation-aws-sdk" "^0.34.0" + "@opentelemetry/instrumentation-bunyan" "^0.31.1" + "@opentelemetry/instrumentation-cassandra-driver" "^0.32.1" + "@opentelemetry/instrumentation-connect" "^0.31.1" + "@opentelemetry/instrumentation-dataloader" "^0.4.0" + "@opentelemetry/instrumentation-dns" "^0.31.2" + "@opentelemetry/instrumentation-express" "^0.32.1" + "@opentelemetry/instrumentation-fastify" "^0.31.1" + "@opentelemetry/instrumentation-fs" "^0.7.1" + "@opentelemetry/instrumentation-generic-pool" "^0.31.1" + "@opentelemetry/instrumentation-graphql" "^0.34.0" + "@opentelemetry/instrumentation-grpc" "^0.35.1" + "@opentelemetry/instrumentation-hapi" "^0.31.1" + "@opentelemetry/instrumentation-http" "^0.35.1" + "@opentelemetry/instrumentation-ioredis" "^0.34.0" + "@opentelemetry/instrumentation-knex" "^0.31.1" + "@opentelemetry/instrumentation-koa" "^0.34.3" + "@opentelemetry/instrumentation-lru-memoizer" "^0.32.1" + "@opentelemetry/instrumentation-memcached" "^0.31.1" + "@opentelemetry/instrumentation-mongodb" "^0.34.1" + "@opentelemetry/instrumentation-mongoose" "^0.32.1" + "@opentelemetry/instrumentation-mysql" "^0.33.0" + "@opentelemetry/instrumentation-mysql2" "^0.33.1" + "@opentelemetry/instrumentation-nestjs-core" "^0.32.2" + "@opentelemetry/instrumentation-net" "^0.31.1" + "@opentelemetry/instrumentation-pg" "^0.35.0" + "@opentelemetry/instrumentation-pino" "^0.33.1" + "@opentelemetry/instrumentation-redis" "^0.34.4" + "@opentelemetry/instrumentation-redis-4" "^0.34.3" + "@opentelemetry/instrumentation-restify" "^0.32.1" + "@opentelemetry/instrumentation-router" "^0.32.1" + "@opentelemetry/instrumentation-socket.io" "^0.33.1" + "@opentelemetry/instrumentation-tedious" "^0.5.1" + "@opentelemetry/instrumentation-winston" "^0.31.1" + "@opentelemetry/core@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.24.0.tgz#94033ebab10fdf008f8dae19c9547dadef30a2b2" @@ -2300,13 +2414,20 @@ "@opentelemetry/semantic-conventions" "0.24.0" semver "^7.1.3" -"@opentelemetry/core@1.12.0": +"@opentelemetry/core@1.12.0", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.8.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.12.0.tgz#afa32341b794045c54c979d4561de2f8f00d0da9" integrity sha512-4DWYNb3dLs2mSCGl65jY3aEgbvPWSHVQV/dmDWiYeWUrMakZQFcymqZOSUNZO0uDrEJoxMu8O5tZktX6UKFwag== dependencies: "@opentelemetry/semantic-conventions" "1.12.0" +"@opentelemetry/core@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.9.1.tgz#e343337e1a7bf30e9a6aef3ef659b9b76379762a" + integrity sha512-6/qon6tw2I8ZaJnHAQUUn4BqhTbTNRS0WP8/bA0ynaX+Uzp/DDbd0NS0Cq6TMlh8+mrlsyqDE7mO50nmv2Yvlg== + dependencies: + "@opentelemetry/semantic-conventions" "1.9.1" + "@opentelemetry/exporter-trace-otlp-grpc@^0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.38.0.tgz#0c2a40bf812a7ffbe8695d4a95f350d735b95075" @@ -2319,6 +2440,115 @@ "@opentelemetry/resources" "1.12.0" "@opentelemetry/sdk-trace-base" "1.12.0" +"@opentelemetry/instrumentation-amqplib@^0.32.2": + version "0.32.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.32.2.tgz#51d637875dddcbd810090bd505fe3230c22fe760" + integrity sha512-NSXvRKtJhBqkKQltmOicg0ChyAA5VfrKPa9WSrFDXvlw8Pjs9UiQQTEYbiBT3V5LSjJXH6CpNnQp6v2bqEldow== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-aws-lambda@^0.35.0": + version "0.35.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.35.0.tgz#3a1bdf7bcd0115f23ecc933e09142a905efb025c" + integrity sha512-x6nd1DEf/MYU57AMphwyxQLSPSNit6lnJAMNz9eQmQ0TdzGaWUsWUz2OgoZXzjF2D8hbaJHYaDvl1IUOk7cNVg== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/propagator-aws-xray" "^1.2.0" + "@opentelemetry/resources" "^1.8.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/aws-lambda" "8.10.81" + +"@opentelemetry/instrumentation-aws-sdk@^0.34.0": + version "0.34.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.34.0.tgz#322c5e9c0aa5dc8baf131e06aed94dcbbcaf79df" + integrity sha512-DT7Z08MVNOk/kyvztV1l4s1YMjW4qTbw852EhKkgpyYeKkxfGwdHqvv6+7MzOboJPXFQv/ADn1zcPtD8Lqia/Q== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/propagation-utils" "^0.29.2" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-bunyan@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.31.1.tgz#832580c2067c5a8b533330db4046e68a824ac228" + integrity sha512-y81y0L50ocziES+jVcsCM684R+1p3M64bfGwVumZI/cH3LNSlnvOd4xgQom4Ug+UzcYcP9RxjFURDQAvh8tnDw== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@types/bunyan" "1.8.7" + +"@opentelemetry/instrumentation-cassandra-driver@^0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.32.1.tgz#3f8b505c76e8c9fc4bbed8ee2cc5b85426c5ba3f" + integrity sha512-28tbhM8I7Yp7PfSRnykxMFHKDsJC5efwOOoI/CehxIITSLOLrenmCEeNhSUfVUHzMIiqFiZXW/F0wurbAy38pg== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-connect@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.31.1.tgz#6bb60001919e54e1ebb26c614c6f793b2ab8ceee" + integrity sha512-72hDzkUIpq4TFrBi0yooNH/LVQbiGZ3wgL0uVGjvyTfN1ZOfoa5LhverWwtfAcjn1aniVU4xEL6aWqGl0A3nDQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/connect" "3.4.35" + +"@opentelemetry/instrumentation-dataloader@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.4.0.tgz#0683a7bd7bacb823efab9dd265810849ef89b866" + integrity sha512-t12pWySH7d5Kmo9CZDAPs22d40kzWHyvMFsQGysc7UVtBOXB+Vg7Bzt4j3R4jdal/WkGKRgXL920zhGmziuzxw== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + +"@opentelemetry/instrumentation-dns@^0.31.2": + version "0.31.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.31.2.tgz#535dc3b26f42c1a0914253e4bfc096d13d56ffb8" + integrity sha512-BBfMzbJGdEEz/OX2uPq0u9NAX2HL9KZ5x3PqwnJEqnUnRBr8hHJ9xbbY9WKRxZ55cGt8XeQpkj2NbRNkoy4hzQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + semver "^7.3.2" + +"@opentelemetry/instrumentation-express@^0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.32.1.tgz#6ea5c62c19313c634987d15769dd2adb2b8a3b68" + integrity sha512-MR5ondudJaBG+GscjTWp3dm+mUacWgD9CnFs+EURNzd4EfHpPcxB9ZtFgUfzsp6FMJQZvOsgN5/fHQ4wmkf/fg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/express" "4.17.13" + +"@opentelemetry/instrumentation-fastify@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.31.1.tgz#c323b91e591d08d765b1c30df139e478199514f2" + integrity sha512-oROINVKIvkkX3wQidPOYH78ruHwvfVBIi74svkeNaMzZ78xW2Djb/BiA5tXAujhi+fRGl2kwCG580iS9q5G7YA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-fs@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.7.1.tgz#0ecb29edbe69d94d8a849dae8f481dbd047209a4" + integrity sha512-jAZhpUhnfdK8yjOcUHa6i5hnxACtUC25s6krqAkALojudd3OJudBtwymtIPWQiWsi9S2YuoAkGL+g8wDaMvc8g== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-generic-pool@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.31.1.tgz#e1514d61e33c5090a7bd03a41cb11b769e916ae4" + integrity sha512-FvoQKVpafcXvsJvIQU3QOFx/KBwbCblIGW83JWwoz2ymMu1coSJTveqN7cNVqEMR3BZ0eN4Ljgmq3AvimWXiTg== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/generic-pool" "^3.1.9" + "@opentelemetry/instrumentation-graphql@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.34.0.tgz#215161603fe78d39dd8b9a4bc66ae726afa73201" @@ -2326,6 +2556,34 @@ dependencies: "@opentelemetry/instrumentation" "^0.35.1" +"@opentelemetry/instrumentation-grpc@^0.35.1": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.35.1.tgz#9518a6f75020db227d924f69d69e0e12a0911d99" + integrity sha512-EBmpCD+5QfUXPmupynjwxt3tUG5bgTrGZT12B0/+By9ZMLboDAryHjpiermanbPh5mTOq0q73YzruGQWU9TExg== + dependencies: + "@opentelemetry/instrumentation" "0.35.1" + "@opentelemetry/semantic-conventions" "1.9.1" + +"@opentelemetry/instrumentation-hapi@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.31.1.tgz#5b72844713b6dc1ca468d1eb6f9eeff2e8dce2df" + integrity sha512-kk/LdhIb/5AC48xHq1LzoV6My7TgEAANxsIXQwLiIUVBgM5yjH3bEb5TjyqbSVNvqsJ1aU5etQICjKbSNh+zlA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/hapi__hapi" "20.0.9" + +"@opentelemetry/instrumentation-http@^0.35.1": + version "0.35.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.35.1.tgz#8a62e5ed737b51596a6799ecf4d70fe6ef1c26c4" + integrity sha512-tH92LznX5pcxpuTSb6A662IdldlMk8QTtneDN66h4nIT9ch98Gtu68GSSKjMoTR25GzH3opvPC9mX2xJamxMJw== + dependencies: + "@opentelemetry/core" "1.9.1" + "@opentelemetry/instrumentation" "0.35.1" + "@opentelemetry/semantic-conventions" "1.9.1" + semver "^7.3.5" + "@opentelemetry/instrumentation-http@^0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.38.0.tgz#0226ff67e9f79063aae771bfdb04389da457c828" @@ -2336,16 +2594,180 @@ "@opentelemetry/semantic-conventions" "1.12.0" semver "^7.3.5" -"@opentelemetry/instrumentation@0.38.0", "@opentelemetry/instrumentation@^0.38.0": - version "0.38.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.38.0.tgz#e97c6d4ea699006ec2541fd83b26a10f0edaada4" - integrity sha512-wr1WkIbzHGV+oz6SCme88D2c+zNG23COkCjcida8b3jIzX2lJafOpEHPDcbBF38F8ChkRSj/tVnx1wnYAXZvbA== +"@opentelemetry/instrumentation-ioredis@^0.34.0": + version "0.34.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.34.0.tgz#2361376682a9df52b63b9c492beb1aa681f0f84b" + integrity sha512-2oEOcsqBHGxt4fDV3lM8vxCZNKv2E7ChChSctu4IPem4ixT4vCBm1oEVDU2/6RcS6vnNS6XtbhCchQtKjUMQyA== dependencies: - require-in-the-middle "^6.0.0" - semver "^7.3.2" - shimmer "^1.2.1" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/redis-common" "^0.35.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/ioredis4" "npm:@types/ioredis@^4.28.10" + +"@opentelemetry/instrumentation-knex@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.31.1.tgz#ba6f560b2120900813e9be502d9daf2b07c708ba" + integrity sha512-X9SIdzmyyoknPwUB+/JfcF8VHujQWxXDNMKl3PpxU2PwEaKpXPKtOgdA7do08tSoULMI0xCftFIzBUFnWivPFQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-koa@^0.34.3": + version "0.34.3" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.34.3.tgz#bdcbb32df2886464937c2f985e8b6473b9b5759e" + integrity sha512-WHPl7MMmeFeM1Mg9kgCU64Zdc6MXwXXw9qnJV4Ajl/7zX6/XyGEatDcTMxaJAzVQKXSHR70lKfl8+/W/UP2wrw== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/koa" "2.13.6" + "@types/koa__router" "8.0.7" + +"@opentelemetry/instrumentation-lru-memoizer@^0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.32.1.tgz#d340a95c0a5c9475dba12d7d0dd6b83d33bca21b" + integrity sha512-Lx6t3LN4nfe9UGtc7zVAJ0AwiftFTqHGY+Mf4qOWOPcsBoTgj4Z0tZ8dwX1DTYFyNmmFUyWKSXrEWshfhOjexQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + +"@opentelemetry/instrumentation-memcached@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.31.1.tgz#b80d3c4efb126f2d4105a8b8b7cced73ba02bdf2" + integrity sha512-uDiLLTsXlXLIvwYdl9+1AvxvWZkYrXAIvHwPOi6FthznnDIJtyxk0DgxusUaezhRUS9W1CqO5hFb1+8Hmg5DCQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/memcached" "^2.2.6" + +"@opentelemetry/instrumentation-mongodb@^0.34.1": + version "0.34.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.34.1.tgz#26f409f324cd6b972c9338704597a38c8f5128df" + integrity sha512-zRmotNkUQF6G9KWMEr2K2xZSqlaYKLY4HvV+DGHtOeJ1NbRUFk0V5XBNpB6nc4dXiEJUlGfXRyrQ/yu5TKiUuA== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-mongoose@^0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.32.1.tgz#067d9fa999d6a25b1610f47edb9b7f31da934fbd" + integrity sha512-ibTM94JpTM6nbfARoql0wLWFOOchCIlDAhSibFNxQ+TImWLZxVQ6NpNnrtbrNoUoPD0xnB/ZlYR7as72Xu4Vyg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-mysql2@^0.33.1": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.33.1.tgz#966c2809da28026b075233adb3529fea076482f7" + integrity sha512-ZyGg2KAaQRTctjCUIo+s25Yl4WDAvReF//EA0vKb9nKxMafon1NEbWeO1+qIE6xiXRXFUFn80hnf0N/YLu5gvw== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-mysql@^0.33.0": + version "0.33.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.33.0.tgz#ecfd871622e449853b92f88a0467e949f57e11ad" + integrity sha512-dU0phFuwtI81M7HyHbr/N4OllEAWYbQaOtSaJnDPMCxy4f840Np1kPzcTcAqd6zYIMhaO3B1nt7N2cP3ftu2RQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/mysql" "2.15.19" + mysql "2.18.1" + +"@opentelemetry/instrumentation-nestjs-core@^0.32.2": + version "0.32.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.32.2.tgz#ed924b117a8a570824a56d556d5a3fda336a6793" + integrity sha512-nUidxCbRnN+QUKArl5f8rE3hkYTsYlHEZRoWMqH9fFsVxOdZ4S6kT/HP55/Pj9+cDZ6XfBbelEOZjpsYeO2dYg== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-net@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-net/-/instrumentation-net-0.31.1.tgz#d4bcdc7412114f739130168b7a0a341944bab2a0" + integrity sha512-Gfks0UUi076w7aSTX1Q7KfnmlSqt0vMX0sc6jUWRd/BOQo/r84aS/DU0dP1FuPLyC4Vzpx9pPCnD37MRPhbkKA== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-pg@^0.35.0": + version "0.35.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.35.0.tgz#ebdb046539f7208be75d11a3818d4fa0db281538" + integrity sha512-vNcnILF9c+SJVZr0R0xKY9HzbATLwRVbKrrIbkD6Oj4uzfarlA6n2bF3LJAYGMMcDSdxUN+KaTMeW9byLKqqTg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/pg" "8.6.1" + "@types/pg-pool" "2.0.3" + +"@opentelemetry/instrumentation-pino@^0.33.1": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.33.1.tgz#a9ea2fd7a830871d4ea73b811b801d6294d12e5a" + integrity sha512-Rajum1USKFE3khFSg7JRqoI+2BK2BpC2SiB0mjXdQ5s31IxaNuc6qiXdNz6mRzbdzMb/ydsJchlQiSNwB2iVeQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + +"@opentelemetry/instrumentation-redis-4@^0.34.3": + version "0.34.3" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.34.3.tgz#365d8d3d4a1fd2865366126f7955275aa64eb3cc" + integrity sha512-JdHK/retw8rttFkv393P07PEtxhaPLbWXWSJC8Y9kBAoZ+vFEMTM5z+vPQTfgcBQFveyy6v6GEa6H1ozd35z7w== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/redis-common" "^0.35.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-redis@^0.34.4": + version "0.34.4" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.34.4.tgz#3338f0e0e4c546460c771f023d6577faa50517a0" + integrity sha512-X1iX75gcQGImLRGZ7s7vbgKy3zIwgZO9fECq7jDnSjBoQ2WxTs8BMN/J2wqEE4SUawxzbHxQqcvAXEy3zA4r0A== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/redis-common" "^0.35.0" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-restify@^0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.32.1.tgz#88c47b4409f9fad2f46ca61168502114c83b4202" + integrity sha512-eko2ESs93LA8G81+qaVsDsCMdvDvvtWJKILBbqJAUeas0WqdLvytcMv/KlXGrHkenTtHA+t1pyTOPw4uyxELsQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-router@^0.32.1": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-router/-/instrumentation-router-0.32.1.tgz#894b9df099de01ed84eb2b4ff02cf7c31ab8fed9" + integrity sha512-hLj2+Io3jaLfknaXOLhZc/ITs0St29Kf/LGIpfUA067JKtf9YSXndlfvI731nFf6O0KzKWc9loD/mKvc9W4bWQ== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + +"@opentelemetry/instrumentation-socket.io@^0.33.1": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.33.1.tgz#75ff6163f008f415c6aa0ddc23f209782ae1f864" + integrity sha512-P5SkNaV0PtthVbn5h0E9XZsAAID33+4eTZDlo4jRPPBmFsPE9e3TXknlEc+xVkZVhPrdEvuAfZMKoFdr/DB5XA== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" -"@opentelemetry/instrumentation@^0.35.1": +"@opentelemetry/instrumentation-tedious@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.5.1.tgz#66fb884a90bc272bfa46f66085fc039ff08fd2d8" + integrity sha512-iDDF/ZtxoV6eGzOjVj5qnHJ88RpTg7SbRnrFjPQ4E8HaNEjlnMnig3LjIKESV6GZpPO2DVciqIBWSfs8x34RIw== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + "@opentelemetry/semantic-conventions" "^1.0.0" + "@types/tedious" "^4.0.6" + +"@opentelemetry/instrumentation-winston@^0.31.1": + version "0.31.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.31.1.tgz#4c666cb36a6d2ca1cb319c0280a3ca16ba5608ed" + integrity sha512-qPK89Fp5bI6+IGMm2J2+A4kmeRfvRdrfgdwYlXoMZhO4aLL6BL5thdPYkDmIKO4FIzoOmybg62H3lMAExUUAyA== + dependencies: + "@opentelemetry/instrumentation" "^0.35.1" + +"@opentelemetry/instrumentation@0.35.1", "@opentelemetry/instrumentation@^0.35.1": version "0.35.1" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.35.1.tgz#065bdbc4771137347e648eb4c6c6de6e9e97e4d1" integrity sha512-EZsvXqxenbRTSNsft6LDcrT4pjAiyZOx3rkDNeqKpwZZe6GmZtsXaZZKuDkJtz9fTjOGjDHjZj9/h80Ya9iIJw== @@ -2354,6 +2776,15 @@ semver "^7.3.2" shimmer "^1.2.1" +"@opentelemetry/instrumentation@0.38.0", "@opentelemetry/instrumentation@^0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.38.0.tgz#e97c6d4ea699006ec2541fd83b26a10f0edaada4" + integrity sha512-wr1WkIbzHGV+oz6SCme88D2c+zNG23COkCjcida8b3jIzX2lJafOpEHPDcbBF38F8ChkRSj/tVnx1wnYAXZvbA== + dependencies: + require-in-the-middle "^6.0.0" + semver "^7.3.2" + shimmer "^1.2.1" + "@opentelemetry/otlp-exporter-base@0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.38.0.tgz#803d0e29825023721963384a9c64c5db254d4cf1" @@ -2381,6 +2812,23 @@ "@opentelemetry/sdk-metrics" "1.12.0" "@opentelemetry/sdk-trace-base" "1.12.0" +"@opentelemetry/propagation-utils@^0.29.2": + version "0.29.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.29.2.tgz#faf548ee6008bc1a1e551c0599397cec0f8ecdc5" + integrity sha512-ynHFE2BMSZVK1Vq71qVJtdXQAt+pfYAYHHD+ZQYEKnkJN0F2GVMWz75JiHxh7wytt/maIqV9qcWxfjWFK1TUFw== + +"@opentelemetry/propagator-aws-xray@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.2.0.tgz#4d29e85b652755d105473a76d53d60d3a26b3f0a" + integrity sha512-KCNFXdv63c+dItes2pUPVd1QDPmfcx3AVwcgE28emSx6tPI71q11zpMTDAWKPU8J9GQAGXMDyGnRGhIgua40aw== + dependencies: + "@opentelemetry/core" "^1.0.0" + +"@opentelemetry/redis-common@^0.35.0": + version "0.35.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.35.0.tgz#4676bff5d2e37a2063a44607f32383526029a5e2" + integrity sha512-VgA1RN3wsfx1J9rgVOHkMESV9mB/mrRBTr24KNHtBY4jl8goKe/lmV1Qjjs6EUP8F78E/YJhezQCx9EtBOVweg== + "@opentelemetry/resources@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.24.0.tgz#834e5a4d0a64ed4de085add8308be203959c44b4" @@ -2389,7 +2837,7 @@ "@opentelemetry/core" "0.24.0" "@opentelemetry/semantic-conventions" "0.24.0" -"@opentelemetry/resources@1.12.0", "@opentelemetry/resources@^1.12.0": +"@opentelemetry/resources@1.12.0", "@opentelemetry/resources@^1.12.0", "@opentelemetry/resources@^1.8.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.12.0.tgz#895394c727dc3e7e51d1d2cc50907ec07a626dca" integrity sha512-gunMKXG0hJrR0LXrqh7BVbziA/+iJBL3ZbXCXO64uY+SrExkwoyJkpiq9l5ismkGF/A20mDEV7tGwh+KyPw00Q== @@ -2420,11 +2868,16 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.24.0.tgz#1028ef0e0923b24916158d80d2ddfd67ea8b6740" integrity sha512-a/szuMQV0Quy0/M7kKdglcbRSoorleyyOwbTNNJ32O+RBN766wbQlMTvdimImTmwYWGr+NJOni1EcC242WlRcA== -"@opentelemetry/semantic-conventions@1.12.0": +"@opentelemetry/semantic-conventions@1.12.0", "@opentelemetry/semantic-conventions@^1.0.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" integrity sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA== +"@opentelemetry/semantic-conventions@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.9.1.tgz#ad3367684a57879392513479e0a436cb2ac46dad" + integrity sha512-oPQdbFDmZvjXk5ZDoBGXG8B4tSB/qW5vQunJWQMFUBp7Xe8O1ByPANueJ+Jzg58esEBegyyxZ7LRmfJr7kFcFg== + "@opentelemetry/tracing@^0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.24.0.tgz#63077fe77b2f450442cb36710ea355db76f60faa" @@ -2631,6 +3084,23 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64" integrity sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw== +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -3631,16 +4101,65 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@types/accepts@*": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + dependencies: + "@types/node" "*" + "@types/aria-query@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== +"@types/aws-lambda@8.10.81": + version "8.10.81" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.81.tgz#6d405269aad82e05a348687631aa9a587cdbe158" + integrity sha512-C1rFKGVZ8KwqhwBOYlpoybTSRtxu2433ea6JaO3amc6ubEe08yQoFsPa9aU9YqvX7ppeZ25CnCtC4AH9mhtxsQ== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bunyan@1.8.7": + version "1.8.7" + resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.7.tgz#63cc65b5ecff6217d1509409a575e7b991f80831" + integrity sha512-jaNt6xX5poSmXuDAkQrSqx2zkR66OrdRDuVnU8ldvn3k/Ci/7Sf5nooKspQWimDnw337Bzt/yirqSThTjvrHkg== + dependencies: + "@types/node" "*" + +"@types/connect@*", "@types/connect@3.4.35": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.5.tgz#650820e95de346e1f84e30667d168c8fd25aa6e3" + integrity sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA== + "@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== +"@types/cookies@*": + version "0.7.7" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" + integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + "@types/cypress@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@types/cypress/-/cypress-1.1.3.tgz#0a700c040d53e9e12b5af98e41d4a88c39f39b6a" @@ -3674,6 +4193,42 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/generic-pool@^3.1.9": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@types/generic-pool/-/generic-pool-3.8.1.tgz#b9b25b2ba4733057fa5df1818352d3205c48e87b" + integrity sha512-eaMAbZS0EfKvaP5PUZ/Cdf5uJBO2t6T3RdvQTKuMqUwGhNpCnPAsKWEMyV+mCeCQG3UiHrtgdzni8X6DmhxRaQ== + dependencies: + generic-pool "*" + "@types/glob@*": version "8.1.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" @@ -3697,6 +4252,39 @@ dependencies: "@types/node" "*" +"@types/hapi__catbox@*": + version "10.2.4" + resolved "https://registry.yarnpkg.com/@types/hapi__catbox/-/hapi__catbox-10.2.4.tgz#4d0531a6c2d0e45024f724020d536041ef8ffe30" + integrity sha512-A6ivRrXD5glmnJna1UAGw87QNZRp/vdFO9U4GS+WhOMWzHnw+oTGkMvg0g6y1930CbeheGOCm7A1qHsqH7AXqg== + +"@types/hapi__hapi@20.0.9": + version "20.0.9" + resolved "https://registry.yarnpkg.com/@types/hapi__hapi/-/hapi__hapi-20.0.9.tgz#9d570846c96268266a14c970c13aeeaccfc8e172" + integrity sha512-fGpKScknCKZityRXdZgpCLGbm41R1ppFgnKHerfZlqOOlCX/jI129S6ghgBqkqCE8m9A0CIu1h7Ch04lD9KOoA== + dependencies: + "@hapi/boom" "^9.0.0" + "@hapi/iron" "^6.0.0" + "@hapi/podium" "^4.1.3" + "@types/hapi__catbox" "*" + "@types/hapi__mimos" "*" + "@types/hapi__shot" "*" + "@types/node" "*" + joi "^17.3.0" + +"@types/hapi__mimos@*": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz#4f8a1c58345fc468553708d3cb508724aa081bd9" + integrity sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ== + dependencies: + "@types/mime-db" "*" + +"@types/hapi__shot@*": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@types/hapi__shot/-/hapi__shot-4.1.2.tgz#d4011999a91e8101030fece1462fe99769455855" + integrity sha512-8wWgLVP1TeGqgzZtCdt+F+k15DWQvLG1Yv6ZzPfb3D5WIo5/S+GGKtJBVo2uNEcqabP5Ifc71QnJTDnTmw1axA== + dependencies: + "@types/node" "*" + "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -3714,11 +4302,28 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== +"@types/http-assert@*": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== + "@types/http-cache-semantics@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + +"@types/ioredis4@npm:@types/ioredis@^4.28.10": + version "4.28.10" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.28.10.tgz#40ceb157a4141088d1394bb87c98ed09a75a06ff" + integrity sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ== + dependencies: + "@types/node" "*" + "@types/is-function@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.1.tgz#2d024eace950c836d9e3335a66b97960ae41d022" @@ -3768,6 +4373,39 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/keygrip@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== + +"@types/koa-compose@*": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== + dependencies: + "@types/koa" "*" + +"@types/koa@*", "@types/koa@2.13.6": + version "2.13.6" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.6.tgz#6dc14e727baf397310aa6f414ebe5d144983af42" + integrity sha512-diYUfp/GqfWBAiwxHtYJ/FQYIXhlEhlyaU7lB/bWQrx4Il9lCET5UwpFy3StOAohfsxxvEQ11qIJgT1j2tfBvw== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/koa__router@8.0.7": + version "8.0.7" + resolved "https://registry.yarnpkg.com/@types/koa__router/-/koa__router-8.0.7.tgz#663d69d5ddebff5aaca27c0594430b3ba6ea20be" + integrity sha512-OB3Ax75nmTP+WR9AgdzA42DI7YmBtiNKN2g1Wxl+d5Dyek9SWt740t+ukwXSmv/jMBCUPyV3YEI93vZHgdP7UQ== + dependencies: + "@types/koa" "*" + "@types/lodash@^4.14.167": version "4.14.192" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285" @@ -3785,6 +4423,23 @@ dependencies: "@types/unist" "*" +"@types/memcached@^2.2.6": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@types/memcached/-/memcached-2.2.7.tgz#b3de026a11a4c0a18fb079cfeeaea10a41da20f9" + integrity sha512-ImJbz1i8pl+OnyhYdIDnHe8jAuM8TOwM/7VsciqhYX3IL0jPPUToAtVxklfcWFGYckahEYZxhd9FS0z3MM1dpA== + dependencies: + "@types/node" "*" + +"@types/mime-db@*": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@types/mime-db/-/mime-db-1.43.1.tgz#c2a0522453bb9b6e84ee48b7eef765d19bcd519e" + integrity sha512-kGZJY+R+WnR5Rk+RPHUMERtb2qBRViIHCBdtUrY+NmwuGb8pQdfTqQiCKPrxpdoycl8KWm2DLdkpoSdt479XoQ== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -3795,6 +4450,13 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/mysql@2.15.19": + version "2.15.19" + resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.19.tgz#d158927bb7c1a78f77e56de861a3b15cae0e7aed" + integrity sha512-wSRg2QZv14CWcZXkgdvHbbV2ACufNy5EgI8mBBxnJIptchv7DBy/h53VMa2jDhyo0C9MO4iowE6z9vF8Ja1DkQ== + dependencies: + "@types/node" "*" + "@types/node-fetch@^2.5.7": version "2.6.3" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.3.tgz#175d977f5e24d93ad0f57602693c435c57ad7e80" @@ -3838,6 +4500,31 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== +"@types/pg-pool@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.3.tgz#3eb8df2933f617f219a53091ad4080c94ba1c959" + integrity sha512-fwK5WtG42Yb5RxAwxm3Cc2dJ39FlgcaNiXKvtTLAwtCn642X7dgel+w1+cLWwpSOFImR3YjsZtbkfjxbHtFAeg== + dependencies: + "@types/pg" "*" + +"@types/pg@*": + version "8.6.6" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.6.tgz#21cdf873a3e345a6e78f394677e3b3b1b543cb80" + integrity sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + +"@types/pg@8.6.1": + version "8.6.1" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" + integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + "@types/pretty-hrtime@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" @@ -3848,11 +4535,16 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/qs@^6.9.5": +"@types/qs@*", "@types/qs@^6.9.5": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "@types/react@^18.0.14": version "18.0.32" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.32.tgz#5e88b2af6833251d54ec7fe86d393224499f41d5" @@ -3872,6 +4564,14 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +"@types/serve-static@*": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + dependencies: + "@types/mime" "*" + "@types/node" "*" + "@types/set-cookie-parser@^2.4.0": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" @@ -3899,6 +4599,13 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== +"@types/tedious@^4.0.6": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/tedious/-/tedious-4.0.9.tgz#baa3892e45c63d7aac54d7bf5b01385d210ff19e" + integrity sha512-ipwFvfy9b2m0gjHsIX0D6NAAwGCKokzf5zJqUZHUGt+7uWVlBIy6n2eyMgiKQ8ChLFVxic/zwQUhjLYNzbHDRA== + dependencies: + "@types/node" "*" + "@types/uglify-js@*": version "3.17.1" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" @@ -5258,6 +5965,11 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -8987,6 +9699,11 @@ generate-function@^2.3.1: dependencies: is-property "^1.0.2" +generic-pool@*: + version "3.9.0" + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" + integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== + gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -10912,6 +11629,17 @@ jiti@1.17.1: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.17.1.tgz#264daa43ee89a03e8be28c3d712ccc4eb9f1e8ed" integrity sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw== +joi@^17.3.0: + version "17.9.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" + integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + jose@^4.11.4: version "4.13.1" resolved "https://registry.yarnpkg.com/jose/-/jose-4.13.1.tgz#449111bb5ab171db85c03f1bd2cb1647ca06db1c" @@ -12194,6 +12922,16 @@ mute-stream@1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +mysql@2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + nan@^2.12.1: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" @@ -13226,6 +13964,27 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-protocol@*: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + +pg-types@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + picocolors@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" @@ -13463,6 +14222,28 @@ postcss@^8.2.15, postcss@^8.3.11, postcss@^8.4.19, postcss@^8.4.4: picocolors "^1.0.0" source-map-js "^1.0.2" +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -14050,6 +14831,19 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -15153,6 +15947,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== + sshpk@^1.14.1: version "1.17.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" From 5ec002f19ec7d0ba56f33cace733532f6553f675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 24 Apr 2023 17:08:51 -0300 Subject: [PATCH 37/49] use NodeTracerProvider --- package.json | 1 + src/server/index.ts | 4 ++-- yarn.lock | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b769575b..e2a6b161 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@opentelemetry/instrumentation-http": "^0.38.0", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-trace-base": "^1.12.0", + "@opentelemetry/sdk-trace-node": "^1.12.0", "@types/react": "^18.0.14", "@vtex/client-cms": "^0.2.12", "@vtex/tsconfig": "0.6.0", diff --git a/src/server/index.ts b/src/server/index.ts index 326f3440..dff2485f 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -21,7 +21,6 @@ import { mergeTypeDefs } from '@graphql-tools/merge' import type { Maybe, Options as APIOptions, CacheControl } from '@faststore/api' // Import the required OpenTelemetry libraries and plugins import { - BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base' @@ -29,6 +28,7 @@ import { Resource } from '@opentelemetry/resources' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' import { useOpenTelemetry } from './openTelemetry' import persisted from '../../@generated/graphql/persisted.json' @@ -46,7 +46,7 @@ const collectorOptions = { } // Create a new tracer provider -const tracerProvider = new BasicTracerProvider({ +const tracerProvider = new NodeTracerProvider({ resource: new Resource({ 'service.name': 'faststore-api', 'service.version': '1.12.38', diff --git a/yarn.lock b/yarn.lock index 8860d0d9..0d878938 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2406,6 +2406,11 @@ "@opentelemetry/instrumentation-tedious" "^0.5.1" "@opentelemetry/instrumentation-winston" "^0.31.1" +"@opentelemetry/context-async-hooks@1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.12.0.tgz#3d683dc80787c10ec3d805000267948e7b24b096" + integrity sha512-PmwAanPNWCyS9JYFzhzVzHgviLhc0UHjOwdth+hp3HgQQ9XZZNE635P8JhAUHZmbghW9/qQFafRWOS4VN9VVnQ== + "@opentelemetry/core@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.24.0.tgz#94033ebab10fdf008f8dae19c9547dadef30a2b2" @@ -2824,6 +2829,20 @@ dependencies: "@opentelemetry/core" "^1.0.0" +"@opentelemetry/propagator-b3@1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.12.0.tgz#74d3e4b4889b1ae67a5aab0ca08afbce0a867f4d" + integrity sha512-WFcn98075QPc2zE1obhKydJHUehI5/HuLoelPEVwATj+487hjCwjHj9r2fgmQkWpvuNSB7CJaA0ys6qqq1N6lg== + dependencies: + "@opentelemetry/core" "1.12.0" + +"@opentelemetry/propagator-jaeger@1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.12.0.tgz#e477e8a63007734d18db6a764a440b37e9f0dd2d" + integrity sha512-ugtWF7GC6X5RIJ0+iMwW2iVAGNs206CAeq8XQ8OkJRg+v0lp4H0/i+gJ4hubTT8NIL5a3IxtIrAENPLIGdLucQ== + dependencies: + "@opentelemetry/core" "1.12.0" + "@opentelemetry/redis-common@^0.35.0": version "0.35.0" resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.35.0.tgz#4676bff5d2e37a2063a44607f32383526029a5e2" @@ -2863,6 +2882,18 @@ "@opentelemetry/resources" "1.12.0" "@opentelemetry/semantic-conventions" "1.12.0" +"@opentelemetry/sdk-trace-node@^1.12.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.12.0.tgz#f9f35a44bf662884d49c63473ce8fb34acf7d413" + integrity sha512-PxpDemnNZLLeFNLAu95/K3QubjlaScXVjVQPlwPui65VRxIvxGVysnN7DFfsref+qoh1hI6nlrYSij43vxdm2w== + dependencies: + "@opentelemetry/context-async-hooks" "1.12.0" + "@opentelemetry/core" "1.12.0" + "@opentelemetry/propagator-b3" "1.12.0" + "@opentelemetry/propagator-jaeger" "1.12.0" + "@opentelemetry/sdk-trace-base" "1.12.0" + semver "^7.3.5" + "@opentelemetry/semantic-conventions@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.24.0.tgz#1028ef0e0923b24916158d80d2ddfd67ea8b6740" From 29c1d0e0443dd06de25f86d06a33f580757de055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 24 Apr 2023 17:23:27 -0300 Subject: [PATCH 38/49] adding node instrumentations on lambda --- src/pages/api/graphql.ts | 9 ++++++++- src/server/index.ts | 9 +-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/pages/api/graphql.ts b/src/pages/api/graphql.ts index d67c2203..e4d2151d 100644 --- a/src/pages/api/graphql.ts +++ b/src/pages/api/graphql.ts @@ -1,7 +1,14 @@ import { isFastStoreError, stringifyCacheControl } from '@faststore/api' import type { NextApiHandler, NextApiRequest } from 'next' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' -import { execute } from '../../server' +import { execute, tracerProvider } from '../../server' + +registerInstrumentations({ + instrumentations: [getNodeAutoInstrumentations()], + tracerProvider, +}) const parseRequest = (request: NextApiRequest) => { const { operationName, variables, query } = diff --git a/src/server/index.ts b/src/server/index.ts index dff2485f..57f4753e 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -26,8 +26,6 @@ import { } from '@opentelemetry/sdk-trace-base' import { Resource } from '@opentelemetry/resources' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' -import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' -import { registerInstrumentations } from '@opentelemetry/instrumentation' import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' import { useOpenTelemetry } from './openTelemetry' @@ -46,7 +44,7 @@ const collectorOptions = { } // Create a new tracer provider -const tracerProvider = new NodeTracerProvider({ +export const tracerProvider = new NodeTracerProvider({ resource: new Resource({ 'service.name': 'faststore-api', 'service.version': '1.12.38', @@ -75,11 +73,6 @@ tracerProvider.addSpanProcessor(debugProcessor) // Register the tracer provider with the OpenTelemetry API tracerProvider.register() -registerInstrumentations({ - instrumentations: [getNodeAutoInstrumentations()], - tracerProvider, -}) - const persistedQueries = new Map(Object.entries(persisted)) // Creating type definitions From 24da4bd7e88b83de28635578d6bcedc4df7df092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 24 Apr 2023 17:43:18 -0300 Subject: [PATCH 39/49] resource merge --- src/server/index.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index 57f4753e..dc33229c 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -45,15 +45,17 @@ const collectorOptions = { // Create a new tracer provider export const tracerProvider = new NodeTracerProvider({ - resource: new Resource({ - 'service.name': 'faststore-api', - 'service.version': '1.12.38', - 'service.name_and_version': 'faststore-api@1.12.38', - platform: storeConfig.platform, - [`${storeConfig.platform}.account`]: storeConfig.api.storeId, - [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, - [`${storeConfig.platform}.environment`]: storeConfig.api.environment, - }), + resource: Resource.default().merge( + new Resource({ + 'service.name': 'faststore-api', + 'service.version': '1.12.38', + 'service.name_and_version': 'faststore-api@1.12.38', + platform: storeConfig.platform, + [`${storeConfig.platform}.account`]: storeConfig.api.storeId, + [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, + [`${storeConfig.platform}.environment`]: storeConfig.api.environment, + }) + ), }) // Create a new exporter From 41aff4d2f3556903c3ec6f912d69552aab30446d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 4 May 2023 10:55:41 -0300 Subject: [PATCH 40/49] architectural changes - next integration. Testing node_options different from opentel example --- instrumentation.js | 9 ++++ package.json | 4 +- src/instrumentation/middleware.ts | 76 +++++++++++++++++++++++++++++++ src/instrumentation/node.mjs | 70 ++++++++++++++++++++++++++++ src/pages/api/graphql.ts | 9 +--- src/server/index.ts | 48 +------------------ src/server/openTelemetry.ts | 18 ++------ tsconfig.json | 9 +++- 8 files changed, 171 insertions(+), 72 deletions(-) create mode 100644 instrumentation.js create mode 100644 src/instrumentation/middleware.ts create mode 100644 src/instrumentation/node.mjs diff --git a/instrumentation.js b/instrumentation.js new file mode 100644 index 00000000..1f9df140 --- /dev/null +++ b/instrumentation.js @@ -0,0 +1,9 @@ +async function register() { + // if (process.env.NEXT_RUNTIME === 'nodejs') { + const { setupTracerProvider } = await import('./src/instrumentation/node.mjs') + + setupTracerProvider() + // } +} + +register() diff --git a/package.json b/package.json index e2a6b161..f7add759 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "scripts": { "generate": "graphql-codegen", "build": "yarn partytown && next build", - "develop": "yarn partytown && next dev", + "develop": "yarn partytown && NODE_OPTIONS='-r ./instrumentation.js' next dev", "clean": "rm -r .next", - "serve": "next start", + "serve": "NODE_OPTIONS='-r ./instrumentation.js' next start", "test": "cypress open", "lhci": "lhci autorun", "format": "prettier --write \"**/*.{ts,js,tsx,jsx,json}\"", diff --git a/src/instrumentation/middleware.ts b/src/instrumentation/middleware.ts new file mode 100644 index 00000000..088ce8c5 --- /dev/null +++ b/src/instrumentation/middleware.ts @@ -0,0 +1,76 @@ +import type { NextApiHandler } from 'next' +import type { Exception, Span } from '@opentelemetry/api' +import { + context, + propagation, + SpanKind, + SpanStatusCode, + trace, +} from '@opentelemetry/api' +import { SemanticAttributes } from '@opentelemetry/semantic-conventions' + +const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { + return async (request, response) => { + const { headers, method, url = '', httpVersion } = request + const [target] = url.split('?') + + let span + const baggage = propagation.getBaggage(context.active()) + + if (baggage?.getEntry('synthetic_request')?.value === 'true') { + // if synthetic_request baggage is set, create a new trace linked to the span in context + // this span will look similar to the auto-instrumented HTTP span + const syntheticSpan = trace.getSpan(context.active()) as Span + const tracer = trace.getTracer(process.env.OTEL_SERVICE_NAME as string) + + span = tracer.startSpan(`HTTP ${method}`, { + root: true, + kind: SpanKind.SERVER, + links: [{ context: syntheticSpan.spanContext() }], + attributes: { + 'app.synthetic_request': true, + [SemanticAttributes.HTTP_TARGET]: target, + [SemanticAttributes.HTTP_METHOD]: method, + [SemanticAttributes.HTTP_USER_AGENT]: headers['user-agent'] || '', + [SemanticAttributes.HTTP_URL]: `${headers.host}${url}`, + [SemanticAttributes.HTTP_FLAVOR]: httpVersion, + }, + }) + } else { + // continue current trace/span + span = trace.getSpan(context.active()) as Span + } + + // if (request.query['sessionId'] != null) { + // span.setAttribute(AttributeNames.SESSION_ID, request.query['sessionId']); + // } + + let httpStatus = 200 + + try { + await runWithSpan(span, async () => handler(request, response)) + + httpStatus = response.statusCode + } catch (error) { + span.recordException(error as Exception) + span.setStatus({ code: SpanStatusCode.ERROR }) + + httpStatus = 500 + throw error + } finally { + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, httpStatus) + + if (baggage?.getEntry('synthetic_request')?.value === 'true') { + span.end() + } + } + } +} + +async function runWithSpan(parentSpan: Span, fn: () => Promise) { + const ctx = trace.setSpan(context.active(), parentSpan) + + return context.with(ctx, fn) +} + +export default InstrumentationMiddleware diff --git a/src/instrumentation/node.mjs b/src/instrumentation/node.mjs new file mode 100644 index 00000000..dff361f1 --- /dev/null +++ b/src/instrumentation/node.mjs @@ -0,0 +1,70 @@ +// Import the required OpenTelemetry libraries and plugins +import { + ConsoleSpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base' +import { Resource } from '@opentelemetry/resources' +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' +import { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base' +import { registerInstrumentations } from '@opentelemetry/instrumentation' +import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' + +import storeConfig from '../../store.config' + +let tracerProvider = null + +export function setupTracerProvider() { + const collectorOptions = { + // url is optional and can be omitted - default is http://localhost:4317 + url: 'opentelemetry-collector-beta.vtex.systems', + compression: CompressionAlgorithm.GZIP, + } + + // Create a new tracer provider + const localTraceProvider = new NodeTracerProvider({ + resource: Resource.default().merge( + new Resource({ + 'service.name': 'faststore-api', + 'service.version': '1.12.38', + 'service.name_and_version': 'faststore-api@1.12.38', + platform: storeConfig.platform, + [`${storeConfig.platform}.account`]: storeConfig.api.storeId, + [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, + [`${storeConfig.platform}.environment`]: storeConfig.api.environment, + }) + ), + }) + + // Create a new exporter + const exporter = new OTLPTraceExporter(collectorOptions) + + // Set up a span processor to export spans to Honeycomb + const spanProcessor = new SimpleSpanProcessor(exporter) + + // Set up a console exporter for debugging purposes + const consoleExporter = new ConsoleSpanExporter() + const debugProcessor = new SimpleSpanProcessor(consoleExporter) + + // Register the span processors with the tracer provider + localTraceProvider.addSpanProcessor(spanProcessor) + localTraceProvider.addSpanProcessor(debugProcessor) + + // Register the tracer provider with the OpenTelemetry API + localTraceProvider.register() + + registerInstrumentations({ + instrumentations: [getNodeAutoInstrumentations()], + tracerProvider: localTraceProvider, + }) + + return localTraceProvider +} + +export function getTracerProvider() { + if (!tracerProvider) { + tracerProvider = setupTracerProvider() + } + + return tracerProvider +} \ No newline at end of file diff --git a/src/pages/api/graphql.ts b/src/pages/api/graphql.ts index e4d2151d..d67c2203 100644 --- a/src/pages/api/graphql.ts +++ b/src/pages/api/graphql.ts @@ -1,14 +1,7 @@ import { isFastStoreError, stringifyCacheControl } from '@faststore/api' import type { NextApiHandler, NextApiRequest } from 'next' -import { registerInstrumentations } from '@opentelemetry/instrumentation' -import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' -import { execute, tracerProvider } from '../../server' - -registerInstrumentations({ - instrumentations: [getNodeAutoInstrumentations()], - tracerProvider, -}) +import { execute } from '../../server' const parseRequest = (request: NextApiRequest) => { const { operationName, variables, query } = diff --git a/src/server/index.ts b/src/server/index.ts index dc33229c..816f1d61 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -19,17 +19,10 @@ import { GraphQLError } from 'graphql' import { makeExecutableSchema, mergeSchemas } from '@graphql-tools/schema' import { mergeTypeDefs } from '@graphql-tools/merge' import type { Maybe, Options as APIOptions, CacheControl } from '@faststore/api' -// Import the required OpenTelemetry libraries and plugins -import { - ConsoleSpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base' -import { Resource } from '@opentelemetry/resources' -import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' import { useOpenTelemetry } from './openTelemetry' import persisted from '../../@generated/graphql/persisted.json' +import { getTracerProvider } from '../instrumentation/node.mjs' import storeConfig from '../../store.config' interface ExecuteOptions> { @@ -38,43 +31,6 @@ interface ExecuteOptions> { query?: string | null } -const collectorOptions = { - // url is optional and can be omitted - default is http://localhost:4317 - url: 'opentelemetry-collector-beta.vtex.systems', -} - -// Create a new tracer provider -export const tracerProvider = new NodeTracerProvider({ - resource: Resource.default().merge( - new Resource({ - 'service.name': 'faststore-api', - 'service.version': '1.12.38', - 'service.name_and_version': 'faststore-api@1.12.38', - platform: storeConfig.platform, - [`${storeConfig.platform}.account`]: storeConfig.api.storeId, - [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, - [`${storeConfig.platform}.environment`]: storeConfig.api.environment, - }) - ), -}) - -// Create a new exporter -const exporter = new OTLPTraceExporter(collectorOptions) - -// Set up a span processor to export spans to Honeycomb -const spanProcessor = new SimpleSpanProcessor(exporter) - -// Set up a console exporter for debugging purposes -const consoleExporter = new ConsoleSpanExporter() -const debugProcessor = new SimpleSpanProcessor(consoleExporter) - -// Register the span processors with the tracer provider -tracerProvider.addSpanProcessor(spanProcessor) -tracerProvider.addSpanProcessor(debugProcessor) - -// Register the tracer provider with the OpenTelemetry API -tracerProvider.register() - const persistedQueries = new Map(Object.entries(persisted)) // Creating type definitions @@ -153,7 +109,7 @@ const getEnvelop = async () => // envelop plugin doesn't support this change yet. This causes the class type to be incompatible, // even if they are the same. https://github.com/n1ru4l/envelop/issues/1610 // eslint-disable-next-line @typescript-eslint/no-explicit-any - tracerProvider as any, + getTracerProvider() as any, undefined, undefined, 'faststore-api' diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 68bbf08d..86833b08 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -4,11 +4,7 @@ import { useOnResolve } from '@envelop/on-resolve' import type { Attributes } from '@opentelemetry/api' import { SpanKind } from '@opentelemetry/api' import * as opentelemetry from '@opentelemetry/api' -import { - BasicTracerProvider, - ConsoleSpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base' +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' import type { Path } from 'graphql/jsutils/Path' // eslint-disable-next-line @@ -61,19 +57,11 @@ function getResolverSpanKey(path: Path) { export const useOpenTelemetry = ( options: TracingOptions, - tracingProvider?: BasicTracerProvider, + tracingProvider: BasicTracerProvider, spanKind: SpanKind = SpanKind.SERVER, spanAdditionalAttributes: Attributes = {}, - serviceName = 'graphql' + serviceName = 'faststore-api' ): Plugin => { - if (!tracingProvider) { - tracingProvider = new BasicTracerProvider() - tracingProvider.addSpanProcessor( - new SimpleSpanProcessor(new ConsoleSpanExporter()) - ) - tracingProvider.register() - } - const tracer = tracingProvider.getTracer(serviceName) let resolverContextsByRootSpans: Record< diff --git a/tsconfig.json b/tsconfig.json index 83f41fdc..a2ab8055 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,7 @@ "allowJs": true, "paths": { "src/*": ["src/*"], + "instrumentation.js": ["instrumentation.js"], "@generated/*": ["@generated/*"] }, "forceConsistentCasingInFileNames": true, @@ -20,6 +21,12 @@ "incremental": true, "isolatedModules": true }, - "include": ["*.d.ts", "src/**/*.ts", "src/**/*.tsx", "@generated/**/*.ts"], + "include": [ + "*.d.ts", + "src/**/*.ts", + "src/**/*.tsx", + "@generated/**/*.ts", + "src/instrumentation/node.mjs" + ], "exclude": ["node_modules", "public"] } From 029edc9b5a84487218d49965d4abd576bd929bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 4 May 2023 11:14:40 -0300 Subject: [PATCH 41/49] fix setupTracerProvider --- src/instrumentation/node.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/instrumentation/node.mjs b/src/instrumentation/node.mjs index dff361f1..6d92d8e7 100644 --- a/src/instrumentation/node.mjs +++ b/src/instrumentation/node.mjs @@ -58,6 +58,8 @@ export function setupTracerProvider() { tracerProvider: localTraceProvider, }) + tracerProvider = localTraceProvider + return localTraceProvider } From 39e33c3df7edbbf15ff20f9fb512932aa98e079f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Thu, 11 May 2023 14:08:50 -0300 Subject: [PATCH 42/49] Revert "add node auto instrumentations" This reverts commit 30c66ba2398ce0f49f5b8b43be0e633e623bc8dd. --- instrumentation.js | 9 - package.json | 6 +- src/instrumentation/middleware.ts | 76 --- src/instrumentation/node.mjs | 72 --- src/server/index.ts | 46 +- src/server/openTelemetry.ts | 18 +- tsconfig.json | 9 +- yarn.lock | 854 +----------------------------- 8 files changed, 74 insertions(+), 1016 deletions(-) delete mode 100644 instrumentation.js delete mode 100644 src/instrumentation/middleware.ts delete mode 100644 src/instrumentation/node.mjs diff --git a/instrumentation.js b/instrumentation.js deleted file mode 100644 index 1f9df140..00000000 --- a/instrumentation.js +++ /dev/null @@ -1,9 +0,0 @@ -async function register() { - // if (process.env.NEXT_RUNTIME === 'nodejs') { - const { setupTracerProvider } = await import('./src/instrumentation/node.mjs') - - setupTracerProvider() - // } -} - -register() diff --git a/package.json b/package.json index f7add759..f19a1a7f 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "scripts": { "generate": "graphql-codegen", "build": "yarn partytown && next build", - "develop": "yarn partytown && NODE_OPTIONS='-r ./instrumentation.js' next dev", + "develop": "yarn partytown && next dev", "clean": "rm -r .next", - "serve": "NODE_OPTIONS='-r ./instrumentation.js' next start", + "serve": "next start", "test": "cypress open", "lhci": "lhci autorun", "format": "prettier --write \"**/*.{ts,js,tsx,jsx,json}\"", @@ -35,14 +35,12 @@ "@faststore/graphql-utils": "^1.11.8", "@faststore/sdk": "^1.11.8", "@faststore/ui": "^1.12.23", - "@opentelemetry/auto-instrumentations-node": "^0.36.5", "@opentelemetry/exporter-trace-otlp-grpc": "^0.38.0", "@opentelemetry/instrumentation": "^0.38.0", "@opentelemetry/instrumentation-graphql": "^0.34.0", "@opentelemetry/instrumentation-http": "^0.38.0", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-trace-base": "^1.12.0", - "@opentelemetry/sdk-trace-node": "^1.12.0", "@types/react": "^18.0.14", "@vtex/client-cms": "^0.2.12", "@vtex/tsconfig": "0.6.0", diff --git a/src/instrumentation/middleware.ts b/src/instrumentation/middleware.ts deleted file mode 100644 index 088ce8c5..00000000 --- a/src/instrumentation/middleware.ts +++ /dev/null @@ -1,76 +0,0 @@ -import type { NextApiHandler } from 'next' -import type { Exception, Span } from '@opentelemetry/api' -import { - context, - propagation, - SpanKind, - SpanStatusCode, - trace, -} from '@opentelemetry/api' -import { SemanticAttributes } from '@opentelemetry/semantic-conventions' - -const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { - return async (request, response) => { - const { headers, method, url = '', httpVersion } = request - const [target] = url.split('?') - - let span - const baggage = propagation.getBaggage(context.active()) - - if (baggage?.getEntry('synthetic_request')?.value === 'true') { - // if synthetic_request baggage is set, create a new trace linked to the span in context - // this span will look similar to the auto-instrumented HTTP span - const syntheticSpan = trace.getSpan(context.active()) as Span - const tracer = trace.getTracer(process.env.OTEL_SERVICE_NAME as string) - - span = tracer.startSpan(`HTTP ${method}`, { - root: true, - kind: SpanKind.SERVER, - links: [{ context: syntheticSpan.spanContext() }], - attributes: { - 'app.synthetic_request': true, - [SemanticAttributes.HTTP_TARGET]: target, - [SemanticAttributes.HTTP_METHOD]: method, - [SemanticAttributes.HTTP_USER_AGENT]: headers['user-agent'] || '', - [SemanticAttributes.HTTP_URL]: `${headers.host}${url}`, - [SemanticAttributes.HTTP_FLAVOR]: httpVersion, - }, - }) - } else { - // continue current trace/span - span = trace.getSpan(context.active()) as Span - } - - // if (request.query['sessionId'] != null) { - // span.setAttribute(AttributeNames.SESSION_ID, request.query['sessionId']); - // } - - let httpStatus = 200 - - try { - await runWithSpan(span, async () => handler(request, response)) - - httpStatus = response.statusCode - } catch (error) { - span.recordException(error as Exception) - span.setStatus({ code: SpanStatusCode.ERROR }) - - httpStatus = 500 - throw error - } finally { - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, httpStatus) - - if (baggage?.getEntry('synthetic_request')?.value === 'true') { - span.end() - } - } - } -} - -async function runWithSpan(parentSpan: Span, fn: () => Promise) { - const ctx = trace.setSpan(context.active(), parentSpan) - - return context.with(ctx, fn) -} - -export default InstrumentationMiddleware diff --git a/src/instrumentation/node.mjs b/src/instrumentation/node.mjs deleted file mode 100644 index 6d92d8e7..00000000 --- a/src/instrumentation/node.mjs +++ /dev/null @@ -1,72 +0,0 @@ -// Import the required OpenTelemetry libraries and plugins -import { - ConsoleSpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base' -import { Resource } from '@opentelemetry/resources' -import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' -import { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base' -import { registerInstrumentations } from '@opentelemetry/instrumentation' -import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node' - -import storeConfig from '../../store.config' - -let tracerProvider = null - -export function setupTracerProvider() { - const collectorOptions = { - // url is optional and can be omitted - default is http://localhost:4317 - url: 'opentelemetry-collector-beta.vtex.systems', - compression: CompressionAlgorithm.GZIP, - } - - // Create a new tracer provider - const localTraceProvider = new NodeTracerProvider({ - resource: Resource.default().merge( - new Resource({ - 'service.name': 'faststore-api', - 'service.version': '1.12.38', - 'service.name_and_version': 'faststore-api@1.12.38', - platform: storeConfig.platform, - [`${storeConfig.platform}.account`]: storeConfig.api.storeId, - [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, - [`${storeConfig.platform}.environment`]: storeConfig.api.environment, - }) - ), - }) - - // Create a new exporter - const exporter = new OTLPTraceExporter(collectorOptions) - - // Set up a span processor to export spans to Honeycomb - const spanProcessor = new SimpleSpanProcessor(exporter) - - // Set up a console exporter for debugging purposes - const consoleExporter = new ConsoleSpanExporter() - const debugProcessor = new SimpleSpanProcessor(consoleExporter) - - // Register the span processors with the tracer provider - localTraceProvider.addSpanProcessor(spanProcessor) - localTraceProvider.addSpanProcessor(debugProcessor) - - // Register the tracer provider with the OpenTelemetry API - localTraceProvider.register() - - registerInstrumentations({ - instrumentations: [getNodeAutoInstrumentations()], - tracerProvider: localTraceProvider, - }) - - tracerProvider = localTraceProvider - - return localTraceProvider -} - -export function getTracerProvider() { - if (!tracerProvider) { - tracerProvider = setupTracerProvider() - } - - return tracerProvider -} \ No newline at end of file diff --git a/src/server/index.ts b/src/server/index.ts index 816f1d61..47edd1bf 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -19,10 +19,17 @@ import { GraphQLError } from 'graphql' import { makeExecutableSchema, mergeSchemas } from '@graphql-tools/schema' import { mergeTypeDefs } from '@graphql-tools/merge' import type { Maybe, Options as APIOptions, CacheControl } from '@faststore/api' +// Import the required OpenTelemetry libraries and plugins +import { + BasicTracerProvider, + ConsoleSpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base' +import { Resource } from '@opentelemetry/resources' +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' import { useOpenTelemetry } from './openTelemetry' import persisted from '../../@generated/graphql/persisted.json' -import { getTracerProvider } from '../instrumentation/node.mjs' import storeConfig from '../../store.config' interface ExecuteOptions> { @@ -31,6 +38,41 @@ interface ExecuteOptions> { query?: string | null } +const collectorOptions = { + // url is optional and can be omitted - default is http://localhost:4317 + url: 'opentelemetry-collector-beta.vtex.systems', +} + +// Create a new tracer provider +const tracerProvider = new BasicTracerProvider({ + resource: new Resource({ + 'service.name': 'faststore-api', + 'service.version': '1.12.38', + 'service.name_and_version': 'faststore-api@1.12.38', + platform: storeConfig.platform, + [`${storeConfig.platform}.account`]: storeConfig.api.storeId, + [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, + [`${storeConfig.platform}.environment`]: storeConfig.api.environment, + }), +}) + +// Create a new exporter +const exporter = new OTLPTraceExporter(collectorOptions) + +// Set up a span processor to export spans to Honeycomb +const spanProcessor = new SimpleSpanProcessor(exporter) + +// Set up a console exporter for debugging purposes +const consoleExporter = new ConsoleSpanExporter() +const debugProcessor = new SimpleSpanProcessor(consoleExporter) + +// Register the span processors with the tracer provider +tracerProvider.addSpanProcessor(spanProcessor) +tracerProvider.addSpanProcessor(debugProcessor) + +// Register the tracer provider with the OpenTelemetry API +tracerProvider.register() + const persistedQueries = new Map(Object.entries(persisted)) // Creating type definitions @@ -109,7 +151,7 @@ const getEnvelop = async () => // envelop plugin doesn't support this change yet. This causes the class type to be incompatible, // even if they are the same. https://github.com/n1ru4l/envelop/issues/1610 // eslint-disable-next-line @typescript-eslint/no-explicit-any - getTracerProvider() as any, + tracerProvider as any, undefined, undefined, 'faststore-api' diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 86833b08..68bbf08d 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -4,7 +4,11 @@ import { useOnResolve } from '@envelop/on-resolve' import type { Attributes } from '@opentelemetry/api' import { SpanKind } from '@opentelemetry/api' import * as opentelemetry from '@opentelemetry/api' -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' +import { + BasicTracerProvider, + ConsoleSpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base' import type { Path } from 'graphql/jsutils/Path' // eslint-disable-next-line @@ -57,11 +61,19 @@ function getResolverSpanKey(path: Path) { export const useOpenTelemetry = ( options: TracingOptions, - tracingProvider: BasicTracerProvider, + tracingProvider?: BasicTracerProvider, spanKind: SpanKind = SpanKind.SERVER, spanAdditionalAttributes: Attributes = {}, - serviceName = 'faststore-api' + serviceName = 'graphql' ): Plugin => { + if (!tracingProvider) { + tracingProvider = new BasicTracerProvider() + tracingProvider.addSpanProcessor( + new SimpleSpanProcessor(new ConsoleSpanExporter()) + ) + tracingProvider.register() + } + const tracer = tracingProvider.getTracer(serviceName) let resolverContextsByRootSpans: Record< diff --git a/tsconfig.json b/tsconfig.json index a2ab8055..83f41fdc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,7 +13,6 @@ "allowJs": true, "paths": { "src/*": ["src/*"], - "instrumentation.js": ["instrumentation.js"], "@generated/*": ["@generated/*"] }, "forceConsistentCasingInFileNames": true, @@ -21,12 +20,6 @@ "incremental": true, "isolatedModules": true }, - "include": [ - "*.d.ts", - "src/**/*.ts", - "src/**/*.tsx", - "@generated/**/*.ts", - "src/instrumentation/node.mjs" - ], + "include": ["*.d.ts", "src/**/*.ts", "src/**/*.tsx", "@generated/**/*.ts"], "exclude": ["node_modules", "public"] } diff --git a/yarn.lock b/yarn.lock index 0d878938..abee76d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1839,77 +1839,6 @@ protobufjs "^7.0.0" yargs "^16.2.0" -"@hapi/b64@5.x.x": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-5.0.0.tgz#b8210cbd72f4774985e78569b77e97498d24277d" - integrity sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw== - dependencies: - "@hapi/hoek" "9.x.x" - -"@hapi/boom@9.x.x", "@hapi/boom@^9.0.0": - version "9.1.4" - resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" - integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== - dependencies: - "@hapi/hoek" "9.x.x" - -"@hapi/bourne@2.x.x": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.1.0.tgz#66aff77094dc3080bd5df44ec63881f2676eb020" - integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== - -"@hapi/cryptiles@5.x.x": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-5.1.0.tgz#655de4cbbc052c947f696148c83b187fc2be8f43" - integrity sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA== - dependencies: - "@hapi/boom" "9.x.x" - -"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/iron@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-6.0.0.tgz#ca3f9136cda655bdd6028de0045da0de3d14436f" - integrity sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw== - dependencies: - "@hapi/b64" "5.x.x" - "@hapi/boom" "9.x.x" - "@hapi/bourne" "2.x.x" - "@hapi/cryptiles" "5.x.x" - "@hapi/hoek" "9.x.x" - -"@hapi/podium@^4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@hapi/podium/-/podium-4.1.3.tgz#91e20838fc2b5437f511d664aabebbb393578a26" - integrity sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g== - dependencies: - "@hapi/hoek" "9.x.x" - "@hapi/teamwork" "5.x.x" - "@hapi/validate" "1.x.x" - -"@hapi/teamwork@5.x.x": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@hapi/teamwork/-/teamwork-5.1.1.tgz#4d2ba3cac19118a36c44bf49a3a47674de52e4e4" - integrity sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@hapi/validate@1.x.x": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@hapi/validate/-/validate-1.1.3.tgz#f750a07283929e09b51aa16be34affb44e1931ad" - integrity sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2363,54 +2292,6 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA== -"@opentelemetry/auto-instrumentations-node@^0.36.5": - version "0.36.5" - resolved "https://registry.yarnpkg.com/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.36.5.tgz#2c2476fead72b7c27c67ef325accf761bc3a2caf" - integrity sha512-tps0UDvV9H9Cz+XlycvLHo/3t5zYwXVUq5mW2WLubfWUheZiRYKpo4F7va7oFt7r1RKRo19YJVuJVHOFkgJZdw== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/instrumentation-amqplib" "^0.32.2" - "@opentelemetry/instrumentation-aws-lambda" "^0.35.0" - "@opentelemetry/instrumentation-aws-sdk" "^0.34.0" - "@opentelemetry/instrumentation-bunyan" "^0.31.1" - "@opentelemetry/instrumentation-cassandra-driver" "^0.32.1" - "@opentelemetry/instrumentation-connect" "^0.31.1" - "@opentelemetry/instrumentation-dataloader" "^0.4.0" - "@opentelemetry/instrumentation-dns" "^0.31.2" - "@opentelemetry/instrumentation-express" "^0.32.1" - "@opentelemetry/instrumentation-fastify" "^0.31.1" - "@opentelemetry/instrumentation-fs" "^0.7.1" - "@opentelemetry/instrumentation-generic-pool" "^0.31.1" - "@opentelemetry/instrumentation-graphql" "^0.34.0" - "@opentelemetry/instrumentation-grpc" "^0.35.1" - "@opentelemetry/instrumentation-hapi" "^0.31.1" - "@opentelemetry/instrumentation-http" "^0.35.1" - "@opentelemetry/instrumentation-ioredis" "^0.34.0" - "@opentelemetry/instrumentation-knex" "^0.31.1" - "@opentelemetry/instrumentation-koa" "^0.34.3" - "@opentelemetry/instrumentation-lru-memoizer" "^0.32.1" - "@opentelemetry/instrumentation-memcached" "^0.31.1" - "@opentelemetry/instrumentation-mongodb" "^0.34.1" - "@opentelemetry/instrumentation-mongoose" "^0.32.1" - "@opentelemetry/instrumentation-mysql" "^0.33.0" - "@opentelemetry/instrumentation-mysql2" "^0.33.1" - "@opentelemetry/instrumentation-nestjs-core" "^0.32.2" - "@opentelemetry/instrumentation-net" "^0.31.1" - "@opentelemetry/instrumentation-pg" "^0.35.0" - "@opentelemetry/instrumentation-pino" "^0.33.1" - "@opentelemetry/instrumentation-redis" "^0.34.4" - "@opentelemetry/instrumentation-redis-4" "^0.34.3" - "@opentelemetry/instrumentation-restify" "^0.32.1" - "@opentelemetry/instrumentation-router" "^0.32.1" - "@opentelemetry/instrumentation-socket.io" "^0.33.1" - "@opentelemetry/instrumentation-tedious" "^0.5.1" - "@opentelemetry/instrumentation-winston" "^0.31.1" - -"@opentelemetry/context-async-hooks@1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.12.0.tgz#3d683dc80787c10ec3d805000267948e7b24b096" - integrity sha512-PmwAanPNWCyS9JYFzhzVzHgviLhc0UHjOwdth+hp3HgQQ9XZZNE635P8JhAUHZmbghW9/qQFafRWOS4VN9VVnQ== - "@opentelemetry/core@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.24.0.tgz#94033ebab10fdf008f8dae19c9547dadef30a2b2" @@ -2419,20 +2300,13 @@ "@opentelemetry/semantic-conventions" "0.24.0" semver "^7.1.3" -"@opentelemetry/core@1.12.0", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.8.0": +"@opentelemetry/core@1.12.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.12.0.tgz#afa32341b794045c54c979d4561de2f8f00d0da9" integrity sha512-4DWYNb3dLs2mSCGl65jY3aEgbvPWSHVQV/dmDWiYeWUrMakZQFcymqZOSUNZO0uDrEJoxMu8O5tZktX6UKFwag== dependencies: "@opentelemetry/semantic-conventions" "1.12.0" -"@opentelemetry/core@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.9.1.tgz#e343337e1a7bf30e9a6aef3ef659b9b76379762a" - integrity sha512-6/qon6tw2I8ZaJnHAQUUn4BqhTbTNRS0WP8/bA0ynaX+Uzp/DDbd0NS0Cq6TMlh8+mrlsyqDE7mO50nmv2Yvlg== - dependencies: - "@opentelemetry/semantic-conventions" "1.9.1" - "@opentelemetry/exporter-trace-otlp-grpc@^0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.38.0.tgz#0c2a40bf812a7ffbe8695d4a95f350d735b95075" @@ -2445,115 +2319,6 @@ "@opentelemetry/resources" "1.12.0" "@opentelemetry/sdk-trace-base" "1.12.0" -"@opentelemetry/instrumentation-amqplib@^0.32.2": - version "0.32.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.32.2.tgz#51d637875dddcbd810090bd505fe3230c22fe760" - integrity sha512-NSXvRKtJhBqkKQltmOicg0ChyAA5VfrKPa9WSrFDXvlw8Pjs9UiQQTEYbiBT3V5LSjJXH6CpNnQp6v2bqEldow== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-aws-lambda@^0.35.0": - version "0.35.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.35.0.tgz#3a1bdf7bcd0115f23ecc933e09142a905efb025c" - integrity sha512-x6nd1DEf/MYU57AMphwyxQLSPSNit6lnJAMNz9eQmQ0TdzGaWUsWUz2OgoZXzjF2D8hbaJHYaDvl1IUOk7cNVg== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/propagator-aws-xray" "^1.2.0" - "@opentelemetry/resources" "^1.8.0" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/aws-lambda" "8.10.81" - -"@opentelemetry/instrumentation-aws-sdk@^0.34.0": - version "0.34.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.34.0.tgz#322c5e9c0aa5dc8baf131e06aed94dcbbcaf79df" - integrity sha512-DT7Z08MVNOk/kyvztV1l4s1YMjW4qTbw852EhKkgpyYeKkxfGwdHqvv6+7MzOboJPXFQv/ADn1zcPtD8Lqia/Q== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/propagation-utils" "^0.29.2" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-bunyan@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.31.1.tgz#832580c2067c5a8b533330db4046e68a824ac228" - integrity sha512-y81y0L50ocziES+jVcsCM684R+1p3M64bfGwVumZI/cH3LNSlnvOd4xgQom4Ug+UzcYcP9RxjFURDQAvh8tnDw== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@types/bunyan" "1.8.7" - -"@opentelemetry/instrumentation-cassandra-driver@^0.32.1": - version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.32.1.tgz#3f8b505c76e8c9fc4bbed8ee2cc5b85426c5ba3f" - integrity sha512-28tbhM8I7Yp7PfSRnykxMFHKDsJC5efwOOoI/CehxIITSLOLrenmCEeNhSUfVUHzMIiqFiZXW/F0wurbAy38pg== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-connect@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.31.1.tgz#6bb60001919e54e1ebb26c614c6f793b2ab8ceee" - integrity sha512-72hDzkUIpq4TFrBi0yooNH/LVQbiGZ3wgL0uVGjvyTfN1ZOfoa5LhverWwtfAcjn1aniVU4xEL6aWqGl0A3nDQ== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/connect" "3.4.35" - -"@opentelemetry/instrumentation-dataloader@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.4.0.tgz#0683a7bd7bacb823efab9dd265810849ef89b866" - integrity sha512-t12pWySH7d5Kmo9CZDAPs22d40kzWHyvMFsQGysc7UVtBOXB+Vg7Bzt4j3R4jdal/WkGKRgXL920zhGmziuzxw== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - -"@opentelemetry/instrumentation-dns@^0.31.2": - version "0.31.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.31.2.tgz#535dc3b26f42c1a0914253e4bfc096d13d56ffb8" - integrity sha512-BBfMzbJGdEEz/OX2uPq0u9NAX2HL9KZ5x3PqwnJEqnUnRBr8hHJ9xbbY9WKRxZ55cGt8XeQpkj2NbRNkoy4hzQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - semver "^7.3.2" - -"@opentelemetry/instrumentation-express@^0.32.1": - version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.32.1.tgz#6ea5c62c19313c634987d15769dd2adb2b8a3b68" - integrity sha512-MR5ondudJaBG+GscjTWp3dm+mUacWgD9CnFs+EURNzd4EfHpPcxB9ZtFgUfzsp6FMJQZvOsgN5/fHQ4wmkf/fg== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/express" "4.17.13" - -"@opentelemetry/instrumentation-fastify@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.31.1.tgz#c323b91e591d08d765b1c30df139e478199514f2" - integrity sha512-oROINVKIvkkX3wQidPOYH78ruHwvfVBIi74svkeNaMzZ78xW2Djb/BiA5tXAujhi+fRGl2kwCG580iS9q5G7YA== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-fs@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.7.1.tgz#0ecb29edbe69d94d8a849dae8f481dbd047209a4" - integrity sha512-jAZhpUhnfdK8yjOcUHa6i5hnxACtUC25s6krqAkALojudd3OJudBtwymtIPWQiWsi9S2YuoAkGL+g8wDaMvc8g== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-generic-pool@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.31.1.tgz#e1514d61e33c5090a7bd03a41cb11b769e916ae4" - integrity sha512-FvoQKVpafcXvsJvIQU3QOFx/KBwbCblIGW83JWwoz2ymMu1coSJTveqN7cNVqEMR3BZ0eN4Ljgmq3AvimWXiTg== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/generic-pool" "^3.1.9" - "@opentelemetry/instrumentation-graphql@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.34.0.tgz#215161603fe78d39dd8b9a4bc66ae726afa73201" @@ -2561,34 +2326,6 @@ dependencies: "@opentelemetry/instrumentation" "^0.35.1" -"@opentelemetry/instrumentation-grpc@^0.35.1": - version "0.35.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.35.1.tgz#9518a6f75020db227d924f69d69e0e12a0911d99" - integrity sha512-EBmpCD+5QfUXPmupynjwxt3tUG5bgTrGZT12B0/+By9ZMLboDAryHjpiermanbPh5mTOq0q73YzruGQWU9TExg== - dependencies: - "@opentelemetry/instrumentation" "0.35.1" - "@opentelemetry/semantic-conventions" "1.9.1" - -"@opentelemetry/instrumentation-hapi@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.31.1.tgz#5b72844713b6dc1ca468d1eb6f9eeff2e8dce2df" - integrity sha512-kk/LdhIb/5AC48xHq1LzoV6My7TgEAANxsIXQwLiIUVBgM5yjH3bEb5TjyqbSVNvqsJ1aU5etQICjKbSNh+zlA== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/hapi__hapi" "20.0.9" - -"@opentelemetry/instrumentation-http@^0.35.1": - version "0.35.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.35.1.tgz#8a62e5ed737b51596a6799ecf4d70fe6ef1c26c4" - integrity sha512-tH92LznX5pcxpuTSb6A662IdldlMk8QTtneDN66h4nIT9ch98Gtu68GSSKjMoTR25GzH3opvPC9mX2xJamxMJw== - dependencies: - "@opentelemetry/core" "1.9.1" - "@opentelemetry/instrumentation" "0.35.1" - "@opentelemetry/semantic-conventions" "1.9.1" - semver "^7.3.5" - "@opentelemetry/instrumentation-http@^0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.38.0.tgz#0226ff67e9f79063aae771bfdb04389da457c828" @@ -2599,180 +2336,16 @@ "@opentelemetry/semantic-conventions" "1.12.0" semver "^7.3.5" -"@opentelemetry/instrumentation-ioredis@^0.34.0": - version "0.34.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.34.0.tgz#2361376682a9df52b63b9c492beb1aa681f0f84b" - integrity sha512-2oEOcsqBHGxt4fDV3lM8vxCZNKv2E7ChChSctu4IPem4ixT4vCBm1oEVDU2/6RcS6vnNS6XtbhCchQtKjUMQyA== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/redis-common" "^0.35.0" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/ioredis4" "npm:@types/ioredis@^4.28.10" - -"@opentelemetry/instrumentation-knex@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.31.1.tgz#ba6f560b2120900813e9be502d9daf2b07c708ba" - integrity sha512-X9SIdzmyyoknPwUB+/JfcF8VHujQWxXDNMKl3PpxU2PwEaKpXPKtOgdA7do08tSoULMI0xCftFIzBUFnWivPFQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-koa@^0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.34.3.tgz#bdcbb32df2886464937c2f985e8b6473b9b5759e" - integrity sha512-WHPl7MMmeFeM1Mg9kgCU64Zdc6MXwXXw9qnJV4Ajl/7zX6/XyGEatDcTMxaJAzVQKXSHR70lKfl8+/W/UP2wrw== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/koa" "2.13.6" - "@types/koa__router" "8.0.7" - -"@opentelemetry/instrumentation-lru-memoizer@^0.32.1": - version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.32.1.tgz#d340a95c0a5c9475dba12d7d0dd6b83d33bca21b" - integrity sha512-Lx6t3LN4nfe9UGtc7zVAJ0AwiftFTqHGY+Mf4qOWOPcsBoTgj4Z0tZ8dwX1DTYFyNmmFUyWKSXrEWshfhOjexQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - -"@opentelemetry/instrumentation-memcached@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.31.1.tgz#b80d3c4efb126f2d4105a8b8b7cced73ba02bdf2" - integrity sha512-uDiLLTsXlXLIvwYdl9+1AvxvWZkYrXAIvHwPOi6FthznnDIJtyxk0DgxusUaezhRUS9W1CqO5hFb1+8Hmg5DCQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/memcached" "^2.2.6" - -"@opentelemetry/instrumentation-mongodb@^0.34.1": - version "0.34.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.34.1.tgz#26f409f324cd6b972c9338704597a38c8f5128df" - integrity sha512-zRmotNkUQF6G9KWMEr2K2xZSqlaYKLY4HvV+DGHtOeJ1NbRUFk0V5XBNpB6nc4dXiEJUlGfXRyrQ/yu5TKiUuA== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-mongoose@^0.32.1": - version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.32.1.tgz#067d9fa999d6a25b1610f47edb9b7f31da934fbd" - integrity sha512-ibTM94JpTM6nbfARoql0wLWFOOchCIlDAhSibFNxQ+TImWLZxVQ6NpNnrtbrNoUoPD0xnB/ZlYR7as72Xu4Vyg== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-mysql2@^0.33.1": - version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.33.1.tgz#966c2809da28026b075233adb3529fea076482f7" - integrity sha512-ZyGg2KAaQRTctjCUIo+s25Yl4WDAvReF//EA0vKb9nKxMafon1NEbWeO1+qIE6xiXRXFUFn80hnf0N/YLu5gvw== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-mysql@^0.33.0": - version "0.33.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.33.0.tgz#ecfd871622e449853b92f88a0467e949f57e11ad" - integrity sha512-dU0phFuwtI81M7HyHbr/N4OllEAWYbQaOtSaJnDPMCxy4f840Np1kPzcTcAqd6zYIMhaO3B1nt7N2cP3ftu2RQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/mysql" "2.15.19" - mysql "2.18.1" - -"@opentelemetry/instrumentation-nestjs-core@^0.32.2": - version "0.32.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.32.2.tgz#ed924b117a8a570824a56d556d5a3fda336a6793" - integrity sha512-nUidxCbRnN+QUKArl5f8rE3hkYTsYlHEZRoWMqH9fFsVxOdZ4S6kT/HP55/Pj9+cDZ6XfBbelEOZjpsYeO2dYg== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-net@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-net/-/instrumentation-net-0.31.1.tgz#d4bcdc7412114f739130168b7a0a341944bab2a0" - integrity sha512-Gfks0UUi076w7aSTX1Q7KfnmlSqt0vMX0sc6jUWRd/BOQo/r84aS/DU0dP1FuPLyC4Vzpx9pPCnD37MRPhbkKA== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-pg@^0.35.0": - version "0.35.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.35.0.tgz#ebdb046539f7208be75d11a3818d4fa0db281538" - integrity sha512-vNcnILF9c+SJVZr0R0xKY9HzbATLwRVbKrrIbkD6Oj4uzfarlA6n2bF3LJAYGMMcDSdxUN+KaTMeW9byLKqqTg== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/pg" "8.6.1" - "@types/pg-pool" "2.0.3" - -"@opentelemetry/instrumentation-pino@^0.33.1": - version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.33.1.tgz#a9ea2fd7a830871d4ea73b811b801d6294d12e5a" - integrity sha512-Rajum1USKFE3khFSg7JRqoI+2BK2BpC2SiB0mjXdQ5s31IxaNuc6qiXdNz6mRzbdzMb/ydsJchlQiSNwB2iVeQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - -"@opentelemetry/instrumentation-redis-4@^0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.34.3.tgz#365d8d3d4a1fd2865366126f7955275aa64eb3cc" - integrity sha512-JdHK/retw8rttFkv393P07PEtxhaPLbWXWSJC8Y9kBAoZ+vFEMTM5z+vPQTfgcBQFveyy6v6GEa6H1ozd35z7w== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/redis-common" "^0.35.0" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-redis@^0.34.4": - version "0.34.4" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.34.4.tgz#3338f0e0e4c546460c771f023d6577faa50517a0" - integrity sha512-X1iX75gcQGImLRGZ7s7vbgKy3zIwgZO9fECq7jDnSjBoQ2WxTs8BMN/J2wqEE4SUawxzbHxQqcvAXEy3zA4r0A== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/redis-common" "^0.35.0" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-restify@^0.32.1": - version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.32.1.tgz#88c47b4409f9fad2f46ca61168502114c83b4202" - integrity sha512-eko2ESs93LA8G81+qaVsDsCMdvDvvtWJKILBbqJAUeas0WqdLvytcMv/KlXGrHkenTtHA+t1pyTOPw4uyxELsQ== - dependencies: - "@opentelemetry/core" "^1.8.0" - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-router@^0.32.1": - version "0.32.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-router/-/instrumentation-router-0.32.1.tgz#894b9df099de01ed84eb2b4ff02cf7c31ab8fed9" - integrity sha512-hLj2+Io3jaLfknaXOLhZc/ITs0St29Kf/LGIpfUA067JKtf9YSXndlfvI731nFf6O0KzKWc9loD/mKvc9W4bWQ== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-socket.io@^0.33.1": - version "0.33.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.33.1.tgz#75ff6163f008f415c6aa0ddc23f209782ae1f864" - integrity sha512-P5SkNaV0PtthVbn5h0E9XZsAAID33+4eTZDlo4jRPPBmFsPE9e3TXknlEc+xVkZVhPrdEvuAfZMKoFdr/DB5XA== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - -"@opentelemetry/instrumentation-tedious@^0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.5.1.tgz#66fb884a90bc272bfa46f66085fc039ff08fd2d8" - integrity sha512-iDDF/ZtxoV6eGzOjVj5qnHJ88RpTg7SbRnrFjPQ4E8HaNEjlnMnig3LjIKESV6GZpPO2DVciqIBWSfs8x34RIw== - dependencies: - "@opentelemetry/instrumentation" "^0.35.1" - "@opentelemetry/semantic-conventions" "^1.0.0" - "@types/tedious" "^4.0.6" - -"@opentelemetry/instrumentation-winston@^0.31.1": - version "0.31.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.31.1.tgz#4c666cb36a6d2ca1cb319c0280a3ca16ba5608ed" - integrity sha512-qPK89Fp5bI6+IGMm2J2+A4kmeRfvRdrfgdwYlXoMZhO4aLL6BL5thdPYkDmIKO4FIzoOmybg62H3lMAExUUAyA== +"@opentelemetry/instrumentation@0.38.0", "@opentelemetry/instrumentation@^0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.38.0.tgz#e97c6d4ea699006ec2541fd83b26a10f0edaada4" + integrity sha512-wr1WkIbzHGV+oz6SCme88D2c+zNG23COkCjcida8b3jIzX2lJafOpEHPDcbBF38F8ChkRSj/tVnx1wnYAXZvbA== dependencies: - "@opentelemetry/instrumentation" "^0.35.1" + require-in-the-middle "^6.0.0" + semver "^7.3.2" + shimmer "^1.2.1" -"@opentelemetry/instrumentation@0.35.1", "@opentelemetry/instrumentation@^0.35.1": +"@opentelemetry/instrumentation@^0.35.1": version "0.35.1" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.35.1.tgz#065bdbc4771137347e648eb4c6c6de6e9e97e4d1" integrity sha512-EZsvXqxenbRTSNsft6LDcrT4pjAiyZOx3rkDNeqKpwZZe6GmZtsXaZZKuDkJtz9fTjOGjDHjZj9/h80Ya9iIJw== @@ -2781,15 +2354,6 @@ semver "^7.3.2" shimmer "^1.2.1" -"@opentelemetry/instrumentation@0.38.0", "@opentelemetry/instrumentation@^0.38.0": - version "0.38.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.38.0.tgz#e97c6d4ea699006ec2541fd83b26a10f0edaada4" - integrity sha512-wr1WkIbzHGV+oz6SCme88D2c+zNG23COkCjcida8b3jIzX2lJafOpEHPDcbBF38F8ChkRSj/tVnx1wnYAXZvbA== - dependencies: - require-in-the-middle "^6.0.0" - semver "^7.3.2" - shimmer "^1.2.1" - "@opentelemetry/otlp-exporter-base@0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.38.0.tgz#803d0e29825023721963384a9c64c5db254d4cf1" @@ -2817,37 +2381,6 @@ "@opentelemetry/sdk-metrics" "1.12.0" "@opentelemetry/sdk-trace-base" "1.12.0" -"@opentelemetry/propagation-utils@^0.29.2": - version "0.29.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.29.2.tgz#faf548ee6008bc1a1e551c0599397cec0f8ecdc5" - integrity sha512-ynHFE2BMSZVK1Vq71qVJtdXQAt+pfYAYHHD+ZQYEKnkJN0F2GVMWz75JiHxh7wytt/maIqV9qcWxfjWFK1TUFw== - -"@opentelemetry/propagator-aws-xray@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.2.0.tgz#4d29e85b652755d105473a76d53d60d3a26b3f0a" - integrity sha512-KCNFXdv63c+dItes2pUPVd1QDPmfcx3AVwcgE28emSx6tPI71q11zpMTDAWKPU8J9GQAGXMDyGnRGhIgua40aw== - dependencies: - "@opentelemetry/core" "^1.0.0" - -"@opentelemetry/propagator-b3@1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.12.0.tgz#74d3e4b4889b1ae67a5aab0ca08afbce0a867f4d" - integrity sha512-WFcn98075QPc2zE1obhKydJHUehI5/HuLoelPEVwATj+487hjCwjHj9r2fgmQkWpvuNSB7CJaA0ys6qqq1N6lg== - dependencies: - "@opentelemetry/core" "1.12.0" - -"@opentelemetry/propagator-jaeger@1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.12.0.tgz#e477e8a63007734d18db6a764a440b37e9f0dd2d" - integrity sha512-ugtWF7GC6X5RIJ0+iMwW2iVAGNs206CAeq8XQ8OkJRg+v0lp4H0/i+gJ4hubTT8NIL5a3IxtIrAENPLIGdLucQ== - dependencies: - "@opentelemetry/core" "1.12.0" - -"@opentelemetry/redis-common@^0.35.0": - version "0.35.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.35.0.tgz#4676bff5d2e37a2063a44607f32383526029a5e2" - integrity sha512-VgA1RN3wsfx1J9rgVOHkMESV9mB/mrRBTr24KNHtBY4jl8goKe/lmV1Qjjs6EUP8F78E/YJhezQCx9EtBOVweg== - "@opentelemetry/resources@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.24.0.tgz#834e5a4d0a64ed4de085add8308be203959c44b4" @@ -2856,7 +2389,7 @@ "@opentelemetry/core" "0.24.0" "@opentelemetry/semantic-conventions" "0.24.0" -"@opentelemetry/resources@1.12.0", "@opentelemetry/resources@^1.12.0", "@opentelemetry/resources@^1.8.0": +"@opentelemetry/resources@1.12.0", "@opentelemetry/resources@^1.12.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.12.0.tgz#895394c727dc3e7e51d1d2cc50907ec07a626dca" integrity sha512-gunMKXG0hJrR0LXrqh7BVbziA/+iJBL3ZbXCXO64uY+SrExkwoyJkpiq9l5ismkGF/A20mDEV7tGwh+KyPw00Q== @@ -2882,33 +2415,16 @@ "@opentelemetry/resources" "1.12.0" "@opentelemetry/semantic-conventions" "1.12.0" -"@opentelemetry/sdk-trace-node@^1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.12.0.tgz#f9f35a44bf662884d49c63473ce8fb34acf7d413" - integrity sha512-PxpDemnNZLLeFNLAu95/K3QubjlaScXVjVQPlwPui65VRxIvxGVysnN7DFfsref+qoh1hI6nlrYSij43vxdm2w== - dependencies: - "@opentelemetry/context-async-hooks" "1.12.0" - "@opentelemetry/core" "1.12.0" - "@opentelemetry/propagator-b3" "1.12.0" - "@opentelemetry/propagator-jaeger" "1.12.0" - "@opentelemetry/sdk-trace-base" "1.12.0" - semver "^7.3.5" - "@opentelemetry/semantic-conventions@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.24.0.tgz#1028ef0e0923b24916158d80d2ddfd67ea8b6740" integrity sha512-a/szuMQV0Quy0/M7kKdglcbRSoorleyyOwbTNNJ32O+RBN766wbQlMTvdimImTmwYWGr+NJOni1EcC242WlRcA== -"@opentelemetry/semantic-conventions@1.12.0", "@opentelemetry/semantic-conventions@^1.0.0": +"@opentelemetry/semantic-conventions@1.12.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" integrity sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA== -"@opentelemetry/semantic-conventions@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.9.1.tgz#ad3367684a57879392513479e0a436cb2ac46dad" - integrity sha512-oPQdbFDmZvjXk5ZDoBGXG8B4tSB/qW5vQunJWQMFUBp7Xe8O1ByPANueJ+Jzg58esEBegyyxZ7LRmfJr7kFcFg== - "@opentelemetry/tracing@^0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.24.0.tgz#63077fe77b2f450442cb36710ea355db76f60faa" @@ -3115,23 +2631,6 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64" integrity sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw== -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -4132,65 +3631,16 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== -"@types/accepts@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== - dependencies: - "@types/node" "*" - "@types/aria-query@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== -"@types/aws-lambda@8.10.81": - version "8.10.81" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.81.tgz#6d405269aad82e05a348687631aa9a587cdbe158" - integrity sha512-C1rFKGVZ8KwqhwBOYlpoybTSRtxu2433ea6JaO3amc6ubEe08yQoFsPa9aU9YqvX7ppeZ25CnCtC4AH9mhtxsQ== - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bunyan@1.8.7": - version "1.8.7" - resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.7.tgz#63cc65b5ecff6217d1509409a575e7b991f80831" - integrity sha512-jaNt6xX5poSmXuDAkQrSqx2zkR66OrdRDuVnU8ldvn3k/Ci/7Sf5nooKspQWimDnw337Bzt/yirqSThTjvrHkg== - dependencies: - "@types/node" "*" - -"@types/connect@*", "@types/connect@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/content-disposition@*": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.5.tgz#650820e95de346e1f84e30667d168c8fd25aa6e3" - integrity sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA== - "@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== -"@types/cookies@*": - version "0.7.7" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" - integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - "@types/cypress@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@types/cypress/-/cypress-1.1.3.tgz#0a700c040d53e9e12b5af98e41d4a88c39f39b6a" @@ -4224,42 +3674,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== -"@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.33": - version "4.17.33" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" - integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/express@4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/generic-pool@^3.1.9": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@types/generic-pool/-/generic-pool-3.8.1.tgz#b9b25b2ba4733057fa5df1818352d3205c48e87b" - integrity sha512-eaMAbZS0EfKvaP5PUZ/Cdf5uJBO2t6T3RdvQTKuMqUwGhNpCnPAsKWEMyV+mCeCQG3UiHrtgdzni8X6DmhxRaQ== - dependencies: - generic-pool "*" - "@types/glob@*": version "8.1.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" @@ -4283,39 +3697,6 @@ dependencies: "@types/node" "*" -"@types/hapi__catbox@*": - version "10.2.4" - resolved "https://registry.yarnpkg.com/@types/hapi__catbox/-/hapi__catbox-10.2.4.tgz#4d0531a6c2d0e45024f724020d536041ef8ffe30" - integrity sha512-A6ivRrXD5glmnJna1UAGw87QNZRp/vdFO9U4GS+WhOMWzHnw+oTGkMvg0g6y1930CbeheGOCm7A1qHsqH7AXqg== - -"@types/hapi__hapi@20.0.9": - version "20.0.9" - resolved "https://registry.yarnpkg.com/@types/hapi__hapi/-/hapi__hapi-20.0.9.tgz#9d570846c96268266a14c970c13aeeaccfc8e172" - integrity sha512-fGpKScknCKZityRXdZgpCLGbm41R1ppFgnKHerfZlqOOlCX/jI129S6ghgBqkqCE8m9A0CIu1h7Ch04lD9KOoA== - dependencies: - "@hapi/boom" "^9.0.0" - "@hapi/iron" "^6.0.0" - "@hapi/podium" "^4.1.3" - "@types/hapi__catbox" "*" - "@types/hapi__mimos" "*" - "@types/hapi__shot" "*" - "@types/node" "*" - joi "^17.3.0" - -"@types/hapi__mimos@*": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz#4f8a1c58345fc468553708d3cb508724aa081bd9" - integrity sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ== - dependencies: - "@types/mime-db" "*" - -"@types/hapi__shot@*": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@types/hapi__shot/-/hapi__shot-4.1.2.tgz#d4011999a91e8101030fece1462fe99769455855" - integrity sha512-8wWgLVP1TeGqgzZtCdt+F+k15DWQvLG1Yv6ZzPfb3D5WIo5/S+GGKtJBVo2uNEcqabP5Ifc71QnJTDnTmw1axA== - dependencies: - "@types/node" "*" - "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -4333,28 +3714,11 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-assert@*": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" - integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== - "@types/http-cache-semantics@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/http-errors@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== - -"@types/ioredis4@npm:@types/ioredis@^4.28.10": - version "4.28.10" - resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.28.10.tgz#40ceb157a4141088d1394bb87c98ed09a75a06ff" - integrity sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ== - dependencies: - "@types/node" "*" - "@types/is-function@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.1.tgz#2d024eace950c836d9e3335a66b97960ae41d022" @@ -4404,39 +3768,6 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== - -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@2.13.6": - version "2.13.6" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.6.tgz#6dc14e727baf397310aa6f414ebe5d144983af42" - integrity sha512-diYUfp/GqfWBAiwxHtYJ/FQYIXhlEhlyaU7lB/bWQrx4Il9lCET5UwpFy3StOAohfsxxvEQ11qIJgT1j2tfBvw== - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/http-errors" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/koa__router@8.0.7": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@types/koa__router/-/koa__router-8.0.7.tgz#663d69d5ddebff5aaca27c0594430b3ba6ea20be" - integrity sha512-OB3Ax75nmTP+WR9AgdzA42DI7YmBtiNKN2g1Wxl+d5Dyek9SWt740t+ukwXSmv/jMBCUPyV3YEI93vZHgdP7UQ== - dependencies: - "@types/koa" "*" - "@types/lodash@^4.14.167": version "4.14.192" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285" @@ -4454,23 +3785,6 @@ dependencies: "@types/unist" "*" -"@types/memcached@^2.2.6": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@types/memcached/-/memcached-2.2.7.tgz#b3de026a11a4c0a18fb079cfeeaea10a41da20f9" - integrity sha512-ImJbz1i8pl+OnyhYdIDnHe8jAuM8TOwM/7VsciqhYX3IL0jPPUToAtVxklfcWFGYckahEYZxhd9FS0z3MM1dpA== - dependencies: - "@types/node" "*" - -"@types/mime-db@*": - version "1.43.1" - resolved "https://registry.yarnpkg.com/@types/mime-db/-/mime-db-1.43.1.tgz#c2a0522453bb9b6e84ee48b7eef765d19bcd519e" - integrity sha512-kGZJY+R+WnR5Rk+RPHUMERtb2qBRViIHCBdtUrY+NmwuGb8pQdfTqQiCKPrxpdoycl8KWm2DLdkpoSdt479XoQ== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== - "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -4481,13 +3795,6 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/mysql@2.15.19": - version "2.15.19" - resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.19.tgz#d158927bb7c1a78f77e56de861a3b15cae0e7aed" - integrity sha512-wSRg2QZv14CWcZXkgdvHbbV2ACufNy5EgI8mBBxnJIptchv7DBy/h53VMa2jDhyo0C9MO4iowE6z9vF8Ja1DkQ== - dependencies: - "@types/node" "*" - "@types/node-fetch@^2.5.7": version "2.6.3" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.3.tgz#175d977f5e24d93ad0f57602693c435c57ad7e80" @@ -4531,31 +3838,6 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== -"@types/pg-pool@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.3.tgz#3eb8df2933f617f219a53091ad4080c94ba1c959" - integrity sha512-fwK5WtG42Yb5RxAwxm3Cc2dJ39FlgcaNiXKvtTLAwtCn642X7dgel+w1+cLWwpSOFImR3YjsZtbkfjxbHtFAeg== - dependencies: - "@types/pg" "*" - -"@types/pg@*": - version "8.6.6" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.6.tgz#21cdf873a3e345a6e78f394677e3b3b1b543cb80" - integrity sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw== - dependencies: - "@types/node" "*" - pg-protocol "*" - pg-types "^2.2.0" - -"@types/pg@8.6.1": - version "8.6.1" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" - integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== - dependencies: - "@types/node" "*" - pg-protocol "*" - pg-types "^2.2.0" - "@types/pretty-hrtime@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" @@ -4566,16 +3848,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/qs@*", "@types/qs@^6.9.5": +"@types/qs@^6.9.5": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - "@types/react@^18.0.14": version "18.0.32" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.32.tgz#5e88b2af6833251d54ec7fe86d393224499f41d5" @@ -4595,14 +3872,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== -"@types/serve-static@*": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== - dependencies: - "@types/mime" "*" - "@types/node" "*" - "@types/set-cookie-parser@^2.4.0": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" @@ -4630,13 +3899,6 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== -"@types/tedious@^4.0.6": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@types/tedious/-/tedious-4.0.9.tgz#baa3892e45c63d7aac54d7bf5b01385d210ff19e" - integrity sha512-ipwFvfy9b2m0gjHsIX0D6NAAwGCKokzf5zJqUZHUGt+7uWVlBIy6n2eyMgiKQ8ChLFVxic/zwQUhjLYNzbHDRA== - dependencies: - "@types/node" "*" - "@types/uglify-js@*": version "3.17.1" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" @@ -5996,11 +5258,6 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -9730,11 +8987,6 @@ generate-function@^2.3.1: dependencies: is-property "^1.0.2" -generic-pool@*: - version "3.9.0" - resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4" - integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g== - gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -11660,17 +10912,6 @@ jiti@1.17.1: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.17.1.tgz#264daa43ee89a03e8be28c3d712ccc4eb9f1e8ed" integrity sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw== -joi@^17.3.0: - version "17.9.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" - integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - jose@^4.11.4: version "4.13.1" resolved "https://registry.yarnpkg.com/jose/-/jose-4.13.1.tgz#449111bb5ab171db85c03f1bd2cb1647ca06db1c" @@ -12953,16 +12194,6 @@ mute-stream@1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== -mysql@2.18.1: - version "2.18.1" - resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" - integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== - dependencies: - bignumber.js "9.0.0" - readable-stream "2.3.7" - safe-buffer "5.1.2" - sqlstring "2.3.1" - nan@^2.12.1: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" @@ -13995,27 +13226,6 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -pg-int8@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" - integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== - -pg-protocol@*: - version "1.6.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" - integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== - -pg-types@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" - integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== - dependencies: - pg-int8 "1.0.1" - postgres-array "~2.0.0" - postgres-bytea "~1.0.0" - postgres-date "~1.0.4" - postgres-interval "^1.1.0" - picocolors@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" @@ -14253,28 +13463,6 @@ postcss@^8.2.15, postcss@^8.3.11, postcss@^8.4.19, postcss@^8.4.4: picocolors "^1.0.0" source-map-js "^1.0.2" -postgres-array@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" - integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== - -postgres-bytea@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" - integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== - -postgres-date@~1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" - integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== - -postgres-interval@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" - integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== - dependencies: - xtend "^4.0.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -14862,19 +14050,6 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@2.3.7: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -15978,11 +15153,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sqlstring@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" - integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== - sshpk@^1.14.1: version "1.17.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" From 68e778b5866ea91fd3083bf2c2d4c2f0cea854a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Mon, 15 May 2023 14:02:53 -0300 Subject: [PATCH 43/49] test logs v0 --- package.json | 3 + src/server/index.ts | 48 +++++++++++++--- src/server/openTelemetry.ts | 62 +++++++++++++------- yarn.lock | 110 +++++++++++++++++++++++++++++++++++- 4 files changed, 194 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index f19a1a7f..caa1cd5d 100644 --- a/package.json +++ b/package.json @@ -35,11 +35,14 @@ "@faststore/graphql-utils": "^1.11.8", "@faststore/sdk": "^1.11.8", "@faststore/ui": "^1.12.23", + "@opentelemetry/api-logs": "^0.39.0", + "@opentelemetry/exporter-logs-otlp-grpc": "^0.39.1", "@opentelemetry/exporter-trace-otlp-grpc": "^0.38.0", "@opentelemetry/instrumentation": "^0.38.0", "@opentelemetry/instrumentation-graphql": "^0.34.0", "@opentelemetry/instrumentation-http": "^0.38.0", "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/sdk-logs": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.12.0", "@types/react": "^18.0.14", "@vtex/client-cms": "^0.2.12", diff --git a/src/server/index.ts b/src/server/index.ts index 47edd1bf..f4c8757e 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -27,6 +27,12 @@ import { } from '@opentelemetry/sdk-trace-base' import { Resource } from '@opentelemetry/resources' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc' +import { + LoggerProvider, + SimpleLogRecordProcessor, + ConsoleLogRecordExporter, +} from '@opentelemetry/sdk-logs' +import { OTLPLogsExporter } from '@opentelemetry/exporter-logs-otlp-grpc' import { useOpenTelemetry } from './openTelemetry' import persisted from '../../@generated/graphql/persisted.json' @@ -38,11 +44,16 @@ interface ExecuteOptions> { query?: string | null } -const collectorOptions = { +const honeycombCollectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 url: 'opentelemetry-collector-beta.vtex.systems', } +const openSearchCollectorOptions = { + // url is optional and can be omitted - default is http://localhost:4317 + url: 'developer-logs.opentelemetry-collector.vtex.systems:80', +} + // Create a new tracer provider const tracerProvider = new BasicTracerProvider({ resource: new Resource({ @@ -56,19 +67,41 @@ const tracerProvider = new BasicTracerProvider({ }), }) +const loggerProvider = new LoggerProvider({ + resource: new Resource({ + 'service.name': 'faststore-api', + 'service.version': '1.12.38', + 'service.name_and_version': 'faststore-api@1.12.38', + platform: storeConfig.platform, + [`${storeConfig.platform}.account`]: storeConfig.api.storeId, + [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, + [`${storeConfig.platform}.environment`]: storeConfig.api.environment, + 'Attributes.search_index': 'faststore_beta_api', + }), +}) + // Create a new exporter -const exporter = new OTLPTraceExporter(collectorOptions) +const honeycombExporter = new OTLPTraceExporter(honeycombCollectorOptions) +const openSearchExporter = new OTLPLogsExporter(openSearchCollectorOptions) + +// Set up a span processor to export spans to Honeycomb +const honeyCombSpanProcessor = new SimpleSpanProcessor(honeycombExporter) +const openSearchLogProcessor = new SimpleLogRecordProcessor(openSearchExporter) // Set up a span processor to export spans to Honeycomb -const spanProcessor = new SimpleSpanProcessor(exporter) +const consoleLogExporter = new ConsoleLogRecordExporter() +const consoleLogProcessor = new SimpleLogRecordProcessor(consoleLogExporter) // Set up a console exporter for debugging purposes -const consoleExporter = new ConsoleSpanExporter() -const debugProcessor = new SimpleSpanProcessor(consoleExporter) +// const consoleExporter = new ConsoleSpanExporter() +// const debugProcessor = new SimpleSpanProcessor(consoleExporter) // Register the span processors with the tracer provider -tracerProvider.addSpanProcessor(spanProcessor) -tracerProvider.addSpanProcessor(debugProcessor) +tracerProvider.addSpanProcessor(honeyCombSpanProcessor) +// tracerProvider.addSpanProcessor(debugProcessor) + +loggerProvider.addLogRecordProcessor(openSearchLogProcessor) +loggerProvider.addLogRecordProcessor(consoleLogProcessor) // Register the tracer provider with the OpenTelemetry API tracerProvider.register() @@ -152,6 +185,7 @@ const getEnvelop = async () => // even if they are the same. https://github.com/n1ru4l/envelop/issues/1610 // eslint-disable-next-line @typescript-eslint/no-explicit-any tracerProvider as any, + loggerProvider, undefined, undefined, 'faststore-api' diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 68bbf08d..f1ef17c7 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -4,12 +4,12 @@ import { useOnResolve } from '@envelop/on-resolve' import type { Attributes } from '@opentelemetry/api' import { SpanKind } from '@opentelemetry/api' import * as opentelemetry from '@opentelemetry/api' -import { - BasicTracerProvider, - ConsoleSpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base' +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' import type { Path } from 'graphql/jsutils/Path' +import type { LoggerProvider } from '@opentelemetry/sdk-logs' +import type { LogRecord } from '@opentelemetry/api-logs' +import { SeverityNumber } from '@opentelemetry/api-logs' +import { print } from 'graphql' // eslint-disable-next-line export enum AttributeName { @@ -61,20 +61,14 @@ function getResolverSpanKey(path: Path) { export const useOpenTelemetry = ( options: TracingOptions, - tracingProvider?: BasicTracerProvider, + tracingProvider: BasicTracerProvider, + loggerProvider: LoggerProvider, spanKind: SpanKind = SpanKind.SERVER, spanAdditionalAttributes: Attributes = {}, serviceName = 'graphql' ): Plugin => { - if (!tracingProvider) { - tracingProvider = new BasicTracerProvider() - tracingProvider.addSpanProcessor( - new SimpleSpanProcessor(new ConsoleSpanExporter()) - ) - tracingProvider.register() - } - const tracer = tracingProvider.getTracer(serviceName) + const logger = loggerProvider.getLogger(serviceName) let resolverContextsByRootSpans: Record< string, @@ -86,7 +80,7 @@ export const useOpenTelemetry = ( if (options.resolvers) { addPlugin( // eslint-disable-next-line - useOnResolve(({ info, context, args }) => { + useOnResolve(({ info, context }) => { if ( context && typeof context === 'object' && @@ -134,7 +128,6 @@ export const useOpenTelemetry = ( [AttributeName.RESOLVER_FIELD_NAME]: fieldName, [AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(), [AttributeName.RESOLVER_RESULT_TYPE]: returnType.toString(), - [AttributeName.RESOLVER_ARGS]: JSON.stringify(args || {}), 'meta.span.path': getResolverSpanKey(path), }, }, @@ -170,7 +163,6 @@ export const useOpenTelemetry = ( ...spanAdditionalAttributes, [AttributeName.EXECUTION_OPERATION_NAME]: args.operationName ?? undefined, - // [AttributeName.EXECUTION_OPERATION_DOCUMENT]: print(args.document), ...(options.variables ? { [AttributeName.EXECUTION_VARIABLES]: JSON.stringify( @@ -182,6 +174,8 @@ export const useOpenTelemetry = ( } ) + const executeContext = opentelemetry.context.active() + const resultCbs: OnExecuteHookResult = { onExecuteDone({ result }) { if (isAsyncIterable(result)) { @@ -201,20 +195,46 @@ export const useOpenTelemetry = ( resolverContextsByRootSpans = rest - if (result.data && options.result) { - executionSpan.setAttribute( - AttributeName.EXECUTION_RESULT, + const logRecord: LogRecord = { + context: executeContext, + timestamp: Date.now(), + attributes: { + [AttributeName.EXECUTION_OPERATION_NAME]: + args.operationName ?? undefined, + [AttributeName.EXECUTION_OPERATION_DOCUMENT]: print( + args.document + ), + [AttributeName.EXECUTION_VARIABLES]: JSON.stringify( + args.variableValues ?? {} + ), + ...loggerProvider.resource.attributes, + }, + } + + if ( + typeof result.data !== 'undefined' && + !(result.errors && result.errors.length > 0) + ) { + logRecord.severityNumber = SeverityNumber.INFO + logRecord.severityText = 'INFO' + logRecord.attributes![AttributeName.EXECUTION_RESULT] = JSON.stringify(result) - ) } if (result.errors && result.errors.length > 0) { + logRecord.severityNumber = SeverityNumber.ERROR + logRecord.severityText = 'ERROR' + logRecord.attributes![AttributeName.EXECUTION_ERROR] = + JSON.stringify(result.errors) + executionSpan.recordException({ name: AttributeName.EXECUTION_ERROR, message: JSON.stringify(result.errors), }) } + logger.emit(logRecord) + executionSpan.end() }, } diff --git a/yarn.lock b/yarn.lock index abee76d7..48afe9b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2287,6 +2287,20 @@ resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== +"@opentelemetry/api-logs@0.39.1": + version "0.39.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.39.1.tgz#3ea1e9dda11c35f993cb60dc5e52780b8175e702" + integrity sha512-9BJ8lMcOzEN0lu+Qji801y707oFO4xT3db6cosPvl+k7ItUHKN5ofWqtSbM9gbt1H4JJ/4/2TVrqI9Rq7hNv6Q== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api-logs@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.39.0.tgz#129afe04e9562e876695de7f81f624451631f514" + integrity sha512-uVuFkBv9WFC39K0vDse/I39XAzma9YJ8T8Jr5sUpHUEciul0QG5SEIC+g7Bi5gyAkhBque94W7fTQI/07yaETA== + dependencies: + "@opentelemetry/api" "^1.0.0" + "@opentelemetry/api@^1.0.0": version "1.4.1" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f" @@ -2307,6 +2321,24 @@ dependencies: "@opentelemetry/semantic-conventions" "1.12.0" +"@opentelemetry/core@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.13.0.tgz#7cdcb4176d260d279b0aa31456c4ce2ba7f410aa" + integrity sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw== + dependencies: + "@opentelemetry/semantic-conventions" "1.13.0" + +"@opentelemetry/exporter-logs-otlp-grpc@^0.39.1": + version "0.39.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.39.1.tgz#0161c8bfbfcf615dd6b6e3f06ddc29d70f2772a2" + integrity sha512-D+rI0+bsatOdH8TYULkBpOAlH0PjAMySzMjKZRQAdff2FUqCt5UqZBDVuiMupaZyFsc1oW5uWEAVRJIWRqVuOA== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.13.0" + "@opentelemetry/otlp-grpc-exporter-base" "0.39.1" + "@opentelemetry/otlp-transformer" "0.39.1" + "@opentelemetry/sdk-logs" "0.39.1" + "@opentelemetry/exporter-trace-otlp-grpc@^0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.38.0.tgz#0c2a40bf812a7ffbe8695d4a95f350d735b95075" @@ -2361,6 +2393,13 @@ dependencies: "@opentelemetry/core" "1.12.0" +"@opentelemetry/otlp-exporter-base@0.39.1": + version "0.39.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.39.1.tgz#650c9b23bbc6eb335c5f9b7f433aca87e9dc88a3" + integrity sha512-Pv5X8fbi6jD/RJBePyn7MnCSuE6MbPB6dl+7YYBWJ5RcMGYMwvLXjd4h2jWsPV2TSUg38H/RoSP0aXvQ06Y7iw== + dependencies: + "@opentelemetry/core" "1.13.0" + "@opentelemetry/otlp-grpc-exporter-base@0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.38.0.tgz#b0ce7db44ee36ef9ff1cb298bd6087139e12877f" @@ -2371,6 +2410,16 @@ "@opentelemetry/core" "1.12.0" "@opentelemetry/otlp-exporter-base" "0.38.0" +"@opentelemetry/otlp-grpc-exporter-base@0.39.1": + version "0.39.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.39.1.tgz#944f2ab384c08c37641c02f63381380d9d0714f4" + integrity sha512-u3ErFRQqQFKjjIMuwLWxz/tLPYInfmiAmSy//fGSCzCh2ZdJgqQjMOAxBgqFtCF2xFL+OmMhyuC2ThMzceGRWA== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.13.0" + "@opentelemetry/otlp-exporter-base" "0.39.1" + protobufjs "^7.2.2" + "@opentelemetry/otlp-transformer@0.38.0": version "0.38.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.38.0.tgz#0e759cf494b9c1cb7ee272ac6e936f9a2abf6514" @@ -2381,6 +2430,18 @@ "@opentelemetry/sdk-metrics" "1.12.0" "@opentelemetry/sdk-trace-base" "1.12.0" +"@opentelemetry/otlp-transformer@0.39.1": + version "0.39.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.39.1.tgz#6d83e33d2a031f9ae1dcaf29595eac25b681bebf" + integrity sha512-0hgVnXXz5efI382B/24NxD4b6Zxlh7nxCdJkxkdmQMbn0yRiwoq/ZT+QG8eUL6JNzsBAV1WJlF5aJNsL8skHvw== + dependencies: + "@opentelemetry/api-logs" "0.39.1" + "@opentelemetry/core" "1.13.0" + "@opentelemetry/resources" "1.13.0" + "@opentelemetry/sdk-logs" "0.39.1" + "@opentelemetry/sdk-metrics" "1.13.0" + "@opentelemetry/sdk-trace-base" "1.13.0" + "@opentelemetry/resources@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.24.0.tgz#834e5a4d0a64ed4de085add8308be203959c44b4" @@ -2397,6 +2458,30 @@ "@opentelemetry/core" "1.12.0" "@opentelemetry/semantic-conventions" "1.12.0" +"@opentelemetry/resources@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.13.0.tgz#436b33ea950004e66fce6575f2776a05faca7f8e" + integrity sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg== + dependencies: + "@opentelemetry/core" "1.13.0" + "@opentelemetry/semantic-conventions" "1.13.0" + +"@opentelemetry/sdk-logs@0.39.1": + version "0.39.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.39.1.tgz#888af05458af5d097d6263ade118e8db78f76f38" + integrity sha512-/gmgKfZ1ZVFporKuwsewqIyvaUIGpv76JZ7lBpHQQPb37IMpaXO6pdqFI4ebHAWfNIm3akMyhmdtzivcgF3lgw== + dependencies: + "@opentelemetry/core" "1.13.0" + "@opentelemetry/resources" "1.13.0" + +"@opentelemetry/sdk-logs@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.39.0.tgz#777c856560c2b4dfc498dbf6fc21bcc176ba0122" + integrity sha512-SIybnCMxWi8ugwKt0QGsDDcjs/25ZdWd0xrIFILkoWkEQiveV098RXCnsf3jc0cejM/MrSFdvKdsNYh5HPilTg== + dependencies: + "@opentelemetry/core" "1.13.0" + "@opentelemetry/resources" "1.13.0" + "@opentelemetry/sdk-metrics@1.12.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.12.0.tgz#52c135b8ca6af677a3e93b6721bc866a74c98b4b" @@ -2406,6 +2491,15 @@ "@opentelemetry/resources" "1.12.0" lodash.merge "4.6.2" +"@opentelemetry/sdk-metrics@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.13.0.tgz#4e859107a7a4389bcda7b37d3952bc7dd34211d7" + integrity sha512-MOjZX6AnSOqLliCcZUrb+DQKjAWXBiGeICGbHAGe5w0BB18PJIeIo995lO5JSaFfHpmUMgJButTPfJJD27W3Vg== + dependencies: + "@opentelemetry/core" "1.13.0" + "@opentelemetry/resources" "1.13.0" + lodash.merge "4.6.2" + "@opentelemetry/sdk-trace-base@1.12.0", "@opentelemetry/sdk-trace-base@^1.12.0": version "1.12.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.12.0.tgz#62b895dbb5900048a85e4899c38fec5585447d4b" @@ -2415,6 +2509,15 @@ "@opentelemetry/resources" "1.12.0" "@opentelemetry/semantic-conventions" "1.12.0" +"@opentelemetry/sdk-trace-base@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.13.0.tgz#096cc2759430d880c5d886e009df2605097403dc" + integrity sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg== + dependencies: + "@opentelemetry/core" "1.13.0" + "@opentelemetry/resources" "1.13.0" + "@opentelemetry/semantic-conventions" "1.13.0" + "@opentelemetry/semantic-conventions@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.24.0.tgz#1028ef0e0923b24916158d80d2ddfd67ea8b6740" @@ -2425,6 +2528,11 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.12.0.tgz#19c959bdb900986e74939d4227e757aa16936b91" integrity sha512-hO+bdeGOlJwqowUBoZF5LyP3ORUFOP1G0GRv8N45W/cztXbT2ZEXaAzfokRS9Xc9FWmYrDj32mF6SzH6wuoIyA== +"@opentelemetry/semantic-conventions@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.13.0.tgz#0290398b3eaebc6029c348988a78c3b688fe9219" + integrity sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw== + "@opentelemetry/tracing@^0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.24.0.tgz#63077fe77b2f450442cb36710ea355db76f60faa" @@ -13614,7 +13722,7 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -protobufjs@^7.0.0: +protobufjs@^7.0.0, protobufjs@^7.2.2: version "7.2.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2" integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg== From 24450150df6d2c24268aa34bf8c810a14334914c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 23 May 2023 15:07:49 -0300 Subject: [PATCH 44/49] fix error attributes --- src/server/openTelemetry.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index f1ef17c7..edfedb42 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -15,6 +15,7 @@ import { print } from 'graphql' export enum AttributeName { EXECUTION_ERROR = 'graphql.execute.error', EXECUTION_RESULT = 'graphql.execute.result', + RESOLVER_EXECUTION_ERROR = 'graphql.resolver.error', RESOLVER_EXCEPTION = 'graphql.resolver.exception', RESOLVER_FIELD_NAME = 'graphql.resolver.fieldName', RESOLVER_TYPE_NAME = 'graphql.resolver.typeName', @@ -142,6 +143,13 @@ export const useOpenTelemetry = ( return ({ result }) => { if (result instanceof Error) { + resolverSpan.setAttributes({ + error: true, + 'exception.category': + AttributeName.RESOLVER_EXECUTION_ERROR, + 'exception.message': result.message, + 'exception.type': result.name, + }) resolverSpan.recordException(result) } @@ -227,9 +235,10 @@ export const useOpenTelemetry = ( logRecord.attributes![AttributeName.EXECUTION_ERROR] = JSON.stringify(result.errors) - executionSpan.recordException({ - name: AttributeName.EXECUTION_ERROR, - message: JSON.stringify(result.errors), + executionSpan.setAttributes({ + error: true, + 'exception.category': AttributeName.EXECUTION_ERROR, + 'exception.message': JSON.stringify(result.errors), }) } From c8305bd9043d4105b7fe758da67d6ae65dc0c96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 23 May 2023 15:08:38 -0300 Subject: [PATCH 45/49] remove unused import --- src/server/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index f4c8757e..6cc0b4d1 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -22,7 +22,6 @@ import type { Maybe, Options as APIOptions, CacheControl } from '@faststore/api' // Import the required OpenTelemetry libraries and plugins import { BasicTracerProvider, - ConsoleSpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base' import { Resource } from '@opentelemetry/resources' @@ -76,7 +75,7 @@ const loggerProvider = new LoggerProvider({ [`${storeConfig.platform}.account`]: storeConfig.api.storeId, [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, [`${storeConfig.platform}.environment`]: storeConfig.api.environment, - 'Attributes.search_index': 'faststore_beta_api', + 'vtex.search_index': 'faststore_beta_api', }), }) From 11dea1461c9ee80fd74895cef4cb5c72104fe8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 23 May 2023 15:24:07 -0300 Subject: [PATCH 46/49] add more strategies --- src/server/index.ts | 4 +++- src/server/openTelemetry.ts | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/index.ts b/src/server/index.ts index 6cc0b4d1..08153c3f 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -50,7 +50,7 @@ const honeycombCollectorOptions = { const openSearchCollectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 - url: 'developer-logs.opentelemetry-collector.vtex.systems:80', + url: 'developer-logs.opentelemetry-collector.vtex.systems', } // Create a new tracer provider @@ -75,6 +75,8 @@ const loggerProvider = new LoggerProvider({ [`${storeConfig.platform}.account`]: storeConfig.api.storeId, [`${storeConfig.platform}.workspace`]: storeConfig.api.workspace, [`${storeConfig.platform}.environment`]: storeConfig.api.environment, + index: 'faststore_beta_api', + search_index: 'faststore_beta_api', 'vtex.search_index': 'faststore_beta_api', }), }) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index edfedb42..0d782508 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -207,6 +207,8 @@ export const useOpenTelemetry = ( context: executeContext, timestamp: Date.now(), attributes: { + type: 'log', + message: 'test message', [AttributeName.EXECUTION_OPERATION_NAME]: args.operationName ?? undefined, [AttributeName.EXECUTION_OPERATION_DOCUMENT]: print( From 89481aa82de98af0d45907dcfeba6e9719872f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 23 May 2023 15:55:33 -0300 Subject: [PATCH 47/49] testing more things --- src/server/openTelemetry.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index 0d782508..c70b7378 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -71,7 +71,7 @@ export const useOpenTelemetry = ( const tracer = tracingProvider.getTracer(serviceName) const logger = loggerProvider.getLogger(serviceName) - let resolverContextsByRootSpans: Record< + const resolverContextsByRootSpans: Record< string, Record > = {} @@ -196,16 +196,10 @@ export const useOpenTelemetry = ( return } - const rootContextSpanId = executionSpan.spanContext().spanId - - const { [rootContextSpanId]: _, ...rest } = - resolverContextsByRootSpans - - resolverContextsByRootSpans = rest - const logRecord: LogRecord = { context: executeContext, timestamp: Date.now(), + body: 'Heeeey!', attributes: { type: 'log', message: 'test message', From 6193a2b1a7fd1dfe3f7e937a84553ff5f22e6b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 23 May 2023 17:28:49 -0300 Subject: [PATCH 48/49] use https protocol --- src/server/index.ts | 2 +- src/server/openTelemetry.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/index.ts b/src/server/index.ts index 08153c3f..4e3653ba 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -50,7 +50,7 @@ const honeycombCollectorOptions = { const openSearchCollectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 - url: 'developer-logs.opentelemetry-collector.vtex.systems', + url: 'https://developer-logs.opentelemetry-collector.vtex.systems', } // Create a new tracer provider diff --git a/src/server/openTelemetry.ts b/src/server/openTelemetry.ts index c70b7378..e096c00d 100644 --- a/src/server/openTelemetry.ts +++ b/src/server/openTelemetry.ts @@ -220,14 +220,14 @@ export const useOpenTelemetry = ( !(result.errors && result.errors.length > 0) ) { logRecord.severityNumber = SeverityNumber.INFO - logRecord.severityText = 'INFO' + logRecord.severityText = 'Info' logRecord.attributes![AttributeName.EXECUTION_RESULT] = JSON.stringify(result) } if (result.errors && result.errors.length > 0) { logRecord.severityNumber = SeverityNumber.ERROR - logRecord.severityText = 'ERROR' + logRecord.severityText = 'Error' logRecord.attributes![AttributeName.EXECUTION_ERROR] = JSON.stringify(result.errors) From f475a6b9305f9224a3973feeeb6b7c55159c5a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8Dcaro=20Azevedo?= Date: Tue, 23 May 2023 17:41:49 -0300 Subject: [PATCH 49/49] trigget ci