@redocly/client-generator 0.0.0-snapshot.1784554531

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 (250) hide show
  1. package/README.md +506 -0
  2. package/lib/config-file.d.ts +8 -0
  3. package/lib/config-file.d.ts.map +1 -0
  4. package/lib/config-file.js +32 -0
  5. package/lib/config-file.js.map +1 -0
  6. package/lib/config.d.ts +63 -0
  7. package/lib/config.d.ts.map +1 -0
  8. package/lib/config.js +2 -0
  9. package/lib/config.js.map +1 -0
  10. package/lib/emitters/auth.d.ts +14 -0
  11. package/lib/emitters/auth.d.ts.map +1 -0
  12. package/lib/emitters/auth.js +30 -0
  13. package/lib/emitters/auth.js.map +1 -0
  14. package/lib/emitters/client-assembly.d.ts +15 -0
  15. package/lib/emitters/client-assembly.d.ts.map +1 -0
  16. package/lib/emitters/client-assembly.js +299 -0
  17. package/lib/emitters/client-assembly.js.map +1 -0
  18. package/lib/emitters/descriptor.d.ts +22 -0
  19. package/lib/emitters/descriptor.d.ts.map +1 -0
  20. package/lib/emitters/descriptor.js +207 -0
  21. package/lib/emitters/descriptor.js.map +1 -0
  22. package/lib/emitters/emit-options.d.ts +71 -0
  23. package/lib/emitters/emit-options.d.ts.map +1 -0
  24. package/lib/emitters/emit-options.js +28 -0
  25. package/lib/emitters/emit-options.js.map +1 -0
  26. package/lib/emitters/faker.d.ts +11 -0
  27. package/lib/emitters/faker.d.ts.map +1 -0
  28. package/lib/emitters/faker.js +204 -0
  29. package/lib/emitters/faker.js.map +1 -0
  30. package/lib/emitters/identifier.d.ts +28 -0
  31. package/lib/emitters/identifier.d.ts.map +1 -0
  32. package/lib/emitters/identifier.js +94 -0
  33. package/lib/emitters/identifier.js.map +1 -0
  34. package/lib/emitters/inline-runtime.d.ts +11 -0
  35. package/lib/emitters/inline-runtime.d.ts.map +1 -0
  36. package/lib/emitters/inline-runtime.js +97 -0
  37. package/lib/emitters/inline-runtime.js.map +1 -0
  38. package/lib/emitters/jsdoc.d.ts +9 -0
  39. package/lib/emitters/jsdoc.d.ts.map +1 -0
  40. package/lib/emitters/jsdoc.js +83 -0
  41. package/lib/emitters/jsdoc.js.map +1 -0
  42. package/lib/emitters/mock.d.ts +22 -0
  43. package/lib/emitters/mock.d.ts.map +1 -0
  44. package/lib/emitters/mock.js +243 -0
  45. package/lib/emitters/mock.js.map +1 -0
  46. package/lib/emitters/operation-aliases.d.ts +27 -0
  47. package/lib/emitters/operation-aliases.d.ts.map +1 -0
  48. package/lib/emitters/operation-aliases.js +138 -0
  49. package/lib/emitters/operation-aliases.js.map +1 -0
  50. package/lib/emitters/operation-signature.d.ts +23 -0
  51. package/lib/emitters/operation-signature.d.ts.map +1 -0
  52. package/lib/emitters/operation-signature.js +34 -0
  53. package/lib/emitters/operation-signature.js.map +1 -0
  54. package/lib/emitters/operation-types.d.ts +32 -0
  55. package/lib/emitters/operation-types.d.ts.map +1 -0
  56. package/lib/emitters/operation-types.js +117 -0
  57. package/lib/emitters/operation-types.js.map +1 -0
  58. package/lib/emitters/operations.d.ts +39 -0
  59. package/lib/emitters/operations.d.ts.map +1 -0
  60. package/lib/emitters/operations.js +33 -0
  61. package/lib/emitters/operations.js.map +1 -0
  62. package/lib/emitters/pagination.d.ts +69 -0
  63. package/lib/emitters/pagination.d.ts.map +1 -0
  64. package/lib/emitters/pagination.js +223 -0
  65. package/lib/emitters/pagination.js.map +1 -0
  66. package/lib/emitters/runtime-sources.d.ts +16 -0
  67. package/lib/emitters/runtime-sources.d.ts.map +1 -0
  68. package/lib/emitters/runtime-sources.js +16 -0
  69. package/lib/emitters/runtime-sources.js.map +1 -0
  70. package/lib/emitters/sample.d.ts +27 -0
  71. package/lib/emitters/sample.d.ts.map +1 -0
  72. package/lib/emitters/sample.js +161 -0
  73. package/lib/emitters/sample.js.map +1 -0
  74. package/lib/emitters/setup-bake.d.ts +15 -0
  75. package/lib/emitters/setup-bake.d.ts.map +1 -0
  76. package/lib/emitters/setup-bake.js +65 -0
  77. package/lib/emitters/setup-bake.js.map +1 -0
  78. package/lib/emitters/sse.d.ts +10 -0
  79. package/lib/emitters/sse.d.ts.map +1 -0
  80. package/lib/emitters/sse.js +46 -0
  81. package/lib/emitters/sse.js.map +1 -0
  82. package/lib/emitters/support.d.ts +13 -0
  83. package/lib/emitters/support.d.ts.map +1 -0
  84. package/lib/emitters/support.js +21 -0
  85. package/lib/emitters/support.js.map +1 -0
  86. package/lib/emitters/swr.d.ts +10 -0
  87. package/lib/emitters/swr.d.ts.map +1 -0
  88. package/lib/emitters/swr.js +88 -0
  89. package/lib/emitters/swr.js.map +1 -0
  90. package/lib/emitters/tanstack-query.d.ts +11 -0
  91. package/lib/emitters/tanstack-query.d.ts.map +1 -0
  92. package/lib/emitters/tanstack-query.js +68 -0
  93. package/lib/emitters/tanstack-query.js.map +1 -0
  94. package/lib/emitters/transformers.d.ts +11 -0
  95. package/lib/emitters/transformers.d.ts.map +1 -0
  96. package/lib/emitters/transformers.js +334 -0
  97. package/lib/emitters/transformers.js.map +1 -0
  98. package/lib/emitters/ts.d.ts +40 -0
  99. package/lib/emitters/ts.d.ts.map +1 -0
  100. package/lib/emitters/ts.js +104 -0
  101. package/lib/emitters/ts.js.map +1 -0
  102. package/lib/emitters/type-guards.d.ts +21 -0
  103. package/lib/emitters/type-guards.d.ts.map +1 -0
  104. package/lib/emitters/type-guards.js +183 -0
  105. package/lib/emitters/type-guards.js.map +1 -0
  106. package/lib/emitters/types.d.ts +23 -0
  107. package/lib/emitters/types.d.ts.map +1 -0
  108. package/lib/emitters/types.js +127 -0
  109. package/lib/emitters/types.js.map +1 -0
  110. package/lib/emitters/wrapper-support.d.ts +40 -0
  111. package/lib/emitters/wrapper-support.d.ts.map +1 -0
  112. package/lib/emitters/wrapper-support.js +112 -0
  113. package/lib/emitters/wrapper-support.js.map +1 -0
  114. package/lib/emitters/zod.d.ts +13 -0
  115. package/lib/emitters/zod.d.ts.map +1 -0
  116. package/lib/emitters/zod.js +344 -0
  117. package/lib/emitters/zod.js.map +1 -0
  118. package/lib/errors.d.ts +4 -0
  119. package/lib/errors.d.ts.map +1 -0
  120. package/lib/errors.js +7 -0
  121. package/lib/errors.js.map +1 -0
  122. package/lib/generators/anchor.d.ts +9 -0
  123. package/lib/generators/anchor.d.ts.map +1 -0
  124. package/lib/generators/anchor.js +10 -0
  125. package/lib/generators/anchor.js.map +1 -0
  126. package/lib/generators/index.d.ts +15 -0
  127. package/lib/generators/index.d.ts.map +1 -0
  128. package/lib/generators/index.js +62 -0
  129. package/lib/generators/index.js.map +1 -0
  130. package/lib/generators/mock.d.ts +9 -0
  131. package/lib/generators/mock.d.ts.map +1 -0
  132. package/lib/generators/mock.js +23 -0
  133. package/lib/generators/mock.js.map +1 -0
  134. package/lib/generators/resolve.d.ts +19 -0
  135. package/lib/generators/resolve.d.ts.map +1 -0
  136. package/lib/generators/resolve.js +68 -0
  137. package/lib/generators/resolve.js.map +1 -0
  138. package/lib/generators/sdk.d.ts +12 -0
  139. package/lib/generators/sdk.d.ts.map +1 -0
  140. package/lib/generators/sdk.js +26 -0
  141. package/lib/generators/sdk.js.map +1 -0
  142. package/lib/generators/swr.d.ts +15 -0
  143. package/lib/generators/swr.d.ts.map +1 -0
  144. package/lib/generators/swr.js +27 -0
  145. package/lib/generators/swr.js.map +1 -0
  146. package/lib/generators/tanstack-query.d.ts +17 -0
  147. package/lib/generators/tanstack-query.d.ts.map +1 -0
  148. package/lib/generators/tanstack-query.js +30 -0
  149. package/lib/generators/tanstack-query.js.map +1 -0
  150. package/lib/generators/transformers.d.ts +19 -0
  151. package/lib/generators/transformers.d.ts.map +1 -0
  152. package/lib/generators/transformers.js +28 -0
  153. package/lib/generators/transformers.js.map +1 -0
  154. package/lib/generators/types.d.ts +66 -0
  155. package/lib/generators/types.d.ts.map +1 -0
  156. package/lib/generators/types.js +2 -0
  157. package/lib/generators/types.js.map +1 -0
  158. package/lib/generators/zod.d.ts +14 -0
  159. package/lib/generators/zod.d.ts.map +1 -0
  160. package/lib/generators/zod.js +23 -0
  161. package/lib/generators/zod.js.map +1 -0
  162. package/lib/index.d.ts +29 -0
  163. package/lib/index.d.ts.map +1 -0
  164. package/lib/index.js +119 -0
  165. package/lib/index.js.map +1 -0
  166. package/lib/intermediate-representation/build.d.ts +4 -0
  167. package/lib/intermediate-representation/build.d.ts.map +1 -0
  168. package/lib/intermediate-representation/build.js +761 -0
  169. package/lib/intermediate-representation/build.js.map +1 -0
  170. package/lib/intermediate-representation/model.d.ts +275 -0
  171. package/lib/intermediate-representation/model.d.ts.map +1 -0
  172. package/lib/intermediate-representation/model.js +5 -0
  173. package/lib/intermediate-representation/model.js.map +1 -0
  174. package/lib/intermediate-representation/normalize-swagger2.d.ts +10 -0
  175. package/lib/intermediate-representation/normalize-swagger2.d.ts.map +1 -0
  176. package/lib/intermediate-representation/normalize-swagger2.js +210 -0
  177. package/lib/intermediate-representation/normalize-swagger2.js.map +1 -0
  178. package/lib/intermediate-representation/sanitize-identifiers.d.ts +30 -0
  179. package/lib/intermediate-representation/sanitize-identifiers.d.ts.map +1 -0
  180. package/lib/intermediate-representation/sanitize-identifiers.js +153 -0
  181. package/lib/intermediate-representation/sanitize-identifiers.js.map +1 -0
  182. package/lib/loader.d.ts +4 -0
  183. package/lib/loader.d.ts.map +1 -0
  184. package/lib/loader.js +14 -0
  185. package/lib/loader.js.map +1 -0
  186. package/lib/plugin.d.ts +19 -0
  187. package/lib/plugin.d.ts.map +1 -0
  188. package/lib/plugin.js +41 -0
  189. package/lib/plugin.js.map +1 -0
  190. package/lib/runtime/auth.d.ts +15 -0
  191. package/lib/runtime/auth.d.ts.map +1 -0
  192. package/lib/runtime/auth.js +67 -0
  193. package/lib/runtime/auth.js.map +1 -0
  194. package/lib/runtime/create-client.d.ts +35 -0
  195. package/lib/runtime/create-client.d.ts.map +1 -0
  196. package/lib/runtime/create-client.js +215 -0
  197. package/lib/runtime/create-client.js.map +1 -0
  198. package/lib/runtime/errors.d.ts +11 -0
  199. package/lib/runtime/errors.d.ts.map +1 -0
  200. package/lib/runtime/errors.js +25 -0
  201. package/lib/runtime/errors.js.map +1 -0
  202. package/lib/runtime/index.d.ts +14 -0
  203. package/lib/runtime/index.d.ts.map +1 -0
  204. package/lib/runtime/index.js +24 -0
  205. package/lib/runtime/index.js.map +1 -0
  206. package/lib/runtime/multipart.d.ts +9 -0
  207. package/lib/runtime/multipart.d.ts.map +1 -0
  208. package/lib/runtime/multipart.js +31 -0
  209. package/lib/runtime/multipart.js.map +1 -0
  210. package/lib/runtime/paginate.d.ts +36 -0
  211. package/lib/runtime/paginate.d.ts.map +1 -0
  212. package/lib/runtime/paginate.js +99 -0
  213. package/lib/runtime/paginate.js.map +1 -0
  214. package/lib/runtime/parse.d.ts +9 -0
  215. package/lib/runtime/parse.d.ts.map +1 -0
  216. package/lib/runtime/parse.js +37 -0
  217. package/lib/runtime/parse.js.map +1 -0
  218. package/lib/runtime/retry.d.ts +15 -0
  219. package/lib/runtime/retry.d.ts.map +1 -0
  220. package/lib/runtime/retry.js +51 -0
  221. package/lib/runtime/retry.js.map +1 -0
  222. package/lib/runtime/send.d.ts +31 -0
  223. package/lib/runtime/send.d.ts.map +1 -0
  224. package/lib/runtime/send.js +138 -0
  225. package/lib/runtime/send.js.map +1 -0
  226. package/lib/runtime/setup.d.ts +11 -0
  227. package/lib/runtime/setup.d.ts.map +1 -0
  228. package/lib/runtime/setup.js +13 -0
  229. package/lib/runtime/setup.js.map +1 -0
  230. package/lib/runtime/sse.d.ts +21 -0
  231. package/lib/runtime/sse.d.ts.map +1 -0
  232. package/lib/runtime/sse.js +163 -0
  233. package/lib/runtime/sse.js.map +1 -0
  234. package/lib/runtime/types.d.ts +232 -0
  235. package/lib/runtime/types.d.ts.map +1 -0
  236. package/lib/runtime/types.js +9 -0
  237. package/lib/runtime/types.js.map +1 -0
  238. package/lib/runtime/url.d.ts +25 -0
  239. package/lib/runtime/url.d.ts.map +1 -0
  240. package/lib/runtime/url.js +97 -0
  241. package/lib/runtime/url.js.map +1 -0
  242. package/lib/runtime-contract.d.ts +27 -0
  243. package/lib/runtime-contract.d.ts.map +1 -0
  244. package/lib/runtime-contract.js +14 -0
  245. package/lib/runtime-contract.js.map +1 -0
  246. package/lib/types.d.ts +118 -0
  247. package/lib/types.d.ts.map +1 -0
  248. package/lib/types.js +2 -0
  249. package/lib/types.js.map +1 -0
  250. package/package.json +59 -0
@@ -0,0 +1,11 @@
1
+ /** The error thrown (throw mode) for a non-2xx response, carrying the decoded error body. */
2
+ export declare class ApiError extends Error {
3
+ readonly url: string;
4
+ readonly status: number;
5
+ readonly statusText: string;
6
+ readonly body: unknown;
7
+ constructor(url: string, status: number, statusText: string, body: unknown);
8
+ }
9
+ /** The error to throw for an aborted request: the caller's abort reason when it is an Error. */
10
+ export declare function abortError(signal: AbortSignal): globalThis.Error;
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,IAAI,EAAE,OAAO,CAAC;gBAClB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAQ3E;AAED,gGAAgG;AAGhG,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC,KAAK,CAIhE"}
@@ -0,0 +1,25 @@
1
+ /** The error thrown (throw mode) for a non-2xx response, carrying the decoded error body. */
2
+ export class ApiError extends Error {
3
+ url;
4
+ status;
5
+ statusText;
6
+ body;
7
+ constructor(url, status, statusText, body) {
8
+ super(`Request failed with status ${status}`);
9
+ this.name = 'ApiError';
10
+ this.url = url;
11
+ this.status = status;
12
+ this.statusText = statusText;
13
+ this.body = body;
14
+ }
15
+ }
16
+ /** The error to throw for an aborted request: the caller's abort reason when it is an Error. */
17
+ // `globalThis.Error` (not bare `Error`) so a spec schema named `Error` cannot shadow it
18
+ // when this module is embedded alongside generated types (inline mode).
19
+ export function abortError(signal) {
20
+ const reason = signal.reason;
21
+ if (reason instanceof Error)
22
+ return reason;
23
+ return new DOMException('The operation was aborted.', 'AbortError');
24
+ }
25
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,IAAI,CAAU;IAC9B,YAAY,GAAW,EAAE,MAAc,EAAE,UAAkB,EAAE,IAAa;QACxE,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,gGAAgG;AAChG,wFAAwF;AACxF,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,MAAM,MAAM,GAAI,MAA+B,CAAC,MAAM,CAAC;IACvD,IAAI,MAAM,YAAY,KAAK;QAAE,OAAO,MAAM,CAAC;IAC3C,OAAO,IAAI,YAAY,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Client, ClientConfig, OperationContext, OperationDescriptor, OpsShape } from './types.js';
2
+ /**
3
+ * The public client factory for package-mode generated clients: `createClientCore`
4
+ * with the full capability set wired (multipart, auth, SSE, pagination). The capability seam
5
+ * itself stays internal — the future inline assembler wires only what a spec needs.
6
+ * The trailing string params carry the generated literal unions
7
+ * (`OperationId`/`OperationPath`/`OperationTag`) into `ctx.operation` for
8
+ * middleware targeting; their defaults keep spec-independent callers untyped.
9
+ */
10
+ export declare function createClient<Ops extends OpsShape, Id extends string = string, Path extends string = string, Tag extends string = string>(operations: Record<string, OperationDescriptor>, config?: ClientConfig<OperationContext<Id, Path, Tag>>): Client<Ops, OperationContext<Id, Path, Tag>>;
11
+ export { ApiError } from './errors.js';
12
+ export { mergeSetup } from './setup.js';
13
+ export type * from './types.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,GAAG,SAAS,QAAQ,EACpB,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,GAAG,SAAS,MAAM,GAAG,MAAM,EAE3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC/C,MAAM,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GACrD,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAO9C;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,mBAAmB,YAAY,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { resolveAuth } from './auth.js';
2
+ import { createClientCore } from './create-client.js';
3
+ import { toFormData } from './multipart.js';
4
+ import { items, pages } from './paginate.js';
5
+ import { sse } from './sse.js';
6
+ /**
7
+ * The public client factory for package-mode generated clients: `createClientCore`
8
+ * with the full capability set wired (multipart, auth, SSE, pagination). The capability seam
9
+ * itself stays internal — the future inline assembler wires only what a spec needs.
10
+ * The trailing string params carry the generated literal unions
11
+ * (`OperationId`/`OperationPath`/`OperationTag`) into `ctx.operation` for
12
+ * middleware targeting; their defaults keep spec-independent callers untyped.
13
+ */
14
+ export function createClient(operations, config) {
15
+ return createClientCore(operations, config, {
16
+ serializeMultipart: toFormData,
17
+ resolveAuth,
18
+ sse,
19
+ paginate: { pages, items },
20
+ });
21
+ }
22
+ export { ApiError } from './errors.js';
23
+ export { mergeSetup } from './setup.js';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAS/B;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAM1B,UAA+C,EAC/C,MAAsD;IAEtD,OAAO,gBAAgB,CAAqB,UAAU,EAAE,MAAM,EAAE;QAC9D,kBAAkB,EAAE,UAAU;QAC9B,WAAW;QACX,GAAG;QACH,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Serialize a plain object into `FormData` for a typed `multipart/form-data` body
3
+ * (capability module — wired into `createClient`, never imported by the send core).
4
+ * `Blob`/`File` and strings pass through; `Date`s become ISO strings; arrays append
5
+ * one field per item; other objects are JSON-encoded; everything else is stringified.
6
+ * `undefined`/`null` entries are skipped.
7
+ */
8
+ export declare function toFormData(body: Record<string, unknown>): FormData;
9
+ //# sourceMappingURL=multipart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart.d.ts","sourceRoot":"","sources":["../../src/runtime/multipart.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAclE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Serialize a plain object into `FormData` for a typed `multipart/form-data` body
3
+ * (capability module — wired into `createClient`, never imported by the send core).
4
+ * `Blob`/`File` and strings pass through; `Date`s become ISO strings; arrays append
5
+ * one field per item; other objects are JSON-encoded; everything else is stringified.
6
+ * `undefined`/`null` entries are skipped.
7
+ */
8
+ export function toFormData(body) {
9
+ const fd = new FormData();
10
+ const append = (key, value) => {
11
+ if (value === undefined || value === null)
12
+ return;
13
+ if (value instanceof Blob || typeof value === 'string')
14
+ fd.append(key, value);
15
+ else if (value instanceof Date)
16
+ fd.append(key, value.toISOString());
17
+ else if (Object(value) === value)
18
+ fd.append(key, JSON.stringify(value));
19
+ else
20
+ fd.append(key, String(value));
21
+ };
22
+ for (const [key, value] of Object.entries(body)) {
23
+ if (Array.isArray(value))
24
+ for (const item of value)
25
+ append(key, item);
26
+ else
27
+ append(key, value);
28
+ }
29
+ return fd;
30
+ }
31
+ //# sourceMappingURL=multipart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart.js","sourceRoot":"","sources":["../../src/runtime/multipart.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAA6B;IACtD,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,KAAc,EAAQ,EAAE;QACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAClD,IAAI,KAAK,YAAY,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzE,IAAI,KAAK,YAAY,IAAI;YAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;aAC/D,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK;YAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;;YACnE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;YACjE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { OperationArgs } from './create-client.js';
2
+ import type { PaginationSpec, RequestOptions } from './types.js';
3
+ /**
4
+ * Auto-pagination (capability module — wired into `createClient`, dispatched by the
5
+ * method's `.pages()`/`.items()`): walk an operation's pages by advancing the descriptor's
6
+ * `param` query parameter, per its `style`. The caller's args are never mutated — each
7
+ * request gets a fresh `params` clone — and `init` is forwarded to every call.
8
+ *
9
+ * Iteration is error-mode-agnostic: `call` always resolves to the RAW page (on a
10
+ * result-mode client the attachment unwraps the envelope first), so a failed page
11
+ * aborts iteration by throwing `ApiError`, even on result-mode clients; the `onError`
12
+ * middleware hook (throw-mode-only) is not invoked.
13
+ */
14
+ /**
15
+ * Resolve an RFC 6901 JSON pointer (`~1` → `/`, `~0` → `~`) against a value.
16
+ * The empty pointer is the whole document; anything else must start with `/`.
17
+ * Returns `undefined` on any miss (bad token, absent key, non-object step) — never throws.
18
+ */
19
+ export declare function resolvePointer(value: unknown, pointer: string): unknown;
20
+ /**
21
+ * Iterate an operation's full page results. Every page is yielded before the stop
22
+ * condition is evaluated, so the last page always arrives. Cursor style resumes from a
23
+ * caller-provided `params[spec.param]`, stops when `nextCursor` resolves to
24
+ * `undefined`/`null`/`''`, and throws if the next cursor is not a string or number, or
25
+ * if the same cursor comes back twice in a row (infinite-loop guards). Offset/page
26
+ * styles advance by item count / by one and stop when
27
+ * the `items` pointer misses or the array is empty.
28
+ */
29
+ export declare function pages<TPage>(call: (args?: OperationArgs, init?: RequestOptions) => Promise<TPage>, spec: PaginationSpec, args?: OperationArgs, init?: RequestOptions): AsyncGenerator<TPage>;
30
+ /**
31
+ * Iterate the operation's individual items: each page's `items` pointer, flattened.
32
+ * A cursor-style page whose pointer misses yields nothing but pagination continues;
33
+ * for offset/page styles a miss has already stopped `pages`.
34
+ */
35
+ export declare function items<TItem>(call: (args?: OperationArgs, init?: RequestOptions) => Promise<unknown>, spec: PaginationSpec, args?: OperationArgs, init?: RequestOptions): AsyncGenerator<TItem>;
36
+ //# sourceMappingURL=paginate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate.d.ts","sourceRoot":"","sources":["../../src/runtime/paginate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBvE;AAED;;;;;;;;GAQG;AACH,wBAAuB,KAAK,CAAC,KAAK,EAChC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,EACrE,IAAI,EAAE,cAAc,EACpB,IAAI,GAAE,aAAkB,EACxB,IAAI,CAAC,EAAE,cAAc,GACpB,cAAc,CAAC,KAAK,CAAC,CAqCvB;AAED;;;;GAIG;AACH,wBAAuB,KAAK,CAAC,KAAK,EAChC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,EACvE,IAAI,EAAE,cAAc,EACpB,IAAI,CAAC,EAAE,aAAa,EACpB,IAAI,CAAC,EAAE,cAAc,GACpB,cAAc,CAAC,KAAK,CAAC,CAKvB"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Auto-pagination (capability module — wired into `createClient`, dispatched by the
3
+ * method's `.pages()`/`.items()`): walk an operation's pages by advancing the descriptor's
4
+ * `param` query parameter, per its `style`. The caller's args are never mutated — each
5
+ * request gets a fresh `params` clone — and `init` is forwarded to every call.
6
+ *
7
+ * Iteration is error-mode-agnostic: `call` always resolves to the RAW page (on a
8
+ * result-mode client the attachment unwraps the envelope first), so a failed page
9
+ * aborts iteration by throwing `ApiError`, even on result-mode clients; the `onError`
10
+ * middleware hook (throw-mode-only) is not invoked.
11
+ */
12
+ /**
13
+ * Resolve an RFC 6901 JSON pointer (`~1` → `/`, `~0` → `~`) against a value.
14
+ * The empty pointer is the whole document; anything else must start with `/`.
15
+ * Returns `undefined` on any miss (bad token, absent key, non-object step) — never throws.
16
+ */
17
+ export function resolvePointer(value, pointer) {
18
+ if (pointer === '')
19
+ return value;
20
+ if (!pointer.startsWith('/'))
21
+ return undefined;
22
+ let current = value;
23
+ for (const token of pointer.slice(1).split('/')) {
24
+ const key = token.replaceAll('~1', '/').replaceAll('~0', '~');
25
+ if (Array.isArray(current)) {
26
+ if (!/^(0|[1-9]\d*)$/.test(key))
27
+ return undefined;
28
+ current = current[Number(key)];
29
+ }
30
+ else if (Object(current) === current && key in current) {
31
+ current = current[key];
32
+ }
33
+ else {
34
+ return undefined;
35
+ }
36
+ }
37
+ return current;
38
+ }
39
+ /**
40
+ * Iterate an operation's full page results. Every page is yielded before the stop
41
+ * condition is evaluated, so the last page always arrives. Cursor style resumes from a
42
+ * caller-provided `params[spec.param]`, stops when `nextCursor` resolves to
43
+ * `undefined`/`null`/`''`, and throws if the next cursor is not a string or number, or
44
+ * if the same cursor comes back twice in a row (infinite-loop guards). Offset/page
45
+ * styles advance by item count / by one and stop when
46
+ * the `items` pointer misses or the array is empty.
47
+ */
48
+ export async function* pages(call, spec, args = {}, init) {
49
+ if (spec.style === 'cursor') {
50
+ let cursor = args.params?.[spec.param];
51
+ while (true) {
52
+ const params = { ...args.params };
53
+ if (cursor !== undefined)
54
+ params[spec.param] = cursor;
55
+ const page = await call({ ...args, params }, init);
56
+ yield page;
57
+ const next = resolvePointer(page, spec.nextCursor);
58
+ if (next === undefined || next === null || next === '')
59
+ return;
60
+ if (typeof next !== 'string' && typeof next !== 'number') {
61
+ // A fresh non-scalar cursor never compares equal, so without this guard a lying
62
+ // server would slip past the did-not-advance check into an infinite loop.
63
+ throw new Error(`Pagination cursor at ${spec.nextCursor} is not a string or number`);
64
+ }
65
+ if (next === cursor) {
66
+ throw new Error('Pagination did not advance: operation returned the same cursor twice');
67
+ }
68
+ cursor = next;
69
+ }
70
+ }
71
+ else {
72
+ // Coerce the starting position to a number: a caller may pass `params[spec.param]` as a
73
+ // string (common from URL/form input), and `+=` on a string would concatenate.
74
+ const start = args.params?.[spec.param];
75
+ const fallback = spec.style === 'page' ? 1 : 0;
76
+ let position = start === undefined || Number.isNaN(Number(start)) ? fallback : Number(start);
77
+ while (true) {
78
+ const page = await call({ ...args, params: { ...args.params, [spec.param]: position } }, init);
79
+ yield page;
80
+ const pageItems = resolvePointer(page, spec.items);
81
+ if (!Array.isArray(pageItems) || pageItems.length === 0)
82
+ return;
83
+ position += spec.style === 'page' ? 1 : pageItems.length;
84
+ }
85
+ }
86
+ }
87
+ /**
88
+ * Iterate the operation's individual items: each page's `items` pointer, flattened.
89
+ * A cursor-style page whose pointer misses yields nothing but pagination continues;
90
+ * for offset/page styles a miss has already stopped `pages`.
91
+ */
92
+ export async function* items(call, spec, args, init) {
93
+ for await (const page of pages(call, spec, args, init)) {
94
+ const pageItems = resolvePointer(page, spec.items);
95
+ if (Array.isArray(pageItems))
96
+ yield* pageItems;
97
+ }
98
+ }
99
+ //# sourceMappingURL=paginate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginate.js","sourceRoot":"","sources":["../../src/runtime/paginate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ParseAs } from './types.js';
2
+ /**
3
+ * Read the response body per `kind`. `'auto'` negotiates from the content type
4
+ * (JSON, then `text/*`, then Blob); `'void'` and `204` responses read nothing.
5
+ */
6
+ export declare function parse(response: Response, kind: ParseAs | 'void'): Promise<unknown>;
7
+ /** Best-effort decode of a non-2xx body (JSON when declared, else text; undefined on failure). */
8
+ export declare function readError(response: Response): Promise<unknown>;
9
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/runtime/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,wBAAsB,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcxF;AAED,kGAAkG;AAClG,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAMpE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Read the response body per `kind`. `'auto'` negotiates from the content type
3
+ * (JSON, then `text/*`, then Blob); `'void'` and `204` responses read nothing.
4
+ */
5
+ export async function parse(response, kind) {
6
+ if (kind === 'void' || response.status === 204)
7
+ return undefined;
8
+ if (kind === 'stream')
9
+ return response.body;
10
+ if (kind === 'blob')
11
+ return response.blob();
12
+ if (kind === 'arrayBuffer')
13
+ return response.arrayBuffer();
14
+ if (kind === 'formData')
15
+ return response.formData();
16
+ if (kind === 'text')
17
+ return response.text();
18
+ if (kind === 'json')
19
+ return response.json();
20
+ // 'auto' — negotiate from the response's content type (case-insensitively:
21
+ // `Text/Plain` and `application/JSON` are valid per RFC 9110).
22
+ const contentType = (response.headers.get('content-type') ?? '').toLowerCase();
23
+ if (contentType.includes('json'))
24
+ return response.json();
25
+ if (contentType.startsWith('text/'))
26
+ return response.text();
27
+ return response.blob();
28
+ }
29
+ /** Best-effort decode of a non-2xx body (JSON when declared, else text; undefined on failure). */
30
+ export async function readError(response) {
31
+ const contentType = response.headers.get('content-type') ?? '';
32
+ if (contentType.toLowerCase().includes('json')) {
33
+ return response.json().catch(() => undefined);
34
+ }
35
+ return response.text().catch(() => undefined);
36
+ }
37
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/runtime/parse.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,QAAkB,EAAE,IAAsB;IACpE,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;IAC5C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACpD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,2EAA2E;IAC3E,+DAA+D;IAC/D,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/E,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { RetryConfig, RetryContext } from './types.js';
2
+ /**
3
+ * The default retry predicate: idempotent methods only, on a transport error or a
4
+ * transient status. A custom `retryOn` fully replaces this (no method check kept).
5
+ */
6
+ export declare function defaultRetryOn(ctx: RetryContext): boolean;
7
+ /**
8
+ * The delay before the next attempt: a `Retry-After` header (seconds or HTTP-date)
9
+ * wins; otherwise fixed/exponential backoff over `retryDelay`, with full jitter
10
+ * unless `jitter === false`.
11
+ */
12
+ export declare function retryDelay(retry: RetryConfig, attempt: number, retryAfter: string | null): number;
13
+ /** Abort-aware sleep: resolves after `ms`, rejects with the abort reason immediately on abort. */
14
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
15
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/runtime/retry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK5D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAUjG;AAED,kGAAkG;AAClG,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE"}
@@ -0,0 +1,51 @@
1
+ import { abortError } from './errors.js';
2
+ const IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS']);
3
+ const TRANSIENT_STATUS = new Set([408, 429, 500, 502, 503, 504]);
4
+ /**
5
+ * The default retry predicate: idempotent methods only, on a transport error or a
6
+ * transient status. A custom `retryOn` fully replaces this (no method check kept).
7
+ */
8
+ export function defaultRetryOn(ctx) {
9
+ if (!IDEMPOTENT_METHODS.has(ctx.request.method.toUpperCase()))
10
+ return false;
11
+ return ctx.response === undefined || TRANSIENT_STATUS.has(ctx.response.status);
12
+ }
13
+ /**
14
+ * The delay before the next attempt: a `Retry-After` header (seconds or HTTP-date)
15
+ * wins; otherwise fixed/exponential backoff over `retryDelay`, with full jitter
16
+ * unless `jitter === false`.
17
+ */
18
+ export function retryDelay(retry, attempt, retryAfter) {
19
+ if (retryAfter) {
20
+ const seconds = Number(retryAfter);
21
+ if (!Number.isNaN(seconds))
22
+ return seconds * 1000;
23
+ const when = Date.parse(retryAfter);
24
+ if (!Number.isNaN(when))
25
+ return Math.max(0, when - Date.now());
26
+ }
27
+ const base = retry.retryDelay ?? 1000;
28
+ const raw = retry.retryStrategy === 'fixed' ? base : base * Math.pow(2, attempt - 1);
29
+ return retry.jitter === false ? raw : Math.random() * raw;
30
+ }
31
+ /** Abort-aware sleep: resolves after `ms`, rejects with the abort reason immediately on abort. */
32
+ export function sleep(ms, signal) {
33
+ return new Promise((resolve, reject) => {
34
+ if (signal?.aborted) {
35
+ reject(abortError(signal));
36
+ return;
37
+ }
38
+ const onAbort = () => {
39
+ clearTimeout(timer);
40
+ reject(abortError(signal));
41
+ };
42
+ const timer = setTimeout(() => {
43
+ if (signal)
44
+ signal.removeEventListener('abort', onAbort);
45
+ resolve();
46
+ }, ms);
47
+ if (signal)
48
+ signal.addEventListener('abort', onAbort, { once: true });
49
+ });
50
+ }
51
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/runtime/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAChF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB;IAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAkB,EAAE,OAAe,EAAE,UAAyB;IACvF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,GAAG,IAAI,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IACrF,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AAC5D,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,UAAU,CAAC,MAAqB,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,MAAM;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,IAAI,MAAM;YAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ClientConfig, Middleware, OperationContext, RequestContext, RequestOptions } from './types.js';
2
+ /**
3
+ * Optional behaviors the send core can use but never statically imports — wired by
4
+ * `createClient` (the same seam the future inline-mode assembler relies on).
5
+ */
6
+ export type SendCapabilities = {
7
+ /** Serialize a typed multipart body (a plain object) to FormData. */
8
+ serializeMultipart?: (body: Record<string, unknown>) => FormData;
9
+ };
10
+ /**
11
+ * Normalize a caller's `HeadersInit` (plain record, `Headers` instance, or entry pairs)
12
+ * to a plain record — spreading a `Headers` or an array contributes no entries.
13
+ */
14
+ export declare function toHeaderRecord(headers: HeadersInit | undefined): Record<string, string>;
15
+ /**
16
+ * The effective middleware chain for a request: the single `onRequest`/`onResponse`/
17
+ * `onError` config hooks as one implicit first middleware, then `config.middleware`.
18
+ */
19
+ export declare function middlewareChain(config: ClientConfig): Middleware[];
20
+ /**
21
+ * The fetch core shared by every operation: default + config + per-call headers, the
22
+ * `onRequest` chain (BEFORE body serialization, so mutations are sent), body
23
+ * serialization (JSON, or FormData via the multipart capability), the retry loop
24
+ * (idempotent-only defaults, `Retry-After`, abandoned-body drain), and the reverse
25
+ * `onResponse` onion. Returns the final response plus the request context.
26
+ */
27
+ export declare function send(config: ClientConfig, op: OperationContext, url: string, init: RequestOptions, body: unknown | undefined, multipart: boolean, caps: SendCapabilities): Promise<{
28
+ response: Response;
29
+ context: RequestContext;
30
+ }>;
31
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/runtime/send.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EAEf,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC;CAClE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWvF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,EAAE,CAMlE;AAED;;;;;;GAMG;AACH,wBAAsB,IAAI,CACxB,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,gBAAgB,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,CAmG1D"}
@@ -0,0 +1,138 @@
1
+ import { abortError } from './errors.js';
2
+ import { defaultRetryOn, retryDelay, sleep } from './retry.js';
3
+ /**
4
+ * Normalize a caller's `HeadersInit` (plain record, `Headers` instance, or entry pairs)
5
+ * to a plain record — spreading a `Headers` or an array contributes no entries.
6
+ */
7
+ export function toHeaderRecord(headers) {
8
+ if (headers === undefined)
9
+ return {};
10
+ if (headers instanceof Headers) {
11
+ const record = {};
12
+ headers.forEach((value, key) => {
13
+ record[key] = value;
14
+ });
15
+ return record;
16
+ }
17
+ if (Array.isArray(headers))
18
+ return Object.fromEntries(headers);
19
+ return headers;
20
+ }
21
+ /**
22
+ * The effective middleware chain for a request: the single `onRequest`/`onResponse`/
23
+ * `onError` config hooks as one implicit first middleware, then `config.middleware`.
24
+ */
25
+ export function middlewareChain(config) {
26
+ const single = config.onRequest || config.onResponse || config.onError
27
+ ? [{ onRequest: config.onRequest, onResponse: config.onResponse, onError: config.onError }]
28
+ : [];
29
+ return [...single, ...(config.middleware ?? [])];
30
+ }
31
+ /**
32
+ * The fetch core shared by every operation: default + config + per-call headers, the
33
+ * `onRequest` chain (BEFORE body serialization, so mutations are sent), body
34
+ * serialization (JSON, or FormData via the multipart capability), the retry loop
35
+ * (idempotent-only defaults, `Retry-After`, abandoned-body drain), and the reverse
36
+ * `onResponse` onion. Returns the final response plus the request context.
37
+ */
38
+ export async function send(config, op, url, init, body, multipart, caps) {
39
+ const { retry: callRetry, ...fetchInit } = init;
40
+ const retry = { ...config.retry, ...callRetry };
41
+ const extra = typeof config.headers === 'function' ? await config.headers() : config.headers;
42
+ const headers = {
43
+ Accept: 'application/json',
44
+ ...extra,
45
+ ...toHeaderRecord(fetchInit.headers),
46
+ };
47
+ const context = {
48
+ url,
49
+ method: fetchInit.method ?? 'GET',
50
+ headers,
51
+ body,
52
+ operation: op,
53
+ };
54
+ const middleware = middlewareChain(config);
55
+ for (const mw of middleware)
56
+ if (mw.onRequest)
57
+ await mw.onRequest(context);
58
+ // Serialize AFTER onRequest so body mutations (case conversion, enveloping, signing) take effect.
59
+ let payload;
60
+ if (context.body !== undefined) {
61
+ const value = context.body;
62
+ const isBinary = value instanceof Blob ||
63
+ value instanceof ArrayBuffer ||
64
+ ArrayBuffer.isView(value);
65
+ const isFormData = typeof FormData !== 'undefined' && value instanceof FormData;
66
+ const isURLSearchParams = value instanceof URLSearchParams;
67
+ if (isFormData || isURLSearchParams || isBinary || typeof value === 'string') {
68
+ payload = value;
69
+ }
70
+ else if (multipart) {
71
+ if (!caps.serializeMultipart) {
72
+ throw new Error('Multipart capability not wired: cannot serialize the request body');
73
+ }
74
+ payload = caps.serializeMultipart(value);
75
+ }
76
+ else {
77
+ payload = JSON.stringify(value);
78
+ if (!('Content-Type' in context.headers) && !('content-type' in context.headers)) {
79
+ context.headers['Content-Type'] = 'application/json';
80
+ }
81
+ }
82
+ }
83
+ const doFetch = config.fetch ?? fetch;
84
+ const maxAttempts = 1 + (retry.retries ?? 0);
85
+ const retryOn = retry.retryOn ?? defaultRetryOn;
86
+ const signal = fetchInit.signal ?? undefined;
87
+ let attempt = 0;
88
+ while (true) {
89
+ attempt++;
90
+ if (signal?.aborted)
91
+ throw abortError(signal);
92
+ let response;
93
+ try {
94
+ response = await doFetch(context.url, {
95
+ ...fetchInit,
96
+ method: context.method,
97
+ headers: context.headers,
98
+ body: payload,
99
+ });
100
+ }
101
+ catch (error) {
102
+ if (attempt < maxAttempts &&
103
+ !signal?.aborted &&
104
+ (await retryOn({ attempt, request: context, error }))) {
105
+ await sleep(retryDelay(retry, attempt, null), signal);
106
+ continue;
107
+ }
108
+ throw error;
109
+ }
110
+ // Reverse order: the last-registered middleware wraps closest to the network (onion).
111
+ for (let i = middleware.length - 1; i >= 0; i--) {
112
+ const onResponse = middleware[i].onResponse;
113
+ if (onResponse) {
114
+ const replaced = await onResponse(response, context);
115
+ if (replaced && replaced !== response) {
116
+ // Cancel the abandoned original's body — like the retry path, an unread body
117
+ // keeps its connection checked out under Node/undici.
118
+ await response.body?.cancel().catch(() => undefined);
119
+ response = replaced;
120
+ }
121
+ }
122
+ }
123
+ if (!response.ok &&
124
+ attempt < maxAttempts &&
125
+ !signal?.aborted &&
126
+ (await retryOn({ attempt, request: context, response }))) {
127
+ const retryAfter = response.headers.get('retry-after');
128
+ // Drain the abandoned response body before the next attempt: an unread body
129
+ // keeps the connection checked out (and can stall the pool) under Node/undici
130
+ // and other strict HTTP clients. Ignore errors (e.g. a middleware already read it).
131
+ await response.body?.cancel().catch(() => undefined);
132
+ await sleep(retryDelay(retry, attempt, retryAfter), signal);
133
+ continue;
134
+ }
135
+ return { response, context };
136
+ }
137
+ }
138
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/runtime/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ClientConfig, Middleware } from './types.js';
2
+ /**
3
+ * Merge a publisher's baked setup (`defineClientSetup({...})`) with the app's config:
4
+ * app config fields win per-field over baked defaults, while middleware composes —
5
+ * baked middleware runs first, then the app's.
6
+ */
7
+ export declare function mergeSetup(setup: {
8
+ config?: ClientConfig;
9
+ middleware?: Middleware[];
10
+ } | undefined, config?: ClientConfig): ClientConfig;
11
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/runtime/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,SAAS,EACvE,MAAM,GAAE,YAAiB,GACxB,YAAY,CAMd"}