@beignet/core 0.0.1

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 (331) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +288 -0
  3. package/dist/application/index.d.ts +260 -0
  4. package/dist/application/index.d.ts.map +1 -0
  5. package/dist/application/index.js +324 -0
  6. package/dist/application/index.js.map +1 -0
  7. package/dist/client/client.d.ts +241 -0
  8. package/dist/client/client.d.ts.map +1 -0
  9. package/dist/client/client.js +531 -0
  10. package/dist/client/client.js.map +1 -0
  11. package/dist/client/index.d.ts +10 -0
  12. package/dist/client/index.d.ts.map +1 -0
  13. package/dist/client/index.js +8 -0
  14. package/dist/client/index.js.map +1 -0
  15. package/dist/client/types.d.ts +139 -0
  16. package/dist/client/types.d.ts.map +1 -0
  17. package/dist/client/types.js +2 -0
  18. package/dist/client/types.js.map +1 -0
  19. package/dist/config/index.d.ts +122 -0
  20. package/dist/config/index.d.ts.map +1 -0
  21. package/dist/config/index.js +216 -0
  22. package/dist/config/index.js.map +1 -0
  23. package/dist/contracts/contract-builder.d.ts +121 -0
  24. package/dist/contracts/contract-builder.d.ts.map +1 -0
  25. package/dist/contracts/contract-builder.js +346 -0
  26. package/dist/contracts/contract-builder.js.map +1 -0
  27. package/dist/contracts/contract-group.d.ts +106 -0
  28. package/dist/contracts/contract-group.d.ts.map +1 -0
  29. package/dist/contracts/contract-group.js +240 -0
  30. package/dist/contracts/contract-group.js.map +1 -0
  31. package/dist/contracts/contract-like.d.ts +21 -0
  32. package/dist/contracts/contract-like.d.ts.map +1 -0
  33. package/dist/contracts/contract-like.js +9 -0
  34. package/dist/contracts/contract-like.js.map +1 -0
  35. package/dist/contracts/index.d.ts +15 -0
  36. package/dist/contracts/index.d.ts.map +1 -0
  37. package/dist/contracts/index.js +11 -0
  38. package/dist/contracts/index.js.map +1 -0
  39. package/dist/contracts/openapi-meta.d.ts +23 -0
  40. package/dist/contracts/openapi-meta.d.ts.map +1 -0
  41. package/dist/contracts/openapi-meta.js +2 -0
  42. package/dist/contracts/openapi-meta.js.map +1 -0
  43. package/dist/contracts/path-template.d.ts +17 -0
  44. package/dist/contracts/path-template.d.ts.map +1 -0
  45. package/dist/contracts/path-template.js +50 -0
  46. package/dist/contracts/path-template.js.map +1 -0
  47. package/dist/contracts/rate-limit.d.ts +50 -0
  48. package/dist/contracts/rate-limit.d.ts.map +1 -0
  49. package/dist/contracts/rate-limit.js +2 -0
  50. package/dist/contracts/rate-limit.js.map +1 -0
  51. package/dist/contracts/types.d.ts +97 -0
  52. package/dist/contracts/types.d.ts.map +1 -0
  53. package/dist/contracts/types.js +54 -0
  54. package/dist/contracts/types.js.map +1 -0
  55. package/dist/contracts/utils.d.ts +3 -0
  56. package/dist/contracts/utils.d.ts.map +1 -0
  57. package/dist/contracts/utils.js +44 -0
  58. package/dist/contracts/utils.js.map +1 -0
  59. package/dist/domain/entity.d.ts +87 -0
  60. package/dist/domain/entity.d.ts.map +1 -0
  61. package/dist/domain/entity.js +155 -0
  62. package/dist/domain/entity.js.map +1 -0
  63. package/dist/domain/events.d.ts +41 -0
  64. package/dist/domain/events.d.ts.map +1 -0
  65. package/dist/domain/events.js +21 -0
  66. package/dist/domain/events.js.map +1 -0
  67. package/dist/domain/index.d.ts +14 -0
  68. package/dist/domain/index.d.ts.map +1 -0
  69. package/dist/domain/index.js +14 -0
  70. package/dist/domain/index.js.map +1 -0
  71. package/dist/domain/value-object.d.ts +60 -0
  72. package/dist/domain/value-object.d.ts.map +1 -0
  73. package/dist/domain/value-object.js +87 -0
  74. package/dist/domain/value-object.js.map +1 -0
  75. package/dist/errors/catalog.d.ts +71 -0
  76. package/dist/errors/catalog.d.ts.map +1 -0
  77. package/dist/errors/catalog.js +71 -0
  78. package/dist/errors/catalog.js.map +1 -0
  79. package/dist/errors/http.d.ts +77 -0
  80. package/dist/errors/http.d.ts.map +1 -0
  81. package/dist/errors/http.js +74 -0
  82. package/dist/errors/http.js.map +1 -0
  83. package/dist/errors/index.d.ts +10 -0
  84. package/dist/errors/index.d.ts.map +1 -0
  85. package/dist/errors/index.js +14 -0
  86. package/dist/errors/index.js.map +1 -0
  87. package/dist/errors/response.d.ts +26 -0
  88. package/dist/errors/response.d.ts.map +1 -0
  89. package/dist/errors/response.js +34 -0
  90. package/dist/errors/response.js.map +1 -0
  91. package/dist/errors/validation.d.ts +18 -0
  92. package/dist/errors/validation.d.ts.map +1 -0
  93. package/dist/errors/validation.js +21 -0
  94. package/dist/errors/validation.js.map +1 -0
  95. package/dist/events/index.d.ts +58 -0
  96. package/dist/events/index.d.ts.map +1 -0
  97. package/dist/events/index.js +102 -0
  98. package/dist/events/index.js.map +1 -0
  99. package/dist/jobs/index.d.ts +56 -0
  100. package/dist/jobs/index.d.ts.map +1 -0
  101. package/dist/jobs/index.js +89 -0
  102. package/dist/jobs/index.js.map +1 -0
  103. package/dist/mail/index.d.ts +75 -0
  104. package/dist/mail/index.d.ts.map +1 -0
  105. package/dist/mail/index.js +84 -0
  106. package/dist/mail/index.js.map +1 -0
  107. package/dist/openapi/index.d.ts +207 -0
  108. package/dist/openapi/index.d.ts.map +1 -0
  109. package/dist/openapi/index.js +449 -0
  110. package/dist/openapi/index.js.map +1 -0
  111. package/dist/openapi/schema-introspector.d.ts +38 -0
  112. package/dist/openapi/schema-introspector.d.ts.map +1 -0
  113. package/dist/openapi/schema-introspector.js +67 -0
  114. package/dist/openapi/schema-introspector.js.map +1 -0
  115. package/dist/ports/audit.d.ts +58 -0
  116. package/dist/ports/audit.d.ts.map +1 -0
  117. package/dist/ports/audit.js +74 -0
  118. package/dist/ports/audit.js.map +1 -0
  119. package/dist/ports/auth.d.ts +23 -0
  120. package/dist/ports/auth.d.ts.map +1 -0
  121. package/dist/ports/auth.js +31 -0
  122. package/dist/ports/auth.js.map +1 -0
  123. package/dist/ports/builder.d.ts +61 -0
  124. package/dist/ports/builder.d.ts.map +1 -0
  125. package/dist/ports/builder.js +48 -0
  126. package/dist/ports/builder.js.map +1 -0
  127. package/dist/ports/cache.d.ts +15 -0
  128. package/dist/ports/cache.d.ts.map +1 -0
  129. package/dist/ports/cache.js +57 -0
  130. package/dist/ports/cache.js.map +1 -0
  131. package/dist/ports/clock.d.ts +10 -0
  132. package/dist/ports/clock.d.ts.map +1 -0
  133. package/dist/ports/clock.js +21 -0
  134. package/dist/ports/clock.js.map +1 -0
  135. package/dist/ports/events.d.ts +71 -0
  136. package/dist/ports/events.d.ts.map +1 -0
  137. package/dist/ports/events.js +2 -0
  138. package/dist/ports/events.js.map +1 -0
  139. package/dist/ports/id-generator.d.ts +12 -0
  140. package/dist/ports/id-generator.d.ts.map +1 -0
  141. package/dist/ports/id-generator.js +22 -0
  142. package/dist/ports/id-generator.js.map +1 -0
  143. package/dist/ports/index.d.ts +98 -0
  144. package/dist/ports/index.d.ts.map +1 -0
  145. package/dist/ports/index.js +67 -0
  146. package/dist/ports/index.js.map +1 -0
  147. package/dist/ports/logger.d.ts +22 -0
  148. package/dist/ports/logger.d.ts.map +1 -0
  149. package/dist/ports/logger.js +34 -0
  150. package/dist/ports/logger.js.map +1 -0
  151. package/dist/ports/mailer.d.ts +6 -0
  152. package/dist/ports/mailer.d.ts.map +1 -0
  153. package/dist/ports/mailer.js +2 -0
  154. package/dist/ports/mailer.js.map +1 -0
  155. package/dist/ports/policy.d.ts +53 -0
  156. package/dist/ports/policy.d.ts.map +1 -0
  157. package/dist/ports/policy.js +81 -0
  158. package/dist/ports/policy.js.map +1 -0
  159. package/dist/ports/rate-limit.d.ts +41 -0
  160. package/dist/ports/rate-limit.d.ts.map +1 -0
  161. package/dist/ports/rate-limit.js +37 -0
  162. package/dist/ports/rate-limit.js.map +1 -0
  163. package/dist/ports/redaction.d.ts +26 -0
  164. package/dist/ports/redaction.d.ts.map +1 -0
  165. package/dist/ports/redaction.js +126 -0
  166. package/dist/ports/redaction.js.map +1 -0
  167. package/dist/ports/schedules.d.ts +9 -0
  168. package/dist/ports/schedules.d.ts.map +1 -0
  169. package/dist/ports/schedules.js +2 -0
  170. package/dist/ports/schedules.js.map +1 -0
  171. package/dist/ports/storage.d.ts +47 -0
  172. package/dist/ports/storage.d.ts.map +1 -0
  173. package/dist/ports/storage.js +185 -0
  174. package/dist/ports/storage.js.map +1 -0
  175. package/dist/ports/testing.d.ts +73 -0
  176. package/dist/ports/testing.d.ts.map +1 -0
  177. package/dist/ports/testing.js +105 -0
  178. package/dist/ports/testing.js.map +1 -0
  179. package/dist/ports/unit-of-work.d.ts +56 -0
  180. package/dist/ports/unit-of-work.d.ts.map +1 -0
  181. package/dist/ports/unit-of-work.js +64 -0
  182. package/dist/ports/unit-of-work.js.map +1 -0
  183. package/dist/providers/index.d.ts +8 -0
  184. package/dist/providers/index.d.ts.map +1 -0
  185. package/dist/providers/index.js +8 -0
  186. package/dist/providers/index.js.map +1 -0
  187. package/dist/providers/instrumentation.d.ts +91 -0
  188. package/dist/providers/instrumentation.d.ts.map +1 -0
  189. package/dist/providers/instrumentation.js +93 -0
  190. package/dist/providers/instrumentation.js.map +1 -0
  191. package/dist/providers/provider.d.ts +146 -0
  192. package/dist/providers/provider.d.ts.map +1 -0
  193. package/dist/providers/provider.js +31 -0
  194. package/dist/providers/provider.js.map +1 -0
  195. package/dist/schedules/index.d.ts +105 -0
  196. package/dist/schedules/index.d.ts.map +1 -0
  197. package/dist/schedules/index.js +178 -0
  198. package/dist/schedules/index.js.map +1 -0
  199. package/dist/server/contract-like.d.ts +5 -0
  200. package/dist/server/contract-like.d.ts.map +1 -0
  201. package/dist/server/contract-like.js +5 -0
  202. package/dist/server/contract-like.js.map +1 -0
  203. package/dist/server/health.d.ts +41 -0
  204. package/dist/server/health.d.ts.map +1 -0
  205. package/dist/server/health.js +46 -0
  206. package/dist/server/health.js.map +1 -0
  207. package/dist/server/hooks/auth.d.ts +42 -0
  208. package/dist/server/hooks/auth.d.ts.map +1 -0
  209. package/dist/server/hooks/auth.js +61 -0
  210. package/dist/server/hooks/auth.js.map +1 -0
  211. package/dist/server/hooks/cors.d.ts +13 -0
  212. package/dist/server/hooks/cors.d.ts.map +1 -0
  213. package/dist/server/hooks/cors.js +70 -0
  214. package/dist/server/hooks/cors.js.map +1 -0
  215. package/dist/server/hooks/errors.d.ts +66 -0
  216. package/dist/server/hooks/errors.d.ts.map +1 -0
  217. package/dist/server/hooks/errors.js +83 -0
  218. package/dist/server/hooks/errors.js.map +1 -0
  219. package/dist/server/hooks/index.d.ts +12 -0
  220. package/dist/server/hooks/index.d.ts.map +1 -0
  221. package/dist/server/hooks/index.js +12 -0
  222. package/dist/server/hooks/index.js.map +1 -0
  223. package/dist/server/hooks/logging.d.ts +33 -0
  224. package/dist/server/hooks/logging.d.ts.map +1 -0
  225. package/dist/server/hooks/logging.js +90 -0
  226. package/dist/server/hooks/logging.js.map +1 -0
  227. package/dist/server/hooks/rate-limit.d.ts +29 -0
  228. package/dist/server/hooks/rate-limit.d.ts.map +1 -0
  229. package/dist/server/hooks/rate-limit.js +93 -0
  230. package/dist/server/hooks/rate-limit.js.map +1 -0
  231. package/dist/server/hooks/utils.d.ts +9 -0
  232. package/dist/server/hooks/utils.d.ts.map +1 -0
  233. package/dist/server/hooks/utils.js +16 -0
  234. package/dist/server/hooks/utils.js.map +1 -0
  235. package/dist/server/hooks.d.ts +2 -0
  236. package/dist/server/hooks.d.ts.map +1 -0
  237. package/dist/server/hooks.js +2 -0
  238. package/dist/server/hooks.js.map +1 -0
  239. package/dist/server/http.d.ts +124 -0
  240. package/dist/server/http.d.ts.map +1 -0
  241. package/dist/server/http.js +2 -0
  242. package/dist/server/http.js.map +1 -0
  243. package/dist/server/index.d.ts +19 -0
  244. package/dist/server/index.d.ts.map +1 -0
  245. package/dist/server/index.js +15 -0
  246. package/dist/server/index.js.map +1 -0
  247. package/dist/server/openapi.d.ts +32 -0
  248. package/dist/server/openapi.d.ts.map +1 -0
  249. package/dist/server/openapi.js +43 -0
  250. package/dist/server/openapi.js.map +1 -0
  251. package/dist/server/providers/index.d.ts +4 -0
  252. package/dist/server/providers/index.d.ts.map +1 -0
  253. package/dist/server/providers/index.js +4 -0
  254. package/dist/server/providers/index.js.map +1 -0
  255. package/dist/server/providers/loadProviderConfig.d.ts +7 -0
  256. package/dist/server/providers/loadProviderConfig.d.ts.map +1 -0
  257. package/dist/server/providers/loadProviderConfig.js +42 -0
  258. package/dist/server/providers/loadProviderConfig.js.map +1 -0
  259. package/dist/server/server.d.ts +86 -0
  260. package/dist/server/server.d.ts.map +1 -0
  261. package/dist/server/server.js +1031 -0
  262. package/dist/server/server.js.map +1 -0
  263. package/dist/server/types.d.ts +3 -0
  264. package/dist/server/types.d.ts.map +1 -0
  265. package/dist/server/types.js +3 -0
  266. package/dist/server/types.js.map +1 -0
  267. package/package.json +129 -0
  268. package/src/application/index.ts +747 -0
  269. package/src/client/client.ts +1105 -0
  270. package/src/client/index.ts +45 -0
  271. package/src/client/types.ts +305 -0
  272. package/src/config/index.ts +497 -0
  273. package/src/contracts/contract-builder.ts +583 -0
  274. package/src/contracts/contract-group.ts +502 -0
  275. package/src/contracts/contract-like.ts +29 -0
  276. package/src/contracts/index.ts +53 -0
  277. package/src/contracts/openapi-meta.ts +22 -0
  278. package/src/contracts/path-template.ts +91 -0
  279. package/src/contracts/rate-limit.ts +50 -0
  280. package/src/contracts/types.ts +207 -0
  281. package/src/contracts/utils.ts +56 -0
  282. package/src/domain/entity.ts +256 -0
  283. package/src/domain/events.ts +52 -0
  284. package/src/domain/index.ts +18 -0
  285. package/src/domain/value-object.ts +135 -0
  286. package/src/errors/catalog.ts +149 -0
  287. package/src/errors/http.ts +80 -0
  288. package/src/errors/index.ts +28 -0
  289. package/src/errors/response.ts +54 -0
  290. package/src/errors/validation.ts +35 -0
  291. package/src/events/index.ts +246 -0
  292. package/src/jobs/index.ts +211 -0
  293. package/src/mail/index.ts +177 -0
  294. package/src/openapi/index.ts +865 -0
  295. package/src/openapi/schema-introspector.ts +107 -0
  296. package/src/ports/audit.ts +176 -0
  297. package/src/ports/auth.ts +76 -0
  298. package/src/ports/builder.ts +97 -0
  299. package/src/ports/cache.ts +94 -0
  300. package/src/ports/clock.ts +34 -0
  301. package/src/ports/events.ts +100 -0
  302. package/src/ports/id-generator.ts +36 -0
  303. package/src/ports/index.ts +221 -0
  304. package/src/ports/logger.ts +67 -0
  305. package/src/ports/policy.ts +242 -0
  306. package/src/ports/rate-limit.ts +91 -0
  307. package/src/ports/redaction.ts +199 -0
  308. package/src/ports/storage.ts +282 -0
  309. package/src/ports/testing.ts +234 -0
  310. package/src/ports/unit-of-work.ts +134 -0
  311. package/src/providers/index.ts +40 -0
  312. package/src/providers/instrumentation.ts +248 -0
  313. package/src/providers/provider.ts +191 -0
  314. package/src/schedules/index.ts +442 -0
  315. package/src/server/contract-like.ts +8 -0
  316. package/src/server/health.ts +82 -0
  317. package/src/server/hooks/auth.ts +147 -0
  318. package/src/server/hooks/cors.ts +87 -0
  319. package/src/server/hooks/errors.ts +126 -0
  320. package/src/server/hooks/index.ts +43 -0
  321. package/src/server/hooks/logging.ts +121 -0
  322. package/src/server/hooks/rate-limit.ts +171 -0
  323. package/src/server/hooks/utils.ts +16 -0
  324. package/src/server/hooks.ts +1 -0
  325. package/src/server/http.ts +189 -0
  326. package/src/server/index.ts +35 -0
  327. package/src/server/openapi.ts +72 -0
  328. package/src/server/providers/index.ts +3 -0
  329. package/src/server/providers/loadProviderConfig.ts +72 -0
  330. package/src/server/server.ts +1521 -0
  331. package/src/server/types.ts +2 -0
@@ -0,0 +1,93 @@
1
+ import { redactValue } from "../ports/redaction";
2
+ function isObject(value) {
3
+ return typeof value === "object" && value !== null;
4
+ }
5
+ export function isProviderInstrumentation(value) {
6
+ return (isObject(value) &&
7
+ typeof value.record === "function" &&
8
+ typeof value.custom === "function" &&
9
+ typeof value.isEnabled === "function");
10
+ }
11
+ export function isProviderInstrumentationPort(value) {
12
+ return isObject(value) && typeof value.record === "function";
13
+ }
14
+ function resolveProviderInstrumentationValue(value) {
15
+ if (isProviderInstrumentation(value))
16
+ return value.port;
17
+ if (isProviderInstrumentationPort(value))
18
+ return value;
19
+ return undefined;
20
+ }
21
+ export function resolveProviderInstrumentationPort(target) {
22
+ if (!target)
23
+ return undefined;
24
+ const directPort = resolveProviderInstrumentationValue(target);
25
+ if (directPort)
26
+ return directPort;
27
+ if (!isObject(target))
28
+ return undefined;
29
+ return (resolveProviderInstrumentationValue(target.instrumentation) ??
30
+ resolveProviderInstrumentationValue(target.devtools));
31
+ }
32
+ function withProviderDetails(providerName, details) {
33
+ if (details === undefined) {
34
+ return { providerName };
35
+ }
36
+ if (isObject(details) && !Array.isArray(details)) {
37
+ return { ...details, providerName };
38
+ }
39
+ return { providerName, value: details };
40
+ }
41
+ export function createProviderInstrumentation(target, options) {
42
+ if (isProviderInstrumentation(target)) {
43
+ return target;
44
+ }
45
+ const port = resolveProviderInstrumentationPort(target);
46
+ function isEnabled(watcher = options.watcher) {
47
+ if (!port)
48
+ return false;
49
+ if (!watcher)
50
+ return true;
51
+ return port.isWatcherEnabled?.(watcher) ?? true;
52
+ }
53
+ function record(event) {
54
+ if (!port)
55
+ return undefined;
56
+ const watcher = event.watcher ?? options.watcher;
57
+ if (watcher && !isEnabled(watcher))
58
+ return undefined;
59
+ const eventWithWatcher = options.watcher && event.watcher === undefined
60
+ ? { ...event, watcher: options.watcher }
61
+ : event;
62
+ let redacted;
63
+ try {
64
+ redacted = options.redact
65
+ ? options.redact(redactValue(eventWithWatcher))
66
+ : redactValue(eventWithWatcher);
67
+ }
68
+ catch {
69
+ return undefined;
70
+ }
71
+ try {
72
+ return port.record(redacted);
73
+ }
74
+ catch {
75
+ return undefined;
76
+ }
77
+ }
78
+ function custom(event) {
79
+ return record({
80
+ ...event,
81
+ type: "custom",
82
+ watcher: event.watcher ?? options.watcher,
83
+ details: withProviderDetails(options.providerName, event.details),
84
+ });
85
+ }
86
+ return {
87
+ port,
88
+ isEnabled,
89
+ record,
90
+ custom,
91
+ };
92
+ }
93
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/providers/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Provider system for Beignet
3
+ *
4
+ * Providers are modular extensions that can add new ports or replace existing ones
5
+ * during application initialization. They support configuration via Standard Schema
6
+ * and optional lifecycle hooks.
7
+ */
8
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
9
+ type ProviderPorts = Record<string, unknown>;
10
+ declare const noProvidedPorts: unique symbol;
11
+ type NoProvidedPorts = {
12
+ [noProvidedPorts]?: never;
13
+ };
14
+ /**
15
+ * Extract the output type from a Standard Schema.
16
+ * This is the validated/parsed type that results from schema validation.
17
+ */
18
+ export type InferOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
19
+ /**
20
+ * Configuration definition for a service provider.
21
+ * Specifies the schema for validating config and optional environment variable prefix.
22
+ */
23
+ export interface ProviderConfigDef<CfgSchema extends StandardSchemaV1> {
24
+ /**
25
+ * Standard Schema for validating provider configuration.
26
+ * Can be Zod, Valibot, ArkType, or any Standard Schema compatible library.
27
+ */
28
+ schema: CfgSchema;
29
+ /**
30
+ * Optional prefix to read env vars, e.g. "REDIS_".
31
+ * When provided, the implementation will read process.env keys starting with this prefix
32
+ * and pass them to the schema for validation.
33
+ */
34
+ envPrefix?: string;
35
+ }
36
+ export type MaybePromise<T> = T | Promise<T>;
37
+ export type ProviderLifecycleContext = {
38
+ ports: Readonly<ProviderPorts>;
39
+ };
40
+ export type ProviderSetupResult<ProvidedPorts extends ProviderPorts> = {
41
+ /**
42
+ * Ports contributed by this provider.
43
+ * Keys overwrite earlier ports with the same name at runtime. Prefer unique
44
+ * keys unless the replacement implements the same port contract.
45
+ */
46
+ ports?: ProvidedPorts;
47
+ /**
48
+ * Optional hook called after all providers have contributed their ports.
49
+ */
50
+ start?: (ctx: ProviderLifecycleContext) => MaybePromise<void>;
51
+ /**
52
+ * Optional hook called when the server is stopped.
53
+ */
54
+ stop?: (ctx: ProviderLifecycleContext) => MaybePromise<void>;
55
+ };
56
+ /**
57
+ * A service provider that can extend or replace ports during app initialization.
58
+ *
59
+ * Providers support:
60
+ * - Configuration via Standard Schema (any compatible library: Zod, Valibot, etc.)
61
+ * - Returning ports with new capabilities (e.g., cache, mailer)
62
+ * - Replacing existing ports by returning the same key
63
+ * - Optional start/stop hooks
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const redisProvider = createProvider({
68
+ * name: "redis",
69
+ * config: {
70
+ * schema: z.object({ URL: z.string().url() }),
71
+ * envPrefix: "REDIS_",
72
+ * },
73
+ * async setup({ config }) {
74
+ * const client = new Redis(config.URL);
75
+ * return {
76
+ * ports: {
77
+ * cache: {
78
+ * get: (key) => client.get(key),
79
+ * set: (key, value) => client.set(key, value),
80
+ * },
81
+ * },
82
+ * stop: () => client.quit(),
83
+ * };
84
+ * },
85
+ * });
86
+ * ```
87
+ */
88
+ export interface ServiceProvider<Ports, CfgSchema extends StandardSchemaV1 = StandardSchemaV1<void, void>, ProvidedPorts extends ProviderPorts = NoProvidedPorts> {
89
+ /**
90
+ * Unique name for this provider (used for logging/debugging)
91
+ */
92
+ name: string;
93
+ /**
94
+ * Optional configuration definition.
95
+ * If provided, the config will be loaded and validated before calling setup.
96
+ */
97
+ config?: ProviderConfigDef<CfgSchema>;
98
+ /**
99
+ * Setup phase: create the ports this provider contributes.
100
+ * Called during app initialization, before routes are registered.
101
+ *
102
+ * @param ctx.ports - Ports contributed by previous providers
103
+ * @param ctx.config - Validated config (if config was defined), or undefined
104
+ */
105
+ setup(ctx: {
106
+ ports: Readonly<Ports>;
107
+ config: InferOutput<CfgSchema> | undefined;
108
+ }): MaybePromise<ProviderSetupResult<ProvidedPorts>>;
109
+ /**
110
+ * Type-only marker for ports this provider contributes.
111
+ * Runtime provider objects do not need to set this property.
112
+ */
113
+ readonly __providedPorts?: ProvidedPorts;
114
+ }
115
+ /**
116
+ * Extract the ports a provider contributes.
117
+ */
118
+ export type ProvidedPortsOf<TProvider> = TProvider extends ServiceProvider<infer _Ports, infer _CfgSchema, infer ProvidedPorts> ? ProvidedPorts : NoProvidedPorts;
119
+ type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer I) => void ? I : never;
120
+ /**
121
+ * Extract and merge the ports contributed by a provider list.
122
+ */
123
+ export type ProvidedPortsOfList<TProviders> = TProviders extends readonly unknown[] ? [TProviders[number]] extends [never] ? NoProvidedPorts : UnionToIntersection<ProvidedPortsOf<TProviders[number]>> : NoProvidedPorts;
124
+ /**
125
+ * Helper function to create a provider with proper type inference.
126
+ *
127
+ * This is a simple identity function that helps TypeScript infer the correct types
128
+ * for the provider definition.
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * export const myProvider = createProvider({
133
+ * name: "my-provider",
134
+ * config: {
135
+ * schema: z.object({ apiKey: z.string() }),
136
+ * envPrefix: "MY_SERVICE_",
137
+ * },
138
+ * async setup({ config }) {
139
+ * return { ports: { myService: createMyService(config) } };
140
+ * },
141
+ * });
142
+ * ```
143
+ */
144
+ export declare function createProvider<Ports = unknown, CfgSchema extends StandardSchemaV1 = StandardSchemaV1<void, void>, ProvidedPorts extends ProviderPorts = NoProvidedPorts>(def: ServiceProvider<Ports, CfgSchema, ProvidedPorts>): ServiceProvider<Ports, CfgSchema, ProvidedPorts>;
145
+ export {};
146
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/providers/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Provider system for Beignet
3
+ *
4
+ * Providers are modular extensions that can add new ports or replace existing ones
5
+ * during application initialization. They support configuration via Standard Schema
6
+ * and optional lifecycle hooks.
7
+ */
8
+ /**
9
+ * Helper function to create a provider with proper type inference.
10
+ *
11
+ * This is a simple identity function that helps TypeScript infer the correct types
12
+ * for the provider definition.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * export const myProvider = createProvider({
17
+ * name: "my-provider",
18
+ * config: {
19
+ * schema: z.object({ apiKey: z.string() }),
20
+ * envPrefix: "MY_SERVICE_",
21
+ * },
22
+ * async setup({ config }) {
23
+ * return { ports: { myService: createMyService(config) } };
24
+ * },
25
+ * });
26
+ * ```
27
+ */
28
+ export function createProvider(def) {
29
+ return def;
30
+ }
31
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/providers/provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4JH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAK5B,GAAqD;IAErD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,105 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
2
+ export type StandardSchema = StandardSchemaV1<unknown, unknown>;
3
+ export type MaybePromise<T> = T | Promise<T>;
4
+ export type InferSchemaOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
5
+ export type ScheduleDateInput = Date | string | number;
6
+ export interface ScheduleRunContext {
7
+ readonly id?: string;
8
+ readonly scheduledAt?: Date;
9
+ readonly triggeredAt: Date;
10
+ readonly source?: string;
11
+ }
12
+ export interface SchedulePayloadDef<Name extends string = string, Payload extends StandardSchema = StandardSchema> {
13
+ readonly name: Name;
14
+ readonly payload: Payload;
15
+ }
16
+ export interface ScheduleDef<Name extends string = string, Payload extends StandardSchema = StandardSchema, Ctx = unknown> extends SchedulePayloadDef<Name, Payload> {
17
+ readonly kind: "schedule";
18
+ readonly cron: string;
19
+ readonly timezone?: string;
20
+ readonly description?: string;
21
+ createPayload?(args: ScheduleCreatePayloadArgs<ScheduleDef<Name, Payload, Ctx>>): MaybePromise<InferSchemaOutput<Payload>>;
22
+ handle(args: ScheduleHandleArgs<ScheduleDef<Name, Payload, Ctx>, Ctx>): MaybePromise<void>;
23
+ }
24
+ export type InferSchedulePayload<S extends SchedulePayloadDef> = S["payload"] extends StandardSchemaV1<unknown, infer Output> ? Output : never;
25
+ export interface ScheduleCreatePayloadArgs<S extends SchedulePayloadDef> {
26
+ schedule: S;
27
+ run: ScheduleRunContext;
28
+ }
29
+ export interface ScheduleHandleArgs<S extends ScheduleDef, Ctx> {
30
+ schedule: S;
31
+ payload: InferSchedulePayload<S>;
32
+ ctx: Ctx;
33
+ run: ScheduleRunContext;
34
+ }
35
+ export interface DefineScheduleOptions<Name extends string, Payload extends StandardSchema, Ctx> {
36
+ cron: string;
37
+ timezone?: string;
38
+ payload: Payload;
39
+ description?: string;
40
+ createPayload?(args: ScheduleCreatePayloadArgs<ScheduleDef<Name, Payload, Ctx>>): MaybePromise<InferSchemaOutput<Payload>>;
41
+ handle(args: ScheduleHandleArgs<ScheduleDef<Name, Payload, Ctx>, Ctx>): MaybePromise<void>;
42
+ }
43
+ export interface ScheduleRunOptions<Payload = unknown> {
44
+ payload?: Payload;
45
+ id?: string;
46
+ scheduledAt?: ScheduleDateInput;
47
+ triggeredAt?: ScheduleDateInput;
48
+ source?: string;
49
+ }
50
+ export type ScheduleRunArgs<Ctx, Payload = unknown> = ScheduleRunOptions<Payload> & {
51
+ ctx: Ctx;
52
+ };
53
+ export interface ScheduleLifecycleArgs<S extends ScheduleDef = ScheduleDef> {
54
+ schedule: S;
55
+ payload: InferSchedulePayload<S>;
56
+ run: ScheduleRunContext;
57
+ }
58
+ export interface ScheduleErrorArgs<S extends ScheduleDef = ScheduleDef> {
59
+ schedule: S;
60
+ payload?: InferSchedulePayload<S>;
61
+ run: ScheduleRunContext;
62
+ error: unknown;
63
+ }
64
+ export type ScheduleHookName = "start" | "success" | "error";
65
+ export interface ScheduleHookErrorArgs<S extends ScheduleDef = ScheduleDef> {
66
+ schedule: S;
67
+ payload?: InferSchedulePayload<S>;
68
+ run: ScheduleRunContext;
69
+ hook: ScheduleHookName;
70
+ error: unknown;
71
+ scheduleError?: unknown;
72
+ }
73
+ export interface InlineScheduleRunnerOptions<Ctx> {
74
+ ctx?: Ctx | (() => MaybePromise<Ctx>);
75
+ now?: () => Date;
76
+ onStart?<S extends ScheduleDef<string, StandardSchema, Ctx>>(args: ScheduleLifecycleArgs<S>): MaybePromise<void>;
77
+ onSuccess?<S extends ScheduleDef<string, StandardSchema, Ctx>>(args: ScheduleLifecycleArgs<S>): MaybePromise<void>;
78
+ onError?<S extends ScheduleDef<string, StandardSchema, Ctx>>(args: ScheduleErrorArgs<S>): MaybePromise<void>;
79
+ onHookError?<S extends ScheduleDef<string, StandardSchema, Ctx>>(args: ScheduleHookErrorArgs<S>): MaybePromise<void>;
80
+ }
81
+ export interface ScheduleRunnerPort<Ctx = unknown> {
82
+ run<S extends ScheduleDef<string, StandardSchema, Ctx>>(schedule: S, options?: ScheduleRunOptions<InferSchedulePayload<S>>): Promise<void>;
83
+ }
84
+ export interface InlineScheduleRunner<Ctx = unknown> extends ScheduleRunnerPort<Ctx> {
85
+ }
86
+ export interface ScheduleHandlers<Ctx> {
87
+ defineSchedule<Name extends string, Payload extends StandardSchema>(name: Name, options: DefineScheduleOptions<Name, Payload, Ctx>): ScheduleDef<Name, Payload, Ctx>;
88
+ createInlineScheduleRunner(options?: InlineScheduleRunnerOptions<Ctx>): InlineScheduleRunner<Ctx>;
89
+ }
90
+ export declare class ScheduleValidationError extends Error {
91
+ readonly issues: readonly StandardSchemaV1.Issue[];
92
+ constructor(args: {
93
+ name: string;
94
+ issues: readonly StandardSchemaV1.Issue[];
95
+ });
96
+ }
97
+ export declare class ScheduleRunContextError extends Error {
98
+ constructor(message: string);
99
+ }
100
+ export declare function defineSchedule<Name extends string, Payload extends StandardSchema, Ctx = unknown>(name: Name, options: DefineScheduleOptions<Name, Payload, Ctx>): ScheduleDef<Name, Payload, Ctx>;
101
+ export declare function parseSchedulePayload<S extends SchedulePayloadDef>(schedule: S, payload: unknown): Promise<InferSchedulePayload<S>>;
102
+ export declare function runSchedule<Ctx, S extends ScheduleDef<string, StandardSchema, Ctx>>(schedule: S, args: ScheduleRunArgs<Ctx, InferSchedulePayload<S>>): Promise<void>;
103
+ export declare function createInlineScheduleRunner<Ctx>(options?: InlineScheduleRunnerOptions<Ctx>): InlineScheduleRunner<Ctx>;
104
+ export declare function createScheduleHandlers<Ctx>(): ScheduleHandlers<Ctx>;
105
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ export class ScheduleValidationError extends Error {
2
+ issues;
3
+ constructor(args) {
4
+ super(`Schedule "${args.name}" payload validation failed: ${formatIssues(args.issues)}`);
5
+ this.name = "ScheduleValidationError";
6
+ this.issues = args.issues;
7
+ }
8
+ }
9
+ export class ScheduleRunContextError extends Error {
10
+ constructor(message) {
11
+ super(message);
12
+ this.name = "ScheduleRunContextError";
13
+ }
14
+ }
15
+ function formatPath(path) {
16
+ if (!path?.length)
17
+ return "";
18
+ return path
19
+ .map((segment) => typeof segment === "object" && segment !== null && "key" in segment
20
+ ? String(segment.key)
21
+ : String(segment))
22
+ .join(".");
23
+ }
24
+ function formatIssues(issues) {
25
+ return issues
26
+ .map((issue) => {
27
+ const path = formatPath(issue.path);
28
+ return path ? `${path}: ${issue.message}` : issue.message;
29
+ })
30
+ .join("; ");
31
+ }
32
+ async function parsePayload(schema, input, args) {
33
+ const result = await schema["~standard"].validate(input);
34
+ if (result.issues?.length) {
35
+ throw new ScheduleValidationError({
36
+ name: args.name,
37
+ issues: result.issues,
38
+ });
39
+ }
40
+ if ("value" in result) {
41
+ return result.value;
42
+ }
43
+ throw new Error("Invalid Standard Schema result: missing value");
44
+ }
45
+ function normalizeDate(value, field, fallback) {
46
+ if (value === undefined)
47
+ return fallback();
48
+ const date = value instanceof Date ? new Date(value.getTime()) : new Date(value);
49
+ if (Number.isNaN(date.getTime())) {
50
+ throw new ScheduleRunContextError(`Schedule run ${field} must be a valid date.`);
51
+ }
52
+ return date;
53
+ }
54
+ function normalizeOptionalDate(value, field) {
55
+ if (value === undefined)
56
+ return undefined;
57
+ return normalizeDate(value, field, () => new Date());
58
+ }
59
+ function createRunContext(options, now) {
60
+ return {
61
+ id: options.id,
62
+ scheduledAt: normalizeOptionalDate(options.scheduledAt, "scheduledAt"),
63
+ triggeredAt: normalizeDate(options.triggeredAt, "triggeredAt", now),
64
+ source: options.source,
65
+ };
66
+ }
67
+ async function resolveCtx(ctx) {
68
+ if (typeof ctx === "function") {
69
+ return ctx();
70
+ }
71
+ return ctx;
72
+ }
73
+ async function resolveSchedulePayload(schedule, options, run) {
74
+ const hasExplicitPayload = Object.hasOwn(options, "payload");
75
+ const rawPayload = hasExplicitPayload
76
+ ? options.payload
77
+ : await schedule.createPayload?.({ schedule, run });
78
+ return parseSchedulePayload(schedule, rawPayload);
79
+ }
80
+ async function reportHookError(onHookError, args) {
81
+ try {
82
+ await onHookError?.(args);
83
+ }
84
+ catch {
85
+ // Hook failures are isolated from schedule execution.
86
+ }
87
+ }
88
+ async function runLifecycleHook(hook, handler, onHookError, args) {
89
+ try {
90
+ await handler?.(args);
91
+ }
92
+ catch (error) {
93
+ await reportHookError(onHookError, { ...args, hook, error });
94
+ }
95
+ }
96
+ async function runErrorHook(handler, onHookError, args) {
97
+ try {
98
+ await handler?.(args);
99
+ }
100
+ catch (error) {
101
+ await reportHookError(onHookError, {
102
+ schedule: args.schedule,
103
+ payload: args.payload,
104
+ run: args.run,
105
+ hook: "error",
106
+ error,
107
+ scheduleError: args.error,
108
+ });
109
+ }
110
+ }
111
+ export function defineSchedule(name, options) {
112
+ return {
113
+ kind: "schedule",
114
+ name,
115
+ cron: options.cron,
116
+ timezone: options.timezone,
117
+ payload: options.payload,
118
+ description: options.description,
119
+ createPayload: options.createPayload,
120
+ handle: options.handle,
121
+ };
122
+ }
123
+ export async function parseSchedulePayload(schedule, payload) {
124
+ return (await parsePayload(schedule.payload, payload, {
125
+ name: schedule.name,
126
+ }));
127
+ }
128
+ export async function runSchedule(schedule, args) {
129
+ const run = createRunContext(args, () => new Date());
130
+ const payload = await resolveSchedulePayload(schedule, args, run);
131
+ await schedule.handle({
132
+ schedule,
133
+ payload,
134
+ ctx: args.ctx,
135
+ run,
136
+ });
137
+ }
138
+ export function createInlineScheduleRunner(options = {}) {
139
+ const now = options.now ?? (() => new Date());
140
+ return {
141
+ async run(schedule, runOptions = {}) {
142
+ const run = createRunContext(runOptions, now);
143
+ let payload;
144
+ try {
145
+ payload = await resolveSchedulePayload(schedule, runOptions, run);
146
+ const lifecycleArgs = { schedule, payload, run };
147
+ await runLifecycleHook("start", options.onStart, options.onHookError, lifecycleArgs);
148
+ await schedule.handle({
149
+ schedule,
150
+ payload,
151
+ ctx: await resolveCtx(options.ctx),
152
+ run,
153
+ });
154
+ await runLifecycleHook("success", options.onSuccess, options.onHookError, lifecycleArgs);
155
+ }
156
+ catch (error) {
157
+ await runErrorHook(options.onError, options.onHookError, {
158
+ error,
159
+ schedule,
160
+ payload,
161
+ run,
162
+ });
163
+ throw error;
164
+ }
165
+ },
166
+ };
167
+ }
168
+ export function createScheduleHandlers() {
169
+ return {
170
+ defineSchedule(name, options) {
171
+ return defineSchedule(name, options);
172
+ },
173
+ createInlineScheduleRunner(options = {}) {
174
+ return createInlineScheduleRunner(options);
175
+ },
176
+ };
177
+ }
178
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Re-export contract resolution utilities for the server runtime.
3
+ */
4
+ export { type ContractLike, type ResolveContract, resolveContract, } from "../contracts";
5
+ //# sourceMappingURL=contract-like.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-like.d.ts","sourceRoot":"","sources":["../../src/server/contract-like.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Re-export contract resolution utilities for the server runtime.
3
+ */
4
+ export { resolveContract, } from "../contracts";
5
+ //# sourceMappingURL=contract-like.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-like.js","sourceRoot":"","sources":["../../src/server/contract-like.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Health check handler
3
+ * Health check handler for Beignet server adapters.
4
+ */
5
+ import type { AnyPorts } from "../ports";
6
+ import type { HttpRequestLike, HttpResponseLike } from "./types";
7
+ /**
8
+ * Health check result
9
+ */
10
+ export interface HealthCheckResult {
11
+ ok: boolean;
12
+ details?: Record<string, {
13
+ ok: boolean;
14
+ message?: string;
15
+ }>;
16
+ }
17
+ /**
18
+ * Health check configuration
19
+ */
20
+ export interface HealthConfig<Ports> {
21
+ /** Enable health endpoint (default: false) */
22
+ enabled?: boolean;
23
+ /**
24
+ * Suggested path for the health endpoint (e.g., "/api/health").
25
+ * NOTE: This field is for documentation/metadata only and does not control routing.
26
+ * You must manually wire the healthHandler to your desired route.
27
+ */
28
+ suggestedPath?: string;
29
+ /** Custom health check function */
30
+ check?: (ports: Ports) => Promise<HealthCheckResult>;
31
+ }
32
+ /**
33
+ * Application environment type
34
+ */
35
+ export type AppEnvironment = "development" | "production" | "test";
36
+ /**
37
+ * Create a health check handler
38
+ * Returns a function that can be called with an HttpRequestLike to get an HttpResponseLike
39
+ */
40
+ export declare function createHealthHandler<Ports extends AnyPorts>(ports: Ports, healthConfig: HealthConfig<Ports> | undefined, env: AppEnvironment): (req: HttpRequestLike) => Promise<HttpResponseLike>;
41
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK;IACjC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,QAAQ,EACxD,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,SAAS,EAC7C,GAAG,EAAE,cAAc,GAClB,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAoCrD"}