@wavehouse/chtypes 0.5.2 → 1.0.2

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 (195) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +34 -38
  3. package/dist/abi1/buildinfo.d.ts +40 -0
  4. package/dist/abi1/buildinfo.d.ts.map +1 -0
  5. package/dist/abi1/buildinfo.js +83 -0
  6. package/dist/abi1/buildinfo.js.map +1 -0
  7. package/dist/abi1/calls.gen.d.ts +55 -0
  8. package/dist/abi1/calls.gen.d.ts.map +1 -0
  9. package/dist/abi1/calls.gen.js +110 -0
  10. package/dist/abi1/calls.gen.js.map +1 -0
  11. package/dist/abi1/decls.gen.d.ts +115 -0
  12. package/dist/abi1/decls.gen.d.ts.map +1 -0
  13. package/dist/abi1/decls.gen.js +1613 -0
  14. package/dist/abi1/decls.gen.js.map +1 -0
  15. package/dist/abi1/errmap.gen.d.ts +18 -0
  16. package/dist/abi1/errmap.gen.d.ts.map +1 -0
  17. package/dist/abi1/errmap.gen.js +66 -0
  18. package/dist/abi1/errmap.gen.js.map +1 -0
  19. package/dist/abi1/errors.d.ts +107 -0
  20. package/dist/abi1/errors.d.ts.map +1 -0
  21. package/dist/abi1/errors.js +134 -0
  22. package/dist/abi1/errors.js.map +1 -0
  23. package/dist/abi1/handles.d.ts +31 -0
  24. package/dist/abi1/handles.d.ts.map +1 -0
  25. package/dist/abi1/handles.js +76 -0
  26. package/dist/abi1/handles.js.map +1 -0
  27. package/dist/abi1/index.d.ts +17 -0
  28. package/dist/abi1/index.d.ts.map +1 -0
  29. package/dist/abi1/index.js +17 -0
  30. package/dist/abi1/index.js.map +1 -0
  31. package/dist/abi1/libc.d.ts +54 -0
  32. package/dist/abi1/libc.d.ts.map +1 -0
  33. package/dist/abi1/libc.gen.d.ts +12 -0
  34. package/dist/abi1/libc.gen.d.ts.map +1 -0
  35. package/dist/abi1/libc.gen.js +75 -0
  36. package/dist/abi1/libc.gen.js.map +1 -0
  37. package/dist/abi1/libc.js +109 -0
  38. package/dist/abi1/libc.js.map +1 -0
  39. package/dist/abi1/loader.d.ts +101 -0
  40. package/dist/abi1/loader.d.ts.map +1 -0
  41. package/dist/abi1/loader.js +274 -0
  42. package/dist/abi1/loader.js.map +1 -0
  43. package/dist/abi1/raw.d.ts +104 -0
  44. package/dist/abi1/raw.d.ts.map +1 -0
  45. package/dist/abi1/raw.js +296 -0
  46. package/dist/abi1/raw.js.map +1 -0
  47. package/dist/abi1/strictjson.d.ts +19 -0
  48. package/dist/abi1/strictjson.d.ts.map +1 -0
  49. package/dist/abi1/strictjson.js +78 -0
  50. package/dist/abi1/strictjson.js.map +1 -0
  51. package/dist/abi1/vocab.gen.d.ts +169 -0
  52. package/dist/abi1/vocab.gen.d.ts.map +1 -0
  53. package/dist/abi1/vocab.gen.js +306 -0
  54. package/dist/abi1/vocab.gen.js.map +1 -0
  55. package/dist/cli.d.ts +25 -26
  56. package/dist/cli.d.ts.map +1 -1
  57. package/dist/cli.js +206 -218
  58. package/dist/cli.js.map +1 -1
  59. package/dist/documents.d.ts +195 -0
  60. package/dist/documents.d.ts.map +1 -0
  61. package/dist/documents.js +389 -0
  62. package/dist/documents.js.map +1 -0
  63. package/dist/env.d.ts +16 -0
  64. package/dist/env.d.ts.map +1 -0
  65. package/dist/env.js +57 -0
  66. package/dist/env.js.map +1 -0
  67. package/dist/index.d.ts +19 -24
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +17 -23
  70. package/dist/index.js.map +1 -1
  71. package/dist/json.d.ts +11 -89
  72. package/dist/json.d.ts.map +1 -1
  73. package/dist/json.js +16 -180
  74. package/dist/json.js.map +1 -1
  75. package/dist/library.d.ts +53 -309
  76. package/dist/library.d.ts.map +1 -1
  77. package/dist/library.js +77 -315
  78. package/dist/library.js.map +1 -1
  79. package/dist/ocifetch/constants.gen.d.ts +84 -0
  80. package/dist/ocifetch/constants.gen.d.ts.map +1 -0
  81. package/dist/ocifetch/constants.gen.js +92 -0
  82. package/dist/ocifetch/constants.gen.js.map +1 -0
  83. package/dist/ocifetch/dsse.d.ts +114 -0
  84. package/dist/ocifetch/dsse.d.ts.map +1 -0
  85. package/dist/ocifetch/dsse.js +331 -0
  86. package/dist/ocifetch/dsse.js.map +1 -0
  87. package/dist/ocifetch/ensure.d.ts +65 -0
  88. package/dist/ocifetch/ensure.d.ts.map +1 -0
  89. package/dist/ocifetch/ensure.js +775 -0
  90. package/dist/ocifetch/ensure.js.map +1 -0
  91. package/dist/ocifetch/errors.d.ts +92 -0
  92. package/dist/ocifetch/errors.d.ts.map +1 -0
  93. package/dist/ocifetch/errors.js +101 -0
  94. package/dist/ocifetch/errors.js.map +1 -0
  95. package/dist/ocifetch/goldens.d.ts +44 -0
  96. package/dist/ocifetch/goldens.d.ts.map +1 -0
  97. package/dist/ocifetch/goldens.js +62 -0
  98. package/dist/ocifetch/goldens.js.map +1 -0
  99. package/dist/ocifetch/http.d.ts +124 -0
  100. package/dist/ocifetch/http.d.ts.map +1 -0
  101. package/dist/ocifetch/http.js +549 -0
  102. package/dist/ocifetch/http.js.map +1 -0
  103. package/dist/ocifetch/index.d.ts +17 -0
  104. package/dist/ocifetch/index.d.ts.map +1 -0
  105. package/dist/ocifetch/index.js +14 -0
  106. package/dist/ocifetch/index.js.map +1 -0
  107. package/dist/ocifetch/layout.d.ts +126 -0
  108. package/dist/ocifetch/layout.d.ts.map +1 -0
  109. package/dist/ocifetch/layout.js +375 -0
  110. package/dist/ocifetch/layout.js.map +1 -0
  111. package/dist/ocifetch/localverify.d.ts +43 -0
  112. package/dist/ocifetch/localverify.d.ts.map +1 -0
  113. package/dist/ocifetch/localverify.js +164 -0
  114. package/dist/ocifetch/localverify.js.map +1 -0
  115. package/dist/ocifetch/lock.d.ts +39 -0
  116. package/dist/ocifetch/lock.d.ts.map +1 -0
  117. package/dist/ocifetch/lock.js +140 -0
  118. package/dist/ocifetch/lock.js.map +1 -0
  119. package/dist/ocifetch/oci.d.ts +100 -0
  120. package/dist/ocifetch/oci.d.ts.map +1 -0
  121. package/dist/ocifetch/oci.js +323 -0
  122. package/dist/ocifetch/oci.js.map +1 -0
  123. package/dist/ocifetch/referrers.d.ts +55 -0
  124. package/dist/ocifetch/referrers.d.ts.map +1 -0
  125. package/dist/ocifetch/referrers.js +132 -0
  126. package/dist/ocifetch/referrers.js.map +1 -0
  127. package/dist/ocifetch/types.d.ts +167 -0
  128. package/dist/ocifetch/types.d.ts.map +1 -0
  129. package/dist/ocifetch/types.js +88 -0
  130. package/dist/ocifetch/types.js.map +1 -0
  131. package/dist/ocifetch/unpack.d.ts +55 -0
  132. package/dist/ocifetch/unpack.d.ts.map +1 -0
  133. package/dist/ocifetch/unpack.js +205 -0
  134. package/dist/ocifetch/unpack.js.map +1 -0
  135. package/dist/registry.d.ts +38 -387
  136. package/dist/registry.d.ts.map +1 -1
  137. package/dist/registry.js +95 -819
  138. package/dist/registry.js.map +1 -1
  139. package/dist/schema.d.ts +77 -588
  140. package/dist/schema.d.ts.map +1 -1
  141. package/dist/schema.js +87 -549
  142. package/dist/schema.js.map +1 -1
  143. package/dist/settings.d.ts +27 -36
  144. package/dist/settings.d.ts.map +1 -1
  145. package/dist/settings.js +75 -25
  146. package/dist/settings.js.map +1 -1
  147. package/dist/setup.d.ts +46 -0
  148. package/dist/setup.d.ts.map +1 -0
  149. package/dist/setup.js +79 -0
  150. package/dist/setup.js.map +1 -0
  151. package/dist/tar.d.ts +27 -11
  152. package/dist/tar.d.ts.map +1 -1
  153. package/dist/tar.js +54 -32
  154. package/dist/tar.js.map +1 -1
  155. package/package.json +2 -2
  156. package/dist/discover.d.ts +0 -142
  157. package/dist/discover.d.ts.map +0 -1
  158. package/dist/discover.js +0 -288
  159. package/dist/discover.js.map +0 -1
  160. package/dist/error-codes.d.ts +0 -80
  161. package/dist/error-codes.d.ts.map +0 -1
  162. package/dist/error-codes.js +0 -139
  163. package/dist/error-codes.js.map +0 -1
  164. package/dist/errors.d.ts +0 -284
  165. package/dist/errors.d.ts.map +0 -1
  166. package/dist/errors.js +0 -321
  167. package/dist/errors.js.map +0 -1
  168. package/dist/fetch.d.ts +0 -382
  169. package/dist/fetch.d.ts.map +0 -1
  170. package/dist/fetch.js +0 -1498
  171. package/dist/fetch.js.map +0 -1
  172. package/dist/ffi.d.ts +0 -410
  173. package/dist/ffi.d.ts.map +0 -1
  174. package/dist/ffi.js +0 -1154
  175. package/dist/ffi.js.map +0 -1
  176. package/dist/format.d.ts +0 -128
  177. package/dist/format.d.ts.map +0 -1
  178. package/dist/format.js +0 -132
  179. package/dist/format.js.map +0 -1
  180. package/dist/numeric.d.ts +0 -20
  181. package/dist/numeric.d.ts.map +0 -1
  182. package/dist/numeric.js +0 -107
  183. package/dist/numeric.js.map +0 -1
  184. package/dist/paths.d.ts +0 -55
  185. package/dist/paths.d.ts.map +0 -1
  186. package/dist/paths.js +0 -87
  187. package/dist/paths.js.map +0 -1
  188. package/dist/results.d.ts +0 -495
  189. package/dist/results.d.ts.map +0 -1
  190. package/dist/results.js +0 -406
  191. package/dist/results.js.map +0 -1
  192. package/dist/transform.d.ts +0 -73
  193. package/dist/transform.d.ts.map +0 -1
  194. package/dist/transform.js +0 -533
  195. package/dist/transform.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/abi1/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The generic, data-driven call engine over the typed table `defineRawFunctions`
3
+ * builds for one opened ABI v1 image (plan §3.3(d) happens in `./loader.ts`,
4
+ * which calls `./libc.ts`'s `ffiOpen` then this file's `defineRawFunctions`).
5
+ *
6
+ * This is the "invoke by name" dispatcher the plan asks of this emitter
7
+ * (scripts/abi-v1/emit/ts.py): given a `SYMBOL.*` name and a resolved
8
+ * argument array, it marshals, calls and decodes GENERICALLY, reading only
9
+ * `./decls.gen.ts`'s `FUNCTION_SPECS` to know a function's shape. See
10
+ * emit/ts.py's module docstring for why this is ONE generic routine rather
11
+ * than 38 generated near-duplicates: ffi-rs 1.3.7 can only call a symbol
12
+ * already known BY NAME (there is no "call this resolved pointer" API), so
13
+ * every chs_* call already goes through one mechanism (`define`/`load` by
14
+ * name) — a per-function body would only restate the same few
15
+ * parameter-kind branches 38 times.
16
+ *
17
+ * Every chs_* name this file ever sees comes from `./decls.gen.ts` (as a
18
+ * `FUNCTION_SPECS`/`SYMBOL` value — `FUNCTION_SPECS`'s own keys, read
19
+ * through `Object.entries`, double as the `define()` table's keys; see
20
+ * `defineRawFunctions`'s own comment for why that must be the REAL chs_*
21
+ * name) or from a caller's own runtime data (cases.json, parsed at
22
+ * runtime); this file's own source never spells one.
23
+ */
24
+ import { type JsExternal } from 'ffi-rs';
25
+ import { type CallErrorFields } from './errors.js';
26
+ type RawFn = (args: unknown[]) => unknown;
27
+ export type RawApi = Readonly<Record<string, RawFn>>;
28
+ /**
29
+ * `define()` the whole described surface against one already-opened image
30
+ * (`libraryKey`, via `./libc.ts`'s `ffiOpen` — call that FIRST). One call
31
+ * builds every chs_* function this image exposes; `rawCall` below is the
32
+ * only thing that ever invokes the result.
33
+ *
34
+ * The table is keyed by each function's OWN chs_* name, never
35
+ * `CAMEL_NAMES`: `define()`'s per-entry type
36
+ * (`Omit<FFIParams, 'paramsValue' | 'funcName'>`) OMITS `funcName`
37
+ * entirely (measured against the installed ffi-rs 1.3.7 package) — the
38
+ * symbol `define()` resolves IS the table entry's own key, so a
39
+ * `funcName` alongside a differently-spelled key is silently ignored and
40
+ * the real call fails at run time ("Cannot find `<key>` function"), not
41
+ * at compile time (TypeScript's excess-property check does not see it
42
+ * through this `table` variable). Every chs_* name here comes from
43
+ * `Object.entries(FUNCTION_SPECS)` — this file's own source never spells
44
+ * one (scripts/abi-v1/check-no-hand-decls.py's rule 3 matches a LITERAL
45
+ * `chs_x: {`, never a key built from a loop variable).
46
+ */
47
+ export declare function defineRawFunctions(libraryKey: string): RawApi;
48
+ /**
49
+ * The null `External` value ffi-rs accepts for an optional (nullable)
50
+ * handle parameter: a zeroed 8-byte slot read back as a pointer. `Str`
51
+ * cannot carry a null (an input parameter typed `Str` throws before the
52
+ * native call is made for a JS `null`/`undefined`), but `External` can —
53
+ * the same technique v0 `ts/src/ffi.ts`'s `NULL_PTR` uses, re-derived here
54
+ * rather than imported (this directory touches no v0 file; plan §3.4).
55
+ */
56
+ export declare const NULL_EXTERNAL: JsExternal;
57
+ /** Read `buf`'s bytes (via the raw `chs_buf_data`/`chs_buf_len` accessors) into an owned copy, then free `buf`. Returns an empty Buffer for a null handle (never dereferenced). */
58
+ export declare function readOwnedBuf(raw: RawApi, buf: JsExternal): Buffer;
59
+ /** Release a handle directly through its `SYMBOL.*_FREE` function (for a handle this caller minted but never passed through `rawCall`'s own out-handle decoding, or to close early). Freeing a null handle is a documented no-op (D2). */
60
+ export declare function freeHandle(raw: RawApi, chsFreeSymbol: string, ptr: JsExternal): void;
61
+ export type HandleRef = {
62
+ readonly kind: string;
63
+ readonly ptr: JsExternal;
64
+ };
65
+ export type RawCallResult = {
66
+ readonly outcome: 'void';
67
+ } | {
68
+ readonly outcome: 'value';
69
+ readonly value: number | string | null;
70
+ } | {
71
+ readonly outcome: 'handle';
72
+ readonly handle: HandleRef;
73
+ } | {
74
+ readonly outcome: 'status';
75
+ readonly status: number;
76
+ readonly statusName: string;
77
+ readonly outs: Readonly<Record<string, Buffer | HandleRef>>;
78
+ readonly error: CallErrorFields | null;
79
+ };
80
+ /**
81
+ * Call `name` (a `SYMBOL.*` value) with `args`, one JS value per INPUT
82
+ * parameter in declaration order — `number` for a scalar/enum, `Buffer` for
83
+ * bytes_in, `JsExternal` (or `NULL_EXTERNAL`) for a handle. Marshals every
84
+ * `out_handle`/`out_error` automatically and decodes the result generically
85
+ * from `FUNCTION_SPECS[name]`.
86
+ *
87
+ * Refuses a function whose return is a borrowed `u8ptr_const`
88
+ * (`chs_buf_data`): its length lives in a SEPARATE call (`chs_buf_len`),
89
+ * which this generic engine has no way to know about for an arbitrary
90
+ * function. `./raw.ts`'s own `readOwnedBuf` calls that pair directly; no
91
+ * described function other than `chs_buf_data` has this shape today.
92
+ */
93
+ export declare function rawCall(raw: RawApi, name: string, args: readonly unknown[]): RawCallResult;
94
+ /** A `Uint8Array` as the `Buffer` ffi-rs marshals, without copying. */
95
+ export declare function asBuffer(bytes: Uint8Array): Buffer;
96
+ /**
97
+ * The outputs of a status call that came back OK; anything else throws the
98
+ * class `spec/abi-v1/sdk.json`'s status table gives (`./errmap.gen.ts`). A
99
+ * non-OK status with no error object is the library's bug, never a silent
100
+ * success.
101
+ */
102
+ export declare function checkStatus(result: RawCallResult): Readonly<Record<string, Buffer | HandleRef>>;
103
+ export {};
104
+ //# sourceMappingURL=raw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/abi1/raw.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAOL,KAAK,UAAU,EAGhB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,aAAa,CAAC;AAiElE,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAC1C,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM7D;AAwBD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,UAQxB,CAAC;AAWL,mLAAmL;AACnL,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAMjE;AAED,0OAA0O;AAC1O,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAEpF;AAUD,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC;AAE5E,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;CACxC,CAAC;AAiBN;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,aAAa,CA2E1F;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAO/F"}
@@ -0,0 +1,296 @@
1
+ /**
2
+ * The generic, data-driven call engine over the typed table `defineRawFunctions`
3
+ * builds for one opened ABI v1 image (plan §3.3(d) happens in `./loader.ts`,
4
+ * which calls `./libc.ts`'s `ffiOpen` then this file's `defineRawFunctions`).
5
+ *
6
+ * This is the "invoke by name" dispatcher the plan asks of this emitter
7
+ * (scripts/abi-v1/emit/ts.py): given a `SYMBOL.*` name and a resolved
8
+ * argument array, it marshals, calls and decodes GENERICALLY, reading only
9
+ * `./decls.gen.ts`'s `FUNCTION_SPECS` to know a function's shape. See
10
+ * emit/ts.py's module docstring for why this is ONE generic routine rather
11
+ * than 38 generated near-duplicates: ffi-rs 1.3.7 can only call a symbol
12
+ * already known BY NAME (there is no "call this resolved pointer" API), so
13
+ * every chs_* call already goes through one mechanism (`define`/`load` by
14
+ * name) — a per-function body would only restate the same few
15
+ * parameter-kind branches 38 times.
16
+ *
17
+ * Every chs_* name this file ever sees comes from `./decls.gen.ts` (as a
18
+ * `FUNCTION_SPECS`/`SYMBOL` value — `FUNCTION_SPECS`'s own keys, read
19
+ * through `Object.entries`, double as the `define()` table's keys; see
20
+ * `defineRawFunctions`'s own comment for why that must be the REAL chs_*
21
+ * name) or from a caller's own runtime data (cases.json, parsed at
22
+ * runtime); this file's own source never spells one.
23
+ */
24
+ import { createExternalBuffer, createPointer, DataType, define, freePointer, isNullPointer, PointerType, restorePointer, } from 'ffi-rs';
25
+ import { BUF_HANDLE, FUNCTION_SPECS, STATUS_NAMES, SYMBOL } from './decls.gen.js';
26
+ import { internalError } from './errors.js';
27
+ import { errorForStatus } from './errmap.gen.js';
28
+ import { Status } from './vocab.gen.js';
29
+ import { readCString } from './libc.js';
30
+ const { External, I32, U32, I64, U64, Void, U8Array } = DataType;
31
+ function scalarDataType(type) {
32
+ switch (type) {
33
+ case 'int32':
34
+ case 'int':
35
+ return I32;
36
+ case 'uint32':
37
+ return U32;
38
+ case 'int64':
39
+ return I64;
40
+ case 'uint64':
41
+ case 'size':
42
+ return U64;
43
+ case 'cstr_static':
44
+ case 'u8ptr_const':
45
+ return External;
46
+ default:
47
+ throw new Error(`chtypes abi1: raw.ts does not know the ffi-rs type for scalar ${String(type)}`);
48
+ }
49
+ }
50
+ function retDataType(spec) {
51
+ switch (spec.returns.kind) {
52
+ case 'status':
53
+ return I32;
54
+ case 'void':
55
+ return Void;
56
+ case 'enum':
57
+ return I32;
58
+ case 'handle':
59
+ return External;
60
+ case 'scalar':
61
+ return scalarDataType(spec.returns.type);
62
+ default:
63
+ throw new Error(`chtypes abi1: unknown return kind ${spec.returns.kind}`);
64
+ }
65
+ }
66
+ function paramDataTypes(p) {
67
+ switch (p.kind) {
68
+ case 'scalar':
69
+ return [scalarDataType(p.type)];
70
+ case 'enum':
71
+ return [I32];
72
+ case 'bytes_in':
73
+ return [U8Array, U64];
74
+ case 'handle':
75
+ case 'out_handle':
76
+ case 'out_error':
77
+ return [External];
78
+ case 'out_scalar':
79
+ // Reserved: no FIRM or provisional function uses it today
80
+ // (spec/abi-v1/abi.json); nothing to marshal yet.
81
+ throw new Error('chtypes abi1: out_scalar has no described use yet');
82
+ default:
83
+ throw new Error(`chtypes abi1: unknown param kind ${p.kind}`);
84
+ }
85
+ }
86
+ /**
87
+ * `define()` the whole described surface against one already-opened image
88
+ * (`libraryKey`, via `./libc.ts`'s `ffiOpen` — call that FIRST). One call
89
+ * builds every chs_* function this image exposes; `rawCall` below is the
90
+ * only thing that ever invokes the result.
91
+ *
92
+ * The table is keyed by each function's OWN chs_* name, never
93
+ * `CAMEL_NAMES`: `define()`'s per-entry type
94
+ * (`Omit<FFIParams, 'paramsValue' | 'funcName'>`) OMITS `funcName`
95
+ * entirely (measured against the installed ffi-rs 1.3.7 package) — the
96
+ * symbol `define()` resolves IS the table entry's own key, so a
97
+ * `funcName` alongside a differently-spelled key is silently ignored and
98
+ * the real call fails at run time ("Cannot find `<key>` function"), not
99
+ * at compile time (TypeScript's excess-property check does not see it
100
+ * through this `table` variable). Every chs_* name here comes from
101
+ * `Object.entries(FUNCTION_SPECS)` — this file's own source never spells
102
+ * one (scripts/abi-v1/check-no-hand-decls.py's rule 3 matches a LITERAL
103
+ * `chs_x: {`, never a key built from a loop variable).
104
+ */
105
+ export function defineRawFunctions(libraryKey) {
106
+ const table = {};
107
+ for (const [name, spec] of Object.entries(FUNCTION_SPECS)) {
108
+ table[name] = { library: libraryKey, retType: retDataType(spec), paramsType: spec.params.flatMap((p) => paramDataTypes(p)) };
109
+ }
110
+ return define(table);
111
+ }
112
+ function u64Slot() {
113
+ return createPointer({ paramsType: [U64], paramsValue: [0] });
114
+ }
115
+ function readExternalSlot(slot) {
116
+ // The generic parameter is a DataType VALUE (ffi-rs maps it through
117
+ // DataTypeToType), not the JS type we want back — `External` here, not
118
+ // `JsExternal`; passing the latter silently yields `never[]`, so a
119
+ // noUncheckedIndexedAccess `[0]` reads as `undefined` always, which only
120
+ // surfaces as a cast error rather than a wrong runtime value (measured
121
+ // against ffi-rs 1.3.7's own .d.ts).
122
+ return restorePointer({ retType: [External], paramsValue: slot })[0];
123
+ }
124
+ function dropSlot(slot) {
125
+ freePointer({ paramsType: [U64], paramsValue: slot, pointerType: PointerType.RsPointer });
126
+ }
127
+ /**
128
+ * The null `External` value ffi-rs accepts for an optional (nullable)
129
+ * handle parameter: a zeroed 8-byte slot read back as a pointer. `Str`
130
+ * cannot carry a null (an input parameter typed `Str` throws before the
131
+ * native call is made for a JS `null`/`undefined`), but `External` can —
132
+ * the same technique v0 `ts/src/ffi.ts`'s `NULL_PTR` uses, re-derived here
133
+ * rather than imported (this directory touches no v0 file; plan §3.4).
134
+ */
135
+ export const NULL_EXTERNAL = (() => {
136
+ const slot = u64Slot();
137
+ const p = readExternalSlot(slot);
138
+ dropSlot(slot);
139
+ if (!isNullPointer(p)) {
140
+ throw new Error('chtypes abi1: internal — the null External constant did not come back null');
141
+ }
142
+ return p;
143
+ })();
144
+ // --------------------------------------------------------------- buf reading
145
+ function rawFn(raw, chsName) {
146
+ if (FUNCTION_SPECS[chsName] === undefined)
147
+ throw new Error(`chtypes abi1: ${chsName} is not a described symbol`);
148
+ const fn = raw[chsName];
149
+ if (fn === undefined)
150
+ throw new Error(`chtypes abi1: ${chsName} was not declared on this image`);
151
+ return fn;
152
+ }
153
+ /** Read `buf`'s bytes (via the raw `chs_buf_data`/`chs_buf_len` accessors) into an owned copy, then free `buf`. Returns an empty Buffer for a null handle (never dereferenced). */
154
+ export function readOwnedBuf(raw, buf) {
155
+ if (isNullPointer(buf))
156
+ return Buffer.alloc(0);
157
+ const len = Number(rawFn(raw, SYMBOL.BUF_LEN)([buf]));
158
+ const out = len === 0 ? Buffer.alloc(0) : Buffer.from(createExternalBuffer(rawFn(raw, SYMBOL.BUF_DATA)([buf]), len));
159
+ rawFn(raw, SYMBOL.BUF_FREE)([buf]);
160
+ return out;
161
+ }
162
+ /** Release a handle directly through its `SYMBOL.*_FREE` function (for a handle this caller minted but never passed through `rawCall`'s own out-handle decoding, or to close early). Freeing a null handle is a documented no-op (D2). */
163
+ export function freeHandle(raw, chsFreeSymbol, ptr) {
164
+ rawFn(raw, chsFreeSymbol)([ptr]);
165
+ }
166
+ /** A NUL-terminated, guaranteed-ASCII static string (`chs_build_info`/`chs_clickhouse_version`'s `cstr_static` return): null for a null pointer (a malformed or hostile build; never normative, but must not crash the reader). `strlen` lives on the libc library key (`./libc.ts`), which is always open by the time a chs_* image has been loaded at all. */
167
+ function readStaticCString(ptr) {
168
+ if (isNullPointer(ptr))
169
+ return null;
170
+ return readCString(ptr);
171
+ }
172
+ function inputParams(spec) {
173
+ return spec.params.filter((p) => p.kind !== 'out_handle' && p.kind !== 'out_error');
174
+ }
175
+ function decodeError(raw, status, errSlot) {
176
+ const errPtr = readExternalSlot(errSlot);
177
+ if (isNullPointer(errPtr))
178
+ return null;
179
+ const chCode = Number(rawFn(raw, SYMBOL.ERROR_CH_CODE)([errPtr]));
180
+ const chName = readOwnedBuf(raw, rawFn(raw, SYMBOL.ERROR_CH_NAME)([errPtr])).toString('utf8');
181
+ const messageBytes = readOwnedBuf(raw, rawFn(raw, SYMBOL.ERROR_MESSAGE)([errPtr]));
182
+ const column = readOwnedBuf(raw, rawFn(raw, SYMBOL.ERROR_COLUMN)([errPtr]));
183
+ rawFn(raw, SYMBOL.ERROR_FREE)([errPtr]);
184
+ return { status, chCode, chName, messageBytes, column };
185
+ }
186
+ /**
187
+ * Call `name` (a `SYMBOL.*` value) with `args`, one JS value per INPUT
188
+ * parameter in declaration order — `number` for a scalar/enum, `Buffer` for
189
+ * bytes_in, `JsExternal` (or `NULL_EXTERNAL`) for a handle. Marshals every
190
+ * `out_handle`/`out_error` automatically and decodes the result generically
191
+ * from `FUNCTION_SPECS[name]`.
192
+ *
193
+ * Refuses a function whose return is a borrowed `u8ptr_const`
194
+ * (`chs_buf_data`): its length lives in a SEPARATE call (`chs_buf_len`),
195
+ * which this generic engine has no way to know about for an arbitrary
196
+ * function. `./raw.ts`'s own `readOwnedBuf` calls that pair directly; no
197
+ * described function other than `chs_buf_data` has this shape today.
198
+ */
199
+ export function rawCall(raw, name, args) {
200
+ const spec = FUNCTION_SPECS[name];
201
+ if (spec === undefined)
202
+ throw new Error(`chtypes abi1: no such described function ${name}`);
203
+ const inputs = inputParams(spec);
204
+ if (inputs.length !== args.length) {
205
+ throw new Error(`chtypes abi1: ${name} takes ${inputs.length} input argument(s), got ${args.length}`);
206
+ }
207
+ const paramsValue = [];
208
+ const outSlots = [];
209
+ let i = 0;
210
+ for (const p of spec.params) {
211
+ if (p.kind === 'out_handle' || p.kind === 'out_error') {
212
+ const slot = u64Slot();
213
+ // `slot` is the length-1 JsExternal[] createPointer returns: SPREAD it
214
+ // into paramsValue (one positional arg), never pushed as the array
215
+ // itself — measured: pushing the array gives ffi-rs an Object where it
216
+ // expects an External ("expect External, got: Object"). v0's own
217
+ // ts/src/ffi.ts calls every slot this same way (`...errSlot`).
218
+ paramsValue.push(...slot);
219
+ outSlots.push({ param: p, slot });
220
+ continue;
221
+ }
222
+ const v = args[i++];
223
+ if (p.kind === 'bytes_in') {
224
+ const b = v;
225
+ // DataType.U64 maps to a plain JS `number` (ffi-rs's own DataTypeToType),
226
+ // not `bigint` — measured: passing a BigInt here throws "NumberExpected".
227
+ paramsValue.push(b, b.length);
228
+ }
229
+ else {
230
+ paramsValue.push(v);
231
+ }
232
+ }
233
+ const call = rawFn(raw, name);
234
+ const result = call(paramsValue);
235
+ try {
236
+ switch (spec.returns.kind) {
237
+ case 'void':
238
+ return { outcome: 'void' };
239
+ case 'status': {
240
+ const status = Number(result);
241
+ const statusName = STATUS_NAMES[status] ?? `UNKNOWN(${String(result)})`;
242
+ const outs = {};
243
+ let error = null;
244
+ for (const { param, slot } of outSlots) {
245
+ if (param.kind === 'out_error') {
246
+ error = decodeError(raw, status, slot);
247
+ continue;
248
+ }
249
+ const ptr = readExternalSlot(slot);
250
+ outs[param.name] = param.type === BUF_HANDLE ? readOwnedBuf(raw, ptr) : { kind: param.type, ptr };
251
+ }
252
+ return { outcome: 'status', status, statusName, outs, error };
253
+ }
254
+ case 'scalar':
255
+ if (spec.returns.type === 'cstr_static') {
256
+ return { outcome: 'value', value: readStaticCString(result) };
257
+ }
258
+ if (spec.returns.type === 'u8ptr_const') {
259
+ throw new Error(`chtypes abi1: ${name} returns a borrowed u8ptr_const (its length lives in a different ` +
260
+ 'described call); call it directly through the raw table, not through rawCall');
261
+ }
262
+ return { outcome: 'value', value: Number(result) };
263
+ case 'enum':
264
+ return { outcome: 'value', value: Number(result) };
265
+ case 'handle':
266
+ return { outcome: 'handle', handle: { kind: spec.returns.type, ptr: result } };
267
+ default:
268
+ throw new Error(`chtypes abi1: unknown return kind ${spec.returns.kind}`);
269
+ }
270
+ }
271
+ finally {
272
+ for (const { slot } of outSlots)
273
+ dropSlot(slot);
274
+ }
275
+ }
276
+ /** A `Uint8Array` as the `Buffer` ffi-rs marshals, without copying. */
277
+ export function asBuffer(bytes) {
278
+ return Buffer.isBuffer(bytes) ? bytes : Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
279
+ }
280
+ /**
281
+ * The outputs of a status call that came back OK; anything else throws the
282
+ * class `spec/abi-v1/sdk.json`'s status table gives (`./errmap.gen.ts`). A
283
+ * non-OK status with no error object is the library's bug, never a silent
284
+ * success.
285
+ */
286
+ export function checkStatus(result) {
287
+ if (result.outcome !== 'status')
288
+ throw internalError('a status call returned no status');
289
+ if (result.status === Status.Ok)
290
+ return result.outs;
291
+ if (result.error === null) {
292
+ throw internalError(`the library answered status ${result.status} (${result.statusName}) with no error object`);
293
+ }
294
+ throw errorForStatus(result.status, result.error);
295
+ }
296
+ //# sourceMappingURL=raw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.js","sourceRoot":"","sources":["../../src/abi1/raw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The one strict JSON entry every document decoder and the loader's build-info
3
+ * reader share (`docs/reference/bindings-v1.md` §5, rules 1 and 3): the stock
4
+ * `JSON.parse`, preceded by a scan that refuses a duplicate key at any nesting
5
+ * depth, because `JSON.parse` has already silently folded a duplicate to its
6
+ * last value by the time anything could see it.
7
+ */
8
+ /** A key repeated within one JSON object. */
9
+ export declare class DuplicateKeyError extends Error {
10
+ readonly key: string;
11
+ constructor(key: string);
12
+ }
13
+ /** The first key repeated within the SAME enclosing `{...}` object in `text` (any nesting depth), or null. A minimal JSON scanner: tracks string literals (with escapes) and `{`/`}` nesting; a quoted token immediately followed by `:` is unambiguously an object key in valid JSON, in both array and object contexts. */
14
+ export declare function firstDuplicateKey(text: string): string | null;
15
+ /** `JSON.parse`, refusing a duplicate key first. A parse failure is the parser's own `SyntaxError`. */
16
+ export declare function parseStrictJson(text: string): unknown;
17
+ /** True when every character is ASCII. */
18
+ export declare function isAsciiOnly(text: string): boolean;
19
+ //# sourceMappingURL=strictjson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strictjson.d.ts","sourceRoot":"","sources":["../../src/abi1/strictjson.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,6CAA6C;AAC7C,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,YAAY,GAAG,EAAE,MAAM,EAItB;CACF;AAED,6TAA6T;AAC7T,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyC7D;AAED,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjD"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The one strict JSON entry every document decoder and the loader's build-info
3
+ * reader share (`docs/reference/bindings-v1.md` §5, rules 1 and 3): the stock
4
+ * `JSON.parse`, preceded by a scan that refuses a duplicate key at any nesting
5
+ * depth, because `JSON.parse` has already silently folded a duplicate to its
6
+ * last value by the time anything could see it.
7
+ */
8
+ /** A key repeated within one JSON object. */
9
+ export class DuplicateKeyError extends Error {
10
+ key;
11
+ constructor(key) {
12
+ super(`"${key}" appears twice in one object`);
13
+ this.name = 'DuplicateKeyError';
14
+ this.key = key;
15
+ }
16
+ }
17
+ /** The first key repeated within the SAME enclosing `{...}` object in `text` (any nesting depth), or null. A minimal JSON scanner: tracks string literals (with escapes) and `{`/`}` nesting; a quoted token immediately followed by `:` is unambiguously an object key in valid JSON, in both array and object contexts. */
18
+ export function firstDuplicateKey(text) {
19
+ const stack = [];
20
+ let i = 0;
21
+ const n = text.length;
22
+ while (i < n) {
23
+ const c = text[i];
24
+ if (c === '"') {
25
+ const start = i + 1;
26
+ let j = start;
27
+ while (j < n) {
28
+ if (text[j] === '\\') {
29
+ j += 2;
30
+ continue;
31
+ }
32
+ if (text[j] === '"')
33
+ break;
34
+ j++;
35
+ }
36
+ const raw = text.slice(start, j);
37
+ let k = j + 1;
38
+ while (k < n && /\s/.test(text[k]))
39
+ k++;
40
+ if (text[k] === ':' && stack.length > 0) {
41
+ const top = stack[stack.length - 1];
42
+ if (top.has(raw))
43
+ return raw;
44
+ top.add(raw);
45
+ }
46
+ i = j + 1;
47
+ continue;
48
+ }
49
+ if (c === '{') {
50
+ stack.push(new Set());
51
+ i++;
52
+ continue;
53
+ }
54
+ if (c === '}') {
55
+ stack.pop();
56
+ i++;
57
+ continue;
58
+ }
59
+ i++;
60
+ }
61
+ return null;
62
+ }
63
+ /** `JSON.parse`, refusing a duplicate key first. A parse failure is the parser's own `SyntaxError`. */
64
+ export function parseStrictJson(text) {
65
+ const dup = firstDuplicateKey(text);
66
+ if (dup !== null)
67
+ throw new DuplicateKeyError(dup);
68
+ return JSON.parse(text);
69
+ }
70
+ /** True when every character is ASCII. */
71
+ export function isAsciiOnly(text) {
72
+ for (let i = 0; i < text.length; i++) {
73
+ if (text.charCodeAt(i) > 0x7f)
74
+ return false;
75
+ }
76
+ return true;
77
+ }
78
+ //# sourceMappingURL=strictjson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strictjson.js","sourceRoot":"","sources":["../../src/abi1/strictjson.ts"],"names":[],"mappings":"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"}