@venturekit/runtime 0.0.0-dev.20260522121047 → 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.
Files changed (40) hide show
  1. package/dist/handler/context.d.ts +29 -0
  2. package/dist/handler/context.d.ts.map +1 -1
  3. package/dist/handler/context.js +16 -0
  4. package/dist/handler/context.js.map +1 -1
  5. package/dist/handler/handler.d.ts +17 -2
  6. package/dist/handler/handler.d.ts.map +1 -1
  7. package/dist/handler/handler.js +35 -19
  8. package/dist/handler/handler.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/patterns/queue.d.ts +11 -17
  14. package/dist/patterns/queue.d.ts.map +1 -1
  15. package/dist/patterns/queue.js +57 -31
  16. package/dist/patterns/queue.js.map +1 -1
  17. package/dist/patterns.d.ts +4 -2
  18. package/dist/patterns.d.ts.map +1 -1
  19. package/dist/patterns.js +4 -1
  20. package/dist/patterns.js.map +1 -1
  21. package/dist/queue/drivers/redis.d.ts +47 -0
  22. package/dist/queue/drivers/redis.d.ts.map +1 -0
  23. package/dist/queue/drivers/redis.js +315 -0
  24. package/dist/queue/drivers/redis.js.map +1 -0
  25. package/dist/queue/index.d.ts +10 -0
  26. package/dist/queue/index.d.ts.map +1 -0
  27. package/dist/queue/index.js +10 -0
  28. package/dist/queue/index.js.map +1 -0
  29. package/dist/queue/types.d.ts +91 -0
  30. package/dist/queue/types.d.ts.map +1 -0
  31. package/dist/queue/types.js +12 -0
  32. package/dist/queue/types.js.map +1 -0
  33. package/dist/testing/test-utils.d.ts.map +1 -1
  34. package/dist/testing/test-utils.js +1 -0
  35. package/dist/testing/test-utils.js.map +1 -1
  36. package/dist/ws/ws.d.ts +42 -0
  37. package/dist/ws/ws.d.ts.map +1 -1
  38. package/dist/ws/ws.js +49 -0
  39. package/dist/ws/ws.js.map +1 -1
  40. 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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"}
@@ -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":"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"}
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
- /** Custom middleware to apply */
81
- middleware?: Middleware[];
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":"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"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/handler/handler.ts"],"names":[],"mappings":"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"}
@@ -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
- if (statusCode === 204) {
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
- // Return response based on status
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":"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"}
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';
@@ -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,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"}
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,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"}
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"}
@@ -26,27 +26,21 @@
26
26
  * await sendMessage('notifications', payload, { delaySeconds: 60 });
27
27
  * ```
28
28
  */
29
- import type { TraceContext } from '../logging/tracing.js';
29
+ import type { SendMessageOptions, SendMessageResult } from '../queue/types.js';
30
+ export type { SendMessageOptions, SendMessageResult } from '../queue/types.js';
30
31
  /**
31
- * Options for sending a queue message.
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 interface SendMessageOptions {
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
- * Result of a send operation.
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 interface SendMessageResult {
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;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAmHD;;;;;;;;;;;;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"}
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"}
@@ -81,42 +81,68 @@ async function getSqsClient() {
81
81
  return _sqsClient;
82
82
  }
83
83
  // ---------------------------------------------------------------------------
84
- // Local dev: POST to /_dev/queue/{queueId}
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
- function getLocalServerUrl() {
90
- return process.env.VENTURE_LOCAL_URL || `http://localhost:${process.env.VENTURE_LOCAL_PORT || '3000'}`;
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 sendLocalMessage(queueId, body, _options) {
93
- const http = await import('http');
94
- const baseUrl = getLocalServerUrl();
95
- const url = new URL(`${baseUrl}/_dev/queue/${queueId}`);
96
- const payload = JSON.stringify(body);
97
- return new Promise((resolve, reject) => {
98
- const req = http.request({
99
- hostname: url.hostname,
100
- port: url.port,
101
- path: url.pathname,
102
- method: 'POST',
103
- headers: { 'content-type': 'application/json' },
104
- }, (res) => {
105
- const chunks = [];
106
- res.on('data', (chunk) => chunks.push(chunk));
107
- res.on('end', () => {
108
- try {
109
- const data = JSON.parse(Buffer.concat(chunks).toString('utf-8'));
110
- resolve({ messageId: data.messageId || generateId() });
111
- }
112
- catch {
113
- resolve({ messageId: generateId() });
114
- }
115
- });
116
- });
117
- req.on('error', (err) => reject(new Error(`Failed to send local queue message: ${err.message}`)));
118
- req.write(payload);
119
- req.end();
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":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/patterns/queue.ts"],"names":[],"mappings":"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"}
@@ -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 './patterns/queue.js';
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
@@ -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,GACb,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,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"}
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
@@ -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,GACb,MAAM,qBAAqB,CAAC;AAM7B,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"}
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"}