From 4e7eb9a41e3d9b6c736274d1d846805b155b3f6a Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Mon, 15 Jun 2026 14:50:07 +0200 Subject: [PATCH 1/2] test(aws-serverless): Add integration coverage for aws-sdk service instrumentation The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service extension code) completely untested. This adds `nock`-based integration tests (mirroring the existing S3 test) covering the span name, op, origin and service-specific attributes for each service the SDK instruments: * S3 - expanded to PutObject, GetObject and an errored GetObject * DynamoDB - PutItem + Query (db.* attributes, op `db`) * SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER) * SNS - Publish (messaging.* attributes, topic ARN) * Lambda - Invoke (faas.* attributes) * Kinesis - PutRecord (stream name) * SecretsManager - GetSecretValue (secret ARN) * StepFunctions - StartExecution (state machine ARN) This is step 1 of streamlining the vendored aws-sdk instrumentation - the tests lock in current behavior so the upcoming cleanup and Sentry-API migration can be done safely. Notes: * The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the existing S3 dep) because newer clients route through `@smithy/core`, which the current instrumentation does not patch. * The Kinesis client is forced onto the HTTP/1 request handler because it defaults to HTTP/2, which `nock` cannot intercept. Addresses step 1 of #20944 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../node-integration-tests/package.json | 9 +- .../aws-integration/dynamodb/scenario.js | 52 ++ .../aws-integration/dynamodb/test.ts | 51 ++ .../aws-integration/kinesis/scenario.js | 41 ++ .../aws-integration/kinesis/test.ts | 36 ++ .../aws-integration/lambda/scenario.js | 36 ++ .../aws-integration/lambda/test.ts | 37 ++ .../aws-integration/s3/scenario.js | 49 +- .../aws-serverless/aws-integration/s3/test.ts | 74 ++- .../secretsmanager/scenario.js | 36 ++ .../aws-integration/secretsmanager/test.ts | 35 ++ .../aws-integration/sns/scenario.js | 38 ++ .../aws-integration/sns/test.ts | 38 ++ .../aws-integration/sqs/scenario.js | 51 ++ .../aws-integration/sqs/test.ts | 52 ++ .../aws-integration/stepfunctions/scenario.js | 36 ++ .../aws-integration/stepfunctions/test.ts | 36 ++ yarn.lock | 461 +++++++++++++++++- 18 files changed, 1125 insertions(+), 43 deletions(-) create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/test.ts create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/test.ts create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/test.ts create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/test.ts create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/test.ts create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/test.ts create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/test.ts diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 64d418c674fb..4bc20e276601 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -25,7 +25,14 @@ "dependencies": { "@anthropic-ai/sdk": "0.63.0", "@apollo/server": "^5.5.0", - "@aws-sdk/client-s3": "^3.1041.0", + "@aws-sdk/client-dynamodb": "3.1041.0", + "@aws-sdk/client-kinesis": "3.1041.0", + "@aws-sdk/client-lambda": "3.1041.0", + "@aws-sdk/client-s3": "3.1041.0", + "@aws-sdk/client-secrets-manager": "3.1041.0", + "@aws-sdk/client-sfn": "3.1041.0", + "@aws-sdk/client-sns": "3.1041.0", + "@aws-sdk/client-sqs": "3.1041.0", "@google/genai": "^1.20.0", "@growthbook/growthbook": "^1.6.1", "@hapi/hapi": "^21.3.10", diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/scenario.js new file mode 100644 index 000000000000..c1b1e6d3b4c8 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/scenario.js @@ -0,0 +1,52 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { DynamoDBClient, PutItemCommand, QueryCommand } = require('@aws-sdk/client-dynamodb'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new DynamoDBClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + + nock(`https://dynamodb.${region}.amazonaws.com`) + .post('/') + .reply(200, JSON.stringify({}), { 'content-type': 'application/x-amz-json-1.0' }); + + await client.send( + new PutItemCommand({ + TableName: 'my-table', + Item: { id: { S: 'some-id' } }, + }), + ); + + nock(`https://dynamodb.${region}.amazonaws.com`) + .post('/') + .reply(200, JSON.stringify({ Items: [{ id: { S: 'some-id' } }], Count: 1, ScannedCount: 1 }), { + 'content-type': 'application/x-amz-json-1.0', + }); + + await client.send( + new QueryCommand({ + TableName: 'my-table', + KeyConditionExpression: 'id = :id', + ExpressionAttributeValues: { ':id': { S: 'some-id' } }, + }), + ); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/test.ts new file mode 100644 index 000000000000..c3c55cb6e854 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/dynamodb/test.ts @@ -0,0 +1,51 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - DynamoDB', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments DynamoDB operations', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'DynamoDB.PutItem', + op: 'db', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'sentry.op': 'db', + 'rpc.system': 'aws-api', + 'rpc.method': 'PutItem', + 'rpc.service': 'DynamoDB', + 'db.system': 'dynamodb', + 'db.name': 'my-table', + 'db.operation': 'PutItem', + 'aws.dynamodb.table_names': ['my-table'], + 'otel.kind': 'CLIENT', + }), + }), + expect.objectContaining({ + description: 'DynamoDB.Query', + op: 'db', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'rpc.method': 'Query', + 'db.operation': 'Query', + 'db.name': 'my-table', + 'aws.dynamodb.count': 1, + 'aws.dynamodb.scanned_count': 1, + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/scenario.js new file mode 100644 index 000000000000..ec759aa94dfd --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/scenario.js @@ -0,0 +1,41 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { KinesisClient, PutRecordCommand } = require('@aws-sdk/client-kinesis'); +// The Kinesis client defaults to an HTTP/2 request handler, which `nock` cannot intercept. +// Force the HTTP/1 handler so the request is mocked instead of hitting real AWS. +const { NodeHttpHandler } = require('@smithy/node-http-handler'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new KinesisClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + requestHandler: new NodeHttpHandler(), + }); + + nock(`https://kinesis.${region}.amazonaws.com`) + .post('/') + .reply(200, JSON.stringify({ SequenceNumber: '1', ShardId: 'shardId-000000000000' }), { + 'content-type': 'application/x-amz-json-1.1', + }); + + await client.send( + new PutRecordCommand({ StreamName: 'my-stream', Data: Buffer.from('data'), PartitionKey: 'partition-key' }), + ); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/test.ts new file mode 100644 index 000000000000..d89aabdd07f9 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/kinesis/test.ts @@ -0,0 +1,36 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - Kinesis', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments Kinesis operations, setting the stream name', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'Kinesis.PutRecord', + op: 'rpc', + origin: 'auto.otel.aws', + status: 'ok', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'rpc.system': 'aws-api', + 'rpc.method': 'PutRecord', + 'rpc.service': 'Kinesis', + 'aws.kinesis.stream.name': 'my-stream', + 'otel.kind': 'CLIENT', + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/scenario.js new file mode 100644 index 000000000000..c7a9bdff8280 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/scenario.js @@ -0,0 +1,36 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { LambdaClient, InvokeCommand } = require('@aws-sdk/client-lambda'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new LambdaClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + + nock(`https://lambda.${region}.amazonaws.com`) + .post('/2015-03-31/functions/my-function/invocations') + .reply(200, JSON.stringify({ result: 'ok' }), { + 'content-type': 'application/json', + 'x-amzn-requestid': 'request-id-1', + }); + + await client.send(new InvokeCommand({ FunctionName: 'my-function' })); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/test.ts new file mode 100644 index 000000000000..a0784c24dc5f --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/lambda/test.ts @@ -0,0 +1,37 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - Lambda', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments Lambda invoke, setting faas attributes', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'my-function Invoke', + op: 'rpc', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'rpc.system': 'aws-api', + 'rpc.method': 'Invoke', + 'rpc.service': 'Lambda', + 'faas.invoked_name': 'my-function', + 'faas.invoked_provider': 'aws', + 'faas.execution': 'request-id-1', + 'otel.kind': 'CLIENT', + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/scenario.js index 0dc77ebbeb24..9377a1be2be0 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/scenario.js +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/scenario.js @@ -4,32 +4,47 @@ const Sentry = require('@sentry/aws-serverless'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', tracesSampleRate: 1.0, - debug: true, transport: loggingTransport, }); const { S3 } = require('@aws-sdk/client-s3'); const nock = require('nock'); -async function run() { - const bucketName = 'aws-test-bucket'; - const keyName = 'aws-test-object.txt'; - - nock(`https://${bucketName}.s3.amazonaws.com`).get(`/${keyName}`).reply(200, 'contents'); - nock(`https://${bucketName}.s3.amazonaws.com`).put(`/${keyName}`).reply(200, 'contents'); +nock.disableNetConnect(); +async function run() { await Sentry.startSpan({ name: 'Test Transaction' }, async () => { const region = 'us-east-1'; - const s3Client = new S3({ region }); - nock(`https://ot-demo-test.s3.${region}.amazonaws.com/`) - .put('/aws-ot-s3-test-object.txt?x-id=PutObject') - .reply(200, 'test'); - - const params = { - Bucket: 'ot-demo-test', - Key: 'aws-ot-s3-test-object.txt', - }; - await s3Client.putObject(params); + const s3Client = new S3({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + const host = `https://ot-demo-test.s3.${region}.amazonaws.com`; + + // Successful PutObject + nock(host).put('/aws-ot-s3-test-object.txt?x-id=PutObject').reply(200, 'test'); + await s3Client.putObject({ Bucket: 'ot-demo-test', Key: 'aws-ot-s3-test-object.txt' }); + + // Successful GetObject + nock(host).get('/aws-ot-s3-test-object.txt?x-id=GetObject').reply(200, 'contents'); + const getResult = await s3Client.getObject({ Bucket: 'ot-demo-test', Key: 'aws-ot-s3-test-object.txt' }); + // Drain the body so the request fully completes + await getResult.Body?.transformToString(); + + // Failing GetObject (missing key) - should produce a span with error status + nock(host) + .get('/missing-object.txt?x-id=GetObject') + .reply( + 404, + 'NoSuchKeyThe specified key does not exist.', + { 'content-type': 'application/xml' }, + ); + try { + await s3Client.getObject({ Bucket: 'ot-demo-test', Key: 'missing-object.txt' }); + } catch { + // expected + } }); } diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts index a6fdc2ce88af..7bfbbe6e4163 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/s3/test.ts @@ -1,36 +1,62 @@ import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; -const EXPECTED_TRANSCATION = { - transaction: 'Test Transaction', - spans: expect.arrayContaining([ - expect.objectContaining({ - description: 'S3.PutObject', - op: 'rpc', - origin: 'auto.otel.aws', - data: expect.objectContaining({ - 'sentry.origin': 'auto.otel.aws', - 'sentry.op': 'rpc', - 'rpc.system': 'aws-api', - 'rpc.method': 'PutObject', - 'rpc.service': 'S3', - 'cloud.region': 'us-east-1', - 'aws.s3.bucket': 'ot-demo-test', - 'otel.kind': 'CLIENT', - }), - }), - ]), -}; - -describe('awsIntegration', () => { +describe('awsIntegration - S3', () => { afterAll(() => { cleanupChildProcesses(); }); - test('should auto-instrument aws-sdk v2 package.', async () => { + test('auto-instruments S3 operations and captures errors', async () => { await createRunner(__dirname, 'scenario.js') .ignore('event') - .expect({ transaction: EXPECTED_TRANSCATION }) + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + // Successful PutObject + expect.objectContaining({ + description: 'S3.PutObject', + op: 'rpc', + origin: 'auto.otel.aws', + status: 'ok', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'sentry.op': 'rpc', + 'rpc.system': 'aws-api', + 'rpc.method': 'PutObject', + 'rpc.service': 'S3', + 'cloud.region': 'us-east-1', + 'aws.s3.bucket': 'ot-demo-test', + 'otel.kind': 'CLIENT', + }), + }), + // Successful GetObject + expect.objectContaining({ + description: 'S3.GetObject', + op: 'rpc', + origin: 'auto.otel.aws', + status: 'ok', + data: expect.objectContaining({ + 'rpc.method': 'GetObject', + 'rpc.service': 'S3', + 'aws.s3.bucket': 'ot-demo-test', + }), + }), + // Failing GetObject (missing key) - span is marked as errored + expect.objectContaining({ + description: 'S3.GetObject', + op: 'rpc', + origin: 'auto.otel.aws', + status: 'internal_error', + data: expect.objectContaining({ + 'rpc.method': 'GetObject', + 'rpc.service': 'S3', + 'aws.s3.bucket': 'ot-demo-test', + }), + }), + ]), + }, + }) .start() .completed(); }); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/scenario.js new file mode 100644 index 000000000000..2ec2eb411f14 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/scenario.js @@ -0,0 +1,36 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { SecretsManagerClient, GetSecretValueCommand } = require('@aws-sdk/client-secrets-manager'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; +const secretArn = 'arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret-abc'; + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new SecretsManagerClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + + nock(`https://secretsmanager.${region}.amazonaws.com`) + .post('/') + .reply(200, JSON.stringify({ ARN: secretArn, Name: 'my-secret', SecretString: 'secret-value' }), { + 'content-type': 'application/x-amz-json-1.1', + }); + + await client.send(new GetSecretValueCommand({ SecretId: secretArn })); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/test.ts new file mode 100644 index 000000000000..c895008c144b --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/secretsmanager/test.ts @@ -0,0 +1,35 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - SecretsManager', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments SecretsManager operations, setting the secret ARN', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'SecretsManager.GetSecretValue', + op: 'rpc', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'rpc.system': 'aws-api', + 'rpc.method': 'GetSecretValue', + 'rpc.service': 'SecretsManager', + 'aws.secretsmanager.secret.arn': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret-abc', + 'otel.kind': 'CLIENT', + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/scenario.js new file mode 100644 index 000000000000..01e4981ad378 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/scenario.js @@ -0,0 +1,38 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { SNSClient, PublishCommand } = require('@aws-sdk/client-sns'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; +const topicArn = 'arn:aws:sns:us-east-1:123456789012:my-topic'; + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new SNSClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + + nock(`https://sns.${region}.amazonaws.com`) + .post('/') + .reply( + 200, + 'message-id-1request-id-1', + { 'content-type': 'text/xml' }, + ); + + await client.send(new PublishCommand({ TopicArn: topicArn, Message: 'Hello from Sentry' })); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/test.ts new file mode 100644 index 000000000000..0c6a9c4bfb67 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sns/test.ts @@ -0,0 +1,38 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - SNS', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments SNS publish, setting messaging attributes', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'my-topic send', + op: 'rpc', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'rpc.system': 'aws-api', + 'rpc.method': 'Publish', + 'rpc.service': 'SNS', + 'messaging.system': 'aws.sns', + 'messaging.destination': 'my-topic', + 'messaging.destination.name': 'arn:aws:sns:us-east-1:123456789012:my-topic', + 'aws.sns.topic.arn': 'arn:aws:sns:us-east-1:123456789012:my-topic', + 'otel.kind': 'PRODUCER', + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/scenario.js new file mode 100644 index 000000000000..ca4fd689bea4 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/scenario.js @@ -0,0 +1,51 @@ +const crypto = require('crypto'); +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { SQSClient, SendMessageCommand, ReceiveMessageCommand } = require('@aws-sdk/client-sqs'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; +const queueUrl = `https://sqs.${region}.amazonaws.com/123456789012/my-queue`; +const messageBody = 'Hello from Sentry'; +const md5 = crypto.createHash('md5').update(messageBody).digest('hex'); + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new SQSClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + + nock(`https://sqs.${region}.amazonaws.com`) + .post('/') + .reply(200, JSON.stringify({ MessageId: 'message-id-1', MD5OfMessageBody: md5 }), { + 'content-type': 'application/x-amz-json-1.0', + }); + + await client.send(new SendMessageCommand({ QueueUrl: queueUrl, MessageBody: messageBody })); + + nock(`https://sqs.${region}.amazonaws.com`) + .post('/') + .reply( + 200, + JSON.stringify({ + Messages: [{ MessageId: 'message-id-2', Body: messageBody, MD5OfBody: md5, ReceiptHandle: 'handle' }], + }), + { 'content-type': 'application/x-amz-json-1.0' }, + ); + + await client.send(new ReceiveMessageCommand({ QueueUrl: queueUrl })); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/test.ts new file mode 100644 index 000000000000..f62e46f68021 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/sqs/test.ts @@ -0,0 +1,52 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - SQS', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments SQS send and receive, setting messaging attributes', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'my-queue send', + op: 'rpc', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'rpc.system': 'aws-api', + 'rpc.method': 'SendMessage', + 'rpc.service': 'SQS', + 'messaging.system': 'aws_sqs', + 'messaging.destination.name': 'my-queue', + 'url.full': 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue', + 'messaging.message.id': 'message-id-1', + 'otel.kind': 'PRODUCER', + }), + }), + expect.objectContaining({ + description: 'my-queue receive', + op: 'rpc', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'rpc.method': 'ReceiveMessage', + 'rpc.service': 'SQS', + 'messaging.system': 'aws_sqs', + 'messaging.destination.name': 'my-queue', + 'messaging.operation.type': 'receive', + 'messaging.batch.message_count': 1, + 'otel.kind': 'CONSUMER', + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/scenario.js new file mode 100644 index 000000000000..28057990c8c5 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/scenario.js @@ -0,0 +1,36 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/aws-serverless'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + tracesSampleRate: 1.0, + transport: loggingTransport, +}); + +const { SFNClient, StartExecutionCommand } = require('@aws-sdk/client-sfn'); +const nock = require('nock'); + +nock.disableNetConnect(); + +const region = 'us-east-1'; +const stateMachineArn = 'arn:aws:states:us-east-1:123456789012:stateMachine:my-state-machine'; + +async function run() { + await Sentry.startSpan({ name: 'Test Transaction' }, async () => { + const client = new SFNClient({ + region, + credentials: { accessKeyId: 'aws-test-key', secretAccessKey: 'aws-test-secret' }, + maxAttempts: 1, + }); + + nock(`https://states.${region}.amazonaws.com`) + .post('/') + .reply(200, JSON.stringify({ executionArn: `${stateMachineArn}:execution-1`, startDate: 1 }), { + 'content-type': 'application/x-amz-json-1.0', + }); + + await client.send(new StartExecutionCommand({ stateMachineArn, input: '{}' })); + }); +} + +run(); diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/test.ts new file mode 100644 index 000000000000..430fe5a00420 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/aws-serverless/aws-integration/stepfunctions/test.ts @@ -0,0 +1,36 @@ +import { afterAll, describe, expect, test } from 'vitest'; +import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; + +describe('awsIntegration - StepFunctions', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('auto-instruments StepFunctions operations, setting the state machine ARN', async () => { + await createRunner(__dirname, 'scenario.js') + .ignore('event') + .expect({ + transaction: { + transaction: 'Test Transaction', + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'SFN.StartExecution', + op: 'rpc', + origin: 'auto.otel.aws', + data: expect.objectContaining({ + 'sentry.origin': 'auto.otel.aws', + 'rpc.system': 'aws-api', + 'rpc.method': 'StartExecution', + 'rpc.service': 'SFN', + 'aws.step_functions.state_machine.arn': + 'arn:aws:states:us-east-1:123456789012:stateMachine:my-state-machine', + 'otel.kind': 'CLIENT', + }), + }), + ]), + }, + }) + .start() + .completed(); + }); +}); diff --git a/yarn.lock b/yarn.lock index e6d958af0dd5..d2118591b082 100644 --- a/yarn.lock +++ b/yarn.lock @@ -734,7 +734,154 @@ "@smithy/util-utf8" "^4.2.0" tslib "^2.6.2" -"@aws-sdk/client-s3@^3.1041.0": +"@aws-sdk/client-dynamodb@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1041.0.tgz#3546d3527c73c3c8ebc8b5b5424f8e1a4a90230e" + integrity sha512-q0dhIfdm3R9EEElaUXvoLD0EBm4KYPcJC4So/skToMPACiznNgVI2Vup4PKM716KTaDsIcF8V1EA7s33H7oWMg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/dynamodb-codec" "^3.973.8" + "@aws-sdk/middleware-endpoint-discovery" "^3.972.11" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.3.0" + tslib "^2.6.2" + +"@aws-sdk/client-kinesis@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-kinesis/-/client-kinesis-3.1041.0.tgz#2cb45017df8d2f0c761ee136ab99b5db92dd689f" + integrity sha512-FxBNTRbsqhltzU5r5k9/Df5xK4be73+3grhy9yFIsNItIL6J4QP8u/YDoYx0S6og6nRjhLNcU2jGK0UVqX/qzw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/eventstream-serde-browser" "^4.2.14" + "@smithy/eventstream-serde-config-resolver" "^4.3.14" + "@smithy/eventstream-serde-node" "^4.2.14" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.3.0" + tslib "^2.6.2" + +"@aws-sdk/client-lambda@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.1041.0.tgz#75396d2d18a7b969d1f388fbd88950a5fcd4bc02" + integrity sha512-J8zz0t+HPLwJblG4PdVlAJ93DxtMkYHHfD+lpTvmzQ6LBBfexbC+d31l8DcmUrbV2dK8dCreldjYlXSe/X6sQA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/eventstream-serde-browser" "^4.2.14" + "@smithy/eventstream-serde-config-resolver" "^4.3.14" + "@smithy/eventstream-serde-node" "^4.2.14" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-stream" "^4.5.25" + "@smithy/util-utf8" "^4.2.2" + "@smithy/util-waiter" "^4.3.0" + tslib "^2.6.2" + +"@aws-sdk/client-s3@3.1041.0": version "3.1041.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1041.0.tgz#474b3f99a688554b51d5c65aed713605408adbc8" integrity sha512-sQV14bIqslnBHuSlLMD+fc3pH+ajop6vnrFlJ4wM4JDqcYwVik4O+9srnZUrkesFw5y+CN0GfOQ06CAgtC4mjQ== @@ -795,6 +942,188 @@ "@smithy/util-waiter" "^4.3.0" tslib "^2.6.2" +"@aws-sdk/client-secrets-manager@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.1041.0.tgz#ffadb29bfb0c33000fc312632954f92d69999e74" + integrity sha512-dr4AbZ5hIDyecKHWyYy0LhK3h6q/jd6QWem46wyHulJ6IBRPENlpB7iXo7KKFWkgKSweCEqjHVB5W+3WB4JiYw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/client-sfn@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sfn/-/client-sfn-3.1041.0.tgz#ce0e66ab24bcd39cff6e410f47ebd700da8c42d3" + integrity sha512-13IXU/aoxY0do8SjIOlpU8FouoPclhrJEqrox3fzynk2jz4ccdPxYLQM+rSQJxpDTUdQ6HfdvOtIvaFRK8DQMA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/client-sns@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sns/-/client-sns-3.1041.0.tgz#6043e92c361bbdae5b2f9443c5267a7ca2cfe079" + integrity sha512-Fv5dOKbdCmXswAlPW1rDWQ7Ui5RqXr9iQ3NyeZ91PhHLJiJPCvqeLjQuJHfYiDZbMK7okv7Ne/t3+HcQRmJ3Jw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + +"@aws-sdk/client-sqs@3.1041.0": + version "3.1041.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-3.1041.0.tgz#47bf598f23503b58faa3a1f0df8978b0546fa2dc" + integrity sha512-WXKNzmt9e1mNNzdedR6/X8xJuRsM8L5qCbLFLdBEd8gh3R2JqrLXSEwXmtg07aUeT+KGTOoIn23BdfMjM6KEMw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "^3.974.8" + "@aws-sdk/credential-provider-node" "^3.972.39" + "@aws-sdk/middleware-host-header" "^3.972.10" + "@aws-sdk/middleware-logger" "^3.972.10" + "@aws-sdk/middleware-recursion-detection" "^3.972.11" + "@aws-sdk/middleware-sdk-sqs" "^3.972.22" + "@aws-sdk/middleware-user-agent" "^3.972.38" + "@aws-sdk/region-config-resolver" "^3.972.13" + "@aws-sdk/types" "^3.973.8" + "@aws-sdk/util-endpoints" "^3.996.8" + "@aws-sdk/util-user-agent-browser" "^3.972.10" + "@aws-sdk/util-user-agent-node" "^3.973.24" + "@smithy/config-resolver" "^4.4.17" + "@smithy/core" "^3.23.17" + "@smithy/fetch-http-handler" "^5.3.17" + "@smithy/hash-node" "^4.2.14" + "@smithy/invalid-dependency" "^4.2.14" + "@smithy/md5-js" "^4.2.14" + "@smithy/middleware-content-length" "^4.2.14" + "@smithy/middleware-endpoint" "^4.4.32" + "@smithy/middleware-retry" "^4.5.7" + "@smithy/middleware-serde" "^4.2.20" + "@smithy/middleware-stack" "^4.2.14" + "@smithy/node-config-provider" "^4.3.14" + "@smithy/node-http-handler" "^4.6.1" + "@smithy/protocol-http" "^5.3.14" + "@smithy/smithy-client" "^4.12.13" + "@smithy/types" "^4.14.1" + "@smithy/url-parser" "^4.2.14" + "@smithy/util-base64" "^4.3.2" + "@smithy/util-body-length-browser" "^4.2.2" + "@smithy/util-body-length-node" "^4.2.3" + "@smithy/util-defaults-mode-browser" "^4.3.49" + "@smithy/util-defaults-mode-node" "^4.2.54" + "@smithy/util-endpoints" "^3.4.2" + "@smithy/util-middleware" "^4.2.14" + "@smithy/util-retry" "^4.3.6" + "@smithy/util-utf8" "^4.2.2" + tslib "^2.6.2" + "@aws-sdk/core@^3.973.5", "@aws-sdk/core@^3.973.6", "@aws-sdk/core@^3.974.8": version "3.974.8" resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.974.8.tgz#cdd51195a31322f1e429e66919eb18da8944c081" @@ -815,6 +1144,20 @@ "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" +"@aws-sdk/core@^3.974.20": + version "3.974.20" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.974.20.tgz#fc9727897662e148fad2276995298f56b587c3ab" + integrity sha512-7sDi2B2N3mc3nf1nz6FyEx/FCrJ1N1QnBmraHHQNabFaeAh2IaOOLml48/rHOD1bICHgTRkbBgNTvUzEr5Z35g== + dependencies: + "@aws-sdk/types" "^3.973.12" + "@aws-sdk/xml-builder" "^3.972.29" + "@aws/lambda-invoke-store" "^0.2.2" + "@smithy/core" "^3.24.6" + "@smithy/signature-v4" "^5.4.6" + "@smithy/types" "^4.14.3" + bowser "^2.11.0" + tslib "^2.6.2" + "@aws-sdk/crc64-nvme@^3.972.7": version "3.972.7" resolved "https://registry.yarnpkg.com/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz#0e56fb3ccc0242ed05ffd0bc993d724ce8b3dde2" @@ -978,6 +1321,24 @@ "@smithy/types" "^4.12.0" tslib "^2.6.2" +"@aws-sdk/dynamodb-codec@^3.973.8": + version "3.973.20" + resolved "https://registry.yarnpkg.com/@aws-sdk/dynamodb-codec/-/dynamodb-codec-3.973.20.tgz#9a98587c741fa72106c5c62622d8ae63a3134cb4" + integrity sha512-SFfxiqVgWeIe+RsJJNAMD//2IfehT4bLpGyNJRB0MgHmOIJtdcfMnR1k7KYyaHokSoQVdncVa9O9DIGa4eqcwg== + dependencies: + "@aws-sdk/core" "^3.974.20" + "@smithy/core" "^3.24.6" + "@smithy/types" "^4.14.3" + tslib "^2.6.2" + +"@aws-sdk/endpoint-cache@^3.972.7": + version "3.972.7" + resolved "https://registry.yarnpkg.com/@aws-sdk/endpoint-cache/-/endpoint-cache-3.972.7.tgz#aa586f465e351fb74eddf340e4f67252a9d5d80b" + integrity sha512-LkwS3ZOUNL5kHzmz3dDx8lE3HOhZmf2VGjbJ/tMUZJYWWl3J0RJTZM7RFz1MLt06WDVvlShcAjY/RzhYlqLL7g== + dependencies: + mnemonist "0.38.3" + tslib "^2.6.2" + "@aws-sdk/middleware-bucket-endpoint@^3.972.10": version "3.972.10" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz#d26aa88b441d6d1b6e9275ffdc61e0fbfb55a513" @@ -991,6 +1352,17 @@ "@smithy/util-config-provider" "^4.2.2" tslib "^2.6.2" +"@aws-sdk/middleware-endpoint-discovery@^3.972.11": + version "3.972.18" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.972.18.tgz#226d974c1ad33c18fbc2b34ba689af26cf8a86e5" + integrity sha512-1vKJt/6MBB/MBMRM3qzCMdW70syJY8u2DH+dq7yCnPn7wVJmyeAzAa/sK1lIbbYh8BVLbM5FspsT4zbe885gOw== + dependencies: + "@aws-sdk/endpoint-cache" "^3.972.7" + "@aws-sdk/types" "^3.973.12" + "@smithy/core" "^3.24.6" + "@smithy/types" "^4.14.3" + tslib "^2.6.2" + "@aws-sdk/middleware-expect-continue@^3.972.10": version "3.972.10" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz#b685287951156a5d093cfdd37364894c6a8c966c" @@ -1080,6 +1452,16 @@ "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" +"@aws-sdk/middleware-sdk-sqs@^3.972.22": + version "3.972.30" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.30.tgz#641d2931292055f3e3a38215eb446f46ffb89310" + integrity sha512-PVAj7VgWK/ZxCXnkgC4B7cdJyUN99Nsr7IEduHt4A1GieuB+ZnU5bSifHwapbr17wrFkmdxfSh+aA0Lj+Ads6w== + dependencies: + "@aws-sdk/types" "^3.973.12" + "@smithy/core" "^3.24.6" + "@smithy/types" "^4.14.3" + tslib "^2.6.2" + "@aws-sdk/middleware-ssec@^3.972.10": version "3.972.10" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz#46b5c030c0116f51110e18042ad3cf863ab5c81c" @@ -1236,6 +1618,14 @@ "@smithy/types" "^4.14.1" tslib "^2.6.2" +"@aws-sdk/types@^3.973.12": + version "3.973.12" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.12.tgz#a3ae50d325644e4e890030d187febbeef2d238ef" + integrity sha512-43ajd1NF0RMgX5k0hxCNUyEdrtFUsb2aHT2QvpktSC/2Eyb2Jr/JPVqdp0XIoaHWikZJq5tNWSLO6kB5q2eMCA== + dependencies: + "@smithy/types" "^4.14.3" + tslib "^2.6.2" + "@aws-sdk/util-arn-parser@^3.972.3": version "3.972.3" resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz#ed989862bbb172ce16d9e1cd5790e5fe367219c2" @@ -1315,6 +1705,15 @@ fast-xml-parser "5.7.2" tslib "^2.6.2" +"@aws-sdk/xml-builder@^3.972.29": + version "3.972.29" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.29.tgz#1fffe1dd3fbb84c034ff2f8008de8a6926a4a672" + integrity sha512-fk0niuGFxfi8yIJuMVM4mhwObkiQSuwZFj3tAPrLVx64Pk3BkrEIpqjzHKY4hKoEBUD6Jg/S74Zj9jy+5F3DnQ== + dependencies: + "@smithy/types" "^4.14.3" + fast-xml-parser "5.7.3" + tslib "^2.6.2" + "@aws/lambda-invoke-store@^0.2.2": version "0.2.3" resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz#f1137f56209ccc69c15f826242cbf37f828617dd" @@ -7823,6 +8222,15 @@ "@smithy/uuid" "^1.1.2" tslib "^2.6.2" +"@smithy/core@^3.24.6", "@smithy/core@^3.24.7": + version "3.24.7" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.24.7.tgz#040621b1150844abf763fc77691232ea0719a006" + integrity sha512-KoUi4M1f3BG6kzN1FnCwL7oyFptTbyBJKjR6yhSib+JHRdUmM1o+VwsFtJ66NZCkCzVfJMWRHJNo0R0jznp0Pg== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^4.14.4" + tslib "^2.6.2" + "@smithy/credential-provider-imds@^4.2.14", "@smithy/credential-provider-imds@^4.2.8": version "4.2.14" resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz#b5dcc198ee240eaf68069e7449bcec29ce279827" @@ -8089,6 +8497,15 @@ "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" +"@smithy/signature-v4@^5.4.6": + version "5.4.7" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.4.7.tgz#a56fc486928bb54d822f1f18f81a1e00328e78ce" + integrity sha512-LwQZazFayImv+IOm0S0enoLeUJwmAlhGC5O6YCcLWezyu08dF46GOxPOq35OpBIHkgd7OvNvBStIFwVNyrvoBw== + dependencies: + "@smithy/core" "^3.24.7" + "@smithy/types" "^4.14.4" + tslib "^2.6.2" + "@smithy/smithy-client@^4.11.1", "@smithy/smithy-client@^4.12.13": version "4.12.13" resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.12.13.tgz#dec184a1d2d5027370ae1582bddbdbc068c97da5" @@ -8109,6 +8526,13 @@ dependencies: tslib "^2.6.2" +"@smithy/types@^4.14.3", "@smithy/types@^4.14.4": + version "4.14.4" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.14.4.tgz#0c83b7e011d30730ec43fa13290e61a7ca234ccc" + integrity sha512-B2S9+UGm1+/pHkcx3ZoLVX1a+pmSk8rqxRR+ZsNqZaJ5q9FWX9AFGQVM4qG5+OBeQUZVy99HY8HqW8gK/wgXzQ== + dependencies: + tslib "^2.6.2" + "@smithy/url-parser@^4.2.14", "@smithy/url-parser@^4.2.8": version "4.2.14" resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.14.tgz#349a442a62eb5907533f204b73a010618198b073" @@ -17092,6 +17516,14 @@ fast-xml-builder@^1.1.5: dependencies: path-expression-matcher "^1.1.3" +fast-xml-builder@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c" + integrity sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q== + dependencies: + path-expression-matcher "^1.5.0" + xml-naming "^0.1.0" + fast-xml-parser@5.7.2, fast-xml-parser@^5.0.7: version "5.7.2" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" @@ -17102,6 +17534,16 @@ fast-xml-parser@5.7.2, fast-xml-parser@^5.0.7: path-expression-matcher "^1.5.0" strnum "^2.2.3" +fast-xml-parser@5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz#309b04b08d835defc62ab657a0bb340c0e0fbe6a" + integrity sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg== + dependencies: + "@nodable/entities" "^2.1.0" + fast-xml-builder "^1.1.7" + path-expression-matcher "^1.5.0" + strnum "^2.2.3" + fast-xml-parser@^4.4.1: version "4.5.6" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.6.tgz#4ff57d4aca13a2d11aa42ad460495cf00f32b655" @@ -22075,6 +22517,13 @@ mlly@^1.3.0, mlly@^1.4.0, mlly@^1.5.0, mlly@^1.6.1, mlly@^1.7.1, mlly@^1.7.4, ml pkg-types "^1.3.1" ufo "^1.6.3" +mnemonist@0.38.3: + version "0.38.3" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" + integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== + dependencies: + obliterator "^1.6.1" + mocked-exports@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/mocked-exports/-/mocked-exports-0.1.1.tgz#6916efea9a9dd0f4abd6a0a72526f56a76c966ea" @@ -23307,6 +23756,11 @@ object.values@^1.1.6, object.values@^1.2.1: define-properties "^1.2.1" es-object-atoms "^1.0.0" +obliterator@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" + integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -31018,6 +31472,11 @@ xml-name-validator@^4.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xml-naming@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/xml-naming/-/xml-naming-0.1.0.tgz#8ab7106c5b8d23caa2fabac1cadf17136379fbd8" + integrity sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw== + xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" From ec344112854b10a9b3ad62e5b1989c7de8b109c6 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Mon, 15 Jun 2026 15:01:44 +0200 Subject: [PATCH 2/2] dedupe deps --- yarn.lock | 108 ++++-------------------------------------------------- 1 file changed, 8 insertions(+), 100 deletions(-) diff --git a/yarn.lock b/yarn.lock index d2118591b082..53fa2a7d1855 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1124,27 +1124,7 @@ "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/core@^3.973.5", "@aws-sdk/core@^3.973.6", "@aws-sdk/core@^3.974.8": - version "3.974.8" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.974.8.tgz#cdd51195a31322f1e429e66919eb18da8944c081" - integrity sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw== - dependencies: - "@aws-sdk/types" "^3.973.8" - "@aws-sdk/xml-builder" "^3.972.22" - "@smithy/core" "^3.23.17" - "@smithy/node-config-provider" "^4.3.14" - "@smithy/property-provider" "^4.2.14" - "@smithy/protocol-http" "^5.3.14" - "@smithy/signature-v4" "^5.3.14" - "@smithy/smithy-client" "^4.12.13" - "@smithy/types" "^4.14.1" - "@smithy/util-base64" "^4.3.2" - "@smithy/util-middleware" "^4.2.14" - "@smithy/util-retry" "^4.3.6" - "@smithy/util-utf8" "^4.2.2" - tslib "^2.6.2" - -"@aws-sdk/core@^3.974.20": +"@aws-sdk/core@^3.973.5", "@aws-sdk/core@^3.973.6", "@aws-sdk/core@^3.974.20", "@aws-sdk/core@^3.974.8": version "3.974.20" resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.974.20.tgz#fc9727897662e148fad2276995298f56b587c3ab" integrity sha512-7sDi2B2N3mc3nf1nz6FyEx/FCrJ1N1QnBmraHHQNabFaeAh2IaOOLml48/rHOD1bICHgTRkbBgNTvUzEr5Z35g== @@ -1610,15 +1590,7 @@ "@smithy/types" "^4.14.1" tslib "^2.6.2" -"@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.973.1", "@aws-sdk/types@^3.973.8": - version "3.973.8" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.8.tgz#7352cb74a5f8bae1218eee63e714cf94302911c5" - integrity sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw== - dependencies: - "@smithy/types" "^4.14.1" - tslib "^2.6.2" - -"@aws-sdk/types@^3.973.12": +"@aws-sdk/types@^3.222.0", "@aws-sdk/types@^3.973.1", "@aws-sdk/types@^3.973.12", "@aws-sdk/types@^3.973.8": version "3.973.12" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.973.12.tgz#a3ae50d325644e4e890030d187febbeef2d238ef" integrity sha512-43ajd1NF0RMgX5k0hxCNUyEdrtFUsb2aHT2QvpktSC/2Eyb2Jr/JPVqdp0XIoaHWikZJq5tNWSLO6kB5q2eMCA== @@ -1695,16 +1667,6 @@ "@smithy/util-config-provider" "^4.2.2" tslib "^2.6.2" -"@aws-sdk/xml-builder@^3.972.22": - version "3.972.22" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz#1e44ca9fd9c3fdc3d9af9540ced024f34cfc60b2" - integrity sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA== - dependencies: - "@nodable/entities" "2.1.0" - "@smithy/types" "^4.14.1" - fast-xml-parser "5.7.2" - tslib "^2.6.2" - "@aws-sdk/xml-builder@^3.972.29": version "3.972.29" resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.29.tgz#1fffe1dd3fbb84c034ff2f8008de8a6926a4a672" @@ -5968,7 +5930,7 @@ resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-14.2.13.tgz#859b38aaa57ffe1351d08f9166724936c9e6b365" integrity sha512-RQx/rGX7K/+R55x1R6Ax1JzyeHi8cW11dEXpzHWipyuSpusQLUN53F02eMB4VTakXsL3mFNWWy4bX3/LSq8/9w== -"@nodable/entities@2.1.0", "@nodable/entities@^2.1.0": +"@nodable/entities@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA== @@ -8206,23 +8168,7 @@ "@smithy/util-middleware" "^4.2.14" tslib "^2.6.2" -"@smithy/core@^3.22.0", "@smithy/core@^3.23.17": - version "3.23.17" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.23.17.tgz#23d02277c8d6d30a1605afd756696265e48ed67e" - integrity sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ== - dependencies: - "@smithy/protocol-http" "^5.3.14" - "@smithy/types" "^4.14.1" - "@smithy/url-parser" "^4.2.14" - "@smithy/util-base64" "^4.3.2" - "@smithy/util-body-length-browser" "^4.2.2" - "@smithy/util-middleware" "^4.2.14" - "@smithy/util-stream" "^4.5.25" - "@smithy/util-utf8" "^4.2.2" - "@smithy/uuid" "^1.1.2" - tslib "^2.6.2" - -"@smithy/core@^3.24.6", "@smithy/core@^3.24.7": +"@smithy/core@^3.22.0", "@smithy/core@^3.23.17", "@smithy/core@^3.24.6", "@smithy/core@^3.24.7": version "3.24.7" resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.24.7.tgz#040621b1150844abf763fc77691232ea0719a006" integrity sha512-KoUi4M1f3BG6kzN1FnCwL7oyFptTbyBJKjR6yhSib+JHRdUmM1o+VwsFtJ66NZCkCzVfJMWRHJNo0R0jznp0Pg== @@ -8483,21 +8429,7 @@ "@smithy/types" "^4.14.1" tslib "^2.6.2" -"@smithy/signature-v4@^5.3.14": - version "5.3.14" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.14.tgz#2b28c7d190301a67a520227a2343d1e7bb1c6d22" - integrity sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA== - dependencies: - "@smithy/is-array-buffer" "^4.2.2" - "@smithy/protocol-http" "^5.3.14" - "@smithy/types" "^4.14.1" - "@smithy/util-hex-encoding" "^4.2.2" - "@smithy/util-middleware" "^4.2.14" - "@smithy/util-uri-escape" "^4.2.2" - "@smithy/util-utf8" "^4.2.2" - tslib "^2.6.2" - -"@smithy/signature-v4@^5.4.6": +"@smithy/signature-v4@^5.3.14", "@smithy/signature-v4@^5.4.6": version "5.4.7" resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.4.7.tgz#a56fc486928bb54d822f1f18f81a1e00328e78ce" integrity sha512-LwQZazFayImv+IOm0S0enoLeUJwmAlhGC5O6YCcLWezyu08dF46GOxPOq35OpBIHkgd7OvNvBStIFwVNyrvoBw== @@ -8519,14 +8451,7 @@ "@smithy/util-stream" "^4.5.25" tslib "^2.6.2" -"@smithy/types@^4.12.0", "@smithy/types@^4.14.1": - version "4.14.1" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.14.1.tgz#aba92b4cdb406f2a2b062e82f1e3728d809a7c23" - integrity sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg== - dependencies: - tslib "^2.6.2" - -"@smithy/types@^4.14.3", "@smithy/types@^4.14.4": +"@smithy/types@^4.12.0", "@smithy/types@^4.14.1", "@smithy/types@^4.14.3", "@smithy/types@^4.14.4": version "4.14.4" resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.14.4.tgz#0c83b7e011d30730ec43fa13290e61a7ca234ccc" integrity sha512-B2S9+UGm1+/pHkcx3ZoLVX1a+pmSk8rqxRR+ZsNqZaJ5q9FWX9AFGQVM4qG5+OBeQUZVy99HY8HqW8gK/wgXzQ== @@ -17509,13 +17434,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.2.tgz#8af3d4fc9d3e71b11572cc2673b514a7d1a8c8ec" integrity sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ== -fast-xml-builder@^1.1.5: - version "1.1.7" - resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.1.7.tgz#b445dfa48d5e7636a50d7ff39c7f4254552bfdff" - integrity sha512-Yh7/7rQuMXICNr0oMYDR2yHP6oUvmQsTToFeOWj/kIDhAwQ+c4Ol/lbcwOmEM5OHYQmh6S6EQSQ1sljCKP36bQ== - dependencies: - path-expression-matcher "^1.1.3" - fast-xml-builder@^1.1.7: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c" @@ -17524,17 +17442,7 @@ fast-xml-builder@^1.1.7: path-expression-matcher "^1.5.0" xml-naming "^0.1.0" -fast-xml-parser@5.7.2, fast-xml-parser@^5.0.7: - version "5.7.2" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" - integrity sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w== - dependencies: - "@nodable/entities" "^2.1.0" - fast-xml-builder "^1.1.5" - path-expression-matcher "^1.5.0" - strnum "^2.2.3" - -fast-xml-parser@5.7.3: +fast-xml-parser@5.7.3, fast-xml-parser@^5.0.7: version "5.7.3" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz#309b04b08d835defc62ab657a0bb340c0e0fbe6a" integrity sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg== @@ -24446,7 +24354,7 @@ path-exists@^5.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== -path-expression-matcher@^1.1.3, path-expression-matcher@^1.5.0: +path-expression-matcher@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a" integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==