@beignet/core 0.0.32 → 0.0.33
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 +35 -0
- package/README.md +344 -19
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +63 -47
- package/dist/application/index.js.map +1 -1
- package/dist/events/index.d.ts +6 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +20 -10
- package/dist/events/index.js.map +1 -1
- package/dist/jobs/index.d.ts +415 -4
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +392 -3
- package/dist/jobs/index.js.map +1 -1
- package/dist/outbox/index.d.ts +150 -1
- package/dist/outbox/index.d.ts.map +1 -1
- package/dist/outbox/index.js +170 -1
- package/dist/outbox/index.js.map +1 -1
- package/dist/ports/index.d.ts +6 -1
- 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/providers/instrumentation.d.ts +4 -0
- package/dist/providers/instrumentation.d.ts.map +1 -1
- package/dist/providers/instrumentation.js.map +1 -1
- package/dist/schedules/index.d.ts +8 -7
- package/dist/schedules/index.d.ts.map +1 -1
- package/dist/schedules/index.js +47 -16
- package/dist/schedules/index.js.map +1 -1
- package/dist/server/hooks/index.d.ts +1 -0
- package/dist/server/hooks/index.d.ts.map +1 -1
- package/dist/server/hooks/index.js +1 -0
- package/dist/server/hooks/index.js.map +1 -1
- package/dist/server/hooks/rate-limit.d.ts +26 -13
- package/dist/server/hooks/rate-limit.d.ts.map +1 -1
- package/dist/server/hooks/rate-limit.js +28 -34
- package/dist/server/hooks/rate-limit.js.map +1 -1
- package/dist/server/hooks/security.d.ts +179 -0
- package/dist/server/hooks/security.d.ts.map +1 -0
- package/dist/server/hooks/security.js +225 -0
- package/dist/server/hooks/security.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/instrumentation.js +22 -6
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/request-context.d.ts +4 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +3 -0
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/runtime-integrity.d.ts +84 -0
- package/dist/server/runtime-integrity.d.ts.map +1 -0
- package/dist/server/runtime-integrity.js +160 -0
- package/dist/server/runtime-integrity.js.map +1 -0
- package/dist/server/server.d.ts +10 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +55 -1
- package/dist/server/server.js.map +1 -1
- package/dist/server/trusted-proxy.d.ts +77 -0
- package/dist/server/trusted-proxy.d.ts.map +1 -0
- package/dist/server/trusted-proxy.js +129 -0
- package/dist/server/trusted-proxy.js.map +1 -0
- package/dist/tasks/index.d.ts +6 -7
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +22 -5
- package/dist/tasks/index.js.map +1 -1
- package/dist/tenancy/index.d.ts +41 -0
- package/dist/tenancy/index.d.ts.map +1 -0
- package/dist/tenancy/index.js +34 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tracing/execution.d.ts +14 -0
- package/dist/tracing/execution.d.ts.map +1 -0
- package/dist/tracing/execution.js +17 -0
- package/dist/tracing/execution.js.map +1 -0
- package/dist/tracing/index.d.ts +49 -0
- package/dist/tracing/index.d.ts.map +1 -1
- package/dist/tracing/index.js +59 -0
- package/dist/tracing/index.js.map +1 -1
- package/dist/uploads/client.d.ts.map +1 -1
- package/dist/uploads/client.js +44 -6
- package/dist/uploads/client.js.map +1 -1
- package/dist/uploads/index.d.ts +71 -0
- package/dist/uploads/index.d.ts.map +1 -1
- package/dist/uploads/index.js +344 -15
- package/dist/uploads/index.js.map +1 -1
- package/dist/webhooks/index.d.ts +55 -4
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/index.js +106 -2
- package/dist/webhooks/index.js.map +1 -1
- package/package.json +5 -1
- package/skills/app-architecture/SKILL.md +23 -2
- package/src/application/index.ts +88 -56
- package/src/events/index.ts +27 -14
- package/src/jobs/index.ts +895 -7
- package/src/outbox/index.ts +358 -2
- package/src/ports/index.ts +17 -0
- package/src/providers/instrumentation.ts +4 -0
- package/src/schedules/index.ts +60 -26
- package/src/server/hooks/index.ts +10 -0
- package/src/server/hooks/rate-limit.ts +52 -46
- package/src/server/hooks/security.ts +503 -0
- package/src/server/index.ts +8 -0
- package/src/server/instrumentation.ts +25 -5
- package/src/server/request-context.ts +7 -0
- package/src/server/runtime-integrity.ts +322 -0
- package/src/server/server.ts +86 -1
- package/src/server/trusted-proxy.ts +249 -0
- package/src/tasks/index.ts +29 -12
- package/src/tenancy/index.ts +55 -0
- package/src/tracing/execution.ts +37 -0
- package/src/tracing/index.ts +137 -0
- package/src/uploads/client.ts +65 -6
- package/src/uploads/index.ts +539 -14
- package/src/webhooks/index.ts +238 -9
package/dist/webhooks/index.d.ts
CHANGED
|
@@ -82,10 +82,56 @@ export interface DefineWebhookOptions<Events extends WebhookEventSchemas = Webho
|
|
|
82
82
|
/**
|
|
83
83
|
* Options accepted by `verifyWebhook(...)`.
|
|
84
84
|
*/
|
|
85
|
-
export interface VerifyWebhookOptions {
|
|
85
|
+
export interface VerifyWebhookOptions<AllowUnknownEvents extends boolean = boolean> {
|
|
86
86
|
verifier?: WebhookVerifier;
|
|
87
|
-
allowUnknownEvents?:
|
|
87
|
+
allowUnknownEvents?: AllowUnknownEvents;
|
|
88
88
|
}
|
|
89
|
+
type InferWebhookVerificationResult<TWebhook extends WebhookDef<string, WebhookEventSchemas>, AllowUnknownEvents extends boolean> = true extends AllowUnknownEvents ? InferWebhookEvent<TWebhook> | WebhookEvent : InferWebhookEvent<TWebhook>;
|
|
90
|
+
/**
|
|
91
|
+
* Timestamp formats accepted by the generic HMAC webhook verifier.
|
|
92
|
+
*/
|
|
93
|
+
export type HmacWebhookTimestampFormat = "unix-seconds" | "unix-milliseconds" | "iso8601";
|
|
94
|
+
/**
|
|
95
|
+
* Timestamp source and tolerance for generic HMAC replay protection.
|
|
96
|
+
*/
|
|
97
|
+
export type HmacWebhookTimestampOptions = {
|
|
98
|
+
/**
|
|
99
|
+
* Header that carries the provider event timestamp.
|
|
100
|
+
*/
|
|
101
|
+
header: string;
|
|
102
|
+
payloadPath?: never;
|
|
103
|
+
/**
|
|
104
|
+
* Timestamp format.
|
|
105
|
+
*
|
|
106
|
+
* @default "unix-seconds"
|
|
107
|
+
*/
|
|
108
|
+
format?: HmacWebhookTimestampFormat;
|
|
109
|
+
/**
|
|
110
|
+
* Maximum absolute clock skew between the event timestamp and receipt.
|
|
111
|
+
*
|
|
112
|
+
* @default 300
|
|
113
|
+
*/
|
|
114
|
+
toleranceSec?: number;
|
|
115
|
+
} | {
|
|
116
|
+
header?: never;
|
|
117
|
+
/**
|
|
118
|
+
* Dot path used to read the provider event timestamp from the JSON
|
|
119
|
+
* payload.
|
|
120
|
+
*/
|
|
121
|
+
payloadPath: string;
|
|
122
|
+
/**
|
|
123
|
+
* Timestamp format.
|
|
124
|
+
*
|
|
125
|
+
* @default "unix-seconds"
|
|
126
|
+
*/
|
|
127
|
+
format?: HmacWebhookTimestampFormat;
|
|
128
|
+
/**
|
|
129
|
+
* Maximum absolute clock skew between the event timestamp and receipt.
|
|
130
|
+
*
|
|
131
|
+
* @default 300
|
|
132
|
+
*/
|
|
133
|
+
toleranceSec?: number;
|
|
134
|
+
};
|
|
89
135
|
/**
|
|
90
136
|
* Options for the in-memory webhook verifier.
|
|
91
137
|
*/
|
|
@@ -137,6 +183,10 @@ export interface CreateHmacWebhookVerifierOptions {
|
|
|
137
183
|
* @default "type"
|
|
138
184
|
*/
|
|
139
185
|
eventTypePath?: string;
|
|
186
|
+
/**
|
|
187
|
+
* Optional timestamp source used to reject replayed generic HMAC webhooks.
|
|
188
|
+
*/
|
|
189
|
+
timestamp?: HmacWebhookTimestampOptions;
|
|
140
190
|
}
|
|
141
191
|
/**
|
|
142
192
|
* Error thrown for invalid webhook definitions and inputs.
|
|
@@ -180,11 +230,11 @@ export declare function defineWebhook<Name extends string, Events extends Webhoo
|
|
|
180
230
|
/**
|
|
181
231
|
* Verify a raw webhook request and validate the matching event payload schema.
|
|
182
232
|
*/
|
|
183
|
-
export declare function verifyWebhook<TWebhook extends WebhookDef<string, WebhookEventSchemas
|
|
233
|
+
export declare function verifyWebhook<TWebhook extends WebhookDef<string, WebhookEventSchemas>, AllowUnknownEvents extends boolean = false>(webhook: TWebhook, input: VerifyWebhookInput, options?: VerifyWebhookOptions<AllowUnknownEvents>): Promise<InferWebhookVerificationResult<TWebhook, AllowUnknownEvents>>;
|
|
184
234
|
/**
|
|
185
235
|
* Validate a verified webhook event against its catalog entry.
|
|
186
236
|
*/
|
|
187
|
-
export declare function parseWebhookEvent<TWebhook extends WebhookDef<string, WebhookEventSchemas
|
|
237
|
+
export declare function parseWebhookEvent<TWebhook extends WebhookDef<string, WebhookEventSchemas>, AllowUnknownEvents extends boolean = false>(webhook: TWebhook, event: WebhookEvent, options?: Pick<VerifyWebhookOptions<AllowUnknownEvents>, "allowUnknownEvents">): Promise<InferWebhookVerificationResult<TWebhook, AllowUnknownEvents>>;
|
|
188
238
|
/**
|
|
189
239
|
* Create an in-memory verifier for tests.
|
|
190
240
|
*/
|
|
@@ -193,4 +243,5 @@ export declare function createMemoryWebhookVerifier(options?: CreateMemoryWebhoo
|
|
|
193
243
|
* Create a generic JSON + HMAC verifier.
|
|
194
244
|
*/
|
|
195
245
|
export declare function createHmacWebhookVerifier(options: CreateHmacWebhookVerifierOptions): WebhookVerifier;
|
|
246
|
+
export {};
|
|
196
247
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webhooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,QAAQ,GAAG,OAAO;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,QAAQ,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IACzE,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,IACtD,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,mBAAmB,EAClC,IAAI,SAAS,MAAM,MAAM,GAAG,MAAM,IAChC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,IACpC,QAAQ,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,GAC7C;KACG,IAAI,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;CACrE,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GACxB,YAAY,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,UAAU,CACzB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,mBAAmB,GAAG,mBAAmB;IAExD,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CACnC,MAAM,SAAS,mBAAmB,GAAG,mBAAmB;IAExD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webhooks/index.ts"],"names":[],"mappings":"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"}
|
package/dist/webhooks/index.js
CHANGED
|
@@ -93,8 +93,9 @@ export async function parseWebhookEvent(webhook, event, options = {}) {
|
|
|
93
93
|
validateEvent(webhook, event);
|
|
94
94
|
const schema = webhook.events[event.type];
|
|
95
95
|
if (!schema) {
|
|
96
|
-
if (options.allowUnknownEvents
|
|
96
|
+
if (options.allowUnknownEvents === true) {
|
|
97
97
|
return event;
|
|
98
|
+
}
|
|
98
99
|
throw new WebhookVerificationError({
|
|
99
100
|
message: `Webhook "${webhook.name}" received unknown event type "${event.type}".`,
|
|
100
101
|
webhookName: webhook.name,
|
|
@@ -159,6 +160,7 @@ export function createHmacWebhookVerifier(options) {
|
|
|
159
160
|
const algorithm = options.algorithm ?? "SHA-256";
|
|
160
161
|
const eventIdPath = options.eventIdPath ?? "id";
|
|
161
162
|
const eventTypePath = options.eventTypePath ?? "type";
|
|
163
|
+
const timestamp = normalizeHmacTimestampOptions(options.timestamp);
|
|
162
164
|
return {
|
|
163
165
|
async verify(input) {
|
|
164
166
|
const signature = input.signature ?? input.headers?.[signatureHeader];
|
|
@@ -179,6 +181,12 @@ export function createHmacWebhookVerifier(options) {
|
|
|
179
181
|
});
|
|
180
182
|
}
|
|
181
183
|
const payload = parseJsonBody(input.rawBody);
|
|
184
|
+
const createdAt = validateHmacTimestamp({
|
|
185
|
+
input,
|
|
186
|
+
payload,
|
|
187
|
+
provider: options.provider,
|
|
188
|
+
timestamp,
|
|
189
|
+
});
|
|
182
190
|
const id = readStringPath(payload, eventIdPath);
|
|
183
191
|
const type = readStringPath(payload, eventTypePath);
|
|
184
192
|
if (!id) {
|
|
@@ -199,6 +207,7 @@ export function createHmacWebhookVerifier(options) {
|
|
|
199
207
|
id,
|
|
200
208
|
type,
|
|
201
209
|
provider: options.provider,
|
|
210
|
+
...(createdAt ? { createdAt } : {}),
|
|
202
211
|
payload,
|
|
203
212
|
raw: payload,
|
|
204
213
|
};
|
|
@@ -277,7 +286,7 @@ function parseJsonBody(rawBody) {
|
|
|
277
286
|
});
|
|
278
287
|
}
|
|
279
288
|
}
|
|
280
|
-
function
|
|
289
|
+
function readPath(input, path) {
|
|
281
290
|
let value = input;
|
|
282
291
|
for (const segment of path.split(".")) {
|
|
283
292
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
@@ -285,8 +294,103 @@ function readStringPath(input, path) {
|
|
|
285
294
|
}
|
|
286
295
|
value = value[segment];
|
|
287
296
|
}
|
|
297
|
+
return value;
|
|
298
|
+
}
|
|
299
|
+
function readStringPath(input, path) {
|
|
300
|
+
const value = readPath(input, path);
|
|
288
301
|
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
289
302
|
}
|
|
303
|
+
function normalizeHmacTimestampOptions(timestamp) {
|
|
304
|
+
if (!timestamp)
|
|
305
|
+
return undefined;
|
|
306
|
+
const format = timestamp.format ?? "unix-seconds";
|
|
307
|
+
if (format !== "unix-seconds" &&
|
|
308
|
+
format !== "unix-milliseconds" &&
|
|
309
|
+
format !== "iso8601") {
|
|
310
|
+
throw new WebhookOptionsError("Webhook HMAC timestamp format must be unix-seconds, unix-milliseconds, or iso8601.");
|
|
311
|
+
}
|
|
312
|
+
const toleranceSec = timestamp.toleranceSec ?? 300;
|
|
313
|
+
if (!Number.isInteger(toleranceSec) || toleranceSec <= 0) {
|
|
314
|
+
throw new WebhookOptionsError("Webhook HMAC timestamp toleranceSec must be a positive integer.");
|
|
315
|
+
}
|
|
316
|
+
if ("header" in timestamp) {
|
|
317
|
+
if (!timestamp.header) {
|
|
318
|
+
throw new WebhookOptionsError("Webhook HMAC timestamp header is required.");
|
|
319
|
+
}
|
|
320
|
+
return {
|
|
321
|
+
source: "header",
|
|
322
|
+
key: normalizeHeaderName(timestamp.header),
|
|
323
|
+
format,
|
|
324
|
+
toleranceSec,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
if (!timestamp.payloadPath) {
|
|
328
|
+
throw new WebhookOptionsError("Webhook HMAC timestamp payloadPath is required.");
|
|
329
|
+
}
|
|
330
|
+
return {
|
|
331
|
+
source: "payload",
|
|
332
|
+
path: timestamp.payloadPath,
|
|
333
|
+
format,
|
|
334
|
+
toleranceSec,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
function validateHmacTimestamp(args) {
|
|
338
|
+
const { timestamp } = args;
|
|
339
|
+
if (!timestamp)
|
|
340
|
+
return undefined;
|
|
341
|
+
const value = timestamp.source === "header"
|
|
342
|
+
? args.input.headers?.[timestamp.key]
|
|
343
|
+
: readPath(args.payload, timestamp.path);
|
|
344
|
+
if (value === undefined || value === null || value === "") {
|
|
345
|
+
throw new WebhookVerificationError({
|
|
346
|
+
message: timestamp.source === "header"
|
|
347
|
+
? `Missing ${timestamp.key} header.`
|
|
348
|
+
: `Webhook payload is missing timestamp at "${timestamp.path}".`,
|
|
349
|
+
provider: args.provider,
|
|
350
|
+
code: "missing_timestamp",
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
const createdAt = parseHmacTimestampValue(value, timestamp.format, args.provider);
|
|
354
|
+
const receivedAt = args.input.receivedAt ?? new Date();
|
|
355
|
+
const skewMs = Math.abs(receivedAt.getTime() - createdAt.getTime());
|
|
356
|
+
if (skewMs > timestamp.toleranceSec * 1000) {
|
|
357
|
+
throw new WebhookVerificationError({
|
|
358
|
+
message: `Webhook timestamp is outside the ${timestamp.toleranceSec}s tolerance.`,
|
|
359
|
+
provider: args.provider,
|
|
360
|
+
code: "timestamp_outside_tolerance",
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
return createdAt;
|
|
364
|
+
}
|
|
365
|
+
function parseHmacTimestampValue(value, format, provider) {
|
|
366
|
+
const fail = () => new WebhookVerificationError({
|
|
367
|
+
message: "Webhook timestamp is invalid.",
|
|
368
|
+
provider,
|
|
369
|
+
code: "invalid_timestamp",
|
|
370
|
+
});
|
|
371
|
+
let millis;
|
|
372
|
+
if (format === "iso8601") {
|
|
373
|
+
if (typeof value !== "string")
|
|
374
|
+
throw fail();
|
|
375
|
+
millis = Date.parse(value);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
const numeric = typeof value === "number"
|
|
379
|
+
? value
|
|
380
|
+
: typeof value === "string"
|
|
381
|
+
? Number(value)
|
|
382
|
+
: Number.NaN;
|
|
383
|
+
if (!Number.isFinite(numeric))
|
|
384
|
+
throw fail();
|
|
385
|
+
millis = format === "unix-seconds" ? numeric * 1000 : numeric;
|
|
386
|
+
}
|
|
387
|
+
if (!Number.isFinite(millis))
|
|
388
|
+
throw fail();
|
|
389
|
+
const date = new Date(millis);
|
|
390
|
+
if (Number.isNaN(date.getTime()))
|
|
391
|
+
throw fail();
|
|
392
|
+
return date;
|
|
393
|
+
}
|
|
290
394
|
async function hmacHex(algorithm, secret, rawBody) {
|
|
291
395
|
const key = await crypto.subtle.importKey("raw", new TextEncoder().encode(secret), { name: "HMAC", hash: algorithm ?? "SHA-256" }, false, ["sign"]);
|
|
292
396
|
const bytes = rawBodyBytes(rawBody);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webhooks/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webhooks/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beignet/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core framework primitives for Beignet",
|
|
6
6
|
"exports": {
|
|
@@ -118,6 +118,10 @@
|
|
|
118
118
|
"types": "./dist/tasks/index.d.ts",
|
|
119
119
|
"default": "./dist/tasks/index.js"
|
|
120
120
|
},
|
|
121
|
+
"./tenancy": {
|
|
122
|
+
"types": "./dist/tenancy/index.d.ts",
|
|
123
|
+
"default": "./dist/tenancy/index.js"
|
|
124
|
+
},
|
|
121
125
|
"./testing": {
|
|
122
126
|
"types": "./dist/testing/index.d.ts",
|
|
123
127
|
"default": "./dist/testing/index.js"
|
|
@@ -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, app errors, ports, policies, context, providers, 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, app-facing ports, authorization, workflow primitives, or app-bound lib builders."
|
|
3
|
+
description: "Build Beignet app feature slices with @beignet/core primitives: schemas, contracts, use cases, 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, or app-bound lib builders."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Beignet App Architecture
|
|
@@ -56,6 +56,14 @@ generator or deliberate feature change introduces that concern.
|
|
|
56
56
|
clients.
|
|
57
57
|
- UI and feature client modules call server behavior through contracts and a
|
|
58
58
|
typed client, not by importing use cases.
|
|
59
|
+
- Server-only request context helpers may bridge Server Components to
|
|
60
|
+
Beignet's request-scoped `AppContext`. Keep them outside `client/`, usually
|
|
61
|
+
in `lib/server-context.ts`, and mark them with `@beignet/core/server-only`.
|
|
62
|
+
Layouts may read `ctx.auth`, `ctx.tenant`, and request metadata for redirects
|
|
63
|
+
and shell state; feature data still belongs behind use cases.
|
|
64
|
+
- Server-only React Query prefetch helpers may consume that context for
|
|
65
|
+
hydrated client state. Use them only for direct `{ contract, useCase }` route
|
|
66
|
+
bindings whose use-case output matches the contract success body.
|
|
59
67
|
- Server, provider, and infra code may import `@beignet/core/server-only`;
|
|
60
68
|
browser-reachable client helpers may import `@beignet/core/client-only` as
|
|
61
69
|
lint markers when the app uses them.
|
|
@@ -138,6 +146,13 @@ or outbox records must commit together.
|
|
|
138
146
|
Do not import provider packages from contracts, use cases, routes, UI, or
|
|
139
147
|
feature client modules.
|
|
140
148
|
|
|
149
|
+
Tenant-owned repository methods should accept `TenantScope` instead of raw
|
|
150
|
+
tenant IDs. Use cases derive it with `requireTenantScope(ctx)` or
|
|
151
|
+
`createTenantScope(...)`; adapters unwrap it with `tenantScopeId(scope)` and
|
|
152
|
+
include that storage ID in read, write, update, and delete predicates.
|
|
153
|
+
Provider-correlation lookups such as webhook customer IDs are not tenant
|
|
154
|
+
authorization by themselves.
|
|
155
|
+
|
|
141
156
|
## Workflows
|
|
142
157
|
|
|
143
158
|
Feature-owned workflow definitions belong under the feature:
|
|
@@ -165,12 +180,18 @@ for example `createJobs<AppContext>()`, `createListeners<AppContext>()`,
|
|
|
165
180
|
|
|
166
181
|
Register workflow artifacts explicitly:
|
|
167
182
|
|
|
168
|
-
- listeners through `registerListeners(...)` in provider
|
|
183
|
+
- listeners in `server/listeners.ts`, then through `registerListeners(...)` in server provider wiring
|
|
169
184
|
- schedules in `server/schedules.ts`
|
|
170
185
|
- tasks in `server/tasks.ts`
|
|
171
186
|
- outbox events and jobs in `server/outbox.ts`
|
|
172
187
|
- seeds through the app's seed entrypoint, usually `server/seed.ts`
|
|
173
188
|
|
|
189
|
+
For apps that opt into runtime boot checks, declare workflow artifacts in
|
|
190
|
+
`server/runtime-integrity.ts` with `defineRuntimeManifest(...)`, compare them
|
|
191
|
+
to the central registries with `defineRuntimeRegistries(...)`, and pass the
|
|
192
|
+
resulting `runtimeIntegrity` check to server startup. This check is pure and
|
|
193
|
+
serverless-safe: it proves registry coverage, not worker deployment health.
|
|
194
|
+
|
|
174
195
|
Uploads are feature-owned definitions under `features/<feature>/uploads/`,
|
|
175
196
|
then exposed through an app route with `createUploadRouter(...)` and the
|
|
176
197
|
platform adapter. Webhooks and payment webhooks are inbound transport concerns:
|
package/src/application/index.ts
CHANGED
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
} from "../providers/instrumentation.js";
|
|
6
6
|
import {
|
|
7
7
|
createChildTraceContext,
|
|
8
|
+
resolveTracingPort,
|
|
9
|
+
runWithTracing,
|
|
8
10
|
type TraceContextInput,
|
|
9
11
|
} from "../tracing/index.js";
|
|
10
12
|
|
|
@@ -482,6 +484,7 @@ function getInstrumentationTrace(ctx: unknown): TraceContextInput | undefined {
|
|
|
482
484
|
spanId: context.spanId,
|
|
483
485
|
parentSpanId: context.parentSpanId,
|
|
484
486
|
traceparent: context.traceparent,
|
|
487
|
+
tracestate: context.tracestate,
|
|
485
488
|
};
|
|
486
489
|
}
|
|
487
490
|
|
|
@@ -517,9 +520,9 @@ function startUseCaseRunInstrumentation(args: {
|
|
|
517
520
|
if (!useCasesEnabled && !errorsEnabled) return undefined;
|
|
518
521
|
|
|
519
522
|
const requestId = getInstrumentationRequestId(args.ctx);
|
|
520
|
-
const trace =
|
|
521
|
-
|
|
522
|
-
|
|
523
|
+
const trace =
|
|
524
|
+
resolveTracingPort(ports)?.current() ??
|
|
525
|
+
createChildTraceContext(getInstrumentationTrace(args.ctx) ?? {});
|
|
523
526
|
|
|
524
527
|
const record = (event: ProviderInstrumentationEventInput) => {
|
|
525
528
|
try {
|
|
@@ -542,6 +545,7 @@ function startUseCaseRunInstrumentation(args: {
|
|
|
542
545
|
spanId: trace.spanId,
|
|
543
546
|
parentSpanId: trace.parentSpanId,
|
|
544
547
|
traceparent: trace.traceparent,
|
|
548
|
+
tracestate: trace.tracestate,
|
|
545
549
|
name: args.name,
|
|
546
550
|
kind: args.kind,
|
|
547
551
|
phase,
|
|
@@ -558,6 +562,7 @@ function startUseCaseRunInstrumentation(args: {
|
|
|
558
562
|
spanId: trace.spanId,
|
|
559
563
|
parentSpanId: trace.parentSpanId,
|
|
560
564
|
traceparent: trace.traceparent,
|
|
565
|
+
tracestate: trace.tracestate,
|
|
561
566
|
message: getRunErrorMessage(error),
|
|
562
567
|
stack: error instanceof Error ? error.stack : undefined,
|
|
563
568
|
useCaseName: args.name,
|
|
@@ -725,61 +730,88 @@ class UseCaseBuilder<
|
|
|
725
730
|
: never,
|
|
726
731
|
parseInput: boolean,
|
|
727
732
|
) => {
|
|
728
|
-
const
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
733
|
+
const traceAttributes = {
|
|
734
|
+
"beignet.use_case.name": useCaseName,
|
|
735
|
+
"beignet.use_case.kind": useCaseKind,
|
|
736
|
+
} as const;
|
|
737
|
+
|
|
738
|
+
return await runWithTracing(
|
|
739
|
+
args.ctx,
|
|
740
|
+
{
|
|
741
|
+
name: `beignet.use_case ${useCaseName}`,
|
|
742
|
+
type: "useCase",
|
|
743
|
+
kind: "internal",
|
|
744
|
+
attributes: traceAttributes,
|
|
745
|
+
metricAttributes: traceAttributes,
|
|
746
|
+
},
|
|
747
|
+
async () => {
|
|
748
|
+
const startedAt = Date.now();
|
|
749
|
+
const instrumentation = instrumented
|
|
750
|
+
? startUseCaseRunInstrumentation({
|
|
751
|
+
ctx: args.ctx,
|
|
752
|
+
name: useCaseName,
|
|
753
|
+
kind: useCaseKind,
|
|
754
|
+
})
|
|
755
|
+
: undefined;
|
|
756
|
+
onRun?.({
|
|
732
757
|
name: useCaseName,
|
|
733
758
|
kind: useCaseKind,
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
759
|
+
phase: "start",
|
|
760
|
+
ctx: args.ctx,
|
|
761
|
+
});
|
|
762
|
+
|
|
763
|
+
try {
|
|
764
|
+
const parsedInput =
|
|
765
|
+
parseInput && validation.input
|
|
766
|
+
? await parseSchema(
|
|
767
|
+
inputSchema,
|
|
768
|
+
args.input,
|
|
769
|
+
useCaseName,
|
|
770
|
+
"input",
|
|
771
|
+
)
|
|
772
|
+
: (args.input as SchemaOutput<InputSchema>);
|
|
773
|
+
|
|
774
|
+
const rawResult = await fn({
|
|
775
|
+
ctx: args.ctx,
|
|
776
|
+
input: parsedInput,
|
|
777
|
+
events: eventHelpers,
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
const result = validation.output
|
|
781
|
+
? await parseSchema(
|
|
782
|
+
outputSchema,
|
|
783
|
+
rawResult,
|
|
784
|
+
useCaseName,
|
|
785
|
+
"output",
|
|
786
|
+
)
|
|
787
|
+
: (rawResult as SchemaOutput<OutputSchema>);
|
|
788
|
+
|
|
789
|
+
const durationMs = Date.now() - startedAt;
|
|
790
|
+
instrumentation?.end(durationMs);
|
|
791
|
+
onRun?.({
|
|
792
|
+
name: useCaseName,
|
|
793
|
+
kind: useCaseKind,
|
|
794
|
+
phase: "end",
|
|
795
|
+
durationMs,
|
|
796
|
+
ctx: args.ctx,
|
|
797
|
+
});
|
|
798
|
+
|
|
799
|
+
return result;
|
|
800
|
+
} catch (err) {
|
|
801
|
+
const durationMs = Date.now() - startedAt;
|
|
802
|
+
instrumentation?.error(durationMs, err);
|
|
803
|
+
onRun?.({
|
|
804
|
+
name: useCaseName,
|
|
805
|
+
kind: useCaseKind,
|
|
806
|
+
phase: "error",
|
|
807
|
+
durationMs,
|
|
808
|
+
error: err,
|
|
809
|
+
ctx: args.ctx,
|
|
810
|
+
});
|
|
811
|
+
throw err;
|
|
812
|
+
}
|
|
813
|
+
},
|
|
814
|
+
);
|
|
783
815
|
};
|
|
784
816
|
|
|
785
817
|
type RunArgs = Parameters<typeof execute>[0];
|
package/src/events/index.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
import { runWithResolvedTracingContext } from "../tracing/execution.js";
|
|
3
|
+
import type { TracingPort } from "../tracing/index.js";
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* Any Standard Schema compatible validator.
|
|
@@ -160,6 +162,11 @@ export interface RegisterListenersOptions<Ctx> {
|
|
|
160
162
|
* Static listener context or factory evaluated for each delivered event.
|
|
161
163
|
*/
|
|
162
164
|
ctx?: Ctx | (() => MaybePromise<Ctx>);
|
|
165
|
+
/**
|
|
166
|
+
* Runtime tracing port used to start the listener span before a lazy context
|
|
167
|
+
* factory runs.
|
|
168
|
+
*/
|
|
169
|
+
tracing?: TracingPort;
|
|
163
170
|
/**
|
|
164
171
|
* Called when a listener fails. When omitted, listener errors are rethrown to
|
|
165
172
|
* the event bus subscription callback.
|
|
@@ -243,16 +250,6 @@ async function parsePayload<Schema extends StandardSchemaV1>(
|
|
|
243
250
|
throw new Error("Invalid Standard Schema result: missing value");
|
|
244
251
|
}
|
|
245
252
|
|
|
246
|
-
async function resolveCtx<Ctx>(
|
|
247
|
-
ctx: Ctx | (() => MaybePromise<Ctx>) | undefined,
|
|
248
|
-
): Promise<Ctx> {
|
|
249
|
-
if (typeof ctx === "function") {
|
|
250
|
-
return (ctx as () => MaybePromise<Ctx>)();
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return ctx as Ctx;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
253
|
/**
|
|
257
254
|
* Define a typed event.
|
|
258
255
|
*
|
|
@@ -326,10 +323,26 @@ export function registerListeners<Ctx>(
|
|
|
326
323
|
eventBus.subscribe(listener.event, async (rawPayload) => {
|
|
327
324
|
try {
|
|
328
325
|
const payload = await parseEventPayload(listener.event, rawPayload);
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
326
|
+
const traceAttributes = {
|
|
327
|
+
"beignet.listener.name": listener.name,
|
|
328
|
+
"beignet.event.name": listener.event.name,
|
|
329
|
+
} as const;
|
|
330
|
+
await runWithResolvedTracingContext({
|
|
331
|
+
tracing: options.tracing,
|
|
332
|
+
ctx: options.ctx as Ctx | (() => MaybePromise<Ctx>),
|
|
333
|
+
operation: {
|
|
334
|
+
name: `beignet.listener ${listener.name}`,
|
|
335
|
+
type: "listener",
|
|
336
|
+
kind: "consumer",
|
|
337
|
+
attributes: traceAttributes,
|
|
338
|
+
metricAttributes: traceAttributes,
|
|
339
|
+
},
|
|
340
|
+
run: (ctx) =>
|
|
341
|
+
listener.handle({
|
|
342
|
+
event: listener.event,
|
|
343
|
+
payload,
|
|
344
|
+
ctx,
|
|
345
|
+
}),
|
|
333
346
|
});
|
|
334
347
|
} catch (error) {
|
|
335
348
|
options.onError?.(error, listener);
|