@beignet/core 0.0.49 → 0.0.51
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/CHANGELOG.md +30 -0
- package/README.md +213 -32
- package/dist/application/index.d.ts +5 -5
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +5 -4
- package/dist/application/index.js.map +1 -1
- package/dist/events/index.d.ts +54 -5
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +188 -34
- package/dist/events/index.js.map +1 -1
- package/dist/events/payload-state.d.ts +4 -0
- package/dist/events/payload-state.d.ts.map +1 -0
- package/dist/events/payload-state.js +11 -0
- package/dist/events/payload-state.js.map +1 -0
- package/dist/idempotency/index.d.ts +7 -3
- package/dist/idempotency/index.d.ts.map +1 -1
- package/dist/idempotency/index.js +45 -12
- package/dist/idempotency/index.js.map +1 -1
- package/dist/locks/index.d.ts.map +1 -1
- package/dist/locks/index.js +0 -4
- package/dist/locks/index.js.map +1 -1
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +6 -3
- package/dist/mail/index.js.map +1 -1
- package/dist/outbox/index.d.ts +163 -15
- package/dist/outbox/index.d.ts.map +1 -1
- package/dist/outbox/index.js +1009 -152
- package/dist/outbox/index.js.map +1 -1
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +0 -4
- package/dist/payments/index.js.map +1 -1
- package/dist/ports/best-effort-work.d.ts +21 -0
- package/dist/ports/best-effort-work.d.ts.map +1 -0
- package/dist/ports/best-effort-work.js +2 -0
- package/dist/ports/best-effort-work.js.map +1 -0
- package/dist/ports/events.d.ts +7 -5
- package/dist/ports/events.d.ts.map +1 -1
- package/dist/ports/index.d.ts +7 -2
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +1 -0
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/testing.d.ts +28 -0
- package/dist/ports/testing.d.ts.map +1 -1
- package/dist/ports/testing.js +50 -0
- package/dist/ports/testing.js.map +1 -1
- package/dist/ports/unit-of-work.d.ts +9 -7
- package/dist/ports/unit-of-work.d.ts.map +1 -1
- package/dist/ports/unit-of-work.js +16 -6
- package/dist/ports/unit-of-work.js.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/provider.d.ts +8 -43
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/provider.js.map +1 -1
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +0 -4
- package/dist/search/index.js.map +1 -1
- package/dist/server/hooks/cors.d.ts +7 -2
- package/dist/server/hooks/cors.d.ts.map +1 -1
- package/dist/server/hooks/cors.js +31 -2
- package/dist/server/hooks/cors.js.map +1 -1
- package/dist/server/hooks/logging.d.ts +2 -2
- package/dist/server/hooks/logging.d.ts.map +1 -1
- package/dist/server/hooks/logging.js.map +1 -1
- package/dist/server/hooks/security.d.ts +2 -2
- package/dist/server/hooks/security.d.ts.map +1 -1
- package/dist/server/hooks/security.js.map +1 -1
- package/dist/server/http.d.ts +21 -2
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/instrumentation.js +5 -3
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/request-executor.d.ts.map +1 -1
- package/dist/server/request-executor.js +9 -0
- package/dist/server/request-executor.js.map +1 -1
- package/dist/server/request-preparation.d.ts.map +1 -1
- package/dist/server/request-preparation.js +20 -2
- package/dist/server/request-preparation.js.map +1 -1
- package/dist/server/response-finalization.d.ts +2 -2
- package/dist/server/response-finalization.d.ts.map +1 -1
- package/dist/server/response-finalization.js +25 -8
- package/dist/server/response-finalization.js.map +1 -1
- package/dist/server/route-matching.d.ts.map +1 -1
- package/dist/server/route-matching.js +12 -1
- package/dist/server/route-matching.js.map +1 -1
- package/dist/server/server-sent-events.d.ts +94 -0
- package/dist/server/server-sent-events.d.ts.map +1 -0
- package/dist/server/server-sent-events.js +275 -0
- package/dist/server/server-sent-events.js.map +1 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +75 -31
- package/dist/server/server.js.map +1 -1
- package/dist/server/trusted-proxy-internal.d.ts +4 -0
- package/dist/server/trusted-proxy-internal.d.ts.map +1 -1
- package/dist/server/trusted-proxy-internal.js +20 -0
- package/dist/server/trusted-proxy-internal.js.map +1 -1
- package/dist/server/trusted-proxy.d.ts.map +1 -1
- package/dist/server/trusted-proxy.js +3 -8
- package/dist/server/trusted-proxy.js.map +1 -1
- package/dist/testing/index.d.ts +17 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +18 -7
- package/dist/testing/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/app-architecture/SKILL.md +37 -3
- package/src/application/index.ts +18 -7
- package/src/events/index.ts +268 -40
- package/src/events/payload-state.ts +24 -0
- package/src/idempotency/index.ts +65 -17
- package/src/locks/index.ts +0 -4
- package/src/mail/index.ts +7 -3
- package/src/outbox/index.ts +1382 -175
- package/src/payments/index.ts +0 -4
- package/src/ports/best-effort-work.ts +21 -0
- package/src/ports/events.ts +9 -4
- package/src/ports/index.ts +12 -0
- package/src/ports/testing.ts +76 -0
- package/src/ports/unit-of-work.ts +28 -14
- package/src/providers/index.ts +0 -1
- package/src/providers/provider.ts +8 -45
- package/src/search/index.ts +0 -4
- package/src/server/hooks/cors.ts +53 -5
- package/src/server/hooks/logging.ts +6 -2
- package/src/server/hooks/security.ts +8 -4
- package/src/server/http.ts +23 -2
- package/src/server/index.ts +4 -0
- package/src/server/instrumentation.ts +12 -4
- package/src/server/request-executor.ts +14 -0
- package/src/server/request-preparation.ts +23 -3
- package/src/server/response-finalization.ts +51 -15
- package/src/server/route-matching.ts +24 -1
- package/src/server/server-sent-events.ts +415 -0
- package/src/server/server.ts +98 -41
- package/src/server/trusted-proxy-internal.ts +20 -0
- package/src/server/trusted-proxy.ts +6 -7
- package/src/testing/index.ts +50 -9
- package/dist/query-codec.d.ts +0 -27
- package/dist/query-codec.d.ts.map +0 -1
- package/dist/query-codec.js +0 -245
- package/dist/query-codec.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: app-architecture
|
|
3
|
-
description: "Build Beignet app feature slices with @beignet/core primitives: schemas, contracts, use cases, agent capabilities, app errors, ports, policies, TenantScope, context, providers, runtime integrity, domain events, listeners, jobs, schedules, tasks, notifications, outbox, mail, uploads, seeds, tests, auth helpers, audit, idempotency, storage, cache, rate limits, flags, entitlements, payments, search, webhooks, and explicit core subpath imports. Use when adding or fixing Beignet application behavior, dependency boundaries, tenant-owned repository access, app-facing ports, authorization, workflow primitives, agent entrypoints, or app-bound lib builders."
|
|
3
|
+
description: "Build Beignet app feature slices with @beignet/core primitives: schemas, contracts, use cases, agent capabilities, app errors, ports, policies, TenantScope, context, providers, runtime integrity, domain events, listeners, jobs, schedules, tasks, notifications, outbox, best-effort work, mail, uploads, seeds, tests, auth helpers, audit, idempotency, storage, cache, rate limits, flags, entitlements, payments, search, webhooks, and explicit core subpath imports. Use when adding or fixing Beignet application behavior, dependency boundaries, tenant-owned repository access, app-facing ports, authorization, workflow primitives, agent entrypoints, or app-bound lib builders."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Beignet App Architecture
|
|
@@ -47,6 +47,15 @@ Small features do not need every file. The starter ships a lean subset;
|
|
|
47
47
|
workflow folders, `lib/` builders, and central registries appear when a
|
|
48
48
|
generator or deliberate feature change introduces that concern.
|
|
49
49
|
|
|
50
|
+
App-wide operational sources use these paths:
|
|
51
|
+
|
|
52
|
+
- `drizzle/` contains checked-in SQL migrations and Drizzle metadata.
|
|
53
|
+
- `server/seed.ts` is an optional entrypoint that composes feature seed
|
|
54
|
+
definitions through an application service context.
|
|
55
|
+
- `server/workers/` contains optional long-running runtime entrypoints, such
|
|
56
|
+
as a BullMQ job worker. Do not start them from provider lifecycle hooks or
|
|
57
|
+
serverless routes.
|
|
58
|
+
|
|
50
59
|
Bind route declarations to the app context once in `lib/routes.ts` with
|
|
51
60
|
`createRoutes<AppContext>()`. Feature route files should import the resulting
|
|
52
61
|
`defineRoute` or `defineRouteGroup` helper instead of binding `AppContext`
|
|
@@ -167,7 +176,7 @@ or outbox records must commit together.
|
|
|
167
176
|
no-op reporters.
|
|
168
177
|
- `deferred` ports are supplied by providers at startup, such as auth,
|
|
169
178
|
database, mail, logger, jobs, repositories, idempotency, rate limits,
|
|
170
|
-
storage, search, payments, flags, locks, and error reporting.
|
|
179
|
+
storage, search, payments, flags, locks, best-effort work, and error reporting.
|
|
171
180
|
|
|
172
181
|
Do not import provider packages from contracts, use cases, routes, UI, or
|
|
173
182
|
feature client modules.
|
|
@@ -232,7 +241,9 @@ malformed input or unvalidated output into instrumentation.
|
|
|
232
241
|
|
|
233
242
|
Register workflow artifacts explicitly:
|
|
234
243
|
|
|
235
|
-
- listeners in `server/listeners.ts`, then through `registerListeners(...)` in
|
|
244
|
+
- listeners in `server/listeners.ts`, then through `registerListeners(...)` in
|
|
245
|
+
server provider wiring; register in `start()`, await `registration.ready`, and
|
|
246
|
+
await `registration.unsubscribe()` in `stop()`
|
|
236
247
|
- schedules in `server/schedules.ts`
|
|
237
248
|
- tasks in `server/tasks.ts`
|
|
238
249
|
- outbox events and jobs in `server/outbox.ts`
|
|
@@ -243,6 +254,12 @@ Register workflow artifacts explicitly:
|
|
|
243
254
|
`server/notifications.ts`, then add that job to every worker/outbox registry
|
|
244
255
|
- seeds through the app's seed entrypoint, usually `server/seed.ts`
|
|
245
256
|
|
|
257
|
+
Use-case event helpers validate and forward parsed Standard Schema output.
|
|
258
|
+
In-process buses preserve that validation state; Redis and outbox boundaries
|
|
259
|
+
serialize the canonical output and validate the decoded value again. Keep event
|
|
260
|
+
schema outputs JSON-safe and stable under reparse after serialization across
|
|
261
|
+
durable or distributed boundaries.
|
|
262
|
+
|
|
246
263
|
Outbox registration describes what a drain may deliver; it does not install
|
|
247
264
|
delivery transports. A registry containing events requires
|
|
248
265
|
`ctx.ports.eventBus`, and one containing jobs requires `ctx.ports.jobs`. Bind
|
|
@@ -277,11 +294,28 @@ Providers should not start unbounded background loops on server boot. Expose
|
|
|
277
294
|
cron routes, worker entrypoints, task runners, schedule runners, or outbox
|
|
278
295
|
drains instead.
|
|
279
296
|
|
|
297
|
+
Use `BestEffortWorkPort` only for non-durable work whose loss cannot change the
|
|
298
|
+
originating operation's result. A platform adapter owns scheduler, callback,
|
|
299
|
+
and error-observer failure isolation. In tests, use
|
|
300
|
+
`createRecordingBestEffortWork()` or the default recorder from
|
|
301
|
+
`createTestPorts(...)`, then flush one bounded batch explicitly. Required or
|
|
302
|
+
retryable delivery belongs in a job or transaction-scoped outbox. Request
|
|
303
|
+
best-effort work only after the authoritative mutation succeeds, typically
|
|
304
|
+
from a listener invoked by an after-commit event flush.
|
|
305
|
+
|
|
280
306
|
In Next.js 15.1 and newer, an app may request one bounded outbox drain through
|
|
281
307
|
`after()` after its Unit of Work commits. Treat this as push-assisted polling,
|
|
282
308
|
not durable execution: the transaction-scoped outbox row owns durability and a
|
|
283
309
|
recovery cron still owns missed callbacks, delayed messages, and retries.
|
|
284
310
|
|
|
311
|
+
Outbox drains are serial by default. Parallel delivery is explicitly unordered.
|
|
312
|
+
Active claims renew on a serialized heartbeat, and renewals stop after a
|
|
313
|
+
bounded maximum duration. Treat nonzero `settlementFailed` or `leaseLost`
|
|
314
|
+
counters as terminal operational failures, and never translate a successful
|
|
315
|
+
external delivery into `markFailed(...)` when acknowledgement storage is
|
|
316
|
+
uncertain. Synchronize drain host clocks because durable adapters compare
|
|
317
|
+
worker-supplied lease timestamps.
|
|
318
|
+
|
|
285
319
|
When tracing is installed, pass the tracing port to outbox recorders and job
|
|
286
320
|
dispatchers. Beignet's durable event-bus, BullMQ, and Inngest adapters capture
|
|
287
321
|
the active W3C trace carrier automatically and restore it as the consumer-span
|
package/src/application/index.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
import type { EventPublishOptions } from "../events/index.js";
|
|
3
|
+
import { markEventPayloadParsed } from "../events/payload-state.js";
|
|
2
4
|
import {
|
|
3
5
|
type ProviderInstrumentationEventInput,
|
|
4
6
|
resolveProviderInstrumentationPort,
|
|
@@ -154,9 +156,8 @@ async function parseSchema<TSchema extends StandardSchemaV1>(
|
|
|
154
156
|
/**
|
|
155
157
|
* Minimal domain event definition accepted by use-case event helpers.
|
|
156
158
|
*
|
|
157
|
-
* This matches events from `@beignet/core/events` and compatible
|
|
158
|
-
* definitions
|
|
159
|
-
* implementation.
|
|
159
|
+
* This structurally matches events from `@beignet/core/events` and compatible
|
|
160
|
+
* app-owned definitions.
|
|
160
161
|
*/
|
|
161
162
|
export interface DomainEventLike {
|
|
162
163
|
/**
|
|
@@ -185,6 +186,7 @@ export interface UseCaseEventRecorderTarget {
|
|
|
185
186
|
record<E extends DomainEventLike>(
|
|
186
187
|
event: E,
|
|
187
188
|
payload: InferUseCaseEventPayload<E>,
|
|
189
|
+
options?: EventPublishOptions,
|
|
188
190
|
): Promise<void> | void;
|
|
189
191
|
}
|
|
190
192
|
|
|
@@ -198,6 +200,7 @@ export interface UseCaseEventBusTarget {
|
|
|
198
200
|
publish<E extends DomainEventLike>(
|
|
199
201
|
event: E,
|
|
200
202
|
payload: InferUseCaseEventPayload<E>,
|
|
203
|
+
options?: EventPublishOptions,
|
|
201
204
|
): Promise<void> | void;
|
|
202
205
|
}
|
|
203
206
|
|
|
@@ -301,13 +304,21 @@ function createUseCaseEventHelpers<Emits extends readonly DomainEventLike[]>(
|
|
|
301
304
|
assertDeclared,
|
|
302
305
|
async record(recorder, event, payload) {
|
|
303
306
|
const declaredEvent = resolveDeclared(event) as typeof event;
|
|
304
|
-
await parseEventPayload(
|
|
305
|
-
|
|
307
|
+
const parsed = await parseEventPayload(
|
|
308
|
+
declaredEvent,
|
|
309
|
+
payload,
|
|
310
|
+
useCaseName,
|
|
311
|
+
);
|
|
312
|
+
await recorder.record(declaredEvent, parsed, markEventPayloadParsed());
|
|
306
313
|
},
|
|
307
314
|
async publish(eventBus, event, payload) {
|
|
308
315
|
const declaredEvent = resolveDeclared(event) as typeof event;
|
|
309
|
-
await parseEventPayload(
|
|
310
|
-
|
|
316
|
+
const parsed = await parseEventPayload(
|
|
317
|
+
declaredEvent,
|
|
318
|
+
payload,
|
|
319
|
+
useCaseName,
|
|
320
|
+
);
|
|
321
|
+
await eventBus.publish(declaredEvent, parsed, markEventPayloadParsed());
|
|
311
322
|
},
|
|
312
323
|
};
|
|
313
324
|
}
|
package/src/events/index.ts
CHANGED
|
@@ -5,6 +5,10 @@ import {
|
|
|
5
5
|
type TraceCarrier,
|
|
6
6
|
type TracingPort,
|
|
7
7
|
} from "../tracing/index.js";
|
|
8
|
+
import {
|
|
9
|
+
isEventPayloadParsed,
|
|
10
|
+
markEventPayloadParsed,
|
|
11
|
+
} from "./payload-state.js";
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
14
|
* Any Standard Schema compatible validator.
|
|
@@ -16,6 +20,9 @@ export type StandardSchema = StandardSchemaV1<unknown, unknown>;
|
|
|
16
20
|
*/
|
|
17
21
|
export type MaybePromise<T> = T | Promise<T>;
|
|
18
22
|
|
|
23
|
+
const DEFAULT_LISTENER_READY_TIMEOUT_MS = 10_000;
|
|
24
|
+
const MAX_TIMER_MS = 2_147_483_647;
|
|
25
|
+
|
|
19
26
|
/**
|
|
20
27
|
* Infer the parsed output type from a Standard Schema.
|
|
21
28
|
*/
|
|
@@ -68,6 +75,74 @@ export interface EventPublishOptions {
|
|
|
68
75
|
trace?: TraceCarrier;
|
|
69
76
|
}
|
|
70
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Lifecycle handle for one event subscription or a composed listener
|
|
80
|
+
* registration.
|
|
81
|
+
*
|
|
82
|
+
* `ready` proves initial transport readiness. It does not represent ongoing
|
|
83
|
+
* connectivity, durability, replay, or handler success after startup.
|
|
84
|
+
*/
|
|
85
|
+
export interface EventSubscription {
|
|
86
|
+
/** Resolves when the subscription can receive events. */
|
|
87
|
+
readonly ready: Promise<void>;
|
|
88
|
+
/** Stop local delivery and await transport cleanup. Idempotent. */
|
|
89
|
+
unsubscribe(): Promise<void>;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Error used when a subscription closes before initial readiness. */
|
|
93
|
+
export class EventSubscriptionClosedError extends Error {
|
|
94
|
+
constructor(message = "Event subscription closed before it became ready.") {
|
|
95
|
+
super(message);
|
|
96
|
+
this.name = "EventSubscriptionClosedError";
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Error thrown when a listener registry misses its readiness deadline. */
|
|
101
|
+
export class ListenerRegistrationTimeoutError extends Error {
|
|
102
|
+
/** Configured readiness deadline in milliseconds. */
|
|
103
|
+
readonly timeoutMs: number;
|
|
104
|
+
/** Listener names that were part of the registration. */
|
|
105
|
+
readonly listenerNames: readonly string[];
|
|
106
|
+
|
|
107
|
+
constructor(args: {
|
|
108
|
+
timeoutMs: number;
|
|
109
|
+
listenerNames: readonly string[];
|
|
110
|
+
}) {
|
|
111
|
+
const suffix = args.listenerNames.length
|
|
112
|
+
? `: ${args.listenerNames.join(", ")}`
|
|
113
|
+
: "";
|
|
114
|
+
super(
|
|
115
|
+
`Listeners did not become ready within ${args.timeoutMs}ms${suffix}.`,
|
|
116
|
+
);
|
|
117
|
+
this.name = "ListenerRegistrationTimeoutError";
|
|
118
|
+
this.timeoutMs = args.timeoutMs;
|
|
119
|
+
this.listenerNames = [...args.listenerNames];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** Error thrown when listener rollback misses the registration deadline. */
|
|
124
|
+
export class ListenerRegistrationCleanupTimeoutError extends Error {
|
|
125
|
+
/** Configured registration deadline in milliseconds. */
|
|
126
|
+
readonly timeoutMs: number;
|
|
127
|
+
/** Listener names that were part of the registration. */
|
|
128
|
+
readonly listenerNames: readonly string[];
|
|
129
|
+
|
|
130
|
+
constructor(args: {
|
|
131
|
+
timeoutMs: number;
|
|
132
|
+
listenerNames: readonly string[];
|
|
133
|
+
}) {
|
|
134
|
+
const suffix = args.listenerNames.length
|
|
135
|
+
? `: ${args.listenerNames.join(", ")}`
|
|
136
|
+
: "";
|
|
137
|
+
super(
|
|
138
|
+
`Listener cleanup did not finish before the ${args.timeoutMs}ms registration deadline${suffix}.`,
|
|
139
|
+
);
|
|
140
|
+
this.name = "ListenerRegistrationCleanupTimeoutError";
|
|
141
|
+
this.timeoutMs = args.timeoutMs;
|
|
142
|
+
this.listenerNames = [...args.listenerNames];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
71
146
|
/**
|
|
72
147
|
* Options for `defineEvent(...)`.
|
|
73
148
|
*/
|
|
@@ -153,7 +228,7 @@ export interface EventBusLike {
|
|
|
153
228
|
options?: EventPublishOptions,
|
|
154
229
|
): MaybePromise<void>;
|
|
155
230
|
/**
|
|
156
|
-
* Subscribe to an event and return
|
|
231
|
+
* Subscribe to an event and return its readiness and cleanup handle.
|
|
157
232
|
*/
|
|
158
233
|
subscribe<E extends EventPayloadDef>(
|
|
159
234
|
event: E,
|
|
@@ -161,7 +236,7 @@ export interface EventBusLike {
|
|
|
161
236
|
payload: InferEventPayload<E>,
|
|
162
237
|
options?: EventPublishOptions,
|
|
163
238
|
) => MaybePromise<void>,
|
|
164
|
-
):
|
|
239
|
+
): EventSubscription;
|
|
165
240
|
}
|
|
166
241
|
|
|
167
242
|
/**
|
|
@@ -182,6 +257,12 @@ export interface RegisterListenersOptions<Ctx> {
|
|
|
182
257
|
* the event bus subscription callback.
|
|
183
258
|
*/
|
|
184
259
|
onError?: (error: unknown, listener: ListenerDef<EventDef, Ctx>) => void;
|
|
260
|
+
/**
|
|
261
|
+
* Maximum time for the complete listener registry to become ready. The same
|
|
262
|
+
* registration deadline bounds automatic rollback after startup failure.
|
|
263
|
+
* Defaults to 10 seconds.
|
|
264
|
+
*/
|
|
265
|
+
readyTimeoutMs?: number;
|
|
185
266
|
}
|
|
186
267
|
|
|
187
268
|
/**
|
|
@@ -315,58 +396,205 @@ export async function publishEvent<E extends EventPayloadDef>(
|
|
|
315
396
|
payload: InferEventPayload<E>,
|
|
316
397
|
options?: EventPublishOptions,
|
|
317
398
|
): Promise<void> {
|
|
318
|
-
await parseEventPayload(event, payload);
|
|
319
|
-
await eventBus.publish(event,
|
|
399
|
+
const parsed = await parseEventPayload(event, payload);
|
|
400
|
+
await eventBus.publish(event, parsed, markEventPayloadParsed(options));
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function assertReadyTimeoutMs(value: number): void {
|
|
404
|
+
if (Number.isInteger(value) && value >= 1 && value <= MAX_TIMER_MS) return;
|
|
405
|
+
throw new RangeError(
|
|
406
|
+
`readyTimeoutMs must be an integer between 1 and ${MAX_TIMER_MS} milliseconds.`,
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
function errorsFromCleanup(error: unknown): unknown[] {
|
|
411
|
+
return error instanceof AggregateError ? [...error.errors] : [error];
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
function unsubscribeAllSettled(
|
|
415
|
+
subscriptions: readonly EventSubscription[],
|
|
416
|
+
): Promise<PromiseSettledResult<void>[]> {
|
|
417
|
+
const attempts: Promise<void>[] = [];
|
|
418
|
+
for (const subscription of [...subscriptions].reverse()) {
|
|
419
|
+
try {
|
|
420
|
+
attempts.push(Promise.resolve(subscription.unsubscribe()));
|
|
421
|
+
} catch (error) {
|
|
422
|
+
attempts.push(Promise.reject(error));
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
return Promise.allSettled(attempts);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
function throwSubscriptionCleanupErrors(
|
|
430
|
+
results: readonly PromiseSettledResult<void>[],
|
|
431
|
+
): void {
|
|
432
|
+
const errors = results.flatMap((result) =>
|
|
433
|
+
result.status === "rejected" ? errorsFromCleanup(result.reason) : [],
|
|
434
|
+
);
|
|
435
|
+
if (errors.length > 0) {
|
|
436
|
+
throw new AggregateError(errors, "Event subscription cleanup failed");
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
function withListenerDeadline<T>(
|
|
441
|
+
operation: Promise<T>,
|
|
442
|
+
args: {
|
|
443
|
+
deadlineAt: number;
|
|
444
|
+
timeoutError: Error;
|
|
445
|
+
},
|
|
446
|
+
): Promise<T> {
|
|
447
|
+
let timeout: ReturnType<typeof setTimeout> | undefined;
|
|
448
|
+
const timedOut = new Promise<T>((_, reject) => {
|
|
449
|
+
timeout = setTimeout(
|
|
450
|
+
() => {
|
|
451
|
+
reject(args.timeoutError);
|
|
452
|
+
},
|
|
453
|
+
Math.max(0, args.deadlineAt - performance.now()),
|
|
454
|
+
);
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
return Promise.race([operation, timedOut]).finally(() => {
|
|
458
|
+
if (timeout !== undefined) clearTimeout(timeout);
|
|
459
|
+
});
|
|
320
460
|
}
|
|
321
461
|
|
|
322
462
|
/**
|
|
323
|
-
* Register listeners against an event bus and return
|
|
463
|
+
* Register listeners against an event bus and return a composite lifecycle
|
|
464
|
+
* handle.
|
|
324
465
|
*
|
|
325
466
|
* Payloads are validated before listener handlers run. Listener context is
|
|
326
|
-
* resolved per delivery when `options.ctx` is a factory.
|
|
467
|
+
* resolved per delivery when `options.ctx` is a factory. Initial registration
|
|
468
|
+
* starts every child cleanup after a synchronous subscribe failure, rejected
|
|
469
|
+
* readiness promise, or readiness timeout. Cleanup that cannot finish inside
|
|
470
|
+
* the registration deadline is reported without extending startup forever.
|
|
327
471
|
*/
|
|
328
472
|
export function registerListeners<Ctx>(
|
|
329
473
|
eventBus: EventBusLike,
|
|
330
474
|
listeners: readonly ListenerDef<EventDef, Ctx>[],
|
|
331
475
|
options: RegisterListenersOptions<Ctx> = {},
|
|
332
|
-
):
|
|
333
|
-
const
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
476
|
+
): EventSubscription {
|
|
477
|
+
const readyTimeoutMs =
|
|
478
|
+
options.readyTimeoutMs ?? DEFAULT_LISTENER_READY_TIMEOUT_MS;
|
|
479
|
+
assertReadyTimeoutMs(readyTimeoutMs);
|
|
480
|
+
const registrationDeadlineAt = performance.now() + readyTimeoutMs;
|
|
481
|
+
const listenerNames = listeners.map(({ name }) => name);
|
|
482
|
+
|
|
483
|
+
const subscriptions: EventSubscription[] = [];
|
|
484
|
+
let registrationError: unknown;
|
|
485
|
+
|
|
486
|
+
for (const listener of listeners) {
|
|
487
|
+
try {
|
|
488
|
+
subscriptions.push(
|
|
489
|
+
eventBus.subscribe(
|
|
490
|
+
listener.event,
|
|
491
|
+
async (rawPayload, publishOptions) => {
|
|
492
|
+
try {
|
|
493
|
+
const payload = isEventPayloadParsed(publishOptions)
|
|
494
|
+
? rawPayload
|
|
495
|
+
: await parseEventPayload(listener.event, rawPayload);
|
|
496
|
+
const traceAttributes = {
|
|
497
|
+
"beignet.listener.name": listener.name,
|
|
498
|
+
"beignet.event.name": listener.event.name,
|
|
499
|
+
} as const;
|
|
500
|
+
await runWithResolvedTracingContext({
|
|
501
|
+
tracing: options.tracing,
|
|
502
|
+
ctx: options.ctx as Ctx | (() => MaybePromise<Ctx>),
|
|
503
|
+
operation: {
|
|
504
|
+
name: `beignet.listener ${listener.name}`,
|
|
505
|
+
type: "listener",
|
|
506
|
+
kind: "consumer",
|
|
507
|
+
parent: parseTraceCarrier(publishOptions?.trace),
|
|
508
|
+
attributes: traceAttributes,
|
|
509
|
+
metricAttributes: traceAttributes,
|
|
510
|
+
},
|
|
511
|
+
run: (ctx) =>
|
|
512
|
+
listener.handle({
|
|
513
|
+
event: listener.event,
|
|
514
|
+
payload,
|
|
515
|
+
ctx,
|
|
516
|
+
}),
|
|
517
|
+
});
|
|
518
|
+
} catch (error) {
|
|
519
|
+
options.onError?.(error, listener);
|
|
520
|
+
if (!options.onError) throw error;
|
|
521
|
+
}
|
|
351
522
|
},
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
523
|
+
),
|
|
524
|
+
);
|
|
525
|
+
} catch (error) {
|
|
526
|
+
registrationError = error;
|
|
527
|
+
break;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
let rejectClosed!: (error: unknown) => void;
|
|
532
|
+
const closedBeforeReady = new Promise<void>((_, reject) => {
|
|
533
|
+
rejectClosed = reject;
|
|
534
|
+
});
|
|
535
|
+
// A consumer may only await cleanup. Keep an explicit observer on the
|
|
536
|
+
// cancellation signal so that use does not create an unhandled rejection.
|
|
537
|
+
void closedBeforeReady.catch(() => undefined);
|
|
538
|
+
|
|
539
|
+
let cleanupPromise: Promise<void> | undefined;
|
|
540
|
+
const cleanup = (deadlineAt?: number): Promise<void> => {
|
|
541
|
+
if (cleanupPromise) return cleanupPromise;
|
|
542
|
+
const operation = unsubscribeAllSettled(subscriptions);
|
|
543
|
+
cleanupPromise =
|
|
544
|
+
deadlineAt === undefined
|
|
545
|
+
? operation.then(throwSubscriptionCleanupErrors)
|
|
546
|
+
: withListenerDeadline(operation, {
|
|
547
|
+
deadlineAt,
|
|
548
|
+
timeoutError: new ListenerRegistrationCleanupTimeoutError({
|
|
549
|
+
timeoutMs: readyTimeoutMs,
|
|
550
|
+
listenerNames,
|
|
357
551
|
}),
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
552
|
+
}).then(throwSubscriptionCleanupErrors);
|
|
553
|
+
return cleanupPromise;
|
|
554
|
+
};
|
|
555
|
+
|
|
556
|
+
const initialReadiness = registrationError
|
|
557
|
+
? Promise.reject(registrationError)
|
|
558
|
+
: Promise.all(subscriptions.map(({ ready }) => ready)).then(
|
|
559
|
+
() => undefined,
|
|
560
|
+
);
|
|
561
|
+
let readySettled = false;
|
|
562
|
+
const ready = withListenerDeadline(
|
|
563
|
+
Promise.race([initialReadiness, closedBeforeReady]),
|
|
564
|
+
{
|
|
565
|
+
deadlineAt: registrationDeadlineAt,
|
|
566
|
+
timeoutError: new ListenerRegistrationTimeoutError({
|
|
567
|
+
timeoutMs: readyTimeoutMs,
|
|
568
|
+
listenerNames,
|
|
569
|
+
}),
|
|
570
|
+
},
|
|
571
|
+
)
|
|
572
|
+
.catch(async (primaryError: unknown) => {
|
|
573
|
+
try {
|
|
574
|
+
await cleanup(registrationDeadlineAt);
|
|
575
|
+
} catch (cleanupError) {
|
|
576
|
+
throw new AggregateError(
|
|
577
|
+
[primaryError, ...errorsFromCleanup(cleanupError)],
|
|
578
|
+
"Listener registration failed and cleanup failed",
|
|
579
|
+
);
|
|
362
580
|
}
|
|
363
|
-
|
|
364
|
-
|
|
581
|
+
throw primaryError;
|
|
582
|
+
})
|
|
583
|
+
.finally(() => {
|
|
584
|
+
readySettled = true;
|
|
585
|
+
});
|
|
586
|
+
// EventSubscription allows callers that only own cleanup. Preserve the
|
|
587
|
+
// rejection for awaiters while preventing process-level unhandled noise.
|
|
588
|
+
void ready.catch(() => undefined);
|
|
365
589
|
|
|
366
|
-
return
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
590
|
+
return {
|
|
591
|
+
ready,
|
|
592
|
+
unsubscribe() {
|
|
593
|
+
if (!readySettled) {
|
|
594
|
+
rejectClosed(new EventSubscriptionClosedError());
|
|
595
|
+
}
|
|
596
|
+
return cleanup(readySettled ? undefined : registrationDeadlineAt);
|
|
597
|
+
},
|
|
370
598
|
};
|
|
371
599
|
}
|
|
372
600
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { EventPublishOptions } from "./index.js";
|
|
2
|
+
|
|
3
|
+
const PARSED_EVENT_PAYLOAD = Symbol.for("beignet.eventPayload.parsed");
|
|
4
|
+
|
|
5
|
+
type ParsedEventPublishOptions = EventPublishOptions & {
|
|
6
|
+
[PARSED_EVENT_PAYLOAD]?: true;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export function markEventPayloadParsed(
|
|
10
|
+
options?: EventPublishOptions,
|
|
11
|
+
): EventPublishOptions {
|
|
12
|
+
return {
|
|
13
|
+
...options,
|
|
14
|
+
[PARSED_EVENT_PAYLOAD]: true,
|
|
15
|
+
} as ParsedEventPublishOptions;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function isEventPayloadParsed(options?: EventPublishOptions): boolean {
|
|
19
|
+
return (
|
|
20
|
+
(options as ParsedEventPublishOptions | undefined)?.[
|
|
21
|
+
PARSED_EVENT_PAYLOAD
|
|
22
|
+
] === true
|
|
23
|
+
);
|
|
24
|
+
}
|