@beignet/core 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/README.md +785 -43
  3. package/dist/application/index.d.ts +28 -2
  4. package/dist/application/index.d.ts.map +1 -1
  5. package/dist/application/index.js +140 -12
  6. package/dist/application/index.js.map +1 -1
  7. package/dist/client/client.d.ts +2 -2
  8. package/dist/client/client.d.ts.map +1 -1
  9. package/dist/client/client.js +136 -48
  10. package/dist/client/client.js.map +1 -1
  11. package/dist/client/error-messages.d.ts +14 -0
  12. package/dist/client/error-messages.d.ts.map +1 -0
  13. package/dist/client/error-messages.js +23 -0
  14. package/dist/client/error-messages.js.map +1 -0
  15. package/dist/client/index.d.ts +8 -4
  16. package/dist/client/index.d.ts.map +1 -1
  17. package/dist/client/index.js +6 -2
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/client/types.d.ts +35 -5
  20. package/dist/client/types.d.ts.map +1 -1
  21. package/dist/client-only.d.ts +8 -0
  22. package/dist/client-only.d.ts.map +1 -0
  23. package/dist/client-only.js +8 -0
  24. package/dist/client-only.js.map +1 -0
  25. package/dist/config/index.d.ts +5 -5
  26. package/dist/config/index.d.ts.map +1 -1
  27. package/dist/config/index.js +2 -2
  28. package/dist/config/index.js.map +1 -1
  29. package/dist/contracts/catalog-errors.d.ts +27 -0
  30. package/dist/contracts/catalog-errors.d.ts.map +1 -0
  31. package/dist/contracts/catalog-errors.js +69 -0
  32. package/dist/contracts/catalog-errors.js.map +1 -0
  33. package/dist/contracts/contract-builder.d.ts +15 -12
  34. package/dist/contracts/contract-builder.d.ts.map +1 -1
  35. package/dist/contracts/contract-builder.js +15 -41
  36. package/dist/contracts/contract-builder.js.map +1 -1
  37. package/dist/contracts/contract-group.d.ts +11 -8
  38. package/dist/contracts/contract-group.d.ts.map +1 -1
  39. package/dist/contracts/contract-group.js +13 -40
  40. package/dist/contracts/contract-group.js.map +1 -1
  41. package/dist/contracts/contract-like.d.ts +1 -1
  42. package/dist/contracts/contract-like.d.ts.map +1 -1
  43. package/dist/contracts/index.d.ts +13 -9
  44. package/dist/contracts/index.d.ts.map +1 -1
  45. package/dist/contracts/index.js +9 -5
  46. package/dist/contracts/index.js.map +1 -1
  47. package/dist/contracts/openapi-meta.d.ts +48 -0
  48. package/dist/contracts/openapi-meta.d.ts.map +1 -1
  49. package/dist/contracts/openapi-meta.js +3 -0
  50. package/dist/contracts/openapi-meta.js.map +1 -1
  51. package/dist/contracts/path-template.d.ts +1 -1
  52. package/dist/contracts/path-template.js +2 -2
  53. package/dist/contracts/path-template.js.map +1 -1
  54. package/dist/contracts/schema-shape.d.ts +37 -0
  55. package/dist/contracts/schema-shape.d.ts.map +1 -0
  56. package/dist/contracts/schema-shape.js +61 -0
  57. package/dist/contracts/schema-shape.js.map +1 -0
  58. package/dist/contracts/success-status.d.ts +32 -0
  59. package/dist/contracts/success-status.d.ts.map +1 -0
  60. package/dist/contracts/success-status.js +18 -0
  61. package/dist/contracts/success-status.js.map +1 -0
  62. package/dist/contracts/types.d.ts +25 -5
  63. package/dist/contracts/types.d.ts.map +1 -1
  64. package/dist/contracts/types.js.map +1 -1
  65. package/dist/contracts/utils.d.ts +1 -1
  66. package/dist/contracts/utils.d.ts.map +1 -1
  67. package/dist/contracts/utils.js +1 -1
  68. package/dist/contracts/utils.js.map +1 -1
  69. package/dist/domain/events.d.ts +1 -1
  70. package/dist/domain/events.d.ts.map +1 -1
  71. package/dist/domain/events.js +1 -1
  72. package/dist/domain/events.js.map +1 -1
  73. package/dist/domain/index.d.ts +3 -3
  74. package/dist/domain/index.d.ts.map +1 -1
  75. package/dist/domain/index.js +3 -3
  76. package/dist/domain/index.js.map +1 -1
  77. package/dist/errors/catalog.d.ts +9 -1
  78. package/dist/errors/catalog.d.ts.map +1 -1
  79. package/dist/errors/catalog.js +7 -1
  80. package/dist/errors/catalog.js.map +1 -1
  81. package/dist/errors/http.d.ts +10 -0
  82. package/dist/errors/http.d.ts.map +1 -1
  83. package/dist/errors/http.js +11 -1
  84. package/dist/errors/http.js.map +1 -1
  85. package/dist/errors/index.d.ts +4 -4
  86. package/dist/errors/index.d.ts.map +1 -1
  87. package/dist/errors/index.js +4 -4
  88. package/dist/errors/index.js.map +1 -1
  89. package/dist/errors/response.d.ts +4 -1
  90. package/dist/errors/response.d.ts.map +1 -1
  91. package/dist/errors/response.js.map +1 -1
  92. package/dist/events/index.d.ts +10 -12
  93. package/dist/events/index.d.ts.map +1 -1
  94. package/dist/events/index.js +10 -10
  95. package/dist/events/index.js.map +1 -1
  96. package/dist/idempotency/index.d.ts +5 -3
  97. package/dist/idempotency/index.d.ts.map +1 -1
  98. package/dist/idempotency/index.js.map +1 -1
  99. package/dist/jobs/index.d.ts +12 -14
  100. package/dist/jobs/index.d.ts.map +1 -1
  101. package/dist/jobs/index.js +13 -13
  102. package/dist/jobs/index.js.map +1 -1
  103. package/dist/notifications/index.d.ts +14 -16
  104. package/dist/notifications/index.d.ts.map +1 -1
  105. package/dist/notifications/index.js +14 -14
  106. package/dist/notifications/index.js.map +1 -1
  107. package/dist/openapi/index.d.ts +8 -3
  108. package/dist/openapi/index.d.ts.map +1 -1
  109. package/dist/openapi/index.js +41 -29
  110. package/dist/openapi/index.js.map +1 -1
  111. package/dist/openapi/schema-introspector.d.ts +37 -0
  112. package/dist/openapi/schema-introspector.d.ts.map +1 -1
  113. package/dist/openapi/schema-introspector.js +23 -17
  114. package/dist/openapi/schema-introspector.js.map +1 -1
  115. package/dist/outbox/index.d.ts +15 -6
  116. package/dist/outbox/index.d.ts.map +1 -1
  117. package/dist/outbox/index.js +60 -16
  118. package/dist/outbox/index.js.map +1 -1
  119. package/dist/ports/audit.d.ts +56 -10
  120. package/dist/ports/audit.d.ts.map +1 -1
  121. package/dist/ports/audit.js +71 -3
  122. package/dist/ports/audit.js.map +1 -1
  123. package/dist/ports/auth.d.ts +92 -0
  124. package/dist/ports/auth.d.ts.map +1 -1
  125. package/dist/ports/auth.js +92 -0
  126. package/dist/ports/auth.js.map +1 -1
  127. package/dist/ports/events.d.ts +2 -2
  128. package/dist/ports/events.d.ts.map +1 -1
  129. package/dist/ports/index.d.ts +62 -33
  130. package/dist/ports/index.d.ts.map +1 -1
  131. package/dist/ports/index.js +28 -34
  132. package/dist/ports/index.js.map +1 -1
  133. package/dist/ports/policy.d.ts +32 -3
  134. package/dist/ports/policy.d.ts.map +1 -1
  135. package/dist/ports/policy.js +13 -2
  136. package/dist/ports/policy.js.map +1 -1
  137. package/dist/ports/testing.d.ts +1030 -2
  138. package/dist/ports/testing.d.ts.map +1 -1
  139. package/dist/ports/testing.js +1031 -1
  140. package/dist/ports/testing.js.map +1 -1
  141. package/dist/ports/unbound.d.ts +21 -0
  142. package/dist/ports/unbound.d.ts.map +1 -0
  143. package/dist/ports/unbound.js +57 -0
  144. package/dist/ports/unbound.js.map +1 -0
  145. package/dist/ports/unit-of-work.d.ts +1 -1
  146. package/dist/ports/unit-of-work.d.ts.map +1 -1
  147. package/dist/ports/unit-of-work.js +1 -1
  148. package/dist/ports/unit-of-work.js.map +1 -1
  149. package/dist/providers/index.d.ts +3 -2
  150. package/dist/providers/index.d.ts.map +1 -1
  151. package/dist/providers/index.js +3 -2
  152. package/dist/providers/index.js.map +1 -1
  153. package/dist/providers/instrumentation.d.ts +45 -4
  154. package/dist/providers/instrumentation.d.ts.map +1 -1
  155. package/dist/providers/instrumentation.js +25 -6
  156. package/dist/providers/instrumentation.js.map +1 -1
  157. package/dist/providers/metadata.d.ts +39 -0
  158. package/dist/providers/metadata.d.ts.map +1 -0
  159. package/dist/providers/metadata.js +169 -0
  160. package/dist/providers/metadata.js.map +1 -0
  161. package/dist/providers/provider.d.ts +114 -9
  162. package/dist/providers/provider.d.ts.map +1 -1
  163. package/dist/providers/provider.js +3 -20
  164. package/dist/providers/provider.js.map +1 -1
  165. package/dist/schedules/index.d.ts +94 -13
  166. package/dist/schedules/index.d.ts.map +1 -1
  167. package/dist/schedules/index.js +66 -12
  168. package/dist/schedules/index.js.map +1 -1
  169. package/dist/server/audit-context.d.ts +29 -0
  170. package/dist/server/audit-context.d.ts.map +1 -0
  171. package/dist/server/audit-context.js +44 -0
  172. package/dist/server/audit-context.js.map +1 -0
  173. package/dist/server/context.d.ts +141 -0
  174. package/dist/server/context.d.ts.map +1 -0
  175. package/dist/server/context.js +39 -0
  176. package/dist/server/context.js.map +1 -0
  177. package/dist/server/contract-like.d.ts +1 -1
  178. package/dist/server/contract-like.d.ts.map +1 -1
  179. package/dist/server/contract-like.js +1 -1
  180. package/dist/server/contract-like.js.map +1 -1
  181. package/dist/server/health.d.ts +2 -2
  182. package/dist/server/health.d.ts.map +1 -1
  183. package/dist/server/hooks/auth.d.ts +49 -10
  184. package/dist/server/hooks/auth.d.ts.map +1 -1
  185. package/dist/server/hooks/auth.js +77 -37
  186. package/dist/server/hooks/auth.js.map +1 -1
  187. package/dist/server/hooks/cors.d.ts +1 -1
  188. package/dist/server/hooks/cors.d.ts.map +1 -1
  189. package/dist/server/hooks/errors.d.ts +2 -2
  190. package/dist/server/hooks/errors.d.ts.map +1 -1
  191. package/dist/server/hooks/errors.js +2 -2
  192. package/dist/server/hooks/errors.js.map +1 -1
  193. package/dist/server/hooks/idempotency.d.ts +78 -0
  194. package/dist/server/hooks/idempotency.d.ts.map +1 -0
  195. package/dist/server/hooks/idempotency.js +154 -0
  196. package/dist/server/hooks/idempotency.js.map +1 -0
  197. package/dist/server/hooks/index.d.ts +8 -7
  198. package/dist/server/hooks/index.d.ts.map +1 -1
  199. package/dist/server/hooks/index.js +6 -5
  200. package/dist/server/hooks/index.js.map +1 -1
  201. package/dist/server/hooks/logging.d.ts +2 -2
  202. package/dist/server/hooks/logging.d.ts.map +1 -1
  203. package/dist/server/hooks/logging.js +1 -1
  204. package/dist/server/hooks/logging.js.map +1 -1
  205. package/dist/server/hooks/rate-limit.d.ts +25 -7
  206. package/dist/server/hooks/rate-limit.d.ts.map +1 -1
  207. package/dist/server/hooks/rate-limit.js +47 -12
  208. package/dist/server/hooks/rate-limit.js.map +1 -1
  209. package/dist/server/hooks.d.ts +1 -1
  210. package/dist/server/hooks.d.ts.map +1 -1
  211. package/dist/server/hooks.js +1 -1
  212. package/dist/server/hooks.js.map +1 -1
  213. package/dist/server/http.d.ts +61 -35
  214. package/dist/server/http.d.ts.map +1 -1
  215. package/dist/server/http.js +1 -20
  216. package/dist/server/http.js.map +1 -1
  217. package/dist/server/index.d.ts +36 -12
  218. package/dist/server/index.d.ts.map +1 -1
  219. package/dist/server/index.js +24 -8
  220. package/dist/server/index.js.map +1 -1
  221. package/dist/server/instrumentation.d.ts +108 -0
  222. package/dist/server/instrumentation.d.ts.map +1 -0
  223. package/dist/server/instrumentation.js +297 -0
  224. package/dist/server/instrumentation.js.map +1 -0
  225. package/dist/server/openapi.d.ts +3 -3
  226. package/dist/server/openapi.d.ts.map +1 -1
  227. package/dist/server/openapi.js +1 -1
  228. package/dist/server/openapi.js.map +1 -1
  229. package/dist/server/providers/index.d.ts +3 -3
  230. package/dist/server/providers/index.d.ts.map +1 -1
  231. package/dist/server/providers/index.js +3 -3
  232. package/dist/server/providers/index.js.map +1 -1
  233. package/dist/server/providers/loadProviderConfig.d.ts +2 -2
  234. package/dist/server/providers/loadProviderConfig.d.ts.map +1 -1
  235. package/dist/server/providers/loadProviderConfig.js +2 -2
  236. package/dist/server/providers/loadProviderConfig.js.map +1 -1
  237. package/dist/server/request-context.d.ts +67 -0
  238. package/dist/server/request-context.d.ts.map +1 -0
  239. package/dist/server/request-context.js +79 -0
  240. package/dist/server/request-context.js.map +1 -0
  241. package/dist/server/server-context.d.ts +38 -0
  242. package/dist/server/server-context.d.ts.map +1 -0
  243. package/dist/server/server-context.js +38 -0
  244. package/dist/server/server-context.js.map +1 -0
  245. package/dist/server/server.d.ts +105 -33
  246. package/dist/server/server.d.ts.map +1 -1
  247. package/dist/server/server.js +434 -118
  248. package/dist/server/server.js.map +1 -1
  249. package/dist/server/types.d.ts +2 -2
  250. package/dist/server/types.d.ts.map +1 -1
  251. package/dist/server/types.js +2 -2
  252. package/dist/server/types.js.map +1 -1
  253. package/dist/server/use-case-route.d.ts +263 -0
  254. package/dist/server/use-case-route.d.ts.map +1 -0
  255. package/dist/server/use-case-route.js +77 -0
  256. package/dist/server/use-case-route.js.map +1 -0
  257. package/dist/server-only.d.ts +8 -0
  258. package/dist/server-only.d.ts.map +1 -0
  259. package/dist/server-only.js +8 -0
  260. package/dist/server-only.js.map +1 -0
  261. package/dist/tasks/index.d.ts +139 -0
  262. package/dist/tasks/index.d.ts.map +1 -0
  263. package/dist/tasks/index.js +98 -0
  264. package/dist/tasks/index.js.map +1 -0
  265. package/dist/testing/index.d.ts +607 -5
  266. package/dist/testing/index.d.ts.map +1 -1
  267. package/dist/testing/index.js +426 -4
  268. package/dist/testing/index.js.map +1 -1
  269. package/dist/tracing/index.d.ts +89 -0
  270. package/dist/tracing/index.d.ts.map +1 -0
  271. package/dist/tracing/index.js +101 -0
  272. package/dist/tracing/index.js.map +1 -0
  273. package/dist/uploads/client.d.ts +1 -1
  274. package/dist/uploads/client.d.ts.map +1 -1
  275. package/dist/uploads/index.d.ts +2 -2
  276. package/dist/uploads/index.d.ts.map +1 -1
  277. package/dist/uploads/index.js +1 -1
  278. package/dist/uploads/index.js.map +1 -1
  279. package/package.json +24 -2
  280. package/src/application/index.ts +193 -10
  281. package/src/client/client.ts +148 -150
  282. package/src/client/error-messages.ts +35 -0
  283. package/src/client/index.ts +12 -4
  284. package/src/client/types.ts +44 -5
  285. package/src/client-only.ts +7 -0
  286. package/src/config/index.ts +6 -6
  287. package/src/contracts/catalog-errors.ts +115 -0
  288. package/src/contracts/contract-builder.ts +39 -76
  289. package/src/contracts/contract-group.ts +33 -68
  290. package/src/contracts/contract-like.ts +1 -1
  291. package/src/contracts/index.ts +24 -11
  292. package/src/contracts/openapi-meta.ts +55 -0
  293. package/src/contracts/path-template.ts +2 -2
  294. package/src/contracts/schema-shape.ts +75 -0
  295. package/src/contracts/success-status.ts +68 -0
  296. package/src/contracts/types.ts +32 -5
  297. package/src/contracts/utils.ts +5 -2
  298. package/src/domain/events.ts +6 -2
  299. package/src/domain/index.ts +3 -3
  300. package/src/errors/catalog.ts +9 -1
  301. package/src/errors/http.ts +11 -1
  302. package/src/errors/index.ts +4 -4
  303. package/src/errors/response.ts +4 -1
  304. package/src/events/index.ts +12 -26
  305. package/src/idempotency/index.ts +5 -3
  306. package/src/jobs/index.ts +14 -24
  307. package/src/notifications/index.ts +17 -27
  308. package/src/openapi/index.ts +73 -38
  309. package/src/openapi/schema-introspector.ts +68 -17
  310. package/src/outbox/index.ts +84 -19
  311. package/src/ports/audit.ts +120 -11
  312. package/src/ports/auth.ts +132 -0
  313. package/src/ports/events.ts +2 -2
  314. package/src/ports/index.ts +104 -35
  315. package/src/ports/policy.ts +50 -3
  316. package/src/ports/testing.ts +2220 -33
  317. package/src/ports/unbound.ts +64 -0
  318. package/src/ports/unit-of-work.ts +6 -2
  319. package/src/providers/index.ts +16 -3
  320. package/src/providers/instrumentation.ts +86 -7
  321. package/src/providers/metadata.ts +234 -0
  322. package/src/providers/provider.ts +168 -9
  323. package/src/schedules/index.ts +173 -23
  324. package/src/server/audit-context.ts +45 -0
  325. package/src/server/context.ts +224 -0
  326. package/src/server/contract-like.ts +1 -1
  327. package/src/server/health.ts +2 -2
  328. package/src/server/hooks/auth.ts +141 -51
  329. package/src/server/hooks/cors.ts +1 -1
  330. package/src/server/hooks/errors.ts +7 -4
  331. package/src/server/hooks/idempotency.ts +263 -0
  332. package/src/server/hooks/index.ts +14 -7
  333. package/src/server/hooks/logging.ts +3 -3
  334. package/src/server/hooks/rate-limit.ts +85 -17
  335. package/src/server/hooks.ts +1 -1
  336. package/src/server/http.ts +78 -51
  337. package/src/server/index.ts +62 -12
  338. package/src/server/instrumentation.ts +470 -0
  339. package/src/server/openapi.ts +4 -4
  340. package/src/server/providers/index.ts +6 -3
  341. package/src/server/providers/loadProviderConfig.ts +4 -4
  342. package/src/server/request-context.ts +116 -0
  343. package/src/server/server-context.ts +44 -0
  344. package/src/server/server.ts +886 -238
  345. package/src/server/types.ts +2 -2
  346. package/src/server/use-case-route.ts +430 -0
  347. package/src/server-only.ts +7 -0
  348. package/src/tasks/index.ts +275 -0
  349. package/src/testing/index.ts +1142 -6
  350. package/src/tracing/index.ts +176 -0
  351. package/src/uploads/client.ts +1 -1
  352. package/src/uploads/index.ts +7 -3
  353. package/dist/ports/mailer.d.ts +0 -6
  354. package/dist/ports/mailer.d.ts.map +0 -1
  355. package/dist/ports/mailer.js +0 -2
  356. package/dist/ports/mailer.js.map +0 -1
  357. package/dist/ports/schedules.d.ts +0 -9
  358. package/dist/ports/schedules.d.ts.map +0 -1
  359. package/dist/ports/schedules.js +0 -2
  360. package/dist/ports/schedules.js.map +0 -1
@@ -0,0 +1,297 @@
1
+ import { BEIGNET_ERROR_OWNER_HEADER, } from "../contracts/index.js";
2
+ import { redactValue } from "../ports/redaction.js";
3
+ import { resolveProviderInstrumentationPort, } from "../providers/instrumentation.js";
4
+ import { createTraceContext, parseTraceparent, } from "../tracing/index.js";
5
+ import { clearActiveRequestContext, enterActiveRequestContext, readContextActor, readContextTenant, } from "./request-context.js";
6
+ function getContextRequestId(ctx) {
7
+ if (!ctx || typeof ctx !== "object")
8
+ return undefined;
9
+ const requestId = ctx.requestId;
10
+ return typeof requestId === "string" ? requestId : undefined;
11
+ }
12
+ function getContextTraceContext(ctx) {
13
+ if (!ctx || typeof ctx !== "object")
14
+ return undefined;
15
+ const context = ctx;
16
+ if (!context.traceId &&
17
+ !context.spanId &&
18
+ !context.parentSpanId &&
19
+ !context.traceparent) {
20
+ return undefined;
21
+ }
22
+ return {
23
+ traceId: context.traceId,
24
+ spanId: context.spanId,
25
+ parentSpanId: context.parentSpanId,
26
+ traceparent: context.traceparent,
27
+ };
28
+ }
29
+ function getErrorMessage(error) {
30
+ if (error instanceof Error)
31
+ return error.message;
32
+ if (typeof error === "string")
33
+ return error;
34
+ return "Unknown error";
35
+ }
36
+ function getErrorStack(error) {
37
+ return error instanceof Error ? error.stack : undefined;
38
+ }
39
+ function createRequestId() {
40
+ if (typeof crypto !== "undefined" && "randomUUID" in crypto) {
41
+ return crypto.randomUUID();
42
+ }
43
+ return `${Date.now()}-${Math.random().toString(16).slice(2)}`;
44
+ }
45
+ function getPathname(req) {
46
+ try {
47
+ return new URL(req.url).pathname;
48
+ }
49
+ catch {
50
+ return req.url;
51
+ }
52
+ }
53
+ function isIgnoredPath(pathname, ignorePaths) {
54
+ return ignorePaths.some((ignorePath) => {
55
+ const normalized = ignorePath.replace(/\/+$/, "");
56
+ return pathname === normalized || pathname.startsWith(`${normalized}/`);
57
+ });
58
+ }
59
+ function requestHeadersToRecord(headers) {
60
+ const record = {};
61
+ headers.forEach((value, key) => {
62
+ record[key] = value;
63
+ });
64
+ return record;
65
+ }
66
+ function getResponseHeader(headers, name) {
67
+ if (!headers)
68
+ return undefined;
69
+ const direct = headers[name];
70
+ if (direct !== undefined)
71
+ return direct;
72
+ const normalized = name.toLowerCase();
73
+ const entry = Object.entries(headers).find(([key]) => key.toLowerCase() === normalized);
74
+ return entry?.[1];
75
+ }
76
+ function getResponseOwner(response) {
77
+ return getResponseHeader(response.headers, BEIGNET_ERROR_OWNER_HEADER) ===
78
+ "framework"
79
+ ? "framework"
80
+ : "route";
81
+ }
82
+ function isWatcherEnabled(port, name) {
83
+ return port.isWatcherEnabled?.(name) ?? true;
84
+ }
85
+ /**
86
+ * Create the server-owned instrumentation runtime for `createServer(...)`.
87
+ *
88
+ * Correlation values (request ID and trace context) are always resolved so
89
+ * context factories receive stable `requestId`/`trace` arguments, even when
90
+ * instrumentation is disabled. Headers and event recording only run when
91
+ * instrumentation is enabled.
92
+ */
93
+ export function createServerInstrumentation(options) {
94
+ const enabled = options !== false;
95
+ const resolvedOptions = options === false || options === undefined ? {} : options;
96
+ const requestIdHeader = resolvedOptions.requestIdHeader ?? "x-request-id";
97
+ const traceContextHeader = resolvedOptions.traceContextHeader ?? "traceparent";
98
+ const ignorePaths = resolvedOptions.ignorePaths ?? ["/api/devtools"];
99
+ let port;
100
+ const correlations = new WeakMap();
101
+ const prepareRequest = (req) => {
102
+ const cached = correlations.get(req);
103
+ if (cached)
104
+ return cached;
105
+ const headerRequestId = requestIdHeader === false
106
+ ? undefined
107
+ : (req.headers.get(requestIdHeader) ?? undefined);
108
+ const headerTraceparent = traceContextHeader === false
109
+ ? undefined
110
+ : (req.headers.get(traceContextHeader) ?? undefined);
111
+ const correlation = {
112
+ requestId: headerRequestId ?? createRequestId(),
113
+ trace: createTraceContext({
114
+ traceparent: parseTraceparent(headerTraceparent)?.traceparent,
115
+ }),
116
+ };
117
+ correlations.set(req, correlation);
118
+ return correlation;
119
+ };
120
+ const resolveRequestId = (args) => getContextRequestId(args.ctx) ?? prepareRequest(args.req).requestId;
121
+ const resolveTraceContext = (args) => {
122
+ const contextTrace = getContextTraceContext(args.ctx);
123
+ if (contextTrace) {
124
+ return createTraceContext(contextTrace);
125
+ }
126
+ return prepareRequest(args.req).trace;
127
+ };
128
+ const record = (event) => {
129
+ if (!port)
130
+ return;
131
+ let prepared = redactValue(event);
132
+ if (resolvedOptions.redact) {
133
+ try {
134
+ prepared = resolvedOptions.redact(prepared);
135
+ }
136
+ catch (error) {
137
+ try {
138
+ port.record({
139
+ type: "error",
140
+ message: "Server instrumentation redactor failed",
141
+ owner: "framework",
142
+ details: {
143
+ message: getErrorMessage(error),
144
+ },
145
+ });
146
+ }
147
+ catch {
148
+ // Instrumentation sinks must never affect responses.
149
+ }
150
+ return;
151
+ }
152
+ }
153
+ try {
154
+ port.record(prepared);
155
+ }
156
+ catch {
157
+ // Instrumentation sinks must never affect responses.
158
+ }
159
+ };
160
+ const enterAmbientContext = (args) => {
161
+ if (isIgnoredPath(getPathname(args.req), ignorePaths))
162
+ return;
163
+ const trace = resolveTraceContext(args);
164
+ enterActiveRequestContext({
165
+ requestId: resolveRequestId(args),
166
+ traceId: trace.traceId,
167
+ spanId: trace.spanId,
168
+ parentSpanId: trace.parentSpanId,
169
+ traceparent: trace.traceparent,
170
+ actor: readContextActor(args.ctx),
171
+ tenant: readContextTenant(args.ctx),
172
+ });
173
+ };
174
+ const hook = {
175
+ name: "beignet.instrumentation",
176
+ onRequest: ({ req }) => {
177
+ enterAmbientContext({ req });
178
+ return undefined;
179
+ },
180
+ beforeHandle: ({ req, ctx }) => {
181
+ // Re-enter with context values so app-owned overrides win for ambient
182
+ // correlation inheritance.
183
+ enterAmbientContext({ req, ctx });
184
+ return undefined;
185
+ },
186
+ beforeSend: ({ req, ctx, response }) => {
187
+ if (requestIdHeader === false && traceContextHeader === false) {
188
+ return undefined;
189
+ }
190
+ const requestId = resolveRequestId({ req, ctx });
191
+ const trace = resolveTraceContext({ req, ctx });
192
+ return {
193
+ ...response,
194
+ headers: {
195
+ ...response.headers,
196
+ ...(requestIdHeader === false
197
+ ? {}
198
+ : { [requestIdHeader]: requestId }),
199
+ ...(traceContextHeader === false
200
+ ? {}
201
+ : { [traceContextHeader]: trace.traceparent }),
202
+ },
203
+ };
204
+ },
205
+ afterSend: ({ req, ctx, contract, response, error, durationMs }) => {
206
+ try {
207
+ if (!port)
208
+ return;
209
+ const path = getPathname(req);
210
+ if (isIgnoredPath(path, ignorePaths))
211
+ return;
212
+ const shouldCaptureRequest = isWatcherEnabled(port, "requests");
213
+ const shouldCaptureError = Boolean(error) && isWatcherEnabled(port, "errors");
214
+ if (!shouldCaptureRequest && !shouldCaptureError)
215
+ return;
216
+ if (resolvedOptions.shouldCapture &&
217
+ !resolvedOptions.shouldCapture({
218
+ req,
219
+ ctx: ctx,
220
+ contract,
221
+ response,
222
+ error,
223
+ })) {
224
+ return;
225
+ }
226
+ const requestId = resolveRequestId({ req, ctx });
227
+ const trace = resolveTraceContext({ req, ctx });
228
+ const responseOwner = getResponseOwner(response);
229
+ if (shouldCaptureRequest) {
230
+ record({
231
+ type: "request",
232
+ requestId,
233
+ traceId: trace.traceId,
234
+ spanId: trace.spanId,
235
+ parentSpanId: trace.parentSpanId,
236
+ traceparent: trace.traceparent,
237
+ method: req.method,
238
+ path,
239
+ contractName: contract.name,
240
+ responseOwner,
241
+ status: response.status,
242
+ durationMs,
243
+ details: {
244
+ headers: requestHeadersToRecord(req.headers),
245
+ route: {
246
+ contractName: contract.name,
247
+ method: req.method,
248
+ path,
249
+ },
250
+ response: {
251
+ owner: responseOwner,
252
+ status: response.status,
253
+ },
254
+ hookPhases: [
255
+ "onRequest",
256
+ "beforeHandle",
257
+ "beforeSend",
258
+ "afterSend",
259
+ ],
260
+ },
261
+ });
262
+ }
263
+ if (error && shouldCaptureError) {
264
+ record({
265
+ type: "error",
266
+ requestId,
267
+ traceId: trace.traceId,
268
+ spanId: trace.spanId,
269
+ parentSpanId: trace.parentSpanId,
270
+ traceparent: trace.traceparent,
271
+ message: getErrorMessage(error),
272
+ stack: getErrorStack(error),
273
+ contractName: contract.name,
274
+ owner: responseOwner === "framework" ? "framework" : "route",
275
+ });
276
+ }
277
+ }
278
+ finally {
279
+ clearActiveRequestContext();
280
+ }
281
+ },
282
+ };
283
+ return {
284
+ attachPorts(ports) {
285
+ if (!enabled)
286
+ return;
287
+ port = resolveProviderInstrumentationPort(ports);
288
+ },
289
+ prepareRequest,
290
+ createServiceCorrelation: () => ({
291
+ requestId: createRequestId(),
292
+ trace: createTraceContext(),
293
+ }),
294
+ hook: enabled ? hook : undefined,
295
+ };
296
+ }
297
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/server/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  * OpenAPI generation handler
3
3
  * OpenAPI helpers for the Beignet server runtime.
4
4
  */
5
- import type { HttpContractConfig } from "../contracts";
6
- import type { AppEnvironment } from "./health";
7
- import type { HttpRequestLike, HttpResponseLike } from "./types";
5
+ import type { HttpContractConfig } from "../contracts/index.js";
6
+ import type { AppEnvironment } from "./health.js";
7
+ import type { HttpRequestLike, HttpResponseLike } from "./types.js";
8
8
  /**
9
9
  * OpenAPI route handler configuration.
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,IAAI,EAAE,cAAc,GACnB,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAkCrD"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,IAAI,EAAE,cAAc,GACnB,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAkCrD"}
@@ -16,7 +16,7 @@ export function createOpenAPIHandler(contracts, openapiConfig, _env) {
16
16
  if (!cachedSpec) {
17
17
  try {
18
18
  // Dynamic import to avoid hard dependency
19
- const { contractsToOpenAPI } = await import("../openapi");
19
+ const { contractsToOpenAPI } = await import("../openapi/index.js");
20
20
  cachedSpec = contractsToOpenAPI(contracts, {
21
21
  title: openapiConfig?.title ?? "Beignet API",
22
22
  version: openapiConfig?.version ?? "1.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAwC,EACxC,aAAwC,EACxC,IAAoB;IAEpB,gDAAgD;IAChD,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,OAAO,KAAK,EAAE,IAAqB,EAA6B,EAAE;QAChE,8BAA8B;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1D,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE;oBACzC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,aAAa;oBAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,OAAO;oBAC1C,WAAW,EAAE,aAAa,EAAE,WAAW;iBACxC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,4BAA4B;gBAC5B,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE;wBACJ,KAAK,EAAE,2BAA2B;wBAClC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;qBAClE;oBACD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAwC,EACxC,aAAwC,EACxC,IAAoB;IAEpB,gDAAgD;IAChD,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,OAAO,KAAK,EAAE,IAAqB,EAA6B,EAAE;QAChE,8BAA8B;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBACnE,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE;oBACzC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,aAAa;oBAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,OAAO;oBAC1C,WAAW,EAAE,aAAa,EAAE,WAAW;iBACxC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,4BAA4B;gBAC5B,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE;wBACJ,KAAK,EAAE,2BAA2B;wBAClC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;qBAClE;oBACD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- export { ConfigValidationError, readEnv } from "../../config";
2
- export { SchemaValidationError } from "../../errors";
3
- export { loadProviderConfig, parseStandardSchema } from "./loadProviderConfig";
1
+ export { ConfigValidationError, readEnv } from "../../config/index.js";
2
+ export { SchemaValidationError } from "../../errors/index.js";
3
+ export { loadProviderConfig, parseStandardSchema, } from "./loadProviderConfig.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { ConfigValidationError, readEnv } from "../../config";
2
- export { SchemaValidationError } from "../../errors";
3
- export { loadProviderConfig, parseStandardSchema } from "./loadProviderConfig";
1
+ export { ConfigValidationError, readEnv } from "../../config/index.js";
2
+ export { SchemaValidationError } from "../../errors/index.js";
3
+ export { loadProviderConfig, parseStandardSchema, } from "./loadProviderConfig.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { StandardSchemaV1 } from "@standard-schema/spec";
2
- import type { AnyPorts } from "../../ports";
3
- import type { ServiceProvider } from "../../providers";
2
+ import type { AnyPorts } from "../../ports/index.js";
3
+ import type { ServiceProvider } from "../../providers/index.js";
4
4
  declare function parseStandardSchema<Schema extends StandardSchemaV1<unknown, unknown>>(schema: Schema, input: unknown): Promise<StandardSchemaV1.InferOutput<Schema>>;
5
5
  /**
6
6
  * Load and validate config for a provider.
@@ -1 +1 @@
1
- {"version":3,"file":"loadProviderConfig.d.ts","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAOvD,iBAAe,mBAAmB,CAChC,MAAM,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAEjD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAU/C;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,SAAS,QAAQ,EACtB,MAAM,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAEjD,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CA8B3D;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"loadProviderConfig.d.ts","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOhE,iBAAe,mBAAmB,CAChC,MAAM,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAEjD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAU/C;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,SAAS,QAAQ,EACtB,MAAM,SAAS,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAEjD,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CA8B3D;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { ConfigValidationError, parseStandardSchemaAsync, readEnv, } from "../../config";
2
- import { SchemaValidationError } from "../../errors";
1
+ import { ConfigValidationError, parseStandardSchemaAsync, readEnv, } from "../../config/index.js";
2
+ import { SchemaValidationError } from "../../errors/index.js";
3
3
  async function parseStandardSchema(schema, input) {
4
4
  try {
5
5
  return await parseStandardSchemaAsync(schema, input);
@@ -1 +1 @@
1
- {"version":3,"file":"loadProviderConfig.js","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AASrD,KAAK,UAAU,mBAAmB,CAGhC,MAAc,EACd,KAAc;IAEd,IAAI,CAAC;QACH,OAAO,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,QAAwC,EACxC,GAAuC,EACvC,SAAkC;IAElC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAA+C,CAAC;IAC3E,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW;QACvB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACrC,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,CAAC;QACH,OAAO,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,SAAS;YACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CACvD;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,SAAS;YACpB,CAAC,CAAC,KAAK,CAAC,MAAM;gBACZ,CAAC,CAAC,mCAAmC,SAAS,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtE,CAAC,CAAC,sCAAsC,SAAS,GAAG;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAM,KAAe,CAAC,OAAO,GAAG,IAAI,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"loadProviderConfig.js","sourceRoot":"","sources":["../../../src/server/providers/loadProviderConfig.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAS9D,KAAK,UAAU,mBAAmB,CAGhC,MAAc,EACd,KAAc;IAEd,IAAI,CAAC;QACH,OAAO,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,QAAwC,EACxC,GAAuC,EACvC,SAAkC;IAElC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAA+C,CAAC;IAC3E,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW;QACvB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACrC,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,CAAC;QACH,OAAO,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,SAAS;YACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CACvD;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,SAAS;YACpB,CAAC,CAAC,KAAK,CAAC,MAAM;gBACZ,CAAC,CAAC,mCAAmC,SAAS,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtE,CAAC,CAAC,sCAAsC,SAAS,GAAG;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAM,KAAe,CAAC,OAAO,GAAG,IAAI,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { ActivityActor, ActivityTenant } from "../ports/audit.js";
2
+ /**
3
+ * Ambient correlation values for the request currently being handled.
4
+ *
5
+ * The server enters this context before user hooks run so instrumentation
6
+ * sinks can correlate events recorded anywhere in the request lifecycle.
7
+ * Identity values (`actor`, `tenant`) are refreshed by the server whenever
8
+ * hooks finalize a new context, so wrappers such as `createAmbientAuditLog`
9
+ * observe the elevated identity at record time.
10
+ */
11
+ export interface ActiveRequestContext {
12
+ requestId?: string;
13
+ traceId?: string;
14
+ spanId?: string;
15
+ parentSpanId?: string;
16
+ traceparent?: string;
17
+ /**
18
+ * Actor for the current request or service execution, when known.
19
+ */
20
+ actor?: ActivityActor;
21
+ /**
22
+ * Tenant scope for the current request or service execution, when known.
23
+ */
24
+ tenant?: ActivityTenant;
25
+ }
26
+ /**
27
+ * Enter the ambient request context for the current async execution.
28
+ */
29
+ export declare function enterActiveRequestContext(context: ActiveRequestContext): void;
30
+ /**
31
+ * Clear the ambient request context for the current async execution.
32
+ */
33
+ export declare function clearActiveRequestContext(): void;
34
+ /**
35
+ * Read the ambient request context, when one is active.
36
+ */
37
+ export declare function getActiveRequestContext(): ActiveRequestContext | undefined;
38
+ /**
39
+ * Read a normalized actor from an app context object, when present.
40
+ */
41
+ export declare function readContextActor(ctx: unknown): ActivityActor | undefined;
42
+ /**
43
+ * Read a normalized tenant from an app context object, when present.
44
+ */
45
+ export declare function readContextTenant(ctx: unknown): ActivityTenant | undefined;
46
+ /**
47
+ * Update identity fields on the active ambient request context in place.
48
+ *
49
+ * The server calls this after hooks finalize a new request context so the
50
+ * elevated actor/tenant become visible to ambient consumers, including async
51
+ * frames that captured the context object before the update. No-op when no
52
+ * ambient context is active.
53
+ */
54
+ export declare function setActiveRequestIdentity(identity: {
55
+ actor?: ActivityActor;
56
+ tenant?: ActivityTenant;
57
+ }): void;
58
+ /**
59
+ * Fill missing correlation fields on an event from the ambient request
60
+ * context.
61
+ */
62
+ export declare function inheritActiveRequestContext<Event extends {
63
+ requestId?: string;
64
+ traceId?: string;
65
+ traceparent?: string;
66
+ }>(event: Event): Event;
67
+ //# sourceMappingURL=request-context.d.ts.map
@@ -0,0 +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;;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;CACtB,EACD,KAAK,EAAE,KAAK,GAAG,KAAK,CAUrB"}
@@ -0,0 +1,79 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ const activeRequestContext = new AsyncLocalStorage();
3
+ /**
4
+ * Enter the ambient request context for the current async execution.
5
+ */
6
+ export function enterActiveRequestContext(context) {
7
+ activeRequestContext.enterWith(context);
8
+ }
9
+ /**
10
+ * Clear the ambient request context for the current async execution.
11
+ */
12
+ export function clearActiveRequestContext() {
13
+ activeRequestContext.enterWith(undefined);
14
+ }
15
+ /**
16
+ * Read the ambient request context, when one is active.
17
+ */
18
+ export function getActiveRequestContext() {
19
+ return activeRequestContext.getStore();
20
+ }
21
+ /**
22
+ * Read a normalized actor from an app context object, when present.
23
+ */
24
+ export function readContextActor(ctx) {
25
+ if (!ctx || typeof ctx !== "object")
26
+ return undefined;
27
+ const actor = ctx.actor;
28
+ if (!actor || typeof actor !== "object")
29
+ return undefined;
30
+ return typeof actor.type === "string"
31
+ ? actor
32
+ : undefined;
33
+ }
34
+ /**
35
+ * Read a normalized tenant from an app context object, when present.
36
+ */
37
+ export function readContextTenant(ctx) {
38
+ if (!ctx || typeof ctx !== "object")
39
+ return undefined;
40
+ const tenant = ctx.tenant;
41
+ if (!tenant || typeof tenant !== "object")
42
+ return undefined;
43
+ return typeof tenant.id === "string"
44
+ ? tenant
45
+ : undefined;
46
+ }
47
+ /**
48
+ * Update identity fields on the active ambient request context in place.
49
+ *
50
+ * The server calls this after hooks finalize a new request context so the
51
+ * elevated actor/tenant become visible to ambient consumers, including async
52
+ * frames that captured the context object before the update. No-op when no
53
+ * ambient context is active.
54
+ */
55
+ export function setActiveRequestIdentity(identity) {
56
+ const context = activeRequestContext.getStore();
57
+ if (!context)
58
+ return;
59
+ if (identity.actor)
60
+ context.actor = identity.actor;
61
+ if (identity.tenant)
62
+ context.tenant = identity.tenant;
63
+ }
64
+ /**
65
+ * Fill missing correlation fields on an event from the ambient request
66
+ * context.
67
+ */
68
+ export function inheritActiveRequestContext(event) {
69
+ const context = getActiveRequestContext();
70
+ if (!context)
71
+ return event;
72
+ return {
73
+ ...event,
74
+ requestId: event.requestId ?? context.requestId,
75
+ traceId: event.traceId ?? context.traceId,
76
+ traceparent: event.traceparent ?? context.traceparent,
77
+ };
78
+ }
79
+ //# sourceMappingURL=request-context.js.map
@@ -0,0 +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;AA4BrD,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;;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,CAMzC,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,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;KACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { AnyPorts } from "../ports/index.js";
2
+ import type { ServerContextConfig } from "./context.js";
3
+ /**
4
+ * Declare a server context blueprint once and share it between the runtime
5
+ * server and tests.
6
+ *
7
+ * The helper preserves the blueprint exactly as written — `request`,
8
+ * `service`, and `gate` keep their inferred types — so apps can keep the
9
+ * blueprint in a canonical `server/context.ts` file and pass the same value to
10
+ * `createServer(...)` (through an adapter such as `createNextServer` or
11
+ * `createFetchServer`) and to `createTestApp(...)`.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // server/context.ts
16
+ * export const appContext = defineServerContext<AppContext, AppPorts>()({
17
+ * gate: (ports) => ports.gate,
18
+ * request: async ({ req, ports, requestId, trace }) => ({
19
+ * actor: await resolveActor(req),
20
+ * auth: null,
21
+ * requestId,
22
+ * ...trace,
23
+ * ports,
24
+ * }),
25
+ * service: ({ ports, requestId, trace }) => ({
26
+ * actor: createServiceActor("app-service"),
27
+ * auth: null,
28
+ * requestId,
29
+ * ...trace,
30
+ * ports,
31
+ * }),
32
+ * });
33
+ * ```
34
+ *
35
+ * @returns A function that collects and returns the typed context blueprint.
36
+ */
37
+ export declare function defineServerContext<Ctx, Ports extends AnyPorts = AnyPorts>(): <ServiceInput = void>(blueprint: ServerContextConfig<Ctx, Ports, ServiceInput>) => ServerContextConfig<Ctx, Ports, ServiceInput>;
38
+ //# sourceMappingURL=server-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-context.d.ts","sourceRoot":"","sources":["../../src/server/server-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,KAAK,SAAS,QAAQ,GAAG,QAAQ,KAAK,CAC7E,YAAY,GAAG,IAAI,EAEnB,SAAS,EAAE,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,KACrD,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAEjD"}