@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,531 @@
1
+ import { BEIGNET_ERROR_OWNER_HEADER, getContractHeaderSchemas, methodSupportsRequestBody, parsePathTemplate, resolveContract, } from "../contracts";
2
+ import { isErrorResponseBody, SchemaValidationError } from "../errors";
3
+ /**
4
+ * HTTP client error with contract metadata
5
+ */
6
+ export class ContractError extends Error {
7
+ source;
8
+ status;
9
+ code;
10
+ body;
11
+ details;
12
+ response;
13
+ cause;
14
+ constructor(args) {
15
+ super(args.message);
16
+ this.name = "ContractError";
17
+ this.source = args.source;
18
+ this.status = args.status;
19
+ this.code = args.code;
20
+ this.body = args.body;
21
+ this.details = args.details;
22
+ this.response = args.response;
23
+ this.cause = args.cause;
24
+ }
25
+ /**
26
+ * Check if this error has a specific HTTP status code
27
+ */
28
+ hasStatus(status) {
29
+ return this.status === status;
30
+ }
31
+ /**
32
+ * Check if this error came from a specific source.
33
+ */
34
+ hasSource(source) {
35
+ return this.source === source;
36
+ }
37
+ /**
38
+ * Check if this error has a specific error code
39
+ */
40
+ hasCode(code) {
41
+ return this.code === code;
42
+ }
43
+ }
44
+ export function isContractError(err, criteria) {
45
+ const status = typeof criteria === "number" ? criteria : criteria?.status;
46
+ const source = typeof criteria === "object" ? criteria.source : undefined;
47
+ const code = typeof criteria === "object" ? criteria.code : undefined;
48
+ return (err instanceof ContractError &&
49
+ (status === undefined || err.status === status) &&
50
+ (source === undefined || err.source === source) &&
51
+ (code === undefined || err.code === code));
52
+ }
53
+ function formatQuotedList(values) {
54
+ return values.map((value) => `"${value}"`).join(", ");
55
+ }
56
+ function createMissingPathParamsMessage(path, missing, provided) {
57
+ const label = missing.length === 1 ? "parameter" : "parameters";
58
+ const providedSuffix = provided.length
59
+ ? ` (provided: ${provided.join(", ")})`
60
+ : "";
61
+ return `Missing required path ${label} ${formatQuotedList(missing)} for path "${path}"${providedSuffix}`;
62
+ }
63
+ /**
64
+ * Validate data using a Standard Schema validator
65
+ * Throws SchemaValidationError if validation fails
66
+ */
67
+ async function validateSchema(schema, data) {
68
+ const result = await schema["~standard"].validate(data);
69
+ if (result.issues?.length) {
70
+ throw new SchemaValidationError(result.issues);
71
+ }
72
+ if ("value" in result) {
73
+ return result.value;
74
+ }
75
+ throw new Error("Invalid Standard Schema result: missing value");
76
+ }
77
+ function normalizeHeaderRecord(headers) {
78
+ const normalized = {};
79
+ for (const [key, value] of Object.entries(headers)) {
80
+ if (value !== undefined) {
81
+ normalized[key.toLowerCase()] = value;
82
+ }
83
+ }
84
+ return normalized;
85
+ }
86
+ function serializeParsedHeaders(parsed) {
87
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
88
+ return {};
89
+ }
90
+ const headers = {};
91
+ for (const [key, value] of Object.entries(parsed)) {
92
+ if (value !== undefined && value !== null) {
93
+ headers[key.toLowerCase()] = String(value);
94
+ }
95
+ }
96
+ return headers;
97
+ }
98
+ async function validateHeaderSchemas(schemas, headers) {
99
+ let validatedHeaders = headers;
100
+ for (const schema of schemas) {
101
+ const parsed = await validateSchema(schema, headers);
102
+ validatedHeaders = {
103
+ ...validatedHeaders,
104
+ ...serializeParsedHeaders(parsed),
105
+ };
106
+ }
107
+ return validatedHeaders;
108
+ }
109
+ /**
110
+ * Endpoint wrapper for a specific contract
111
+ */
112
+ export class Endpoint {
113
+ contract;
114
+ config;
115
+ constructor(contract, config) {
116
+ this.contract = contract;
117
+ this.config = config;
118
+ }
119
+ isError(err, criteria) {
120
+ return isContractError(err, criteria);
121
+ }
122
+ /**
123
+ * Call the endpoint with the given arguments
124
+ */
125
+ async call(...callArgs) {
126
+ const result = await this.safeCall(...callArgs);
127
+ if (!result.ok) {
128
+ throw result.error;
129
+ }
130
+ return result.data;
131
+ }
132
+ /**
133
+ * Call the endpoint and return a typed result instead of throwing ContractError.
134
+ */
135
+ async safeCall(...callArgs) {
136
+ const args = (callArgs[0] ?? {});
137
+ try {
138
+ if (args.body !== undefined && args.rawBody !== undefined) {
139
+ throw this.createError(undefined, "INVALID_REQUEST_BODY", "Pass either body or rawBody, not both.");
140
+ }
141
+ const methodSupportsBody = methodSupportsRequestBody(this.contract.method);
142
+ if ((args.body !== undefined || args.rawBody !== undefined) &&
143
+ !methodSupportsBody) {
144
+ throw this.createError(undefined, "INVALID_REQUEST_BODY", `Request bodies are not supported for ${this.contract.method} contracts. Use POST, PUT, or PATCH for contract request bodies.`);
145
+ }
146
+ let requestBody;
147
+ let requestBodyType;
148
+ if (args.rawBody !== undefined && methodSupportsBody) {
149
+ requestBody = args.rawBody;
150
+ requestBodyType = "raw";
151
+ }
152
+ if (args.body !== undefined && methodSupportsBody) {
153
+ let bodyToSend = args.body;
154
+ if (this.config.validate && this.contract.body) {
155
+ try {
156
+ bodyToSend = (await validateSchema(this.contract.body, args.body));
157
+ }
158
+ catch (err) {
159
+ if (err instanceof SchemaValidationError) {
160
+ throw this.createError(422, "VALIDATION_ERROR", "Body validation failed", err.issues);
161
+ }
162
+ throw err;
163
+ }
164
+ }
165
+ requestBody = JSON.stringify(bodyToSend);
166
+ requestBodyType = "json";
167
+ }
168
+ const url = await this.buildUrl(args.path, args.query);
169
+ let headers = await this.buildHeaders(args.headers, requestBodyType === "json");
170
+ if (this.config.validate) {
171
+ const headerSchemas = getContractHeaderSchemas(this.contract.headers);
172
+ if (headerSchemas.length > 0) {
173
+ try {
174
+ headers = await validateHeaderSchemas(headerSchemas, headers);
175
+ }
176
+ catch (err) {
177
+ if (err instanceof SchemaValidationError) {
178
+ throw this.createError(422, "VALIDATION_ERROR", "Headers validation failed", err.issues);
179
+ }
180
+ throw err;
181
+ }
182
+ }
183
+ }
184
+ const fetchFn = this.config.fetch || fetch;
185
+ const options = {
186
+ method: this.contract.method,
187
+ headers,
188
+ signal: args.signal,
189
+ };
190
+ if (requestBody !== undefined) {
191
+ options.body = requestBody;
192
+ }
193
+ const response = await fetchFn(url, options);
194
+ // Handle non-2xx responses
195
+ if (!response.ok) {
196
+ let errorBody;
197
+ try {
198
+ errorBody = await parseResponseBody(response);
199
+ }
200
+ catch (parseErr) {
201
+ // JSON parse failed — still report the HTTP error
202
+ throw this.createError(response.status, "INVALID_JSON", createInvalidJsonMessage("error", response.status), undefined, parseErr, undefined, response, "contract");
203
+ }
204
+ const validatedError = await validateErrorBodyOrStandardEnvelope(this.contract, response, errorBody);
205
+ const errorPayload = getErrorPayload(validatedError);
206
+ throw this.createError(response.status, errorPayload.code || "HTTP_ERROR", errorPayload.message || response.statusText, errorPayload.details, undefined, validatedError, response, "http");
207
+ }
208
+ // Parse response
209
+ let data;
210
+ try {
211
+ data = await parseResponseBody(response);
212
+ }
213
+ catch (parseErr) {
214
+ throw this.createError(response.status, "INVALID_JSON", createInvalidJsonMessage("success", response.status), undefined, parseErr, undefined, response, "contract");
215
+ }
216
+ // Validate response if schema exists for this status
217
+ const statusKey = String(response.status);
218
+ const hasSchema = statusKey in this.contract.responses;
219
+ const hasDeclaredResponses = Object.keys(this.contract.responses).length > 0;
220
+ const responseSchema = this.contract.responses[response.status];
221
+ if (hasSchema && responseSchema === null) {
222
+ if (data !== undefined && data !== null) {
223
+ throw this.createError(response.status, "RESPONSE_VALIDATION_ERROR", `Response validation failed for ${this.contract.method} ${this.contract.path} (status ${response.status}, contract: ${this.contract.name})`, [
224
+ {
225
+ message: "Response body must be empty for a null response schema.",
226
+ },
227
+ ], undefined, data, response, "contract");
228
+ }
229
+ }
230
+ else if (hasSchema && responseSchema) {
231
+ try {
232
+ data = await validateSchema(responseSchema, data);
233
+ }
234
+ catch (err) {
235
+ if (err instanceof SchemaValidationError) {
236
+ throw this.createError(response.status, "RESPONSE_VALIDATION_ERROR", `Response validation failed for ${this.contract.method} ${this.contract.path} (status ${response.status}, contract: ${this.contract.name})`, err.issues, err, data, response, "contract");
237
+ }
238
+ throw err;
239
+ }
240
+ }
241
+ else if (!hasSchema && hasDeclaredResponses) {
242
+ throw this.createError(response.status, "UNDECLARED_RESPONSE_STATUS", `Server returned undeclared status ${response.status} for ${this.contract.method} ${this.contract.path} (contract: ${this.contract.name})`, undefined, undefined, data, response, "contract");
243
+ }
244
+ return {
245
+ ok: true,
246
+ status: response.status,
247
+ data: data,
248
+ response,
249
+ };
250
+ }
251
+ catch (err) {
252
+ if (err instanceof ContractError) {
253
+ const error = err;
254
+ return {
255
+ ok: false,
256
+ status: error.status,
257
+ error,
258
+ response: error.response,
259
+ };
260
+ }
261
+ const error = this.createError(undefined, "NETWORK_ERROR", err instanceof Error ? err.message : "Network request failed", undefined, err, undefined, undefined, "network");
262
+ return {
263
+ ok: false,
264
+ status: error.status,
265
+ error,
266
+ response: error.response,
267
+ };
268
+ }
269
+ }
270
+ /**
271
+ * Build the full URL with path and query parameters
272
+ */
273
+ async buildUrl(path, query) {
274
+ let parsedPath;
275
+ try {
276
+ parsedPath = parsePathTemplate(this.contract.path);
277
+ }
278
+ catch (cause) {
279
+ throw new ContractError({
280
+ source: "client",
281
+ code: "INVALID_PATH_TEMPLATE",
282
+ message: cause instanceof Error ? cause.message : String(cause),
283
+ cause,
284
+ });
285
+ }
286
+ let pathToSerialize = path;
287
+ // Replace path parameters
288
+ if (path && parsedPath.keys.length > 0) {
289
+ // Validate path params if schema exists and validation is enabled
290
+ if (this.config.validate && this.contract.pathParams) {
291
+ try {
292
+ pathToSerialize = (await validateSchema(this.contract.pathParams, path));
293
+ }
294
+ catch (err) {
295
+ if (err instanceof SchemaValidationError) {
296
+ throw this.createError(422, "VALIDATION_ERROR", "Path params validation failed", err.issues);
297
+ }
298
+ throw err;
299
+ }
300
+ }
301
+ }
302
+ const normalizedPath = pathToSerialize ?? path;
303
+ const missingPathParams = [
304
+ ...new Set(parsedPath.keys.filter((key) => normalizedPath?.[key] === undefined)),
305
+ ];
306
+ if (missingPathParams.length) {
307
+ const provided = path ? Object.keys(path) : [];
308
+ throw new ContractError({
309
+ source: "client",
310
+ code: "MISSING_PATH_PARAMS",
311
+ message: createMissingPathParamsMessage(this.contract.path, missingPathParams, provided),
312
+ });
313
+ }
314
+ let url = `/${parsedPath.segments
315
+ .map((segment) => segment.kind === "static"
316
+ ? segment.value
317
+ : encodeURIComponent(String(normalizedPath?.[segment.name])))
318
+ .join("/")}`;
319
+ // Add query parameters
320
+ let queryToSerialize = query;
321
+ if (query) {
322
+ // Validate query params if schema exists and validation is enabled
323
+ if (this.config.validate && this.contract.query) {
324
+ try {
325
+ queryToSerialize = (await validateSchema(this.contract.query, query));
326
+ }
327
+ catch (err) {
328
+ if (err instanceof SchemaValidationError) {
329
+ throw this.createError(422, "VALIDATION_ERROR", "Query params validation failed", err.issues);
330
+ }
331
+ throw err;
332
+ }
333
+ }
334
+ const params = new URLSearchParams();
335
+ const normalizedQuery = queryToSerialize ?? query;
336
+ for (const [key, value] of Object.entries(normalizedQuery)) {
337
+ if (value !== undefined && value !== null) {
338
+ if (typeof value === "object" && !Array.isArray(value)) {
339
+ throw new ContractError({
340
+ source: "client",
341
+ code: "INVALID_QUERY_PARAM",
342
+ message: `Query parameter "${key}" contains a non-serializable object. Use primitive values or arrays of primitives.`,
343
+ });
344
+ }
345
+ if (Array.isArray(value)) {
346
+ for (const v of value) {
347
+ if (typeof v === "object" && v !== null) {
348
+ throw new ContractError({
349
+ source: "client",
350
+ code: "INVALID_QUERY_PARAM",
351
+ message: `Query parameter "${key}" contains a non-serializable array element. Use primitive values only.`,
352
+ });
353
+ }
354
+ params.append(key, String(v));
355
+ }
356
+ }
357
+ else {
358
+ params.append(key, String(value));
359
+ }
360
+ }
361
+ }
362
+ const queryString = params.toString();
363
+ if (queryString) {
364
+ url += `?${queryString}`;
365
+ }
366
+ }
367
+ // Prepend base URL, normalizing trailing/leading slashes
368
+ const baseUrl = this.config.baseUrl || "";
369
+ if (baseUrl && url.startsWith("/") && baseUrl.endsWith("/")) {
370
+ return baseUrl + url.slice(1);
371
+ }
372
+ return baseUrl + url;
373
+ }
374
+ /**
375
+ * Build request headers
376
+ */
377
+ async buildHeaders(customHeaders, hasJsonBody = false) {
378
+ const configHeaders = typeof this.config.headers === "function"
379
+ ? await this.config.headers()
380
+ : this.config.headers || {};
381
+ const headers = normalizeHeaderRecord({
382
+ ...configHeaders,
383
+ ...customHeaders,
384
+ });
385
+ // Only set Content-Type for methods that can have a body
386
+ if (hasJsonBody && methodSupportsRequestBody(this.contract.method)) {
387
+ const hasContentType = Object.keys(headers).some((k) => k.toLowerCase() === "content-type");
388
+ if (!hasContentType) {
389
+ headers["content-type"] = "application/json";
390
+ }
391
+ }
392
+ return headers;
393
+ }
394
+ /**
395
+ * Create a contract error
396
+ */
397
+ createError(status, code, message, details, cause, body, response, source = "client") {
398
+ return new ContractError({
399
+ source,
400
+ status: source === "client" || source === "network" ? undefined : status,
401
+ code,
402
+ message,
403
+ body: source === "client" || source === "network" ? undefined : body,
404
+ details,
405
+ response: source === "client" || source === "network" ? undefined : response,
406
+ cause,
407
+ });
408
+ }
409
+ }
410
+ /**
411
+ * Client for making contract-based requests
412
+ */
413
+ export class Client {
414
+ config;
415
+ constructor(config) {
416
+ this.config = config;
417
+ }
418
+ /**
419
+ * Create an endpoint wrapper for a contract
420
+ *
421
+ * Accepts either an HttpContractConfig object or a ContractBuilder
422
+ * (which has a .config property that returns the config)
423
+ */
424
+ endpoint(contract) {
425
+ const resolved = resolveContract(contract);
426
+ return new Endpoint(resolved, this.config);
427
+ }
428
+ }
429
+ /**
430
+ * Create a configured client
431
+ */
432
+ export function createClient(config = {}) {
433
+ return new Client(config);
434
+ }
435
+ async function parseResponseBody(response) {
436
+ if (response.status === 204 || response.status === 205) {
437
+ return undefined;
438
+ }
439
+ const text = await response.text().catch(() => "");
440
+ if (text === "") {
441
+ return undefined;
442
+ }
443
+ const contentType = response.headers.get("content-type");
444
+ if (contentType?.includes("application/json")) {
445
+ return JSON.parse(text);
446
+ }
447
+ return text;
448
+ }
449
+ function createInvalidJsonMessage(context, status) {
450
+ return `Failed to parse JSON ${context} response (status ${status})`;
451
+ }
452
+ function createErrorResponseValidationMessage(contract, status) {
453
+ return `Error response validation failed for ${contract.method} ${contract.path} (status ${status}, contract: ${contract.name})`;
454
+ }
455
+ function hasFrameworkErrorOwner(response) {
456
+ return response.headers.get(BEIGNET_ERROR_OWNER_HEADER) === "framework";
457
+ }
458
+ async function validateErrorBodyOrStandardEnvelope(contract, response, errorBody) {
459
+ const errorSchema = contract.responses[response.status];
460
+ const hasDeclaredResponses = Object.keys(contract.responses).length > 0;
461
+ if (errorSchema === null) {
462
+ if (errorBody === undefined || errorBody === null) {
463
+ return undefined;
464
+ }
465
+ if (isErrorResponseBody(errorBody) && hasFrameworkErrorOwner(response)) {
466
+ return errorBody;
467
+ }
468
+ throw new ContractError({
469
+ source: "contract",
470
+ status: response.status,
471
+ code: "ERROR_RESPONSE_VALIDATION_ERROR",
472
+ message: createErrorResponseValidationMessage(contract, response.status),
473
+ details: [
474
+ {
475
+ message: "Response body must be empty for a null response schema.",
476
+ },
477
+ ],
478
+ body: errorBody,
479
+ response,
480
+ });
481
+ }
482
+ if (!errorSchema) {
483
+ if (isErrorResponseBody(errorBody) && hasFrameworkErrorOwner(response)) {
484
+ return errorBody;
485
+ }
486
+ if (hasDeclaredResponses) {
487
+ throw new ContractError({
488
+ source: "contract",
489
+ status: response.status,
490
+ code: "UNDECLARED_ERROR_STATUS",
491
+ message: `Server returned undeclared error status ${response.status} for ${contract.method} ${contract.path} (contract: ${contract.name})`,
492
+ body: errorBody,
493
+ response,
494
+ });
495
+ }
496
+ return errorBody;
497
+ }
498
+ try {
499
+ return await validateSchema(errorSchema, errorBody);
500
+ }
501
+ catch (err) {
502
+ if (!(err instanceof SchemaValidationError)) {
503
+ throw err;
504
+ }
505
+ if (isErrorResponseBody(errorBody) && hasFrameworkErrorOwner(response)) {
506
+ return errorBody;
507
+ }
508
+ throw new ContractError({
509
+ source: "contract",
510
+ status: response.status,
511
+ code: "ERROR_RESPONSE_VALIDATION_ERROR",
512
+ message: createErrorResponseValidationMessage(contract, response.status),
513
+ details: err.issues,
514
+ cause: err,
515
+ body: errorBody,
516
+ response,
517
+ });
518
+ }
519
+ }
520
+ function getErrorPayload(body) {
521
+ if (typeof body !== "object" || body === null) {
522
+ return {};
523
+ }
524
+ const payload = body;
525
+ return {
526
+ code: typeof payload.code === "string" ? payload.code : undefined,
527
+ message: typeof payload.message === "string" ? payload.message : undefined,
528
+ details: payload.details,
529
+ };
530
+ }
531
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * beignet/core/client/base
3
+ *
4
+ * Base HTTP client for making contract-based requests
5
+ */
6
+ export { SchemaValidationError } from "../errors";
7
+ export type { AnyContractError, ClientContractError, ContractErrorSource, ContractErrorWithCode, ContractErrorWithSource, ContractErrorWithStatus, HttpContractError, InferEndpointContractError, InferEndpointErrorCode, NetworkContractError, ResponseContractError, } from "./client";
8
+ export { Client, ContractError, createClient, Endpoint, isContractError, } from "./client";
9
+ export type { CallArgs, ClientConfig, EndpointCallArgs, EndpointErrorResult, EndpointResult, EndpointSuccessResult, InferBody, InferEndpointErrorResponse, InferEndpointErrorResponseByStatus, InferEndpointErrorStatus, InferErrorResponse, InferErrorResponseByStatus, InferHeaders, InferPathParams, InferQuery, InferSuccessResponse, } from "./types";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,0BAA0B,EAC1B,kCAAkC,EAClC,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,UAAU,EACV,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * beignet/core/client/base
3
+ *
4
+ * Base HTTP client for making contract-based requests
5
+ */
6
+ export { SchemaValidationError } from "../errors";
7
+ export { Client, ContractError, createClient, Endpoint, isContractError, } from "./client";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAclD,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,eAAe,GAChB,MAAM,UAAU,CAAC"}