@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":"instrumentation.js","sourceRoot":"","sources":["../../src/providers/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/providers/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAwYnE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,QAAQ,IAAI,KAAK;QACjB,QAAQ,IAAI,KAAK;QACjB,WAAW,IAAI,KAAK;QACpB,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;QAClC,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;QAClC,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,CACtC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAc;IAEd,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAC1C,KAAc;IAEd,IAAI,yBAAyB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACxD,IAAI,6BAA6B,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kCAAkC,CAChD,MAAqC;IAErC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,UAAU,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAExC,OAAO,CACL,mCAAmC,CACjC,iBAAiB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CACjE;QACD,mCAAmC,CACjC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACnD,CACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,YAAoB,EAAE,OAAgB;IACjE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,kCAAkC,CACzC,KAAwC,EACxC,YAAoB;IAEpB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAE5C,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;KACrB,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAAqC,EACrC,OAAuC;IAEvC,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC;IAExD,SAAS,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;QAC1C,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,SAAS,MAAM,CAAC,KAAwC;QACtD,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;QACjD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAErD,MAAM,gBAAgB,GACpB,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;YACxC,CAAC,CAAC,KAAK,CAAC;QACZ,MAAM,iBAAiB,GAAG,kCAAkC,CAC1D,gBAAgB,EAChB,OAAO,CAAC,YAAY,CACrB,CAAC;QAEF,IAAI,QAA2C,CAAC;QAChD,IAAI,CAAC;YACH,QAAQ,GAAG,OAAO,CAAC,MAAM;gBACvB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;gBAChD,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,SAAS,MAAM,CAAC,KAA8C;QAC5D,OAAO,MAAM,CAAC;YACZ,GAAG,KAAK;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;YACzC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI;QACJ,SAAS;QACT,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
import type { TracingPort } from "../tracing/index.js";
|
|
2
3
|
/**
|
|
3
4
|
* Any Standard Schema compatible validator.
|
|
4
5
|
*/
|
|
@@ -111,9 +112,7 @@ export interface ScheduleHandleArgs<S extends ScheduleDef, Ctx> {
|
|
|
111
112
|
* Parsed schedule payload.
|
|
112
113
|
*/
|
|
113
114
|
payload: InferSchedulePayload<S>;
|
|
114
|
-
/**
|
|
115
|
-
* Handler context.
|
|
116
|
-
*/
|
|
115
|
+
/** Handler context. */
|
|
117
116
|
ctx: Ctx;
|
|
118
117
|
/**
|
|
119
118
|
* Run metadata.
|
|
@@ -182,10 +181,10 @@ export interface ScheduleRunOptions<Payload = unknown> {
|
|
|
182
181
|
* Arguments for `runSchedule(...)`.
|
|
183
182
|
*/
|
|
184
183
|
export type ScheduleRunArgs<Ctx, Payload = unknown> = ScheduleRunOptions<Payload> & {
|
|
185
|
-
/**
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
184
|
+
/** Handler context or factory resolved inside the schedule span. */
|
|
185
|
+
ctx: Ctx | (() => MaybePromise<Ctx>);
|
|
186
|
+
/** Runtime tracing port used before a lazy context factory runs. */
|
|
187
|
+
tracing?: TracingPort;
|
|
189
188
|
};
|
|
190
189
|
/**
|
|
191
190
|
* Arguments passed to schedule lifecycle hooks.
|
|
@@ -329,6 +328,8 @@ export interface InlineScheduleRunnerOptions<Ctx> {
|
|
|
329
328
|
* Static schedule context or factory evaluated for each run.
|
|
330
329
|
*/
|
|
331
330
|
ctx?: Ctx | (() => MaybePromise<Ctx>);
|
|
331
|
+
/** Runtime tracing port used before a lazy context factory runs. */
|
|
332
|
+
tracing?: TracingPort;
|
|
332
333
|
/**
|
|
333
334
|
* Clock used when run timestamps are not provided.
|
|
334
335
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,IACtD,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,cAAc,GAAG,cAAc;IAE/C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAC1B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,GAAG,GAAG,OAAO,CACb,SAAQ,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,CACZ,IAAI,EAAE,yBAAyB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAC/D,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAC7D,YAAY,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,IAC3D,CAAC,CAAC,SAAS,CAAC,SAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,kBAAkB;IACrE;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG;IAC5D;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,IACtD,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,cAAc,GAAG,cAAc;IAE/C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAC1B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,GAAG,GAAG,OAAO,CACb,SAAQ,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,CACZ,IAAI,EAAE,yBAAyB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAC/D,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAC7D,YAAY,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,IAC3D,CAAC,CAAC,SAAS,CAAC,SAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,kBAAkB;IACrE;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG;IAC5D;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC,uBAAuB;IACvB,GAAG,EAAE,GAAG,CAAC;IACT;;OAEG;IACH,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CACpC,IAAI,SAAS,MAAM,EACnB,OAAO,SAAS,cAAc,EAC9B,GAAG;IAEH;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,CACZ,IAAI,EAAE,yBAAyB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAC/D,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAC7D,YAAY,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO,GAAG,OAAO;IACnD;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CACzB,GAAG,EACH,OAAO,GAAG,OAAO,IACf,kBAAkB,CAAC,OAAO,CAAC,GAAG;IAChC,oEAAoE;IACpE,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,oEAAoE;IACpE,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACxE;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC;;OAEG;IACH,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACpE;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAClC;;OAEG;IACH,GAAG,EAAE,kBAAkB,CAAC;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACxE;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAClC;;OAEG;IACH,GAAG,EAAE,kBAAkB,CAAC;IACxB;;OAEG;IACH,IAAI,EAAE,gBAAgB,CAAC;IACvB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,GAAG;IAC9C;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,oEAAoE;IACpE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C;;OAEG;IACH,sBAAsB,CAAC,EAAE,8BAA8B,CAAC;IACxD;;OAEG;IACH,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EACzD,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAC3D,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EACzD,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACzB,YAAY,CAAC,IAAI,CAAC,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAC7D,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,GAAG,GAAG,OAAO;IAC/C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EACpD,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,GAAG,GAAG,OAAO,CACjD,SAAQ,kBAAkB,CAAC,GAAG,CAAC;CAAG;AAEpC;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,GAAG;IAC5B;;OAEG;IACH,cAAc,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,SAAS,cAAc,EAChE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GACjD,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAEvC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE,CAAC;KAC3C;CAOF;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAmQD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,EACrE,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAIlC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EACH,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAElD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAC5C,OAAO,GAAE,2BAA2B,CAAC,GAAG,CAAM,GAC7C,oBAAoB,CAAC,GAAG,CAAC,CAgE3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,CASrD"}
|
package/dist/schedules/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runWithResolvedTracingContext } from "../tracing/execution.js";
|
|
1
2
|
/**
|
|
2
3
|
* Error thrown when schedule payload validation fails.
|
|
3
4
|
*/
|
|
@@ -82,11 +83,29 @@ function createRunContext(options, now) {
|
|
|
82
83
|
source: options.source,
|
|
83
84
|
};
|
|
84
85
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
function scheduleTraceOperation(schedule, options) {
|
|
87
|
+
const attributes = {
|
|
88
|
+
"beignet.schedule.name": schedule.name,
|
|
89
|
+
...(options.attempt === undefined
|
|
90
|
+
? {}
|
|
91
|
+
: { "beignet.schedule.attempt": options.attempt }),
|
|
92
|
+
...(options.source === undefined
|
|
93
|
+
? {}
|
|
94
|
+
: { "beignet.schedule.source": options.source }),
|
|
95
|
+
};
|
|
96
|
+
const metricAttributes = {
|
|
97
|
+
"beignet.schedule.name": schedule.name,
|
|
98
|
+
...(options.attempt === undefined
|
|
99
|
+
? {}
|
|
100
|
+
: { "beignet.schedule.attempt": options.attempt }),
|
|
101
|
+
};
|
|
102
|
+
return {
|
|
103
|
+
name: `beignet.schedule ${schedule.name}`,
|
|
104
|
+
type: "schedule",
|
|
105
|
+
kind: "consumer",
|
|
106
|
+
attributes,
|
|
107
|
+
metricAttributes,
|
|
108
|
+
};
|
|
90
109
|
}
|
|
91
110
|
async function resolveSchedulePayload(schedule, options, run) {
|
|
92
111
|
const hasExplicitPayload = Object.hasOwn(options, "payload");
|
|
@@ -181,13 +200,20 @@ export async function parseSchedulePayload(schedule, payload) {
|
|
|
181
200
|
* Run one schedule directly with an explicit context.
|
|
182
201
|
*/
|
|
183
202
|
export async function runSchedule(schedule, args) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
await schedule.handle({
|
|
187
|
-
schedule,
|
|
188
|
-
payload,
|
|
203
|
+
await runWithResolvedTracingContext({
|
|
204
|
+
tracing: args.tracing,
|
|
189
205
|
ctx: args.ctx,
|
|
190
|
-
|
|
206
|
+
operation: scheduleTraceOperation(schedule, args),
|
|
207
|
+
run: async (ctx) => {
|
|
208
|
+
const run = createRunContext(args, () => new Date());
|
|
209
|
+
const payload = await resolveSchedulePayload(schedule, args, run);
|
|
210
|
+
await schedule.handle({
|
|
211
|
+
schedule,
|
|
212
|
+
payload,
|
|
213
|
+
ctx,
|
|
214
|
+
run,
|
|
215
|
+
});
|
|
216
|
+
},
|
|
191
217
|
});
|
|
192
218
|
}
|
|
193
219
|
/**
|
|
@@ -207,11 +233,16 @@ export function createInlineScheduleRunner(options = {}) {
|
|
|
207
233
|
hook: "start",
|
|
208
234
|
});
|
|
209
235
|
await runLifecycleHook("start", options.onStart, options.onHookError, lifecycleArgs);
|
|
210
|
-
await
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
run
|
|
236
|
+
await runWithResolvedTracingContext({
|
|
237
|
+
tracing: options.tracing,
|
|
238
|
+
ctx: options.ctx,
|
|
239
|
+
operation: scheduleTraceOperation(schedule, runOptions),
|
|
240
|
+
run: (ctx) => schedule.handle({
|
|
241
|
+
schedule,
|
|
242
|
+
payload: payload,
|
|
243
|
+
ctx,
|
|
244
|
+
run,
|
|
245
|
+
}),
|
|
215
246
|
});
|
|
216
247
|
await recordScheduleEvent(options, schedule, "completed", run, {
|
|
217
248
|
payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export { defaultMapErrorToResponse, type ErrorMappingConfig, type ErrorMappingRe
|
|
|
10
10
|
export { type CtxWithIdempotency, createIdempotencyHooks, type IdempotencyHooksOptions, type IdempotencyPorts, } from "./idempotency.js";
|
|
11
11
|
export { createLoggingHooks, type Logger, type LoggingConfig, } from "./logging.js";
|
|
12
12
|
export { type CtxWithRateLimit, createRateLimitHooks, type RateLimitIpSource, type RateLimitOptions, } from "./rate-limit.js";
|
|
13
|
+
export { applySecurityHeaders, type CsrfFailureReason, type CsrfHooksOptions, type CsrfTokenOptions, createCsrfHooks, createSecurityHeadersHooks, type SecurityHeadersOptions, type StrictTransportSecurityOptions, } from "./security.js";
|
|
13
14
|
/**
|
|
14
15
|
* Flatten hook arrays into a single hook list.
|
|
15
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,eAAe,EACf,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,GACpC,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjE,GAAG,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,GACvE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAE1B"}
|
|
@@ -8,6 +8,7 @@ export { defaultMapErrorToResponse, } from "./errors.js";
|
|
|
8
8
|
export { createIdempotencyHooks, } from "./idempotency.js";
|
|
9
9
|
export { createLoggingHooks, } from "./logging.js";
|
|
10
10
|
export { createRateLimitHooks, } from "./rate-limit.js";
|
|
11
|
+
export { applySecurityHeaders, createCsrfHooks, createSecurityHeadersHooks, } from "./security.js";
|
|
11
12
|
/**
|
|
12
13
|
* Flatten hook arrays into a single hook list.
|
|
13
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAIL,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAEhB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,yBAAyB,EAKzB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,GAG1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,GAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAIL,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAEhB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,yBAAyB,EAKzB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,GAG1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,GAGnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EAIpB,eAAe,EACf,0BAA0B,GAG3B,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAG,KAAqE;IAExE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { RateLimitScope } from "../../contracts/index.js";
|
|
5
5
|
import type { ActivityActor, RateLimitPort } from "../../ports/index.js";
|
|
6
|
+
import { type TrustedProxyClientIpSource, type TrustedProxyConfig } from "../trusted-proxy.js";
|
|
6
7
|
import type { HttpRequestLike, ServerHook } from "../types.js";
|
|
7
8
|
/**
|
|
8
9
|
* Ports required by rate-limit hooks.
|
|
@@ -30,10 +31,11 @@ type EarlyRateLimitScope = Exclude<RateLimitScope, "user">;
|
|
|
30
31
|
* - `"x-forwarded-for-first"`: the first `x-forwarded-for` entry. This value
|
|
31
32
|
* is client-controlled, so only use it when a trusted edge normalizes the
|
|
32
33
|
* header before it reaches the app.
|
|
34
|
+
* - `"x-real-ip"` and `"cf-connecting-ip"`: dedicated platform headers.
|
|
33
35
|
* - A function receives the raw request and returns the client IP, for
|
|
34
|
-
* platform-specific
|
|
36
|
+
* platform-specific resolution.
|
|
35
37
|
*/
|
|
36
|
-
export type RateLimitIpSource = "none" |
|
|
38
|
+
export type RateLimitIpSource = "none" | TrustedProxyClientIpSource;
|
|
37
39
|
/**
|
|
38
40
|
* Options for `createRateLimitHooks(...)`.
|
|
39
41
|
*/
|
|
@@ -61,12 +63,23 @@ export interface RateLimitOptions<Ctx> {
|
|
|
61
63
|
* Resolve the client IP for `ip`-scoped limits.
|
|
62
64
|
*
|
|
63
65
|
* There is no default: when any contract declares an `ip`-scoped rate limit
|
|
64
|
-
* and neither `ipSource
|
|
65
|
-
* fails at startup.
|
|
66
|
-
*
|
|
66
|
+
* and neither `trustedProxy.clientIp`, `ipSource`, nor a custom `earlyKey`
|
|
67
|
+
* is configured, the hook fails at startup. Prefer `trustedProxy.clientIp`
|
|
68
|
+
* for production proxy headers; keep `ipSource` for custom keying or
|
|
69
|
+
* compatibility, or pass `"none"` to explicitly accept one shared
|
|
67
70
|
* `ip:unknown` bucket for all clients.
|
|
68
71
|
*/
|
|
69
72
|
ipSource?: RateLimitIpSource;
|
|
73
|
+
/**
|
|
74
|
+
* Shared trusted-proxy policy used to resolve client IPs when `ipSource` is
|
|
75
|
+
* not set.
|
|
76
|
+
*
|
|
77
|
+
* Configure this only when the app is always behind a platform or reverse
|
|
78
|
+
* proxy that strips or normalizes forwarding headers. For `ip`-scoped rate
|
|
79
|
+
* limits, set `trustedProxy.clientIp` to the header source written by that
|
|
80
|
+
* trusted edge.
|
|
81
|
+
*/
|
|
82
|
+
trustedProxy?: TrustedProxyConfig;
|
|
70
83
|
}
|
|
71
84
|
/**
|
|
72
85
|
* Create metadata-driven rate-limit hooks.
|
|
@@ -81,14 +94,14 @@ export interface RateLimitOptions<Ctx> {
|
|
|
81
94
|
* never sent to clients; denials emit a `rateLimit.denied` instrumentation
|
|
82
95
|
* event that carries the key for operators.
|
|
83
96
|
*
|
|
84
|
-
* `ip`-scoped limits require an explicit `
|
|
85
|
-
* the hook's `validate` phase fails `createServer(...)`
|
|
86
|
-
* registered contract declares an `ip` scope without one,
|
|
87
|
-
* collapsing all clients into a shared `ip:unknown` bucket.
|
|
88
|
-
* later through `server.route(...)` are not visible to
|
|
89
|
-
* enforcing an `ip`-scoped limit without
|
|
90
|
-
* configuration error at request time as a backstop. Pass
|
|
91
|
-
* to explicitly opt in to the shared `ip:unknown` bucket.
|
|
97
|
+
* `ip`-scoped limits require an explicit `trustedProxy.clientIp`, `ipSource`,
|
|
98
|
+
* or custom `earlyKey`: the hook's `validate` phase fails `createServer(...)`
|
|
99
|
+
* startup when a registered contract declares an `ip` scope without one,
|
|
100
|
+
* instead of silently collapsing all clients into a shared `ip:unknown` bucket.
|
|
101
|
+
* Contracts added later through `server.route(...)` are not visible to
|
|
102
|
+
* `validate`, so enforcing an `ip`-scoped limit without a client-IP source
|
|
103
|
+
* throws the same configuration error at request time as a backstop. Pass
|
|
104
|
+
* `ipSource: "none"` to explicitly opt in to the shared `ip:unknown` bucket.
|
|
92
105
|
*
|
|
93
106
|
* @param options - Optional key builders and client-IP source.
|
|
94
107
|
* @returns A server hook backed by `ctx.ports.rateLimit`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/server/hooks/rate-limit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKzE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,KAAK,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAE3D
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/server/hooks/rate-limit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKzE,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,KAAK,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,0BAA0B,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,GAAG;IACnC;;;;OAIG;IACH,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;QACX,GAAG,EAAE,GAAG,CAAC;QACT,GAAG,EAAE,eAAe,CAAC;QACrB,KAAK,EAAE,cAAc,CAAC;KACvB,KAAK,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,GAAG,EAAE,eAAe,CAAC;QACrB,KAAK,EAAE,mBAAmB,CAAC;KAC5B,KAAK,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAmID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,gBAAgB,EAC/D,OAAO,GAAE,gBAAgB,CAAC,GAAG,CAAM,GAClC,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC,CAsFjC"}
|
|
@@ -3,36 +3,25 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { AppError, httpErrors } from "../../errors/index.js";
|
|
5
5
|
import { createProviderInstrumentation, } from "../../providers/index.js";
|
|
6
|
-
|
|
7
|
-
const header = req.headers.get("x-forwarded-for") ?? "";
|
|
8
|
-
return header
|
|
9
|
-
.split(",")
|
|
10
|
-
.map((entry) => entry.trim())
|
|
11
|
-
.filter(Boolean);
|
|
12
|
-
}
|
|
6
|
+
import { resolveTrustedClientIp, } from "../trusted-proxy.js";
|
|
13
7
|
function resolveClientIp(req, ipSource) {
|
|
14
|
-
if (typeof ipSource === "function") {
|
|
15
|
-
return ipSource(req) || undefined;
|
|
16
|
-
}
|
|
17
8
|
if (ipSource === "none") {
|
|
18
9
|
return undefined;
|
|
19
10
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
: entries[entries.length - 1];
|
|
11
|
+
return resolveTrustedClientIp(req, ipSource);
|
|
12
|
+
}
|
|
13
|
+
function hasTrustedProxyClientIp(config) {
|
|
14
|
+
if (!config)
|
|
15
|
+
return false;
|
|
16
|
+
return Boolean(config.clientIp);
|
|
27
17
|
}
|
|
28
18
|
function formatContractNames(names) {
|
|
29
19
|
return names.map((name) => `"${name}"`).join(", ");
|
|
30
20
|
}
|
|
31
21
|
function ipSourceConfigurationError(contractNames) {
|
|
32
|
-
return new Error(`createRateLimitHooks(...) has no
|
|
33
|
-
`Set ipSource to
|
|
34
|
-
`"x-forwarded-for-first"
|
|
35
|
-
`a function for platform-specific headers such as cf-connecting-ip, ` +
|
|
22
|
+
return new Error(`createRateLimitHooks(...) has no client IP source configured, but contract(s) ${contractNames} declare an "ip"-scoped rate limit. ` +
|
|
23
|
+
`Set trustedProxy.clientIp or ipSource to a header source written by a trusted edge, ` +
|
|
24
|
+
`for example "x-forwarded-for-last", "x-forwarded-for-first", "x-real-ip", "cf-connecting-ip", or a custom function, ` +
|
|
36
25
|
`or "none" to explicitly accept one shared ip:unknown bucket for all clients.`);
|
|
37
26
|
}
|
|
38
27
|
function emitUserKey(userId) {
|
|
@@ -106,30 +95,35 @@ async function enforceRateLimit(ports, args) {
|
|
|
106
95
|
* never sent to clients; denials emit a `rateLimit.denied` instrumentation
|
|
107
96
|
* event that carries the key for operators.
|
|
108
97
|
*
|
|
109
|
-
* `ip`-scoped limits require an explicit `
|
|
110
|
-
* the hook's `validate` phase fails `createServer(...)`
|
|
111
|
-
* registered contract declares an `ip` scope without one,
|
|
112
|
-
* collapsing all clients into a shared `ip:unknown` bucket.
|
|
113
|
-
* later through `server.route(...)` are not visible to
|
|
114
|
-
* enforcing an `ip`-scoped limit without
|
|
115
|
-
* configuration error at request time as a backstop. Pass
|
|
116
|
-
* to explicitly opt in to the shared `ip:unknown` bucket.
|
|
98
|
+
* `ip`-scoped limits require an explicit `trustedProxy.clientIp`, `ipSource`,
|
|
99
|
+
* or custom `earlyKey`: the hook's `validate` phase fails `createServer(...)`
|
|
100
|
+
* startup when a registered contract declares an `ip` scope without one,
|
|
101
|
+
* instead of silently collapsing all clients into a shared `ip:unknown` bucket.
|
|
102
|
+
* Contracts added later through `server.route(...)` are not visible to
|
|
103
|
+
* `validate`, so enforcing an `ip`-scoped limit without a client-IP source
|
|
104
|
+
* throws the same configuration error at request time as a backstop. Pass
|
|
105
|
+
* `ipSource: "none"` to explicitly opt in to the shared `ip:unknown` bucket.
|
|
117
106
|
*
|
|
118
107
|
* @param options - Optional key builders and client-IP source.
|
|
119
108
|
* @returns A server hook backed by `ctx.ports.rateLimit`.
|
|
120
109
|
*/
|
|
121
110
|
export function createRateLimitHooks(options = {}) {
|
|
122
|
-
const { ipSource } = options;
|
|
111
|
+
const { ipSource, trustedProxy } = options;
|
|
123
112
|
const getClientIp = (req, contractName) => {
|
|
124
|
-
if (ipSource
|
|
125
|
-
|
|
113
|
+
if (ipSource !== undefined) {
|
|
114
|
+
return resolveClientIp(req, ipSource);
|
|
115
|
+
}
|
|
116
|
+
if (hasTrustedProxyClientIp(trustedProxy) && trustedProxy) {
|
|
117
|
+
return resolveTrustedClientIp(req, trustedProxy.clientIp);
|
|
126
118
|
}
|
|
127
|
-
|
|
119
|
+
throw ipSourceConfigurationError(formatContractNames([contractName]));
|
|
128
120
|
};
|
|
129
121
|
return {
|
|
130
122
|
name: "rate-limit",
|
|
131
123
|
validate: ({ contracts }) => {
|
|
132
|
-
if (ipSource !== undefined ||
|
|
124
|
+
if (ipSource !== undefined ||
|
|
125
|
+
hasTrustedProxyClientIp(trustedProxy) ||
|
|
126
|
+
options.earlyKey) {
|
|
133
127
|
return;
|
|
134
128
|
}
|
|
135
129
|
const ipScoped = contracts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/server/hooks/rate-limit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EACL,6BAA6B,GAE9B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/server/hooks/rate-limit.ts"],"names":[],"mappings":"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"}
|