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.
Files changed (205) hide show
  1. package/dist/attributes.cjs +155 -46
  2. package/dist/attributes.cjs.map +1 -1
  3. package/dist/attributes.d.cts +64 -62
  4. package/dist/attributes.d.cts.map +1 -0
  5. package/dist/attributes.d.ts +64 -62
  6. package/dist/attributes.d.ts.map +1 -0
  7. package/dist/attributes.js +146 -3
  8. package/dist/attributes.js.map +1 -1
  9. package/dist/cloudwatch.cjs +324 -358
  10. package/dist/cloudwatch.cjs.map +1 -1
  11. package/dist/cloudwatch.d.cts +126 -153
  12. package/dist/cloudwatch.d.cts.map +1 -0
  13. package/dist/cloudwatch.d.ts +126 -153
  14. package/dist/cloudwatch.d.ts.map +1 -0
  15. package/dist/cloudwatch.js +323 -356
  16. package/dist/cloudwatch.js.map +1 -1
  17. package/dist/config-D8QZwF1e.d.ts +123 -0
  18. package/dist/config-D8QZwF1e.d.ts.map +1 -0
  19. package/dist/config-SPkMWWXY.d.cts +123 -0
  20. package/dist/config-SPkMWWXY.d.cts.map +1 -0
  21. package/dist/dynamodb.cjs +89 -11
  22. package/dist/dynamodb.cjs.map +1 -1
  23. package/dist/dynamodb.d.cts +15 -63
  24. package/dist/dynamodb.d.cts.map +1 -0
  25. package/dist/dynamodb.d.ts +15 -63
  26. package/dist/dynamodb.d.ts.map +1 -0
  27. package/dist/dynamodb.js +90 -4
  28. package/dist/dynamodb.js.map +1 -1
  29. package/dist/eventbridge.cjs +423 -261
  30. package/dist/eventbridge.cjs.map +1 -1
  31. package/dist/eventbridge.d.cts +113 -174
  32. package/dist/eventbridge.d.cts.map +1 -0
  33. package/dist/eventbridge.d.ts +113 -174
  34. package/dist/eventbridge.d.ts.map +1 -0
  35. package/dist/eventbridge.js +422 -259
  36. package/dist/eventbridge.js.map +1 -1
  37. package/dist/index.cjs +117 -241
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.d.cts +42 -55
  40. package/dist/index.d.cts.map +1 -0
  41. package/dist/index.d.ts +42 -55
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +62 -41
  44. package/dist/index.js.map +1 -1
  45. package/dist/kinesis.cjs +485 -20
  46. package/dist/kinesis.cjs.map +1 -1
  47. package/dist/kinesis.d.cts +179 -226
  48. package/dist/kinesis.d.cts.map +1 -0
  49. package/dist/kinesis.d.ts +179 -226
  50. package/dist/kinesis.d.ts.map +1 -0
  51. package/dist/kinesis.js +484 -5
  52. package/dist/kinesis.js.map +1 -1
  53. package/dist/lambda-B0LQa5vS.d.ts +168 -0
  54. package/dist/lambda-B0LQa5vS.d.ts.map +1 -0
  55. package/dist/lambda-DR33vPpL.cjs +500 -0
  56. package/dist/lambda-DR33vPpL.cjs.map +1 -0
  57. package/dist/lambda-DYyKH-f-.js +453 -0
  58. package/dist/lambda-DYyKH-f-.js.map +1 -0
  59. package/dist/lambda-DnroO4Od.d.cts +168 -0
  60. package/dist/lambda-DnroO4Od.d.cts.map +1 -0
  61. package/dist/lambda-auto.cjs +33 -16
  62. package/dist/lambda-auto.cjs.map +1 -1
  63. package/dist/lambda-auto.d.cts +1 -2
  64. package/dist/lambda-auto.d.ts +1 -2
  65. package/dist/lambda-auto.js +35 -15
  66. package/dist/lambda-auto.js.map +1 -1
  67. package/dist/lambda.cjs +11 -42
  68. package/dist/lambda.d.cts +3 -231
  69. package/dist/lambda.d.ts +3 -231
  70. package/dist/lambda.js +3 -5
  71. package/dist/s3.cjs +70 -11
  72. package/dist/s3.cjs.map +1 -1
  73. package/dist/s3.d.cts +15 -51
  74. package/dist/s3.d.cts.map +1 -0
  75. package/dist/s3.d.ts +15 -51
  76. package/dist/s3.d.ts.map +1 -0
  77. package/dist/s3.js +71 -4
  78. package/dist/s3.js.map +1 -1
  79. package/dist/sdk-C-o7ngkk.js +198 -0
  80. package/dist/sdk-C-o7ngkk.js.map +1 -0
  81. package/dist/sdk-C9Nvlh7R.cjs +222 -0
  82. package/dist/sdk-C9Nvlh7R.cjs.map +1 -0
  83. package/dist/sdk-CXqc4o_q.d.ts +135 -0
  84. package/dist/sdk-CXqc4o_q.d.ts.map +1 -0
  85. package/dist/sdk-DkAItj4z.d.cts +135 -0
  86. package/dist/sdk-DkAItj4z.d.cts.map +1 -0
  87. package/dist/sdk-wrapper-BDrcyEQ_.cjs +161 -0
  88. package/dist/sdk-wrapper-BDrcyEQ_.cjs.map +1 -0
  89. package/dist/sdk-wrapper-BVr62EfA.js +120 -0
  90. package/dist/sdk-wrapper-BVr62EfA.js.map +1 -0
  91. package/dist/sdk.cjs +8 -31
  92. package/dist/sdk.d.cts +3 -156
  93. package/dist/sdk.d.ts +3 -156
  94. package/dist/sdk.js +3 -6
  95. package/dist/sns.cjs +305 -16
  96. package/dist/sns.cjs.map +1 -1
  97. package/dist/sns.d.cts +109 -155
  98. package/dist/sns.d.cts.map +1 -0
  99. package/dist/sns.d.ts +109 -155
  100. package/dist/sns.d.ts.map +1 -0
  101. package/dist/sns.js +305 -5
  102. package/dist/sns.js.map +1 -1
  103. package/dist/sqs.cjs +455 -20
  104. package/dist/sqs.cjs.map +1 -1
  105. package/dist/sqs.d.cts +191 -240
  106. package/dist/sqs.d.cts.map +1 -0
  107. package/dist/sqs.d.ts +191 -240
  108. package/dist/sqs.d.ts.map +1 -0
  109. package/dist/sqs.js +454 -5
  110. package/dist/sqs.js.map +1 -1
  111. package/dist/step-functions.cjs +557 -32
  112. package/dist/step-functions.cjs.map +1 -1
  113. package/dist/step-functions.d.cts +155 -210
  114. package/dist/step-functions.d.cts.map +1 -0
  115. package/dist/step-functions.d.ts +155 -210
  116. package/dist/step-functions.d.ts.map +1 -0
  117. package/dist/step-functions.js +553 -5
  118. package/dist/step-functions.js.map +1 -1
  119. package/dist/testing.cjs +60 -58
  120. package/dist/testing.cjs.map +1 -1
  121. package/dist/testing.d.cts +20 -23
  122. package/dist/testing.d.cts.map +1 -0
  123. package/dist/testing.d.ts +20 -23
  124. package/dist/testing.d.ts.map +1 -0
  125. package/dist/testing.js +59 -57
  126. package/dist/testing.js.map +1 -1
  127. package/dist/{types-B2Mi8Goj.d.cts → types-0uHbJsBN.d.ts} +5 -7
  128. package/dist/types-0uHbJsBN.d.ts.map +1 -0
  129. package/dist/types-DOUDks8I.d.cts +71 -0
  130. package/dist/types-DOUDks8I.d.cts.map +1 -0
  131. package/dist/types-DOUDks8I.d.ts +71 -0
  132. package/dist/types-DOUDks8I.d.ts.map +1 -0
  133. package/dist/{types-BqTI4s4V.d.ts → types-iyHj03Q1.d.cts} +5 -7
  134. package/dist/types-iyHj03Q1.d.cts.map +1 -0
  135. package/dist/xray-B46i6z6K.js +59 -0
  136. package/dist/xray-B46i6z6K.js.map +1 -0
  137. package/dist/xray-CG4jciQs.d.ts +19 -0
  138. package/dist/xray-CG4jciQs.d.ts.map +1 -0
  139. package/dist/xray-Cd2UiVRA.cjs +75 -0
  140. package/dist/xray-Cd2UiVRA.cjs.map +1 -0
  141. package/dist/xray-DDcKCKKo.d.cts +19 -0
  142. package/dist/xray-DDcKCKKo.d.cts.map +1 -0
  143. package/dist/xray.cjs +10 -23
  144. package/dist/xray.d.cts +3 -24
  145. package/dist/xray.d.ts +3 -24
  146. package/dist/xray.js +3 -5
  147. package/package.json +5 -5
  148. package/dist/chunk-35F3UBOO.cjs +0 -48
  149. package/dist/chunk-35F3UBOO.cjs.map +0 -1
  150. package/dist/chunk-4THGOYZL.js +0 -387
  151. package/dist/chunk-4THGOYZL.js.map +0 -1
  152. package/dist/chunk-CIGXV6HA.js +0 -192
  153. package/dist/chunk-CIGXV6HA.js.map +0 -1
  154. package/dist/chunk-DGUM43GV.js +0 -10
  155. package/dist/chunk-DGUM43GV.js.map +0 -1
  156. package/dist/chunk-DHHLKZHI.cjs +0 -23
  157. package/dist/chunk-DHHLKZHI.cjs.map +0 -1
  158. package/dist/chunk-HMTKKKKP.cjs +0 -390
  159. package/dist/chunk-HMTKKKKP.cjs.map +0 -1
  160. package/dist/chunk-I4CKQ4RD.js +0 -153
  161. package/dist/chunk-I4CKQ4RD.js.map +0 -1
  162. package/dist/chunk-JEQ2X3Z6.cjs +0 -12
  163. package/dist/chunk-JEQ2X3Z6.cjs.map +0 -1
  164. package/dist/chunk-JL33WEVE.js +0 -341
  165. package/dist/chunk-JL33WEVE.js.map +0 -1
  166. package/dist/chunk-JMSFE6FJ.js +0 -24
  167. package/dist/chunk-JMSFE6FJ.js.map +0 -1
  168. package/dist/chunk-JPDJPOIB.js +0 -78
  169. package/dist/chunk-JPDJPOIB.js.map +0 -1
  170. package/dist/chunk-KNRQYDAS.cjs +0 -394
  171. package/dist/chunk-KNRQYDAS.cjs.map +0 -1
  172. package/dist/chunk-NQ65Y5AI.cjs +0 -195
  173. package/dist/chunk-NQ65Y5AI.cjs.map +0 -1
  174. package/dist/chunk-OB4XTAVK.cjs +0 -345
  175. package/dist/chunk-OB4XTAVK.cjs.map +0 -1
  176. package/dist/chunk-OHFR7WX5.js +0 -341
  177. package/dist/chunk-OHFR7WX5.js.map +0 -1
  178. package/dist/chunk-PZGYL7XZ.js +0 -40
  179. package/dist/chunk-PZGYL7XZ.js.map +0 -1
  180. package/dist/chunk-Q3DMMQ7K.cjs +0 -164
  181. package/dist/chunk-Q3DMMQ7K.cjs.map +0 -1
  182. package/dist/chunk-SPC4VYOI.cjs +0 -350
  183. package/dist/chunk-SPC4VYOI.cjs.map +0 -1
  184. package/dist/chunk-UZEJV2YD.cjs +0 -139
  185. package/dist/chunk-UZEJV2YD.cjs.map +0 -1
  186. package/dist/chunk-VZHQH75L.cjs +0 -26
  187. package/dist/chunk-VZHQH75L.cjs.map +0 -1
  188. package/dist/chunk-X6BY6PCK.js +0 -386
  189. package/dist/chunk-X6BY6PCK.js.map +0 -1
  190. package/dist/chunk-XOF2H2PI.cjs +0 -84
  191. package/dist/chunk-XOF2H2PI.cjs.map +0 -1
  192. package/dist/chunk-YG56NRIO.js +0 -131
  193. package/dist/chunk-YG56NRIO.js.map +0 -1
  194. package/dist/chunk-ZPDRKCAR.js +0 -21
  195. package/dist/chunk-ZPDRKCAR.js.map +0 -1
  196. package/dist/config-DbZv4bpy.d.ts +0 -125
  197. package/dist/config-srkLBXZH.d.cts +0 -125
  198. package/dist/lambda.cjs.map +0 -1
  199. package/dist/lambda.js.map +0 -1
  200. package/dist/sdk.cjs.map +0 -1
  201. package/dist/sdk.js.map +0 -1
  202. package/dist/types-B9IaHmGa.d.cts +0 -73
  203. package/dist/types-B9IaHmGa.d.ts +0 -73
  204. package/dist/xray.cjs.map +0 -1
  205. 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"]}
@@ -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"}
@@ -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"]}
@@ -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"]}