@bjornpagen/bumbledb 1.3.0 → 2.0.0-rc.1

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 (290) hide show
  1. package/COOKBOOK.md +224 -95
  2. package/README.md +114 -45
  3. package/dist/alternatives.d.ts +5 -6
  4. package/dist/alternatives.d.ts.map +1 -1
  5. package/dist/alternatives.js +5 -6
  6. package/dist/alternatives.js.map +1 -1
  7. package/dist/bin.d.ts +3 -0
  8. package/dist/bin.d.ts.map +1 -0
  9. package/dist/bin.js +85 -0
  10. package/dist/bin.js.map +1 -0
  11. package/dist/capacity.d.ts +14 -17
  12. package/dist/capacity.d.ts.map +1 -1
  13. package/dist/capacity.js +7 -7
  14. package/dist/capacity.js.map +1 -1
  15. package/dist/changes.d.ts +32 -41
  16. package/dist/changes.d.ts.map +1 -1
  17. package/dist/changes.js +86 -110
  18. package/dist/changes.js.map +1 -1
  19. package/dist/closed.d.ts +2 -2
  20. package/dist/closed.d.ts.map +1 -1
  21. package/dist/closed.js +5 -5
  22. package/dist/closed.js.map +1 -1
  23. package/dist/codec.d.ts +20 -27
  24. package/dist/codec.d.ts.map +1 -1
  25. package/dist/codec.js +48 -22
  26. package/dist/codec.js.map +1 -1
  27. package/dist/compile.d.ts +26 -50
  28. package/dist/compile.d.ts.map +1 -1
  29. package/dist/compile.js +75 -64
  30. package/dist/compile.js.map +1 -1
  31. package/dist/database/database.d.ts +98 -0
  32. package/dist/database/database.d.ts.map +1 -0
  33. package/dist/database/database.js +249 -0
  34. package/dist/database/database.js.map +1 -0
  35. package/dist/database/driver.d.ts +40 -0
  36. package/dist/database/driver.d.ts.map +1 -0
  37. package/dist/database/driver.js +68 -0
  38. package/dist/database/driver.js.map +1 -0
  39. package/dist/database/fs.d.ts +12 -0
  40. package/dist/database/fs.d.ts.map +1 -0
  41. package/dist/database/fs.js +120 -0
  42. package/dist/database/fs.js.map +1 -0
  43. package/dist/database/generate.d.ts +26 -0
  44. package/dist/database/generate.d.ts.map +1 -0
  45. package/dist/database/generate.js +102 -0
  46. package/dist/database/generate.js.map +1 -0
  47. package/dist/database/hosted.d.ts +32 -0
  48. package/dist/database/hosted.d.ts.map +1 -0
  49. package/dist/database/hosted.js +44 -0
  50. package/dist/database/hosted.js.map +1 -0
  51. package/dist/database/io.d.ts +94 -0
  52. package/dist/database/io.d.ts.map +1 -0
  53. package/dist/database/io.js +35 -0
  54. package/dist/database/io.js.map +1 -0
  55. package/dist/database/mem.d.ts +26 -0
  56. package/dist/database/mem.d.ts.map +1 -0
  57. package/dist/database/mem.js +67 -0
  58. package/dist/database/mem.js.map +1 -0
  59. package/dist/database/migration.d.ts +55 -0
  60. package/dist/database/migration.d.ts.map +1 -0
  61. package/dist/database/migration.js +46 -0
  62. package/dist/database/migration.js.map +1 -0
  63. package/dist/database/s3.d.ts +36 -0
  64. package/dist/database/s3.d.ts.map +1 -0
  65. package/dist/database/s3.js +141 -0
  66. package/dist/database/s3.js.map +1 -0
  67. package/dist/db.d.ts +44 -128
  68. package/dist/db.d.ts.map +1 -1
  69. package/dist/db.js +163 -287
  70. package/dist/db.js.map +1 -1
  71. package/dist/engine.d.ts +7 -0
  72. package/dist/engine.d.ts.map +1 -0
  73. package/dist/engine.js +2 -0
  74. package/dist/engine.js.map +1 -0
  75. package/dist/errors.d.ts +152 -46
  76. package/dist/errors.d.ts.map +1 -1
  77. package/dist/errors.js +107 -19
  78. package/dist/errors.js.map +1 -1
  79. package/dist/face.d.ts +5 -5
  80. package/dist/face.d.ts.map +1 -1
  81. package/dist/face.js +6 -6
  82. package/dist/face.js.map +1 -1
  83. package/dist/fields.d.ts +4 -5
  84. package/dist/fields.d.ts.map +1 -1
  85. package/dist/fields.js +3 -3
  86. package/dist/fields.js.map +1 -1
  87. package/dist/index.d.ts +60 -58
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +27 -29
  90. package/dist/index.js.map +1 -1
  91. package/dist/judgment.d.ts +1 -1
  92. package/dist/judgment.js +1 -1
  93. package/dist/law.d.ts +16 -68
  94. package/dist/law.d.ts.map +1 -1
  95. package/dist/law.js +3 -3
  96. package/dist/law.js.map +1 -1
  97. package/dist/lower.d.ts +3 -3
  98. package/dist/lower.d.ts.map +1 -1
  99. package/dist/lower.js +35 -39
  100. package/dist/lower.js.map +1 -1
  101. package/dist/native/addon.d.ts +23 -0
  102. package/dist/native/addon.d.ts.map +1 -0
  103. package/dist/native/addon.js +15 -0
  104. package/dist/native/addon.js.map +1 -0
  105. package/dist/native/binding.d.ts +996 -0
  106. package/dist/native/json.d.ts +14 -0
  107. package/dist/native/json.d.ts.map +1 -0
  108. package/dist/native/json.js +73 -0
  109. package/dist/native/json.js.map +1 -0
  110. package/dist/native/load.d.ts +9 -0
  111. package/dist/native/load.d.ts.map +1 -0
  112. package/dist/native/load.js +30 -0
  113. package/dist/native/load.js.map +1 -0
  114. package/dist/native/op.d.ts +29 -0
  115. package/dist/native/op.d.ts.map +1 -0
  116. package/dist/native/op.js +50 -0
  117. package/dist/native/op.js.map +1 -0
  118. package/dist/query/atom.d.ts +13 -14
  119. package/dist/query/atom.d.ts.map +1 -1
  120. package/dist/query/atom.js +2 -2
  121. package/dist/query/atom.js.map +1 -1
  122. package/dist/query/compute.d.ts +7 -7
  123. package/dist/query/compute.d.ts.map +1 -1
  124. package/dist/query/compute.js +7 -16
  125. package/dist/query/compute.js.map +1 -1
  126. package/dist/query/find.d.ts +8 -8
  127. package/dist/query/find.d.ts.map +1 -1
  128. package/dist/query/find.js +1 -1
  129. package/dist/query/lower.d.ts +31 -17
  130. package/dist/query/lower.d.ts.map +1 -1
  131. package/dist/query/lower.js +260 -368
  132. package/dist/query/lower.js.map +1 -1
  133. package/dist/query/run.d.ts +5 -5
  134. package/dist/query/run.d.ts.map +1 -1
  135. package/dist/query/run.js +32 -15
  136. package/dist/query/run.js.map +1 -1
  137. package/dist/query/scope.d.ts +20 -28
  138. package/dist/query/scope.d.ts.map +1 -1
  139. package/dist/query/scope.js +13 -8
  140. package/dist/query/scope.js.map +1 -1
  141. package/dist/query/segments.d.ts +2 -2
  142. package/dist/query/segments.d.ts.map +1 -1
  143. package/dist/query/segments.js +3 -3
  144. package/dist/query/segments.js.map +1 -1
  145. package/dist/relation.d.ts +1 -1
  146. package/dist/relation.d.ts.map +1 -1
  147. package/dist/relation.js +4 -4
  148. package/dist/relation.js.map +1 -1
  149. package/dist/result.d.ts +15 -22
  150. package/dist/result.d.ts.map +1 -1
  151. package/dist/result.js +30 -39
  152. package/dist/result.js.map +1 -1
  153. package/dist/rows.d.ts +9 -33
  154. package/dist/rows.d.ts.map +1 -1
  155. package/dist/rows.js +8 -12
  156. package/dist/rows.js.map +1 -1
  157. package/dist/runtime.d.ts +17 -43
  158. package/dist/runtime.d.ts.map +1 -1
  159. package/dist/runtime.js +41 -241
  160. package/dist/runtime.js.map +1 -1
  161. package/dist/scalar.d.ts +36 -106
  162. package/dist/scalar.d.ts.map +1 -1
  163. package/dist/scalar.js +36 -185
  164. package/dist/scalar.js.map +1 -1
  165. package/dist/schema.d.ts +7 -18
  166. package/dist/schema.d.ts.map +1 -1
  167. package/dist/schema.js +18 -228
  168. package/dist/schema.js.map +1 -1
  169. package/dist/selection.d.ts +4 -4
  170. package/dist/selection.d.ts.map +1 -1
  171. package/dist/selection.js +5 -5
  172. package/dist/selection.js.map +1 -1
  173. package/dist/shape.d.ts +5 -5
  174. package/dist/shape.d.ts.map +1 -1
  175. package/dist/spec.d.ts +7 -79
  176. package/dist/spec.d.ts.map +1 -1
  177. package/dist/spec.js.map +1 -1
  178. package/dist/statements.d.ts +3 -3
  179. package/dist/statements.d.ts.map +1 -1
  180. package/dist/statements.js +10 -10
  181. package/dist/statements.js.map +1 -1
  182. package/dist/uuid.d.ts +1 -1
  183. package/dist/uuid.d.ts.map +1 -1
  184. package/dist/uuid.js +1 -1
  185. package/dist/uuid.js.map +1 -1
  186. package/dist/values.d.ts +2 -2
  187. package/dist/values.d.ts.map +1 -1
  188. package/dist/values.js +2 -2
  189. package/dist/values.js.map +1 -1
  190. package/package.json +18 -18
  191. package/src/alternatives.ts +7 -8
  192. package/src/bin.ts +82 -0
  193. package/src/capacity.ts +20 -23
  194. package/src/changes.ts +134 -197
  195. package/src/closed.ts +5 -5
  196. package/src/codec.ts +77 -51
  197. package/src/compile.ts +91 -113
  198. package/src/database/database.ts +413 -0
  199. package/src/database/driver.ts +134 -0
  200. package/src/database/fs.ts +119 -0
  201. package/src/database/generate.ts +116 -0
  202. package/src/database/hosted.ts +102 -0
  203. package/src/database/io.ts +134 -0
  204. package/src/database/mem.ts +113 -0
  205. package/src/database/migration.ts +107 -0
  206. package/src/database/s3.ts +231 -0
  207. package/src/db.ts +290 -547
  208. package/src/engine.ts +14 -0
  209. package/src/errors.ts +118 -39
  210. package/src/face.ts +9 -9
  211. package/src/fields.ts +6 -7
  212. package/src/index.ts +102 -109
  213. package/src/judgment.ts +1 -1
  214. package/src/law.ts +18 -70
  215. package/src/lower.ts +61 -72
  216. package/src/native/addon.ts +54 -0
  217. package/src/native/binding.d.ts +996 -0
  218. package/src/native/json.ts +100 -0
  219. package/src/native/load.ts +31 -0
  220. package/src/native/op.ts +73 -0
  221. package/src/query/atom.ts +15 -16
  222. package/src/query/compute.ts +13 -22
  223. package/src/query/find.ts +8 -8
  224. package/src/query/lower.ts +323 -414
  225. package/src/query/run.ts +42 -21
  226. package/src/query/scope.ts +37 -38
  227. package/src/query/segments.ts +4 -4
  228. package/src/relation.ts +4 -4
  229. package/src/result.ts +53 -80
  230. package/src/rows.ts +18 -46
  231. package/src/runtime.ts +50 -346
  232. package/src/scalar.ts +76 -336
  233. package/src/schema.ts +23 -284
  234. package/src/selection.ts +6 -6
  235. package/src/shape.ts +5 -5
  236. package/src/spec.ts +7 -85
  237. package/src/statements.ts +11 -11
  238. package/src/uuid.ts +1 -1
  239. package/src/values.ts +4 -4
  240. package/dist/close.d.ts +0 -24
  241. package/dist/close.d.ts.map +0 -1
  242. package/dist/close.js +0 -34
  243. package/dist/close.js.map +0 -1
  244. package/dist/db-native.d.ts +0 -196
  245. package/dist/db-native.d.ts.map +0 -1
  246. package/dist/db-native.js +0 -13
  247. package/dist/db-native.js.map +0 -1
  248. package/dist/internal/log.d.ts +0 -26
  249. package/dist/internal/log.d.ts.map +0 -1
  250. package/dist/internal/log.js +0 -12
  251. package/dist/internal/log.js.map +0 -1
  252. package/dist/migration.d.ts +0 -31
  253. package/dist/migration.d.ts.map +0 -1
  254. package/dist/migration.js +0 -47
  255. package/dist/migration.js.map +0 -1
  256. package/dist/native.d.ts +0 -562
  257. package/dist/native.d.ts.map +0 -1
  258. package/dist/native.js +0 -123
  259. package/dist/native.js.map +0 -1
  260. package/dist/query/description.d.ts +0 -41
  261. package/dist/query/description.d.ts.map +0 -1
  262. package/dist/query/description.js +0 -311
  263. package/dist/query/description.js.map +0 -1
  264. package/dist/query/parse-ir.d.ts +0 -10
  265. package/dist/query/parse-ir.d.ts.map +0 -1
  266. package/dist/query/parse-ir.js +0 -280
  267. package/dist/query/parse-ir.js.map +0 -1
  268. package/dist/runtime-codes.d.ts +0 -2
  269. package/dist/runtime-codes.d.ts.map +0 -1
  270. package/dist/runtime-codes.js +0 -18
  271. package/dist/runtime-codes.js.map +0 -1
  272. package/dist/runtime-errors.d.ts +0 -118
  273. package/dist/runtime-errors.d.ts.map +0 -1
  274. package/dist/runtime-errors.js +0 -98
  275. package/dist/runtime-errors.js.map +0 -1
  276. package/dist/runtime-native.d.ts +0 -141
  277. package/dist/runtime-native.d.ts.map +0 -1
  278. package/dist/runtime-native.js +0 -5
  279. package/dist/runtime-native.js.map +0 -1
  280. package/pack-provenance.json +0 -7
  281. package/src/close.ts +0 -53
  282. package/src/db-native.ts +0 -243
  283. package/src/internal/log.ts +0 -48
  284. package/src/migration.ts +0 -61
  285. package/src/native.ts +0 -736
  286. package/src/query/description.ts +0 -424
  287. package/src/query/parse-ir.ts +0 -291
  288. package/src/runtime-codes.ts +0 -17
  289. package/src/runtime-errors.ts +0 -109
  290. package/src/runtime-native.ts +0 -189
package/dist/codec.d.ts CHANGED
@@ -1,28 +1,15 @@
1
1
  import { Effect, Schema as EffectSchema, Result } from "effect";
2
- import { type AnyRelation, type Fact } from "./relation.js";
3
- import { DbError } from "./runtime-errors.js";
4
- import type { AnySchema } from "./schema.js";
5
- import type { Rel } from "./shape.js";
2
+ import { DbError } from "./errors.ts";
3
+ import { type AnyField, type Infer } from "./fields.ts";
4
+ import { type AnyRelation, type Fact } from "./relation.ts";
5
+ import type { AnySchema } from "./schema.ts";
6
+ import type { Rel } from "./shape.ts";
6
7
  /**
7
- * Boundary row codecs, derived from the core relation descriptors — never a
8
- * second hand-maintained field roster.
9
- *
10
- * Two layers:
11
- *
12
- * 1. The CANONICAL native row codec: `encodeRows`/`decodeRows` run the
13
- * same native implementation the engine, log and migrations
14
- * share (owned bytes in, owned typed rows out; untrusted input cannot
15
- * inject native capabilities). Effect-only, `NativeRuntime` required.
16
- * 2. The schema-tagged JSON VALUE form for HTTP/export boundaries
17
- * (chapter 30): every `f64` — finite included — is
18
- * `{"$f64":"<16 lowercase hex digits>"}` of canonical binary64 bits;
19
- * integers are canonical decimal strings; `Uuid` is canonical UUID;
20
- * bytes use ONE strict lowercase-hex encoding; intervals are
21
- * `{start,end}` in their element encoding; closed references are handle
22
- * names. `JSON.stringify` of raw numbers is NOT the database value
23
- * wire codec — it loses infinities/NaN and cannot encode BigInt.
24
- * Decoders reject malformed widths, unknown tags and noncanonical
25
- * representations. These are pure bounded per-row functions.
8
+ * Row codecs derived from the relation descriptors: the canonical native row codec
9
+ * (`encodeRows`/`decodeRows`, the engine's own bytes) and the schema-tagged JSON value form for
10
+ * HTTP/export boundaries, where an `f64` is `{"$f64":"<16 hex>"}` of its canonical bits (raw JSON
11
+ * numbers lose infinities and NaN), integers are decimal strings, bytes are lowercase hex and
12
+ * closed references are handle names. Decoders reject anything noncanonical.
26
13
  */
27
14
  /** The typed row shape: a schema plus one of its relations. */
28
15
  interface RowShape<R extends AnyRelation> {
@@ -30,6 +17,12 @@ interface RowShape<R extends AnyRelation> {
30
17
  readonly relation: R;
31
18
  }
32
19
  declare function rowShape<S extends AnySchema, R extends Rel<S>>(schema: S, relation: R): RowShape<R>;
20
+ /** The host-value schema, using the same interpreter as facts and row codecs. */
21
+ declare function fieldSchema<F extends AnyField>(field: F): EffectSchema.declare<Infer<F>, Infer<F>>;
22
+ /** Encode one field's host value in the canonical JSON-boundary form. */
23
+ declare function encodeBoundaryField<F extends AnyField>(field: F, value: Infer<F>): Result.Result<unknown, DbError>;
24
+ /** Strict JSON-boundary decoding, returning the field's canonical host value. */
25
+ declare function decodeBoundaryField<F extends AnyField>(field: F, input: unknown): Result.Result<Infer<F>, DbError>;
33
26
  /** Pure schema-tagged JSON encoding of complete rows. */
34
27
  declare function encodeBoundaryRows<R extends AnyRelation>(relation: R, rows: Iterable<Fact<R>>): Result.Result<ReadonlyArray<Readonly<Record<string, unknown>>>, DbError>;
35
28
  /** Pure strict decoding; malformed records, getters and values fail as data. */
@@ -37,14 +30,14 @@ declare function decodeBoundaryRows<R extends AnyRelation>(relation: R, input: u
37
30
  /** An Effect Schema derived from the same complete-row value interpreter. */
38
31
  declare function rowSchema<R extends AnyRelation>(relation: R): EffectSchema.declare<Fact<R>, Fact<R>>;
39
32
  /**
40
- * The canonical native row codec (chapter 35 roster): owned bytes
33
+ * The canonical native row codec: owned bytes
41
34
  * out, owned typed rows back in — the same implementation log sealing and
42
35
  * migrations use. Binding parameters is ingestion: input must stay stable
43
36
  * through execution, and no native work starts before the checked owned
44
37
  * chunk exists.
45
38
  */
46
- declare const encodeRows: <R extends AnyRelation>(shape: RowShape<R>, rows: Iterable<Fact<R>>) => Effect.Effect<Uint8Array<ArrayBufferLike>, DbError, import("./runtime.js").NativeRuntime>;
47
- declare const decodeRows: <R extends AnyRelation>(shape: RowShape<R>, input: Uint8Array<ArrayBufferLike>) => Effect.Effect<readonly Fact<R>[], DbError, import("./runtime.js").NativeRuntime>;
39
+ declare const encodeRows: <R extends AnyRelation>(shape: RowShape<R>, rows: Iterable<Fact<R>>) => Effect.Effect<Uint8Array<ArrayBufferLike>, DbError, import("./runtime.ts").Bumble>;
40
+ declare const decodeRows: <R extends AnyRelation>(shape: RowShape<R>, input: Uint8Array<ArrayBufferLike>) => Effect.Effect<readonly Fact<R>[], DbError, import("./runtime.ts").Bumble>;
48
41
  export type { RowShape };
49
- export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
42
+ export { decodeBoundaryField, decodeBoundaryRows, decodeRows, encodeBoundaryField, encodeBoundaryRows, encodeRows, fieldSchema, rowSchema, rowShape };
50
43
  //# sourceMappingURL=codec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAO/D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAsC,MAAM,cAAc,CAAA;AAI9F,OAAO,EAAiB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAIpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,+DAA+D;AAC/D,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CACpB;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAI5F;AAuHD,yDAAyD;AACzD,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAuB1E;AAED,gFAAgF;AAChF,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAsBhD;AAED,6EAA6E;AAC7E,iBAAS,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,0CAapD;AAED;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,0IAmBzE,CAAA;AAEF,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,4IAezE,CAAA;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/D,OAAO,EAAiC,OAAO,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,KAAK,QAAQ,EAAmB,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAGxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAsC,MAAM,eAAe,CAAA;AAI/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAIrC;;;;;;GAMG;AAEH,+DAA+D;AAC/D,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CACpB;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAI5F;AAwHD,iFAAiF;AACjF,iBAAS,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,4CAUhD;AAED,yEAAyE;AACzE,iBAAS,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAK3G;AAED,iFAAiF;AACjF,iBAAS,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAK3G;AAED,yDAAyD;AACzD,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAuB1E;AAED,gFAAgF;AAChF,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAsBhD;AAED,6EAA6E;AAC7E,iBAAS,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,0CAapD;AAED;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,oIAkBzE,CAAA;AAEF,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,sIAiBzE,CAAA;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,CAAA"}
package/dist/codec.js CHANGED
@@ -1,16 +1,16 @@
1
1
  import { Effect, Schema as EffectSchema, Result } from "effect";
2
- import { membersAgree } from "#closed.ts";
3
- import { schemaTables } from "#compile.ts";
4
- import { dbNative } from "#db-native.ts";
5
- import { AuthoringError } from "#errors.ts";
6
- import { lower } from "#lower.ts";
7
- import { relationDescriptor, relationFields } from "#relation.ts";
8
- import { factOfCells, flatRowsOf } from "#rows.ts";
9
- import { nativeOperationWith, runtimeHandle } from "#runtime.ts";
10
- import { argumentError, DbError } from "#runtime-errors.ts";
11
- import { schemaDescriptor } from "#schema.ts";
12
- import { f64BitsHex } from "#spec.ts";
13
- import { fieldValue, recordValue } from "#values.ts";
2
+ import { membersAgree } from "./closed.js";
3
+ import { compiledOf, schemaTables } from "./compile.js";
4
+ import { AuthoringError, argumentError, DbError } from "./errors.js";
5
+ import { fieldDescriptor } from "./fields.js";
6
+ import { addon } from "./native/addon.js";
7
+ import { call } from "./native/op.js";
8
+ import { relationDescriptor, relationFields } from "./relation.js";
9
+ import { factOfCells, flatRowsOf } from "./rows.js";
10
+ import { runtimeHandle } from "./runtime.js";
11
+ import { schemaDescriptor } from "./schema.js";
12
+ import { f64BitsHex } from "./spec.js";
13
+ import { fieldValue, recordValue } from "./values.js";
14
14
  function rowShape(schema, relation) {
15
15
  const ownedSchema = schemaDescriptor(schema);
16
16
  const ownedRelation = relationDescriptor(relation);
@@ -24,7 +24,7 @@ function checkedRowShape(operation, input) {
24
24
  if (relationId === undefined || !membersAgree(schema.relations[relation.name], relation)) {
25
25
  throw new AuthoringError({ message: `${operation}: relation is not declared in the schema` });
26
26
  }
27
- return { relation, relationId, spec: lower(schema) };
27
+ return { relation, relationId, schema: compiledOf(schema).handle };
28
28
  }
29
29
  function invalid(operation) {
30
30
  return new DbError({ operation, reason: { _tag: "InvalidArgument" } });
@@ -99,7 +99,6 @@ function decodeTaggedF64(value) {
99
99
  const record = recordValue("binary64 image", value, ["$f64"]);
100
100
  return f64OfHex(record.$f64);
101
101
  }
102
- /** Decode representation, then judge the value through the shared interpreter. */
103
102
  function decodeBoundaryValue(context, field, input) {
104
103
  if ("closed" in field)
105
104
  return fieldValue(context, field, input);
@@ -126,6 +125,33 @@ function decodeBoundaryValue(context, field, input) {
126
125
  }
127
126
  return fieldValue(context, field, decoded);
128
127
  }
128
+ /** The host-value schema, using the same interpreter as facts and row codecs. */
129
+ function fieldSchema(field) {
130
+ const descriptor = fieldDescriptor("fieldSchema", field);
131
+ return EffectSchema.declare((value) => {
132
+ try {
133
+ fieldValue("fieldSchema", descriptor, value);
134
+ return true;
135
+ }
136
+ catch {
137
+ return false;
138
+ }
139
+ });
140
+ }
141
+ /** Encode one field's host value in the canonical JSON-boundary form. */
142
+ function encodeBoundaryField(field, value) {
143
+ return Result.try({
144
+ try: () => encodeBoundaryValue("encodeBoundaryField", fieldDescriptor("encodeBoundaryField", field), value),
145
+ catch: (cause) => argumentError("encodeBoundaryField", cause)
146
+ });
147
+ }
148
+ /** Strict JSON-boundary decoding, returning the field's canonical host value. */
149
+ function decodeBoundaryField(field, input) {
150
+ return Result.try({
151
+ try: () => decodeBoundaryValue("decodeBoundaryField", fieldDescriptor("decodeBoundaryField", field), input),
152
+ catch: (cause) => argumentError("decodeBoundaryField", cause)
153
+ });
154
+ }
129
155
  /** Pure schema-tagged JSON encoding of complete rows. */
130
156
  function encodeBoundaryRows(relation, rows) {
131
157
  return Result.try({
@@ -181,15 +207,15 @@ function rowSchema(relation) {
181
207
  });
182
208
  }
183
209
  /**
184
- * The canonical native row codec (chapter 35 roster): owned bytes
210
+ * The canonical native row codec: owned bytes
185
211
  * out, owned typed rows back in — the same implementation log sealing and
186
212
  * migrations use. Binding parameters is ingestion: input must stay stable
187
213
  * through execution, and no native work starts before the checked owned
188
214
  * chunk exists.
189
215
  */
190
216
  const encodeRows = Effect.fn("encodeRows")(function* (shape, rows) {
191
- const runtime = yield* runtimeHandle();
192
- const { relation, relationId, spec } = yield* Effect.try({
217
+ const runtime = yield* runtimeHandle;
218
+ const { relation, relationId, schema } = yield* Effect.try({
193
219
  try: () => checkedRowShape("encodeRows", shape),
194
220
  catch: (cause) => argumentError("encodeRows", cause)
195
221
  });
@@ -197,18 +223,18 @@ const encodeRows = Effect.fn("encodeRows")(function* (shape, rows) {
197
223
  try: () => flatRowsOf(relation, rows),
198
224
  catch: (cause) => argumentError("encodeRows", cause)
199
225
  });
200
- return yield* nativeOperationWith("encodeRows", (callback) => dbNative.runtimeEncodeRows(runtime, spec, relationId, flat.rows, flat.cells, callback), dbNative.runtimeBytesTake, (bytes) => bytes);
226
+ return yield* call("encodeRows", (callback) => addon.runtimeEncodeRows(runtime, schema, relationId, flat.rows, flat.cells, callback), addon.runtimeBytesTake);
201
227
  });
202
228
  const decodeRows = Effect.fn("decodeRows")(function* (shape, input) {
203
- const runtime = yield* runtimeHandle();
204
- const { relation, relationId, spec } = yield* Effect.try({
229
+ const runtime = yield* runtimeHandle;
230
+ const { relation, relationId, schema } = yield* Effect.try({
205
231
  try: () => checkedRowShape("decodeRows", shape),
206
232
  catch: (cause) => argumentError("decodeRows", cause)
207
233
  });
208
234
  if (!(input instanceof Uint8Array) || !(input.buffer instanceof ArrayBuffer)) {
209
235
  return yield* Effect.fail(invalid("decodeRows"));
210
236
  }
211
- return yield* nativeOperationWith("decodeRows", (callback) => dbNative.runtimeDecodeRows(runtime, spec, relationId, input, callback), dbNative.runtimeRowsTake, (rows) => Object.freeze(rows.map((row) => factOfCells(relation, row))));
237
+ return yield* call("decodeRows", (callback) => addon.runtimeDecodeRows(runtime, schema, relationId, input, callback), (lease) => ((rows) => Object.freeze(rows.map((row) => factOfCells(relation, row))))(addon.runtimeRowsTake(lease)));
212
238
  });
213
- export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
239
+ export { decodeBoundaryField, decodeBoundaryRows, decodeRows, encodeBoundaryField, encodeBoundaryRows, encodeRows, fieldSchema, rowSchema, rowShape };
214
240
  //# sourceMappingURL=codec.js.map
package/dist/codec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
package/dist/compile.d.ts CHANGED
@@ -1,66 +1,42 @@
1
- import { Effect } from "effect";
2
- import type { SchemaClasses } from "./law.js";
3
- import type { SealedDescriptor } from "./native.js";
4
- import type { AnyRelation } from "./relation.js";
5
- import type { AnySchema, Schema as SchemaDeclaration, SchemaRelations } from "./schema.js";
6
- import { type KeyStatement, type Statement } from "./statements.js";
7
1
  /**
8
- * `SchemaId` — the engine's canonical schema fingerprint as lowercase hex.
9
- * Independent of database identity; ordinary structural text. Native
10
- * boundaries verify the fingerprint wherever it grants admission.
2
+ * A schema is compiled by the engine when it is defined. The compiled handle, descriptor and
3
+ * fingerprint ride with the schema value; the engine's diagnostics come back as authoring errors
4
+ * that name the schema's own relations and statements.
11
5
  */
12
- type SchemaId = string;
13
- /**
14
- * `CompiledSchema<S>` — bounded detached immutable descriptor data plus the
15
- * canonical `schemaId`. NOT a tenant handle or a second
16
- * user-authored schema: it needs no native finalizer, holds no native
17
- * resource, and open/create/build compile through the same implementation —
18
- * prior compilation is optional, never a mandatory prepare ceremony.
19
- */
20
- interface CompiledSchema<S extends AnySchema> {
21
- readonly schema: S;
6
+ import { Schema as EffectSchema } from "effect";
7
+ import type { SchemaRef } from "./native/addon.ts";
8
+ import type { SchemaDescriptorOut } from "./native/binding.d.ts";
9
+ import type { AnyRelation } from "./relation.ts";
10
+ import type { AnySchema } from "./schema.ts";
11
+ import { type KeyStatement, type Statement } from "./statements.ts";
12
+ /** The engine's schema fingerprint: 64 lowercase hex digits, independent of any database. */
13
+ declare const SchemaId: EffectSchema.brand<EffectSchema.String, "SchemaId">;
14
+ type SchemaId = typeof SchemaId.Type;
15
+ interface Compiled {
16
+ readonly handle: SchemaRef;
17
+ readonly descriptor: SchemaDescriptorOut;
22
18
  readonly schemaId: SchemaId;
23
- readonly descriptor: SealedDescriptor;
24
19
  }
25
20
  /**
26
- * Pure declaration-order tables shared by the whole core surface: relation
27
- * ids (declaration order = ids), materialized statement ids (closed
28
- * relations' auto-handle keys FIRST in relation-declaration order, then
29
- * declared statements in declaration order with `mirrors` occupying two
30
- * consecutive slots, source-first — the theory's `StatementId` law).
31
- * Every declared statement retains its own native identity; no key is
32
- * privileged by its position in the declaration.
21
+ * Declaration-order tables: relation ids, and each declared statement's first materialized
22
+ * statement id (closed relations' id keys come first; `mirrors` takes two consecutive ids).
33
23
  */
34
24
  interface SchemaTables {
35
25
  readonly relationIds: ReadonlyMap<string, number>;
36
26
  readonly statementIds: ReadonlyMap<Statement, number>;
37
27
  }
38
- /** Memoized pure tables (per schema value identity; no native work). */
39
28
  declare function schemaTables(theory: AnySchema): SchemaTables;
40
- /** Resolve a logical key declaration, never an opaque constructor token. */
29
+ /** Resolves a key declaration to the schema's own statement and its statement id. */
41
30
  declare function declaredKey<R extends AnyRelation>(theory: AnySchema, input: KeyStatement<R>): {
42
31
  readonly key: KeyStatement<R>;
43
32
  readonly statementId: number;
44
33
  } | undefined;
45
- /**
46
- * The declaration-tier `Schema<Rels, Classes>` TYPE (from `#schema.ts`),
47
- * re-aliased LOCALLY so the one name carries both meanings through a
48
- * SINGLE export specifier below — a local `type` + `const` merge is the
49
- * plain TypeScript type/value merge, with no same-name pair of export
50
- * declarations for any checker to refuse (the earlier
51
- * `export type { Schema } from "./schema.js"` beside `export { Schema }`
52
- * spelled the type meaning twice at the barrel; this spelling cannot).
53
- */
54
- type Schema<Rels extends SchemaRelations, Classes extends SchemaClasses = SchemaClasses> = SchemaDeclaration<Rels, Classes>;
55
- /**
56
- * The core `Schema` namespace (import as `BumbleSchema` when Effect Schema
57
- * is also in scope). The `Schema<Rels>` type remains the pure
58
- * declaration from `#schema.ts` (the local alias above); this value owns
59
- * the effectful half. One exported name, two meanings.
60
- */
61
- declare const Schema: Readonly<{
62
- compile: <S extends AnySchema>(schema: S) => Effect.Effect<CompiledSchema<S>, import("./runtime-errors.js").DbError, import("./runtime.js").NativeRuntime>;
63
- }>;
64
- export type { CompiledSchema, SchemaId, SchemaTables };
65
- export { declaredKey, Schema, schemaTables };
34
+ /** Records the compiled form of a schema value `schema()` produced. */
35
+ declare function registerCompiled(theory: AnySchema): void;
36
+ /** Whether `value` is a schema value `schema()` produced (and so has a compiled form). */
37
+ declare function isCompiledSchema(value: unknown): value is AnySchema;
38
+ /** The engine's compiled form of `theory`; every schema value `schema()` produced has one. */
39
+ declare function compiledOf(theory: AnySchema): Compiled;
40
+ export type { Compiled, SchemaTables };
41
+ export { compiledOf, declaredKey, isCompiledSchema, registerCompiled, SchemaId, schemaTables };
66
42
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAEvF;;;;GAIG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB;;;;;;GAMG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS;IAC3C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;CACrC;AAED;;;;;;;;GAQG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;CACrD;AA0BD,wEAAwE;AACxE,iBAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAQrD;AAED,4EAA4E;AAC5E,iBAAS,WAAW,CAAC,CAAC,SAAS,WAAW,EACzC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AA2D9E;;;;;;;;GAQG;AACH,KAAK,MAAM,CAAC,IAAI,SAAS,eAAe,EAAE,OAAO,SAAS,aAAa,GAAG,aAAa,IAAI,iBAAiB,CAC3G,IAAI,EACJ,OAAO,CACP,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,MAAM;cA9C2C,CAAC,SAAS,SAAS;EA8CjC,CAAA;AAEzC,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAA;AAK/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAoB,MAAM,uBAAuB,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,KAAK,YAAY,EAAmB,KAAK,SAAS,EAAuB,MAAM,iBAAiB,CAAA;AAEzG,6FAA6F;AAC7F,QAAA,MAAM,QAAQ,qDAEb,CAAA;AACD,KAAK,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAEpC,UAAU,QAAQ;IACjB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAC3B;AAED;;;GAGG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;CACrD;AAmBD,iBAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAMrD;AAED,qFAAqF;AACrF,iBAAS,WAAW,CAAC,CAAC,SAAS,WAAW,EACzC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AA+D9E,uEAAuE;AACvE,iBAAS,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEjD;AAED,0FAA0F;AAC1F,iBAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE5D;AAED,8FAA8F;AAC9F,iBAAS,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAI/C;AAED,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA"}
package/dist/compile.js CHANGED
@@ -1,43 +1,40 @@
1
- import { Effect } from "effect";
2
- import { isClosedMember, membersAgree } from "#closed.ts";
3
- import { dbNative } from "#db-native.ts";
4
- import { SdkInvariantError } from "#errors.ts";
5
- import { isImmutable, snapshotData } from "#immutable.ts";
6
- import { lower } from "#lower.ts";
7
- import { nativeOperationWith, runtimeHandle } from "#runtime.ts";
8
- import { argumentError } from "#runtime-errors.ts";
9
- import { schemaDescriptor } from "#schema.ts";
10
- import { statementDescriptor } from "#statements.ts";
11
- function declaredWidth(statement) {
12
- return statement.kind === "mirrors" ? 2 : 1;
13
- }
1
+ /**
2
+ * A schema is compiled by the engine when it is defined. The compiled handle, descriptor and
3
+ * fingerprint ride with the schema value; the engine's diagnostics come back as authoring errors
4
+ * that name the schema's own relations and statements.
5
+ */
6
+ import { Schema as EffectSchema } from "effect";
7
+ import { isClosedMember, membersAgree } from "./closed.js";
8
+ import { AuthoringError, internalError } from "./errors.js";
9
+ import { isImmutable } from "./immutable.js";
10
+ import { lower } from "./lower.js";
11
+ import { addon } from "./native/addon.js";
12
+ import { renderStatement, statementDescriptor } from "./statements.js";
13
+ /** The engine's schema fingerprint: 64 lowercase hex digits, independent of any database. */
14
+ const SchemaId = EffectSchema.String.check(EffectSchema.isPattern(/^[0-9a-f]{64}$/)).pipe(EffectSchema.brand("SchemaId"));
14
15
  function tablesOf(theory) {
15
16
  const relationIds = new Map();
16
17
  const statementIds = new Map();
17
- let autoKeys = 0;
18
- Object.entries(theory.relations).forEach(function assignRelation([name, member], ordinal) {
18
+ let offset = 0;
19
+ Object.entries(theory.relations).forEach(([name, member], ordinal) => {
19
20
  relationIds.set(name, ordinal);
20
- if (isClosedMember(member)) {
21
- autoKeys += 1;
22
- }
21
+ if (isClosedMember(member))
22
+ offset += 1;
23
23
  });
24
- let offset = autoKeys;
25
24
  for (const statement of theory.statements) {
26
25
  statementIds.set(statement, offset);
27
- offset += declaredWidth(statement);
26
+ offset += statement.kind === "mirrors" ? 2 : 1;
28
27
  }
29
28
  return Object.freeze({ relationIds, statementIds });
30
29
  }
31
- const compiledCache = new WeakMap();
32
- /** Memoized pure tables (per schema value identity; no native work). */
30
+ const tablesCache = new WeakMap();
33
31
  function schemaTables(theory) {
34
- const cached = compiledCache.get(theory);
35
- if (cached !== undefined) {
32
+ const cached = tablesCache.get(theory);
33
+ if (cached !== undefined)
36
34
  return cached;
37
- }
38
35
  const built = tablesOf(theory);
39
36
  if (isImmutable(theory))
40
- compiledCache.set(theory, built);
37
+ tablesCache.set(theory, built);
41
38
  return built;
42
39
  }
43
40
  function declaredKey(theory, input) {
@@ -51,46 +48,60 @@ function declaredKey(theory, input) {
51
48
  }
52
49
  return undefined;
53
50
  }
54
- function admitSchemaId(fingerprint) {
55
- if (typeof fingerprint !== "string" || !/^[0-9a-f]{64}$/.test(fingerprint)) {
56
- throw new SdkInvariantError({ message: "Schema.compile: the engine returned no canonical fingerprint" });
51
+ function explain(theory, diagnostic) {
52
+ if (diagnostic._tag === "Schema") {
53
+ const cited = [diagnostic.statement, diagnostic.conflict].flatMap((cite) => cite === undefined ? [] : [cite.spelling]);
54
+ return cited.length === 0 ? diagnostic.message : `${diagnostic.message} — ${cited.join("; ")}`;
57
55
  }
58
- return fingerprint;
56
+ const relations = Object.keys(theory.relations);
57
+ return diagnostic.issues
58
+ .map((issue) => {
59
+ const at = [
60
+ issue.relation === undefined ? undefined : `relation ${relations[issue.relation] ?? issue.relation}`,
61
+ issue.row === undefined ? undefined : `row ${issue.row}`,
62
+ issue.statement === undefined
63
+ ? undefined
64
+ : (() => {
65
+ const statement = theory.statements[issue.statement];
66
+ return statement === undefined ? `statement ${issue.statement}` : renderStatement(statement);
67
+ })()
68
+ ].filter((part) => part !== undefined);
69
+ return at.length === 0 ? issue.message : `${issue.message} — ${at.join(", ")}`;
70
+ })
71
+ .join("; ");
59
72
  }
60
- /**
61
- * Effectful native schema admission/compilation: a
62
- * schema declaration is pure metadata and never a claim its theory has been
63
- * admitted. Runs on the shared executor, requires the
64
- * acquired {@link NativeRuntime}, and yields detached immutable descriptor
65
- * data plus the canonical schema identity. No database is opened and no
66
- * native finalizer is created.
67
- */
68
- const compile = Effect.fn("Schema.compile")(function* (schema) {
69
- const owned = yield* Effect.try({
70
- try: () => schemaDescriptor(schema),
71
- catch: (cause) => argumentError("Schema.compile", cause)
72
- });
73
- const spec = yield* Effect.try({ try: () => lower(owned), catch: (cause) => argumentError("Schema.compile", cause) });
74
- const handle = yield* runtimeHandle();
75
- const descriptor = yield* nativeOperationWith("Schema.compile", (callback) => dbNative.runtimeSchemaCompile(handle, spec, callback), dbNative.runtimeSchemaTake, (value) => value);
76
- const ownedDescriptor = snapshotData(descriptor);
77
- const compiled = Object.freeze({
78
- get schema() {
79
- return snapshotData(owned);
80
- },
81
- schemaId: admitSchemaId(descriptor.fingerprint),
82
- get descriptor() {
83
- return snapshotData(ownedDescriptor);
73
+ const decodeSchemaId = EffectSchema.decodeUnknownOption(SchemaId);
74
+ /** Compiles `theory` with the engine; an engine refusal throws `AuthoringError`. */
75
+ function compileSchema(theory) {
76
+ const compiled = addon.compileSchema(JSON.stringify(lower(theory)));
77
+ switch (compiled._tag) {
78
+ case "Compiled": {
79
+ const schemaId = decodeSchemaId(compiled.descriptor.fingerprint);
80
+ if (schemaId._tag === "None")
81
+ throw internalError("compileSchema: the engine returned no fingerprint");
82
+ return Object.freeze({ handle: compiled.schema, descriptor: compiled.descriptor, schemaId: schemaId.value });
84
83
  }
85
- });
84
+ case "Invalid":
85
+ throw new AuthoringError({ message: `schema ${theory.name}: ${explain(theory, compiled.diagnostic)}` });
86
+ case "Malformed":
87
+ throw internalError(`compileSchema: ${compiled.path}: ${compiled.message}`);
88
+ }
89
+ }
90
+ const compiledSchemas = new WeakMap();
91
+ /** Records the compiled form of a schema value `schema()` produced. */
92
+ function registerCompiled(theory) {
93
+ compiledSchemas.set(theory, compileSchema(theory));
94
+ }
95
+ /** Whether `value` is a schema value `schema()` produced (and so has a compiled form). */
96
+ function isCompiledSchema(value) {
97
+ return typeof value === "object" && value !== null && compiledSchemas.has(value);
98
+ }
99
+ /** The engine's compiled form of `theory`; every schema value `schema()` produced has one. */
100
+ function compiledOf(theory) {
101
+ const compiled = compiledSchemas.get(theory);
102
+ if (compiled === undefined)
103
+ throw internalError("compiledOf: the schema was not produced by schema()");
86
104
  return compiled;
87
- });
88
- /**
89
- * The core `Schema` namespace (import as `BumbleSchema` when Effect Schema
90
- * is also in scope). The `Schema<Rels>` type remains the pure
91
- * declaration from `#schema.ts` (the local alias above); this value owns
92
- * the effectful half. One exported name, two meanings.
93
- */
94
- const Schema = Object.freeze({ compile });
95
- export { declaredKey, Schema, schemaTables };
105
+ }
106
+ export { compiledOf, declaredKey, isCompiledSchema, registerCompiled, SchemaId, schemaTables };
96
107
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}