@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.
Files changed (195) hide show
  1. package/CHANGELOG.md +26 -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 +99 -0
  40. package/dist/abi1/loader.d.ts.map +1 -0
  41. package/dist/abi1/loader.js +261 -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 +94 -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 +37 -0
  148. package/dist/setup.d.ts.map +1 -0
  149. package/dist/setup.js +60 -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
package/dist/results.d.ts DELETED
@@ -1,495 +0,0 @@
1
- /**
2
- * The result types and the document parsers. Field for field the same concepts
3
- * as the reference implementation's `RowResult` / `BatchResult`
4
- * (docs/reference/bindings.md §Result types), in TypeScript spelling.
5
- *
6
- * ---------------------------------------------------------------- text vs bytes
7
- * Every rendered value here comes in both spellings, and which one is
8
- * authoritative is not a matter of taste:
9
- *
10
- * `bytes` the exact slice ClickHouse emitted — the answer. Equivalent to the
11
- * reference's `json.RawMessage`, and the only form a `String`,
12
- * `FixedString` or `AggregateFunction` value survives (it holds
13
- * arbitrary bytes; base64 or `Buffer` it, never a JS string).
14
- * `text` those bytes decoded as UTF-8, for logs, comparisons and previews.
15
- * **Lossy exactly when the bytes are not valid UTF-8**, where a JS
16
- * string can only hold U+FFFD. `isValidUtf8(bytes)` says so.
17
- *
18
- * A caller that echoes a value back into an INSERT, hashes it, or compares it
19
- * against a real server MUST use `bytes`: reporting U+FFFD where the table holds
20
- * `0xff` is an invented transformation, which is the one thing this product may
21
- * never do.
22
- */
23
- import { type Json } from './json.js';
24
- /**
25
- * The verdict on a row or a batch — the error taxonomy in one string, and
26
- * conflating any two arms is a scoring error (the C ABI contract §Error model):
27
- *
28
- * - `'accepted'` — the server would take this, possibly with silent coercions
29
- * (read `transformed`), defaults filled and volatile DEFAULTs substituted
30
- * (read `substituted` — the caller MUST send those columns explicitly).
31
- * - `'rejected'` — the server itself would refuse; `errCode` is ClickHouse's
32
- * own code (27, 117, 455, …) and `errMsg` its own message. Tell the tenant.
33
- * - `'accepted_poisoned'` — the insert is ACCEPTED (rc = 0) but the stored
34
- * value can never be read back (`errCode` is the readback's code, usually
35
- * 691). Never report it as a
36
- * rejection.
37
- * - `'unsupported'` — chtypes declines to answer ("a real server might well
38
- * have accepted this; I will not guess"). NOT a rejection: fall back to the
39
- * server. Mapping it onto either other arm manufactures an over-reject or an
40
- * over-accept, both budgeted at zero.
41
- * - `'skipped'` (2026-08-27) — the row was dropped under
42
- * `input_format_allow_errors_*` and the batch continued: the server's own
43
- * skip, itemized. `errCode`/`errMsg` carry the error the vendored reader
44
- * caught before resyncing, verbatim; `values` is empty — the row is NOT
45
- * stored. Only ever seen on rows inside a `BatchResult`, never as a batch
46
- * verdict and never from `Schema#row`.
47
- */
48
- export declare const Outcome: {
49
- readonly Accepted: 'accepted';
50
- readonly Rejected: 'rejected';
51
- readonly AcceptedPoisoned: 'accepted_poisoned';
52
- readonly Unsupported: 'unsupported';
53
- readonly Skipped: 'skipped';
54
- };
55
- export type Outcome = (typeof Outcome)[keyof typeof Outcome];
56
- /**
57
- * One coerced column value, as ClickHouse itself renders it.
58
- *
59
- * `bytes` is that rendering verbatim (`0`, `"2023-11-14 22:13:20"`, `[1,0,3]`,
60
- * a blob with no valid UTF-8 in it) — the same bytes the server would emit for
61
- * the row, which is what makes it directly comparable against a real ClickHouse.
62
- * `text` is `bytes` as UTF-8, and it is kept as text on purpose: parsing it into
63
- * a JS number would turn 18446744073709551615 into 18446744073709552000.
64
- */
65
- export interface Value {
66
- readonly column: string;
67
- /** ClickHouse's rendering as UTF-8 text; lossy iff `bytes` is not valid UTF-8. */
68
- readonly text: string;
69
- /** ClickHouse's rendering, verbatim. **Authoritative.** */
70
- readonly bytes: Buffer;
71
- /** True only for a genuine stored null. A poisoned column has no value at all. */
72
- readonly isNull: boolean;
73
- /**
74
- * Where the value came from: `input` | `default` | `default_substituted` |
75
- * `absent` | `skipped` | `default_volatile_unresolved` | `default_pending` |
76
- * `default_expr_unsupported` | `ephemeral_input` | `materialized_input`
77
- * (revision 5 — see {@link Source}) (the C ABI contract §`src` values).
78
- * `ephemeral_input` is excluded from `RowResult.values`/`values`, like
79
- * `skipped`; never seen here. `materialized_input` stays in `values`.
80
- */
81
- readonly source: string;
82
- }
83
- /**
84
- * The two revision-5 `source` provenances `columns_json` introduces (issue
85
- * #53), plus the pre-existing `Skipped` provenance named alongside them
86
- * (issue #90). A plain const object, not a closed union: `source` is a
87
- * growing vocabulary arriving from the C layer, and an unrecognized spelling
88
- * from a newer artifact must pass through unchanged, not be rejected.
89
- */
90
- export declare const Source: {
91
- /**
92
- * MATERIALIZED / ALIAS / EPHEMERAL, never read from an input row.
93
- * Predates revision 5 — unlike the two provenances below — but
94
- * `rowResultOf` has excluded it from `values` from the start, the same
95
- * exclusion `EphemeralInput` was modeled on. Named here, in the same
96
- * idiom, so the exclusion can be keyed on a symbol rather than a bare
97
- * string literal.
98
- */
99
- readonly Skipped: 'skipped';
100
- /**
101
- * A listed EPHEMERAL column's read value. The server reads it — it is in
102
- * scope for the DEFAULT expressions that reference it — and it is never
103
- * stored and never exported. `rowResultOf` excludes it from `values`
104
- * exactly as it already excludes `Source.Skipped`: a value that is never
105
- * stored must not sit where a caller reads the stored row (a hash, a
106
- * signature).
107
- */
108
- readonly EphemeralInput: 'ephemeral_input';
109
- /**
110
- * A listed MATERIALIZED column's supplied value under
111
- * `insert_allow_materialized_columns=1`. The supplied value REPLACES the
112
- * column's expression and IS stored — unlike `EphemeralInput`, it stays
113
- * IN `values`.
114
- */
115
- readonly MaterializedInput: 'materialized_input';
116
- /**
117
- * A VOLATILE DEFAULT (`now()`/`now64(n)`/`today()`/`yesterday()`, or an
118
- * expression over one) this library resolved locally rather than
119
- * ClickHouse — the caller MUST send it as an explicit column on any later
120
- * INSERT, or the value silently drifts each attempt. `rowResultOf` has
121
- * always populated `substituted` for exactly this src value; like
122
- * `Skipped` before issue #90, it had no named constant of its own (issue
123
- * #122).
124
- */
125
- readonly DefaultSubstituted: 'default_substituted';
126
- };
127
- export type Source = (typeof Source)[keyof typeof Source];
128
- /** A silent change: input 256 into UInt8 stored as 0. */
129
- export interface Transform {
130
- readonly column: string;
131
- readonly input: string;
132
- readonly stored: string;
133
- /** The supplied field, verbatim. **Authoritative** where `input` is lossy. */
134
- readonly inputBytes: Buffer;
135
- /** The stored rendering, verbatim. **Authoritative** where `stored` is lossy. */
136
- readonly storedBytes: Buffer;
137
- /** One of the stable reason strings — see `Reason`. */
138
- readonly reason: string;
139
- /** 0-based index of the row inside the request body. */
140
- row: number;
141
- /** False for reformat / default_filled / zero_filled / default_materialized. */
142
- readonly lossy: boolean;
143
- }
144
- /** A volatile DEFAULT this library resolved instead of the server. */
145
- export interface Substitution {
146
- readonly column: string;
147
- /** The DEFAULT as ClickHouse canonicalized it, e.g. `now()`. */
148
- readonly expr: string;
149
- /** The value rendered by ClickHouse's own serializer. Send it back verbatim. */
150
- readonly text: string;
151
- /** The same value as bytes — this is the form to put in the INSERT. */
152
- readonly bytes: Buffer;
153
- }
154
- /** One MATERIALIZED column's value: stored at insert, frozen thereafter. */
155
- export interface Computed {
156
- readonly column: string;
157
- readonly kind: string;
158
- readonly text: string;
159
- /** The stored rendering, verbatim. */
160
- readonly bytes: Buffer;
161
- }
162
- /**
163
- * The verdict on one row: what would be stored, what was silently changed, and
164
- * which of the five outcomes it is. Returned by `Schema#row` (which never
165
- * answers `'skipped'` — a single row has no batch to continue), and one per
166
- * row inside `BatchResult#rows`.
167
- */
168
- export interface RowResult {
169
- /** The coerced stored row, positional, excluding `skipped` columns. */
170
- readonly values: Value[];
171
- /** Every silent change. Not optional — it is the product. */
172
- readonly transformed: Transform[];
173
- /** The row verdict — see `Outcome` for the four arms and their obligations. */
174
- readonly outcome: Outcome;
175
- /**
176
- * ClickHouse's own code when `rejected`; the code the server's readback
177
- * raises when `accepted_poisoned` (usually 691, but the server's, and it
178
- * varies by line: an out-of-domain Enum DEFAULT reads back as 36 on 24.8); 0 when
179
- * `accepted`. NOT a reliable sentinel for `unsupported`: a row-level decline
180
- * carries the document's code verbatim, which is 0 for e.g. a
181
- * `DEFAULT hostName()` decline and -2 only on the clock-skew decline — key on
182
- * `outcome`, never on this number alone (docs/reference/bindings.md §RowResult).
183
- */
184
- readonly errCode: number;
185
- /** ClickHouse's own message, `''` when none. */
186
- readonly errMsg: string;
187
- /** Input fields with no matching column. */
188
- readonly unknownFields: string[];
189
- /** Non-empty means the answer must not be scored as agreement. */
190
- readonly unsupportedSettings: string[];
191
- /**
192
- * Columns whose volatile DEFAULT this library resolved from its own clock.
193
- * THE CALLER MUST SEND EVERY ONE OF THESE AS AN EXPLICIT COLUMN in the INSERT:
194
- * if the server evaluates the expression instead, preview and stored differ
195
- * always at now64 resolution and sometimes at now() resolution.
196
- */
197
- readonly substituted: Substitution[];
198
- /** MATERIALIZED values — durable, but not part of `SELECT *`. */
199
- readonly computed: Computed[];
200
- /**
201
- * `Schema#rows(..., { rowFilter })` only: this row's filter verdict,
202
- * beside `outcome` above — the two are independent facts, and neither
203
- * replaces the other (docs/guides/filters.md "Exporting only the rows a
204
- * filter admits"). `undefined` when no filter was attached to the call
205
- * that produced this row (every plain `row()`/`rows()` call, and `rows()`
206
- * with no `rowFilter`). A security-enforcing caller MUST fail closed —
207
- * hide the row / fail the request — on a verdict that is `undefined` or
208
- * not `isAnswer()`.
209
- */
210
- readonly verdict: Verdict | undefined;
211
- /**
212
- * Set beside `'e'` (the predicate threw, ClickHouse's own code/message),
213
- * beside an eval-time `'d'` (the admission envelope), and for a row whose
214
- * own `outcome` is not `'accepted'` (its own parse error, reported as
215
- * `'d'`). 0/`''` otherwise. One exception: an `'accepted_poisoned'` row's
216
- * `verdictErr` stays `''` because that row's own `errMsg` is itself
217
- * empty — `verdictCode` still carries the server's readback code. Never
218
- * read an empty `verdictErr` on a `'d'` verdict as "nothing is wrong";
219
- * read `verdictCode` instead.
220
- *
221
- * The non-`'accepted'`-row case is populated only from `chtypes_build`
222
- * 1790845279 or later on a supported line (`docs/support.md`) — a
223
- * served, unsupported (retired) line gets no new build or ABI revision
224
- * and keeps the pre-relink `0`/`''` permanently.
225
- */
226
- readonly verdictCode: number;
227
- readonly verdictErr: string;
228
- /**
229
- * Revision 6: the partition this row lands in, as the loaded build's own
230
- * `MergeTreePartition::getID` spells it — present only when the schema
231
- * declared a partition key (`Schema#setPartitionBy`) and the row would be
232
- * stored; absent otherwise. Grouping an accepted batch's `spans` by it gives
233
- * per-partition bodies, each directly INSERT-able.
234
- */
235
- readonly partitionId?: string;
236
- }
237
- /**
238
- * The verdict on a whole request body, which may hold many rows. Returned by
239
- * `Schema#rows`. The batch is where "not stored" lives: a TTL-expired row is
240
- * `accepted` in its own `RowResult` and reported not-stored here, through
241
- * `transformed` and `engineRows`.
242
- */
243
- export interface BatchResult {
244
- /**
245
- * One `RowResult` per row the reader consumed, in input order — including
246
- * (2026-08-27) rows dropped under `input_format_allow_errors_*`, which
247
- * appear as `outcome: 'skipped'` with the server's own caught error and no
248
- * values. Filter on the row outcome when rendering survivors; a skipped
249
- * row is never stored.
250
- */
251
- readonly rows: RowResult[];
252
- /** The batch verdict — same vocabulary and obligations as a row's. */
253
- readonly outcome: Outcome;
254
- /** ClickHouse's own code when the BATCH was rejected; 0 when accepted. */
255
- readonly errCode: number;
256
- /** ClickHouse's own message, `''` when none. */
257
- readonly errMsg: string;
258
- /** Rows the reader consumed, failed ones included. */
259
- readonly rowsRead: number;
260
- /** Rows dropped under `input_format_allow_errors_num` / `_ratio`. */
261
- readonly rowsSkipped: number;
262
- /**
263
- * Every transform in the batch, each tagged with its row index — including the
264
- * batch-level `storage_transforms` (a TTL-expired row is `accepted` per row and
265
- * NOT STORED per batch; dropping these tells a tenant a row was stored that the
266
- * table deletes at merge time).
267
- */
268
- readonly transformed: Transform[];
269
- /**
270
- * The stored preview AFTER the engine's insert-time merge, one exact JSON text
271
- * per row, or null when no engine semantics applied. When present this — not
272
- * `rows` — is the stored truth: it can be shorter (a SummingMergeTree dropping
273
- * an all-zero row) or reordered (the block is sorted by the sorting key first).
274
- */
275
- readonly engineRows: string[] | null;
276
- /** The same preview as bytes, positionally aligned with `engineRows`. */
277
- readonly engineRowsBytes: Buffer[] | null;
278
- /**
279
- * The export channel (revision 3; only when `rows()` was asked for an
280
- * `exportFormat`): the batch's accepted rows, serialized once by the
281
- * vendored writer, copied out of the C buffer and freed before the call
282
- * returned — no ownership crosses the FFI boundary. Three states, and the
283
- * distinction is the ABI's own (the C ABI contract §Rows):
284
- *
285
- * `undefined` no export was requested, or the export was
286
- * DECLINED — `exportDeclined` then names the reason,
287
- * ALWAYS, for a non-accepted batch of any kind (a
288
- * server rejection, a zero-row refusal before any
289
- * row was admitted, or a call-level -2 "unsupported"
290
- * answer). Before the artifact producer's relink
291
- * served at `chtypes_build` 1790845279, a batch
292
- * refused before any row was admitted (a
293
- * `CSVWithNames` body naming an unknown header
294
- * column under `input_format_skip_unknown_fields=0`,
295
- * measured) left `exportDeclined` `undefined`
296
- * despite withholding requested bytes; that gap is
297
- * closed, by design, for `chtypes_build` 1790845279
298
- * or later on a supported line (`docs/support.md`)
299
- * — a served, unsupported (retired) line gets no
300
- * new build or ABI revision and keeps the
301
- * pre-relink `undefined` permanently.
302
- * zero-length Buffer EMITTED-EMPTY: an accepted batch with zero accepted
303
- * rows — distinguishable from a decline.
304
- * bytes the exported lines; slice per `spans`.
305
- */
306
- readonly payload: Buffer | undefined;
307
- /**
308
- * Index-aligned with `rows`: `spans[i]` addresses row i's complete output
309
- * line (terminating `\n` included) inside `payload` — each slice is itself
310
- * a valid one-row body in the export format, a non-accepted row carries
311
- * `{off: 0, len: 0}`, and the concatenation of all non-zero spans
312
- * reproduces `payload` exactly (batches merge by byte concatenation).
313
- * `undefined` when no bytes were emitted.
314
- */
315
- readonly spans: readonly Span[] | undefined;
316
- /**
317
- * The library's reason for withholding requested export bytes (a
318
- * non-accepted batch, the full-arity guard, a serialization failure,
319
- * `output_format_json_validate_utf8`) — `undefined` when bytes were emitted
320
- * or no export was requested. A decline here is -2-class honesty, never a
321
- * server verdict.
322
- */
323
- readonly exportDeclined: string | undefined;
324
- /**
325
- * `rows(..., { rowFilter })` only: accepted rows whose verdict is `'t'`,
326
- * and accepted rows with any other verdict, respectively, ON AN ACCEPTED
327
- * BATCH. `rowsPassed + rowsCut` equals the accepted-row count. Both `0`
328
- * when no filter was attached — indistinguishable from "filter attached,
329
- * nothing passed and nothing accepted", so key presence on whether
330
- * `rowFilter` was passed, never on these being nonzero. A row whose own
331
- * `outcome` is not `'accepted'` sits in NEITHER count: `rows.length`
332
- * decomposes into `rowsPassed + rowsCut` plus the non-accepted rows.
333
- *
334
- * Both are also `0` whenever the BATCH's own `outcome` is not
335
- * `'accepted'` — even when an earlier row, in isolation, was itself
336
- * accepted with a `'t'` verdict. Before the artifact producer's relink
337
- * served at `chtypes_build` 1790845279, a strict (no
338
- * `input_format_allow_errors_*`) batch aborted by a later bad row
339
- * measured `rowsPassed === 1` despite an `outcome` of `'rejected'`; that
340
- * gap is closed, by design, so a batch `outcome` other than `'accepted'`
341
- * now always reports `0`/`0` here, for `chtypes_build` 1790845279 or
342
- * later on a supported line (`docs/support.md`) — a served, unsupported
343
- * (retired) line gets no new build or ABI revision and keeps the
344
- * pre-relink counting permanently.
345
- */
346
- readonly rowsPassed: number;
347
- readonly rowsCut: number;
348
- /**
349
- * Revision 6: the distinct partitions this batch's stored rows span —
350
- * present only when the schema declared a partition key
351
- * (`Schema#setPartitionBy`); absent otherwise. A batch over the call's
352
- * `max_partitions_per_insert_block` is an ordinary `'rejected'` with
353
- * `errCode` 252 (TOO_MANY_PARTS), the server's own.
354
- */
355
- readonly partitionCount?: number;
356
- }
357
- /** One row's byte range inside an export `payload` — see `BatchResult#spans`. */
358
- export interface Span {
359
- readonly off: number;
360
- readonly len: number;
361
- }
362
- /** One entry of the result document's `cols` array, decoded. */
363
- export interface ColumnDoc {
364
- readonly name: string;
365
- readonly type: string;
366
- readonly base: string;
367
- readonly src: string;
368
- readonly input: string;
369
- readonly refType: string;
370
- /** Exact JSON text of the stored value; "" when absent or poisoned. */
371
- readonly stored: string;
372
- /** Exact JSON text of the reference parse; "" when it does not apply. */
373
- readonly ref: string;
374
- /** The raw input field, verbatim — a supplied value can be any byte sequence. */
375
- readonly inputBytes: Buffer;
376
- /** The stored rendering, verbatim. **This, not `stored`, is the answer.** */
377
- readonly storedBytes: Buffer;
378
- /** The reference parse's rendering, verbatim. */
379
- readonly refBytes: Buffer;
380
- readonly nullable: boolean;
381
- readonly poison: boolean;
382
- readonly nullInput: boolean;
383
- readonly dupDropped: boolean;
384
- /**
385
- * The C layer found this leaf numeric/temporal but had no reference-ladder
386
- * entry (audit F4): the classifier treats a visible change as lossy, never
387
- * `reformat`. Absent from every artifact whose build gate ran.
388
- */
389
- readonly refUnclassified: boolean;
390
- /** True when `stored` is a genuine JSON null. */
391
- readonly storedIsNull: boolean;
392
- }
393
- export declare function columnDocOf(raw: Json): ColumnDoc;
394
- /** Turn one row document into a `RowResult`. */
395
- export declare function rowResultOf(doc: Json): RowResult;
396
- /**
397
- * Turn one batch document into a `BatchResult`. `payload` is the export
398
- * channel's copy from the FFI layer (`null` = the ABI's `{NULL, 0}` — mapped
399
- * to `undefined`; a zero-length Buffer is emitted-empty and kept), which the
400
- * document itself never carries.
401
- */
402
- export declare function batchResultOf(doc: Json, payload?: Buffer | null): BatchResult;
403
- /**
404
- * One row's answer from `Filter#rows`. Two of the four states are ANSWERS and
405
- * two are NOT, and the split is load-bearing: a caller enforcing visibility
406
- * MUST fail closed (hide the row / fail the request) on `'e'` AND
407
- * `'d'` — collapsing either into `'f'`-the-answer inverts
408
- * fail-closed into fail-open under NOT, the measured leak class
409
- * (docs/reference/bindings.md §Revision 3).
410
- *
411
- * Rendered as the wire character the C result document carries — the same
412
- * spelling Go and Python use — rather than a word (docs/reference/bindings.md
413
- * §Revision 3; aligned 2026-09-15, chtypes-sdk#13 A1).
414
- *
415
- * - `'t'` the predicate is non-NULL and non-zero for this row.
416
- * - `'f'` false OR NULL — SQL's three-valued logic collapsed at the
417
- * WHERE boundary, computed by the vendored functions.
418
- * - `'e'` the predicate THREW on this row's values (e.g. NO_COMMON_TYPE
419
- * 386 from `s = 257` over String). On a real server a WHERE
420
- * that throws fails the WHOLE query. NOT an answer.
421
- * - `'d'` this library declines to answer for this row — unparseable
422
- * under the schema, poisoned, or the admission envelope
423
- * tripped. NOT an answer, and the state an unknown verdict
424
- * character degrades to.
425
- */
426
- export declare const Verdict: {
427
- readonly True: 't';
428
- readonly False: 'f';
429
- readonly Error: 'e';
430
- readonly Decline: 'd';
431
- };
432
- export type Verdict = (typeof Verdict)[keyof typeof Verdict];
433
- /** Whether a verdict is an ANSWER (`'t'`/`'f'`) rather than an error
434
- * or a decline. A security-enforcing caller hides the row when this is false. */
435
- export declare function isAnswer(v: Verdict): boolean;
436
- /**
437
- * The CALL-level verdict of `Filter#rows` — whether evaluation completed at
438
- * all; per-row failures live in the verdicts, not here. An outcome spelling
439
- * this binding does not recognize degrades to `'unsupported'`, never to
440
- * `'rejected'` (the unknown-outcome rule, docs/reference/bindings.md §RowResult).
441
- */
442
- export declare const FilterOutcome: {
443
- readonly Ok: 'ok';
444
- readonly Rejected: 'rejected';
445
- readonly Unsupported: 'unsupported';
446
- };
447
- export type FilterOutcome = (typeof FilterOutcome)[keyof typeof FilterOutcome];
448
- /**
449
- * `chs_schema_column_default_kind`'s five answers, as `ColumnInfo#defaultKind`
450
- * carries them. Named here because the Go, Python and Rust bindings all name
451
- * them and a TypeScript caller was otherwise typing the strings by hand — and
452
- * one of them is load-bearing: `EPHEMERAL` is the column a gateway must DECLINE
453
- * to preview rather than mispreview (docs/reference/bindings.md §EPHEMERAL columns).
454
- */
455
- export declare const DefaultKind: {
456
- readonly None: '';
457
- readonly Default: 'DEFAULT';
458
- readonly Materialized: 'MATERIALIZED';
459
- readonly Alias: 'ALIAS';
460
- readonly Ephemeral: 'EPHEMERAL';
461
- };
462
- export type DefaultKind = (typeof DefaultKind)[keyof typeof DefaultKind];
463
- /** One `'e'` or `'d'` row, itemized: its 0-based index and the code
464
- * and message verbatim — ClickHouse's own for an error row, this library's
465
- * decline otherwise. */
466
- export interface FilterRowError {
467
- readonly row: number;
468
- readonly code: number;
469
- readonly err: string;
470
- }
471
- /** One `Filter#rows` answer. */
472
- export interface FilterResult {
473
- /** The call-level verdict. On anything but `'ok'`, `verdicts` and `errors`
474
- * are empty — a malformed body yields no partial answers. */
475
- readonly outcome: FilterOutcome;
476
- /** The call-level code: the server's own on `'rejected'` (an unknown
477
- * setting's 115, a framing error, a binary decode fault); -2 on a decline. */
478
- readonly errCode: number;
479
- readonly errMsg: string;
480
- /** Rows the splitter/decoder yielded. */
481
- readonly rowsRead: number;
482
- /** Non-empty means the answer must not be scored as agreement. */
483
- readonly unsupportedSettings: string[];
484
- /**
485
- * One verdict per row, in input order, index-aligned with the rows the
486
- * reader consumed — the itemized addressing contract holds even across
487
- * resync tails after a bad text row.
488
- */
489
- readonly verdicts: Verdict[];
490
- /** Every `'e'` and `'d'` row, itemized. */
491
- readonly errors: FilterRowError[];
492
- }
493
- /** Turn one filter document into a `FilterResult`. */
494
- export declare function filterResultOf(doc: Json): FilterResult;
495
- //# sourceMappingURL=results.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"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"}