@minnowdb/core 0.2.1 → 0.4.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 (270) hide show
  1. package/README.md +23 -32
  2. package/dist/block-format/block.d.ts +32 -13
  3. package/dist/block-format/block.js +179 -55
  4. package/dist/block-format/checksum.d.ts +2 -1
  5. package/dist/block-format/checksum.js +5 -2
  6. package/dist/block-format/codecs.d.ts +7 -2
  7. package/dist/block-format/codecs.js +53 -12
  8. package/dist/block-format/column.d.ts +3 -2
  9. package/dist/block-format/column.js +96 -30
  10. package/dist/block-format/index.d.ts +2 -2
  11. package/dist/block-format/index.js +2 -2
  12. package/dist/block-format/physical.d.ts +8 -2
  13. package/dist/block-format/physical.js +14 -6
  14. package/dist/block-format/types.d.ts +7 -3
  15. package/dist/block-format/types.js +0 -1
  16. package/dist/block-format/unicode.d.ts +11 -0
  17. package/dist/block-format/unicode.js +46 -0
  18. package/dist/date-value.d.ts +15 -0
  19. package/dist/date-value.js +64 -0
  20. package/dist/engine/artifact-cache.d.ts +2 -1
  21. package/dist/engine/artifact-cache.js +5 -1
  22. package/dist/engine/batch.d.ts +11 -3
  23. package/dist/engine/batch.js +17 -7
  24. package/dist/engine/buffered-writer.d.ts +2 -1
  25. package/dist/engine/buffered-writer.js +34 -9
  26. package/dist/engine/cache-limits.d.ts +25 -0
  27. package/dist/engine/cache-limits.js +25 -0
  28. package/dist/engine/catalog.d.ts +24 -5
  29. package/dist/engine/catalog.js +34 -7
  30. package/dist/engine/client.d.ts +29 -7
  31. package/dist/engine/client.js +216 -40
  32. package/dist/engine/database.d.ts +224 -39
  33. package/dist/engine/database.js +7475 -1539
  34. package/dist/engine/defaults.d.ts +4 -8
  35. package/dist/engine/defaults.js +46 -22
  36. package/dist/engine/errors.d.ts +19 -1
  37. package/dist/engine/errors.js +32 -2
  38. package/dist/engine/fts.d.ts +0 -6
  39. package/dist/engine/fts.js +41 -14
  40. package/dist/engine/group-index.d.ts +0 -1
  41. package/dist/engine/group-index.js +6 -11
  42. package/dist/engine/index.d.ts +16 -10
  43. package/dist/engine/index.js +12 -9
  44. package/dist/engine/join-index.d.ts +0 -1
  45. package/dist/engine/join-index.js +2 -2
  46. package/dist/engine/keyed-live.d.ts +57 -0
  47. package/dist/engine/keyed-live.js +226 -0
  48. package/dist/engine/live-api.d.ts +4 -0
  49. package/dist/engine/live-api.js +4 -0
  50. package/dist/engine/live.d.ts +43 -26
  51. package/dist/engine/live.js +504 -126
  52. package/dist/engine/memory.d.ts +2 -1
  53. package/dist/engine/memory.js +3 -2
  54. package/dist/engine/optimizer.d.ts +0 -1
  55. package/dist/engine/optimizer.js +262 -27
  56. package/dist/engine/query-api.d.ts +3 -0
  57. package/dist/engine/query-api.js +3 -0
  58. package/dist/engine/query-cache.d.ts +1 -2
  59. package/dist/engine/query-cache.js +7 -5
  60. package/dist/engine/query.d.ts +134 -29
  61. package/dist/engine/query.js +1668 -372
  62. package/dist/engine/result-wire.d.ts +0 -1
  63. package/dist/engine/result-wire.js +2 -2
  64. package/dist/engine/schema-wire.d.ts +6 -3
  65. package/dist/engine/schema-wire.js +40 -34
  66. package/dist/engine/schema.d.ts +156 -80
  67. package/dist/engine/schema.js +570 -108
  68. package/dist/engine/sort-keys.d.ts +4 -4
  69. package/dist/engine/sort-keys.js +44 -29
  70. package/dist/engine/sql-domains.d.ts +31 -0
  71. package/dist/engine/sql-domains.js +585 -0
  72. package/dist/engine/sql-driver.d.ts +19 -0
  73. package/dist/engine/sql-driver.js +1 -0
  74. package/dist/engine/sql-json.d.ts +7 -9
  75. package/dist/engine/sql-json.js +75 -15
  76. package/dist/engine/sql-semantics.d.ts +8 -3
  77. package/dist/engine/sql-semantics.js +458 -30
  78. package/dist/engine/typed-live.d.ts +67 -0
  79. package/dist/engine/typed-live.js +349 -0
  80. package/dist/engine/vector.d.ts +12 -2
  81. package/dist/engine/vector.js +635 -119
  82. package/dist/engine/worker-host.d.ts +9 -2
  83. package/dist/engine/worker-host.js +620 -152
  84. package/dist/engine/worker.d.ts +0 -1
  85. package/dist/engine/worker.js +3 -3
  86. package/dist/engine/write-block-planner.d.ts +18 -0
  87. package/dist/engine/write-block-planner.js +112 -0
  88. package/dist/index.d.ts +0 -1
  89. package/dist/index.js +0 -1
  90. package/dist/plan/index.d.ts +3 -4
  91. package/dist/plan/index.js +3 -4
  92. package/dist/storage/index.d.ts +1 -1
  93. package/dist/storage/index.js +1 -1
  94. package/dist/storage/indexeddb.d.ts +99 -51
  95. package/dist/storage/indexeddb.js +13448 -2660
  96. package/dist/storage/memory.d.ts +64 -57
  97. package/dist/storage/memory.js +1042 -128
  98. package/dist/storage/opfs/files.d.ts +18 -7
  99. package/dist/storage/opfs/files.js +115 -28
  100. package/dist/storage/opfs/index.d.ts +1 -1
  101. package/dist/storage/opfs/index.js +1 -1
  102. package/dist/storage/opfs/leader.d.ts +409 -75
  103. package/dist/storage/opfs/leader.js +4621 -650
  104. package/dist/storage/opfs/rpc.d.ts +15 -3
  105. package/dist/storage/opfs/rpc.js +224 -2
  106. package/dist/storage/opfs/snapshot-ledger.d.ts +40 -0
  107. package/dist/storage/opfs/snapshot-ledger.js +281 -0
  108. package/dist/storage/opfs/store.d.ts +33 -99
  109. package/dist/storage/opfs/store.js +453 -364
  110. package/dist/storage/persistence.d.ts +37 -0
  111. package/dist/storage/persistence.js +78 -0
  112. package/dist/storage/snapshot-stream.d.ts +24 -0
  113. package/dist/storage/snapshot-stream.js +897 -0
  114. package/dist/storage/snapshot.d.ts +9 -85
  115. package/dist/storage/snapshot.js +33 -265
  116. package/dist/storage/toolkit/extents.d.ts +41 -7
  117. package/dist/storage/toolkit/extents.js +402 -39
  118. package/dist/storage/toolkit/index.d.ts +4 -5
  119. package/dist/storage/toolkit/index.js +28 -4
  120. package/dist/storage/toolkit/record-core.d.ts +182 -55
  121. package/dist/storage/toolkit/record-core.js +6158 -1331
  122. package/dist/storage/toolkit/sync-file.d.ts +10 -1
  123. package/dist/storage/toolkit/sync-file.js +50 -2
  124. package/dist/storage/toolkit/wal.d.ts +23 -5
  125. package/dist/storage/toolkit/wal.js +89 -27
  126. package/dist/storage/toolkit/wire.d.ts +15 -2
  127. package/dist/storage/toolkit/wire.js +199 -10
  128. package/dist/storage/types.d.ts +1439 -204
  129. package/dist/storage/types.js +1745 -141
  130. package/dist/testing/block-store-conformance.d.ts +0 -1
  131. package/dist/testing/block-store-conformance.js +1009 -119
  132. package/dist/testing/index.d.ts +46 -26
  133. package/dist/testing/index.js +112 -57
  134. package/dist/testing/opfs-shim.d.ts +13 -3
  135. package/dist/testing/opfs-shim.js +40 -6
  136. package/dist/testing/simulator.d.ts +97 -0
  137. package/dist/testing/simulator.js +591 -0
  138. package/dist/testing/sqllogictest.d.ts +89 -0
  139. package/dist/testing/sqllogictest.js +434 -0
  140. package/dist/transactions/index.d.ts +92 -16
  141. package/dist/transactions/index.js +1074 -236
  142. package/dist/worker-protocol/index.d.ts +3 -2
  143. package/dist/worker-protocol/index.js +2 -5
  144. package/package.json +53 -3
  145. package/postgres-feature-profile.json +223 -0
  146. package/sql-feature-matrix.json +172 -252
  147. package/dist/block-format/block.d.ts.map +0 -1
  148. package/dist/block-format/block.js.map +0 -1
  149. package/dist/block-format/checksum.d.ts.map +0 -1
  150. package/dist/block-format/checksum.js.map +0 -1
  151. package/dist/block-format/codecs.d.ts.map +0 -1
  152. package/dist/block-format/codecs.js.map +0 -1
  153. package/dist/block-format/column.d.ts.map +0 -1
  154. package/dist/block-format/column.js.map +0 -1
  155. package/dist/block-format/index.d.ts.map +0 -1
  156. package/dist/block-format/index.js.map +0 -1
  157. package/dist/block-format/physical.d.ts.map +0 -1
  158. package/dist/block-format/physical.js.map +0 -1
  159. package/dist/block-format/types.d.ts.map +0 -1
  160. package/dist/block-format/types.js.map +0 -1
  161. package/dist/engine/artifact-cache.d.ts.map +0 -1
  162. package/dist/engine/artifact-cache.js.map +0 -1
  163. package/dist/engine/batch.d.ts.map +0 -1
  164. package/dist/engine/batch.js.map +0 -1
  165. package/dist/engine/buffered-writer.d.ts.map +0 -1
  166. package/dist/engine/buffered-writer.js.map +0 -1
  167. package/dist/engine/catalog.d.ts.map +0 -1
  168. package/dist/engine/catalog.js.map +0 -1
  169. package/dist/engine/client.d.ts.map +0 -1
  170. package/dist/engine/client.js.map +0 -1
  171. package/dist/engine/coordinator.d.ts +0 -17
  172. package/dist/engine/coordinator.d.ts.map +0 -1
  173. package/dist/engine/coordinator.js +0 -60
  174. package/dist/engine/coordinator.js.map +0 -1
  175. package/dist/engine/database.d.ts.map +0 -1
  176. package/dist/engine/database.js.map +0 -1
  177. package/dist/engine/defaults.d.ts.map +0 -1
  178. package/dist/engine/defaults.js.map +0 -1
  179. package/dist/engine/errors.d.ts.map +0 -1
  180. package/dist/engine/errors.js.map +0 -1
  181. package/dist/engine/fts.d.ts.map +0 -1
  182. package/dist/engine/fts.js.map +0 -1
  183. package/dist/engine/group-index.d.ts.map +0 -1
  184. package/dist/engine/group-index.js.map +0 -1
  185. package/dist/engine/index.d.ts.map +0 -1
  186. package/dist/engine/index.js.map +0 -1
  187. package/dist/engine/join-index.d.ts.map +0 -1
  188. package/dist/engine/join-index.js.map +0 -1
  189. package/dist/engine/live.d.ts.map +0 -1
  190. package/dist/engine/live.js.map +0 -1
  191. package/dist/engine/memory.d.ts.map +0 -1
  192. package/dist/engine/memory.js.map +0 -1
  193. package/dist/engine/optimizer.d.ts.map +0 -1
  194. package/dist/engine/optimizer.js.map +0 -1
  195. package/dist/engine/query-cache.d.ts.map +0 -1
  196. package/dist/engine/query-cache.js.map +0 -1
  197. package/dist/engine/query.d.ts.map +0 -1
  198. package/dist/engine/query.js.map +0 -1
  199. package/dist/engine/result-wire.d.ts.map +0 -1
  200. package/dist/engine/result-wire.js.map +0 -1
  201. package/dist/engine/schema-wire.d.ts.map +0 -1
  202. package/dist/engine/schema-wire.js.map +0 -1
  203. package/dist/engine/schema.d.ts.map +0 -1
  204. package/dist/engine/schema.js.map +0 -1
  205. package/dist/engine/sort-keys.d.ts.map +0 -1
  206. package/dist/engine/sort-keys.js.map +0 -1
  207. package/dist/engine/sql-json.d.ts.map +0 -1
  208. package/dist/engine/sql-json.js.map +0 -1
  209. package/dist/engine/sql-semantics.d.ts.map +0 -1
  210. package/dist/engine/sql-semantics.js.map +0 -1
  211. package/dist/engine/vector.d.ts.map +0 -1
  212. package/dist/engine/vector.js.map +0 -1
  213. package/dist/engine/worker-host.d.ts.map +0 -1
  214. package/dist/engine/worker-host.js.map +0 -1
  215. package/dist/engine/worker.d.ts.map +0 -1
  216. package/dist/engine/worker.js.map +0 -1
  217. package/dist/index.d.ts.map +0 -1
  218. package/dist/index.js.map +0 -1
  219. package/dist/plan/index.d.ts.map +0 -1
  220. package/dist/plan/index.js.map +0 -1
  221. package/dist/storage/fixture-shape.d.ts +0 -42
  222. package/dist/storage/fixture-shape.d.ts.map +0 -1
  223. package/dist/storage/fixture-shape.js +0 -146
  224. package/dist/storage/fixture-shape.js.map +0 -1
  225. package/dist/storage/index.d.ts.map +0 -1
  226. package/dist/storage/index.js.map +0 -1
  227. package/dist/storage/indexeddb.d.ts.map +0 -1
  228. package/dist/storage/indexeddb.js.map +0 -1
  229. package/dist/storage/memory.d.ts.map +0 -1
  230. package/dist/storage/memory.js.map +0 -1
  231. package/dist/storage/opfs/files.d.ts.map +0 -1
  232. package/dist/storage/opfs/files.js.map +0 -1
  233. package/dist/storage/opfs/index.d.ts.map +0 -1
  234. package/dist/storage/opfs/index.js.map +0 -1
  235. package/dist/storage/opfs/leader.d.ts.map +0 -1
  236. package/dist/storage/opfs/leader.js.map +0 -1
  237. package/dist/storage/opfs/rpc.d.ts.map +0 -1
  238. package/dist/storage/opfs/rpc.js.map +0 -1
  239. package/dist/storage/opfs/store.d.ts.map +0 -1
  240. package/dist/storage/opfs/store.js.map +0 -1
  241. package/dist/storage/snapshot.d.ts.map +0 -1
  242. package/dist/storage/snapshot.js.map +0 -1
  243. package/dist/storage/toolkit/extents.d.ts.map +0 -1
  244. package/dist/storage/toolkit/extents.js.map +0 -1
  245. package/dist/storage/toolkit/index.d.ts.map +0 -1
  246. package/dist/storage/toolkit/index.js.map +0 -1
  247. package/dist/storage/toolkit/record-core.d.ts.map +0 -1
  248. package/dist/storage/toolkit/record-core.js.map +0 -1
  249. package/dist/storage/toolkit/sync-file.d.ts.map +0 -1
  250. package/dist/storage/toolkit/sync-file.js.map +0 -1
  251. package/dist/storage/toolkit/wal.d.ts.map +0 -1
  252. package/dist/storage/toolkit/wal.js.map +0 -1
  253. package/dist/storage/toolkit/wire.d.ts.map +0 -1
  254. package/dist/storage/toolkit/wire.js.map +0 -1
  255. package/dist/storage/types.d.ts.map +0 -1
  256. package/dist/storage/types.js.map +0 -1
  257. package/dist/testing/block-store-conformance.d.ts.map +0 -1
  258. package/dist/testing/block-store-conformance.js.map +0 -1
  259. package/dist/testing/index.d.ts.map +0 -1
  260. package/dist/testing/index.js.map +0 -1
  261. package/dist/testing/opfs-shim.d.ts.map +0 -1
  262. package/dist/testing/opfs-shim.js.map +0 -1
  263. package/dist/testing/seeds.d.ts +0 -11
  264. package/dist/testing/seeds.d.ts.map +0 -1
  265. package/dist/testing/seeds.js +0 -50
  266. package/dist/testing/seeds.js.map +0 -1
  267. package/dist/transactions/index.d.ts.map +0 -1
  268. package/dist/transactions/index.js.map +0 -1
  269. package/dist/worker-protocol/index.d.ts.map +0 -1
  270. package/dist/worker-protocol/index.js.map +0 -1
@@ -21,9 +21,10 @@
21
21
  */
22
22
  export interface SortKeyColumn {
23
23
  /**
24
- * Ascending comparison with NULL smallest the engine's default placement, which matches
25
- * SQLite. Direction and an explicit NULLS FIRST/LAST stay with the caller: a placement is
26
- * absolute, while direction negates the value comparison.
24
+ * Ascending comparison with NULL smallest. This is the column's raw comparison, not SQL's
25
+ * default placement: the sorter applies PostgreSQL's NULLS LAST for ASC and NULLS FIRST for
26
+ * DESC. Direction and an explicit NULLS FIRST/LAST stay with the caller because a placement is
27
+ * absolute, while direction negates only the non-null value comparison.
27
28
  *
28
29
  * Specialized when the column is built, so a comparison that runs millions of times is a
29
30
  * closure over one representation rather than a branch on which representation it holds.
@@ -71,4 +72,3 @@ export declare function buildSortKeyColumn(count: number, valueAt: (index: numbe
71
72
  * is already in order before doing anything else, since a scan often arrives sorted.
72
73
  */
73
74
  export declare function sortKeyIndexes(count: number, terms: readonly SortKeyTerm[]): Uint32Array;
74
- //# sourceMappingURL=sort-keys.d.ts.map
@@ -1,7 +1,8 @@
1
+ import { dateMilliseconds } from "../date-value.js";
1
2
  import { compareSqlStrings, compareSqlValues } from "./sql-semantics.js";
2
3
  /** Unwraps a datetime to the number the comparisons use; every other value passes through. */
3
4
  export function comparableSortValue(value) {
4
- return value instanceof Date ? value.getTime() : value;
5
+ return value instanceof Date ? dateMilliseconds(value) : value;
5
6
  }
6
7
  /**
7
8
  * Extracts one term's values into a comparison-ready column. `valueAt` is called once per row,
@@ -33,7 +34,14 @@ export function buildSortKeyColumn(count, valueAt) {
33
34
  kind = "boolean";
34
35
  numbers[index] = value ? 1 : 0;
35
36
  }
36
- else if (typeof value === "string" && kind !== "number" && kind !== "boolean") {
37
+ else if (typeof value === "string" &&
38
+ // NUL-prefixed strings are the engine's lossless internal SQL-domain values
39
+ // (NUMERIC, ENUM, COLLATE, and friends). Their physical encoding is deliberately
40
+ // stable, not lexicographically ordered, so ranking the encoded strings would make
41
+ // ORDER BY disagree with the SQL comparator. Keep those terms on the generic path.
42
+ value.charCodeAt(0) !== 0 &&
43
+ kind !== "number" &&
44
+ kind !== "boolean") {
37
45
  kind = "string";
38
46
  ranks ??= new Map();
39
47
  let rank = ranks.get(value);
@@ -312,9 +320,8 @@ class KeySorter {
312
320
  * for a term without unboxed keys. A float's bits already order like the float once the sign
313
321
  * is folded (flip every bit of a negative, the sign bit of a positive); NaN is pinned just
314
322
  * past +Infinity and signed zero collapses to +0, which is where compareSqlValues puts them.
315
- * DESC inverts the non-null keys, and NULL takes the end its placement names the low end
316
- * by default, which the inversion moves to the high end for DESC, or the end an explicit
317
- * NULLS FIRST/LAST asks for regardless of direction.
323
+ * DESC inverts the non-null keys, and NULL takes the end its placement names. When omitted,
324
+ * PostgreSQL's default supplies NULLS LAST for ASC and NULLS FIRST for DESC.
318
325
  */
319
326
  #encodedKeys(term) {
320
327
  const cached = this.#encoded[term];
@@ -329,34 +336,45 @@ class KeySorter {
329
336
  const buffer = new ArrayBuffer(count * 8);
330
337
  const floats = new Float64Array(buffer);
331
338
  const words = new Uint32Array(buffer);
332
- const nullWord = (spec.nulls === undefined ? !spec.descending : spec.nulls === "first")
333
- ? 0
334
- : UINT32_MAX;
339
+ const nullsFirst = (spec.nulls ?? (spec.descending ? "first" : "last")) === "first";
335
340
  const flip = spec.descending ? UINT32_MAX : 0;
341
+ // Keep the sentinel's low word aligned with the direction's transformed values. A sentinel
342
+ // that differs in an otherwise constant low digit makes radix sorting run a whole extra pass.
343
+ // The non-null domains are bounded away from these keys: ascending runs from encoded
344
+ // -Infinity through pinned NaN (fff80000:00000000), and descending is its bitwise inverse.
345
+ const nullHi = spec.descending
346
+ ? nullsFirst
347
+ ? 0x0007fffe
348
+ : UINT32_MAX
349
+ : nullsFirst
350
+ ? 0
351
+ : 0xfff80001;
352
+ const nullLo = spec.descending ? UINT32_MAX : 0;
336
353
  for (let index = 0; index < count; index += 1) {
337
354
  const lo = index * 2 + LO;
338
355
  const hi = index * 2 + HI;
339
356
  if (nulls[index] === 1) {
340
- words[lo] = nullWord;
341
- words[hi] = nullWord;
357
+ words[lo] = nullLo;
358
+ words[hi] = nullHi;
342
359
  continue;
343
360
  }
344
361
  const value = numbers[index] ?? 0;
345
362
  if (value !== value) {
346
363
  words[lo] = flip;
347
364
  words[hi] = (0xfff80000 ^ flip) >>> 0;
348
- continue;
349
- }
350
- // Adding +0 turns -0 into +0 and leaves every other value alone.
351
- floats[index] = value + 0;
352
- const rawHi = words[hi] ?? 0;
353
- if ((rawHi & 0x80000000) !== 0) {
354
- words[lo] = (~(words[lo] ?? 0) ^ flip) >>> 0;
355
- words[hi] = (~rawHi ^ flip) >>> 0;
356
365
  }
357
366
  else {
358
- words[lo] = ((words[lo] ?? 0) ^ flip) >>> 0;
359
- words[hi] = ((rawHi | 0x80000000) ^ flip) >>> 0;
367
+ // Adding +0 turns -0 into +0 and leaves every other value alone.
368
+ floats[index] = value + 0;
369
+ const rawHi = words[hi] ?? 0;
370
+ if ((rawHi & 0x80000000) !== 0) {
371
+ words[lo] = (~(words[lo] ?? 0) ^ flip) >>> 0;
372
+ words[hi] = (~rawHi ^ flip) >>> 0;
373
+ }
374
+ else {
375
+ words[lo] = ((words[lo] ?? 0) ^ flip) >>> 0;
376
+ words[hi] = ((rawHi | 0x80000000) ^ flip) >>> 0;
377
+ }
360
378
  }
361
379
  }
362
380
  this.#encoded[term] = words;
@@ -385,15 +403,13 @@ class KeySorter {
385
403
  }
386
404
  else {
387
405
  const { column, descending } = spec;
388
- const nullPlacement = spec.nulls === undefined ? 0 : spec.nulls === "first" ? 1 : -1;
406
+ const nulls = spec.nulls ?? (spec.descending ? "first" : "last");
389
407
  compare = (left, right) => {
390
- if (nullPlacement !== 0) {
391
- // An explicit placement is absolute: direction must not negate it.
392
- const leftNull = column.isNull(left);
393
- const rightNull = column.isNull(right);
394
- if (leftNull || rightNull) {
395
- return leftNull && rightNull ? 0 : (leftNull ? -1 : 1) * nullPlacement;
396
- }
408
+ // NULL placement is absolute: direction must not negate it.
409
+ const leftNull = column.isNull(left);
410
+ const rightNull = column.isNull(right);
411
+ if (leftNull || rightNull) {
412
+ return leftNull && rightNull ? 0 : (leftNull ? -1 : 1) * (nulls === "first" ? 1 : -1);
397
413
  }
398
414
  const comparison = column.compare(left, right);
399
415
  return descending ? -comparison : comparison;
@@ -403,4 +419,3 @@ class KeySorter {
403
419
  return compare;
404
420
  }
405
421
  }
406
- //# sourceMappingURL=sort-keys.js.map
@@ -0,0 +1,31 @@
1
+ import type { SqlDomain } from "../storage/types.js";
2
+ /**
3
+ * Protects an ordinary SQL string that happens to use the internal domain namespace. Physical
4
+ * TEXT remains unchanged on disk; this wrapper is applied at execution boundaries so a user
5
+ * value can never be mistaken for NUMERIC, INTERVAL, enum, or another tagged logical value.
6
+ */
7
+ export declare function protectedSqlTextValue(value: string): string;
8
+ /** Removes only the ordinary-TEXT wrapper, leaving real domain values tagged. */
9
+ export declare function externalSqlTextValue(value: unknown): unknown;
10
+ export declare function isExactNumeric(value: unknown): value is string;
11
+ export declare function exactNumericValue(value: unknown, precision?: number, scale?: number): string | null;
12
+ export declare function exactNumericBinary(operator: "+" | "-" | "*" | "/" | "%", left: unknown, right: unknown): string | null | undefined;
13
+ export declare function exactNumericCompare(left: unknown, right: unknown): number | undefined;
14
+ /**
15
+ * Serializes a JSON value while bounding traversal, nesting, and output before concatenation.
16
+ * Canonical mode sorts object names directly in the wire text (including integer-looking names,
17
+ * which JavaScript object enumeration would otherwise silently reorder).
18
+ */
19
+ export declare function boundedJsonText(value: unknown, canonical: boolean, label?: string): string;
20
+ export declare function jsonDomainValue(value: unknown, binary: boolean): string | null;
21
+ export declare function uuidDomainValue(value: unknown): string | null;
22
+ export declare function timeDomainValue(value: unknown): string | null;
23
+ export declare function intervalDomainValue(value: unknown): string | null;
24
+ export declare function arrayDomainValue(values: readonly unknown[]): string;
25
+ export declare function enumDomainValue(value: unknown, name: string, values: readonly string[]): string | null;
26
+ export declare function enumDomainCompare(left: unknown, right: unknown): number | undefined;
27
+ export declare function normalizeSqlDomainValue(domain: SqlDomain, value: unknown): string | null;
28
+ export declare function collatedDomainValue(value: unknown, collation: unknown): string | null;
29
+ export declare function collatedDomainCompare(left: unknown, right: unknown): number | undefined;
30
+ export declare function externalSqlDomainValue(value: unknown): unknown;
31
+ export declare function isSqlDomainValue(value: unknown): value is string;