@wavehouse/chtypes 0.5.2 → 1.0.0
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.
- package/CHANGELOG.md +26 -0
- package/README.md +34 -38
- package/dist/abi1/buildinfo.d.ts +40 -0
- package/dist/abi1/buildinfo.d.ts.map +1 -0
- package/dist/abi1/buildinfo.js +83 -0
- package/dist/abi1/buildinfo.js.map +1 -0
- package/dist/abi1/calls.gen.d.ts +55 -0
- package/dist/abi1/calls.gen.d.ts.map +1 -0
- package/dist/abi1/calls.gen.js +110 -0
- package/dist/abi1/calls.gen.js.map +1 -0
- package/dist/abi1/decls.gen.d.ts +115 -0
- package/dist/abi1/decls.gen.d.ts.map +1 -0
- package/dist/abi1/decls.gen.js +1613 -0
- package/dist/abi1/decls.gen.js.map +1 -0
- package/dist/abi1/errmap.gen.d.ts +18 -0
- package/dist/abi1/errmap.gen.d.ts.map +1 -0
- package/dist/abi1/errmap.gen.js +66 -0
- package/dist/abi1/errmap.gen.js.map +1 -0
- package/dist/abi1/errors.d.ts +107 -0
- package/dist/abi1/errors.d.ts.map +1 -0
- package/dist/abi1/errors.js +134 -0
- package/dist/abi1/errors.js.map +1 -0
- package/dist/abi1/handles.d.ts +31 -0
- package/dist/abi1/handles.d.ts.map +1 -0
- package/dist/abi1/handles.js +76 -0
- package/dist/abi1/handles.js.map +1 -0
- package/dist/abi1/index.d.ts +17 -0
- package/dist/abi1/index.d.ts.map +1 -0
- package/dist/abi1/index.js +17 -0
- package/dist/abi1/index.js.map +1 -0
- package/dist/abi1/libc.d.ts +54 -0
- package/dist/abi1/libc.d.ts.map +1 -0
- package/dist/abi1/libc.gen.d.ts +12 -0
- package/dist/abi1/libc.gen.d.ts.map +1 -0
- package/dist/abi1/libc.gen.js +75 -0
- package/dist/abi1/libc.gen.js.map +1 -0
- package/dist/abi1/libc.js +109 -0
- package/dist/abi1/libc.js.map +1 -0
- package/dist/abi1/loader.d.ts +99 -0
- package/dist/abi1/loader.d.ts.map +1 -0
- package/dist/abi1/loader.js +261 -0
- package/dist/abi1/loader.js.map +1 -0
- package/dist/abi1/raw.d.ts +104 -0
- package/dist/abi1/raw.d.ts.map +1 -0
- package/dist/abi1/raw.js +296 -0
- package/dist/abi1/raw.js.map +1 -0
- package/dist/abi1/strictjson.d.ts +19 -0
- package/dist/abi1/strictjson.d.ts.map +1 -0
- package/dist/abi1/strictjson.js +78 -0
- package/dist/abi1/strictjson.js.map +1 -0
- package/dist/abi1/vocab.gen.d.ts +169 -0
- package/dist/abi1/vocab.gen.d.ts.map +1 -0
- package/dist/abi1/vocab.gen.js +306 -0
- package/dist/abi1/vocab.gen.js.map +1 -0
- package/dist/cli.d.ts +25 -26
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +206 -218
- package/dist/cli.js.map +1 -1
- package/dist/documents.d.ts +195 -0
- package/dist/documents.d.ts.map +1 -0
- package/dist/documents.js +389 -0
- package/dist/documents.js.map +1 -0
- package/dist/env.d.ts +16 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +57 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +19 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -23
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +11 -89
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +16 -180
- package/dist/json.js.map +1 -1
- package/dist/library.d.ts +53 -309
- package/dist/library.d.ts.map +1 -1
- package/dist/library.js +77 -315
- package/dist/library.js.map +1 -1
- package/dist/ocifetch/constants.gen.d.ts +84 -0
- package/dist/ocifetch/constants.gen.d.ts.map +1 -0
- package/dist/ocifetch/constants.gen.js +92 -0
- package/dist/ocifetch/constants.gen.js.map +1 -0
- package/dist/ocifetch/dsse.d.ts +114 -0
- package/dist/ocifetch/dsse.d.ts.map +1 -0
- package/dist/ocifetch/dsse.js +331 -0
- package/dist/ocifetch/dsse.js.map +1 -0
- package/dist/ocifetch/ensure.d.ts +65 -0
- package/dist/ocifetch/ensure.d.ts.map +1 -0
- package/dist/ocifetch/ensure.js +775 -0
- package/dist/ocifetch/ensure.js.map +1 -0
- package/dist/ocifetch/errors.d.ts +92 -0
- package/dist/ocifetch/errors.d.ts.map +1 -0
- package/dist/ocifetch/errors.js +101 -0
- package/dist/ocifetch/errors.js.map +1 -0
- package/dist/ocifetch/goldens.d.ts +44 -0
- package/dist/ocifetch/goldens.d.ts.map +1 -0
- package/dist/ocifetch/goldens.js +62 -0
- package/dist/ocifetch/goldens.js.map +1 -0
- package/dist/ocifetch/http.d.ts +124 -0
- package/dist/ocifetch/http.d.ts.map +1 -0
- package/dist/ocifetch/http.js +549 -0
- package/dist/ocifetch/http.js.map +1 -0
- package/dist/ocifetch/index.d.ts +17 -0
- package/dist/ocifetch/index.d.ts.map +1 -0
- package/dist/ocifetch/index.js +14 -0
- package/dist/ocifetch/index.js.map +1 -0
- package/dist/ocifetch/layout.d.ts +126 -0
- package/dist/ocifetch/layout.d.ts.map +1 -0
- package/dist/ocifetch/layout.js +375 -0
- package/dist/ocifetch/layout.js.map +1 -0
- package/dist/ocifetch/localverify.d.ts +43 -0
- package/dist/ocifetch/localverify.d.ts.map +1 -0
- package/dist/ocifetch/localverify.js +164 -0
- package/dist/ocifetch/localverify.js.map +1 -0
- package/dist/ocifetch/lock.d.ts +39 -0
- package/dist/ocifetch/lock.d.ts.map +1 -0
- package/dist/ocifetch/lock.js +140 -0
- package/dist/ocifetch/lock.js.map +1 -0
- package/dist/ocifetch/oci.d.ts +100 -0
- package/dist/ocifetch/oci.d.ts.map +1 -0
- package/dist/ocifetch/oci.js +323 -0
- package/dist/ocifetch/oci.js.map +1 -0
- package/dist/ocifetch/referrers.d.ts +55 -0
- package/dist/ocifetch/referrers.d.ts.map +1 -0
- package/dist/ocifetch/referrers.js +132 -0
- package/dist/ocifetch/referrers.js.map +1 -0
- package/dist/ocifetch/types.d.ts +167 -0
- package/dist/ocifetch/types.d.ts.map +1 -0
- package/dist/ocifetch/types.js +88 -0
- package/dist/ocifetch/types.js.map +1 -0
- package/dist/ocifetch/unpack.d.ts +55 -0
- package/dist/ocifetch/unpack.d.ts.map +1 -0
- package/dist/ocifetch/unpack.js +205 -0
- package/dist/ocifetch/unpack.js.map +1 -0
- package/dist/registry.d.ts +38 -387
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +94 -819
- package/dist/registry.js.map +1 -1
- package/dist/schema.d.ts +77 -588
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +87 -549
- package/dist/schema.js.map +1 -1
- package/dist/settings.d.ts +27 -36
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +75 -25
- package/dist/settings.js.map +1 -1
- package/dist/setup.d.ts +37 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +60 -0
- package/dist/setup.js.map +1 -0
- package/dist/tar.d.ts +27 -11
- package/dist/tar.d.ts.map +1 -1
- package/dist/tar.js +54 -32
- package/dist/tar.js.map +1 -1
- package/package.json +2 -2
- package/dist/discover.d.ts +0 -142
- package/dist/discover.d.ts.map +0 -1
- package/dist/discover.js +0 -288
- package/dist/discover.js.map +0 -1
- package/dist/error-codes.d.ts +0 -80
- package/dist/error-codes.d.ts.map +0 -1
- package/dist/error-codes.js +0 -139
- package/dist/error-codes.js.map +0 -1
- package/dist/errors.d.ts +0 -284
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -321
- package/dist/errors.js.map +0 -1
- package/dist/fetch.d.ts +0 -382
- package/dist/fetch.d.ts.map +0 -1
- package/dist/fetch.js +0 -1498
- package/dist/fetch.js.map +0 -1
- package/dist/ffi.d.ts +0 -410
- package/dist/ffi.d.ts.map +0 -1
- package/dist/ffi.js +0 -1154
- package/dist/ffi.js.map +0 -1
- package/dist/format.d.ts +0 -128
- package/dist/format.d.ts.map +0 -1
- package/dist/format.js +0 -132
- package/dist/format.js.map +0 -1
- package/dist/numeric.d.ts +0 -20
- package/dist/numeric.d.ts.map +0 -1
- package/dist/numeric.js +0 -107
- package/dist/numeric.js.map +0 -1
- package/dist/paths.d.ts +0 -55
- package/dist/paths.d.ts.map +0 -1
- package/dist/paths.js +0 -87
- package/dist/paths.js.map +0 -1
- package/dist/results.d.ts +0 -495
- package/dist/results.d.ts.map +0 -1
- package/dist/results.js +0 -406
- package/dist/results.js.map +0 -1
- package/dist/transform.d.ts +0 -73
- package/dist/transform.d.ts.map +0 -1
- package/dist/transform.js +0 -533
- 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"}
|
package/dist/abi1/raw.js
ADDED
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EAEb,WAAW,EACX,cAAc,GACf,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAqC,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrH,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;AAEjE,SAAS,cAAc,CAAC,IAAmB;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,KAAK;YACR,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC;QAClB;YACE,MAAM,IAAI,KAAK,CAAC,iEAAiE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB;IACrC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C;YACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,CAAY;IAClC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,KAAK,UAAU;YACb,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,KAAK,YAAY;YACf,0DAA0D;YAC1D,kDAAkD;YAClD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE;YACE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,KAAK,GAAmF,EAAE,CAAC;IACjG,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/H,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAsB,CAAC;AAC5C,CAAC;AAMD,SAAS,OAAO;IACd,OAAO,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU;IAClC,oEAAoE;IACpE,uEAAuE;IACvE,mEAAmE;IACnE,yEAAyE;IACzE,uEAAuE;IACvE,qCAAqC;IACrC,OAAO,cAAc,CAAoB,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAe,CAAC;AACxG,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU;IAC1B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAe,CAAC,GAAG,EAAE;IAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACf,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,EAAE,CAAC;AAEL,8EAA8E;AAE9E,SAAS,KAAK,CAAC,GAAW,EAAE,OAAe;IACzC,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,4BAA4B,CAAC,CAAC;IACjH,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,IAAI,EAAE,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,iCAAiC,CAAC,CAAC;IACjG,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,mLAAmL;AACnL,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAe;IACvD,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAe,EAAE,GAAG,CAAC,CAAC,CAAC;IACnI,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0OAA0O;AAC1O,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,aAAqB,EAAE,GAAe;IAC5E,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,gWAAgW;AAChW,SAAS,iBAAiB,CAAC,GAAe;IACxC,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAkBD,SAAS,WAAW,CAAC,IAAkB;IACrC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,MAAc,EAAE,OAAa;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5G,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAe,CAAC,CAAC;IACjG,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAe,CAAC,CAAC;IAC1F,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,IAAY,EAAE,IAAwB;IACzE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,UAAU,MAAM,CAAC,MAAM,2BAA2B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAuC,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;YACvB,uEAAuE;YACvE,mEAAmE;YACnE,uEAAuE;YACvE,iEAAiE;YACjE,+DAA+D;YAC/D,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAW,CAAC;YACtB,0EAA0E;YAC1E,0EAA0E;YAC1E,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjC,IAAI,CAAC;QACH,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,KAAK,MAAM;gBACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7B,KAAK,QAAQ,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxE,MAAM,IAAI,GAAuC,EAAE,CAAC;gBACpD,IAAI,KAAK,GAA2B,IAAI,CAAC;gBACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;oBACvC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAC/B,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;wBACvC,SAAS;oBACX,CAAC;oBACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAc,EAAE,GAAG,EAAE,CAAC;gBAC9G,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAChE,CAAC;YACD,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAoB,CAAC,EAAE,CAAC;gBAC9E,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,mEAAmE;wBACtF,8EAA8E,CACjF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,KAAK,MAAM;gBACT,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,KAAK,QAAQ;gBACX,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAc,EAAE,GAAG,EAAE,MAAoB,EAAE,EAAE,CAAC;YACzG;gBACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACxG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAqB;IAC/C,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,aAAa,CAAC,kCAAkC,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACpD,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,aAAa,CAAC,+BAA+B,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,wBAAwB,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -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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"}
|