@venturekit/runtime 0.0.0-dev.20260415182021 → 0.0.0-dev.20260427220257

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 (70) hide show
  1. package/dist/env/memo.d.ts +39 -0
  2. package/dist/env/memo.d.ts.map +1 -0
  3. package/dist/env/memo.js +85 -0
  4. package/dist/env/memo.js.map +1 -0
  5. package/dist/handler/context.d.ts.map +1 -1
  6. package/dist/handler/context.js +12 -14
  7. package/dist/handler/context.js.map +1 -1
  8. package/dist/handler/data-loader.d.ts +50 -0
  9. package/dist/handler/data-loader.d.ts.map +1 -0
  10. package/dist/handler/data-loader.js +68 -0
  11. package/dist/handler/data-loader.js.map +1 -0
  12. package/dist/handler/errors.d.ts +10 -0
  13. package/dist/handler/errors.d.ts.map +1 -1
  14. package/dist/handler/errors.js +13 -0
  15. package/dist/handler/errors.js.map +1 -1
  16. package/dist/handler/handler.d.ts +18 -0
  17. package/dist/handler/handler.d.ts.map +1 -1
  18. package/dist/handler/handler.js +56 -11
  19. package/dist/handler/handler.js.map +1 -1
  20. package/dist/handler/queue-batch.d.ts +140 -0
  21. package/dist/handler/queue-batch.d.ts.map +1 -0
  22. package/dist/handler/queue-batch.js +180 -0
  23. package/dist/handler/queue-batch.js.map +1 -0
  24. package/dist/handler/response.d.ts +8 -1
  25. package/dist/handler/response.d.ts.map +1 -1
  26. package/dist/handler/response.js +18 -4
  27. package/dist/handler/response.js.map +1 -1
  28. package/dist/handler/task-handler.d.ts.map +1 -1
  29. package/dist/handler/task-handler.js +8 -12
  30. package/dist/handler/task-handler.js.map +1 -1
  31. package/dist/index.d.ts +5 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/logging/logger.d.ts +20 -1
  36. package/dist/logging/logger.d.ts.map +1 -1
  37. package/dist/logging/logger.js +66 -23
  38. package/dist/logging/logger.js.map +1 -1
  39. package/dist/logging/metrics.d.ts +105 -0
  40. package/dist/logging/metrics.d.ts.map +1 -0
  41. package/dist/logging/metrics.js +189 -0
  42. package/dist/logging/metrics.js.map +1 -0
  43. package/dist/logging/tracing.d.ts +64 -10
  44. package/dist/logging/tracing.d.ts.map +1 -1
  45. package/dist/logging/tracing.js +197 -15
  46. package/dist/logging/tracing.js.map +1 -1
  47. package/dist/middleware/middleware.d.ts +3 -0
  48. package/dist/middleware/middleware.d.ts.map +1 -1
  49. package/dist/middleware/middleware.js +11 -2
  50. package/dist/middleware/middleware.js.map +1 -1
  51. package/dist/middleware/rate-limit-store.d.ts +18 -0
  52. package/dist/middleware/rate-limit-store.d.ts.map +1 -1
  53. package/dist/middleware/rate-limit-store.js +24 -4
  54. package/dist/middleware/rate-limit-store.js.map +1 -1
  55. package/dist/patterns/circuit-breaker.d.ts +11 -0
  56. package/dist/patterns/circuit-breaker.d.ts.map +1 -1
  57. package/dist/patterns/circuit-breaker.js +26 -2
  58. package/dist/patterns/circuit-breaker.js.map +1 -1
  59. package/dist/patterns/invoke.d.ts.map +1 -1
  60. package/dist/patterns/invoke.js +60 -31
  61. package/dist/patterns/invoke.js.map +1 -1
  62. package/dist/patterns/saga.d.ts +42 -1
  63. package/dist/patterns/saga.d.ts.map +1 -1
  64. package/dist/patterns/saga.js +78 -20
  65. package/dist/patterns/saga.js.map +1 -1
  66. package/dist/security/internal-hmac.d.ts +59 -0
  67. package/dist/security/internal-hmac.d.ts.map +1 -0
  68. package/dist/security/internal-hmac.js +117 -0
  69. package/dist/security/internal-hmac.js.map +1 -0
  70. package/package.json +4 -4
@@ -0,0 +1,140 @@
1
+ /**
2
+ * VentureKit Queue Batch Handler
3
+ *
4
+ * Consumer-facing batch handler for queue-driven Lambdas. Your app code only
5
+ * sees a generic `(message, ctx, logger) => Promise<void>` contract — the
6
+ * handler takes care of the AWS-specific partial-batch-failure wire format
7
+ * under the hood. That keeps app code portable (testable without AWS mocks,
8
+ * movable between deployment targets) and keeps the framework's queue
9
+ * semantics in one place.
10
+ *
11
+ * ## Why this exists
12
+ *
13
+ * Under the hood this wraps Lambda's **partial batch response** contract
14
+ * (`reportBatchItemFailures`). Without that contract, a single bad message
15
+ * in a batch causes Lambda to return an error, which causes the broker to
16
+ * redeliver the **entire batch** — including records that already
17
+ * succeeded. Apps end up either double-processing or DLQ-ing messages that
18
+ * would have worked on their own. This handler collects per-message
19
+ * failures and reports only those back to Lambda.
20
+ *
21
+ * ## Prerequisites
22
+ *
23
+ * The underlying event source (SQS on AWS today) must be created with the
24
+ * partial-batch-failure contract enabled. VentureKit's CDK layer wires this
25
+ * automatically for queues discovered via `src/queues/`; app code never
26
+ * has to configure it directly.
27
+ *
28
+ * ## Example
29
+ *
30
+ * ```typescript
31
+ * import { queueBatchHandler } from '@venturekit/runtime';
32
+ *
33
+ * interface OrderMessage { orderId: string; amount: number }
34
+ *
35
+ * export const main = queueBatchHandler<OrderMessage>(
36
+ * async (order, ctx, logger) => {
37
+ * await chargeCard(order.orderId, order.amount);
38
+ * },
39
+ * { concurrency: 5 },
40
+ * );
41
+ * ```
42
+ */
43
+ import type { Context, SQSBatchResponse, SQSEvent } from 'aws-lambda';
44
+ import type { BaseContext } from './context.js';
45
+ import { Logger } from '../logging/logger.js';
46
+ /**
47
+ * Context passed to the per-message handler.
48
+ *
49
+ * Exposes the raw underlying record for callers that genuinely need queue-
50
+ * broker-specific attributes (e.g. delivery count, queue ARN) but hides the
51
+ * typing concern behind a generic name so app code doesn't read as SQS-
52
+ * specific.
53
+ */
54
+ export interface QueueMessageContext extends BaseContext {
55
+ /** Lambda function name (from the Lambda Context). */
56
+ functionName: string;
57
+ /** Raw Lambda Context. */
58
+ rawContext: Context;
59
+ /**
60
+ * The raw underlying record as delivered by the queue broker. On AWS this
61
+ * is an `SQSRecord`; exposed as `unknown` here so app code doesn't have to
62
+ * import AWS types. Cast when you genuinely need broker-specific fields.
63
+ */
64
+ record: unknown;
65
+ /** 0-based position of this record within its batch. */
66
+ index: number;
67
+ /** Total number of records in the batch. */
68
+ batchSize: number;
69
+ /** Contextual logger pre-scoped with messageId / queue / traceId. */
70
+ logger: Logger;
71
+ }
72
+ /**
73
+ * Per-message handler signature.
74
+ *
75
+ * - Successful return → message is acknowledged.
76
+ * - Throw / reject → message is reported as a failure in the batch response.
77
+ */
78
+ export type QueueMessageHandlerFn<TBody = unknown> = (body: TBody, ctx: QueueMessageContext, logger: Logger) => Promise<void>;
79
+ /**
80
+ * Input to a custom message parser. Carries just the fields a parser
81
+ * realistically needs (raw body bytes as a string, plus the broker-level
82
+ * identifier used for partial-batch reporting) so parsers stay decoupled
83
+ * from any specific queue broker's record shape.
84
+ */
85
+ export interface QueueRawMessage {
86
+ /** The raw message body as delivered by the broker. */
87
+ body: string;
88
+ /** Broker-assigned message identifier, used for partial-batch failures. */
89
+ messageId: string;
90
+ }
91
+ /**
92
+ * Per-message parse result. Return `{ok: true, value}` to pass a typed body
93
+ * to the handler, or `{ok: false, error}` to short-circuit with a failure.
94
+ */
95
+ export type QueueMessageParser<TBody> = (message: QueueRawMessage) => {
96
+ ok: true;
97
+ value: TBody;
98
+ } | {
99
+ ok: false;
100
+ error: Error;
101
+ };
102
+ export interface QueueBatchHandlerConfig<TBody = unknown> {
103
+ /** Log level (default: 'info'). */
104
+ logLevel?: 'debug' | 'info' | 'warn' | 'error';
105
+ /**
106
+ * Concurrency: how many messages to process in parallel (default: 1).
107
+ * Higher values can drain large batches faster but risk overwhelming
108
+ * downstream services. Keep this low (1–10) for queues that hit databases.
109
+ */
110
+ concurrency?: number;
111
+ /**
112
+ * Optional custom body parser. Defaults to `JSON.parse(message.body)`.
113
+ * Return `{ok: false, error}` to mark the message as failed without
114
+ * invoking the handler.
115
+ */
116
+ parseBody?: QueueMessageParser<TBody>;
117
+ /**
118
+ * If true, a thrown error from the handler rejects the whole batch
119
+ * (i.e. Lambda returns throws, causing full redelivery). Defaults to
120
+ * `false` — the recommended partial-batch-failure behavior.
121
+ */
122
+ failEntireBatchOnError?: boolean;
123
+ }
124
+ /**
125
+ * Create a batch-aware queue Lambda handler.
126
+ *
127
+ * Returns an AWS Lambda handler (so it drops straight into an `exports.main
128
+ * = queueBatchHandler(...)` binding) that:
129
+ * 1. Iterates over the incoming records (optionally in parallel).
130
+ * 2. Parses each body (JSON by default).
131
+ * 3. Calls your per-message handler.
132
+ * 4. Collects failures and returns them as `batchItemFailures` so Lambda
133
+ * only redelivers the failed messages.
134
+ *
135
+ * See the module docstring for the broker-side configuration required
136
+ * (partial-batch-failure must be enabled — VentureKit's CDK does this
137
+ * automatically for queues under `src/queues/`).
138
+ */
139
+ export declare function queueBatchHandler<TBody = unknown>(fn: QueueMessageHandlerFn<TBody>, config?: QueueBatchHandlerConfig<TBody>): (event: SQSEvent, context: Context) => Promise<SQSBatchResponse>;
140
+ //# sourceMappingURL=queue-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-batch.d.ts","sourceRoot":"","sources":["../../src/handler/queue-batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAa,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAG5D;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAAC,KAAK,GAAG,OAAO,IAAI,CACnD,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,eAAe,KAC7D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,uBAAuB,CAAC,KAAK,GAAG,OAAO;IACtD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAyBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAG,OAAO,EAC/C,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAChC,MAAM,GAAE,uBAAuB,CAAC,KAAK,CAAM,GAC1C,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAoGlE"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * VentureKit Queue Batch Handler
3
+ *
4
+ * Consumer-facing batch handler for queue-driven Lambdas. Your app code only
5
+ * sees a generic `(message, ctx, logger) => Promise<void>` contract — the
6
+ * handler takes care of the AWS-specific partial-batch-failure wire format
7
+ * under the hood. That keeps app code portable (testable without AWS mocks,
8
+ * movable between deployment targets) and keeps the framework's queue
9
+ * semantics in one place.
10
+ *
11
+ * ## Why this exists
12
+ *
13
+ * Under the hood this wraps Lambda's **partial batch response** contract
14
+ * (`reportBatchItemFailures`). Without that contract, a single bad message
15
+ * in a batch causes Lambda to return an error, which causes the broker to
16
+ * redeliver the **entire batch** — including records that already
17
+ * succeeded. Apps end up either double-processing or DLQ-ing messages that
18
+ * would have worked on their own. This handler collects per-message
19
+ * failures and reports only those back to Lambda.
20
+ *
21
+ * ## Prerequisites
22
+ *
23
+ * The underlying event source (SQS on AWS today) must be created with the
24
+ * partial-batch-failure contract enabled. VentureKit's CDK layer wires this
25
+ * automatically for queues discovered via `src/queues/`; app code never
26
+ * has to configure it directly.
27
+ *
28
+ * ## Example
29
+ *
30
+ * ```typescript
31
+ * import { queueBatchHandler } from '@venturekit/runtime';
32
+ *
33
+ * interface OrderMessage { orderId: string; amount: number }
34
+ *
35
+ * export const main = queueBatchHandler<OrderMessage>(
36
+ * async (order, ctx, logger) => {
37
+ * await chargeCard(order.orderId, order.amount);
38
+ * },
39
+ * { concurrency: 5 },
40
+ * );
41
+ * ```
42
+ */
43
+ import { createLogger } from '../logging/logger.js';
44
+ import { generateId } from '../logging/tracing.js';
45
+ /**
46
+ * Default JSON body parser. Returns a parse error if the message body is
47
+ * missing or not valid JSON — the broker redelivers (and eventually DLQs)
48
+ * via its own retry policy, rather than poisoning the whole batch.
49
+ */
50
+ function defaultParseJson(message) {
51
+ if (!message.body) {
52
+ return { ok: false, error: new Error('Queue message has empty body') };
53
+ }
54
+ try {
55
+ return { ok: true, value: JSON.parse(message.body) };
56
+ }
57
+ catch (err) {
58
+ return {
59
+ ok: false,
60
+ error: new Error(`Queue message body is not valid JSON: ${err instanceof Error ? err.message : String(err)}`),
61
+ };
62
+ }
63
+ }
64
+ /**
65
+ * Create a batch-aware queue Lambda handler.
66
+ *
67
+ * Returns an AWS Lambda handler (so it drops straight into an `exports.main
68
+ * = queueBatchHandler(...)` binding) that:
69
+ * 1. Iterates over the incoming records (optionally in parallel).
70
+ * 2. Parses each body (JSON by default).
71
+ * 3. Calls your per-message handler.
72
+ * 4. Collects failures and returns them as `batchItemFailures` so Lambda
73
+ * only redelivers the failed messages.
74
+ *
75
+ * See the module docstring for the broker-side configuration required
76
+ * (partial-batch-failure must be enabled — VentureKit's CDK does this
77
+ * automatically for queues under `src/queues/`).
78
+ */
79
+ export function queueBatchHandler(fn, config = {}) {
80
+ const { logLevel = 'info', concurrency = 1, parseBody = (defaultParseJson), failEntireBatchOnError = false, } = config;
81
+ return async (event, lambdaContext) => {
82
+ const rootLogger = createLogger({ minLevel: logLevel }).child({
83
+ component: 'queue-batch',
84
+ functionName: lambdaContext.functionName,
85
+ requestId: lambdaContext.awsRequestId,
86
+ });
87
+ if (!event.Records || event.Records.length === 0) {
88
+ // Nothing to do — return an empty partial response. (Never happens in
89
+ // practice, but guards against manual invocations with empty payloads.)
90
+ return { batchItemFailures: [] };
91
+ }
92
+ const batchSize = event.Records.length;
93
+ const failures = [];
94
+ const processOne = async (record, index) => {
95
+ const traceId = record.attributes?.AWSTraceHeader
96
+ ? extractTraceId(record.attributes.AWSTraceHeader)
97
+ : undefined;
98
+ const messageLogger = rootLogger.child({
99
+ messageId: record.messageId,
100
+ queueArn: record.eventSourceARN,
101
+ index,
102
+ traceId,
103
+ });
104
+ // Project the SQS record onto the broker-neutral QueueRawMessage so
105
+ // custom parsers don't need to import aws-lambda types.
106
+ const parsed = parseBody({ body: record.body, messageId: record.messageId });
107
+ if (!parsed.ok) {
108
+ messageLogger.error('Message parse failed', { error: parsed.error.message });
109
+ failures.push({ itemIdentifier: record.messageId });
110
+ return;
111
+ }
112
+ const ctx = {
113
+ requestId: lambdaContext.awsRequestId,
114
+ timestamp: new Date(),
115
+ traceId: traceId ?? generateId(),
116
+ functionName: lambdaContext.functionName,
117
+ rawContext: lambdaContext,
118
+ record,
119
+ index,
120
+ batchSize,
121
+ logger: messageLogger,
122
+ };
123
+ try {
124
+ await fn(parsed.value, ctx, messageLogger);
125
+ }
126
+ catch (err) {
127
+ const message = err instanceof Error ? err.message : String(err);
128
+ messageLogger.error('Message handler failed', { error: message });
129
+ if (failEntireBatchOnError) {
130
+ // Re-throw to abort the batch: Lambda will return an error response
131
+ // and the broker will redeliver the whole batch.
132
+ throw err instanceof Error ? err : new Error(message);
133
+ }
134
+ failures.push({ itemIdentifier: record.messageId });
135
+ }
136
+ };
137
+ // Bounded-concurrency iteration. A tiny hand-rolled pool avoids pulling
138
+ // in p-limit and keeps the framework's dep footprint small.
139
+ if (concurrency <= 1) {
140
+ for (let i = 0; i < event.Records.length; i++) {
141
+ await processOne(event.Records[i], i);
142
+ }
143
+ }
144
+ else {
145
+ let cursor = 0;
146
+ const workers = [];
147
+ const run = async () => {
148
+ while (true) {
149
+ const i = cursor++;
150
+ if (i >= event.Records.length)
151
+ return;
152
+ await processOne(event.Records[i], i);
153
+ }
154
+ };
155
+ const poolSize = Math.min(concurrency, event.Records.length);
156
+ for (let w = 0; w < poolSize; w++)
157
+ workers.push(run());
158
+ await Promise.all(workers);
159
+ }
160
+ rootLogger.info('Batch processed', {
161
+ batchSize,
162
+ failures: failures.length,
163
+ succeeded: batchSize - failures.length,
164
+ });
165
+ return { batchItemFailures: failures };
166
+ };
167
+ }
168
+ /**
169
+ * Extract the root trace ID from an X-Ray `AWSTraceHeader` (e.g.
170
+ * `Root=1-5759e988-bd862e3fe1be46a994272793;Parent=...`). Best-effort; falls
171
+ * back to `undefined` when the header is malformed.
172
+ */
173
+ function extractTraceId(awsTraceHeader) {
174
+ const root = awsTraceHeader
175
+ .split(';')
176
+ .map((p) => p.trim())
177
+ .find((p) => p.startsWith('Root='));
178
+ return root ? root.slice('Root='.length) : undefined;
179
+ }
180
+ //# sourceMappingURL=queue-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-batch.js","sourceRoot":"","sources":["../../src/handler/queue-batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAOH,OAAO,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAqFnD;;;;GAIG;AACH,SAAS,gBAAgB,CAAQ,OAAwB;IAGvD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAU,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,IAAI,KAAK,CACd,yCAAyC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5F;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAgC,EAChC,SAAyC,EAAE;IAE3C,MAAM,EACJ,QAAQ,GAAG,MAAM,EACjB,WAAW,GAAG,CAAC,EACf,SAAS,GAAG,CAAA,gBAAuB,CAAA,EACnC,sBAAsB,GAAG,KAAK,GAC/B,GAAG,MAAM,CAAC;IAEX,OAAO,KAAK,EAAE,KAAe,EAAE,aAAsB,EAA6B,EAAE;QAClF,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;YAC5D,SAAS,EAAE,aAAa;YACxB,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,SAAS,EAAE,aAAa,CAAC,YAAY;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,sEAAsE;YACtE,wEAAwE;YACxE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,MAAM,QAAQ,GAAiC,EAAE,CAAC;QAElD,MAAM,UAAU,GAAG,KAAK,EAAE,MAAiB,EAAE,KAAa,EAAiB,EAAE;YAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc;gBAC/C,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;gBAClD,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,cAAc;gBAC/B,KAAK;gBACL,OAAO;aACR,CAAC,CAAC;YAEH,oEAAoE;YACpE,wDAAwD;YACxD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAwB;gBAC/B,SAAS,EAAE,aAAa,CAAC,YAAY;gBACrC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE;gBAChC,YAAY,EAAE,aAAa,CAAC,YAAY;gBACxC,UAAU,EAAE,aAAa;gBACzB,MAAM;gBACN,KAAK;gBACL,SAAS;gBACT,MAAM,EAAE,aAAa;aACtB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,aAAa,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClE,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,oEAAoE;oBACpE,iDAAiD;oBACjD,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxD,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC;QAEF,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,MAAM,OAAO,GAAoB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;gBACpC,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;wBAAE,OAAO;oBACtC,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACvD,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,SAAS;YACT,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM;SACvC,CAAC,CAAC;QAEH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,cAAsB;IAC5C,MAAM,IAAI,GAAG,cAAc;SACxB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { APIGatewayProxyResultV2 } from 'aws-lambda';
7
7
  import { VentureError } from './errors.js';
8
+ import { Logger } from '../logging/logger.js';
8
9
  /**
9
10
  * Standard success response
10
11
  */
@@ -63,11 +64,17 @@ export declare function error(err: VentureError, options?: {
63
64
  requestId?: string;
64
65
  }): APIGatewayProxyResultV2;
65
66
  /**
66
- * Convert any error to an API Gateway response
67
+ * Convert any error to an API Gateway response.
68
+ *
69
+ * Unexpected (non-VentureError) errors are wrapped in `InternalError` for the
70
+ * response body, and logged through the structured `Logger` so trace/request
71
+ * fields are preserved in CloudWatch. Pass an explicit `logger` (typically
72
+ * `ctx.logger` from middleware) to inherit its bound context.
67
73
  */
68
74
  export declare function errorResponse(err: unknown, options?: {
69
75
  requestId?: string;
70
76
  logError?: boolean;
77
+ logger?: Logger;
71
78
  }): APIGatewayProxyResultV2;
72
79
  /**
73
80
  * Create a redirect response
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/handler/response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,CAAC,EACP,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,uBAAuB,CAqBzB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,CAAC,EACP,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACrE,uBAAuB,CAEzB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,uBAAuB,CAMvF;AAED;;GAEG;AACH,wBAAgB,KAAK,CACnB,GAAG,EAAE,YAAY,EACjB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,uBAAuB,CAwBzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,uBAAuB,CAczB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAe,GACzB,uBAAuB,CAQzB"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/handler/response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,MAAM,EAA2B,MAAM,sBAAsB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,CAAC,EACP,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,uBAAuB,CAqBzB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,CAAC,EACP,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACrE,uBAAuB,CAEzB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,uBAAuB,CAMvF;AAED;;GAEG;AACH,wBAAgB,KAAK,CACnB,GAAG,EAAE,YAAY,EACjB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,uBAAuB,CAwBzB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,uBAAuB,CAsBzB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAe,GACzB,uBAAuB,CAQzB"}
@@ -4,6 +4,7 @@
4
4
  * Standardized response formatting for API Gateway.
5
5
  */
6
6
  import { isVentureError, InternalError } from './errors.js';
7
+ import { logger as defaultLogger } from '../logging/logger.js';
7
8
  /**
8
9
  * Create a success response
9
10
  */
@@ -70,16 +71,29 @@ export function error(err, options = {}) {
70
71
  };
71
72
  }
72
73
  /**
73
- * Convert any error to an API Gateway response
74
+ * Convert any error to an API Gateway response.
75
+ *
76
+ * Unexpected (non-VentureError) errors are wrapped in `InternalError` for the
77
+ * response body, and logged through the structured `Logger` so trace/request
78
+ * fields are preserved in CloudWatch. Pass an explicit `logger` (typically
79
+ * `ctx.logger` from middleware) to inherit its bound context.
74
80
  */
75
81
  export function errorResponse(err, options = {}) {
76
- const { requestId, logError = true } = options;
82
+ const { requestId, logError = true, logger = defaultLogger } = options;
77
83
  if (isVentureError(err)) {
78
84
  return error(err, { requestId });
79
85
  }
80
- // Log unexpected errors
86
+ // Log unexpected errors through the structured logger so trace/request
87
+ // context is preserved, not raw console.error (which breaks CloudWatch
88
+ // Logs Insights queries and risks logging unredacted payloads).
81
89
  if (logError) {
82
- console.error('Unexpected error:', err);
90
+ const asError = err instanceof Error ? err : new Error(String(err));
91
+ logger.error('Unexpected error', {
92
+ message: asError.message,
93
+ name: asError.name,
94
+ stack: asError.stack,
95
+ ...(requestId ? { requestId } : {}),
96
+ });
83
97
  }
84
98
  // Wrap in InternalError for consistent response
85
99
  return error(new InternalError(), { requestId });
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/handler/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/handler/response.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../src/handler/task-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAG5D;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,wBAAwB,EAAE,MAAM,MAAM,CAAC;IACvC,yBAAyB;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CAC/D,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE;YAAE,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CACrJ;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,MAAM,GAAG,OAAO;IACjD,yEAAyE;IACzE,UAAU,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;IACvC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,WAAW,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC7D,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,GAAE,iBAAiB,CAAC,MAAM,CAAM,GACrC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAmJvD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;gBAG5E,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAMhE"}
1
+ {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../src/handler/task-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAK5D;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,wBAAwB,EAAE,MAAM,MAAM,CAAC;IACvC,yBAAyB;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CAC/D,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE;YAAE,MAAM,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CACrJ;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,MAAM,GAAG,OAAO;IACjD,yEAAyE;IACzE,UAAU,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;IACvC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,WAAW,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC7D,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,GAAE,iBAAiB,CAAC,MAAM,CAAM,GACrC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAsJvD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;gBAG5E,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAMhE"}
@@ -47,6 +47,8 @@
47
47
  */
48
48
  import { createLogger } from '../logging/logger.js';
49
49
  import { generateId } from '../logging/tracing.js';
50
+ import { getIntentOutputs } from '../env/memo.js';
51
+ import { loadDataModule } from './data-loader.js';
50
52
  /**
51
53
  * Build a TaskContext from a Lambda Context and event.
52
54
  */
@@ -64,17 +66,8 @@ function buildTaskContext(event, lambdaContext) {
64
66
  if (!traceId) {
65
67
  traceId = generateId();
66
68
  }
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
- }
69
+ // Hydrate intent outputs (memoized across warm invocations).
70
+ const intentOutputs = getIntentOutputs();
78
71
  return {
79
72
  requestId: lambdaContext.awsRequestId,
80
73
  timestamp: new Date(),
@@ -172,7 +165,10 @@ export function taskHandler(fn, config = {}) {
172
165
  }
173
166
  // Transaction support
174
167
  if (transactional) {
175
- const data = await import('@venturekit/data');
168
+ // Same loader pattern as `handler()` — surfaces a clear install-hint
169
+ // error when @venturekit/data isn't available instead of the raw
170
+ // MODULE_NOT_FOUND.
171
+ const data = await loadDataModule('taskHandler({ transactional: true })');
176
172
  const tx = await data.beginTransaction();
177
173
  ctx.tx = tx;
178
174
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"task-handler.js","sourceRoot":"","sources":["../../src/handler/task-handler.ts"],"names":[],"mappings":"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"}
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
@@ -19,14 +19,18 @@
19
19
  export { handler } from './handler/handler.js';
20
20
  export type { HandlerFn, HandlerConfig, StatusCode, ZodLikeSchema } from './handler/handler.js';
21
21
  export { taskHandler, TaskValidationError } from './handler/task-handler.js';
22
+ export { queueBatchHandler } from './handler/queue-batch.js';
23
+ export type { QueueBatchHandlerConfig, QueueMessageContext, QueueMessageHandlerFn, QueueMessageParser, QueueRawMessage, } from './handler/queue-batch.js';
22
24
  export type { TaskHandlerFn, TaskContext, TaskHandlerConfig, } from './handler/task-handler.js';
23
25
  export { buildContext, extractUserContext, extractLocale, } from './handler/context.js';
24
26
  export type { BaseContext, RequestContext, UserContext, TenantContext, Transaction } from './handler/context.js';
25
27
  export { success, created, noContent, error, errorResponse, redirect, } from './handler/response.js';
26
28
  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';
29
+ export { VentureError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, PayloadTooLargeError, ValidationError, RateLimitError, InternalError, ServiceUnavailableError, isVentureError, } from './handler/errors.js';
28
30
  export { Logger, createLogger, logger, } from './logging/logger.js';
29
31
  export type { LogLevel, LogEntry, LoggerConfig } from './logging/logger.js';
32
+ export { createMetrics } from './logging/metrics.js';
33
+ export type { MetricsClient, MetricsOptions, MetricUnit, StorageResolution, } from './logging/metrics.js';
30
34
  export { compose, loggingMiddleware, corsMiddleware, timeoutMiddleware, errorBoundaryMiddleware, rateLimitMiddleware, requestIdMiddleware, timingMiddleware, apiKeyAuthMiddleware, } from './middleware/middleware.js';
31
35
  export type { MiddlewareFn, Middleware, RateLimitCheck, RateLimitOptions } from './middleware/middleware.js';
32
36
  export { createMemoryRateLimitStore, RATE_LIMIT_PRESETS, } from './middleware/rate-limit-store.js';
@@ -1 +1 @@
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"}
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,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,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,oBAAoB,EACpB,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,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,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
@@ -20,14 +20,17 @@
20
20
  export { handler } from './handler/handler.js';
21
21
  // Task Handler (functions, queues, crons)
22
22
  export { taskHandler, TaskValidationError } from './handler/task-handler.js';
23
+ export { queueBatchHandler } from './handler/queue-batch.js';
23
24
  // Context
24
25
  export { buildContext, extractUserContext, extractLocale, } from './handler/context.js';
25
26
  // Response utilities
26
27
  export { success, created, noContent, error, errorResponse, redirect, } from './handler/response.js';
27
28
  // Errors
28
- export { VentureError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, ValidationError, RateLimitError, InternalError, ServiceUnavailableError, isVentureError, } from './handler/errors.js';
29
+ export { VentureError, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, ConflictError, PayloadTooLargeError, ValidationError, RateLimitError, InternalError, ServiceUnavailableError, isVentureError, } from './handler/errors.js';
29
30
  // Logger
30
31
  export { Logger, createLogger, logger, } from './logging/logger.js';
32
+ // Metrics (CloudWatch EMF)
33
+ export { createMetrics } from './logging/metrics.js';
31
34
  // Middleware (core — no heavy deps)
32
35
  export { compose, loggingMiddleware, corsMiddleware, timeoutMiddleware, errorBoundaryMiddleware, rateLimitMiddleware, requestIdMiddleware, timingMiddleware, apiKeyAuthMiddleware, } from './middleware/middleware.js';
33
36
  // In-memory rate limit store (no AWS deps — safe for core)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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"}
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;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAc7D,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,oBAAoB,EACpB,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,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQrD,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"}
@@ -36,12 +36,29 @@ export interface LoggerConfig {
36
36
  minLevel: LogLevel;
37
37
  /** Include request context in all logs */
38
38
  includeContext: boolean;
39
+ /**
40
+ * Fraction of `info` log lines to actually emit, between 0 and 1. Useful
41
+ * when high-volume Lambdas would otherwise blow the CloudWatch logs
42
+ * budget. `warn`/`error` are never sampled — you always want to see them.
43
+ *
44
+ * Default: resolved from `LOG_SAMPLE_RATE` env var, or `1` (emit all).
45
+ * Set to e.g. `0.1` to keep 10% of info logs.
46
+ */
47
+ infoSampleRate?: number;
39
48
  }
40
49
  /**
41
50
  * Logger instance — thin wrapper over pino
42
51
  */
43
52
  export declare class Logger {
53
+ /** The currently-bound pino logger (may be a child with request fields). */
44
54
  private pinoLogger;
55
+ /**
56
+ * Unbound "root" pino logger kept so `clearContext()` can drop request-scoped
57
+ * fields without discarding the caller-supplied config (log level, formatters,
58
+ * etc.). Re-creating via `pino({...})` would silently lose any future tweaks
59
+ * to the constructor-time options.
60
+ */
61
+ private rootPinoLogger;
45
62
  private context;
46
63
  private config;
47
64
  constructor(config?: Partial<LoggerConfig>);
@@ -50,7 +67,9 @@ export declare class Logger {
50
67
  */
51
68
  setContext(context: RequestContext): void;
52
69
  /**
53
- * Clear request context
70
+ * Clear request context. Restores the original unbound logger instead of
71
+ * minting a brand-new pino root — that way log-level / formatter tweaks
72
+ * from construction are preserved and `clearContext()` is cheap.
54
73
  */
55
74
  clearContext(): void;
56
75
  /**
@@ -1 +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
+ {"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;IACxB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAwCD;;GAEG;AACH,qBAAa,MAAM;IACjB,4EAA4E;IAC5E,OAAO,CAAC,UAAU,CAAc;IAChC;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAW9C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAWzC;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAKpB;;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;IAU3D,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"}