diff --git a/.github/workflows/prospect-api.yml b/.github/workflows/prospect-api.yml index d58e4588..c05aacd7 100644 --- a/.github/workflows/prospect-api.yml +++ b/.github/workflows/prospect-api.yml @@ -6,7 +6,6 @@ on: - 'packages/**' - 'docker-compose.yml' - 'servers/prospect-api/**' - - 'lambdas/prospect-api-bridge-lambda/**' - 'pnpm-lock.yaml' - 'Dockerfile' - '.github/workflows/prospect-api.yml' @@ -18,7 +17,6 @@ on: - 'infrastructure/prospect-api/**' - 'packages/**' - 'servers/prospect-api/**' - - 'lambdas/prospect-api-bridge-lambda/**' - 'pnpm-lock.yaml' - 'Dockerfile' - '.github/workflows/prospect-api.yml' @@ -65,18 +63,6 @@ jobs: terraform-output: ${{needs.infrastructure.outputs.terraform-output}} secrets: inherit - sqs-lambda: - # this will reference the file below on the main branch - uses: pocket/pocket-monorepo/.github/workflows/reuse-build-and-push-lambda.yml@main - needs: [infrastructure] - with: - scope: prospect-api-bridge-aws_lambda - sentry-project: prospect-api - s3-bucket-pattern: pocket-prospectapi-{0}-sqs-bridge - codedeploy-app-name-pattern: ProspectAPI-{0}-Sqs-Bridge-Lambda - codedeploy-group-name-pattern: ProspectAPI-{0}-Sqs-Bridge-Lambda - function-name-pattern: ProspectAPI-{0}-Sqs-Bridge-Function - secrets: inherit sentry: if: github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main' # this will reference the file below on the main branch diff --git a/.syncpackrc b/.syncpackrc index 2b84416a..f0902346 100644 --- a/.syncpackrc +++ b/.syncpackrc @@ -21,14 +21,21 @@ "!dev" ], "pinVersion": "3.529.1", - "label": "AWS SDK Dependencies should all have the same version" + "label": "AWS SDK dependencies should all have the same version" }, { "dependencies": [ - "@sentry/**" + "@sentry/node" + ], + "pinVersion": "8.37.1", + "label": "Sentry node dependencies should all have the same version" + }, + { + "dependencies": [ + "@sentry/serverless" ], "pinVersion": "7.112.2", - "label": "AWS SDK Dependencies should all have the same version" + "label": "Sentry serverless (Lambda) dependencies should all have the same version" }, { "dependencies": [ diff --git a/README.md b/README.md index 7676a070..21648039 100644 --- a/README.md +++ b/README.md @@ -214,9 +214,61 @@ pnpm update pnpm build ``` -#### aws-sdk versions +## Package Synchronization -⚠ Keep aws-sdk versions in sync, because AWS sometimes introduces incompatibilities without notice. +We use [Syncpack](https://jamiemason.github.io/syncpack/guide/getting-started/) to keep package versions consistent across servers, lambdas, and shared packages. Outside of the consistent functional expecations of using the same package version in all places, it's important to keep some package groups in sync to mitigate cross-package bugs, e.g AWS and Prisma packages. -- When adding a new aws-sdk, pin it to the version used throughout the monorepo. -- When upgrading aws-sdk, upgrade it consistently throughout the monorepo. +The syncpack config can be found in the `./syncpackrc` file. + +There are two command line operations associated with Syncpack: + +1. `pnpm list-mismatches` will tell you if any packages are out of sync/in violation of the rules set in `.syncpackrc`. This should only happen if your current branch is changing packages/package versions. Our CI will error if the rules in `.syncpackrc` are in violation. + +2. `pnpm fix-mismatches` will automatically fix `package.json` files that are in violation of the rules set in `.syncpackrc` by changing package versions. This is a quick and easy way to perform an upgrade, but as with any operation that can change things at scale, be sure you check the result is what you expect. + +## Tracing (Servers Only - WIP) + +We leverage [Pocket's tracing package](https://www.npmjs.com/package/@pocket-tools/tracing) to perform traces in our `server` applications: + +- Collection API + + - [GCP Traces]() + - [GCP Logs](https://cloudlogging.app.goo.gl/3Ft9tbRDo3cHfC9K7) + - [Unleash feature flag](https://featureflags.getpocket.dev/projects/default/features/perm.content.tracing.collections) (Dev) + - [Unleash feature flag](https://featureflags.readitlater.com/projects/default/features/perm.content.tracing.collections) (Prod) + +- Curated Corpus API (coming soon) +- Prospect API (coming soon) + +Tracing is performed using Open Telemetry NPM packages that send trace data to a standalone collector ECS service in AWS, which in turn exports trace data to GCP. The Pocket tracing package also implements an +[Open Telemetry package](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) that hooks into the Winston logger (which we implement via the Pocket `ts-logger` package) to auto-forward log data to GCP. + +### Enable/Disable Tracing in Prod & Dev + +Tracing can be enabled and disabled using an Unleash feature flag, which exists per service implementing tracing. + +To enable and configure the feature flag: + +1. Visit the feature flag URL for the environment in question (linked above) +2. Toggle the `default` environment to "On" in the left hand "Enabled in environments" box +3. Expand the `default` environment in the main, right-hand panel +4. Click the ✎ pencil icon to edit the "Gradual rollout" strategy +5. Move the "Rolleout" slider to 100% +6. Click the "Variants" tab and adjust the "Payload" number to the sample rate you'd like for your traces + - In production, this should usually be 1% (0.01) to begin with, and can be increased slowly if needed +7. Click "Save strategy" +8. After some requests have been made to the service, go look at traces in GCP (using links above) + +To disable tracing on a service, simply toggle the `default` environment to "Off". + +### Local Tracing + +Local tracing is enabled by default and sends trace data to a Grafana Docker image. To view traces locally: + +1. Make sure the local service you want to trace has activity, e.g. by running a query in the Apollo Server Playground +2. Navigate to the Grafana docker image endpoint at `http://localhost:3000/explore` +3. Click "Explore" in the left hand menu +4. In the dropdown at the top left of the middle pane, select "Tempo" +5. In the main panel, select the "Service Graph" for "Query type" +6. Click the service you want to view traces for and select "View traces" +7. Trace away! diff --git a/docker-compose.yml b/docker-compose.yml index 44c1a802..72362e93 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,3 +52,30 @@ services: retries: 30 ports: - '9090:9090' + + otlpcollector: + image: grafana/otel-lgtm + ports: + # there are lots more ports available, but these are the only one's + # currently being used + - 4317:4317 # OTLP gRPC receiver + - 4318:4318 # OTLP http receiver + - 3000:3000 # Grafana + + + # Uncomment this if you want to run the collector locally and send to GCP instead of the one used for local development + # Make sure to have a service json in GOOGLE_APPLICATION_CREDENTIALS_JSON in the .env file + # otlpcollector: + # build: + # context: ./servers/otel-collector + # dockerfile: Dockerfile + # env_file: + # - .env + # environment: + # - DEPLOYMENT_ENVIRONMENT_NAME=local + # ports: + # # there are lots more ports available, but these are the only one's + # # currently being used + # - 4317:4317 # OTLP gRPC receiver + # - 4318:4318 # OTLP http receiver + # - 3000:3000 # Grafana diff --git a/infrastructure/collection-api/src/config/index.ts b/infrastructure/collection-api/src/config/index.ts index f2df67b5..cc3b9af8 100644 --- a/infrastructure/collection-api/src/config/index.ts +++ b/infrastructure/collection-api/src/config/index.ts @@ -14,10 +14,6 @@ const rds = { minCapacity: isDev ? 1 : 4, maxCapacity: isDev ? 1 : 128, }; -const githubConnectionArn = isDev - ? 'arn:aws:codestar-connections:us-east-1:410318598490:connection/7426c139-1aa0-49e2-aabc-5aef11092032' - : 'arn:aws:codestar-connections:us-east-1:996905175585:connection/5fa5aa2b-a2d2-43e3-ab5a-72ececfc1870'; -const branch = isDev ? 'dev' : 'main'; const eventBusName = `PocketEventBridge-${environment}-Shared-Event-Bus`; export const config = { @@ -30,11 +26,6 @@ export const config = { domain, graphqlVariant, rds, - codePipeline: { - githubConnectionArn, - repository: 'pocket/collection-api', - branch, - }, tags: { service: name, environment, @@ -42,5 +33,10 @@ export const config = { component_code: `pocket-${name.toLowerCase()}`, env_code: isDev ? 'dev' : 'prod', }, + tracing: { + url: isDev + ? 'https://otel-collector.getpocket.dev:443' + : 'https://otel-collector.readitlater.com:443', + }, eventBusName, }; diff --git a/infrastructure/collection-api/src/main.ts b/infrastructure/collection-api/src/main.ts index 5f31472b..163298ac 100644 --- a/infrastructure/collection-api/src/main.ts +++ b/infrastructure/collection-api/src/main.ts @@ -247,6 +247,15 @@ class CollectionAPI extends TerraformStack { name: 'EVENT_BUS_NAME', value: config.eventBusName, }, + { + name: 'OTLP_COLLECTOR_URL', + value: config.tracing.url, + }, + { + name: 'LOG_LEVEL', + // do not log http, graphql, or debug events + value: 'info', + }, ], logGroup: this.createCustomLogGroup('app'), logMultilinePattern: '^\\S.+', @@ -259,6 +268,14 @@ class CollectionAPI extends TerraformStack { name: 'DATABASE_URL', valueFrom: `${rds.secretARN}:database_url::`, }, + { + name: 'UNLEASH_ENDPOINT', + valueFrom: `arn:aws:ssm:${region.name}:${caller.accountId}:parameter/Shared/${config.environment}/UNLEASH_ENDPOINT`, + }, + { + name: 'UNLEASH_KEY', + valueFrom: `arn:aws:secretsmanager:${region.name}:${caller.accountId}:secret:${config.name}/${config.environment}/UNLEASH_KEY`, + }, ], }, ], @@ -302,6 +319,8 @@ class CollectionAPI extends TerraformStack { resources: [ `arn:aws:ssm:${region.name}:${caller.accountId}:parameter/${config.name}/${config.environment}`, `arn:aws:ssm:${region.name}:${caller.accountId}:parameter/${config.name}/${config.environment}/*`, + `arn:aws:ssm:${region.name}:${caller.accountId}:parameter/Shared/${config.environment}/*`, + `arn:aws:ssm:${region.name}:${caller.accountId}:parameter/Shared/${config.environment}`, ], effect: 'Allow', }, @@ -326,11 +345,6 @@ class CollectionAPI extends TerraformStack { 'logs:CreateLogStream', 'logs:DescribeLogStreams', 'logs:DescribeLogGroups', - 'xray:PutTraceSegments', - 'xray:PutTelemetryRecords', - 'xray:GetSamplingRules', - 'xray:GetSamplingTargets', - 'xray:GetSamplingStatisticSummaries', ], resources: ['*'], effect: 'Allow', diff --git a/infrastructure/corpus-scheduler-lambda/src/corpusSchedulerLambda.ts b/infrastructure/corpus-scheduler-lambda/src/corpusSchedulerLambda.ts index d201a7a8..2cf5c610 100644 --- a/infrastructure/corpus-scheduler-lambda/src/corpusSchedulerLambda.ts +++ b/infrastructure/corpus-scheduler-lambda/src/corpusSchedulerLambda.ts @@ -35,7 +35,7 @@ export class CorpusSchedulerSQSLambda extends Construct { lambda: { runtime: LAMBDA_RUNTIMES.NODEJS20, handler: 'index.handler', - timeout: 360, + timeout: 600, // Also update generateJwt expiration time when changing this. memorySizeInMb: 512, reservedConcurrencyLimit: 1, environment: { diff --git a/infrastructure/prospect-api/src/bridgeSqsLambda.ts b/infrastructure/prospect-api/src/bridgeSqsLambda.ts deleted file mode 100644 index 65467053..00000000 --- a/infrastructure/prospect-api/src/bridgeSqsLambda.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { Construct } from 'constructs'; -import { config } from './config'; -import { - LAMBDA_RUNTIMES, - PocketSQSWithLambdaTarget, - PocketVPC, -} from '@pocket-tools/terraform-modules'; -import { DataAwsSsmParameter } from '@cdktf/provider-aws/lib/data-aws-ssm-parameter'; -import { DataAwsRegion } from '@cdktf/provider-aws/lib/data-aws-region'; -import { DataAwsCallerIdentity } from '@cdktf/provider-aws/lib/data-aws-caller-identity'; -import { IamPolicy } from '@cdktf/provider-aws/lib/iam-policy'; -import { DataAwsIamPolicyDocument } from '@cdktf/provider-aws/lib/data-aws-iam-policy-document'; -import { IamUserPolicyAttachment } from '@cdktf/provider-aws/lib/iam-user-policy-attachment'; -import { IamUser } from '@cdktf/provider-aws/lib/iam-user'; - -export class BridgeSqsLambda extends Construct { - constructor( - scope: Construct, - private name: string, - dependencies: { - region: DataAwsRegion; - caller: DataAwsCallerIdentity; - }, - ) { - super(scope, name); - - const { region, caller } = dependencies; - const vpc = new PocketVPC(this, 'pocket-shared-vpc'); - - const eventBridgeArn = `arn:aws:events:${region.name}:${caller.accountId}:event-bus/${config.envVars.eventBusName}`; - - const sqsLambda = new PocketSQSWithLambdaTarget(this, 'bridge-sqs-lambda', { - name: `${config.prefix}-Sqs-Bridge`, - // batch size is 1 so SQS doesn't get smart and try to combine them - // (a combined message will mean a skipped candidate set from ML) - batchSize: 1, - batchWindow: 60, - sqsQueue: { - maxReceiveCount: 3, - visibilityTimeoutSeconds: 300, - }, - lambda: { - runtime: LAMBDA_RUNTIMES.NODEJS20, - handler: 'index.handler', - timeout: 120, - memorySizeInMb: 512, - reservedConcurrencyLimit: 1, - executionPolicyStatements: [ - { - actions: ['events:PutEvents'], - resources: [eventBridgeArn], - effect: 'Allow', - }, - ], - environment: { - EVENT_BRIDGE_BUS_NAME: config.envVars.eventBusName, - EVENT_BRIDGE_DETAIL_TYPE: config.envVars.eventDetailType, - SENTRY_DSN: this.getSentryDsn(), - GIT_SHA: this.getGitSha(), - ENVIRONMENT: - config.environment === 'Prod' ? 'production' : 'development', - }, - vpcConfig: { - securityGroupIds: vpc.internalSecurityGroups.ids, - subnetIds: vpc.privateSubnetIds, - }, - codeDeploy: { - region: vpc.region, - accountId: vpc.accountId, - }, - alarms: { - // We don't configure alarms for this lambda, and - // instead rely on Sentry to alert on failure. - }, - }, - tags: config.tags, - }); - - const iamUserPolicy = new IamPolicy(this, 'iam-sqs-policy', { - name: `IAM-${config.prefix}-QueuePolicy`, - policy: new DataAwsIamPolicyDocument(this, `iam_sqs_policy`, { - statement: [ - { - effect: 'Allow', - actions: ['events:PutEvents'], - resources: [eventBridgeArn], - condition: [ - // The shared EventBridge processes many types of events. Only allow prospect messages to be sent. - { - test: 'StringEquals', - variable: 'events:detail-type', - values: [config.envVars.eventDetailType], - }, - ], - }, - { - effect: 'Allow', - actions: [ - 'sqs:SendMessage', - 'sqs:GetQueueAttributes', - 'sqs:GetQueueUrl', - ], - resources: [sqsLambda.sqsQueueResource.arn], - }, - ], - }).json, - tags: config.tags, - }); - - const iamUser = new IamUser(this, 'iam_user', { - name: `${config.prefix}-Queue-User`, - tags: config.tags, - }); - - new IamUserPolicyAttachment(this, 'iam-sqs-user-policy-attachment', { - policyArn: iamUserPolicy.arn, - user: iamUser.name, - }); - } - - private getSentryDsn() { - const sentryDsn = new DataAwsSsmParameter(this, 'sentry-dsn', { - name: `/${config.name}/${config.environment}/SENTRY_DSN`, - }); - - return sentryDsn.value; - } - - private getGitSha() { - const serviceHash = new DataAwsSsmParameter(this, 'service-hash', { - name: `${config.circleCIPrefix}/SERVICE_HASH`, - }); - - return serviceHash.value; - } -} diff --git a/infrastructure/prospect-api/src/config/index.ts b/infrastructure/prospect-api/src/config/index.ts index 616570f8..2907f4e3 100644 --- a/infrastructure/prospect-api/src/config/index.ts +++ b/infrastructure/prospect-api/src/config/index.ts @@ -45,7 +45,6 @@ export const config = { }, envVars: { eventBusName: `PocketEventBridge-${environment}-Shared-Event-Bus`, - eventDetailType: 'prospect-generation', snowplowEndpoint, }, tags: { diff --git a/infrastructure/prospect-api/src/main.ts b/infrastructure/prospect-api/src/main.ts index 53376ead..0461c644 100644 --- a/infrastructure/prospect-api/src/main.ts +++ b/infrastructure/prospect-api/src/main.ts @@ -28,7 +28,7 @@ import { CloudwatchLogGroup } from '@cdktf/provider-aws/lib/cloudwatch-log-group import { config } from './config'; import { DynamoDB } from 'infrastructure-common'; -import { BridgeSqsLambda } from './bridgeSqsLambda'; +import { IamUser } from '@cdktf/provider-aws/lib/iam-user'; class ProspectAPI extends TerraformStack { constructor(scope: Construct, name: string) { @@ -61,7 +61,10 @@ class ProspectAPI extends TerraformStack { config.tags, ); - new BridgeSqsLambda(this, 'bridge-lambda', { region, caller }); + new IamUser(this, 'iam_user', { + name: `${config.prefix}-Queue-User`, + tags: config.tags, + }); this.createPocketAlbApplication({ s3: this.createS3Bucket(), diff --git a/lambdas/corpus-scheduler-lambda/src/utils.spec.ts b/lambdas/corpus-scheduler-lambda/src/utils.spec.ts index 47d7853d..d81601bc 100644 --- a/lambdas/corpus-scheduler-lambda/src/utils.spec.ts +++ b/lambdas/corpus-scheduler-lambda/src/utils.spec.ts @@ -69,7 +69,7 @@ describe('utils', function () { let expectedCreateApprovedCorpusItemApiOutput: CreateApprovedCorpusItemApiInput; let parserItem: UrlMetadata; const now = new Date('2021-01-01 10:20:30'); - const exp = new Date('2021-01-01 10:25:30'); + const exp = new Date('2021-01-01 10:30:30'); const emitter = getEmitter(); const tracker = getTracker(emitter, config.snowplow.appId); diff --git a/lambdas/corpus-scheduler-lambda/src/utils.ts b/lambdas/corpus-scheduler-lambda/src/utils.ts index bc5e0c0f..6c88b663 100644 --- a/lambdas/corpus-scheduler-lambda/src/utils.ts +++ b/lambdas/corpus-scheduler-lambda/src/utils.ts @@ -73,7 +73,7 @@ export function generateJwt(privateKey: any) { iss: config.jwt.iss, aud: config.jwt.aud, iat: now, - exp: now + 60 * 5, //expires in 5 mins + exp: now + 60 * 10, //expires in 10 mins. name: config.jwt.name, identities: [{ userId: config.jwt.userId }], // this group gives us full access in corpus API diff --git a/lambdas/prospect-api-bridge-lambda/.eslintrc.js b/lambdas/prospect-api-bridge-lambda/.eslintrc.js deleted file mode 100644 index e0e49bbc..00000000 --- a/lambdas/prospect-api-bridge-lambda/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: ['custom/lambda'], -}; \ No newline at end of file diff --git a/lambdas/prospect-api-bridge-lambda/jest.config.js b/lambdas/prospect-api-bridge-lambda/jest.config.js deleted file mode 100644 index ae85a274..00000000 --- a/lambdas/prospect-api-bridge-lambda/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testMatch: ['**/?(*.)+(spec|integration).ts'], - testPathIgnorePatterns: ['/dist/'], - setupFiles: ['./jest.setup.js'], -}; diff --git a/lambdas/prospect-api-bridge-lambda/jest.setup.js b/lambdas/prospect-api-bridge-lambda/jest.setup.js deleted file mode 100644 index fc8b9c7f..00000000 --- a/lambdas/prospect-api-bridge-lambda/jest.setup.js +++ /dev/null @@ -1,8 +0,0 @@ -// AWS_ENDPOINT is set in .docker/local.env -// this file is to provide a value when running tests outside of the container -process.env.AWS_ENDPOINT = process.env.AWS_ENDPOINT || 'http://localhost:4566'; -// https://github.com/facebook/react-native/issues/35701#issuecomment-1847579429 -Object.defineProperty(global, 'performance', { - writable: true, -}); - diff --git a/lambdas/prospect-api-bridge-lambda/package.json b/lambdas/prospect-api-bridge-lambda/package.json deleted file mode 100644 index 73923e3e..00000000 --- a/lambdas/prospect-api-bridge-lambda/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "prospect-api-bridge-aws_lambda", - "version": "1.0.0", - "description": "", - "main": "dist/index.js", - "scripts": { - "build": "rm -rf dist && tsc", - "test": "jest \"\\.spec\\.ts\"", - "lint": "eslint --fix-dry-run \"src/**/*.ts\"", - "format": "eslint --fix \"src/**/*.ts\"", - "prepare": "ts-patch install && typia patch" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@aws-sdk/client-eventbridge": "3.529.1", - "@aws-sdk/client-firehose": "3.529.1", - "@sentry/serverless": "7.112.2", - "typia": "^6.0.3", - "tslib": "2.7.0" - }, - "devDependencies": { - "@types/aws-lambda": "8.10.134", - "@types/jest": "29.5.12", - "eslint-config-custom": "workspace:*", - "jest": "29.7.0", - "ts-jest": "29.1.2", - "ts-node": "^10.9.2", - "ts-patch": "^3.1.2", - "tsconfig": "workspace:*", - "typescript": "5.6.2" - }, - "files": [ - "dist", - "package.json" - ] -} diff --git a/lambdas/prospect-api-bridge-lambda/src/config.ts b/lambdas/prospect-api-bridge-lambda/src/config.ts deleted file mode 100644 index e3c90b05..00000000 --- a/lambdas/prospect-api-bridge-lambda/src/config.ts +++ /dev/null @@ -1,22 +0,0 @@ -const config = { - environment: process.env.ENVIRONMENT || 'development', - aws: { - localEndpoint: process.env.AWS_ENDPOINT, - region: process.env.AWS_DEFAULT_REGION || 'us-east-1', - eventBridge: { - eventBusName: - process.env.EVENT_BRIDGE_BUS_NAME || - 'PocketEventBridge-local-Shared-Event-Bus', - source: 'prospect-events', - detailType: process.env.EVENT_BRIDGE_DETAIL_TYPE || 'prospect-generation', - }, - }, - sentry: { - // these values are inserted into the environment in - // .aws/src/sqsLambda.ts - dsn: process.env.SENTRY_DSN || '', - release: process.env.GIT_SHA || '', - }, -}; - -export default config; diff --git a/lambdas/prospect-api-bridge-lambda/src/index.spec.ts b/lambdas/prospect-api-bridge-lambda/src/index.spec.ts deleted file mode 100644 index 4f6ddfa4..00000000 --- a/lambdas/prospect-api-bridge-lambda/src/index.spec.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Context, SQSEvent } from 'aws-lambda'; -import { handler as processor } from './index'; -import { random, TypeGuardError } from 'typia'; -import { SQSRecord } from 'aws-lambda/trigger/sqs'; - -// Mock the EventBridge and Firehose send methods -const eventBridgeSendMock = jest.fn().mockResolvedValue({}); - -jest.mock('@aws-sdk/client-eventbridge', () => { - const originalModule = jest.requireActual('@aws-sdk/client-eventbridge'); - - return { - ...originalModule, - EventBridgeClient: jest.fn().mockImplementation(() => ({ - send: eventBridgeSendMock, - })), - }; -}); - -describe('processor', () => { - const mockContext = random(); - const mockCallback = () => {}; - - afterEach(() => jest.clearAllMocks()); - afterAll(() => jest.restoreAllMocks()); - - const mockProspectSet = { - id: 'aa7df642-6bb6-4fed-82bd-03c764d51c6c', - version: 3, - candidates: [ - { - scheduled_surface_guid: 'NEW_TAB_EN_US', - prospect_id: 'a598e9cc-5f8a-5062-aa16-dbca19a45134', - url: 'https://science.nasa.gov/directorates/smd/astrophysics-division/how-nasa-chases-and-investigates-bright-cosmic-blips/', - prospect_source: 'TIMESPENT', - save_count: 438, - predicted_topic: 'SCIENCE', - rank: 1, - }, - { - scheduled_surface_guid: 'NEW_TAB_EN_US', - prospect_id: '9cc1ca00-6216-5a12-895b-37c48245fba2', - url: 'https://www.scientificamerican.com/article/how-long-does-it-really-take-to-form-a-habit/', - prospect_source: 'TIMESPENT', - save_count: 0, - predicted_topic: 'HEALTH_FITNESS', - rank: 2, - }, - ], - type: 'prospect', - flow: 'ConstraintScheduleProspectsFlow', - run: '109321', - expires_at: 1706732555, - }; - - describe('validation', () => { - it('throws SyntaxError for invalid JSON', async () => { - const invalidEvent: SQSEvent = { - Records: [{ ...random(), body: 'definitely not json :)' }], - }; - - await expect( - processor(invalidEvent, mockContext, mockCallback), - ).rejects.toThrow(SyntaxError); - }); - - it('throws TypeGuardError for an invalid version', async () => { - // Generate an SQSEvent with an invalid body. - const invalidEvent: SQSEvent = { - Records: [ - { - ...random(), - body: JSON.stringify({ ...mockProspectSet, version: 123 }), - }, - ], - }; - - // Expect the processor to throw a TypeGuardError - await expect( - processor(invalidEvent, mockContext, mockCallback), - ).rejects.toThrow(TypeGuardError); - }); - - it('throws TypeGuardError for an invalid candidate set type', async () => { - // Generate an SQSEvent with an invalid body. - const invalidEvent: SQSEvent = { - Records: [ - { - ...random(), - body: JSON.stringify({ - ...mockProspectSet, - type: 'recommendation', - }), - }, - ], - }; - - // Expect the processor to throw a TypeGuardError - await expect( - processor(invalidEvent, mockContext, mockCallback), - ).rejects.toThrow(TypeGuardError); - }); - }); - - describe('EventBridge', () => { - it('sends a valid prospect set to EventBridge', async () => { - const sqsEvent: SQSEvent = { - Records: [ - { - ...random(), - body: JSON.stringify(mockProspectSet), - }, - ], - }; - - await processor(sqsEvent, mockContext, mockCallback); - - expect(eventBridgeSendMock).toHaveBeenCalledWith( - expect.objectContaining({ - input: { - Entries: [ - { - EventBusName: 'PocketEventBridge-local-Shared-Event-Bus', - Source: 'prospect-events', - DetailType: 'prospect-generation', - Detail: sqsEvent.Records[0].body, - }, - ], - }, - }), - ); - }); - }); -}); diff --git a/lambdas/prospect-api-bridge-lambda/src/index.ts b/lambdas/prospect-api-bridge-lambda/src/index.ts deleted file mode 100644 index 05d3a46b..00000000 --- a/lambdas/prospect-api-bridge-lambda/src/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { SQSEvent, SQSHandler } from 'aws-lambda'; -import * as Sentry from '@sentry/serverless'; - -import config from './config'; -import { - EventBridgeClient, - PutEventsCommand, -} from '@aws-sdk/client-eventbridge'; -import { ProspectCandidateSet } from './types'; -import { assert } from 'typia'; - -Sentry.AWSLambda.init({ - dsn: config.sentry.dsn, - release: config.sentry.release, - environment: config.environment, -}); - -/** - * @param event data from an SQS message - should be an array of prospect - * objects - */ -const processor: SQSHandler = async (event: SQSEvent): Promise => { - // this is the (odd?) format of an SQS message - const body = event.Records[0].body; - console.log('body:'); - console.log(body); - - // Validate that body is a SqsProspectSet. If not, throws TypeGuardError to Sentry. - const data = JSON.parse(body); - assert(data); - - // Send the json-encoded body to EventBridge. - await sendToEventBridge(body); // From EventBridge prospects will go to prospect-api-translation-lambda. -}; - -/** - * @param body String to be sent to the EventBridge bus defined in config. - */ -async function sendToEventBridge(body: string) { - const putEventsCommand = new PutEventsCommand({ - Entries: [ - { - EventBusName: config.aws.eventBridge.eventBusName, - Source: config.aws.eventBridge.source, - DetailType: config.aws.eventBridge.detailType, - Detail: body, - }, - ], - }); - const eventBridgeClient = new EventBridgeClient({}); - - await eventBridgeClient.send(putEventsCommand); -} - -// the actual function has to be wrapped in order for sentry to work -export const handler = Sentry.AWSLambda.wrapHandler(processor); diff --git a/lambdas/prospect-api-bridge-lambda/src/types.ts b/lambdas/prospect-api-bridge-lambda/src/types.ts deleted file mode 100644 index fdd67637..00000000 --- a/lambdas/prospect-api-bridge-lambda/src/types.ts +++ /dev/null @@ -1,62 +0,0 @@ -// this is the raw data from metaflow/sqs -export interface SqsProspect { - prospect_id: string; - scheduled_surface_guid: string; - predicted_topic: string; - prospect_source: string; - url: string; - save_count: number; - rank: number; -} - -export enum CandidateType { - /** - * Prospect candidates are items that can be shown to curators for review in the curation admin tool. - */ - PROSPECT = 'prospect', - /** - * The recommendation candidate set type is _probably_ not used anymore. It was used in the past to generate - * recommendation candidate sets in Metaflow for Pocket Home and Pocket Explore Topic Pages. - * It's included here to keep the schema - */ - RECOMMENDATION = 'recommendation', -} - -export enum CandidateSetVersion { - V3 = 3, -} - -export interface CandidateSet { - /** - * ID for the prospect candidate set as a whole - */ - id: string; - /** - * Used to distinguish SQS schema versions. Currently equal to 3. - */ - version: CandidateSetVersion; - /** - * The prospects in this set. - */ - candidates: SqsProspect[]; - type: CandidateType; - /** - * Metaflow flow name - */ - flow: string; - /** - * Metaflow run id - */ - run: string; - /** - * Unix time in seconds at which the prospect set expires. - */ - expires_at: number; -} - -export interface ProspectCandidateSet extends Omit { - /** - * The type for a prospect candidate set should be 'prospect'. - */ - type: CandidateType.PROSPECT; -} diff --git a/lambdas/prospect-api-bridge-lambda/tsconfig.json b/lambdas/prospect-api-bridge-lambda/tsconfig.json deleted file mode 100644 index 88f8e9a5..00000000 --- a/lambdas/prospect-api-bridge-lambda/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "tsconfig/lambda.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "plugins": [ - { - "transform": "typia/lib/transform" - } - ], - "strictNullChecks": true, - "strict": true - }, - "exclude": [ - "node_modules", - "**/*.spec.ts", - "**/*.integration.ts", - "jest.config.js", - "jest.setup.js" - ], - "include": [ - "src/**/*.ts" - ] -} \ No newline at end of file diff --git a/packages/content-common/package.json b/packages/content-common/package.json index 1874687d..6c6718ea 100644 --- a/packages/content-common/package.json +++ b/packages/content-common/package.json @@ -24,7 +24,7 @@ "@snowplow/node-tracker": "3.5.0", "got": "11.8.6", "tslib": "2.7.0", - "@sentry/node": "7.112.2" + "@sentry/node": "8.37.1" }, "devDependencies": { "@types/jest": "29.5.12", diff --git a/packages/prospectapi-common/package.json b/packages/prospectapi-common/package.json index 32d46265..8961b50a 100644 --- a/packages/prospectapi-common/package.json +++ b/packages/prospectapi-common/package.json @@ -26,7 +26,7 @@ "@aws-sdk/lib-dynamodb": "3.529.1", "@aws-sdk/util-dynamodb": "3.529.1", "content-common": "workspace:*", - "@sentry/node": "7.112.2", + "@sentry/node": "8.37.1", "cross-fetch": "3.1.5", "fetch-retry": "5.0.6", "graphql-tag": "2.12.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d38894f5..81566b23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,13 +41,13 @@ importers: version: 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@pocket-tools/terraform-modules': specifier: 5.14.2 - version: 5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) cdktf: specifier: 0.20.8 version: 0.20.8(constructs@10.3.0) cdktf-cli: specifier: 0.20.8 - version: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: specifier: 10.3.0 version: 10.3.0 @@ -84,13 +84,13 @@ importers: version: 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@pocket-tools/terraform-modules': specifier: 5.14.2 - version: 5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) cdktf: specifier: 0.20.8 version: 0.20.8(constructs@10.3.0) cdktf-cli: specifier: 0.20.8 - version: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: specifier: 10.3.0 version: 10.3.0 @@ -127,13 +127,13 @@ importers: version: 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@pocket-tools/terraform-modules': specifier: 5.14.2 - version: 5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) cdktf: specifier: 0.20.8 version: 0.20.8(constructs@10.3.0) cdktf-cli: specifier: 0.20.8 - version: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: specifier: 10.3.0 version: 10.3.0 @@ -170,13 +170,13 @@ importers: version: 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@pocket-tools/terraform-modules': specifier: 5.14.2 - version: 5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) cdktf: specifier: 0.20.8 version: 0.20.8(constructs@10.3.0) cdktf-cli: specifier: 0.20.8 - version: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: specifier: 10.3.0 version: 10.3.0 @@ -216,13 +216,13 @@ importers: version: 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@pocket-tools/terraform-modules': specifier: 5.14.2 - version: 5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) cdktf: specifier: 0.20.8 version: 0.20.8(constructs@10.3.0) cdktf-cli: specifier: 0.20.8 - version: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: specifier: 10.3.0 version: 10.3.0 @@ -262,7 +262,7 @@ importers: version: 3.4.4 node-fetch: specifier: ^2.6.7 - version: 2.7.0 + version: 2.7.0(encoding@0.1.13) tslib: specifier: 2.7.0 version: 2.7.0 @@ -310,52 +310,6 @@ importers: specifier: 5.6.2 version: 5.6.2 - lambdas/prospect-api-bridge-lambda: - dependencies: - '@aws-sdk/client-eventbridge': - specifier: 3.529.1 - version: 3.529.1 - '@aws-sdk/client-firehose': - specifier: 3.529.1 - version: 3.529.1 - '@sentry/serverless': - specifier: 7.112.2 - version: 7.112.2 - tslib: - specifier: 2.7.0 - version: 2.7.0 - typia: - specifier: ^6.0.3 - version: 6.12.0(typescript@5.6.2) - devDependencies: - '@types/aws-lambda': - specifier: 8.10.134 - version: 8.10.134 - '@types/jest': - specifier: 29.5.12 - version: 29.5.12 - eslint-config-custom: - specifier: workspace:* - version: link:../../packages/eslint-config-custom - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@22.9.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.2)) - ts-jest: - specifier: 29.1.2 - version: 29.1.2(@babel/core@7.26.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.9.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.2)))(typescript@5.6.2) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@22.9.0)(typescript@5.6.2) - ts-patch: - specifier: ^3.1.2 - version: 3.2.1 - tsconfig: - specifier: workspace:* - version: link:../../packages/tsconfig - typescript: - specifier: 5.6.2 - version: 5.6.2 - lambdas/prospect-translation-lambda: dependencies: '@aws-sdk/client-dynamodb': @@ -411,8 +365,8 @@ importers: packages/content-common: dependencies: '@sentry/node': - specifier: 7.112.2 - version: 7.112.2 + specifier: 8.37.1 + version: 8.37.1 '@snowplow/node-tracker': specifier: 3.5.0 version: 3.5.0 @@ -437,7 +391,7 @@ importers: version: 2.4.7(typescript@5.8.0-dev.20241114) node-fetch: specifier: ^2.6.7 - version: 2.7.0 + version: 2.7.0(encoding@0.1.13) ts-jest: specifier: 29.1.2 version: 29.1.2(@babel/core@7.26.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@22.9.0)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.8.0-dev.20241114)))(typescript@5.8.0-dev.20241114) @@ -491,13 +445,13 @@ importers: version: 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@pocket-tools/terraform-modules': specifier: 5.14.2 - version: 5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) cdktf: specifier: 0.20.8 version: 0.20.8(constructs@10.3.0) cdktf-cli: specifier: 0.20.8 - version: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + version: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: specifier: 10.3.0 version: 10.3.0 @@ -527,14 +481,14 @@ importers: specifier: 3.529.1 version: 3.529.1(@aws-sdk/client-dynamodb@3.529.1) '@sentry/node': - specifier: 7.112.2 - version: 7.112.2 + specifier: 8.37.1 + version: 8.37.1 content-common: specifier: workspace:* version: link:../content-common cross-fetch: specifier: 3.1.5 - version: 3.1.5 + version: 3.1.5(encoding@0.1.13) fetch-retry: specifier: 5.0.6 version: 5.0.6 @@ -595,10 +549,10 @@ importers: dependencies: '@apollo/server': specifier: 4.11.0 - version: 4.11.0(graphql@16.9.0) + version: 4.11.0(encoding@0.1.13)(graphql@16.9.0) '@apollo/server-plugin-response-cache': specifier: 4.1.3 - version: 4.1.3(@apollo/server@4.11.0(graphql@16.9.0))(graphql@16.9.0) + version: 4.1.3(@apollo/server@4.11.0(encoding@0.1.13)(graphql@16.9.0))(graphql@16.9.0) '@apollo/subgraph': specifier: 2.9.0 version: 2.9.0(graphql@16.9.0) @@ -610,22 +564,28 @@ importers: version: 3.529.1(@aws-sdk/client-s3@3.529.1) '@pocket-tools/apollo-utils': specifier: 3.5.0 - version: 3.5.0 + version: 3.5.0(encoding@0.1.13) '@pocket-tools/event-bridge': specifier: 1.7.1 version: 1.7.1 + '@pocket-tools/feature-flags-client': + specifier: 1.0.0 + version: 1.0.0 + '@pocket-tools/sentry': + specifier: 1.0.0 + version: 1.0.0(@sentry/node@8.37.1) + '@pocket-tools/tracing': + specifier: 1.8.9 + version: 1.8.9(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(encoding@0.1.13) '@pocket-tools/ts-logger': - specifier: 1.9.4 - version: 1.9.4 + specifier: 1.9.6 + version: 1.9.6 '@prisma/client': specifier: 5.22.0 version: 5.22.0(prisma@5.22.0) '@sentry/node': - specifier: 7.112.2 - version: 7.112.2 - '@sentry/tracing': - specifier: 7.112.2 - version: 7.112.2 + specifier: 8.37.1 + version: 8.37.1 content-common: specifier: workspace:* version: link:../../packages/content-common @@ -725,10 +685,10 @@ importers: dependencies: '@apollo/server': specifier: 4.11.0 - version: 4.11.0(graphql@16.9.0) + version: 4.11.0(encoding@0.1.13)(graphql@16.9.0) '@apollo/server-plugin-response-cache': specifier: 4.1.3 - version: 4.1.3(@apollo/server@4.11.0(graphql@16.9.0))(graphql@16.9.0) + version: 4.1.3(@apollo/server@4.11.0(encoding@0.1.13)(graphql@16.9.0))(graphql@16.9.0) '@apollo/subgraph': specifier: 2.9.0 version: 2.9.0(graphql@16.9.0) @@ -746,19 +706,16 @@ importers: version: 3.1.0(@prisma/client@5.22.0(prisma@5.22.0)) '@pocket-tools/apollo-utils': specifier: 3.5.0 - version: 3.5.0 + version: 3.5.0(encoding@0.1.13) '@pocket-tools/ts-logger': - specifier: 1.9.4 - version: 1.9.4 + specifier: 1.9.6 + version: 1.9.6 '@prisma/client': specifier: 5.22.0 version: 5.22.0(prisma@5.22.0) '@sentry/node': - specifier: 7.112.2 - version: 7.112.2 - '@sentry/tracing': - specifier: 7.112.2 - version: 7.112.2 + specifier: 8.37.1 + version: 8.37.1 '@snowplow/node-tracker': specifier: 3.5.0 version: 3.5.0 @@ -861,7 +818,7 @@ importers: dependencies: '@apollo/server': specifier: 4.11.0 - version: 4.11.0(graphql@16.9.0) + version: 4.11.0(encoding@0.1.13)(graphql@16.9.0) '@apollo/subgraph': specifier: 2.9.0 version: 2.9.0(graphql@16.9.0) @@ -876,13 +833,13 @@ importers: version: 3.529.1(@aws-sdk/client-dynamodb@3.529.1) '@pocket-tools/apollo-utils': specifier: 3.5.0 - version: 3.5.0 + version: 3.5.0(encoding@0.1.13) '@pocket-tools/ts-logger': - specifier: 1.9.4 - version: 1.9.4 + specifier: 1.9.6 + version: 1.9.6 '@sentry/node': - specifier: 7.112.2 - version: 7.112.2 + specifier: 8.37.1 + version: 8.37.1 '@snowplow/node-tracker': specifier: 3.5.0 version: 3.5.0 @@ -1128,10 +1085,6 @@ packages: resolution: {integrity: sha512-gg0SQIaDVHtuhK7XzqpgHuQ8U91S2P9wi+DCVO75l+8mc3U+7WChOmMx5AenpYpvRlXJZ/1YexwmAbmi1oDAqQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-firehose@3.529.1': - resolution: {integrity: sha512-3CuaN9txx0BxG79FTs2HR/2zoAKmIni1V0G+josmI2XHsL2ZPdRMkyuQ8sW/YDV+dEgfe/J9nhYLg01Wta6vmw==} - engines: {node: '>=14.0.0'} - '@aws-sdk/client-s3@3.529.1': resolution: {integrity: sha512-ZpvyO4w3XWo/OjXLd3fm7CLcKUUYcyady9qzTnKKSnp8a2NqO7UvU/1zhYdm+yyy8TR/9t7sDy+q6AYd4Nsr8g==} engines: {node: '>=14.0.0'} @@ -1901,6 +1854,15 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@grpc/grpc-js@1.12.2': + resolution: {integrity: sha512-bgxdZmgTrJZX50OjyVwz3+mNEnCTNkh3cIqGPWVNeW9jX6bn1ZkU80uPd+67/ZpIJIjRQ9qaHCjhavyoWYxumg==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.13': + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -2080,6 +2042,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsii/check-node@1.104.0': resolution: {integrity: sha512-5rAn4y11APxq69DmTKtAACmDuOymcTiz29CE7s0AeWA5jzpxBRhkaj8xwixiSQtkoBFk+Vpoi2eNctCvwLdFaw==} engines: {node: '>= 14.17.0'} @@ -2121,6 +2086,14 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@npmcli/agent@2.2.2': + resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@npmcli/fs@3.1.1': + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -2138,6 +2111,10 @@ packages: resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==} engines: {node: '>=14'} + '@opentelemetry/api-logs@0.54.1': + resolution: {integrity: sha512-tFOyYT8tFRSuUc+pEXnHG99270y7K8MSBLQSPiYBJ/0cgCp+8KmSej4joBfah0JoXAwbPzMCom3ri0xsiYbLvg==} + engines: {node: '>=14'} + '@opentelemetry/api-logs@0.54.2': resolution: {integrity: sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==} engines: {node: '>=14'} @@ -2146,6 +2123,12 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@opentelemetry/auto-instrumentations-node@0.52.0': + resolution: {integrity: sha512-J9SgX7NOpTvQ7itvlOlHP3lTlsMWtVh5WQSHUSTlg2m3A9HlZBri2DtZ8QgNj8rYWe0EQxQ3TQ3H6vabfun4vw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.4.1 + '@opentelemetry/context-async-hooks@1.27.0': resolution: {integrity: sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==} engines: {node: '>=14'} @@ -2164,24 +2147,132 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/exporter-logs-otlp-grpc@0.54.1': + resolution: {integrity: sha512-eiaQcADHRorxXRtpk6AhSiwYBJbDh2DgZMmNhoob9Bkzd8pHWa12j583CJd8e3p+Ia/VHcdloWLuPXQKqk5S3g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-http@0.54.1': + resolution: {integrity: sha512-DIv6ZdMYSbp/mF3Vai2/VV4dAcTPSNvPyS/lLRsBWzdSiaG0bubfpJxDK119AkZy0KKlWGVmc1hWe4x13DQa0g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-logs-otlp-proto@0.54.1': + resolution: {integrity: sha512-o/2CVYICQGgTsnKlohcIj306atLc4SH5YfVPJMnPfQngPNMYWFrmCw8sjXh+XH9tAEfwrPAOREXeUKnTex97xA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-grpc@0.54.1': + resolution: {integrity: sha512-RlfOHleGh2iRMjUBQXi41HAUZrpHGCmVHYQ9QsOOOCsWc3Jg40KbtRYC78aKxDZJtDGtZpS8D/CM1BrXHtIe/Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-metrics-otlp-http@0.54.1': + resolution: {integrity: sha512-xdyMzXzgfObaSKUidjvrF+PsjI7JK211vSBhgMe8fm7btVUhLDF3HqaGcdwKTj5dy3jcQfJML+CwajvTjw8wCw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-grpc@0.54.1': + resolution: {integrity: sha512-kCSN4gi0qn2GVfkAmuNhpIAvPU2Y09Zq/c+AGJCRDRQXerf48+OWWRo4e+MzcTJpVnaAA+R+duVXfGPyK8TObw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-http@0.54.1': + resolution: {integrity: sha512-yencb6HQ0ImSuMsR8RR+FtxkzJcJhy759/oAPDRUFowbncJHRK7vlty35hQeOhdzi3F/TzQhkzaCa8QGm/VTUw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-trace-otlp-proto@0.54.1': + resolution: {integrity: sha512-LhpN0GtaOfx7Y6Zq13B5+XT27d67QbTnmOCFcLTjAwn93pQvEnSRkwCFMnmN+PuHyLSwAN2qAO3w6CCcCRqo/A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/exporter-zipkin@1.27.0': + resolution: {integrity: sha512-eGMY3s4QprspFZojqsuQyQpWNFpo+oNVE/aosTbtvAlrJBAlvXcwwsOROOHOd8Y9lkU4i0FpQW482rcXkgwCSw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/id-generator-aws-xray@1.2.2': + resolution: {integrity: sha512-IKTqub5m/yI9+Cn4LJS+GbQrG7Ode9OWAmfJENmCMFTR5J2qGM7VOFaNpQFMICr7Wo8SUtgoJNbTxaQZ9AdMMA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + '@opentelemetry/instrumentation-amqplib@0.42.0': resolution: {integrity: sha512-fiuU6OKsqHJiydHWgTRQ7MnIrJ2lEqsdgFtNIH4LbAUJl/5XmrIeoDzDnox+hfkgWK65jsleFuQDtYb5hW1koQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-amqplib@0.43.0': + resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-aws-lambda@0.46.0': + resolution: {integrity: sha512-rNmhTC1e1qQD4jw+TZSHlpLYNhrkbKA0P5rlqPpTVHqZXHQctu9+dity2lLBh4DlFKt4p/ibVDLVDoBqjvetKA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-aws-sdk@0.45.0': + resolution: {integrity: sha512-3EGgC0LFZuFfXcOeslhXHhsiInVhhN046YQsYIPflsicAk7v0wN946sZKWuerEfmqx/kFXOsbOeI1SkkTRmqWQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-bunyan@0.42.0': + resolution: {integrity: sha512-GBh6ybwKmFZjc86SyHVx72jHg+4pFPaXT3IZgJ4QtnMsMf0/q5m2aHAjid+yakmEkApsnRWX8pJ8nkl1e+6mag==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-cassandra-driver@0.42.0': + resolution: {integrity: sha512-35I9Gw4BeSs9NPe7fugu9e/mWKaapc/N1wounHnGt259/Q3ISGMOQRrOwIBw+x/XJygJvn4Ss1c+r5h89TsVAw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-connect@0.40.0': resolution: {integrity: sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-cucumber@0.10.0': + resolution: {integrity: sha512-5sT6Ap3W7StEL0Oax/vd1YTEcTPTefx+9myzkKrr72hxzFzSooGRCxlU3sfPwZqWptUV7+QWTMd7SqGEEPnE/w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + '@opentelemetry/instrumentation-dataloader@0.12.0': resolution: {integrity: sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-dataloader@0.13.0': + resolution: {integrity: sha512-wbU3WdgUAXljEIY2nfpkqID/VH70ThnES8mZZHKCZlV/Pl5T4+qmrVdT7U9/WUzz8flwsXfER6T6jl48Wbl+LQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-dns@0.40.0': + resolution: {integrity: sha512-tLNR8XLPiYRKKk3/UqifXnPP2TVt1RcwvHU0R1ETL1xkZ1ZHMTmSC4x6TignnHOFtRixtJ05EgMGejnffaBXkQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-express@0.44.0': resolution: {integrity: sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==} engines: {node: '>=14'} @@ -2206,48 +2297,102 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-generic-pool@0.40.0': + resolution: {integrity: sha512-k+/JlNDHN3bPi/Cir+Ew6tKHFVCa1ZFeQyGUw5HQkRX/twCRaN3kJFXJW+rDAN90XwK3RtC9AWwBihDGh/oSlQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-graphql@0.44.0': resolution: {integrity: sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-grpc@0.54.2': + resolution: {integrity: sha512-KhSzerCaaqVH2zfDro7nTunWUZXt1pQISQpE83LuQTOKGk7mN3G60T1wliQ3Qdg0X3UUuhCXEC7u6IAVfDxkUQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-hapi@0.41.0': resolution: {integrity: sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-hapi@0.42.0': + resolution: {integrity: sha512-TQC0BtIWLHrp6nKsYdZ5t5B7aiZ16BwbRqZtYYQxeJVsq/HQTANWpknjtA7KMxv5tAUMCrU/eDo8F3qioUOSZg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-http@0.53.0': resolution: {integrity: sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-http@0.54.2': + resolution: {integrity: sha512-mABjJ34UcU32pg8g18L9xBh0U3JON/2F6/57BYYy8AZJp2a71lZjcKr0T00pICoic50TW5HvcTrmyfMil+AiXQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-ioredis@0.43.0': resolution: {integrity: sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-ioredis@0.44.0': + resolution: {integrity: sha512-312pE2xc0ihX9haTf9WC4OF9in5EfVO1y5I8Ef9aMQKJNhuSe3IgzQAqGoLfaYajC+ig0IZ9SQKU8mRbFwHU+A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-kafkajs@0.4.0': resolution: {integrity: sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-knex@0.41.0': + resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-koa@0.43.0': resolution: {integrity: sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-koa@0.44.0': + resolution: {integrity: sha512-ryPqGIQ4hpMGd85bAGjRMDAy/ic+Qdh1GtFGJo9KaXdzbcvZoF1ZgXVsKTYDxbD1n5C0BoQy6rcWg8Lu68iCJA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-lru-memoizer@0.40.0': resolution: {integrity: sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-lru-memoizer@0.41.0': + resolution: {integrity: sha512-6OePkk4RYCPVsnS0TroEK6UZzxxxjVWaE6EPdOn2qxGHMtm+Qb80tiBQ6BbmC+f7bjc27O85JY8gxeTybhHZXw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-memcached@0.40.0': + resolution: {integrity: sha512-VzJUUH6cVz8yrb25RvvjhxCpwu4vUk28I0m5nnnhebULOo8p9lda5PgQeVde2+jQAd977C/vN714fkbYOmwb+A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-mongodb@0.48.0': resolution: {integrity: sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==} engines: {node: '>=14'} @@ -2260,106 +2405,310 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-mongoose@0.43.0': + resolution: {integrity: sha512-y1mWuL/zb6IKi199HkROgmStxF/ybEsnKYgx+/lpLATd57oZHOqrXP9tLmp9qRVI5c6P5XEWfe7ZCvrj07iDMQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-mysql2@0.41.0': resolution: {integrity: sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-mysql2@0.42.1': + resolution: {integrity: sha512-5hOQbFSpqsgDLaqIeWZNbSWB6XdwN+aBjoCIe60lmGG86zeNXu9I6l1kEckRb+Gy0i7zrt0Tk8S62zsOSZ8l7Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-mysql@0.41.0': resolution: {integrity: sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-mysql@0.42.0': + resolution: {integrity: sha512-1GN2EBGVSZABGQ25MSz3faeBW/DwhzmE10aNW1/A2mvQAxF1CvpMk17YmNUzwapVt29iKsiU3SXQG7vjh/019A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-nestjs-core@0.40.0': resolution: {integrity: sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-nestjs-core@0.41.0': + resolution: {integrity: sha512-XCqtghFktpcJ2BOaJtFfqtTMsHffJADxfYhJl28WT6ygCChS2uZVxMKKLsy+i9VtPaw/i1IumPICL6mbhwq+Vw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-net@0.40.0': + resolution: {integrity: sha512-abErnVRxTmtiF7EvBISW81Se2nj/j3Xtpfy//9++dgvDOXwbcD1Xz1via6ZHOm/VamboGhqPlYiO7ABzluPLwg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-pg@0.44.0': resolution: {integrity: sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-pg@0.47.1': + resolution: {integrity: sha512-qIcydMBVlKtAyFQWYunjqvFMVqIGvxGMXISrdLuSbcCqico9QKhK7bF5wzsotjGwHcGnc7q5kRqSL7j+LnY1Cw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-pino@0.43.0': + resolution: {integrity: sha512-jlOOgbODWRRNknWXY1VLgmqgG0SO4kLgU3XnejjO/3De4OisroAsMGk+1cRB5AQ6WZ8WLAMkMyTShaOe6j2Asw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + '@opentelemetry/instrumentation-redis-4@0.42.0': resolution: {integrity: sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-undici@0.6.0': - resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==} + '@opentelemetry/instrumentation-redis-4@0.43.0': + resolution: {integrity: sha512-6B2+CFRY9xRnkeZrSvlTyY2yB/zAgxjbXS5EwXhE3ZAKR1hWWoUzaTADIKT5xe9/VbDW42U3UoOPCcaCmeAXww==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.7.0 + '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.52.1': - resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} + '@opentelemetry/instrumentation-redis@0.43.0': + resolution: {integrity: sha512-dufe08W3sCOjutbTJmV6tg2Y3+7IBe59oQrnIW2RCgjRhsW0Jjaenezt490eawO0MdXjUfFyrIUg8WetKhE4xA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.53.0': - resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==} + '@opentelemetry/instrumentation-restify@0.42.0': + resolution: {integrity: sha512-ApDD9HNy6de6xrHmISEfkQHwwX1f1JrBj0ADnlk6tVdJ0j/vNmsZNLwaU2IA2K3mHqbp2YLarLgxAZp6rjcfWg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.54.2': - resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==} + '@opentelemetry/instrumentation-router@0.41.0': + resolution: {integrity: sha512-IbvzgaoylMqStOOtwucEvSu5CDbfQN+H1ZZ2p6c9Kmvzptqh6G441GFy0FFVVqxOAHNhQm2w6n0Ag8trdBjCfw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/redis-common@0.36.2': - resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} + '@opentelemetry/instrumentation-socket.io@0.43.0': + resolution: {integrity: sha512-HAQoIZ6N/ey1L4jF69gmqo7RyeSv5rc4sZZAd1v6SVaB8ZolTEyWEzGlu1NRZZTnqfWNxDkX6J1/omWpDd9k0w==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 - '@opentelemetry/resources@1.27.0': - resolution: {integrity: sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==} + '@opentelemetry/instrumentation-tedious@0.15.0': + resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': ^1.3.0 - '@opentelemetry/sdk-trace-base@1.27.0': - resolution: {integrity: sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==} + '@opentelemetry/instrumentation-undici@0.6.0': + resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': ^1.7.0 - '@opentelemetry/semantic-conventions@1.27.0': - resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} + '@opentelemetry/instrumentation-undici@0.7.1': + resolution: {integrity: sha512-sIl4zrRDP7pR+2Pmdm9XJQULMKiUmvZze2cEW6gUz7TXCEaYmJ+vNMdd7qgeRo8C7AMm+T08mptobFVKPzdz+A==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 - '@opentelemetry/sql-common@0.40.1': - resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} + '@opentelemetry/instrumentation-winston@0.41.0': + resolution: {integrity: sha512-qtqGDx2Plu71s9xaeXut0YgZFG/y68ENG9vvo/SODeEC+4/APiS/htQ5YNJIxxjOuxYowdFYRqV9Kmef2EUzmw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.1.0 + '@opentelemetry/api': ^1.3.0 - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + '@opentelemetry/instrumentation@0.52.1': + resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@pocket-tools/apollo-utils@3.5.0': - resolution: {integrity: sha512-FjHzyfUzYgnjAcyi5ZSYrK9v0WPv6xWyk8JAANWT/F5uSTdpD1Y3rtZLTjOG6h51SQR/ZbTzPpeN4nWqW5r9lw==} - engines: {node: '>=20'} + '@opentelemetry/instrumentation@0.53.0': + resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.54.1': + resolution: {integrity: sha512-z5EapvWSHnHwk1NnIF++x9IIe9U83/Bna9xYMHCpZ9EWDfNzMBwg/fOZtwLa2zbX2oEd+Qoze34M+Pujd92IyQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.54.2': + resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.54.1': + resolution: {integrity: sha512-cqX2uAg8UVzpEq9BrMhn6jQGp480Ykf0gQR4nOwpBkQ0BzoKHnu5GIhAuhHH4laVym0KrUVgWZWrdT52WrSXVA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-grpc-exporter-base@0.54.1': + resolution: {integrity: sha512-HmztqGDOE6FgD9kll3BnxGJa6PdWnDcpYncZQAejtw/ygjtDDWG9BJ8Tg4NaHY7TGlyhhMsY70PlPbDDAuanxw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.54.1': + resolution: {integrity: sha512-8aleigiRCeo3S1IqB88EFlYu9WlZmJOMcAse9U9yB/CdGiLN5g5jjMHEO47+YspTwVlc9U3B/Vj+oG/OFPSfDQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/propagation-utils@0.30.12': + resolution: {integrity: sha512-bgab3q/4dYUutUpQCEaSDa+mLoQJG3vJKeSiGuhM4iZaSpkz8ov0fs1MGil5PfxCo6Hhw3bB3bFYhUtnsfT/Pg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/propagator-aws-xray@1.26.0': + resolution: {integrity: sha512-Sex+JyEZ/xX328TArBqQjh1NZSfNyw5NdASUIi9hnPsnMBMSBaDe7B9JRnXv0swz7niNyAnXa6MY7yOCV76EvA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-b3@1.27.0': + resolution: {integrity: sha512-pTsko3gnMioe3FeWcwTQR3omo5C35tYsKKwjgTCTVCgd3EOWL9BZrMfgLBmszrwXABDfUrlAEFN/0W0FfQGynQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-jaeger@1.27.0': + resolution: {integrity: sha512-EI1bbK0wn0yIuKlc2Qv2LKBRw6LiUWevrjCF80fn/rlaB+7StAi8Y5s8DBqAYNpY7v1q86+NjU18v7hj2ejU3A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/redis-common@0.36.2': + resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} + engines: {node: '>=14'} + + '@opentelemetry/resource-detector-alibaba-cloud@0.29.4': + resolution: {integrity: sha512-U3sWPoBXiEE51jJGhRrW19hLvrRbBbZWTp3Yc7IaRVFODNNzmibOolyi2ow1XN68UgRT4BRuwgwbnM5GbG/E5Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-aws@1.7.0': + resolution: {integrity: sha512-VxrwUi/9QcVIV+40d/jOKQthfD/E4/ppQ9FsYpDH7qy16cOO5519QOdihCQJYpVNbgDqf6q3hVrCy1f8UuG8YA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-azure@0.2.12': + resolution: {integrity: sha512-iIarQu6MiCjEEp8dOzmBvCSlRITPFTinFB2oNKAjU6xhx8d7eUcjNOKhBGQTvuCriZrxrEvDaEEY9NfrPQ6uYQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-container@0.5.0': + resolution: {integrity: sha512-ozp+ggcbl17xFfL91+DFgP8nmfzthNLxVTDOQUVgQgngVsSaBb5/I1Tnt63ZX2GCMdBJTxUBbFsqFvO0CjfGLg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resource-detector-gcp@0.29.13': + resolution: {integrity: sha512-vdotx+l3Q+89PeyXMgKEGnZ/CwzwMtuMi/ddgD9/5tKZ08DfDGB2Npz9m2oXPHRCjc4Ro6ifMqFlRyzIvgOjhg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/resources@1.27.0': + resolution: {integrity: sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.54.1': + resolution: {integrity: sha512-FoHgzFT9XHt1NdLNwNzqZCCWT7XF1aSxXuSRlGdfwmkhFjB0F3t0a7pngChejIP7ugc9XTIaKlboloe5DlGHzw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@1.27.0': + resolution: {integrity: sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-node@0.54.1': + resolution: {integrity: sha512-MYFXVPbyjprDBehlP9JKKusPssVmQ6iO3TcoVUhuXJlTXg4fkwBUfjHwSxZxfA7cCvHus5Rua03Qs0jIYfwlCQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@1.27.0': + resolution: {integrity: sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-trace-node@1.27.0': + resolution: {integrity: sha512-dWZp/dVGdUEfRBjBq2BgNuBlFqHCxyyMc8FsN0NX15X07mxSUO0SZRLyK/fdAVrde8nqFI/FEdMH4rgU9fqJfQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.27.0': + resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} + engines: {node: '>=14'} + + '@opentelemetry/sql-common@0.40.1': + resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + + '@opentelemetry/winston-transport@0.7.0': + resolution: {integrity: sha512-Q35p/glAOE6sl0ZgbddYsdjy23mzt89lFGhht4pJwrrJyInFIgdONFmMJb47kmXbFM3JHOcI0j+PL1BPPTPXBQ==} + engines: {node: '>=14'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pocket-tools/apollo-utils@3.5.0': + resolution: {integrity: sha512-FjHzyfUzYgnjAcyi5ZSYrK9v0WPv6xWyk8JAANWT/F5uSTdpD1Y3rtZLTjOG6h51SQR/ZbTzPpeN4nWqW5r9lw==} + engines: {node: '>=20'} '@pocket-tools/event-bridge@1.7.1': resolution: {integrity: sha512-Ychrnk8zjcbqr8tKKXRPYgBA8qvvMQ4zKzdkm/c0HoM2VgRXsMWVtwPhVEjvtJUNoBIdIPIEqfG1DrznU1Q6Dw==} + '@pocket-tools/feature-flags-client@1.0.0': + resolution: {integrity: sha512-eYIY9kVM1hn7b9HTrnWJvKbpNIDjBPIZH7RURWWJu/QSa86EzgXOVDTG9eoW40PYk3tayLcCWdnPXA36TVWqTg==} + + '@pocket-tools/sentry@1.0.0': + resolution: {integrity: sha512-oDiAqrY37Ett8n3McbEZ0SjN0jEjaSA18YGy2KvHHwEYqB9UtyGiS46NnSp8ksyr6FOuL96p4kj3lFL/BYl9oA==} + peerDependencies: + '@sentry/node': 8.37.1 + '@pocket-tools/terraform-modules@5.14.2': resolution: {integrity: sha512-TjxXT/+TQxXcf/KNkS4oGHmN9e42YxqJuUPrG0d8WeJp9+/2/hTprQD7N1YXSCmWYONn2QmJgYoF6OlZDz7Xqg==} - '@pocket-tools/ts-logger@1.9.4': - resolution: {integrity: sha512-lfNPfNh1TcMWprclctG9f04o/vfSSFYomr857V4KSktYK5JpUzoEDbomkUOF4YTbs4npju6c4KekAHWfWxIc+A==} + '@pocket-tools/tracing@1.8.9': + resolution: {integrity: sha512-6FngALlKd4JK3bzjNB9JRptLibMB0E16cOZO85wGZfVfgRt3uD6Va56VJFtxngakmDNVfzkmKUWuwuptcUA8aA==} '@pocket-tools/ts-logger@1.9.6': resolution: {integrity: sha512-s5HQefVgnf1KlpiOlxD05on20ryDWGJvu/49qoq9brbgI6JnIcdSVstfIj1kZzgl8NBY3vS8t/YAw0PmNgfayg==} @@ -2391,6 +2740,9 @@ packages: '@prisma/instrumentation@5.19.1': resolution: {integrity: sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==} + '@prisma/instrumentation@5.21.1': + resolution: {integrity: sha512-cjjor6hTqBhXULjYqr2Y9ZVQEhl9dNUgx0TkFPg88F1PFIuiktWoENW8GnsENN6aSJSrbgavBuf3XRNu9qzlrg==} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -2574,10 +2926,6 @@ packages: resolution: {integrity: sha512-3eO09030w0yMQeEC0wzozFmUzknLr4dK6AeTwyHqI+Ctb0fXFvbz5uQG6gGEdCEFEnXRitgffcZvGBeNakRzXw==} engines: {node: '>=10'} - '@sentry/tracing@7.112.2': - resolution: {integrity: sha512-Dw641xm7seI+f3SAbKmSi6RNIpsLPrNPxPQbUhJpfDmJQOY6Rl00XANKAwW+QEiSqukGko1Evo3kU1NDxVmRgA==} - engines: {node: '>=8'} - '@sentry/types@7.112.2': resolution: {integrity: sha512-kCMLt7yhY5OkWE9MeowlTNmox9pqDxcpvqguMo4BDNZM5+v9SEb1AauAdR78E1a1V8TyCzjBD7JDfXWhvpYBcQ==} engines: {node: '>=8'} @@ -3005,6 +3353,9 @@ packages: '@types/aws-lambda@8.10.134': resolution: {integrity: sha512-cfv422ivDMO+EeA3N4YcshbTHBL+5lLXe+Uz+4HXvIcsCuWvqNFpOs28ZprL8NA3qRCzt95ETiNAJDn4IcC/PA==} + '@types/aws-lambda@8.10.143': + resolution: {integrity: sha512-u5vzlcR14ge/4pMTTMDQr3MF0wEe38B2F9o84uC4F43vN5DGTy63npRrB6jQhyt+C0lGv4ZfiRcRkqJoZuPnmg==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3020,6 +3371,9 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/bunyan@1.8.9': + resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} + '@types/busboy@1.5.4': resolution: {integrity: sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==} @@ -3119,6 +3473,9 @@ packages: '@types/luxon@3.4.2': resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} + '@types/memcached@2.2.10': + resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} + '@types/methods@1.1.4': resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} @@ -3197,6 +3554,9 @@ packages: '@types/supertest@2.0.16': resolution: {integrity: sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==} + '@types/tedious@4.0.14': + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -3409,6 +3769,14 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: @@ -3608,6 +3976,9 @@ packages: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -3687,6 +4058,10 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacache@18.0.4: + resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} + engines: {node: ^16.14.0 || >=18.0.0} + cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -3767,6 +4142,10 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -3785,6 +4164,10 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} @@ -4241,6 +4624,9 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -4263,6 +4649,9 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -4567,6 +4956,9 @@ packages: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -4686,6 +5078,9 @@ packages: formidable@2.1.2: resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + forwarded-parse@2.1.2: + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -4717,6 +5112,14 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -4735,6 +5138,14 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + + gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4952,6 +5363,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} @@ -4960,6 +5375,10 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -4973,6 +5392,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5077,6 +5500,10 @@ packages: resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} engines: {node: '>=12.22.0'} + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + ip-regex@4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} @@ -5184,6 +5611,9 @@ packages: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -5460,6 +5890,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true @@ -5496,6 +5929,9 @@ packages: engines: {node: '>= 18.12.0'} hasBin: true + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5614,6 +6050,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -5694,6 +6133,9 @@ packages: long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -5726,6 +6168,10 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-fetch-happen@13.0.1: + resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} + engines: {node: ^16.14.0 || >=18.0.0} + makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -5818,13 +6264,50 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass-fetch@3.0.5: + resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mnemonist@0.38.3: resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} @@ -5851,6 +6334,10 @@ packages: typescript: optional: true + murmurhash3js@3.0.1: + resolution: {integrity: sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow==} + engines: {node: '>=0.10.0'} + mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -6066,6 +6553,10 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -6271,6 +6762,10 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -6282,6 +6777,10 @@ packages: resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} engines: {node: '>= 8'} + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -6494,6 +6993,10 @@ packages: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -6673,6 +7176,18 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + engines: {node: '>= 14'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sort-any@2.0.0: resolution: {integrity: sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==} @@ -6717,6 +7232,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + sqs-consumer@11.2.0: resolution: {integrity: sha512-vummgDxhKjqehGNolER42SpU05mU9CdckVwcMVmQXrrGRqDCI9pSAiarnH/GryQIqYr9nEuoUSewcHSg52lAEA==} engines: {node: '>=18.0.0'} @@ -6727,6 +7245,10 @@ packages: resolution: {integrity: sha512-sztRa50SL1LVxZnF1au6QT1SC2z0S1oEOyi2Kpnlg6urDns93aL32YxiJcNkLcY+VHFtVqm/SRv4cb+6LeoBQA==} engines: {node: '>= 12.13.0'} + ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -6913,6 +7435,10 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -7207,6 +7733,14 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -7219,6 +7753,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unleash-client@6.1.2: + resolution: {integrity: sha512-pWvaM8LhwpLtCTDYCVwY1tdHAWFUX9XtQymw4Ln6173+i2zhfdmyyg+ZFFBaET96iSjqvLMKCfte92VWeaNsDA==} + engines: {node: '>=16'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -7331,10 +7869,6 @@ packages: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} - winston@3.14.2: - resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} - engines: {node: '>= 12.0.0'} - winston@3.15.0: resolution: {integrity: sha512-RhruH2Cj0bV0WgNL+lOfoUBI4DVfdUNjVnJGVovWZmrcKtrFTTRzgXYK2O9cymSGjrERCtaAeHwMNnUWXlwZow==} engines: {node: '>= 12.0.0'} @@ -7399,6 +7933,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -7511,14 +8048,14 @@ snapshots: '@apollo/utils.logger': 2.0.1 graphql: 16.9.0 - '@apollo/server-plugin-response-cache@4.1.3(@apollo/server@4.11.0(graphql@16.9.0))(graphql@16.9.0)': + '@apollo/server-plugin-response-cache@4.1.3(@apollo/server@4.11.0(encoding@0.1.13)(graphql@16.9.0))(graphql@16.9.0)': dependencies: - '@apollo/server': 4.11.0(graphql@16.9.0) + '@apollo/server': 4.11.0(encoding@0.1.13)(graphql@16.9.0) '@apollo/utils.createhash': 2.0.1 '@apollo/utils.keyvaluecache': 2.1.1 graphql: 16.9.0 - '@apollo/server@4.11.0(graphql@16.9.0)': + '@apollo/server@4.11.0(encoding@0.1.13)(graphql@16.9.0)': dependencies: '@apollo/cache-control-types': 1.0.3(graphql@16.9.0) '@apollo/server-gateway-interface': 1.1.1(graphql@16.9.0) @@ -7542,7 +8079,7 @@ snapshots: lru-cache: 7.18.3 negotiator: 0.6.4 node-abort-controller: 3.1.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) uuid: 9.0.1 whatwg-mimetype: 3.0.0 transitivePeerDependencies: @@ -7618,13 +8155,13 @@ snapshots: '@aws-crypto/crc32@3.0.0': dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 + '@aws-sdk/types': 3.686.0 tslib: 1.14.1 '@aws-crypto/crc32c@3.0.0': dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.523.0 + '@aws-sdk/types': 3.686.0 tslib: 1.14.1 '@aws-crypto/ie11-detection@3.0.0': @@ -7834,51 +8371,6 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-firehose@3.529.1': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.529.1(@aws-sdk/credential-provider-node@3.529.1) - '@aws-sdk/core': 3.529.1 - '@aws-sdk/credential-provider-node': 3.529.1 - '@aws-sdk/middleware-host-header': 3.523.0 - '@aws-sdk/middleware-logger': 3.523.0 - '@aws-sdk/middleware-recursion-detection': 3.523.0 - '@aws-sdk/middleware-user-agent': 3.525.0 - '@aws-sdk/region-config-resolver': 3.525.0 - '@aws-sdk/types': 3.523.0 - '@aws-sdk/util-endpoints': 3.525.0 - '@aws-sdk/util-user-agent-browser': 3.523.0 - '@aws-sdk/util-user-agent-node': 3.525.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.7.0 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/client-s3@3.529.1': dependencies: '@aws-crypto/sha1-browser': 3.0.0 @@ -9047,7 +9539,7 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@cdktf/cli-core@0.20.8(react@17.0.2)': + '@cdktf/cli-core@0.20.8(encoding@0.1.13)(react@17.0.2)': dependencies: '@cdktf/commons': 0.20.8(constructs@10.3.0) '@cdktf/hcl-tools': 0.20.8 @@ -9063,7 +9555,7 @@ snapshots: cli-spinners: 2.9.2 codemaker: 1.98.0 constructs: 10.3.0 - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) cross-spawn: 7.0.3 detect-port: 1.6.1 execa: 5.1.1 @@ -9083,7 +9575,7 @@ snapshots: lodash.isequal: 4.5.0 log4js: 6.9.1 minimatch: 5.1.6 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) open: 7.4.2 parse-gitignore: 1.0.1 pkg-up: 3.1.0 @@ -9368,6 +9860,18 @@ snapshots: dependencies: graphql: 16.9.0 + '@grpc/grpc-js@1.12.2': + dependencies: + '@grpc/proto-loader': 0.7.13 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.13': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.4.0 + yargs: 17.7.2 + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -9786,6 +10290,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@js-sdsl/ordered-map@4.4.2': {} + '@jsii/check-node@1.104.0': dependencies: chalk: 4.1.2 @@ -9836,6 +10342,20 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@npmcli/agent@2.2.2': + dependencies: + agent-base: 7.1.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + '@npmcli/fs@3.1.1': + dependencies: + semver: 7.6.3 + '@open-draft/deferred-promise@2.2.0': {} '@open-draft/logger@0.3.0': @@ -9853,12 +10373,70 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs@0.54.1': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs@0.54.2': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api@1.9.0': {} + '@opentelemetry/auto-instrumentations-node@0.52.0(@opentelemetry/api@1.9.0)(encoding@0.1.13)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-aws-lambda': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-aws-sdk': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-bunyan': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-cassandra-driver': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-cucumber': 0.10.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.13.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dns': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-grpc': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-memcached': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.42.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-net': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.47.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pino': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-restify': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-router': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-socket.io': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.7.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-winston': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-alibaba-cloud': 0.29.4(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-aws': 1.7.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-azure': 0.2.12(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-container': 0.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-gcp': 0.29.13(@opentelemetry/api@1.9.0)(encoding@0.1.13) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-node': 0.54.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - encoding + - supports-color + '@opentelemetry/context-async-hooks@1.27.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9873,6 +10451,97 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/exporter-logs-otlp-grpc@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.12.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-http@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.1 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-logs-otlp-proto@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.1 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-grpc@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.12.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-metrics-otlp-http@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-grpc@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.12.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-http@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-trace-otlp-proto@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/exporter-zipkin@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/id-generator-aws-xray@1.2.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib@0.42.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9882,6 +10551,52 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-aws-lambda@0.46.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-aws-xray': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/aws-lambda': 8.10.143 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-aws-sdk@0.45.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/propagation-utils': 0.30.12(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-bunyan@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@types/bunyan': 1.8.9 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-cassandra-driver@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-connect@0.40.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9892,6 +10607,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-cucumber@0.10.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9899,6 +10622,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-dataloader@0.13.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-dns@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-express@0.44.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9932,6 +10669,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-generic-pool@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-graphql@0.44.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9939,6 +10683,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-grpc@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9948,6 +10700,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-hapi@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9958,6 +10719,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-http@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + forwarded-parse: 2.1.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9967,6 +10739,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-ioredis@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-kafkajs@0.4.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9975,6 +10756,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9984,6 +10773,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-koa@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -9991,6 +10789,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-lru-memoizer@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-memcached@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/memcached': 2.2.10 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-mongodb@0.48.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -10008,6 +10822,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-mongoose@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -10017,6 +10840,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-mysql2@0.42.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -10026,6 +10858,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-mysql@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/mysql': 2.15.26 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -10034,6 +10875,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-nestjs-core@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-net@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -10045,6 +10902,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@opentelemetry/instrumentation-pg@0.47.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.6 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-pino@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -10054,64 +10932,272 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-redis-4@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-redis@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-restify@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-router@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-socket.io@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-undici@0.7.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-winston@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.52.1 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.53.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.1 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/otlp-exporter-base@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-grpc-exporter-base@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.12.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.54.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-transformer@0.54.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.1 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + protobufjs: 7.4.0 + + '@opentelemetry/propagation-utils@0.30.12(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/propagator-aws-xray@1.26.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-b3@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-jaeger@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + + '@opentelemetry/redis-common@0.36.2': {} + + '@opentelemetry/resource-detector-alibaba-cloud@0.29.4(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-aws@1.7.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-azure@0.2.12(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-container@0.5.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/resource-detector-gcp@0.29.13(@opentelemetry/api@1.9.0)(encoding@0.1.13)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + gcp-metadata: 6.1.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + + '@opentelemetry/resources@1.27.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + '@opentelemetry/semantic-conventions': 1.27.0 - '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.54.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.52.1 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.11.2 - require-in-the-middle: 7.4.0 - semver: 7.6.3 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@opentelemetry/api-logs': 0.54.1 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-metrics@1.27.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.53.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.11.2 - require-in-the-middle: 7.4.0 - semver: 7.6.3 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-node@0.54.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.54.2 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.11.2 - require-in-the-middle: 7.4.0 - semver: 7.6.3 - shimmer: 1.2.1 + '@opentelemetry/api-logs': 0.54.1 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-proto': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 transitivePeerDependencies: - supports-color - '@opentelemetry/redis-common@0.36.2': {} - - '@opentelemetry/resources@1.27.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.27.0 - '@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-node@1.27.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.27.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/propagator-b3': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + semver: 7.6.3 '@opentelemetry/semantic-conventions@1.27.0': {} @@ -10120,19 +11206,24 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/winston-transport@0.7.0': + dependencies: + '@opentelemetry/api-logs': 0.54.2 + winston-transport: 4.9.0 + '@pkgjs/parseargs@0.11.0': optional: true '@pkgr/core@0.1.1': {} - '@pocket-tools/apollo-utils@3.5.0': + '@pocket-tools/apollo-utils@3.5.0(encoding@0.1.13)': dependencies: - '@apollo/server': 4.11.0(graphql@16.9.0) + '@apollo/server': 4.11.0(encoding@0.1.13)(graphql@16.9.0) '@apollo/subgraph': 2.9.0(graphql@16.9.0) '@apollo/utils.keyvaluecache': 3.1.0 '@jest/globals': 29.7.0 - '@pocket-tools/ts-logger': 1.9.4 - '@sentry/node': 7.112.2 + '@pocket-tools/ts-logger': 1.9.6 + '@sentry/node': 7.116.0 deep-equal-in-any-order: 2.0.6 graphql: 16.9.0 graphql-tag: 2.12.6(graphql@16.9.0) @@ -10157,7 +11248,19 @@ snapshots: - aws-crt - supports-color - '@pocket-tools/terraform-modules@5.14.2(ink@3.2.0(react@17.0.2))(react@17.0.2)': + '@pocket-tools/feature-flags-client@1.0.0': + dependencies: + tslib: 2.8.0 + unleash-client: 6.1.2 + transitivePeerDependencies: + - supports-color + + '@pocket-tools/sentry@1.0.0(@sentry/node@8.37.1)': + dependencies: + '@sentry/node': 8.37.1 + tslib: 2.8.0 + + '@pocket-tools/terraform-modules@5.14.2(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2)': dependencies: '@cdktf/provider-archive': 10.1.0(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@cdktf/provider-aws': 19.33.0(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) @@ -10167,9 +11270,9 @@ snapshots: '@cdktf/provider-pagerduty': 13.11.6(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) '@cdktf/provider-time': 10.2.0(cdktf@0.20.8(constructs@10.3.0))(constructs@10.3.0) cdktf: 0.20.8(constructs@10.3.0) - cdktf-cli: 0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2) + cdktf-cli: 0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2) constructs: 10.3.0 - parse-domain: 5.0.0 + parse-domain: 5.0.0(encoding@0.1.13) tslib: 2.7.0 transitivePeerDependencies: - '@types/react' @@ -10181,12 +11284,37 @@ snapshots: - supports-color - utf-8-validate - '@pocket-tools/ts-logger@1.9.4': + '@pocket-tools/tracing@1.8.9(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(encoding@0.1.13)': dependencies: - morgan: 1.10.0 - tslib: 2.7.0 - winston: 3.14.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/auto-instrumentations-node': 0.52.0(@opentelemetry/api@1.9.0)(encoding@0.1.13) + '@opentelemetry/context-async-hooks': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-grpc': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-logs-otlp-http': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-metrics-otlp-http': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/id-generator-aws-xray': 1.2.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-aws-xray': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resource-detector-aws': 1.7.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-node': 0.54.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/winston-transport': 0.7.0 + '@prisma/instrumentation': 5.21.1 + '@sentry/node': 8.37.1 + '@sentry/opentelemetry': 8.37.1(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) + tslib: 2.8.0 + unleash-client: 6.1.2 transitivePeerDependencies: + - '@opentelemetry/instrumentation' + - encoding - supports-color '@pocket-tools/ts-logger@1.9.6': @@ -10230,6 +11358,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@prisma/instrumentation@5.21.1': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -10430,10 +11566,6 @@ snapshots: '@types/aws-lambda': 8.10.134 '@types/express': 4.17.21 - '@sentry/tracing@7.112.2': - dependencies: - '@sentry-internal/tracing': 7.112.2 - '@sentry/types@7.112.2': {} '@sentry/types@7.116.0': {} @@ -11088,6 +12220,8 @@ snapshots: '@types/aws-lambda@8.10.134': {} + '@types/aws-lambda@8.10.143': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.26.2 @@ -11114,6 +12248,10 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 20.12.14 + '@types/bunyan@1.8.9': + dependencies: + '@types/node': 20.12.14 + '@types/busboy@1.5.4': dependencies: '@types/node': 20.12.14 @@ -11245,6 +12383,10 @@ snapshots: '@types/luxon@3.4.2': {} + '@types/memcached@2.2.10': + dependencies: + '@types/node': 20.12.14 + '@types/methods@1.1.4': {} '@types/mime@1.3.5': {} @@ -11336,6 +12478,10 @@ snapshots: dependencies: '@types/superagent': 8.1.9 + '@types/tedious@4.0.14': + dependencies: + '@types/node': 20.12.14 + '@types/tough-cookie@4.0.5': {} '@types/triple-beam@1.3.5': {} @@ -11607,6 +12753,17 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.1: + dependencies: + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + ajv-formats@3.0.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -11871,6 +13028,8 @@ snapshots: dependencies: safe-buffer: 5.1.2 + bignumber.js@9.1.2: {} + binary-extensions@2.3.0: {} bl@4.1.0: @@ -11961,6 +13120,21 @@ snapshots: cac@6.7.14: {} + cacache@18.0.4: + dependencies: + '@npmcli/fs': 3.1.1 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 10.4.3 + minipass: 7.1.2 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.6 + tar: 6.2.1 + unique-filename: 3.0.0 + cacheable-lookup@5.0.4: {} cacheable-request@7.0.4: @@ -11991,9 +13165,9 @@ snapshots: case@1.6.3: {} - cdktf-cli@0.20.8(ink@3.2.0(react@17.0.2))(react@17.0.2): + cdktf-cli@0.20.8(encoding@0.1.13)(ink@3.2.0(react@17.0.2))(react@17.0.2): dependencies: - '@cdktf/cli-core': 0.20.8(react@17.0.2) + '@cdktf/cli-core': 0.20.8(encoding@0.1.13)(react@17.0.2) '@cdktf/commons': 0.20.8(constructs@10.3.0) '@cdktf/hcl-tools': 0.20.8 '@cdktf/hcl2cdk': 0.20.8(constructs@10.3.0) @@ -12012,7 +13186,7 @@ snapshots: jsii-pacmak: 1.98.0(jsii-rosetta@5.4.14) jsii-rosetta: 5.4.14 minimatch: 5.1.6 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) pidtree: 0.6.0 pidusage: 3.0.2 tunnel-agent: 0.6.0 @@ -12079,6 +13253,8 @@ snapshots: chownr@1.1.4: {} + chownr@2.0.0: {} + ci-info@2.0.0: {} ci-info@3.9.0: {} @@ -12091,6 +13267,8 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + clean-stack@2.2.0: {} + cli-boxes@2.2.1: {} cli-cursor@3.1.0: @@ -12313,15 +13491,15 @@ snapshots: create-require@1.1.1: {} - cross-fetch@3.1.5: + cross-fetch@3.1.5(encoding@0.1.13): dependencies: - node-fetch: 2.6.7 + node-fetch: 2.6.7(encoding@0.1.13) transitivePeerDependencies: - encoding - cross-fetch@3.1.8: + cross-fetch@3.1.8(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -12548,6 +13726,11 @@ snapshots: encodeurl@1.0.2: {} + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -12568,6 +13751,8 @@ snapshots: env-paths@2.2.1: {} + err-code@2.0.3: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -13069,6 +14254,8 @@ snapshots: transitivePeerDependencies: - supports-color + extend@3.0.2: {} + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -13205,6 +14392,8 @@ snapshots: once: 1.4.0 qs: 6.13.0 + forwarded-parse@2.1.2: {} + forwarded@0.2.0: {} fresh@0.5.2: {} @@ -13233,6 +14422,14 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.2 + fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -13249,6 +14446,25 @@ snapshots: functions-have-names@1.2.3: {} + gaxios@6.7.1(encoding@0.1.13): + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.5 + is-stream: 2.0.1 + node-fetch: 2.7.0(encoding@0.1.13) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + gcp-metadata@6.1.0(encoding@0.1.13): + dependencies: + gaxios: 6.7.1(encoding@0.1.13) + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -13485,6 +14701,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + http2-wrapper@1.0.3: dependencies: quick-lru: 5.1.1 @@ -13497,6 +14720,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.5: + dependencies: + agent-base: 7.1.1 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + human-signals@2.1.0: {} husky@8.0.3: {} @@ -13505,6 +14735,11 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + ieee754@1.2.1: {} ignore-by-default@1.0.1: {} @@ -13640,6 +14875,11 @@ snapshots: transitivePeerDependencies: - supports-color + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + ip-regex@4.3.0: {} ipaddr.js@1.9.1: {} @@ -13731,6 +14971,8 @@ snapshots: dependencies: ip-regex: 4.3.0 + is-lambda@1.0.1: {} + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -14370,6 +15612,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + jsesc@0.5.0: {} jsesc@2.5.2: {} @@ -14437,6 +15681,10 @@ snapshots: transitivePeerDependencies: - supports-color + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.1.2 + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -14560,6 +15808,8 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.camelcase@4.3.0: {} + lodash.defaults@4.2.0: {} lodash.difference@4.5.0: {} @@ -14631,6 +15881,8 @@ snapshots: long@4.0.0: {} + long@5.2.3: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -14657,6 +15909,23 @@ snapshots: make-error@1.3.6: {} + make-fetch-happen@13.0.1: + dependencies: + '@npmcli/agent': 2.2.2 + cacache: 18.0.4 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.1.2 + minipass-fetch: 3.0.5 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + proc-log: 4.2.0 + promise-retry: 2.0.1 + ssri: 10.0.6 + transitivePeerDependencies: + - supports-color + makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -14729,10 +15998,47 @@ snapshots: minimist@1.2.8: {} + minipass-collect@2.0.1: + dependencies: + minipass: 7.1.2 + + minipass-fetch@3.0.5: + dependencies: + minipass: 7.1.2 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + minipass@7.1.2: {} + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + mkdirp-classic@0.5.3: {} + mkdirp@1.0.4: {} + mnemonist@0.38.3: dependencies: obliterator: 1.6.1 @@ -14797,6 +16103,8 @@ snapshots: optionalDependencies: typescript: 5.8.0-dev.20241114 + murmurhash3js@3.0.1: {} + mute-stream@0.0.8: {} mute-stream@1.0.0: {} @@ -14835,17 +16143,21 @@ snapshots: node-abi@3.71.0: dependencies: - semver: 7.6.2 + semver: 7.6.3 node-abort-controller@3.1.1: {} - node-fetch@2.6.7: + node-fetch@2.6.7(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 - node-fetch@2.7.0: + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-int64@0.4.0: {} @@ -15032,6 +16344,10 @@ snapshots: dependencies: p-limit: 3.1.0 + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + p-try@2.2.0: {} package-json-from-dist@1.0.1: {} @@ -15042,10 +16358,10 @@ snapshots: dependencies: callsites: 3.1.0 - parse-domain@5.0.0: + parse-domain@5.0.0(encoding@0.1.13): dependencies: is-ip: 3.1.0 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) punycode: 2.3.1 transitivePeerDependencies: - encoding @@ -15188,6 +16504,11 @@ snapshots: process-nextick-args@2.0.1: {} + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -15201,6 +16522,21 @@ snapshots: propagate@2.0.1: {} + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.12.14 + long: 5.2.3 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -15426,6 +16762,8 @@ snapshots: ret@0.2.2: {} + retry@0.12.0: {} + retry@0.13.1: {} reusify@1.0.4: {} @@ -15639,6 +16977,21 @@ snapshots: slugify@1.6.6: {} + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.4: + dependencies: + agent-base: 7.1.1 + debug: 4.3.7 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + sort-any@2.0.0: dependencies: lodash: 4.17.21 @@ -15691,6 +17044,8 @@ snapshots: sprintf-js@1.0.3: {} + sprintf-js@1.1.3: {} + sqs-consumer@11.2.0(@aws-sdk/client-sqs@3.679.0): dependencies: '@aws-sdk/client-sqs': 3.679.0 @@ -15700,6 +17055,10 @@ snapshots: sscaff@1.2.274: {} + ssri@10.0.6: + dependencies: + minipass: 7.1.2 + stack-trace@0.0.10: {} stack-utils@2.0.6: @@ -15941,6 +17300,15 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -16099,6 +17467,7 @@ snapshots: typescript: 5.6.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optional: true ts-node@10.9.2(@types/node@22.9.0)(typescript@5.8.0-dev.20241114): dependencies: @@ -16319,12 +17688,31 @@ snapshots: unicorn-magic@0.1.0: {} + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + universalify@0.1.2: {} universalify@0.2.0: {} universalify@2.0.1: {} + unleash-client@6.1.2: + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + ip-address: 9.0.5 + make-fetch-happen: 13.0.1 + murmurhash3js: 3.0.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + unpipe@1.0.0: {} update-browserslist-db@1.1.1(browserslist@4.24.2): @@ -16452,20 +17840,6 @@ snapshots: readable-stream: 3.6.2 triple-beam: 1.4.1 - winston@3.14.2: - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.6 - is-stream: 2.0.1 - logform: 2.7.0 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.5.0 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.9.0 - winston@3.15.0: dependencies: '@colors/colors': 1.6.0 @@ -16525,6 +17899,8 @@ snapshots: yallist@3.1.1: {} + yallist@4.0.0: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} diff --git a/servers/collection-api/package.json b/servers/collection-api/package.json index fef6d847..65e16bb8 100644 --- a/servers/collection-api/package.json +++ b/servers/collection-api/package.json @@ -35,11 +35,13 @@ "@aws-sdk/client-s3": "3.529.1", "@aws-sdk/lib-storage": "3.529.1", "@pocket-tools/apollo-utils": "3.5.0", - "@pocket-tools/ts-logger": "1.9.4", + "@pocket-tools/feature-flags-client": "1.0.0", + "@pocket-tools/sentry": "1.0.0", + "@pocket-tools/tracing": "1.8.9", + "@pocket-tools/ts-logger": "1.9.6", + "@pocket-tools/event-bridge": "1.7.1", "@prisma/client": "5.22.0", - "@sentry/node": "7.112.2", - "@sentry/tracing": "7.112.2", - "@pocket-tools/event-bridge": "1.7.1", + "@sentry/node": "8.37.1", "content-common": "workspace:*", "cors": "2.8.5", "dataloader": "^2.2.2", diff --git a/servers/collection-api/src/config/index.ts b/servers/collection-api/src/config/index.ts index 552653d1..bd5caeb5 100644 --- a/servers/collection-api/src/config/index.ts +++ b/servers/collection-api/src/config/index.ts @@ -29,6 +29,7 @@ export default { maxFiles: 10, }, defaultLanguage: 'EN', + serviceName: 'collection-api', }, aws: { s3: { @@ -56,8 +57,15 @@ export default { environment: process.env.NODE_ENV || 'development', }, tracing: { - // for AWS, it's fine to leave this defaulting to localhost - host: process.env.OTLP_COLLECTOR_HOST || 'localhost', + url: process.env.OTLP_COLLECTOR_URL || 'http://localhost:4318', + flagName: 'perm.content.tracing.collections', serviceName: 'collection-api', + release: process.env.GIT_SHA || 'local', + }, + unleash: { + clientKey: process.env.UNLEASH_KEY || 'unleash-key-fake', + endpoint: process.env.UNLEASH_ENDPOINT || 'http://localhost:4242/api', + refreshInterval: 60 * 1000, // ms + timeout: 2 * 1000, // ms }, }; diff --git a/servers/collection-api/src/database/client.ts b/servers/collection-api/src/database/client.ts index 59a830d4..2a8a2aa4 100644 --- a/servers/collection-api/src/database/client.ts +++ b/servers/collection-api/src/database/client.ts @@ -3,7 +3,6 @@ import { serverLogger } from '@pocket-tools/ts-logger'; import { Prisma, PrismaClient } from '.prisma/client'; import { collectionStoryInjectItemMiddleware } from '../middleware/prisma'; -import config from '../config'; let prisma; @@ -16,21 +15,8 @@ export function client(): PrismaClient { level: 'error', emit: 'event', }, - { - level: 'warn', - emit: 'event', - }, - { - level: 'info', - emit: 'event', - }, ]; - // For non-prod environments, log all queries, too. - if (config.app.environment !== 'production') { - log.push({ level: 'query', emit: 'event' }); - } - prisma = new PrismaClient({ log, }); @@ -40,24 +26,13 @@ export function client(): PrismaClient { serverLogger.error(e); }); - prisma.$on('warn', (e) => { - e.source = 'prisma'; - serverLogger.warn(e); - }); - - prisma.$on('info', (e) => { - e.source = 'prisma'; - serverLogger.info(e); - }); + // local development - for easy viewing of the actual SQL being + // generated/sent by prisma, uncomment the block below. - // Allow logger to subscribe to query events from Prisma - // in non-production environments only. - if (config.app.environment !== 'production') { - prisma.$on('query', (e) => { - e.source = 'prisma'; - serverLogger.debug(e); - }); - } + //prisma.$on('query', (e) => { + // e.source = 'prisma'; + // console.log(e); + //}); // this is a middleware function that injects non-database / non-prisma // data into each CollectionStory. this extra data is necessary to relate diff --git a/servers/collection-api/src/database/mutations/Collection.ts b/servers/collection-api/src/database/mutations/Collection.ts index c5e7f484..53d96043 100644 --- a/servers/collection-api/src/database/mutations/Collection.ts +++ b/servers/collection-api/src/database/mutations/Collection.ts @@ -12,7 +12,7 @@ import { checkCollectionLabelLimit } from '../utils'; import { NotFoundError } from '@pocket-tools/apollo-utils'; import { AdminAPIUser } from '../../admin/context'; import { sendEventBridgeEvent } from '../../events/events'; -import { EventBridgeEventType } from '../../events/types'; +import { PocketEventType } from '@pocket-tools/event-bridge'; /** * @param db diff --git a/servers/collection-api/src/events/events.spec.ts b/servers/collection-api/src/events/events.spec.ts index 266d1c27..d874d58a 100644 --- a/servers/collection-api/src/events/events.spec.ts +++ b/servers/collection-api/src/events/events.spec.ts @@ -22,6 +22,7 @@ import { } from './testData'; import { CollectionComplete } from '../database/types'; import { PrismaClient } from '.prisma/client'; +import { serverLogger } from '@pocket-tools/ts-logger'; describe('event helpers: ', () => { const dbClient: PrismaClient = client(); @@ -35,7 +36,7 @@ describe('event helpers: ', () => { const sentryStub = sandbox.stub(Sentry, 'captureException').resolves(); const crumbStub = sandbox.stub(Sentry, 'addBreadcrumb').resolves(); - const consoleSpy = sandbox.spy(console, 'log'); + const loggerSpy = sandbox.spy(serverLogger, 'error'); let getCollectionLabelsForSnowplowStub: sinon.SinonStub; @@ -213,11 +214,11 @@ describe('event helpers: ', () => { expect(crumbStub.getCall(0).firstArg.message).to.contain( `sendEventBridgeEvent: Failed to send event 'collection-created' to event bus`, ); - expect(consoleSpy.callCount).to.equal(2); - expect(consoleSpy.getCall(0).firstArg.message).to.contain( - `sendEventBridgeEvent: Failed to send event 'collection-created' to event bus`, + expect(loggerSpy.callCount).to.equal(1); + expect(loggerSpy.firstCall.firstArg).to.equal( + `event failed - failed sending to event bridge`, ); - expect(consoleSpy.getCall(1).firstArg.message).to.equal('boo!'); + expect(loggerSpy.firstCall.lastArg.error.message).to.equal('boo!'); }); }); }); diff --git a/servers/collection-api/src/events/events.ts b/servers/collection-api/src/events/events.ts index f6b477a4..2f3fdbcf 100644 --- a/servers/collection-api/src/events/events.ts +++ b/servers/collection-api/src/events/events.ts @@ -34,8 +34,9 @@ import { import { getLabelById } from '../shared/resolvers/types'; import { getCollectionByInternalId } from '../database/queries'; -import { eventBridgeClient } from '../aws/eventBridgeClient'; +import { serverLogger } from '@pocket-tools/ts-logger'; import config from '../config'; +import { eventBridgeClient } from '../aws/eventBridgeClient'; /** Transformation functions below to map collection object's sub types to the ones in snowplow schema */ @@ -306,7 +307,9 @@ export async function sendEventBridgeEvent( // Don't halt program, but capture the failure in Sentry and Cloudwatch Sentry.addBreadcrumb(failedEventError); Sentry.captureException(error); - console.log(failedEventError); - console.log(error); + serverLogger.error('event failed - failed sending to event bridge', { + failedEventError, + error, + }); } } diff --git a/servers/collection-api/src/express.ts b/servers/collection-api/src/express.ts index 0de6258c..41834772 100644 --- a/servers/collection-api/src/express.ts +++ b/servers/collection-api/src/express.ts @@ -30,36 +30,6 @@ export async function startServer(port: number): Promise<{ const app = express(); const httpServer = http.createServer(app); - Sentry.init({ - ...config.sentry, - includeLocalVariables: true, - maxValueLength: 2000, - integrations: [ - // apollo integration is broken at the moment 😕 - // https://github.com/getsentry/sentry-javascript/issues/6899 - //new Sentry.Integrations.Apollo(), - new Sentry.Integrations.GraphQL(), - new Sentry.Integrations.Mysql(), - // enable HTTP calls tracing - new Sentry.Integrations.Http({ tracing: true }), - // enable Express.js middleware tracing - new Sentry.Integrations.Express({ - // to trace all requests to the default router - app, - }), - ], - debug: config.sentry.environment == 'development', - }); - - // RequestHandler creates a separate execution context, so that all - // transactions/spans/breadcrumbs are isolated across requests. - // Because NODE is a single running process loop! - // MUST BE THE FIRST MIDDLEWARE ADDED! - app.use(Sentry.Handlers.requestHandler() as express.RequestHandler); - - // TracingHandler creates a trace for every incoming request - app.use(Sentry.Handlers.tracingHandler()); - app.use( // JSON parser to enable POST body with JSON express.json(), @@ -111,7 +81,7 @@ export async function startServer(port: number): Promise<{ ); // The error handler must be before any other error middleware and after all controllers - app.use(Sentry.Handlers.errorHandler() as express.ErrorRequestHandler); + Sentry.setupExpressErrorHandler(app); await new Promise((resolve) => httpServer.listen({ port }, resolve)); return { app, adminServer, adminUrl, publicServer, publicUrl }; diff --git a/servers/collection-api/src/main.ts b/servers/collection-api/src/main.ts index 84740090..7231228d 100644 --- a/servers/collection-api/src/main.ts +++ b/servers/collection-api/src/main.ts @@ -1,18 +1,32 @@ -// nodeSDKBuilder must be the first import!! -import { serverLogger } from '@pocket-tools/ts-logger'; - import config from './config'; +import { initSentry } from '@pocket-tools/sentry'; -import { startServer } from './express'; - -(async () => { - const { adminUrl, publicUrl } = await startServer(config.app.port); +// Init sentry MUST come before any other imports for auto instrumentation to kick in (request isolation) +initSentry({ + ...config.sentry, + skipOpenTelemetrySetup: true, + integrations(integrations) { + // we need to filter out NodeFetch integrations to avoid double tracing of + // HTTP requests. HTTP instrumentation is already configured by default in + // Sentry, which captures HTTP requests made by node fetch. + return integrations.filter((integration) => { + return integration.name !== 'NodeFetch'; + }); + }, +}); - serverLogger.info( - `🚀 Public server is ready at http://localhost:${config.app.port}${publicUrl}`, - ); +import { nodeSDKBuilder } from '@pocket-tools/tracing'; +import { unleash } from './unleash'; +nodeSDKBuilder({ ...config.tracing, unleash: unleash() }).then(() => { + startServer(config.app.port).then(async ({ publicUrl, adminUrl }) => { + serverLogger.info( + `🚀 Public server is ready at http://localhost:${config.app.port}${publicUrl}`, + ); - serverLogger.info( - `🚀 Admin server is ready at http://localhost:${config.app.port}${adminUrl}`, - ); -})(); + serverLogger.info( + `🚀 Admin server is ready at http://localhost:${config.app.port}${adminUrl}`, + ); + }); +}); +import { serverLogger } from '@pocket-tools/ts-logger'; +import { startServer } from './express'; diff --git a/servers/collection-api/src/public/resolvers/item.ts b/servers/collection-api/src/public/resolvers/item.ts index 3e95ed61..728ccd8c 100644 --- a/servers/collection-api/src/public/resolvers/item.ts +++ b/servers/collection-api/src/public/resolvers/item.ts @@ -1,6 +1,7 @@ import { Collection } from '.prisma/client'; import * as Sentry from '@sentry/node'; import { getCollectionUrlSlug } from '../../utils'; +import { serverLogger } from '@pocket-tools/ts-logger'; /** * @param givenUrl @@ -21,7 +22,10 @@ export async function collection( return null; } } catch (err) { - console.log(err); + serverLogger.error('failed loading collection on Item', { + err, + givenUrl, + }); Sentry.captureException(err); throw err; } diff --git a/servers/collection-api/src/unleash.ts b/servers/collection-api/src/unleash.ts new file mode 100644 index 00000000..a9080f18 --- /dev/null +++ b/servers/collection-api/src/unleash.ts @@ -0,0 +1,17 @@ +import { getUnleash } from '@pocket-tools/feature-flags-client'; +import config from './config'; +import type { Unleash } from '@pocket-tools/feature-flags-client'; + +let _unleash: Unleash; + +export function unleash(): Unleash { + if (_unleash != null) return _unleash; + _unleash = getUnleash({ + url: config.unleash.endpoint, + appName: config.app.serviceName, + customHeaders: { Authorization: config.unleash.clientKey }, + timeout: config.unleash.timeout, + refreshInterval: config.unleash.refreshInterval, + }); + return _unleash; +} diff --git a/servers/curated-corpus-api/package.json b/servers/curated-corpus-api/package.json index 5112b189..f8de3341 100644 --- a/servers/curated-corpus-api/package.json +++ b/servers/curated-corpus-api/package.json @@ -39,10 +39,9 @@ "@aws-sdk/lib-storage": "3.529.1", "@devoxa/prisma-relay-cursor-connection": "3.1.0", "@pocket-tools/apollo-utils": "3.5.0", - "@pocket-tools/ts-logger": "1.9.4", + "@pocket-tools/ts-logger": "1.9.6", "@prisma/client": "5.22.0", - "@sentry/node": "7.112.2", - "@sentry/tracing": "7.112.2", + "@sentry/node": "8.37.1", "@snowplow/node-tracker": "3.5.0", "@snowplow/tracker-core": "3.5.0", "content-common": "workspace:*", diff --git a/servers/curated-corpus-api/src/express.ts b/servers/curated-corpus-api/src/express.ts index afe21a2f..1ff45c5e 100644 --- a/servers/curated-corpus-api/src/express.ts +++ b/servers/curated-corpus-api/src/express.ts @@ -30,36 +30,6 @@ export async function startServer(port: number): Promise<{ const app = express(); const httpServer = http.createServer(app); - Sentry.init({ - ...config.sentry, - includeLocalVariables: true, - maxValueLength: 2000, - integrations: [ - // apollo integration is broken at the moment 😕 - // https://github.com/getsentry/sentry-javascript/issues/6899 - //new Sentry.Integrations.Apollo(), - new Sentry.Integrations.GraphQL(), - new Sentry.Integrations.Mysql(), - // enable HTTP calls tracing - new Sentry.Integrations.Http({ tracing: true }), - // enable Express.js middleware tracing - new Sentry.Integrations.Express({ - // to trace all requests to the default router - app, - }), - ], - debug: config.sentry.environment == 'development', - }); - - // RequestHandler creates a separate execution context, so that all - // transactions/spans/breadcrumbs are isolated across requests. - // Because NODE is a single running process loop! - // MUST BE THE FIRST MIDDLEWARE ADDED! - app.use(Sentry.Handlers.requestHandler() as express.RequestHandler); - - // TracingHandler creates a trace for every incoming request - app.use(Sentry.Handlers.tracingHandler()); - app.use( // JSON parser to enable POST body with JSON express.json(), @@ -111,7 +81,7 @@ export async function startServer(port: number): Promise<{ ); // The error handler must be before any other error middleware and after all controllers - app.use(Sentry.Handlers.errorHandler() as express.ErrorRequestHandler); + Sentry.setupExpressErrorHandler(app); await new Promise((resolve) => httpServer.listen({ port }, resolve)); return { app, adminServer, adminUrl, publicServer, publicUrl }; diff --git a/servers/curated-corpus-api/src/main.ts b/servers/curated-corpus-api/src/main.ts index a6b20726..0fffbc17 100644 --- a/servers/curated-corpus-api/src/main.ts +++ b/servers/curated-corpus-api/src/main.ts @@ -1,4 +1,5 @@ import { serverLogger } from '@pocket-tools/ts-logger'; +import * as Sentry from '@sentry/node'; import { curatedCorpusEventEmitter, @@ -14,6 +15,15 @@ import { import { startServer } from './express'; import config from './config'; +Sentry.init({ + ...config.sentry, + tracesSampleRate: 0.0, + includeLocalVariables: true, + maxValueLength: 2000, + integrations: [Sentry.prismaIntegration()], + debug: config.sentry.environment == 'development', +}); + // Initialize event handlers, this is outside server setup as tests // mock event handling initItemEventHandlers(curatedCorpusEventEmitter, [ diff --git a/servers/prospect-api/package.json b/servers/prospect-api/package.json index f9c1c96d..98d35f91 100644 --- a/servers/prospect-api/package.json +++ b/servers/prospect-api/package.json @@ -22,7 +22,7 @@ "@aws-sdk/client-eventbridge": "3.529.1", "@aws-sdk/lib-dynamodb": "3.529.1", "@pocket-tools/apollo-utils": "3.5.0", - "@pocket-tools/ts-logger": "1.9.4", + "@pocket-tools/ts-logger": "1.9.6", "content-common": "workspace:*", "@apollo/server": "4.11.0", "@apollo/subgraph": "2.9.0", @@ -30,7 +30,7 @@ "cors": "2.8.5", "graphql": "16.9.0", "graphql-tag": "2.12.6", - "@sentry/node": "7.112.2", + "@sentry/node": "8.37.1", "@snowplow/node-tracker": "3.5.0", "prospectapi-common": "workspace:*", "tslib": "2.7.0", diff --git a/servers/prospect-api/src/express.ts b/servers/prospect-api/src/express.ts index 43c6aad8..47522926 100644 --- a/servers/prospect-api/src/express.ts +++ b/servers/prospect-api/src/express.ts @@ -13,7 +13,6 @@ import { setLogger, setMorgan } from '@pocket-tools/ts-logger'; import { AdminAPIUserContext } from './types'; import { getContext } from './context'; import { startApolloServer } from './server'; -import config from './config'; export const serverLogger: any = setLogger(); @@ -32,36 +31,6 @@ export async function startServer(port: number): Promise<{ const app = express(); const httpServer = http.createServer(app); - Sentry.init({ - ...config.sentry, - includeLocalVariables: true, - maxValueLength: 2000, - integrations: [ - // apollo integration is broken at the moment 😕 - // https://github.com/getsentry/sentry-javascript/issues/6899 - //new Sentry.Integrations.Apollo(), - new Sentry.Integrations.GraphQL(), - new Sentry.Integrations.Mysql(), - // enable HTTP calls tracing - new Sentry.Integrations.Http({ tracing: true }), - // enable Express.js middleware tracing - new Sentry.Integrations.Express({ - // to trace all requests to the default router - app, - }), - ], - debug: config.sentry.environment === 'development', - }); - - // RequestHandler creates a separate execution context, so that all - // transactions/spans/breadcrumbs are isolated across requests. - // Because NODE is a single running process loop! - // MUST BE THE FIRST MIDDLEWARE ADDED! - app.use(Sentry.Handlers.requestHandler() as express.RequestHandler); - - // TracingHandler creates a trace for every incoming request - app.use(Sentry.Handlers.tracingHandler()); - // JSON parser to enable POST body with JSON app.use(express.json(), setMorgan(serverLogger)); @@ -82,7 +51,7 @@ export async function startServer(port: number): Promise<{ ); // The error handler must be before any other error middleware and after all controllers - app.use(Sentry.Handlers.errorHandler() as express.ErrorRequestHandler); + Sentry.setupExpressErrorHandler(app); await new Promise((resolve) => httpServer.listen({ port }, resolve)); return { app, apolloServer, url }; diff --git a/servers/prospect-api/src/main.ts b/servers/prospect-api/src/main.ts index 2ddb3efa..993ca6c2 100644 --- a/servers/prospect-api/src/main.ts +++ b/servers/prospect-api/src/main.ts @@ -1,7 +1,17 @@ import { serverLogger } from '@pocket-tools/ts-logger'; +import * as Sentry from '@sentry/node'; +import config from './config'; import { startServer } from './express'; +Sentry.init({ + ...config.sentry, + tracesSampleRate: 0.0, + includeLocalVariables: true, + maxValueLength: 2000, + debug: config.sentry.environment == 'development', +}); + (async () => { const { url } = await startServer(4026); serverLogger.info(`🚀 Server ready at http://localhost:4026${url}`);