@venturekit/runtime 0.0.0-dev.20260522121000 → 0.0.0-dev.20260525024212
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/handler/context.d.ts +29 -0
- package/dist/handler/context.d.ts.map +1 -1
- package/dist/handler/context.js +16 -0
- package/dist/handler/context.js.map +1 -1
- package/dist/handler/handler.d.ts +17 -2
- package/dist/handler/handler.d.ts.map +1 -1
- package/dist/handler/handler.js +35 -19
- package/dist/handler/handler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/patterns/queue.d.ts +11 -17
- package/dist/patterns/queue.d.ts.map +1 -1
- package/dist/patterns/queue.js +57 -31
- package/dist/patterns/queue.js.map +1 -1
- package/dist/patterns.d.ts +4 -2
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +4 -1
- package/dist/patterns.js.map +1 -1
- package/dist/queue/drivers/redis.d.ts +47 -0
- package/dist/queue/drivers/redis.d.ts.map +1 -0
- package/dist/queue/drivers/redis.js +315 -0
- package/dist/queue/drivers/redis.js.map +1 -0
- package/dist/queue/index.d.ts +10 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +10 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/types.d.ts +91 -0
- package/dist/queue/types.d.ts.map +1 -0
- package/dist/queue/types.js +12 -0
- package/dist/queue/types.js.map +1 -0
- package/dist/testing/test-utils.d.ts.map +1 -1
- package/dist/testing/test-utils.js +1 -0
- package/dist/testing/test-utils.js.map +1 -1
- package/dist/ws/ws.d.ts +42 -0
- package/dist/ws/ws.d.ts.map +1 -1
- package/dist/ws/ws.js +49 -0
- package/dist/ws/ws.js.map +1 -1
- package/package.json +13 -4
|
@@ -115,7 +115,36 @@ export interface RequestContext extends BaseContext {
|
|
|
115
115
|
* Useful for tracing and debugging function-to-function calls.
|
|
116
116
|
*/
|
|
117
117
|
invokeId?: string;
|
|
118
|
+
/**
|
|
119
|
+
* `Set-Cookie` header values to attach to the outgoing response.
|
|
120
|
+
*
|
|
121
|
+
* Populated via {@link setCookie} from route handlers or middleware.
|
|
122
|
+
* After the handler builds its response body, the runtime drains
|
|
123
|
+
* this array into the API Gateway HTTP API v2 response's `cookies`
|
|
124
|
+
* field — one `Set-Cookie:` header per entry.
|
|
125
|
+
*
|
|
126
|
+
* Each entry is a fully-formed cookie value (`name=value; HttpOnly;
|
|
127
|
+
* SameSite=Lax; Path=/; …`) — formatting is the caller's job. Use
|
|
128
|
+
* `@venturekit/auth/server`'s `buildSessionCookies` /
|
|
129
|
+
* `buildClearSessionCookies` / `buildOAuthStateCookie` helpers to
|
|
130
|
+
* produce well-formed strings.
|
|
131
|
+
*
|
|
132
|
+
* Always defined on contexts produced by {@link buildContext} so
|
|
133
|
+
* handlers can `ctx.cookies.push(...)` without a null-check; tests
|
|
134
|
+
* constructing a `RequestContext` by hand should set it to `[]`.
|
|
135
|
+
*/
|
|
136
|
+
cookies: string[];
|
|
118
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Append a fully-formed `Set-Cookie` header value to the outgoing
|
|
140
|
+
* response. The value is emitted verbatim — pass strings produced by
|
|
141
|
+
* `@venturekit/auth/server`'s cookie helpers.
|
|
142
|
+
*
|
|
143
|
+
* Idempotent in the sense that repeated calls accumulate; the runtime
|
|
144
|
+
* does not de-duplicate. Callers wanting "last-write-wins" semantics
|
|
145
|
+
* should clear `ctx.cookies` first.
|
|
146
|
+
*/
|
|
147
|
+
export declare function setCookie(ctx: BaseContext, value: string): void;
|
|
119
148
|
/**
|
|
120
149
|
* Extract user context from JWT claims in API Gateway event
|
|
121
150
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/handler/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/handler/context.ts"],"names":[],"mappings":"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"}
|
package/dist/handler/context.js
CHANGED
|
@@ -6,6 +6,21 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { verifyInternalCall, INTERNAL_HMAC_HEADERS } from '../security/internal-hmac.js';
|
|
8
8
|
import { getIntentOutputs } from '../env/memo.js';
|
|
9
|
+
/**
|
|
10
|
+
* Append a fully-formed `Set-Cookie` header value to the outgoing
|
|
11
|
+
* response. The value is emitted verbatim — pass strings produced by
|
|
12
|
+
* `@venturekit/auth/server`'s cookie helpers.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent in the sense that repeated calls accumulate; the runtime
|
|
15
|
+
* does not de-duplicate. Callers wanting "last-write-wins" semantics
|
|
16
|
+
* should clear `ctx.cookies` first.
|
|
17
|
+
*/
|
|
18
|
+
export function setCookie(ctx, value) {
|
|
19
|
+
const carrier = ctx;
|
|
20
|
+
if (!carrier.cookies)
|
|
21
|
+
carrier.cookies = [];
|
|
22
|
+
carrier.cookies.push(value);
|
|
23
|
+
}
|
|
9
24
|
/**
|
|
10
25
|
* Extract user context from JWT claims in API Gateway event
|
|
11
26
|
*/
|
|
@@ -72,6 +87,7 @@ export function buildContext(event, options) {
|
|
|
72
87
|
intentOutputs,
|
|
73
88
|
isInternal,
|
|
74
89
|
invokeId,
|
|
90
|
+
cookies: [],
|
|
75
91
|
};
|
|
76
92
|
}
|
|
77
93
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/handler/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/handler/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,8 +77,23 @@ export interface HandlerConfig<TBody = unknown, TQuery = unknown, TParams = unkn
|
|
|
77
77
|
* - number = explicit status code
|
|
78
78
|
*/
|
|
79
79
|
status?: StatusCode;
|
|
80
|
-
/**
|
|
81
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Custom middleware to apply.
|
|
82
|
+
*
|
|
83
|
+
* Typed against `RequestContext` (the context handlers actually run
|
|
84
|
+
* with) rather than the default `Middleware<BaseContext>`. The two
|
|
85
|
+
* are not structurally assignable because the generic appears in a
|
|
86
|
+
* function-parameter position; widening here lets callers pass any
|
|
87
|
+
* `RequestContext`-typed middleware (the runtime's own
|
|
88
|
+
* `loggingMiddleware`, `corsMiddleware`, `errorBoundaryMiddleware`,
|
|
89
|
+
* etc., as well as `cookieAuthMiddleware` from `@venturekit/auth`)
|
|
90
|
+
* without an `as unknown as Middleware[]` cast at every call site.
|
|
91
|
+
*
|
|
92
|
+
* Middleware written against `BaseContext` (re-usable across
|
|
93
|
+
* task/queue handlers) is still accepted because `BaseContext`
|
|
94
|
+
* widens to `RequestContext` here — TS picks up the upcast.
|
|
95
|
+
*/
|
|
96
|
+
middleware?: Middleware<RequestContext>[];
|
|
82
97
|
/** Log level */
|
|
83
98
|
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
84
99
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/handler/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,cAAc,EAA6B,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAEL,UAAU,EAIX,MAAM,6BAA6B,CAAC;AA0CrC;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,GACpC,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CAC1D,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,SAAS,CACP,IAAI,EAAE,OAAO,GAEX;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAC1B;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;gBAAE,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CAC7G;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACjF;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/handler/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/handler/handler.js
CHANGED
|
@@ -164,6 +164,39 @@ function zodToValidationError(source, issues) {
|
|
|
164
164
|
}
|
|
165
165
|
return new ValidationError(`Validation failed on ${source}`, fieldErrors);
|
|
166
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Build the success response envelope for a given status code. Wraps
|
|
169
|
+
* the three response helpers so the call sites in `handler()` (sync
|
|
170
|
+
* and transactional branches) stay symmetric.
|
|
171
|
+
*/
|
|
172
|
+
function buildResponse(statusCode, result, requestId) {
|
|
173
|
+
if (statusCode === 204) {
|
|
174
|
+
return noContent({ requestId });
|
|
175
|
+
}
|
|
176
|
+
if (statusCode === 201) {
|
|
177
|
+
return created(result, { requestId });
|
|
178
|
+
}
|
|
179
|
+
return success(result, { requestId });
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Drain `ctx.cookies` (populated via `setCookie`) into the API Gateway
|
|
183
|
+
* v2 response's `cookies` field. The runtime emits one `Set-Cookie:`
|
|
184
|
+
* header per entry — this is the only way to set multiple `Set-Cookie`
|
|
185
|
+
* headers via API Gateway HTTP API.
|
|
186
|
+
*
|
|
187
|
+
* Idempotent w.r.t. cookies already present on the result: we
|
|
188
|
+
* concatenate so a route that returns a hand-built result with its
|
|
189
|
+
* own `cookies` array still sees the runtime's contributions.
|
|
190
|
+
*/
|
|
191
|
+
function attachCookies(result, ctx) {
|
|
192
|
+
const stashed = ctx.cookies;
|
|
193
|
+
if (!stashed || !stashed.length)
|
|
194
|
+
return result;
|
|
195
|
+
if (typeof result === 'string')
|
|
196
|
+
return result;
|
|
197
|
+
const existing = result.cookies ?? [];
|
|
198
|
+
return { ...result, cookies: [...existing, ...stashed] };
|
|
199
|
+
}
|
|
167
200
|
export function handler(fn, config = {}) {
|
|
168
201
|
const { scopes = [], status, middleware = [], logLevel = 'info', } = config;
|
|
169
202
|
const requiresAuth = scopes.length > 0;
|
|
@@ -247,15 +280,7 @@ export function handler(fn, config = {}) {
|
|
|
247
280
|
const result = await fn(body, ctx, logger);
|
|
248
281
|
await tx.commit();
|
|
249
282
|
const statusCode = getStatusCode(event.requestContext.http.method, status);
|
|
250
|
-
|
|
251
|
-
return noContent({ requestId: ctx.requestId });
|
|
252
|
-
}
|
|
253
|
-
else if (statusCode === 201) {
|
|
254
|
-
return created(result, { requestId: ctx.requestId });
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
return success(result, { requestId: ctx.requestId });
|
|
258
|
-
}
|
|
283
|
+
return attachCookies(buildResponse(statusCode, result, ctx.requestId), ctx);
|
|
259
284
|
}
|
|
260
285
|
catch (txError) {
|
|
261
286
|
await tx.rollback();
|
|
@@ -266,16 +291,7 @@ export function handler(fn, config = {}) {
|
|
|
266
291
|
const result = await fn(body, ctx, logger);
|
|
267
292
|
// Determine status code
|
|
268
293
|
const statusCode = getStatusCode(event.requestContext.http.method, status);
|
|
269
|
-
|
|
270
|
-
if (statusCode === 204) {
|
|
271
|
-
return noContent({ requestId: ctx.requestId });
|
|
272
|
-
}
|
|
273
|
-
else if (statusCode === 201) {
|
|
274
|
-
return created(result, { requestId: ctx.requestId });
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
return success(result, { requestId: ctx.requestId });
|
|
278
|
-
}
|
|
294
|
+
return attachCookies(buildResponse(statusCode, result, ctx.requestId), ctx);
|
|
279
295
|
});
|
|
280
296
|
};
|
|
281
297
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/handler/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAA+B,YAAY,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,OAAO,EAGP,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,6EAA6E;AAC7E,EAAE;AACF,0EAA0E;AAC1E,mEAAmE;AACnE,0EAA0E;AAC1E,0EAA0E;AAC1E,wEAAwE;AACxE,sEAAsE;AACtE,yBAAyB;AACzB,EAAE;AACF,yEAAyE;AACzE,2DAA2D;AAC3D,sEAAsE;AACtE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAE1E,IAAI,qBAAqB,GAAsD,IAAI,CAAC;AAEpF,SAAS,4BAA4B;IACnC,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,qBAAqB,GAAG,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM;YACvB,kBAAkB,CAAC,yBAAmC,CACvD,CAAgE,CAAC;YAClE,IAAI,OAAO,GAAG,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;gBACnD,OAAO,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,uCAAuC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CACtC,EAAqC;IAErC,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qCAAqC;IACnD,qBAAqB,GAAG,IAAI,CAAC;AAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/handler/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export { taskHandler, TaskValidationError } from './handler/task-handler.js';
|
|
|
22
22
|
export { queueBatchHandler } from './handler/queue-batch.js';
|
|
23
23
|
export type { QueueBatchHandlerConfig, QueueMessageContext, QueueMessageHandlerFn, QueueMessageParser, QueueRawMessage, } from './handler/queue-batch.js';
|
|
24
24
|
export type { TaskHandlerFn, TaskContext, TaskHandlerConfig, } from './handler/task-handler.js';
|
|
25
|
-
export { buildContext, extractUserContext, extractLocale, } from './handler/context.js';
|
|
25
|
+
export { buildContext, extractUserContext, extractLocale, setCookie, } from './handler/context.js';
|
|
26
26
|
export type { BaseContext, RequestContext, UserContext, TenantContext, Transaction } from './handler/context.js';
|
|
27
27
|
export { success, created, noContent, error, errorResponse, redirect, } from './handler/response.js';
|
|
28
28
|
export type { SuccessResponse, ErrorResponse } from './handler/response.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,qCAAqC,GACtC,MAAM,sBAAsB,CAAC;AAC9B,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,qCAAqC,GACtC,MAAM,sBAAsB,CAAC;AAC9B,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,EACb,SAAS,GACV,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
|
@@ -22,7 +22,7 @@ export { handler, setDefaultAuthMiddleware, _resetDefaultAuthMiddlewareForTestin
|
|
|
22
22
|
export { taskHandler, TaskValidationError } from './handler/task-handler.js';
|
|
23
23
|
export { queueBatchHandler } from './handler/queue-batch.js';
|
|
24
24
|
// Context
|
|
25
|
-
export { buildContext, extractUserContext, extractLocale, } from './handler/context.js';
|
|
25
|
+
export { buildContext, extractUserContext, extractLocale, setCookie, } from './handler/context.js';
|
|
26
26
|
// Response utilities
|
|
27
27
|
export { success, created, noContent, error, errorResponse, redirect, } from './handler/response.js';
|
|
28
28
|
// Errors
|
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,EACL,OAAO,EACP,wBAAwB,EACxB,qCAAqC,GACtC,MAAM,sBAAsB,CAAC;AAG9B,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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAwB;AACxB,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,qCAAqC,GACtC,MAAM,sBAAsB,CAAC;AAG9B,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,EACb,SAAS,GACV,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"}
|
package/dist/patterns/queue.d.ts
CHANGED
|
@@ -26,27 +26,21 @@
|
|
|
26
26
|
* await sendMessage('notifications', payload, { delaySeconds: 60 });
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
import type {
|
|
29
|
+
import type { SendMessageOptions, SendMessageResult } from '../queue/types.js';
|
|
30
|
+
export type { SendMessageOptions, SendMessageResult } from '../queue/types.js';
|
|
30
31
|
/**
|
|
31
|
-
*
|
|
32
|
+
* Close the singleton local Redis driver if it has been created. Safe to call
|
|
33
|
+
* even when no driver has been instantiated. Used by the CLI's SIGINT path,
|
|
34
|
+
* by tests via `__resetLocalQueueDriverForTests`, and by the `beforeExit`
|
|
35
|
+
* shutdown hook.
|
|
32
36
|
*/
|
|
33
|
-
export
|
|
34
|
-
/** Delay delivery in seconds (0–900). Default: 0 */
|
|
35
|
-
delaySeconds?: number;
|
|
36
|
-
/** Message group ID (required for FIFO queues) */
|
|
37
|
-
messageGroupId?: string;
|
|
38
|
-
/** Message deduplication ID (FIFO queues — auto-generated if omitted) */
|
|
39
|
-
deduplicationId?: string;
|
|
40
|
-
/** Trace context to propagate (auto-detected if omitted) */
|
|
41
|
-
trace?: TraceContext;
|
|
42
|
-
}
|
|
37
|
+
export declare function closeLocalQueueDriver(): Promise<void>;
|
|
43
38
|
/**
|
|
44
|
-
*
|
|
39
|
+
* Test-only helper: drop the singleton so vitest suites don't leak Redis
|
|
40
|
+
* connections across `describe` blocks.
|
|
41
|
+
* @internal
|
|
45
42
|
*/
|
|
46
|
-
export
|
|
47
|
-
/** SQS message ID (or local placeholder) */
|
|
48
|
-
messageId: string;
|
|
49
|
-
}
|
|
43
|
+
export declare function __resetLocalQueueDriverForTests(): Promise<void>;
|
|
50
44
|
/**
|
|
51
45
|
* Send a single message to an SQS queue.
|
|
52
46
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/patterns/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/patterns/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,EAAe,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAO5F,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAkG/E;;;;;GAKG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3D;AAED;;;;GAIG;AACH,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC,CAErE;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,EAC3C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,OAAO,EAC5C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,EAAE,EACb,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2D9B"}
|
package/dist/patterns/queue.js
CHANGED
|
@@ -81,42 +81,68 @@ async function getSqsClient() {
|
|
|
81
81
|
return _sqsClient;
|
|
82
82
|
}
|
|
83
83
|
// ---------------------------------------------------------------------------
|
|
84
|
-
// Local dev:
|
|
84
|
+
// Local dev: Redis-backed queue (mirrors SQS semantics)
|
|
85
85
|
// ---------------------------------------------------------------------------
|
|
86
86
|
function isLocalDev() {
|
|
87
87
|
return process.env.VENTURE_LOCAL === 'true';
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
let _localRedisDriver = null;
|
|
90
|
+
let _shutdownHookRegistered = false;
|
|
91
|
+
function registerShutdownHook() {
|
|
92
|
+
if (_shutdownHookRegistered)
|
|
93
|
+
return;
|
|
94
|
+
_shutdownHookRegistered = true;
|
|
95
|
+
const shutdown = () => {
|
|
96
|
+
closeLocalQueueDriver().catch(() => { });
|
|
97
|
+
};
|
|
98
|
+
// Best-effort cleanup so the dev server / vitest doesn't leak the Redis
|
|
99
|
+
// socket + reclaim timer. Errors here are swallowed because we may already
|
|
100
|
+
// be in a fatal exit path.
|
|
101
|
+
process.once('SIGINT', shutdown);
|
|
102
|
+
process.once('SIGTERM', shutdown);
|
|
103
|
+
process.once('beforeExit', shutdown);
|
|
91
104
|
}
|
|
92
|
-
async function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
105
|
+
async function getLocalRedisDriver() {
|
|
106
|
+
if (!_localRedisDriver) {
|
|
107
|
+
const { createRedisDriver } = await import('../queue/drivers/redis.js');
|
|
108
|
+
// URL resolution (VENTURE_REDIS_URL → VENTURE_QUEUE_REDIS_HOST/PORT →
|
|
109
|
+
// localhost) lives inside the driver factory; passing no `url` lets it
|
|
110
|
+
// pick the right one for the dev environment.
|
|
111
|
+
_localRedisDriver = createRedisDriver({ keyPrefix: 'vk:q' });
|
|
112
|
+
registerShutdownHook();
|
|
113
|
+
}
|
|
114
|
+
return _localRedisDriver;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Close the singleton local Redis driver if it has been created. Safe to call
|
|
118
|
+
* even when no driver has been instantiated. Used by the CLI's SIGINT path,
|
|
119
|
+
* by tests via `__resetLocalQueueDriverForTests`, and by the `beforeExit`
|
|
120
|
+
* shutdown hook.
|
|
121
|
+
*/
|
|
122
|
+
export async function closeLocalQueueDriver() {
|
|
123
|
+
const driver = _localRedisDriver;
|
|
124
|
+
_localRedisDriver = null;
|
|
125
|
+
if (driver) {
|
|
126
|
+
await driver.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Test-only helper: drop the singleton so vitest suites don't leak Redis
|
|
131
|
+
* connections across `describe` blocks.
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export async function __resetLocalQueueDriverForTests() {
|
|
135
|
+
await closeLocalQueueDriver();
|
|
136
|
+
}
|
|
137
|
+
async function sendLocalMessage(queueId, body, options) {
|
|
138
|
+
const driver = await getLocalRedisDriver();
|
|
139
|
+
return driver.sendMessage(queueId, body, {
|
|
140
|
+
delaySeconds: options?.delaySeconds,
|
|
141
|
+
messageGroupId: options?.messageGroupId,
|
|
142
|
+
deduplicationId: options?.deduplicationId,
|
|
143
|
+
// Trace is intentionally NOT forwarded to the driver — it's already baked
|
|
144
|
+
// into the message body by `buildTracePayload` above, which is what the
|
|
145
|
+
// consumer Lambda reads via `extractTraceContext`.
|
|
120
146
|
});
|
|
121
147
|
}
|
|
122
148
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/patterns/queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/patterns/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/patterns.d.ts
CHANGED
|
@@ -12,8 +12,10 @@ export { createCircuitBreaker, } from './patterns/circuit-breaker.js';
|
|
|
12
12
|
export type { CircuitBreaker, CircuitBreakerOptions, CircuitState, } from './patterns/circuit-breaker.js';
|
|
13
13
|
export { saga, parallel, createMemorySagaStore, createDynamoDBSagaStore, createDefaultSagaStore, } from './patterns/saga.js';
|
|
14
14
|
export type { SagaStep, SagaStepEntry, ParallelStepGroup, SagaStatus, SagaRecord, SagaStore, StepResult, SagaResult, SagaOptions, SagaRunOptions, SagaStepEvent, SagaCompensateEvent, SagaFailedEvent, DynamoDBSagaStoreOptions, DefaultSagaStoreOptions, } from './patterns/saga.js';
|
|
15
|
-
export { sendMessage, sendMessages, } from './patterns/queue.js';
|
|
16
|
-
export type { SendMessageOptions, SendMessageResult, } from './
|
|
15
|
+
export { sendMessage, sendMessages, closeLocalQueueDriver, } from './patterns/queue.js';
|
|
16
|
+
export type { SendMessageOptions, SendMessageResult, } from './queue/types.js';
|
|
17
|
+
export { createRedisDriver, } from './queue/index.js';
|
|
18
|
+
export type { QueueDriver, QueueMessage, QueueStats, QueueConfig, ReceiveMessageOptions, ChangeVisibilityOptions, } from './queue/types.js';
|
|
17
19
|
export { idempotencyMiddleware, taskIdempotencyMiddleware, IdempotencyConflictError, MissingIdempotencyKeyError, createMemoryIdempotencyStore, createDynamoDBIdempotencyStore, createDefaultIdempotencyStore, headerKeyExtractor, bodyFieldKeyExtractor, sqsMessageIdExtractor, eventFieldKeyExtractor, } from './patterns/idempotency.js';
|
|
18
20
|
export type { IdempotencyRecord, IdempotencyStore, IdempotencyKeyExtractor, IdempotencyOptions, TaskIdempotencyKeyExtractor, TaskIdempotencyOptions, DynamoDBIdempotencyStoreOptions, DefaultIdempotencyStoreOptions, } from './patterns/idempotency.js';
|
|
19
21
|
//# sourceMappingURL=patterns.d.ts.map
|
package/dist/patterns.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,GACb,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,GACb,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC"}
|
package/dist/patterns.js
CHANGED
|
@@ -13,7 +13,10 @@ export { createCircuitBreaker, } from './patterns/circuit-breaker.js';
|
|
|
13
13
|
// Saga
|
|
14
14
|
export { saga, parallel, createMemorySagaStore, createDynamoDBSagaStore, createDefaultSagaStore, } from './patterns/saga.js';
|
|
15
15
|
// Queue Client
|
|
16
|
-
export { sendMessage, sendMessages, } from './patterns/queue.js';
|
|
16
|
+
export { sendMessage, sendMessages, closeLocalQueueDriver, } from './patterns/queue.js';
|
|
17
|
+
// Low-level queue driver API (Redis driver, types) — surfaced so the CLI
|
|
18
|
+
// dev-server can drive the same Redis store the runtime client writes to.
|
|
19
|
+
export { createRedisDriver, } from './queue/index.js';
|
|
17
20
|
// Idempotency
|
|
18
21
|
export { idempotencyMiddleware, taskIdempotencyMiddleware, IdempotencyConflictError, MissingIdempotencyKeyError, createMemoryIdempotencyStore, createDynamoDBIdempotencyStore, createDefaultIdempotencyStore, headerKeyExtractor, bodyFieldKeyExtractor, sqsMessageIdExtractor, eventFieldKeyExtractor, } from './patterns/idempotency.js';
|
|
19
22
|
//# sourceMappingURL=patterns.js.map
|
package/dist/patterns.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAa9B,kBAAkB;AAClB,OAAO,EACL,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAOvC,OAAO;AACP,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAmB5B,eAAe;AACf,OAAO,EACL,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAa9B,kBAAkB;AAClB,OAAO,EACL,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAOvC,OAAO;AACP,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAmB5B,eAAe;AACf,OAAO,EACL,WAAW,EACX,YAAY,EACZ,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAM7B,yEAAyE;AACzE,0EAA0E;AAC1E,OAAO,EACL,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAU1B,cAAc;AACd,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Queue Driver
|
|
3
|
+
*
|
|
4
|
+
* Implements SQS-compatible semantics on Redis for local development:
|
|
5
|
+
*
|
|
6
|
+
* - **Visible queue** (`<prefix>:<queueId>:visible`) — ZSET keyed by the time a
|
|
7
|
+
* message became eligible for delivery.
|
|
8
|
+
* - **Inflight queue** (`<prefix>:<queueId>:inflight`) — ZSET keyed by the
|
|
9
|
+
* visibility deadline. Reclaimed back to `:visible` once expired.
|
|
10
|
+
* - **Delayed queue** (`<prefix>:<queueId>:delayed`) — ZSET keyed by the
|
|
11
|
+
* absolute time the message should become visible.
|
|
12
|
+
* - **DLQ** (`<prefix>:<queueId>:dlq`) — LIST. Populated by the driver
|
|
13
|
+
* *only* via `moveToDeadLetter()`; callers must invoke this explicitly.
|
|
14
|
+
* - **Message hash** (`<prefix>:<queueId>:msg:<msgId>`) — body + counters.
|
|
15
|
+
*
|
|
16
|
+
* Concurrency:
|
|
17
|
+
* - `receiveMessage` uses a Lua script to atomically move N messages from
|
|
18
|
+
* `:visible` to `:inflight`, eliminating the classic "two consumers see the
|
|
19
|
+
* same `ZRANGE` and both think they won" race.
|
|
20
|
+
* - `changeMessageVisibility` also uses a Lua script so callers can pass
|
|
21
|
+
* `{ visibilityTimeout: 0 }` to *immediately* release a message back to the
|
|
22
|
+
* visible queue (matching SQS `ChangeMessageVisibility` semantics).
|
|
23
|
+
*
|
|
24
|
+
* Trace propagation:
|
|
25
|
+
* - The driver is trace-agnostic. Callers bake the trace context into the
|
|
26
|
+
* message body before calling `sendMessage`.
|
|
27
|
+
*/
|
|
28
|
+
import { Redis } from 'ioredis';
|
|
29
|
+
import type { QueueDriver, QueueConfig } from '../types.js';
|
|
30
|
+
export interface RedisDriverOptions {
|
|
31
|
+
/** Redis connection URL */
|
|
32
|
+
url?: string;
|
|
33
|
+
/** Key prefix for queue data (default: `vk:q`) */
|
|
34
|
+
keyPrefix?: string;
|
|
35
|
+
/** Interval in ms to reclaim expired visibility timeouts (default: 1000) */
|
|
36
|
+
reclaimIntervalMs?: number;
|
|
37
|
+
/** Per-queue configurations (visibility timeout, max receive count) */
|
|
38
|
+
queues?: Record<string, QueueConfig>;
|
|
39
|
+
/**
|
|
40
|
+
* Inject an existing `ioredis` client. Mostly useful for tests against
|
|
41
|
+
* ioredis-mock so we can share the in-memory store between the driver and
|
|
42
|
+
* the test.
|
|
43
|
+
*/
|
|
44
|
+
client?: Redis;
|
|
45
|
+
}
|
|
46
|
+
export declare function createRedisDriver(options?: RedisDriverOptions): QueueDriver;
|
|
47
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/queue/drivers/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EACV,WAAW,EAGX,WAAW,EAKZ,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAsED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CA+P/E"}
|