@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,OAAO,EAAE,oBAAoB,EAC7B,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAEH;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAO1E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG,IAAI,CAKP;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,SAAS;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,OAAO,EAAE,oBAAoB,EAC7B,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAEH;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAO1E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG,IAAI,CAKP;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,SAAS;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,KAAK,EAAE,KAAK,GAAG,KAAK,CAarB"}
|
|
@@ -84,7 +84,10 @@ export function inheritActiveRequestContext(event) {
|
|
|
84
84
|
...event,
|
|
85
85
|
requestId: event.requestId ?? context.requestId,
|
|
86
86
|
traceId: event.traceId ?? context.traceId,
|
|
87
|
+
spanId: event.spanId ?? context.spanId,
|
|
88
|
+
parentSpanId: event.parentSpanId ?? context.parentSpanId,
|
|
87
89
|
traceparent: event.traceparent ?? context.traceparent,
|
|
90
|
+
tracestate: event.tracestate ?? context.tracestate,
|
|
88
91
|
};
|
|
89
92
|
}
|
|
90
93
|
//# sourceMappingURL=request-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA6BrD,MAAM,oBAAoB,GAAG,IAAI,iBAAiB,EAE/C,CAAC;AAEJ;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA6B;IACrE,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAA6B,EAC7B,EAAW;IAEX,OAAO,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,OAAO,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QAC3D,CAAC,CAAE,KAAuB;QAC1B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,MAAM,GAAI,GAA4B,CAAC,MAAM,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,OAAQ,MAA2B,CAAC,EAAE,KAAK,QAAQ;QACxD,CAAC,CAAE,MAAyB;QAC5B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAGxC;IACC,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC;IAChD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,QAAQ,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CASzC,KAAY;IACZ,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;QAC/C,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QACzC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QACtC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY;QACxD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;QACrD,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { EventPayloadDef, ListenerDef } from "../events/index.js";
|
|
2
|
+
import type { JobDef } from "../jobs/index.js";
|
|
3
|
+
import type { OutboxRegistry } from "../outbox/index.js";
|
|
4
|
+
import type { ScheduleDef } from "../schedules/index.js";
|
|
5
|
+
import type { TaskDef } from "../tasks/index.js";
|
|
6
|
+
export type RuntimeIntegrityArtifact = "listener" | "schedule" | "task" | "outboxEvent" | "outboxJob";
|
|
7
|
+
export type RuntimeIntegrityFindingCode = "missing_listener_registration" | "missing_schedule_registration" | "missing_task_registration" | "missing_outbox_event_registration" | "missing_outbox_job_registration" | "duplicate_runtime_manifest_entry" | "duplicate_runtime_registry_entry";
|
|
8
|
+
export type RuntimeIntegrityFindingLocation = "manifest" | "registry";
|
|
9
|
+
export interface RuntimeIntegrityFinding {
|
|
10
|
+
readonly code: RuntimeIntegrityFindingCode;
|
|
11
|
+
readonly artifact: RuntimeIntegrityArtifact;
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly message: string;
|
|
14
|
+
readonly location?: RuntimeIntegrityFindingLocation;
|
|
15
|
+
}
|
|
16
|
+
export interface RuntimeIntegrityResult {
|
|
17
|
+
readonly ok: boolean;
|
|
18
|
+
readonly findings: readonly RuntimeIntegrityFinding[];
|
|
19
|
+
}
|
|
20
|
+
export interface RuntimeOutboxManifest {
|
|
21
|
+
readonly events?: readonly EventPayloadDef[];
|
|
22
|
+
readonly jobs?: readonly JobDef[];
|
|
23
|
+
}
|
|
24
|
+
export interface RuntimeManifestInput {
|
|
25
|
+
readonly listeners?: readonly ListenerDef[];
|
|
26
|
+
readonly schedules?: readonly ScheduleDef[];
|
|
27
|
+
readonly tasks?: readonly TaskDef[];
|
|
28
|
+
readonly outbox?: RuntimeOutboxManifest;
|
|
29
|
+
}
|
|
30
|
+
export interface RuntimeManifest {
|
|
31
|
+
readonly listeners: readonly ListenerDef[];
|
|
32
|
+
readonly schedules: readonly ScheduleDef[];
|
|
33
|
+
readonly tasks: readonly TaskDef[];
|
|
34
|
+
readonly outbox: {
|
|
35
|
+
readonly events: readonly EventPayloadDef[];
|
|
36
|
+
readonly jobs: readonly JobDef[];
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface RuntimeRegistriesInput {
|
|
40
|
+
readonly listeners?: readonly ListenerDef[];
|
|
41
|
+
readonly schedules?: readonly ScheduleDef[];
|
|
42
|
+
readonly tasks?: readonly TaskDef[];
|
|
43
|
+
readonly outbox?: OutboxRegistry;
|
|
44
|
+
}
|
|
45
|
+
export interface RuntimeRegistries {
|
|
46
|
+
readonly listeners: readonly ListenerDef[];
|
|
47
|
+
readonly schedules: readonly ScheduleDef[];
|
|
48
|
+
readonly tasks: readonly TaskDef[];
|
|
49
|
+
readonly outbox?: OutboxRegistry;
|
|
50
|
+
}
|
|
51
|
+
export type RuntimeIntegrityMode = "error" | "warn";
|
|
52
|
+
export interface RuntimeIntegrityLogger {
|
|
53
|
+
warn(message: string): void;
|
|
54
|
+
}
|
|
55
|
+
export interface CreateRuntimeIntegrityOptions {
|
|
56
|
+
readonly manifest: RuntimeManifest;
|
|
57
|
+
readonly registries: RuntimeRegistries;
|
|
58
|
+
/**
|
|
59
|
+
* How to handle integrity findings.
|
|
60
|
+
*
|
|
61
|
+
* @default "error"
|
|
62
|
+
*/
|
|
63
|
+
readonly mode?: RuntimeIntegrityMode;
|
|
64
|
+
/**
|
|
65
|
+
* Logger used when `mode` is `"warn"`.
|
|
66
|
+
*
|
|
67
|
+
* @default console
|
|
68
|
+
*/
|
|
69
|
+
readonly logger?: RuntimeIntegrityLogger;
|
|
70
|
+
}
|
|
71
|
+
export interface RuntimeIntegrityCheck {
|
|
72
|
+
readonly kind: "runtime-integrity";
|
|
73
|
+
check(): RuntimeIntegrityResult;
|
|
74
|
+
}
|
|
75
|
+
export declare class RuntimeIntegrityError extends Error {
|
|
76
|
+
readonly findings: readonly RuntimeIntegrityFinding[];
|
|
77
|
+
constructor(findings: readonly RuntimeIntegrityFinding[]);
|
|
78
|
+
}
|
|
79
|
+
export declare function defineRuntimeManifest(input: RuntimeManifestInput): RuntimeManifest;
|
|
80
|
+
export declare function defineRuntimeRegistries(input: RuntimeRegistriesInput): RuntimeRegistries;
|
|
81
|
+
export declare function inspectRuntimeIntegrity(manifest: RuntimeManifest, registries: RuntimeRegistries): RuntimeIntegrityResult;
|
|
82
|
+
export declare function createRuntimeIntegrity(options: CreateRuntimeIntegrityOptions): RuntimeIntegrityCheck;
|
|
83
|
+
export declare function runRuntimeIntegrityCheck(check: RuntimeIntegrityCheck | undefined): RuntimeIntegrityResult | undefined;
|
|
84
|
+
//# sourceMappingURL=runtime-integrity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-integrity.d.ts","sourceRoot":"","sources":["../../src/server/runtime-integrity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
export class RuntimeIntegrityError extends Error {
|
|
2
|
+
findings;
|
|
3
|
+
constructor(findings) {
|
|
4
|
+
super(formatRuntimeIntegrityFailure(findings));
|
|
5
|
+
this.name = "RuntimeIntegrityError";
|
|
6
|
+
this.findings = findings;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function defineRuntimeManifest(input) {
|
|
10
|
+
return {
|
|
11
|
+
listeners: input.listeners ?? [],
|
|
12
|
+
schedules: input.schedules ?? [],
|
|
13
|
+
tasks: input.tasks ?? [],
|
|
14
|
+
outbox: {
|
|
15
|
+
events: input.outbox?.events ?? [],
|
|
16
|
+
jobs: input.outbox?.jobs ?? [],
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function defineRuntimeRegistries(input) {
|
|
21
|
+
return {
|
|
22
|
+
listeners: input.listeners ?? [],
|
|
23
|
+
schedules: input.schedules ?? [],
|
|
24
|
+
tasks: input.tasks ?? [],
|
|
25
|
+
outbox: input.outbox,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function inspectRuntimeIntegrity(manifest, registries) {
|
|
29
|
+
const configs = [
|
|
30
|
+
{
|
|
31
|
+
artifact: "listener",
|
|
32
|
+
label: "listener",
|
|
33
|
+
manifestNames: namesFromDefinitions(manifest.listeners),
|
|
34
|
+
registryNames: namesFromDefinitions(registries.listeners),
|
|
35
|
+
missingCode: "missing_listener_registration",
|
|
36
|
+
registryDescription: "runtime registries.listeners",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
artifact: "schedule",
|
|
40
|
+
label: "schedule",
|
|
41
|
+
manifestNames: namesFromDefinitions(manifest.schedules),
|
|
42
|
+
registryNames: namesFromDefinitions(registries.schedules),
|
|
43
|
+
missingCode: "missing_schedule_registration",
|
|
44
|
+
registryDescription: "runtime registries.schedules",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
artifact: "task",
|
|
48
|
+
label: "task",
|
|
49
|
+
manifestNames: namesFromDefinitions(manifest.tasks),
|
|
50
|
+
registryNames: namesFromDefinitions(registries.tasks),
|
|
51
|
+
missingCode: "missing_task_registration",
|
|
52
|
+
registryDescription: "runtime registries.tasks",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
artifact: "outboxEvent",
|
|
56
|
+
label: "outbox event",
|
|
57
|
+
manifestNames: namesFromDefinitions(manifest.outbox.events),
|
|
58
|
+
registryNames: namesFromMap(registries.outbox?.events),
|
|
59
|
+
missingCode: "missing_outbox_event_registration",
|
|
60
|
+
registryDescription: "runtime registries.outbox.events",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
artifact: "outboxJob",
|
|
64
|
+
label: "outbox job",
|
|
65
|
+
manifestNames: namesFromDefinitions(manifest.outbox.jobs),
|
|
66
|
+
registryNames: namesFromMap(registries.outbox?.jobs),
|
|
67
|
+
missingCode: "missing_outbox_job_registration",
|
|
68
|
+
registryDescription: "runtime registries.outbox.jobs",
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
const findings = configs.flatMap((config) => inspectArtifactIntegrity(config));
|
|
72
|
+
return {
|
|
73
|
+
ok: findings.length === 0,
|
|
74
|
+
findings,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function createRuntimeIntegrity(options) {
|
|
78
|
+
const mode = options.mode ?? "error";
|
|
79
|
+
const logger = options.logger ?? console;
|
|
80
|
+
return {
|
|
81
|
+
kind: "runtime-integrity",
|
|
82
|
+
check() {
|
|
83
|
+
const result = inspectRuntimeIntegrity(options.manifest, options.registries);
|
|
84
|
+
if (result.ok)
|
|
85
|
+
return result;
|
|
86
|
+
if (mode === "warn") {
|
|
87
|
+
logger.warn(`[beignet] ${formatRuntimeIntegrityFailure(result.findings)}`);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
throw new RuntimeIntegrityError(result.findings);
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export function runRuntimeIntegrityCheck(check) {
|
|
95
|
+
return check?.check();
|
|
96
|
+
}
|
|
97
|
+
function inspectArtifactIntegrity(config) {
|
|
98
|
+
const findings = [];
|
|
99
|
+
const manifestDuplicates = duplicateNames(config.manifestNames);
|
|
100
|
+
const registryDuplicates = duplicateNames(config.registryNames);
|
|
101
|
+
for (const name of manifestDuplicates) {
|
|
102
|
+
findings.push({
|
|
103
|
+
code: "duplicate_runtime_manifest_entry",
|
|
104
|
+
artifact: config.artifact,
|
|
105
|
+
name,
|
|
106
|
+
location: "manifest",
|
|
107
|
+
message: `Duplicate ${config.label} "${name}" in runtime manifest.`,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
for (const name of registryDuplicates) {
|
|
111
|
+
findings.push({
|
|
112
|
+
code: "duplicate_runtime_registry_entry",
|
|
113
|
+
artifact: config.artifact,
|
|
114
|
+
name,
|
|
115
|
+
location: "registry",
|
|
116
|
+
message: `Duplicate ${config.label} "${name}" in ${config.registryDescription}.`,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
const registryNameSet = new Set(config.registryNames);
|
|
120
|
+
for (const name of uniqueNames(config.manifestNames)) {
|
|
121
|
+
if (registryNameSet.has(name))
|
|
122
|
+
continue;
|
|
123
|
+
findings.push({
|
|
124
|
+
code: config.missingCode,
|
|
125
|
+
artifact: config.artifact,
|
|
126
|
+
name,
|
|
127
|
+
message: `Missing ${config.label} registration "${name}": declared in runtime manifest but not present in ${config.registryDescription}.`,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return findings;
|
|
131
|
+
}
|
|
132
|
+
function namesFromDefinitions(definitions) {
|
|
133
|
+
return (definitions ?? []).map((definition) => definition.name);
|
|
134
|
+
}
|
|
135
|
+
function namesFromMap(definitions) {
|
|
136
|
+
return [...(definitions?.keys() ?? [])];
|
|
137
|
+
}
|
|
138
|
+
function duplicateNames(names) {
|
|
139
|
+
const seen = new Set();
|
|
140
|
+
const duplicates = new Set();
|
|
141
|
+
for (const name of names) {
|
|
142
|
+
if (seen.has(name)) {
|
|
143
|
+
duplicates.add(name);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
seen.add(name);
|
|
147
|
+
}
|
|
148
|
+
return [...duplicates].sort();
|
|
149
|
+
}
|
|
150
|
+
function uniqueNames(names) {
|
|
151
|
+
return [...new Set(names)].sort();
|
|
152
|
+
}
|
|
153
|
+
function formatRuntimeIntegrityFailure(findings) {
|
|
154
|
+
const summary = `Runtime integrity check failed with ${findings.length} finding${findings.length === 1 ? "" : "s"}.`;
|
|
155
|
+
const details = findings
|
|
156
|
+
.map((finding) => `- [${finding.code}] ${finding.message}`)
|
|
157
|
+
.join("\n");
|
|
158
|
+
return `${summary}\n${details}`;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=runtime-integrity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-integrity.js","sourceRoot":"","sources":["../../src/server/runtime-integrity.ts"],"names":[],"mappings":"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"}
|
package/dist/server/server.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { ServerContextConfig, ServiceContextInputArgs } from "./context.js"
|
|
|
6
6
|
import type { ContractLike, ResolveContract } from "./contract-like.js";
|
|
7
7
|
import type { AddedCtxFromHooks, Handler, HttpRequestLike, HttpResponse, RouteHook, ServerCaughtErrorHook, ServerHook, ServerUnhandledErrorMapper } from "./http.js";
|
|
8
8
|
import type { ServerInstrumentationOptions } from "./instrumentation.js";
|
|
9
|
+
import type { RuntimeIntegrityCheck } from "./runtime-integrity.js";
|
|
9
10
|
import type { AnyUseCaseLike, AnyUseCaseRouteDef, UseCaseRouteDef, ValidatedRouteInputs } from "./use-case-route.js";
|
|
10
11
|
/**
|
|
11
12
|
* Route registration that connects a contract to the handler implementing it.
|
|
@@ -156,6 +157,15 @@ export type CreateServerOptions<Ctx, Ports extends AnyPorts, ServiceInput = void
|
|
|
156
157
|
* Server hooks that wrap every registered route.
|
|
157
158
|
*/
|
|
158
159
|
hooks?: ServerHook<Ctx, Ports & InferProviderPorts<Providers>>[];
|
|
160
|
+
/**
|
|
161
|
+
* Optional pure startup check for app workflow registrations.
|
|
162
|
+
*
|
|
163
|
+
* Runtime integrity compares app-declared workflow artifacts against the
|
|
164
|
+
* registries passed to runtime entrypoints. It performs no filesystem,
|
|
165
|
+
* provider, database, network, worker, or background-loop work, so it is safe
|
|
166
|
+
* to run during serverless cold starts.
|
|
167
|
+
*/
|
|
168
|
+
integrity?: RuntimeIntegrityCheck;
|
|
159
169
|
/**
|
|
160
170
|
* Server-owned request instrumentation.
|
|
161
171
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,uBAAuB,CAAC;AAqB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQlD,OAAO,EAEL,KAAK,kBAAkB,EAIvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,uBAAuB,CAAC;AAqB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQlD,OAAO,EAEL,KAAK,kBAAkB,EAIvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAEV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,KAAK,EACV,iBAAiB,EACjB,OAAO,EAEP,eAAe,EACf,YAAY,EAIZ,SAAS,EACT,qBAAqB,EACrB,UAAU,EACV,0BAA0B,EAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAoBzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAM7B;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CACzB,GAAG,EACH,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,SAAS,CAClE,GAAG,EACH,MAAM,CACP,EAAE,IACD;IACF;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAClB,GAAG,EACH,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,SAAS,CAClE,GAAG,EACH,MAAM,CACP,EAAE,IACD,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAG/E,KAAK,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAGtC,KAAK,aAAa,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAG1D,KAAK,mBAAmB,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnD,QAAA,MAAM,gBAAgB,wBAAwB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CACpB,GAAG,EACH,MAAM,SAAS,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,IAC5D;IACF;;OAEG;IACH,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;IAC1C;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,UAAU,CAAC,GAAG,IACf,mBAAmB,CAAC,GAAG,CAAC,GACxB,WAAW,GACX,UAAU,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;AAE5C,KAAK,oBAAoB,CAAC,GAAG,IACzB,aAAa,CAAC,GAAG,CAAC,GAClB,UAAU,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;AAE5C,KAAK,iBAAiB,CAAC,GAAG,IAAI;IAC5B,CACE,KAAK,CAAC,UAAU,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,EACxE,KAAK,CAAC,CAAC,SAAS,SAAS,aAAa,CACpC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CACpC,EAAE,GAAG,SAAS,aAAa,CAAC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,EACnE,KAAK,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1E,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvB,CACE,KAAK,CAAC,UAAU,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,EACxE,KAAK,CAAC,CAAC,SAAS,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EAAE,EAC/D,KAAK,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1E,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,KAAK,eAAe,CAAC,KAAK,IACxB,KAAK,SAAS,UAAU,CAAC,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,GAC9C,MAAM,GACN,KAAK,SAAS,WAAW,GACvB,SAAS,CAAC,KAAK,CAAC,GAChB,SAAS,EAAE,CAAC;AAEpB,KAAK,kBAAkB,CAAC,MAAM,SAAS,SAAS,OAAO,EAAE,IACvD,MAAM,SAAS,MAAM,CAAC,QAAQ,CAAC,GAC3B,SAAS,WAAW,EAAE,GACtB,MAAM,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAClD,SAAS,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GACjE,SAAS,EAAE,CAAC;AAEpB,KAAK,sBAAsB,CAEzB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAC1C;IACF,QAAQ,EAAE,KAAK,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,CAE9D,GAAG,EACH,MAAM,KAAK,CACZ,GACG,eAAe,CAAC,KAAK,CAAC,GACtB,KAAK;CACV,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG;KAE3B,KAAK,SAAS,YAAY,EAC1B,EAAE,SAAS,cAAc,QACnB,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,uBAE9C,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,GAC5C,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;KAEvC,KAAK,SAAS,YAAY,QACpB,KAAK,SAAS,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,uBAE9C,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GACxC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;EAMtC;AAED;;;;;;GAMG;AACH,KAAK,kBAAkB,GAAG,eAAe,CACvC,OAAO,EAEP,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,QAAQ,EAER,GAAG,EAEH,GAAG,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAC7B,GAAG,EACH,KAAK,SAAS,QAAQ,EACtB,YAAY,GAAG,IAAI,EAEnB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC5E,SAAS,SAAS,SAAS,kBAAkB,EAAE,GAAG,SAAS,EAAE,IAC3D;IACF;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,OAAO,EAAE,mBAAmB,CAC1B,GAAG,EACH,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,EACrC,YAAY,CACb,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IACjE;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,4BAA4B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5D;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7C;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C;;OAEG;IACH,iBAAiB,CAAC,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC;CACrD,CAAC;AAEF,UAAU,YAAY,CAAC,GAAG,EAAE,CAAC,SAAS,kBAAkB;IACtD,MAAM,EAAE,CACN,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAChB,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,GAAG;IAClC,MAAM,EAAE,CACN,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,KACjC,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAC7B,GAAG,EACH,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjC,YAAY,GAAG,IAAI;IAEnB;;OAEG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD;;OAEG;IACH,KAAK,EAAE,CAAC,KAAK,SAAS,YAAY,EAChC,YAAY,EAAE,KAAK,KAChB,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC;IACvD;;;;;OAKG;IACH,oBAAoB,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D;;;;;;;;;;;OAWG;IACH,oBAAoB,EAAE,CACpB,GAAG,IAAI,EAAE,uBAAuB,CAAC,YAAY,CAAC,KAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB;;;;;;;;OAQG;IACH,iBAAiB,EAAE,CAAC,CAAC,EACnB,GAAG,IAAI,EAAE;QACP,GAAG,uBAAuB,CAAC,YAAY,CAAC;QACxC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;KACjC,KACE,OAAO,CAAC,CAAC,CAAC,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AA+uDD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,GAAG,EACH,KAAK,SAAS,QAAQ,EACtB,YAAY,GAAG,IAAI,EAEnB,MAAM,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC5E,SAAS,SAAS,SAAS,kBAAkB,EAAE,GAAG,SAAS,EAAE,EAE7D,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,GACxE,OAAO,CACR,cAAc,CAAC,GAAG,EAAE,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CACzE,CAufA;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EACH,KAAK,CAAC,CAAC,SACL,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnE,wBAAgB,YAAY,CAC1B,GAAG,EACH,KAAK,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,EACvE,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAuBnE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAEjC,KAAK,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC7C,MAAM,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAItC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAEH,KAAK,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC7E,KAAK,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAC1C,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC"}
|
package/dist/server/server.js
CHANGED
|
@@ -5,6 +5,7 @@ import { IdempotencyConflictError, IdempotencyInProgressError, } from "../idempo
|
|
|
5
5
|
import { runWithMemoScope, } from "../memo/index.js";
|
|
6
6
|
import { AuthUnauthorizedError, EntitlementRequiredError, GateAuthorizationError, isUnboundPort, TenantRequiredError, } from "../ports/index.js";
|
|
7
7
|
import { createProviderInstrumentation, resolveProviderInstrumentationPort, } from "../providers/index.js";
|
|
8
|
+
import { parseTraceparent, resolveTracingPort, runWithTracing, } from "../tracing/index.js";
|
|
8
9
|
import { createContextFinalizer, resolveServerContext } from "./context.js";
|
|
9
10
|
import { resolveContract } from "./contract-like.js";
|
|
10
11
|
import { getRequestIdFromContext } from "./hooks/utils.js";
|
|
@@ -12,6 +13,7 @@ import { createServerInstrumentation } from "./instrumentation.js";
|
|
|
12
13
|
import { getResponseFinalizerHook, } from "./internal-hooks.js";
|
|
13
14
|
import { loadProviderConfig, parseStandardSchema, SchemaValidationError, } from "./providers/index.js";
|
|
14
15
|
import { enterActiveRequestContext, readContextActor, readContextTenant, runWithActiveRequestContext, setActiveRequestIdentity, } from "./request-context.js";
|
|
16
|
+
import { runRuntimeIntegrityCheck } from "./runtime-integrity.js";
|
|
15
17
|
import { createUseCaseRouteHandler, isUseCaseRouteDef, } from "./use-case-route.js";
|
|
16
18
|
const ROUTE_GROUP_KIND = "beignet.route-group";
|
|
17
19
|
/**
|
|
@@ -487,7 +489,7 @@ function createRequestExecutor(
|
|
|
487
489
|
options, finalPorts, contextRuntime, hooks, routeHooks = [], optionsOverrides) {
|
|
488
490
|
const warnedNativeReplacementHooks = new WeakSet();
|
|
489
491
|
const maxRequestBodyBytes = requestBodyLimit(options.requestBody);
|
|
490
|
-
|
|
492
|
+
const executeRequest = async (target, req, preMatchedParams) => {
|
|
491
493
|
const { contract, handler: userHandler } = target;
|
|
492
494
|
let baseCtx;
|
|
493
495
|
let pathValue;
|
|
@@ -1183,6 +1185,57 @@ options, finalPorts, contextRuntime, hooks, routeHooks = [], optionsOverrides) {
|
|
|
1183
1185
|
return withFrameworkErrorOwnerHeader(response, responseOwnerFor(response, result.owner));
|
|
1184
1186
|
}
|
|
1185
1187
|
};
|
|
1188
|
+
return async (target, req, preMatchedParams) => {
|
|
1189
|
+
const tracing = resolveTracingPort(finalPorts);
|
|
1190
|
+
const instrumentationOptions = options.instrumentation === false ? undefined : options.instrumentation;
|
|
1191
|
+
const pathname = (() => {
|
|
1192
|
+
try {
|
|
1193
|
+
return new URL(req.url).pathname;
|
|
1194
|
+
}
|
|
1195
|
+
catch {
|
|
1196
|
+
return req.url;
|
|
1197
|
+
}
|
|
1198
|
+
})();
|
|
1199
|
+
const ignored = (instrumentationOptions?.ignorePaths ?? ["/api/devtools"]).some((prefix) => {
|
|
1200
|
+
const normalized = prefix.replace(/\/+$/, "");
|
|
1201
|
+
return pathname === normalized || pathname.startsWith(`${normalized}/`);
|
|
1202
|
+
});
|
|
1203
|
+
if (!tracing || ignored) {
|
|
1204
|
+
return executeRequest(target, req, preMatchedParams);
|
|
1205
|
+
}
|
|
1206
|
+
const traceContextHeader = instrumentationOptions?.traceContextHeader ?? "traceparent";
|
|
1207
|
+
const active = tracing.current();
|
|
1208
|
+
const parsedTraceparent = traceContextHeader === false
|
|
1209
|
+
? undefined
|
|
1210
|
+
: parseTraceparent(req.headers.get(traceContextHeader));
|
|
1211
|
+
const parent = active
|
|
1212
|
+
? undefined
|
|
1213
|
+
: !parsedTraceparent
|
|
1214
|
+
? undefined
|
|
1215
|
+
: {
|
|
1216
|
+
traceparent: parsedTraceparent.traceparent,
|
|
1217
|
+
tracestate: req.headers.get("tracestate") ?? undefined,
|
|
1218
|
+
};
|
|
1219
|
+
const traceAttributes = {
|
|
1220
|
+
"beignet.contract.name": target.contract.name,
|
|
1221
|
+
"http.request.method": req.method.toUpperCase(),
|
|
1222
|
+
"http.route": target.contract.path,
|
|
1223
|
+
};
|
|
1224
|
+
return await runWithTracing(tracing, {
|
|
1225
|
+
name: `beignet.request ${target.contract.name}`,
|
|
1226
|
+
type: "request",
|
|
1227
|
+
kind: active ? "internal" : "server",
|
|
1228
|
+
parent,
|
|
1229
|
+
attributes: traceAttributes,
|
|
1230
|
+
metricAttributes: traceAttributes,
|
|
1231
|
+
}, async (span) => {
|
|
1232
|
+
const response = await executeRequest(target, req, preMatchedParams);
|
|
1233
|
+
span?.setAttribute("http.response.status_code", response.status);
|
|
1234
|
+
if (response.status >= 500)
|
|
1235
|
+
span?.setStatus("error");
|
|
1236
|
+
return response;
|
|
1237
|
+
});
|
|
1238
|
+
};
|
|
1186
1239
|
}
|
|
1187
1240
|
/**
|
|
1188
1241
|
* Build a memo instrumentation recorder from the app ports, or undefined when
|
|
@@ -1467,6 +1520,7 @@ export async function createServer(options) {
|
|
|
1467
1520
|
throw error;
|
|
1468
1521
|
}
|
|
1469
1522
|
}
|
|
1523
|
+
runRuntimeIntegrityCheck(options.integrity);
|
|
1470
1524
|
try {
|
|
1471
1525
|
for (const provider of providers) {
|
|
1472
1526
|
const cfg = await loadProviderConfig(provider, env, overrides);
|