@venturekit/runtime 0.0.0-dev.20260312012510 → 0.0.0-dev.20260329093916

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 (122) hide show
  1. package/README.md +1 -1
  2. package/dist/config/env.d.ts +62 -0
  3. package/dist/config/env.d.ts.map +1 -0
  4. package/dist/config/env.js +98 -0
  5. package/dist/config/env.js.map +1 -0
  6. package/dist/config/secrets.d.ts +67 -0
  7. package/dist/config/secrets.d.ts.map +1 -0
  8. package/dist/config/secrets.js +132 -0
  9. package/dist/config/secrets.js.map +1 -0
  10. package/dist/handler/adapter.d.ts.map +1 -0
  11. package/dist/{adapter.js → handler/adapter.js} +5 -44
  12. package/dist/handler/adapter.js.map +1 -0
  13. package/dist/{context.d.ts → handler/context.d.ts} +44 -3
  14. package/dist/handler/context.d.ts.map +1 -0
  15. package/dist/{context.js → handler/context.js} +9 -9
  16. package/dist/handler/context.js.map +1 -0
  17. package/dist/handler/errors.d.ts.map +1 -0
  18. package/dist/{errors.js → handler/errors.js} +11 -25
  19. package/dist/handler/errors.js.map +1 -0
  20. package/dist/{handler.d.ts → handler/handler.d.ts} +36 -3
  21. package/dist/handler/handler.d.ts.map +1 -0
  22. package/dist/{handler.js → handler/handler.js} +59 -23
  23. package/dist/handler/handler.js.map +1 -0
  24. package/dist/handler/response.d.ts.map +1 -0
  25. package/dist/{response.js → handler/response.js} +9 -17
  26. package/dist/handler/response.js.map +1 -0
  27. package/dist/handler/task-handler.d.ts +192 -0
  28. package/dist/handler/task-handler.d.ts.map +1 -0
  29. package/dist/handler/task-handler.js +262 -0
  30. package/dist/handler/task-handler.js.map +1 -0
  31. package/dist/index.d.ts +33 -14
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +30 -48
  34. package/dist/index.js.map +1 -1
  35. package/dist/{logger.d.ts → logging/logger.d.ts} +1 -1
  36. package/dist/logging/logger.d.ts.map +1 -0
  37. package/dist/{logger.js → logging/logger.js} +8 -16
  38. package/dist/logging/logger.js.map +1 -0
  39. package/dist/logging/tracing.d.ts +51 -0
  40. package/dist/logging/tracing.d.ts.map +1 -0
  41. package/dist/logging/tracing.js +77 -0
  42. package/dist/logging/tracing.js.map +1 -0
  43. package/dist/middleware/middleware.d.ts +120 -0
  44. package/dist/middleware/middleware.d.ts.map +1 -0
  45. package/dist/middleware/middleware.js +270 -0
  46. package/dist/middleware/middleware.js.map +1 -0
  47. package/dist/middleware/rate-limit-store.d.ts +153 -0
  48. package/dist/middleware/rate-limit-store.d.ts.map +1 -0
  49. package/dist/middleware/rate-limit-store.js +182 -0
  50. package/dist/middleware/rate-limit-store.js.map +1 -0
  51. package/dist/openapi/openapi.d.ts +147 -0
  52. package/dist/openapi/openapi.d.ts.map +1 -0
  53. package/dist/openapi/openapi.js +235 -0
  54. package/dist/openapi/openapi.js.map +1 -0
  55. package/dist/openapi.d.ts +10 -0
  56. package/dist/openapi.d.ts.map +1 -0
  57. package/dist/openapi.js +9 -0
  58. package/dist/openapi.js.map +1 -0
  59. package/dist/patterns/circuit-breaker.d.ts +78 -0
  60. package/dist/patterns/circuit-breaker.d.ts.map +1 -0
  61. package/dist/patterns/circuit-breaker.js +113 -0
  62. package/dist/patterns/circuit-breaker.js.map +1 -0
  63. package/dist/patterns/idempotency.d.ts +175 -0
  64. package/dist/patterns/idempotency.d.ts.map +1 -0
  65. package/dist/patterns/idempotency.js +305 -0
  66. package/dist/patterns/idempotency.js.map +1 -0
  67. package/dist/patterns/invoke.d.ts +279 -0
  68. package/dist/patterns/invoke.d.ts.map +1 -0
  69. package/dist/patterns/invoke.js +581 -0
  70. package/dist/patterns/invoke.js.map +1 -0
  71. package/dist/patterns/saga.d.ts +391 -0
  72. package/dist/patterns/saga.d.ts.map +1 -0
  73. package/dist/patterns/saga.js +556 -0
  74. package/dist/patterns/saga.js.map +1 -0
  75. package/dist/patterns.d.ts +17 -0
  76. package/dist/patterns.d.ts.map +1 -0
  77. package/dist/patterns.js +17 -0
  78. package/dist/patterns.js.map +1 -0
  79. package/dist/rate-limit.d.ts +16 -0
  80. package/dist/rate-limit.d.ts.map +1 -0
  81. package/dist/rate-limit.js +15 -0
  82. package/dist/rate-limit.js.map +1 -0
  83. package/dist/secrets.d.ts +11 -0
  84. package/dist/secrets.d.ts.map +1 -0
  85. package/dist/secrets.js +10 -0
  86. package/dist/secrets.js.map +1 -0
  87. package/dist/testing/test-utils.d.ts +99 -0
  88. package/dist/testing/test-utils.d.ts.map +1 -0
  89. package/dist/testing/test-utils.js +153 -0
  90. package/dist/testing/test-utils.js.map +1 -0
  91. package/dist/testing.d.ts +10 -0
  92. package/dist/testing.d.ts.map +1 -0
  93. package/dist/testing.js +9 -0
  94. package/dist/testing.js.map +1 -0
  95. package/dist/ws/ws.d.ts +139 -0
  96. package/dist/ws/ws.d.ts.map +1 -0
  97. package/dist/ws/ws.js +294 -0
  98. package/dist/ws/ws.js.map +1 -0
  99. package/dist/ws.d.ts +5 -133
  100. package/dist/ws.d.ts.map +1 -1
  101. package/dist/ws.js +4 -291
  102. package/dist/ws.js.map +1 -1
  103. package/package.json +47 -5
  104. package/dist/adapter.d.ts.map +0 -1
  105. package/dist/adapter.js.map +0 -1
  106. package/dist/context.d.ts.map +0 -1
  107. package/dist/context.js.map +0 -1
  108. package/dist/errors.d.ts.map +0 -1
  109. package/dist/errors.js.map +0 -1
  110. package/dist/handler.d.ts.map +0 -1
  111. package/dist/handler.js.map +0 -1
  112. package/dist/logger.d.ts.map +0 -1
  113. package/dist/logger.js.map +0 -1
  114. package/dist/middleware.d.ts +0 -47
  115. package/dist/middleware.d.ts.map +0 -1
  116. package/dist/middleware.js +0 -147
  117. package/dist/middleware.js.map +0 -1
  118. package/dist/response.d.ts.map +0 -1
  119. package/dist/response.js.map +0 -1
  120. /package/dist/{adapter.d.ts → handler/adapter.d.ts} +0 -0
  121. /package/dist/{errors.d.ts → handler/errors.d.ts} +0 -0
  122. /package/dist/{response.d.ts → handler/response.d.ts} +0 -0
@@ -0,0 +1,262 @@
1
+ /**
2
+ * VentureKit Task Handler
3
+ *
4
+ * Unified handler for non-HTTP Lambda functions:
5
+ * - Standalone functions (src/functions/)
6
+ * - Queue consumers (src/queues/)
7
+ * - Scheduled tasks / cron handlers (src/crons/)
8
+ *
9
+ * Provides the same developer experience as handler() for routes:
10
+ * - Middleware pipeline
11
+ * - Structured logging
12
+ * - Error handling with structured responses
13
+ * - Transaction support (auto-commit / auto-rollback)
14
+ * - Input validation (Zod schemas)
15
+ * - Automatic trace context propagation
16
+ *
17
+ * ## Retry Architecture (Two Layers)
18
+ *
19
+ * **Layer 1 — Infrastructure retries (managed by AWS, outside your code):**
20
+ * - SQS queues: failed invocations return the message to the queue after
21
+ * `visibilityTimeout`. After `maxReceiveCount` failures → dead-letter queue.
22
+ * - EventBridge crons: 2 automatic retries with exponential backoff.
23
+ * - Async Lambda invocations: 2 automatic retries by default.
24
+ *
25
+ * **Layer 2 — Application retries (managed by taskHandler, inside one invocation):**
26
+ * - `retries: N` retries the handler within a single Lambda invocation.
27
+ * - Useful for transient errors (network blips, DB connection resets, throttles).
28
+ * - Uses exponential backoff: `retryDelayMs * 2^attempt`.
29
+ * - Validation errors (TaskValidationError) are never retried.
30
+ *
31
+ * The two layers are complementary: application retries handle transient glitches
32
+ * before the function fails. If all application retries are exhausted, the error
33
+ * propagates to the infrastructure layer (SQS visibility timeout / DLQ, etc.).
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * import { taskHandler } from '@venturekit/runtime';
38
+ *
39
+ * export const main = taskHandler<MyEvent, MyResult>(
40
+ * async (event, ctx, logger) => {
41
+ * logger.info('Processing', { event });
42
+ * return { processed: true };
43
+ * },
44
+ * { timeout: 30_000 },
45
+ * );
46
+ * ```
47
+ */
48
+ import { createLogger } from '../logging/logger.js';
49
+ import { generateId } from '../logging/tracing.js';
50
+ /**
51
+ * Build a TaskContext from a Lambda Context and event.
52
+ */
53
+ function buildTaskContext(event, lambdaContext) {
54
+ // Extract trace from event.__trace headers (propagated by invoke())
55
+ let traceId;
56
+ if (typeof event === 'object' && event !== null && '__trace' in event) {
57
+ const trace = event.__trace;
58
+ if (typeof trace === 'object' && trace !== null) {
59
+ traceId = trace['x-trace-id'];
60
+ }
61
+ }
62
+ // Generate a fresh traceId if none was propagated — never read from process.env
63
+ // to keep Lambda stateless across warm-start invocations.
64
+ if (!traceId) {
65
+ traceId = generateId();
66
+ }
67
+ // Hydrate intent outputs
68
+ let intentOutputs;
69
+ try {
70
+ const raw = process.env.VENTURE_INTENT_OUTPUTS;
71
+ if (raw) {
72
+ intentOutputs = JSON.parse(raw);
73
+ }
74
+ }
75
+ catch {
76
+ // ignore
77
+ }
78
+ return {
79
+ requestId: lambdaContext.awsRequestId,
80
+ timestamp: new Date(),
81
+ functionName: lambdaContext.functionName,
82
+ getRemainingTimeInMillis: () => lambdaContext.getRemainingTimeInMillis(),
83
+ traceId,
84
+ rawContext: lambdaContext,
85
+ intentOutputs,
86
+ event,
87
+ logger: undefined, // set immediately after construction
88
+ };
89
+ }
90
+ /**
91
+ * VentureKit task handler for non-HTTP Lambda functions.
92
+ *
93
+ * Provides middleware, logging, validation, transactions, and error handling
94
+ * for standalone functions, queue consumers, and scheduled tasks.
95
+ *
96
+ * @example Basic usage
97
+ * ```typescript
98
+ * export const main = taskHandler<MyEvent, MyResult>(async (event, ctx, logger) => {
99
+ * logger.info('Processing event', { event });
100
+ * return { processed: true };
101
+ * });
102
+ * ```
103
+ *
104
+ * @example With validation and transactions
105
+ * ```typescript
106
+ * export const main = taskHandler<OrderEvent, OrderResult>(
107
+ * async (event, ctx, logger) => {
108
+ * const result = await ctx.tx!.query('INSERT INTO orders ...');
109
+ * return { orderId: result.id };
110
+ * },
111
+ * {
112
+ * event: OrderEventSchema,
113
+ * transactional: true,
114
+ * retries: 2,
115
+ * },
116
+ * );
117
+ * ```
118
+ *
119
+ * @example With middleware (same Middleware type as HTTP handlers)
120
+ * ```typescript
121
+ * export const main = taskHandler(
122
+ * async (event, ctx, logger) => { ... },
123
+ * {
124
+ * middleware: [
125
+ * { name: 'audit', fn: async (ctx, next) => {
126
+ * ctx.logger.info('Audit: start');
127
+ * const result = await next();
128
+ * ctx.logger.info('Audit: done');
129
+ * return result;
130
+ * }},
131
+ * ],
132
+ * },
133
+ * );
134
+ * ```
135
+ */
136
+ export function taskHandler(fn, config = {}) {
137
+ const { middleware = [], logLevel = 'info', transactional = false, timeout, retries = 0, retryDelayMs = 1000, } = config;
138
+ return async (event, lambdaContext) => {
139
+ const ctx = buildTaskContext(event, lambdaContext);
140
+ const logger = createLogger({ minLevel: logLevel });
141
+ ctx.logger = logger;
142
+ ctx.event = event;
143
+ logger.info('Task started', {
144
+ functionName: ctx.functionName,
145
+ requestId: ctx.requestId,
146
+ traceId: ctx.traceId,
147
+ });
148
+ const start = Date.now();
149
+ // Build the core execution function
150
+ const execute = async () => {
151
+ // Validate event with Zod schema if provided
152
+ if (config.event) {
153
+ // If the event has a `body` field that is a JSON string (e.g. from
154
+ // API Gateway or SQS), parse it so Zod validates the actual payload.
155
+ let dataToValidate = event;
156
+ if (typeof event === 'object' && event !== null
157
+ && 'body' in event
158
+ && typeof event.body === 'string') {
159
+ try {
160
+ dataToValidate = JSON.parse(event.body);
161
+ }
162
+ catch {
163
+ throw new TaskValidationError('Event validation failed: body is not valid JSON', [{ path: ['body'], message: 'body is not valid JSON' }]);
164
+ }
165
+ }
166
+ const result = config.event.safeParse(dataToValidate);
167
+ if (!result.success) {
168
+ const issues = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);
169
+ throw new TaskValidationError(`Event validation failed: ${issues.join('; ')}`, result.error.issues);
170
+ }
171
+ event = result.data;
172
+ }
173
+ // Transaction support
174
+ if (transactional) {
175
+ const data = await import('@venturekit/data');
176
+ const tx = await data.beginTransaction();
177
+ ctx.tx = tx;
178
+ try {
179
+ const result = await fn(event, ctx, logger);
180
+ await tx.commit();
181
+ return result;
182
+ }
183
+ catch (txError) {
184
+ await tx.rollback();
185
+ throw txError;
186
+ }
187
+ }
188
+ return fn(event, ctx, logger);
189
+ };
190
+ // Compose middleware around the execution function
191
+ // Middleware uses the unified (ctx, next) signature
192
+ let chain = execute;
193
+ for (let i = middleware.length - 1; i >= 0; i--) {
194
+ const mw = middleware[i];
195
+ const next = chain;
196
+ chain = () => mw.fn(ctx, next);
197
+ }
198
+ // Timeout wrapper
199
+ const executeWithTimeout = async () => {
200
+ if (!timeout)
201
+ return chain();
202
+ return Promise.race([
203
+ chain(),
204
+ new Promise((_, reject) => {
205
+ setTimeout(() => reject(new Error(`Task timeout after ${timeout}ms`)), timeout);
206
+ }),
207
+ ]);
208
+ };
209
+ // Retry wrapper
210
+ let lastError;
211
+ for (let attempt = 0; attempt <= retries; attempt++) {
212
+ try {
213
+ const result = await executeWithTimeout();
214
+ const duration = Date.now() - start;
215
+ logger.info('Task completed', {
216
+ functionName: ctx.functionName,
217
+ requestId: ctx.requestId,
218
+ durationMs: duration,
219
+ attempt: attempt + 1,
220
+ });
221
+ return result;
222
+ }
223
+ catch (err) {
224
+ lastError = err instanceof Error ? err : new Error(String(err));
225
+ // Don't retry validation errors
226
+ if (err instanceof TaskValidationError) {
227
+ throw err;
228
+ }
229
+ if (attempt < retries) {
230
+ const delay = retryDelayMs * Math.pow(2, attempt);
231
+ logger.warn('Task failed, retrying', {
232
+ attempt: attempt + 1,
233
+ maxRetries: retries,
234
+ delayMs: delay,
235
+ error: lastError.message,
236
+ });
237
+ await new Promise((resolve) => setTimeout(resolve, delay));
238
+ }
239
+ }
240
+ }
241
+ const duration = Date.now() - start;
242
+ logger.error('Task failed', {
243
+ functionName: ctx.functionName,
244
+ requestId: ctx.requestId,
245
+ durationMs: duration,
246
+ error: lastError.message,
247
+ });
248
+ throw lastError;
249
+ };
250
+ }
251
+ /**
252
+ * Validation error for task events.
253
+ */
254
+ export class TaskValidationError extends Error {
255
+ issues;
256
+ constructor(message, issues) {
257
+ super(message);
258
+ this.name = 'TaskValidationError';
259
+ this.issues = issues;
260
+ }
261
+ }
262
+ //# sourceMappingURL=task-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-handler.js","sourceRoot":"","sources":["../../src/handler/task-handler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,19 +2,38 @@
2
2
  * @venturekit/runtime
3
3
  *
4
4
  * Runtime utilities for VentureKit Lambda functions.
5
+ *
6
+ * This is the core entry point — it only loads lightweight modules.
7
+ * Heavy optional features are available via subpath imports:
8
+ *
9
+ * @venturekit/runtime/ws — WebSocket connection store (DynamoDB)
10
+ * @venturekit/runtime/patterns — invoke, saga, circuit-breaker, idempotency
11
+ * @venturekit/runtime/rate-limit — DynamoDB-backed rate limit stores
12
+ * @venturekit/runtime/secrets — SSM / Secrets Manager client
13
+ * @venturekit/runtime/openapi — OpenAPI spec generation
14
+ * @venturekit/runtime/testing — Test utilities (mockEvent, mockContext, etc.)
15
+ *
16
+ * This ensures `import { handler } from '@venturekit/runtime'` never triggers
17
+ * loading of AWS SDK or other heavy optional dependencies.
5
18
  */
6
- export { handler } from './handler.js';
7
- export type { HandlerFn, HandlerConfig, StatusCode } from './handler.js';
8
- export { buildContext, extractUserContext, extractLocale, } from './context.js';
9
- export type { RequestContext, UserContext, TenantContext } from './context.js';
10
- export { success, created, noContent, error, errorResponse, redirect, } from './response.js';
11
- export type { SuccessResponse, ErrorResponse } from './response.js';
12
- export { VentureError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, ValidationError, RateLimitError, InternalError, ServiceUnavailableError, isVentureError, } from './errors.js';
13
- export { Logger, createLogger, logger, } from './logger.js';
14
- export type { LogLevel, LogEntry, LoggerConfig } from './logger.js';
15
- export { compose, loggingMiddleware, corsMiddleware, timeoutMiddleware, errorBoundaryMiddleware, } from './middleware.js';
16
- export type { MiddlewareFn, Middleware } from './middleware.js';
17
- export { connectionStore } from './ws.js';
18
- export type { ConnectionRecord, ConnectionMetadata } from './ws.js';
19
- export { httpToLambdaEvent, createLocalContext, lambdaResultToHttp, adaptHandler, } from './adapter.js';
19
+ export { handler } from './handler/handler.js';
20
+ export type { HandlerFn, HandlerConfig, StatusCode, ZodLikeSchema } from './handler/handler.js';
21
+ export { taskHandler, TaskValidationError } from './handler/task-handler.js';
22
+ export type { TaskHandlerFn, TaskContext, TaskHandlerConfig, } from './handler/task-handler.js';
23
+ export { buildContext, extractUserContext, extractLocale, } from './handler/context.js';
24
+ export type { BaseContext, RequestContext, UserContext, TenantContext, Transaction } from './handler/context.js';
25
+ export { success, created, noContent, error, errorResponse, redirect, } from './handler/response.js';
26
+ export type { SuccessResponse, ErrorResponse } from './handler/response.js';
27
+ export { VentureError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, ValidationError, RateLimitError, InternalError, ServiceUnavailableError, isVentureError, } from './handler/errors.js';
28
+ export { Logger, createLogger, logger, } from './logging/logger.js';
29
+ export type { LogLevel, LogEntry, LoggerConfig } from './logging/logger.js';
30
+ export { compose, loggingMiddleware, corsMiddleware, timeoutMiddleware, errorBoundaryMiddleware, rateLimitMiddleware, requestIdMiddleware, timingMiddleware, apiKeyAuthMiddleware, } from './middleware/middleware.js';
31
+ export type { MiddlewareFn, Middleware, RateLimitCheck, RateLimitOptions } from './middleware/middleware.js';
32
+ export { createMemoryRateLimitStore, RATE_LIMIT_PRESETS, } from './middleware/rate-limit-store.js';
33
+ export type { RateLimitPreset, RateLimitPresetConfig, } from './middleware/rate-limit-store.js';
34
+ export { httpToLambdaEvent, createLocalContext, lambdaResultToHttp, adaptHandler, } from './handler/adapter.js';
35
+ export { extractTraceContext, injectTraceHeaders, createChildTrace, traceFromRequest, generateId, TRACE_HEADERS, } from './logging/tracing.js';
36
+ export type { TraceContext } from './logging/tracing.js';
37
+ export { createEnvClient, env, } from './config/env.js';
38
+ export type { EnvGetOptions, EnvClient, } from './config/env.js';
20
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAO,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGpE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhG,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,YAAY,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGjH,OAAO,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAG5E,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG7G,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EACL,eAAe,EACf,GAAG,GACJ,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,59 +1,41 @@
1
- "use strict";
2
1
  /**
3
2
  * @venturekit/runtime
4
3
  *
5
4
  * Runtime utilities for VentureKit Lambda functions.
5
+ *
6
+ * This is the core entry point — it only loads lightweight modules.
7
+ * Heavy optional features are available via subpath imports:
8
+ *
9
+ * @venturekit/runtime/ws — WebSocket connection store (DynamoDB)
10
+ * @venturekit/runtime/patterns — invoke, saga, circuit-breaker, idempotency
11
+ * @venturekit/runtime/rate-limit — DynamoDB-backed rate limit stores
12
+ * @venturekit/runtime/secrets — SSM / Secrets Manager client
13
+ * @venturekit/runtime/openapi — OpenAPI spec generation
14
+ * @venturekit/runtime/testing — Test utilities (mockEvent, mockContext, etc.)
15
+ *
16
+ * This ensures `import { handler } from '@venturekit/runtime'` never triggers
17
+ * loading of AWS SDK or other heavy optional dependencies.
6
18
  */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.adaptHandler = exports.lambdaResultToHttp = exports.createLocalContext = exports.httpToLambdaEvent = exports.connectionStore = exports.errorBoundaryMiddleware = exports.timeoutMiddleware = exports.corsMiddleware = exports.loggingMiddleware = exports.compose = exports.logger = exports.createLogger = exports.Logger = exports.isVentureError = exports.ServiceUnavailableError = exports.InternalError = exports.RateLimitError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.VentureError = exports.redirect = exports.errorResponse = exports.error = exports.noContent = exports.created = exports.success = exports.extractLocale = exports.extractUserContext = exports.buildContext = exports.handler = void 0;
9
- // Handler
10
- var handler_js_1 = require("./handler.js");
11
- Object.defineProperty(exports, "handler", { enumerable: true, get: function () { return handler_js_1.handler; } });
19
+ // Handler (HTTP routes)
20
+ export { handler } from './handler/handler.js';
21
+ // Task Handler (functions, queues, crons)
22
+ export { taskHandler, TaskValidationError } from './handler/task-handler.js';
12
23
  // Context
13
- var context_js_1 = require("./context.js");
14
- Object.defineProperty(exports, "buildContext", { enumerable: true, get: function () { return context_js_1.buildContext; } });
15
- Object.defineProperty(exports, "extractUserContext", { enumerable: true, get: function () { return context_js_1.extractUserContext; } });
16
- Object.defineProperty(exports, "extractLocale", { enumerable: true, get: function () { return context_js_1.extractLocale; } });
24
+ export { buildContext, extractUserContext, extractLocale, } from './handler/context.js';
17
25
  // Response utilities
18
- var response_js_1 = require("./response.js");
19
- Object.defineProperty(exports, "success", { enumerable: true, get: function () { return response_js_1.success; } });
20
- Object.defineProperty(exports, "created", { enumerable: true, get: function () { return response_js_1.created; } });
21
- Object.defineProperty(exports, "noContent", { enumerable: true, get: function () { return response_js_1.noContent; } });
22
- Object.defineProperty(exports, "error", { enumerable: true, get: function () { return response_js_1.error; } });
23
- Object.defineProperty(exports, "errorResponse", { enumerable: true, get: function () { return response_js_1.errorResponse; } });
24
- Object.defineProperty(exports, "redirect", { enumerable: true, get: function () { return response_js_1.redirect; } });
26
+ export { success, created, noContent, error, errorResponse, redirect, } from './handler/response.js';
25
27
  // Errors
26
- var errors_js_1 = require("./errors.js");
27
- Object.defineProperty(exports, "VentureError", { enumerable: true, get: function () { return errors_js_1.VentureError; } });
28
- Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return errors_js_1.BadRequestError; } });
29
- Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return errors_js_1.UnauthorizedError; } });
30
- Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return errors_js_1.ForbiddenError; } });
31
- Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return errors_js_1.NotFoundError; } });
32
- Object.defineProperty(exports, "ConflictError", { enumerable: true, get: function () { return errors_js_1.ConflictError; } });
33
- Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_js_1.ValidationError; } });
34
- Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_js_1.RateLimitError; } });
35
- Object.defineProperty(exports, "InternalError", { enumerable: true, get: function () { return errors_js_1.InternalError; } });
36
- Object.defineProperty(exports, "ServiceUnavailableError", { enumerable: true, get: function () { return errors_js_1.ServiceUnavailableError; } });
37
- Object.defineProperty(exports, "isVentureError", { enumerable: true, get: function () { return errors_js_1.isVentureError; } });
28
+ export { VentureError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, ValidationError, RateLimitError, InternalError, ServiceUnavailableError, isVentureError, } from './handler/errors.js';
38
29
  // Logger
39
- var logger_js_1 = require("./logger.js");
40
- Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_js_1.Logger; } });
41
- Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_js_1.createLogger; } });
42
- Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_js_1.logger; } });
43
- // Middleware
44
- var middleware_js_1 = require("./middleware.js");
45
- Object.defineProperty(exports, "compose", { enumerable: true, get: function () { return middleware_js_1.compose; } });
46
- Object.defineProperty(exports, "loggingMiddleware", { enumerable: true, get: function () { return middleware_js_1.loggingMiddleware; } });
47
- Object.defineProperty(exports, "corsMiddleware", { enumerable: true, get: function () { return middleware_js_1.corsMiddleware; } });
48
- Object.defineProperty(exports, "timeoutMiddleware", { enumerable: true, get: function () { return middleware_js_1.timeoutMiddleware; } });
49
- Object.defineProperty(exports, "errorBoundaryMiddleware", { enumerable: true, get: function () { return middleware_js_1.errorBoundaryMiddleware; } });
50
- // WebSocket connection store
51
- var ws_js_1 = require("./ws.js");
52
- Object.defineProperty(exports, "connectionStore", { enumerable: true, get: function () { return ws_js_1.connectionStore; } });
30
+ export { Logger, createLogger, logger, } from './logging/logger.js';
31
+ // Middleware (core no heavy deps)
32
+ export { compose, loggingMiddleware, corsMiddleware, timeoutMiddleware, errorBoundaryMiddleware, rateLimitMiddleware, requestIdMiddleware, timingMiddleware, apiKeyAuthMiddleware, } from './middleware/middleware.js';
33
+ // In-memory rate limit store (no AWS deps safe for core)
34
+ export { createMemoryRateLimitStore, RATE_LIMIT_PRESETS, } from './middleware/rate-limit-store.js';
53
35
  // Local dev adapter (HTTP ↔ Lambda event conversion)
54
- var adapter_js_1 = require("./adapter.js");
55
- Object.defineProperty(exports, "httpToLambdaEvent", { enumerable: true, get: function () { return adapter_js_1.httpToLambdaEvent; } });
56
- Object.defineProperty(exports, "createLocalContext", { enumerable: true, get: function () { return adapter_js_1.createLocalContext; } });
57
- Object.defineProperty(exports, "lambdaResultToHttp", { enumerable: true, get: function () { return adapter_js_1.lambdaResultToHttp; } });
58
- Object.defineProperty(exports, "adaptHandler", { enumerable: true, get: function () { return adapter_js_1.adaptHandler; } });
36
+ export { httpToLambdaEvent, createLocalContext, lambdaResultToHttp, adaptHandler, } from './handler/adapter.js';
37
+ // Tracing
38
+ export { extractTraceContext, injectTraceHeaders, createChildTrace, traceFromRequest, generateId, TRACE_HEADERS, } from './logging/tracing.js';
39
+ // Environment variables (no AWS deps)
40
+ export { createEnvClient, env, } from './config/env.js';
59
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,UAAU;AACV,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAGhB,UAAU;AACV,2CAIsB;AAHpB,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,2GAAA,aAAa,OAAA;AAIf,qBAAqB;AACrB,6CAOuB;AANrB,sGAAA,OAAO,OAAA;AACP,sGAAA,OAAO,OAAA;AACP,wGAAA,SAAS,OAAA;AACT,oGAAA,KAAK,OAAA;AACL,4GAAA,aAAa,OAAA;AACb,uGAAA,QAAQ,OAAA;AAIV,SAAS;AACT,yCAYqB;AAXnB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,oHAAA,uBAAuB,OAAA;AACvB,2GAAA,cAAc,OAAA;AAGhB,SAAS;AACT,yCAIqB;AAHnB,mGAAA,MAAM,OAAA;AACN,yGAAA,YAAY,OAAA;AACZ,mGAAA,MAAM,OAAA;AAIR,aAAa;AACb,iDAMyB;AALvB,wGAAA,OAAO,OAAA;AACP,kHAAA,iBAAiB,OAAA;AACjB,+GAAA,cAAc,OAAA;AACd,kHAAA,iBAAiB,OAAA;AACjB,wHAAA,uBAAuB,OAAA;AAIzB,6BAA6B;AAC7B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAGxB,qDAAqD;AACrD,2CAKsB;AAJpB,+GAAA,iBAAiB,OAAA;AACjB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,0GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAwB;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,0CAA0C;AAC1C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAO7E,UAAU;AACV,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,qBAAqB;AACrB,OAAO,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAG/B,SAAS;AACT,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,SAAS;AACT,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,qBAAqB,CAAC;AAG7B,oCAAoC;AACpC,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,2DAA2D;AAC3D,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAM1C,qDAAqD;AACrD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,sCAAsC;AACtC,OAAO,EACL,eAAe,EACf,GAAG,GACJ,MAAM,iBAAiB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * - Child logger support with bound fields
11
11
  * - Lambda-optimized (no worker threads, synchronous output)
12
12
  */
13
- import { RequestContext } from './context.js';
13
+ import { RequestContext } from '../handler/context.js';
14
14
  /**
15
15
  * Log levels
16
16
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAmB9C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAUzC;;OAEG;IACH,YAAY,IAAI,IAAI;IAapB;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAO9C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAG7D;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAEnE"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * VentureKit Logger
4
3
  *
@@ -11,17 +10,11 @@
11
10
  * - Child logger support with bound fields
12
11
  * - Lambda-optimized (no worker threads, synchronous output)
13
12
  */
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.logger = exports.Logger = void 0;
19
- exports.createLogger = createLogger;
20
- const pino_1 = __importDefault(require("pino"));
13
+ import pino from 'pino';
21
14
  /**
22
15
  * Logger instance — thin wrapper over pino
23
16
  */
24
- class Logger {
17
+ export class Logger {
25
18
  pinoLogger;
26
19
  context = null;
27
20
  config;
@@ -30,11 +23,11 @@ class Logger {
30
23
  minLevel: config.minLevel ?? 'info',
31
24
  includeContext: config.includeContext ?? true,
32
25
  };
33
- this.pinoLogger = (0, pino_1.default)({
26
+ this.pinoLogger = pino({
34
27
  level: this.config.minLevel,
35
28
  // Lambda-friendly: no worker threads, flat JSON, fast
36
29
  transport: undefined,
37
- timestamp: pino_1.default.stdTimeFunctions.isoTime,
30
+ timestamp: pino.stdTimeFunctions.isoTime,
38
31
  formatters: {
39
32
  level(label) {
40
33
  return { level: label };
@@ -59,9 +52,9 @@ class Logger {
59
52
  */
60
53
  clearContext() {
61
54
  this.context = null;
62
- this.pinoLogger = (0, pino_1.default)({
55
+ this.pinoLogger = pino({
63
56
  level: this.config.minLevel,
64
- timestamp: pino_1.default.stdTimeFunctions.isoTime,
57
+ timestamp: pino.stdTimeFunctions.isoTime,
65
58
  formatters: {
66
59
  level(label) {
67
60
  return { level: label };
@@ -91,15 +84,14 @@ class Logger {
91
84
  data ? this.pinoLogger.error(data, message) : this.pinoLogger.error(message);
92
85
  }
93
86
  }
94
- exports.Logger = Logger;
95
87
  /**
96
88
  * Default logger instance
97
89
  */
98
- exports.logger = new Logger();
90
+ export const logger = new Logger();
99
91
  /**
100
92
  * Create a new logger with custom config
101
93
  */
102
- function createLogger(config) {
94
+ export function createLogger(config) {
103
95
  return new Logger(config);
104
96
  }
105
97
  //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * VentureKit Distributed Tracing
3
+ *
4
+ * Correlation ID / trace ID propagation across Lambda invocations.
5
+ * Integrates with X-Ray trace IDs and custom trace context.
6
+ */
7
+ import type { RequestContext } from '../handler/context.js';
8
+ /**
9
+ * Trace context propagated across service boundaries
10
+ */
11
+ export interface TraceContext {
12
+ /** Root trace ID (created at the entry point) */
13
+ traceId: string;
14
+ /** Current span ID */
15
+ spanId: string;
16
+ /** Parent span ID (undefined for root span) */
17
+ parentSpanId?: string;
18
+ /** Baggage — arbitrary key-value pairs propagated across all spans */
19
+ baggage: Record<string, string>;
20
+ }
21
+ /**
22
+ * Trace headers used for propagation
23
+ */
24
+ export declare const TRACE_HEADERS: {
25
+ readonly TRACE_ID: "x-trace-id";
26
+ readonly SPAN_ID: "x-span-id";
27
+ readonly PARENT_SPAN_ID: "x-parent-span-id";
28
+ readonly BAGGAGE: "x-trace-baggage";
29
+ };
30
+ /**
31
+ * Generate a random ID (16 hex chars)
32
+ */
33
+ export declare function generateId(): string;
34
+ /**
35
+ * Extract trace context from request headers
36
+ */
37
+ export declare function extractTraceContext(headers: Record<string, string | undefined>): TraceContext;
38
+ /**
39
+ * Serialize trace context into headers for outbound requests
40
+ */
41
+ export declare function injectTraceHeaders(trace: TraceContext): Record<string, string>;
42
+ /**
43
+ * Create a child trace context (for outbound calls)
44
+ */
45
+ export declare function createChildTrace(parent: TraceContext): TraceContext;
46
+ /**
47
+ * Extract trace context from a RequestContext
48
+ * (reads from rawEvent headers)
49
+ */
50
+ export declare function traceFromRequest(ctx: RequestContext): TraceContext;
51
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/logging/tracing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,YAAY,CAgB7F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAOnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,YAAY,CAElE"}