autotel-aws 0.13.13 → 0.13.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attributes.cjs +155 -46
- package/dist/attributes.cjs.map +1 -1
- package/dist/attributes.d.cts +64 -62
- package/dist/attributes.d.cts.map +1 -0
- package/dist/attributes.d.ts +64 -62
- package/dist/attributes.d.ts.map +1 -0
- package/dist/attributes.js +146 -3
- package/dist/attributes.js.map +1 -1
- package/dist/cloudwatch.cjs +324 -358
- package/dist/cloudwatch.cjs.map +1 -1
- package/dist/cloudwatch.d.cts +126 -153
- package/dist/cloudwatch.d.cts.map +1 -0
- package/dist/cloudwatch.d.ts +126 -153
- package/dist/cloudwatch.d.ts.map +1 -0
- package/dist/cloudwatch.js +323 -356
- package/dist/cloudwatch.js.map +1 -1
- package/dist/config-D8QZwF1e.d.ts +123 -0
- package/dist/config-D8QZwF1e.d.ts.map +1 -0
- package/dist/config-SPkMWWXY.d.cts +123 -0
- package/dist/config-SPkMWWXY.d.cts.map +1 -0
- package/dist/dynamodb.cjs +89 -11
- package/dist/dynamodb.cjs.map +1 -1
- package/dist/dynamodb.d.cts +15 -63
- package/dist/dynamodb.d.cts.map +1 -0
- package/dist/dynamodb.d.ts +15 -63
- package/dist/dynamodb.d.ts.map +1 -0
- package/dist/dynamodb.js +90 -4
- package/dist/dynamodb.js.map +1 -1
- package/dist/eventbridge.cjs +423 -261
- package/dist/eventbridge.cjs.map +1 -1
- package/dist/eventbridge.d.cts +113 -174
- package/dist/eventbridge.d.cts.map +1 -0
- package/dist/eventbridge.d.ts +113 -174
- package/dist/eventbridge.d.ts.map +1 -0
- package/dist/eventbridge.js +422 -259
- package/dist/eventbridge.js.map +1 -1
- package/dist/index.cjs +117 -241
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -55
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +42 -55
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -41
- package/dist/index.js.map +1 -1
- package/dist/kinesis.cjs +485 -20
- package/dist/kinesis.cjs.map +1 -1
- package/dist/kinesis.d.cts +179 -226
- package/dist/kinesis.d.cts.map +1 -0
- package/dist/kinesis.d.ts +179 -226
- package/dist/kinesis.d.ts.map +1 -0
- package/dist/kinesis.js +484 -5
- package/dist/kinesis.js.map +1 -1
- package/dist/lambda-B0LQa5vS.d.ts +168 -0
- package/dist/lambda-B0LQa5vS.d.ts.map +1 -0
- package/dist/lambda-DR33vPpL.cjs +500 -0
- package/dist/lambda-DR33vPpL.cjs.map +1 -0
- package/dist/lambda-DYyKH-f-.js +453 -0
- package/dist/lambda-DYyKH-f-.js.map +1 -0
- package/dist/lambda-DnroO4Od.d.cts +168 -0
- package/dist/lambda-DnroO4Od.d.cts.map +1 -0
- package/dist/lambda-auto.cjs +33 -16
- package/dist/lambda-auto.cjs.map +1 -1
- package/dist/lambda-auto.d.cts +1 -2
- package/dist/lambda-auto.d.ts +1 -2
- package/dist/lambda-auto.js +35 -15
- package/dist/lambda-auto.js.map +1 -1
- package/dist/lambda.cjs +11 -42
- package/dist/lambda.d.cts +3 -231
- package/dist/lambda.d.ts +3 -231
- package/dist/lambda.js +3 -5
- package/dist/s3.cjs +70 -11
- package/dist/s3.cjs.map +1 -1
- package/dist/s3.d.cts +15 -51
- package/dist/s3.d.cts.map +1 -0
- package/dist/s3.d.ts +15 -51
- package/dist/s3.d.ts.map +1 -0
- package/dist/s3.js +71 -4
- package/dist/s3.js.map +1 -1
- package/dist/sdk-C-o7ngkk.js +198 -0
- package/dist/sdk-C-o7ngkk.js.map +1 -0
- package/dist/sdk-C9Nvlh7R.cjs +222 -0
- package/dist/sdk-C9Nvlh7R.cjs.map +1 -0
- package/dist/sdk-CXqc4o_q.d.ts +135 -0
- package/dist/sdk-CXqc4o_q.d.ts.map +1 -0
- package/dist/sdk-DkAItj4z.d.cts +135 -0
- package/dist/sdk-DkAItj4z.d.cts.map +1 -0
- package/dist/sdk-wrapper-BDrcyEQ_.cjs +161 -0
- package/dist/sdk-wrapper-BDrcyEQ_.cjs.map +1 -0
- package/dist/sdk-wrapper-BVr62EfA.js +120 -0
- package/dist/sdk-wrapper-BVr62EfA.js.map +1 -0
- package/dist/sdk.cjs +8 -31
- package/dist/sdk.d.cts +3 -156
- package/dist/sdk.d.ts +3 -156
- package/dist/sdk.js +3 -6
- package/dist/sns.cjs +305 -16
- package/dist/sns.cjs.map +1 -1
- package/dist/sns.d.cts +109 -155
- package/dist/sns.d.cts.map +1 -0
- package/dist/sns.d.ts +109 -155
- package/dist/sns.d.ts.map +1 -0
- package/dist/sns.js +305 -5
- package/dist/sns.js.map +1 -1
- package/dist/sqs.cjs +455 -20
- package/dist/sqs.cjs.map +1 -1
- package/dist/sqs.d.cts +191 -240
- package/dist/sqs.d.cts.map +1 -0
- package/dist/sqs.d.ts +191 -240
- package/dist/sqs.d.ts.map +1 -0
- package/dist/sqs.js +454 -5
- package/dist/sqs.js.map +1 -1
- package/dist/step-functions.cjs +557 -32
- package/dist/step-functions.cjs.map +1 -1
- package/dist/step-functions.d.cts +155 -210
- package/dist/step-functions.d.cts.map +1 -0
- package/dist/step-functions.d.ts +155 -210
- package/dist/step-functions.d.ts.map +1 -0
- package/dist/step-functions.js +553 -5
- package/dist/step-functions.js.map +1 -1
- package/dist/testing.cjs +60 -58
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +20 -23
- package/dist/testing.d.cts.map +1 -0
- package/dist/testing.d.ts +20 -23
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +59 -57
- package/dist/testing.js.map +1 -1
- package/dist/{types-B2Mi8Goj.d.cts → types-0uHbJsBN.d.ts} +5 -7
- package/dist/types-0uHbJsBN.d.ts.map +1 -0
- package/dist/types-DOUDks8I.d.cts +71 -0
- package/dist/types-DOUDks8I.d.cts.map +1 -0
- package/dist/types-DOUDks8I.d.ts +71 -0
- package/dist/types-DOUDks8I.d.ts.map +1 -0
- package/dist/{types-BqTI4s4V.d.ts → types-iyHj03Q1.d.cts} +5 -7
- package/dist/types-iyHj03Q1.d.cts.map +1 -0
- package/dist/xray-B46i6z6K.js +59 -0
- package/dist/xray-B46i6z6K.js.map +1 -0
- package/dist/xray-CG4jciQs.d.ts +19 -0
- package/dist/xray-CG4jciQs.d.ts.map +1 -0
- package/dist/xray-Cd2UiVRA.cjs +75 -0
- package/dist/xray-Cd2UiVRA.cjs.map +1 -0
- package/dist/xray-DDcKCKKo.d.cts +19 -0
- package/dist/xray-DDcKCKKo.d.cts.map +1 -0
- package/dist/xray.cjs +10 -23
- package/dist/xray.d.cts +3 -24
- package/dist/xray.d.ts +3 -24
- package/dist/xray.js +3 -5
- package/package.json +5 -5
- package/dist/chunk-35F3UBOO.cjs +0 -48
- package/dist/chunk-35F3UBOO.cjs.map +0 -1
- package/dist/chunk-4THGOYZL.js +0 -387
- package/dist/chunk-4THGOYZL.js.map +0 -1
- package/dist/chunk-CIGXV6HA.js +0 -192
- package/dist/chunk-CIGXV6HA.js.map +0 -1
- package/dist/chunk-DGUM43GV.js +0 -10
- package/dist/chunk-DGUM43GV.js.map +0 -1
- package/dist/chunk-DHHLKZHI.cjs +0 -23
- package/dist/chunk-DHHLKZHI.cjs.map +0 -1
- package/dist/chunk-HMTKKKKP.cjs +0 -390
- package/dist/chunk-HMTKKKKP.cjs.map +0 -1
- package/dist/chunk-I4CKQ4RD.js +0 -153
- package/dist/chunk-I4CKQ4RD.js.map +0 -1
- package/dist/chunk-JEQ2X3Z6.cjs +0 -12
- package/dist/chunk-JEQ2X3Z6.cjs.map +0 -1
- package/dist/chunk-JL33WEVE.js +0 -341
- package/dist/chunk-JL33WEVE.js.map +0 -1
- package/dist/chunk-JMSFE6FJ.js +0 -24
- package/dist/chunk-JMSFE6FJ.js.map +0 -1
- package/dist/chunk-JPDJPOIB.js +0 -78
- package/dist/chunk-JPDJPOIB.js.map +0 -1
- package/dist/chunk-KNRQYDAS.cjs +0 -394
- package/dist/chunk-KNRQYDAS.cjs.map +0 -1
- package/dist/chunk-NQ65Y5AI.cjs +0 -195
- package/dist/chunk-NQ65Y5AI.cjs.map +0 -1
- package/dist/chunk-OB4XTAVK.cjs +0 -345
- package/dist/chunk-OB4XTAVK.cjs.map +0 -1
- package/dist/chunk-OHFR7WX5.js +0 -341
- package/dist/chunk-OHFR7WX5.js.map +0 -1
- package/dist/chunk-PZGYL7XZ.js +0 -40
- package/dist/chunk-PZGYL7XZ.js.map +0 -1
- package/dist/chunk-Q3DMMQ7K.cjs +0 -164
- package/dist/chunk-Q3DMMQ7K.cjs.map +0 -1
- package/dist/chunk-SPC4VYOI.cjs +0 -350
- package/dist/chunk-SPC4VYOI.cjs.map +0 -1
- package/dist/chunk-UZEJV2YD.cjs +0 -139
- package/dist/chunk-UZEJV2YD.cjs.map +0 -1
- package/dist/chunk-VZHQH75L.cjs +0 -26
- package/dist/chunk-VZHQH75L.cjs.map +0 -1
- package/dist/chunk-X6BY6PCK.js +0 -386
- package/dist/chunk-X6BY6PCK.js.map +0 -1
- package/dist/chunk-XOF2H2PI.cjs +0 -84
- package/dist/chunk-XOF2H2PI.cjs.map +0 -1
- package/dist/chunk-YG56NRIO.js +0 -131
- package/dist/chunk-YG56NRIO.js.map +0 -1
- package/dist/chunk-ZPDRKCAR.js +0 -21
- package/dist/chunk-ZPDRKCAR.js.map +0 -1
- package/dist/config-DbZv4bpy.d.ts +0 -125
- package/dist/config-srkLBXZH.d.cts +0 -125
- package/dist/lambda.cjs.map +0 -1
- package/dist/lambda.js.map +0 -1
- package/dist/sdk.cjs.map +0 -1
- package/dist/sdk.js.map +0 -1
- package/dist/types-B9IaHmGa.d.cts +0 -73
- package/dist/types-B9IaHmGa.d.ts +0 -73
- package/dist/xray.cjs.map +0 -1
- package/dist/xray.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sns/index.ts"],"names":[],"mappings":"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","file":"chunk-CIGXV6HA.js","sourcesContent":["/**\n * SNS-specific instrumentation\n *\n * Provides semantic helpers for tracing SNS operations with proper OpenTelemetry\n * messaging semantic conventions. Automatically sets `messaging.*` attributes.\n *\n * @example Publish to topic\n * ```typescript\n * import { traceSNS } from 'autotel-aws/sns';\n * import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';\n *\n * const sns = new SNSClient({});\n *\n * export const publishNotification = traceSNS({\n * topicArn: 'arn:aws:sns:us-east-1:123456789:notifications'\n * })(ctx => async (message: string, subject?: string) => {\n * const result = await sns.send(new PublishCommand({\n * TopicArn: 'arn:aws:sns:us-east-1:123456789:notifications',\n * Message: message,\n * Subject: subject\n * }));\n *\n * if (result.MessageId) {\n * ctx.setAttribute('messaging.message.id', result.MessageId);\n * }\n *\n * return result;\n * });\n *\n * // Usage: await publishNotification('User signed up', 'New User');\n * ```\n *\n * @example Publish to mobile endpoint\n * ```typescript\n * export const sendPushNotification = traceSNS({\n * operation: 'publish',\n * topicArn: 'arn:aws:sns:us-east-1:123456789:app/APNS/my-app'\n * })(ctx => async (endpointArn: string, payload: object) => {\n * ctx.setAttribute('aws.sns.target_arn', endpointArn);\n * return await sns.send(new PublishCommand({\n * TargetArn: endpointArn,\n * Message: JSON.stringify(payload),\n * MessageStructure: 'json'\n * }));\n * });\n * ```\n */\n\nimport { trace, type TraceContext } from 'autotel';\nimport { context, propagation, SpanStatusCode } from '@opentelemetry/api';\nimport { buildSNSAttributes } from '../attributes';\nimport { wrapSDKClient } from '../common/sdk-wrapper';\n\n/**\n * SNS operation configuration\n */\nexport interface TraceSNSConfig {\n /**\n * SNS topic ARN\n * Sets `messaging.destination.name` attribute.\n */\n topicArn: string;\n\n /**\n * Operation type (defaults to 'publish')\n */\n operation?: 'publish' | 'subscribe' | 'unsubscribe';\n}\n\n/**\n * Trace SNS operations with semantic attributes\n *\n * Creates a traced function that automatically sets SNS messaging semantic attributes\n * following OpenTelemetry conventions.\n *\n * @param config - SNS operation configuration\n * @returns A higher-order function that wraps your SNS operation with tracing\n *\n * @remarks\n * Semantic attributes set automatically:\n * - `messaging.system` - 'aws_sns'\n * - `messaging.destination.name` - Topic ARN\n * - `messaging.operation` - 'publish'\n *\n * Additional attributes you should set in your handler:\n * - `messaging.message.id` - Message ID from response\n * - `aws.sns.target_arn` - Target ARN for direct publishing\n *\n * @see https://opentelemetry.io/docs/specs/semconv/messaging/aws-sns/\n */\nexport function traceSNS(config: TraceSNSConfig) {\n const operation = config.operation ?? 'publish';\n\n return function wrapper<TArgs extends unknown[], TReturn>(\n fn: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): (...args: TArgs) => Promise<TReturn> {\n // Use autotel's trace() which properly handles the factory pattern\n return trace(\n `sns.${operation}`,\n (ctx: TraceContext) =>\n async (...args: TArgs): Promise<TReturn> => {\n // Set SNS semantic attributes\n ctx.setAttributes(buildSNSAttributes({ topicArn: config.topicArn }));\n\n // Get the user's handler and execute with forwarded arguments\n const handler = fn(ctx);\n return handler(...args);\n },\n );\n };\n}\n\n// ============================================================================\n// SNS Publisher - Publishes messages with automatic trace context injection\n// ============================================================================\n\n/**\n * Configuration for SNS Publisher\n */\nexport interface SNSPublisherConfig {\n /**\n * SNS Topic ARN\n */\n topicArn: string;\n\n /**\n * Inject W3C Trace Context into message attributes\n * Enables distributed tracing to SNS subscribers (e.g., Lambda, SQS)\n * @default true\n */\n injectTraceContext?: boolean;\n\n /**\n * Optional service name for tracing\n */\n service?: string;\n}\n\n/**\n * Message to publish via SNS Publisher\n */\nexport interface SNSPublishMessage {\n /**\n * Message body (string or JSON for message structure)\n */\n message: string;\n\n /**\n * Optional subject (for email/SMS subscriptions)\n */\n subject?: string;\n\n /**\n * Optional message attributes\n */\n attributes?: Record<string, { StringValue: string; DataType: string }>;\n\n /**\n * Optional target ARN for direct endpoint publishing\n */\n targetArn?: string;\n\n /**\n * Optional phone number for SMS\n */\n phoneNumber?: string;\n\n /**\n * Optional message structure ('json' for platform-specific messages)\n */\n messageStructure?: 'json';\n\n /**\n * Optional message group ID (for FIFO topics)\n */\n messageGroupId?: string;\n\n /**\n * Optional deduplication ID (for FIFO topics)\n */\n messageDeduplicationId?: string;\n}\n\n/**\n * SNS Publisher with automatic trace context injection\n *\n * Wraps an SNS client to automatically:\n * - Create spans for publish operations\n * - Inject W3C Trace Context into message attributes\n * - Set proper semantic attributes\n *\n * @example Basic usage\n * ```typescript\n * import { SNSPublisher } from 'autotel-aws/sns';\n * import { SNSClient } from '@aws-sdk/client-sns';\n *\n * const sns = new SNSClient({ region: 'us-east-1' });\n * const publisher = new SNSPublisher(sns, {\n * topicArn: 'arn:aws:sns:us-east-1:123456789:my-topic'\n * });\n *\n * // Publish with automatic trace context\n * const result = await publisher.publish({\n * message: 'Order completed',\n * subject: 'Order #12345'\n * });\n * console.log('Message ID:', result.messageId);\n * ```\n *\n * @example With custom attributes\n * ```typescript\n * await publisher.publish({\n * message: JSON.stringify({ orderId: '12345', status: 'completed' }),\n * attributes: {\n * 'eventType': { StringValue: 'ORDER_COMPLETED', DataType: 'String' },\n * 'priority': { StringValue: 'high', DataType: 'String' }\n * }\n * });\n * ```\n *\n * @example Batch publish\n * ```typescript\n * const results = await publisher.publishBatch([\n * { message: 'Event 1' },\n * { message: 'Event 2' },\n * { message: 'Event 3' }\n * ]);\n * console.log(`Published ${results.successful.length} messages`);\n * ```\n *\n * @example Direct endpoint publish\n * ```typescript\n * await publisher.publishToEndpoint({\n * targetArn: 'arn:aws:sns:us-east-1:123456789:endpoint/APNS/my-app/device-token',\n * message: JSON.stringify({\n * APNS: JSON.stringify({ aps: { alert: 'Hello!' } })\n * }),\n * messageStructure: 'json'\n * });\n * ```\n */\nexport class SNSPublisher<\n \n TClient extends { send: (command: any) => Promise<any> } = any,\n> {\n private client: TClient;\n private config: Required<Pick<SNSPublisherConfig, 'topicArn'>> & SNSPublisherConfig;\n private topicName: string;\n\n constructor(client: TClient, config: SNSPublisherConfig) {\n this.client = wrapSDKClient(client as any, config.service) as TClient;\n this.config = {\n injectTraceContext: true,\n ...config,\n };\n // Extract topic name from ARN (last segment)\n this.topicName = config.topicArn.split(':').pop() || 'unknown';\n }\n\n /**\n * Inject trace context into message attributes\n */\n private injectContext(\n attributes?: Record<string, { StringValue: string; DataType: string }>,\n ): Record<string, { StringValue: string; DataType: string }> {\n if (!this.config.injectTraceContext) {\n return attributes || {};\n }\n\n const carrier: Record<string, string> = {};\n propagation.inject(context.active(), carrier);\n\n const result = { ...attributes };\n\n if (carrier.traceparent) {\n result.traceparent = { StringValue: carrier.traceparent, DataType: 'String' };\n }\n if (carrier.tracestate) {\n result.tracestate = { StringValue: carrier.tracestate, DataType: 'String' };\n }\n if (carrier.baggage) {\n result.baggage = { StringValue: carrier.baggage, DataType: 'String' };\n }\n\n return result;\n }\n\n /**\n * Publish a message to the topic\n *\n * @param message - Message to publish\n * @returns Promise with message ID and sequence number\n */\n async publish(message: SNSPublishMessage): Promise<{\n messageId?: string;\n sequenceNumber?: string;\n }> {\n return trace(`sns.publish`, async (ctx: TraceContext) => {\n ctx.setAttributes(buildSNSAttributes({ topicArn: this.config.topicArn }));\n ctx.setAttribute('messaging.destination.name', this.topicName);\n\n const input = {\n TopicArn: message.targetArn ? undefined : this.config.topicArn,\n TargetArn: message.targetArn,\n PhoneNumber: message.phoneNumber,\n Message: message.message,\n Subject: message.subject,\n MessageAttributes: this.injectContext(message.attributes),\n MessageStructure: message.messageStructure,\n ...(message.messageGroupId && { MessageGroupId: message.messageGroupId }),\n ...(message.messageDeduplicationId && {\n MessageDeduplicationId: message.messageDeduplicationId,\n }),\n };\n\n try {\n const { PublishCommand } = await import('@aws-sdk/client-sns');\n const result = await this.client.send(new PublishCommand(input));\n\n if (result.MessageId) {\n ctx.setAttribute('messaging.message.id', result.MessageId);\n }\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return {\n messageId: result.MessageId,\n sequenceNumber: result.SequenceNumber,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Publish failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Publish multiple messages in a batch\n *\n * @param messages - Array of messages to publish (max 10)\n * @returns Promise with successful and failed message results\n */\n async publishBatch(messages: SNSPublishMessage[]): Promise<{\n successful: Array<{ id: string; messageId?: string; sequenceNumber?: string }>;\n failed: Array<{ id: string; code?: string; message?: string }>;\n }> {\n return trace(`sns.publishBatch`, async (ctx: TraceContext) => {\n ctx.setAttributes(buildSNSAttributes({ topicArn: this.config.topicArn }));\n ctx.setAttribute('messaging.batch.message_count', messages.length);\n\n const entries = messages.map((msg, index) => ({\n Id: String(index),\n Message: msg.message,\n Subject: msg.subject,\n MessageAttributes: this.injectContext(msg.attributes),\n MessageStructure: msg.messageStructure,\n ...(msg.messageGroupId && { MessageGroupId: msg.messageGroupId }),\n ...(msg.messageDeduplicationId && {\n MessageDeduplicationId: msg.messageDeduplicationId,\n }),\n }));\n\n try {\n const { PublishBatchCommand } = await import('@aws-sdk/client-sns');\n const result = await this.client.send(\n new PublishBatchCommand({\n TopicArn: this.config.topicArn,\n PublishBatchRequestEntries: entries,\n }),\n );\n\n const successful =\n result.Successful?.map((s: { Id?: string; MessageId?: string; SequenceNumber?: string }) => ({\n id: s.Id!,\n messageId: s.MessageId,\n sequenceNumber: s.SequenceNumber,\n })) || [];\n\n const failed =\n result.Failed?.map((f: { Id?: string; Code?: string; Message?: string }) => ({\n id: f.Id!,\n code: f.Code,\n message: f.Message,\n })) || [];\n\n ctx.setAttribute('messaging.sns.successful_count', successful.length);\n ctx.setAttribute('messaging.sns.failed_count', failed.length);\n\n if (failed.length > 0) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${failed.length} messages failed`,\n });\n } else {\n ctx.setStatus({ code: SpanStatusCode.OK });\n }\n\n return { successful, failed };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Batch publish failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Publish to a specific endpoint (mobile push, etc.)\n *\n * @param message - Message with targetArn set\n * @returns Promise with message ID\n */\n async publishToEndpoint(\n message: Omit<SNSPublishMessage, 'targetArn'> & { targetArn: string },\n ): Promise<{ messageId?: string }> {\n return trace(`sns.publishToEndpoint`, async (ctx: TraceContext) => {\n ctx.setAttribute('messaging.system', 'aws_sns');\n ctx.setAttribute('aws.sns.target_arn', message.targetArn);\n\n const input = {\n TargetArn: message.targetArn,\n Message: message.message,\n Subject: message.subject,\n MessageAttributes: this.injectContext(message.attributes),\n MessageStructure: message.messageStructure,\n };\n\n try {\n const { PublishCommand } = await import('@aws-sdk/client-sns');\n const result = await this.client.send(new PublishCommand(input));\n\n if (result.MessageId) {\n ctx.setAttribute('messaging.message.id', result.MessageId);\n }\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return { messageId: result.MessageId };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Endpoint publish failed',\n });\n throw error;\n }\n });\n }\n}\n"]}
|
package/dist/chunk-DGUM43GV.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export { __require };
|
|
9
|
-
//# sourceMappingURL=chunk-DGUM43GV.js.map
|
|
10
|
-
//# sourceMappingURL=chunk-DGUM43GV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-DGUM43GV.js"}
|
package/dist/chunk-DHHLKZHI.cjs
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkQ3DMMQ7K_cjs = require('./chunk-Q3DMMQ7K.cjs');
|
|
4
|
-
var autotel = require('autotel');
|
|
5
|
-
|
|
6
|
-
function traceS3(config) {
|
|
7
|
-
return function wrapper(fn) {
|
|
8
|
-
return autotel.trace(
|
|
9
|
-
`s3.${config.operation}`,
|
|
10
|
-
(ctx) => async (...args) => {
|
|
11
|
-
if (config.bucket) {
|
|
12
|
-
ctx.setAttributes(chunkQ3DMMQ7K_cjs.buildS3Attributes({ bucket: config.bucket }));
|
|
13
|
-
}
|
|
14
|
-
const handler = fn(ctx);
|
|
15
|
-
return handler(...args);
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
exports.traceS3 = traceS3;
|
|
22
|
-
//# sourceMappingURL=chunk-DHHLKZHI.cjs.map
|
|
23
|
-
//# sourceMappingURL=chunk-DHHLKZHI.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/s3/index.ts"],"names":["trace","buildS3Attributes"],"mappings":";;;;;AA6EO,SAAS,QAAQ,MAAA,EAAuB;AAC7C,EAAA,OAAO,SAAS,QACd,EAAA,EACsC;AAEtC,IAAA,OAAOA,aAAA;AAAA,MACL,CAAA,GAAA,EAAM,OAAO,SAAS,CAAA,CAAA;AAAA,MACtB,CAAC,GAAA,KACC,OAAA,GAAU,IAAA,KAAkC;AAE1C,QAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,UAAA,GAAA,CAAI,cAAcC,mCAAA,CAAkB,EAAE,QAAQ,MAAA,CAAO,MAAA,EAAQ,CAAC,CAAA;AAAA,QAChE;AAGA,QAAA,MAAM,OAAA,GAAU,GAAG,GAAG,CAAA;AACtB,QAAA,OAAO,OAAA,CAAQ,GAAG,IAAI,CAAA;AAAA,MACxB;AAAA,KACJ;AAAA,EACF,CAAA;AACF","file":"chunk-DHHLKZHI.cjs","sourcesContent":["/**\n * S3-specific instrumentation\n *\n * Provides semantic helpers for tracing S3 operations with proper OpenTelemetry\n * semantic conventions. Automatically sets `aws.s3.*` attributes.\n *\n * @example Basic usage with factory pattern\n * ```typescript\n * import { traceS3 } from 'autotel-aws/s3';\n * import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';\n *\n * const s3 = new S3Client({});\n *\n * export const getFile = traceS3({\n * operation: 'GetObject',\n * bucket: 'my-bucket'\n * })(ctx => async (key: string) => {\n * ctx.setAttribute('aws.s3.key', key);\n * return await s3.send(new GetObjectCommand({ Bucket: 'my-bucket', Key: key }));\n * });\n *\n * // Usage: await getFile('path/to/file.txt');\n * ```\n *\n * @example Dynamic bucket\n * ```typescript\n * export const getObject = traceS3({\n * operation: 'GetObject',\n * })(ctx => async (bucket: string, key: string) => {\n * ctx.setAttribute('aws.s3.bucket', bucket);\n * ctx.setAttribute('aws.s3.key', key);\n * return await s3.send(new GetObjectCommand({ Bucket: bucket, Key: key }));\n * });\n *\n * // Usage: await getObject('my-bucket', 'file.txt');\n * ```\n */\n\nimport { trace, type TraceContext } from 'autotel';\nimport { buildS3Attributes } from '../attributes';\n\n/**\n * S3 operation configuration\n */\nexport interface TraceS3Config {\n /**\n * S3 operation name (e.g., 'GetObject', 'PutObject', 'DeleteObject')\n * Used to generate the span name: `s3.{operation}`\n */\n operation: string;\n\n /**\n * Default bucket name for static configurations.\n * Can be overridden by setting `aws.s3.bucket` attribute in the handler.\n */\n bucket?: string;\n}\n\n/**\n * Trace S3 operations with semantic attributes\n *\n * Creates a traced function that automatically sets S3 semantic attributes\n * following OpenTelemetry conventions.\n *\n * @param config - S3 operation configuration\n * @returns A higher-order function that wraps your S3 operation with tracing\n *\n * @remarks\n * Semantic attributes set automatically:\n * - `aws.s3.bucket` - S3 bucket name (if provided in config)\n *\n * Additional attributes you should set in your handler:\n * - `aws.s3.key` - Object key\n * - `aws.s3.copy_source` - Source for copy operations\n *\n * @see https://opentelemetry.io/docs/specs/semconv/object-stores/s3/\n */\nexport function traceS3(config: TraceS3Config) {\n return function wrapper<TArgs extends unknown[], TReturn>(\n fn: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): (...args: TArgs) => Promise<TReturn> {\n // Use autotel's trace() which properly handles the factory pattern\n return trace(\n `s3.${config.operation}`,\n (ctx: TraceContext) =>\n async (...args: TArgs): Promise<TReturn> => {\n // Set S3 semantic attributes\n if (config.bucket) {\n ctx.setAttributes(buildS3Attributes({ bucket: config.bucket }));\n }\n\n // Get the user's handler and execute with forwarded arguments\n const handler = fn(ctx);\n return handler(...args);\n },\n );\n };\n}\n"]}
|
package/dist/chunk-HMTKKKKP.cjs
DELETED
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkUZEJV2YD_cjs = require('./chunk-UZEJV2YD.cjs');
|
|
4
|
-
var chunkQ3DMMQ7K_cjs = require('./chunk-Q3DMMQ7K.cjs');
|
|
5
|
-
var autotel = require('autotel');
|
|
6
|
-
var api = require('@opentelemetry/api');
|
|
7
|
-
|
|
8
|
-
function traceKinesis(config) {
|
|
9
|
-
return function wrapper(fn) {
|
|
10
|
-
return autotel.trace(
|
|
11
|
-
`kinesis.${config.operation}`,
|
|
12
|
-
(ctx) => async (...args) => {
|
|
13
|
-
ctx.setAttributes(
|
|
14
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
15
|
-
streamName: config.streamName,
|
|
16
|
-
shardId: config.shardId,
|
|
17
|
-
operation: config.operation
|
|
18
|
-
})
|
|
19
|
-
);
|
|
20
|
-
const handler = fn(ctx);
|
|
21
|
-
return handler(...args);
|
|
22
|
-
}
|
|
23
|
-
);
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
var KinesisProducer = class {
|
|
27
|
-
client;
|
|
28
|
-
config;
|
|
29
|
-
constructor(client, config) {
|
|
30
|
-
this.client = chunkUZEJV2YD_cjs.wrapSDKClient(client, config.service);
|
|
31
|
-
this.config = {
|
|
32
|
-
injectTraceContext: true,
|
|
33
|
-
...config
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Inject trace context into record data
|
|
38
|
-
*/
|
|
39
|
-
injectContext(data) {
|
|
40
|
-
let payload;
|
|
41
|
-
if (typeof data === "string") {
|
|
42
|
-
try {
|
|
43
|
-
payload = JSON.parse(data);
|
|
44
|
-
} catch {
|
|
45
|
-
payload = { _data: data };
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
payload = data;
|
|
49
|
-
}
|
|
50
|
-
if (this.config.injectTraceContext) {
|
|
51
|
-
const carrier = {};
|
|
52
|
-
api.propagation.inject(api.context.active(), carrier);
|
|
53
|
-
if (carrier.traceparent) {
|
|
54
|
-
payload = {
|
|
55
|
-
...payload,
|
|
56
|
-
_traceContext: {
|
|
57
|
-
traceparent: carrier.traceparent,
|
|
58
|
-
tracestate: carrier.tracestate,
|
|
59
|
-
baggage: carrier.baggage
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return Buffer.from(JSON.stringify(payload));
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Put a single record to the stream
|
|
68
|
-
*
|
|
69
|
-
* @param record - Record to put
|
|
70
|
-
* @returns Promise with shard ID and sequence number
|
|
71
|
-
*/
|
|
72
|
-
async putRecord(record) {
|
|
73
|
-
return autotel.trace(`kinesis.put`, async (ctx) => {
|
|
74
|
-
ctx.setAttributes(
|
|
75
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
76
|
-
streamName: this.config.streamName,
|
|
77
|
-
operation: "put"
|
|
78
|
-
})
|
|
79
|
-
);
|
|
80
|
-
const input = {
|
|
81
|
-
StreamName: this.config.streamName,
|
|
82
|
-
Data: this.injectContext(record.data),
|
|
83
|
-
PartitionKey: record.partitionKey,
|
|
84
|
-
...record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey },
|
|
85
|
-
...record.sequenceNumberForOrdering && {
|
|
86
|
-
SequenceNumberForOrdering: record.sequenceNumberForOrdering
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
try {
|
|
90
|
-
const { PutRecordCommand } = await import('@aws-sdk/client-kinesis');
|
|
91
|
-
const result = await this.client.send(new PutRecordCommand(input));
|
|
92
|
-
if (result.ShardId) {
|
|
93
|
-
ctx.setAttribute("aws.kinesis.shard_id", result.ShardId);
|
|
94
|
-
}
|
|
95
|
-
if (result.SequenceNumber) {
|
|
96
|
-
ctx.setAttribute("aws.kinesis.sequence_number", result.SequenceNumber);
|
|
97
|
-
}
|
|
98
|
-
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
99
|
-
return {
|
|
100
|
-
shardId: result.ShardId,
|
|
101
|
-
sequenceNumber: result.SequenceNumber,
|
|
102
|
-
encryptionType: result.EncryptionType
|
|
103
|
-
};
|
|
104
|
-
} catch (error) {
|
|
105
|
-
ctx.setStatus({
|
|
106
|
-
code: api.SpanStatusCode.ERROR,
|
|
107
|
-
message: error instanceof Error ? error.message : "Put failed"
|
|
108
|
-
});
|
|
109
|
-
throw error;
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Put multiple records in a batch
|
|
115
|
-
*
|
|
116
|
-
* @param records - Array of records to put (max 500)
|
|
117
|
-
* @returns Promise with successful and failed record results
|
|
118
|
-
*/
|
|
119
|
-
async putRecords(records) {
|
|
120
|
-
return autotel.trace(`kinesis.putBatch`, async (ctx) => {
|
|
121
|
-
ctx.setAttributes(
|
|
122
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
123
|
-
streamName: this.config.streamName,
|
|
124
|
-
operation: "put"
|
|
125
|
-
})
|
|
126
|
-
);
|
|
127
|
-
ctx.setAttribute("messaging.batch.message_count", records.length);
|
|
128
|
-
const entries = records.map((record) => ({
|
|
129
|
-
Data: this.injectContext(record.data),
|
|
130
|
-
PartitionKey: record.partitionKey,
|
|
131
|
-
...record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey }
|
|
132
|
-
}));
|
|
133
|
-
try {
|
|
134
|
-
const { PutRecordsCommand } = await import('@aws-sdk/client-kinesis');
|
|
135
|
-
const result = await this.client.send(
|
|
136
|
-
new PutRecordsCommand({
|
|
137
|
-
StreamName: this.config.streamName,
|
|
138
|
-
Records: entries
|
|
139
|
-
})
|
|
140
|
-
);
|
|
141
|
-
const successful = [];
|
|
142
|
-
const failed = [];
|
|
143
|
-
if (result.Records) {
|
|
144
|
-
for (const r of result.Records) {
|
|
145
|
-
const record = r;
|
|
146
|
-
if (record.ErrorCode) {
|
|
147
|
-
failed.push({ errorCode: record.ErrorCode, errorMessage: record.ErrorMessage });
|
|
148
|
-
} else {
|
|
149
|
-
successful.push({ shardId: record.ShardId, sequenceNumber: record.SequenceNumber });
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
ctx.setAttribute("messaging.kinesis.successful_count", successful.length);
|
|
154
|
-
ctx.setAttribute("messaging.kinesis.failed_count", result.FailedRecordCount || 0);
|
|
155
|
-
if (result.FailedRecordCount && result.FailedRecordCount > 0) {
|
|
156
|
-
ctx.setStatus({
|
|
157
|
-
code: api.SpanStatusCode.ERROR,
|
|
158
|
-
message: `${result.FailedRecordCount} records failed`
|
|
159
|
-
});
|
|
160
|
-
} else {
|
|
161
|
-
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
successful,
|
|
165
|
-
failed,
|
|
166
|
-
failedRecordCount: result.FailedRecordCount || 0
|
|
167
|
-
};
|
|
168
|
-
} catch (error) {
|
|
169
|
-
ctx.setStatus({
|
|
170
|
-
code: api.SpanStatusCode.ERROR,
|
|
171
|
-
message: error instanceof Error ? error.message : "Batch put failed"
|
|
172
|
-
});
|
|
173
|
-
throw error;
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
var KinesisConsumer = class {
|
|
179
|
-
client;
|
|
180
|
-
config;
|
|
181
|
-
constructor(client, config) {
|
|
182
|
-
this.client = chunkUZEJV2YD_cjs.wrapSDKClient(client, config.service);
|
|
183
|
-
this.config = {
|
|
184
|
-
extractTraceContext: true,
|
|
185
|
-
...config
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Extract trace context from record data
|
|
190
|
-
*/
|
|
191
|
-
extractContext(data) {
|
|
192
|
-
if (!this.config.extractTraceContext || !data?._traceContext) {
|
|
193
|
-
return void 0;
|
|
194
|
-
}
|
|
195
|
-
const tc = data._traceContext;
|
|
196
|
-
const carrier = {};
|
|
197
|
-
if (tc.traceparent) carrier.traceparent = tc.traceparent;
|
|
198
|
-
if (tc.tracestate) carrier.tracestate = tc.tracestate;
|
|
199
|
-
if (tc.baggage) carrier.baggage = tc.baggage;
|
|
200
|
-
return Object.keys(carrier).length > 0 ? carrier : void 0;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Parse raw record data
|
|
204
|
-
*/
|
|
205
|
-
parseRecord(record) {
|
|
206
|
-
const rawData = record.Data ? Buffer.from(record.Data).toString("utf8") : "";
|
|
207
|
-
let data;
|
|
208
|
-
try {
|
|
209
|
-
data = JSON.parse(rawData);
|
|
210
|
-
} catch {
|
|
211
|
-
data = rawData;
|
|
212
|
-
}
|
|
213
|
-
return {
|
|
214
|
-
sequenceNumber: record.SequenceNumber || "",
|
|
215
|
-
approximateArrivalTimestamp: record.ApproximateArrivalTimestamp,
|
|
216
|
-
data,
|
|
217
|
-
rawData,
|
|
218
|
-
partitionKey: record.PartitionKey || "",
|
|
219
|
-
encryptionType: record.EncryptionType,
|
|
220
|
-
raw: record
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Get a shard iterator
|
|
225
|
-
*
|
|
226
|
-
* @param shardId - Shard ID
|
|
227
|
-
* @param type - Iterator type
|
|
228
|
-
* @param startingSequenceNumber - Starting sequence number (for AT_SEQUENCE_NUMBER, AFTER_SEQUENCE_NUMBER)
|
|
229
|
-
* @param timestamp - Starting timestamp (for AT_TIMESTAMP)
|
|
230
|
-
* @returns Shard iterator string
|
|
231
|
-
*/
|
|
232
|
-
async getShardIterator(shardId, type, startingSequenceNumber, timestamp) {
|
|
233
|
-
return autotel.trace(`kinesis.getShardIterator`, async (ctx) => {
|
|
234
|
-
ctx.setAttributes(
|
|
235
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
236
|
-
streamName: this.config.streamName,
|
|
237
|
-
shardId,
|
|
238
|
-
operation: "get"
|
|
239
|
-
})
|
|
240
|
-
);
|
|
241
|
-
try {
|
|
242
|
-
const { GetShardIteratorCommand } = await import('@aws-sdk/client-kinesis');
|
|
243
|
-
const result = await this.client.send(
|
|
244
|
-
new GetShardIteratorCommand({
|
|
245
|
-
StreamName: this.config.streamName,
|
|
246
|
-
ShardId: shardId,
|
|
247
|
-
ShardIteratorType: type,
|
|
248
|
-
...startingSequenceNumber && { StartingSequenceNumber: startingSequenceNumber },
|
|
249
|
-
...timestamp && { Timestamp: timestamp }
|
|
250
|
-
})
|
|
251
|
-
);
|
|
252
|
-
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
253
|
-
return result.ShardIterator || "";
|
|
254
|
-
} catch (error) {
|
|
255
|
-
ctx.setStatus({
|
|
256
|
-
code: api.SpanStatusCode.ERROR,
|
|
257
|
-
message: error instanceof Error ? error.message : "GetShardIterator failed"
|
|
258
|
-
});
|
|
259
|
-
throw error;
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Get records from a shard iterator
|
|
265
|
-
*
|
|
266
|
-
* @param shardIterator - Shard iterator
|
|
267
|
-
* @param limit - Maximum records to return (max 10000)
|
|
268
|
-
* @returns Records and next shard iterator
|
|
269
|
-
*/
|
|
270
|
-
async getRecords(shardIterator, limit) {
|
|
271
|
-
return autotel.trace(`kinesis.get`, async (ctx) => {
|
|
272
|
-
ctx.setAttributes(
|
|
273
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
274
|
-
streamName: this.config.streamName,
|
|
275
|
-
operation: "get"
|
|
276
|
-
})
|
|
277
|
-
);
|
|
278
|
-
try {
|
|
279
|
-
const { GetRecordsCommand } = await import('@aws-sdk/client-kinesis');
|
|
280
|
-
const result = await this.client.send(
|
|
281
|
-
new GetRecordsCommand({
|
|
282
|
-
ShardIterator: shardIterator,
|
|
283
|
-
...limit && { Limit: limit }
|
|
284
|
-
})
|
|
285
|
-
);
|
|
286
|
-
const records = (result.Records || []).map((r) => this.parseRecord(r));
|
|
287
|
-
ctx.setAttribute("messaging.batch.message_count", records.length);
|
|
288
|
-
if (result.MillisBehindLatest !== void 0) {
|
|
289
|
-
ctx.setAttribute("aws.kinesis.millis_behind_latest", result.MillisBehindLatest);
|
|
290
|
-
}
|
|
291
|
-
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
292
|
-
return {
|
|
293
|
-
records,
|
|
294
|
-
nextIterator: result.NextShardIterator,
|
|
295
|
-
millisBehindLatest: result.MillisBehindLatest
|
|
296
|
-
};
|
|
297
|
-
} catch (error) {
|
|
298
|
-
ctx.setStatus({
|
|
299
|
-
code: api.SpanStatusCode.ERROR,
|
|
300
|
-
message: error instanceof Error ? error.message : "GetRecords failed"
|
|
301
|
-
});
|
|
302
|
-
throw error;
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Process records with automatic trace context extraction
|
|
308
|
-
*
|
|
309
|
-
* @param shardIterator - Shard iterator
|
|
310
|
-
* @param processor - Function to process each record
|
|
311
|
-
* @param limit - Maximum records to process
|
|
312
|
-
* @returns Next shard iterator and count of processed records
|
|
313
|
-
*/
|
|
314
|
-
async processRecords(shardIterator, processor, limit) {
|
|
315
|
-
const { records, nextIterator } = await this.getRecords(shardIterator, limit);
|
|
316
|
-
let processedCount = 0;
|
|
317
|
-
for (const record of records) {
|
|
318
|
-
const carrier = this.extractContext(record.data);
|
|
319
|
-
const processRecord = async () => {
|
|
320
|
-
return autotel.trace(`kinesis.process`, async (ctx) => {
|
|
321
|
-
ctx.setAttributes(
|
|
322
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
323
|
-
streamName: this.config.streamName,
|
|
324
|
-
operation: "get"
|
|
325
|
-
})
|
|
326
|
-
);
|
|
327
|
-
ctx.setAttribute("aws.kinesis.sequence_number", record.sequenceNumber);
|
|
328
|
-
ctx.setAttribute("aws.kinesis.partition_key", record.partitionKey);
|
|
329
|
-
try {
|
|
330
|
-
await processor(record, ctx);
|
|
331
|
-
processedCount++;
|
|
332
|
-
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
333
|
-
} catch (error) {
|
|
334
|
-
ctx.setStatus({
|
|
335
|
-
code: api.SpanStatusCode.ERROR,
|
|
336
|
-
message: error instanceof Error ? error.message : "Processing failed"
|
|
337
|
-
});
|
|
338
|
-
throw error;
|
|
339
|
-
}
|
|
340
|
-
});
|
|
341
|
-
};
|
|
342
|
-
if (carrier) {
|
|
343
|
-
const extractedContext = api.propagation.extract(api.context.active(), carrier);
|
|
344
|
-
await api.context.with(extractedContext, processRecord);
|
|
345
|
-
} else {
|
|
346
|
-
await processRecord();
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
return { nextIterator, processedCount };
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* List shards for the stream
|
|
353
|
-
*
|
|
354
|
-
* @returns Array of shard IDs
|
|
355
|
-
*/
|
|
356
|
-
async listShards() {
|
|
357
|
-
return autotel.trace(`kinesis.listShards`, async (ctx) => {
|
|
358
|
-
ctx.setAttributes(
|
|
359
|
-
chunkQ3DMMQ7K_cjs.buildKinesisAttributes({
|
|
360
|
-
streamName: this.config.streamName,
|
|
361
|
-
operation: "get"
|
|
362
|
-
})
|
|
363
|
-
);
|
|
364
|
-
try {
|
|
365
|
-
const { ListShardsCommand } = await import('@aws-sdk/client-kinesis');
|
|
366
|
-
const result = await this.client.send(
|
|
367
|
-
new ListShardsCommand({
|
|
368
|
-
StreamName: this.config.streamName
|
|
369
|
-
})
|
|
370
|
-
);
|
|
371
|
-
const shardIds = result.Shards?.map((s) => s.ShardId || "") || [];
|
|
372
|
-
ctx.setAttribute("aws.kinesis.shard_count", shardIds.length);
|
|
373
|
-
ctx.setStatus({ code: api.SpanStatusCode.OK });
|
|
374
|
-
return shardIds;
|
|
375
|
-
} catch (error) {
|
|
376
|
-
ctx.setStatus({
|
|
377
|
-
code: api.SpanStatusCode.ERROR,
|
|
378
|
-
message: error instanceof Error ? error.message : "ListShards failed"
|
|
379
|
-
});
|
|
380
|
-
throw error;
|
|
381
|
-
}
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
};
|
|
385
|
-
|
|
386
|
-
exports.KinesisConsumer = KinesisConsumer;
|
|
387
|
-
exports.KinesisProducer = KinesisProducer;
|
|
388
|
-
exports.traceKinesis = traceKinesis;
|
|
389
|
-
//# sourceMappingURL=chunk-HMTKKKKP.cjs.map
|
|
390
|
-
//# sourceMappingURL=chunk-HMTKKKKP.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/kinesis/index.ts"],"names":["trace","buildKinesisAttributes","wrapSDKClient","propagation","context","SpanStatusCode"],"mappings":"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","file":"chunk-HMTKKKKP.cjs","sourcesContent":["/**\n * Kinesis-specific instrumentation\n *\n * Provides semantic helpers for tracing Kinesis Data Streams operations with proper\n * OpenTelemetry messaging semantic conventions.\n *\n * @example Put record to stream\n * ```typescript\n * import { traceKinesis } from 'autotel-aws/kinesis';\n * import { KinesisClient, PutRecordCommand } from '@aws-sdk/client-kinesis';\n *\n * const kinesis = new KinesisClient({});\n *\n * export const putRecord = traceKinesis({\n * operation: 'put',\n * streamName: 'my-stream'\n * })(ctx => async (data: object, partitionKey: string) => {\n * const result = await kinesis.send(new PutRecordCommand({\n * StreamName: 'my-stream',\n * Data: Buffer.from(JSON.stringify(data)),\n * PartitionKey: partitionKey\n * }));\n *\n * ctx.setAttribute('aws.kinesis.shard_id', result.ShardId ?? '');\n * ctx.setAttribute('aws.kinesis.sequence_number', result.SequenceNumber ?? '');\n *\n * return result;\n * });\n *\n * // Usage: await putRecord({ event: 'click' }, 'user-123');\n * ```\n *\n * @example Get records from shard\n * ```typescript\n * export const getRecords = traceKinesis({\n * operation: 'get',\n * streamName: 'my-stream'\n * })(ctx => async (shardIterator: string, limit: number) => {\n * const result = await kinesis.send(new GetRecordsCommand({\n * ShardIterator: shardIterator,\n * Limit: limit\n * }));\n *\n * ctx.setAttribute('messaging.batch.message_count', result.Records?.length ?? 0);\n * return result;\n * });\n * ```\n */\n\nimport { trace, type TraceContext } from 'autotel';\nimport { context, propagation, SpanStatusCode } from '@opentelemetry/api';\nimport { buildKinesisAttributes } from '../attributes';\nimport { wrapSDKClient } from '../common/sdk-wrapper';\n\n/**\n * Kinesis operation configuration\n */\nexport interface TraceKinesisConfig {\n /**\n * Kinesis operation type\n * - 'put' - PutRecord, PutRecords\n * - 'get' - GetRecords, GetShardIterator\n */\n operation: 'put' | 'get';\n\n /**\n * Kinesis stream name\n * Sets `messaging.destination.name` attribute.\n */\n streamName: string;\n\n /**\n * Shard ID (if known at configuration time)\n * Sets `aws.kinesis.shard_id` attribute.\n */\n shardId?: string;\n}\n\n/**\n * Trace Kinesis operations with semantic attributes\n *\n * Creates a traced function that automatically sets Kinesis messaging semantic attributes\n * following OpenTelemetry conventions.\n *\n * @param config - Kinesis operation configuration\n * @returns A higher-order function that wraps your Kinesis operation with tracing\n *\n * @remarks\n * Semantic attributes set automatically:\n * - `messaging.system` - 'aws_kinesis'\n * - `messaging.destination.name` - Stream name\n * - `messaging.operation` - 'put' or 'get'\n * - `aws.kinesis.shard_id` - Shard ID (if provided)\n *\n * Additional attributes you should set in your handler:\n * - `aws.kinesis.sequence_number` - Record sequence number\n * - `messaging.batch.message_count` - Number of records in batch\n *\n * @see https://opentelemetry.io/docs/specs/semconv/messaging/aws-kinesis/\n */\nexport function traceKinesis(config: TraceKinesisConfig) {\n return function wrapper<TArgs extends unknown[], TReturn>(\n fn: (ctx: TraceContext) => (...args: TArgs) => Promise<TReturn>,\n ): (...args: TArgs) => Promise<TReturn> {\n // Use autotel's trace() which properly handles the factory pattern\n return trace(\n `kinesis.${config.operation}`,\n (ctx: TraceContext) =>\n async (...args: TArgs): Promise<TReturn> => {\n // Set Kinesis semantic attributes\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: config.streamName,\n shardId: config.shardId,\n operation: config.operation,\n }),\n );\n\n // Get the user's handler and execute with forwarded arguments\n const handler = fn(ctx);\n return handler(...args);\n },\n );\n };\n}\n\n// ============================================================================\n// Kinesis Producer - Puts records with automatic trace context injection\n// ============================================================================\n\n/**\n * Configuration for Kinesis Producer\n */\nexport interface KinesisProducerConfig {\n /**\n * Kinesis stream name or ARN\n */\n streamName: string;\n\n /**\n * Inject W3C Trace Context into record data\n * Enables distributed tracing across producer/consumer\n * @default true\n */\n injectTraceContext?: boolean;\n\n /**\n * Optional service name for tracing\n */\n service?: string;\n}\n\n/**\n * Record to put via Kinesis Producer\n */\nexport interface KinesisRecord {\n /**\n * Record data (will be serialized to JSON if object)\n */\n data: string | object;\n\n /**\n * Partition key for sharding\n */\n partitionKey: string;\n\n /**\n * Optional explicit hash key\n */\n explicitHashKey?: string;\n\n /**\n * Optional sequence number for ordering\n */\n sequenceNumberForOrdering?: string;\n}\n\n/**\n * Kinesis Producer with automatic trace context injection\n *\n * Wraps a Kinesis client to automatically:\n * - Create spans for put operations\n * - Inject W3C Trace Context into record data\n * - Set proper semantic attributes\n *\n * @example Basic usage\n * ```typescript\n * import { KinesisProducer } from 'autotel-aws/kinesis';\n * import { KinesisClient } from '@aws-sdk/client-kinesis';\n *\n * const kinesis = new KinesisClient({ region: 'us-east-1' });\n * const producer = new KinesisProducer(kinesis, {\n * streamName: 'my-stream'\n * });\n *\n * // Put with automatic trace context\n * const result = await producer.putRecord({\n * data: { event: 'click', userId: '123' },\n * partitionKey: 'user-123'\n * });\n * console.log('Sequence:', result.sequenceNumber);\n * ```\n *\n * @example Batch put\n * ```typescript\n * const results = await producer.putRecords([\n * { data: { event: 'click' }, partitionKey: 'user-1' },\n * { data: { event: 'view' }, partitionKey: 'user-2' },\n * { data: { event: 'scroll' }, partitionKey: 'user-3' }\n * ]);\n * console.log(`Put ${results.successful.length} records`);\n * ```\n */\nexport class KinesisProducer<\n \n TClient extends { send: (command: any) => Promise<any> } = any,\n> {\n private client: TClient;\n private config: Required<Pick<KinesisProducerConfig, 'streamName'>> & KinesisProducerConfig;\n\n constructor(client: TClient, config: KinesisProducerConfig) {\n this.client = wrapSDKClient(client as any, config.service) as TClient;\n this.config = {\n injectTraceContext: true,\n ...config,\n };\n }\n\n /**\n * Inject trace context into record data\n */\n private injectContext(data: string | object): Buffer {\n let payload: object;\n\n if (typeof data === 'string') {\n try {\n payload = JSON.parse(data);\n } catch {\n // If not valid JSON, wrap in object\n payload = { _data: data };\n }\n } else {\n payload = data;\n }\n\n if (this.config.injectTraceContext) {\n const carrier: Record<string, string> = {};\n propagation.inject(context.active(), carrier);\n\n if (carrier.traceparent) {\n payload = {\n ...payload,\n _traceContext: {\n traceparent: carrier.traceparent,\n tracestate: carrier.tracestate,\n baggage: carrier.baggage,\n },\n };\n }\n }\n\n return Buffer.from(JSON.stringify(payload));\n }\n\n /**\n * Put a single record to the stream\n *\n * @param record - Record to put\n * @returns Promise with shard ID and sequence number\n */\n async putRecord(record: KinesisRecord): Promise<{\n shardId?: string;\n sequenceNumber?: string;\n encryptionType?: string;\n }> {\n return trace(`kinesis.put`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'put',\n }),\n );\n\n const input = {\n StreamName: this.config.streamName,\n Data: this.injectContext(record.data),\n PartitionKey: record.partitionKey,\n ...(record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey }),\n ...(record.sequenceNumberForOrdering && {\n SequenceNumberForOrdering: record.sequenceNumberForOrdering,\n }),\n };\n\n try {\n const { PutRecordCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(new PutRecordCommand(input));\n\n if (result.ShardId) {\n ctx.setAttribute('aws.kinesis.shard_id', result.ShardId);\n }\n if (result.SequenceNumber) {\n ctx.setAttribute('aws.kinesis.sequence_number', result.SequenceNumber);\n }\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return {\n shardId: result.ShardId,\n sequenceNumber: result.SequenceNumber,\n encryptionType: result.EncryptionType,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Put failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Put multiple records in a batch\n *\n * @param records - Array of records to put (max 500)\n * @returns Promise with successful and failed record results\n */\n async putRecords(records: KinesisRecord[]): Promise<{\n successful: Array<{ shardId?: string; sequenceNumber?: string }>;\n failed: Array<{ errorCode?: string; errorMessage?: string }>;\n failedRecordCount: number;\n }> {\n return trace(`kinesis.putBatch`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'put',\n }),\n );\n ctx.setAttribute('messaging.batch.message_count', records.length);\n\n const entries = records.map((record) => ({\n Data: this.injectContext(record.data),\n PartitionKey: record.partitionKey,\n ...(record.explicitHashKey && { ExplicitHashKey: record.explicitHashKey }),\n }));\n\n try {\n const { PutRecordsCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new PutRecordsCommand({\n StreamName: this.config.streamName,\n Records: entries,\n }),\n );\n\n const successful: Array<{ shardId?: string; sequenceNumber?: string }> = [];\n const failed: Array<{ errorCode?: string; errorMessage?: string }> = [];\n\n if (result.Records) {\n for (const r of result.Records) {\n const record = r as { ShardId?: string; SequenceNumber?: string; ErrorCode?: string; ErrorMessage?: string };\n if (record.ErrorCode) {\n failed.push({ errorCode: record.ErrorCode, errorMessage: record.ErrorMessage });\n } else {\n successful.push({ shardId: record.ShardId, sequenceNumber: record.SequenceNumber });\n }\n }\n }\n\n ctx.setAttribute('messaging.kinesis.successful_count', successful.length);\n ctx.setAttribute('messaging.kinesis.failed_count', result.FailedRecordCount || 0);\n\n if (result.FailedRecordCount && result.FailedRecordCount > 0) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: `${result.FailedRecordCount} records failed`,\n });\n } else {\n ctx.setStatus({ code: SpanStatusCode.OK });\n }\n\n return {\n successful,\n failed,\n failedRecordCount: result.FailedRecordCount || 0,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Batch put failed',\n });\n throw error;\n }\n });\n }\n}\n\n// ============================================================================\n// Kinesis Consumer - Gets records with trace context extraction\n// ============================================================================\n\n/**\n * Configuration for Kinesis Consumer\n */\nexport interface KinesisConsumerConfig {\n /**\n * Kinesis stream name or ARN\n */\n streamName: string;\n\n /**\n * Extract W3C Trace Context from record data\n * Creates child spans linked to the producer\n * @default true\n */\n extractTraceContext?: boolean;\n\n /**\n * Optional service name for tracing\n */\n service?: string;\n}\n\n/**\n * Received Kinesis record with parsed data\n */\nexport interface ReceivedKinesisRecord {\n /**\n * Sequence number\n */\n sequenceNumber: string;\n\n /**\n * Approximate arrival timestamp\n */\n approximateArrivalTimestamp?: Date;\n\n /**\n * Parsed data (JSON parsed if possible)\n */\n \n data: any;\n\n /**\n * Raw data as string\n */\n rawData: string;\n\n /**\n * Partition key\n */\n partitionKey: string;\n\n /**\n * Encryption type\n */\n encryptionType?: string;\n\n /**\n * Original AWS SDK record object\n */\n \n raw: any;\n}\n\n/**\n * Record processor function type\n */\nexport type KinesisRecordProcessor = (\n record: ReceivedKinesisRecord,\n ctx: TraceContext,\n) => Promise<void>;\n\n/**\n * Kinesis Consumer with automatic trace context extraction\n *\n * Wraps a Kinesis client to automatically:\n * - Create spans for get operations\n * - Extract W3C Trace Context from record data\n * - Link consumer spans to producer spans\n *\n * @example Basic usage\n * ```typescript\n * import { KinesisConsumer } from 'autotel-aws/kinesis';\n * import { KinesisClient } from '@aws-sdk/client-kinesis';\n *\n * const kinesis = new KinesisClient({ region: 'us-east-1' });\n * const consumer = new KinesisConsumer(kinesis, {\n * streamName: 'my-stream'\n * });\n *\n * // Get shard iterator first\n * const iterator = await consumer.getShardIterator('shardId-000000000000', 'LATEST');\n *\n * // Process records with automatic tracing\n * const { nextIterator, records } = await consumer.getRecords(iterator, 100);\n *\n * for (const record of records) {\n * console.log('Record:', record.data);\n * }\n * ```\n *\n * @example With processor function\n * ```typescript\n * await consumer.processRecords(iterator, async (record, ctx) => {\n * ctx.setAttribute('event.type', record.data.event);\n * await handleEvent(record.data);\n * });\n * ```\n */\nexport class KinesisConsumer<\n \n TClient extends { send: (command: any) => Promise<any> } = any,\n> {\n private client: TClient;\n private config: Required<Pick<KinesisConsumerConfig, 'streamName'>> & KinesisConsumerConfig;\n\n constructor(client: TClient, config: KinesisConsumerConfig) {\n this.client = wrapSDKClient(client as any, config.service) as TClient;\n this.config = {\n extractTraceContext: true,\n ...config,\n };\n }\n\n /**\n * Extract trace context from record data\n */\n \n private extractContext(data: any): Record<string, string> | undefined {\n if (!this.config.extractTraceContext || !data?._traceContext) {\n return undefined;\n }\n\n const tc = data._traceContext;\n const carrier: Record<string, string> = {};\n\n if (tc.traceparent) carrier.traceparent = tc.traceparent;\n if (tc.tracestate) carrier.tracestate = tc.tracestate;\n if (tc.baggage) carrier.baggage = tc.baggage;\n\n return Object.keys(carrier).length > 0 ? carrier : undefined;\n }\n\n /**\n * Parse raw record data\n */\n \n private parseRecord(record: any): ReceivedKinesisRecord {\n const rawData = record.Data ? Buffer.from(record.Data).toString('utf8') : '';\n \n let data: any;\n\n try {\n data = JSON.parse(rawData);\n } catch {\n data = rawData;\n }\n\n return {\n sequenceNumber: record.SequenceNumber || '',\n approximateArrivalTimestamp: record.ApproximateArrivalTimestamp,\n data,\n rawData,\n partitionKey: record.PartitionKey || '',\n encryptionType: record.EncryptionType,\n raw: record,\n };\n }\n\n /**\n * Get a shard iterator\n *\n * @param shardId - Shard ID\n * @param type - Iterator type\n * @param startingSequenceNumber - Starting sequence number (for AT_SEQUENCE_NUMBER, AFTER_SEQUENCE_NUMBER)\n * @param timestamp - Starting timestamp (for AT_TIMESTAMP)\n * @returns Shard iterator string\n */\n async getShardIterator(\n shardId: string,\n type: 'AT_SEQUENCE_NUMBER' | 'AFTER_SEQUENCE_NUMBER' | 'TRIM_HORIZON' | 'LATEST' | 'AT_TIMESTAMP',\n startingSequenceNumber?: string,\n timestamp?: Date,\n ): Promise<string> {\n return trace(`kinesis.getShardIterator`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n shardId,\n operation: 'get',\n }),\n );\n\n try {\n const { GetShardIteratorCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new GetShardIteratorCommand({\n StreamName: this.config.streamName,\n ShardId: shardId,\n ShardIteratorType: type,\n ...(startingSequenceNumber && { StartingSequenceNumber: startingSequenceNumber }),\n ...(timestamp && { Timestamp: timestamp }),\n }),\n );\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n return result.ShardIterator || '';\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'GetShardIterator failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Get records from a shard iterator\n *\n * @param shardIterator - Shard iterator\n * @param limit - Maximum records to return (max 10000)\n * @returns Records and next shard iterator\n */\n async getRecords(\n shardIterator: string,\n limit?: number,\n ): Promise<{\n records: ReceivedKinesisRecord[];\n nextIterator?: string;\n millisBehindLatest?: number;\n }> {\n return trace(`kinesis.get`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'get',\n }),\n );\n\n try {\n const { GetRecordsCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new GetRecordsCommand({\n ShardIterator: shardIterator,\n ...(limit && { Limit: limit }),\n }),\n );\n\n \n const records = (result.Records || []).map((r: any) => this.parseRecord(r));\n ctx.setAttribute('messaging.batch.message_count', records.length);\n\n if (result.MillisBehindLatest !== undefined) {\n ctx.setAttribute('aws.kinesis.millis_behind_latest', result.MillisBehindLatest);\n }\n\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return {\n records,\n nextIterator: result.NextShardIterator,\n millisBehindLatest: result.MillisBehindLatest,\n };\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'GetRecords failed',\n });\n throw error;\n }\n });\n }\n\n /**\n * Process records with automatic trace context extraction\n *\n * @param shardIterator - Shard iterator\n * @param processor - Function to process each record\n * @param limit - Maximum records to process\n * @returns Next shard iterator and count of processed records\n */\n async processRecords(\n shardIterator: string,\n processor: KinesisRecordProcessor,\n limit?: number,\n ): Promise<{ nextIterator?: string; processedCount: number }> {\n const { records, nextIterator } = await this.getRecords(shardIterator, limit);\n let processedCount = 0;\n\n for (const record of records) {\n // Extract trace context from record data\n const carrier = this.extractContext(record.data);\n\n // Create processing span, optionally linked to producer\n const processRecord = async () => {\n return trace(`kinesis.process`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'get',\n }),\n );\n ctx.setAttribute('aws.kinesis.sequence_number', record.sequenceNumber);\n ctx.setAttribute('aws.kinesis.partition_key', record.partitionKey);\n\n try {\n await processor(record, ctx);\n processedCount++;\n ctx.setStatus({ code: SpanStatusCode.OK });\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Processing failed',\n });\n throw error;\n }\n });\n };\n\n // Run with extracted context if available\n if (carrier) {\n const extractedContext = propagation.extract(context.active(), carrier);\n await context.with(extractedContext, processRecord);\n } else {\n await processRecord();\n }\n }\n\n return { nextIterator, processedCount };\n }\n\n /**\n * List shards for the stream\n *\n * @returns Array of shard IDs\n */\n async listShards(): Promise<string[]> {\n return trace(`kinesis.listShards`, async (ctx: TraceContext) => {\n ctx.setAttributes(\n buildKinesisAttributes({\n streamName: this.config.streamName,\n operation: 'get',\n }),\n );\n\n try {\n const { ListShardsCommand } = await import('@aws-sdk/client-kinesis');\n const result = await this.client.send(\n new ListShardsCommand({\n StreamName: this.config.streamName,\n }),\n );\n\n const shardIds = result.Shards?.map((s: { ShardId?: string }) => s.ShardId || '') || [];\n ctx.setAttribute('aws.kinesis.shard_count', shardIds.length);\n ctx.setStatus({ code: SpanStatusCode.OK });\n\n return shardIds;\n } catch (error) {\n ctx.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'ListShards failed',\n });\n throw error;\n }\n });\n }\n}\n"]}
|