@bjornpagen/bumbledb 0.1.0 → 0.2.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 (103) hide show
  1. package/COOKBOOK.md +1394 -0
  2. package/README.md +4 -0
  3. package/dist/closed.d.ts +60 -37
  4. package/dist/closed.d.ts.map +1 -1
  5. package/dist/closed.js +159 -40
  6. package/dist/closed.js.map +1 -1
  7. package/dist/count.d.ts +64 -17
  8. package/dist/count.d.ts.map +1 -1
  9. package/dist/count.js +37 -14
  10. package/dist/count.js.map +1 -1
  11. package/dist/db.d.ts +15 -7
  12. package/dist/db.d.ts.map +1 -1
  13. package/dist/db.js +13 -5
  14. package/dist/db.js.map +1 -1
  15. package/dist/exhume.d.ts +12 -11
  16. package/dist/exhume.d.ts.map +1 -1
  17. package/dist/exhume.js +7 -6
  18. package/dist/exhume.js.map +1 -1
  19. package/dist/face.d.ts +79 -19
  20. package/dist/face.d.ts.map +1 -1
  21. package/dist/face.js +14 -15
  22. package/dist/face.js.map +1 -1
  23. package/dist/fields.d.ts +158 -129
  24. package/dist/fields.d.ts.map +1 -1
  25. package/dist/fields.js +80 -81
  26. package/dist/fields.js.map +1 -1
  27. package/dist/index.d.ts +21 -21
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +13 -12
  30. package/dist/index.js.map +1 -1
  31. package/dist/lower.d.ts +6 -3
  32. package/dist/lower.d.ts.map +1 -1
  33. package/dist/lower.js +48 -17
  34. package/dist/lower.js.map +1 -1
  35. package/dist/marshal.d.ts +36 -21
  36. package/dist/marshal.d.ts.map +1 -1
  37. package/dist/marshal.js +41 -25
  38. package/dist/marshal.js.map +1 -1
  39. package/dist/native.js +2 -2
  40. package/dist/query/atom.d.ts +332 -174
  41. package/dist/query/atom.d.ts.map +1 -1
  42. package/dist/query/atom.js +72 -172
  43. package/dist/query/atom.js.map +1 -1
  44. package/dist/query/lower.d.ts +295 -107
  45. package/dist/query/lower.d.ts.map +1 -1
  46. package/dist/query/lower.js +860 -388
  47. package/dist/query/lower.js.map +1 -1
  48. package/dist/query/predicate.d.ts +69 -88
  49. package/dist/query/predicate.d.ts.map +1 -1
  50. package/dist/query/predicate.js +118 -72
  51. package/dist/query/predicate.js.map +1 -1
  52. package/dist/query/run.d.ts +19 -16
  53. package/dist/query/run.d.ts.map +1 -1
  54. package/dist/query/run.js +31 -24
  55. package/dist/query/run.js.map +1 -1
  56. package/dist/query/scope.d.ts +139 -123
  57. package/dist/query/scope.d.ts.map +1 -1
  58. package/dist/query/scope.js +71 -115
  59. package/dist/query/scope.js.map +1 -1
  60. package/dist/query/select.d.ts +102 -80
  61. package/dist/query/select.d.ts.map +1 -1
  62. package/dist/query/select.js +39 -34
  63. package/dist/query/select.js.map +1 -1
  64. package/dist/relation.d.ts +33 -36
  65. package/dist/relation.d.ts.map +1 -1
  66. package/dist/relation.js +15 -16
  67. package/dist/relation.js.map +1 -1
  68. package/dist/schema.d.ts.map +1 -1
  69. package/dist/schema.js +19 -8
  70. package/dist/schema.js.map +1 -1
  71. package/dist/spec.d.ts +6 -5
  72. package/dist/spec.d.ts.map +1 -1
  73. package/dist/spec.js.map +1 -1
  74. package/dist/statements.d.ts +56 -31
  75. package/dist/statements.d.ts.map +1 -1
  76. package/dist/statements.js +38 -13
  77. package/dist/statements.js.map +1 -1
  78. package/package.json +4 -3
  79. package/src/closed.ts +271 -93
  80. package/src/count.ts +112 -18
  81. package/src/db.ts +22 -12
  82. package/src/exhume.ts +12 -11
  83. package/src/face.ts +114 -22
  84. package/src/fields.ts +261 -217
  85. package/src/index.ts +50 -59
  86. package/src/lower.ts +62 -20
  87. package/src/marshal.ts +48 -30
  88. package/src/native.ts +2 -2
  89. package/src/query/atom.ts +480 -376
  90. package/src/query/lower.ts +1341 -542
  91. package/src/query/predicate.ts +198 -161
  92. package/src/query/run.ts +35 -25
  93. package/src/query/scope.ts +188 -218
  94. package/src/query/select.ts +168 -93
  95. package/src/relation.ts +38 -44
  96. package/src/schema.ts +22 -12
  97. package/src/spec.ts +6 -5
  98. package/src/statements.ts +69 -26
  99. package/dist/brand.d.ts +0 -59
  100. package/dist/brand.d.ts.map +0 -1
  101. package/dist/brand.js +0 -47
  102. package/dist/brand.js.map +0 -1
  103. package/src/brand.ts +0 -82
package/dist/fields.js CHANGED
@@ -1,21 +1,36 @@
1
1
  /**
2
- * Field type constructors — the value half of the `schema!` field grammar
3
- * (`docs/architecture/70-api.md`): `bool`, `u64`, `i64`, `str`, `bytes(n)`,
4
- * `interval(u64|i64[, width])`, each a plain frozen value carrying its
5
- * structural type at runtime and its host value type in a phantom generic.
6
- * Newtypes are DECLARATION-FIRST, one spelling only (owner ruling
7
- * 2026-07-16): `const AccountId = u64.newtype("AccountId")` declares the
8
- * brand ONCE as a value that IS the field, paired with
9
- * `type AccountId = Infer<typeof AccountId>` for signatures; every field
10
- * position references the declared value (`holder: HolderId`). The macro's
11
- * refusals are reproduced representationally: `.newtype` exists only where
12
- * Rust's `as` is legal (u64, i64, bytes, intervals never bool/str),
13
- * `.fresh` exists only on declared u64 newtypes (the macro demands `as
14
- * NewType` on fresh fields), and no field-level constraint vocabulary of
15
- * any kind exists — `unique`/`fk` are unwritable, not rejected.
2
+ * Field descriptors — the value half of the `schema!` field grammar
3
+ * (`docs/architecture/70-api.md`), STRUCTURAL edition: `bool`, `u64`, `i64`,
4
+ * `str`, `bytes(n)`, `interval(u64|i64[, width])`, each a plain frozen value
5
+ * that IS its own descriptor type `{ kind, domain, fresh?, width?,
6
+ * element? }` honest at runtime and in the type alike. A field's VALUE
7
+ * type is its bare structural type (`u64` `bigint`, `str` → `string`,
8
+ * `bytes(n)` `Uint8Array`, intervals `{ start, end }`): no brands, no
9
+ * phantoms, no minting casts. The domain is a string LABEL in the
10
+ * descriptor type, attached by `.as("HolderId")` (the mirror of Rust's
11
+ * `as HolderId`); same-string domains link fields, and the relational
12
+ * builders (statements, queries) compare the labels structurallythe
13
+ * domain wall lives in the builders and the engine, never on the value.
14
+ * The macro's refusals are reproduced representationally: `.as` exists only
15
+ * where Rust's `as` is legal (u64, i64, bytes, intervals — never bool/str),
16
+ * `.fresh` exists only on u64 (bare or after `.as`), and no field-level
17
+ * constraint vocabulary of any kind exists — `unique`/`fk` are unwritable,
18
+ * not rejected.
16
19
  */
17
20
  import * as errors from "@superbuilders/errors";
18
- import { phantom } from "#brand.ts";
21
+ /**
22
+ * Constructs an interval literal — the `start..end` spelling. Half-open
23
+ * and nonempty by construction: `start >= end` is a typed construction
24
+ * error (parse, don't validate — the same invariant Rust's
25
+ * `Interval::new` enforces at the host boundary). The value is bare and
26
+ * structural: it is assignable to any interval field.
27
+ */
28
+ function span(start, end) {
29
+ if (start >= end) {
30
+ throw errors.new(`interval is half-open and nonempty: start must be < end (got ${start}..${end})`);
31
+ }
32
+ return Object.freeze({ start, end });
33
+ }
19
34
  /**
20
35
  * The typed shape refusal of the selection-literal machine — reached only
21
36
  * through ill-typed input (the well-typed surfaces make it unrepresentable).
@@ -33,10 +48,10 @@ function isIntervalLiteral(value) {
33
48
  typeof value.end === "bigint");
34
49
  }
35
50
  /**
36
- * Resolves one closed-handle literal: the branded id (a bigint at runtime)
37
- * back to its handle NAME through the roster — an out-of-roster id is a
38
- * construction error, the belt the type level cannot provide against
39
- * forged brands.
51
+ * Resolves one closed-handle literal: the handle id (a bare bigint) back to
52
+ * its handle NAME through the roster — an out-of-roster id is a
53
+ * construction error, the belt the type level deliberately does not provide
54
+ * (structural values make any bigint spellable here; the roster judges).
40
55
  */
41
56
  function handleLiteral(closed, value) {
42
57
  if (typeof value !== "bigint") {
@@ -73,82 +88,66 @@ function assertDeclarationOrderKey(where, name) {
73
88
  throw errors.new(`${where}: name ${name} is an integer index — JavaScript object keys re-order integer indices, breaking the declaration-order law; use a non-numeric name`);
74
89
  }
75
90
  }
76
- /**
77
- * Builds one frozen {@link FieldData}. Internal seam shared by the field
78
- * constructors here and by `closed()` (which mints {@link ClosedIdField}
79
- * values against its own roster).
80
- */
81
- function fieldData(type, newtype, minted, closed) {
82
- return Object.freeze({ type: Object.freeze(type), newtype, minted, closed });
91
+ /** Builds one fresh-marked u64 descriptor (the `.fresh` property of an unmarked one). */
92
+ function freshU64(domain) {
93
+ return Object.freeze({ kind: "u64", domain, fresh: true });
83
94
  }
84
- /** The one `u64` field constructor value. */
95
+ /** The one `u64` constructor value. */
85
96
  const u64 = Object.freeze({
86
- data: fieldData({ kind: "u64" }, undefined, false, undefined),
87
- newtype(name) {
88
- const fresh = Object.freeze({
89
- data: fieldData({ kind: "u64" }, name, true, undefined)
90
- });
91
- return Object.freeze({
92
- data: fieldData({ kind: "u64" }, name, false, undefined),
93
- fresh
94
- });
97
+ kind: "u64",
98
+ domain: undefined,
99
+ fresh: freshU64(undefined),
100
+ as(domain) {
101
+ return Object.freeze({ kind: "u64", domain, fresh: freshU64(domain) });
95
102
  }
96
103
  });
97
- /** The one `i64` field constructor value. */
104
+ /** The one `i64` constructor value. */
98
105
  const i64 = Object.freeze({
99
- data: fieldData({ kind: "i64" }, undefined, false, undefined),
100
- newtype(name) {
101
- return Object.freeze({ data: fieldData({ kind: "i64" }, name, false, undefined) });
106
+ kind: "i64",
107
+ domain: undefined,
108
+ as(domain) {
109
+ return Object.freeze({ kind: "i64", domain });
102
110
  }
103
111
  });
104
- /** The one `bool` field constructor value. */
105
- const bool = Object.freeze({
106
- data: fieldData({ kind: "bool" }, undefined, false, undefined)
107
- });
108
- /** The one `str` field constructor value. */
109
- const str = Object.freeze({
110
- data: fieldData({ kind: "string" }, undefined, false, undefined)
111
- });
112
+ /** The one `bool` constructor value. */
113
+ const bool = Object.freeze({ kind: "bool", domain: undefined });
114
+ /** The one `str` constructor value. */
115
+ const str = Object.freeze({ kind: "str", domain: undefined });
112
116
  /**
113
- * The `bytes<N>` field constructor. The width is mandatory and part of the
114
- * type; `len` is validated to 1..=64 here because the grammar pins that
115
- * range at declaration (`docs/architecture/70-api.md` § the `schema!`
116
- * grammar: N ∈ 1..=64 — bare `bytes` does not parse), the macro-expansion
117
- * boundary's analog being construction.
117
+ * The `bytes<N>` field constructor. The width is mandatory and a
118
+ * descriptor-type label; `width` is validated to 1..=64 here because the
119
+ * grammar pins that range at declaration (`docs/architecture/70-api.md`
120
+ * § the `schema!` grammar: N ∈ 1..=64 — bare `bytes` does not parse), the
121
+ * macro-expansion boundary's analog being construction.
118
122
  */
119
- function bytes(len) {
120
- if (!Number.isInteger(len) || len < 1 || len > 64) {
121
- throw errors.new(`bytes width must be an integer in 1..=64 (got ${len}) — docs/architecture/70-api.md pins the range at declaration`);
123
+ function bytes(width) {
124
+ if (!Number.isInteger(width) || width < 1 || width > 64) {
125
+ throw errors.new(`bytes width must be an integer in 1..=64 (got ${width}) — docs/architecture/70-api.md pins the range at declaration`);
122
126
  }
123
127
  return Object.freeze({
124
- data: fieldData({ kind: "fixedBytes", len }, undefined, false, undefined),
125
- newtype(name) {
126
- return Object.freeze({ data: fieldData({ kind: "fixedBytes", len }, name, false, undefined) });
128
+ kind: "bytes",
129
+ width,
130
+ domain: undefined,
131
+ as(domain) {
132
+ return Object.freeze({ kind: "bytes", width, domain });
127
133
  }
128
134
  });
129
135
  }
130
- /**
131
- * The interval field constructor — `interval(u64)` / `interval(i64)` for
132
- * the general type (rays representable), `interval(u64, w)` for the
133
- * fixed-width family whose width IS the type. The element is spelled with
134
- * the u64/i64 field constructor values themselves, never a string. `width
135
- * >= 1` is validated here because the grammar pins it at declaration
136
- * (`docs/architecture/70-api.md`: w ≥ 1; `interval<u64, 0>` is an
137
- * expansion error naming the field).
138
- */
139
136
  function interval(element, width) {
140
- const elementKind = element.data.type.kind;
137
+ const elementKind = element.kind;
141
138
  if (elementKind !== "u64" && elementKind !== "i64") {
142
139
  throw errors.new(`interval element must be the u64 or i64 field constructor (got ${elementKind})`);
143
140
  }
144
141
  if (width !== undefined && width < 1n) {
145
142
  throw errors.new(`interval width must be >= 1 (got ${width}) — docs/architecture/70-api.md pins w >= 1 at declaration`);
146
143
  }
147
- const type = { kind: "interval", element: elementKind, width };
148
144
  return Object.freeze({
149
- data: fieldData(type, undefined, false, undefined),
150
- newtype(name) {
151
- return Object.freeze({ data: fieldData(type, name, false, undefined) });
145
+ kind: "interval",
146
+ element: elementKind,
147
+ width,
148
+ domain: undefined,
149
+ as(domain) {
150
+ return Object.freeze({ kind: "interval", element: elementKind, width, domain });
152
151
  }
153
152
  });
154
153
  }
@@ -157,15 +156,15 @@ function interval(element, width) {
157
156
  * {@link LiteralSpec} — the selection-literal machine ground axioms and
158
157
  * `where()` bindings both ride (one machine, same errors — the macro's own
159
158
  * rule). A value on a closed-reference field resolves to its handle NAME
160
- * (the id is re-verified against the roster: an out-of-roster id is a
159
+ * (the id is verified against the roster: an out-of-roster id is a
161
160
  * construction error); everything else lowers to a plain value tagged by
162
- * the field's structural type.
161
+ * the field's structural kind.
163
162
  */
164
163
  function literalOf(field, value) {
165
- if (field.closed !== undefined) {
164
+ if ("closed" in field) {
166
165
  return handleLiteral(field.closed, value);
167
166
  }
168
- switch (field.type.kind) {
167
+ switch (field.kind) {
169
168
  case "bool": {
170
169
  if (typeof value !== "boolean") {
171
170
  throw literalShapeError("boolean", value);
@@ -184,21 +183,21 @@ function literalOf(field, value) {
184
183
  }
185
184
  return { kind: "value", value: { kind: "i64", value } };
186
185
  }
187
- case "string": {
186
+ case "str": {
188
187
  if (typeof value !== "string") {
189
188
  throw literalShapeError("string", value);
190
189
  }
191
190
  return { kind: "value", value: { kind: "string", value } };
192
191
  }
193
- case "fixedBytes": {
192
+ case "bytes": {
194
193
  if (!(value instanceof Uint8Array)) {
195
194
  throw literalShapeError("Uint8Array", value);
196
195
  }
197
196
  return { kind: "value", value: { kind: "fixedBytes", value } };
198
197
  }
199
198
  case "interval":
200
- return intervalLiteral(field.type.element, value);
199
+ return intervalLiteral(field.element, value);
201
200
  }
202
201
  }
203
- export { assertDeclarationOrderKey, bool, bytes, fieldData, i64, interval, literalOf, str, u64 };
202
+ export { assertDeclarationOrderKey, bool, bytes, i64, interval, literalOf, span, str, u64 };
204
203
  //# sourceMappingURL=fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAiB/C;;;;;;GAMG;AACH,SAAS,IAAI,CAAC,KAAa,EAAE,GAAW;IACvC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,GAAG,CAAC,gEAAgE,KAAK,KAAK,GAAG,GAAG,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AACrC,CAAC;AA4JD;;;GAGG;AACH,SAAS,iBAAiB,CAAC,QAAgB,EAAE,KAAc;IAC1D,OAAO,MAAM,CAAC,GAAG,CAAC,8CAA8C,QAAQ,SAAS,OAAO,KAAK,EAAE,CAAC,CAAA;AACjG,CAAC;AAED,yEAAyE;AACzE,SAAS,iBAAiB,CAAC,KAAc;IACxC,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,KAAK,IAAI,KAAK;QACd,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAC7B,CAAA;AACF,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,MAAoB,EAAE,KAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,iBAAiB,CAAC,KAAK,MAAM,CAAC,IAAI,qBAAqB,EAAE,KAAK,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,CAAC,GAAG,CACf,mBAAmB,MAAM,CAAC,IAAI,0BAA0B,KAAK,kBAAkB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CACvG,CAAA;IACF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AAClC,CAAC;AAED,uDAAuD;AACvD,SAAS,eAAe,CAAC,OAAsB,EAAE,KAAc;IAC9D,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,iBAAiB,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAA;IAC7F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAA;AAC7F,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,yBAAyB,CAAC,KAAa,EAAE,IAAY;IAC7D,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,GAAG,CACf,GAAG,KAAK,UAAU,IAAI,oIAAoI,CAC1J,CAAA;IACF,CAAC;AACF,CAAC;AAED,yFAAyF;AACzF,SAAS,QAAQ,CAAoC,MAAc;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAC3D,CAAC;AAED,uCAAuC;AACvC,MAAM,GAAG,GAAY,MAAM,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC1B,EAAE,CAA8B,MAAc;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;CACD,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,GAAG,GAAY,MAAM,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,SAAS;IACjB,EAAE,CAA8B,MAAc;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;CACD,CAAC,CAAA;AAEF,wCAAwC;AACxC,MAAM,IAAI,GAAc,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;AAE1E,uCAAuC;AACvC,MAAM,GAAG,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;AAEvE;;;;;;GAMG;AACH,SAAS,KAAK,CAA6B,KAAY;IACtD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACzD,MAAM,MAAM,CAAC,GAAG,CACf,iDAAiD,KAAK,+DAA+D,CACrH,CAAA;IACF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,OAAO;QACb,KAAK;QACL,MAAM,EAAE,SAAS;QACjB,EAAE,CAA8B,MAAc;YAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACvD,CAAC;KACD,CAAC,CAAA;AACH,CAAC;AAgBD,SAAS,QAAQ,CAAC,OAA0B,EAAE,KAAc;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAA;IAChC,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,MAAM,CAAC,GAAG,CAAC,kEAAkE,WAAW,GAAG,CAAC,CAAA;IACnG,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACvC,MAAM,MAAM,CAAC,GAAG,CACf,oCAAoC,KAAK,4DAA4D,CACrG,CAAA;IACF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,WAAW;QACpB,KAAK;QACL,MAAM,EAAE,SAAS;QACjB,EAAE,CAA8B,MAAc;YAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAChF,CAAC;KACD,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,KAAe,EAAE,KAAc;IACjD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAC1C,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAA;QACzD,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACzC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAA;QACxD,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACzC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAA;QACxD,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACzC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAA;QAC3D,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAA;QAC/D,CAAC;QACD,KAAK,UAAU;YACd,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;AACF,CAAC;AAoBD,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,20 +1,20 @@
1
1
  /**
2
2
  * @bjornpagen/bumbledb — the type-theoretic TypeScript SDK for the
3
- * bumbledb embedded relational engine. Public surface: the type kernel
4
- * (brands, fields, `relation()`, `closed()` — PRD-05), the statement
3
+ * bumbledb embedded relational engine. Public surface: the structural type
4
+ * kernel (fields with schema-level domain labels, `relation()`,
5
+ * `closed()`), the statement
5
6
  * algebra with `schema()` and `SchemaSpec` lowering (PRD-06), the `Db`
6
7
  * runtime (path-cached stores, transactions, typed violations, scoped
7
8
  * snapshot reads, the witnessed write loop with `abandon` — PRD-07, zero
8
- * closables), the query surface (Datalog as values: scoped vars/params,
9
- * atoms, negation, conditions, aggregates, engine recursion via predicates,
10
- * `db.prepare` as a plain value PRD-08), and the exhume surface
9
+ * closables), the query surface (Datalog as values, kysely-shaped:
10
+ * `query(S).rule(r => r.match(...).where(...).select(...))` with
11
+ * string-named domain-typed vars, params typed by use, negation,
12
+ * conditions, aggregates, and stratified recursion via `program()`/`rec` —
13
+ * `db.prepare` as a plain value), and the exhume surface
11
14
  * (`Db.exhume` — the one schema-independent read path: the store's
12
- * self-described shapes and raw facts by name, deliberately untyped
13
- * course-serialization PRD-02). The raw native bridge is not exported (the
14
- * PRD-03 stub died here as scheduled).
15
+ * self-described shapes and raw facts by name, typed at bare structural
16
+ * values, deliberately schema-free). The raw native bridge is not exported.
15
17
  */
16
- export type { Brand, Interval, IntervalValue } from "#brand.ts";
17
- export { span } from "#brand.ts";
18
18
  export type { AnyClosed, AxiomRow, Axioms, Closed, ClosedColumn, ClosedCore, ClosedData, ClosedRow, PayloadField } from "#closed.ts";
19
19
  export { closed } from "#closed.ts";
20
20
  export type { Count } from "#count.ts";
@@ -23,27 +23,27 @@ export type { Abandon, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFac
23
23
  export { abandon, Db } from "#db.ts";
24
24
  export type { Exhumed, ExhumedAxiom, ExhumedDescriptor, ExhumedFact, ExhumedField, ExhumedRelation } from "#exhume.ts";
25
25
  export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
26
- export type { AnyFace, Arity, Face, FaceArityMismatch, FaceData, FaceFields, FaceOwner, FaceSource, OneOf, SameArity } from "#face.ts";
26
+ export type { AnyFace, Arity, Face, FaceArityMismatch, FaceData, FaceDomainMismatch, FaceDomains, FaceFields, FaceOwner, FaceSource, OneOf, SameArity, SameDomains } from "#face.ts";
27
27
  export { on, oneOf } from "#face.ts";
28
- export type { AnyField, BoolField, BytesField, BytesNewtype, ClosedIdField, ClosedRoster, Field, FieldData, FieldValue, FreshU64Newtype, I64Field, I64Newtype, Infer, IntervalField, IntervalNewtype, StrField, U64Field, U64Newtype } from "#fields.ts";
29
- export { bool, bytes, i64, interval, str, u64 } from "#fields.ts";
28
+ export type { AnyField, BoolField, BytesCtor, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Ctor, I64Field, Infer, IntervalCtor, IntervalField, IntervalValue, StrField, U64Ctor, U64Field } from "#fields.ts";
29
+ export { bool, bytes, i64, interval, span, str, u64 } from "#fields.ts";
30
30
  export { lower, lowerClosed, lowerRelation } from "#lower.ts";
31
31
  export type { KeyFact, Minted } from "#marshal.ts";
32
32
  export type { FactValue, OccurrenceDrift, ProgramIr, Staleness, StatementKindTag } from "#native.ts";
33
- export type { AnyBodyItem, AnyCondition, ComparisonItem, ConditionTreeItem, Duration, MatchAtom, MatchInput, TermInput } from "#query/atom.ts";
34
- export { ALLEN, allen, and, covers, duration, ge, gt, is, le, lt, match, ne, not, or } from "#query/atom.ts";
35
- export type { AnyQuery, Query, QueryBuild, QueryParams, QueryRow, Scope } from "#query/lower.ts";
33
+ export type { AnyCond, BindingInput, Cmp, MatchShape, NotAtom, RecData, RuleData, SelectColumn, Tree } from "#query/atom.ts";
34
+ export { ALLEN } from "#query/atom.ts";
35
+ export type { AnyQuery, AnyRuleValue, OutputRuleChain, OutputRuleScope, Query, QueryData, QueryParams, QueryRelation, QueryRow, QueryRuleChain, QueryRuleScope, QueryStart, RecRef, RecRuleChain, RecRuleScope, RuleValue, TermOps } from "#query/lower.ts";
36
36
  export { lowerQuery, query } from "#query/lower.ts";
37
- export type { Predicate, PredicateBindings, PredicateRuleInput, PredicateSelf } from "#query/predicate.ts";
38
- export type { MaskParam, Param, ParamSet, ParamsRecord, Var } from "#query/scope.ts";
39
- export type { Aggregate, RowOf, SelectShape } from "#query/select.ts";
40
- export { argmax, argmin, count, countDistinct, max, min, pack, sum } from "#query/select.ts";
37
+ export type { ProgramScope, Rec } from "#query/predicate.ts";
38
+ export { program } from "#query/predicate.ts";
39
+ export type { Duration, MaskParam, Param, ParamEntry, ParamsRecord, SetParam, Var } from "#query/scope.ts";
40
+ export type { Agg, SelectEntry } from "#query/select.ts";
41
41
  export type { AnyRelation, AnySelected, Fact, FieldRef, FieldRefs, FieldsShape, FreshKeys, InsertFact, Relation, RelationData, RelationField, RelationFields, Selected, SelectionBinding, SelectionInput } from "#relation.ts";
42
42
  export { relation } from "#relation.ts";
43
43
  export type { AnySchema, Schema, SchemaRelation, SchemaRelations } from "#schema.ts";
44
44
  export { schema } from "#schema.ts";
45
45
  export type { FieldSpec, LiteralSetSpec, LiteralSpec, RelationSpec, RowSpec, SchemaSpec, SideSpec, StatementSpec, ValueSpec, ValueTypeSpec, WindowSpec } from "#spec.ts";
46
46
  export { renderLiteral, renderLiteralSet, renderWindow } from "#spec.ts";
47
- export type { KeyStatement, Statement, StatementData } from "#statements.ts";
47
+ export type { KeyData, KeyStatement, Statement, StatementData } from "#statements.ts";
48
48
  export { contained, key, mirrors, renderStatement, window } from "#statements.ts";
49
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,29 +1,30 @@
1
1
  /**
2
2
  * @bjornpagen/bumbledb — the type-theoretic TypeScript SDK for the
3
- * bumbledb embedded relational engine. Public surface: the type kernel
4
- * (brands, fields, `relation()`, `closed()` — PRD-05), the statement
3
+ * bumbledb embedded relational engine. Public surface: the structural type
4
+ * kernel (fields with schema-level domain labels, `relation()`,
5
+ * `closed()`), the statement
5
6
  * algebra with `schema()` and `SchemaSpec` lowering (PRD-06), the `Db`
6
7
  * runtime (path-cached stores, transactions, typed violations, scoped
7
8
  * snapshot reads, the witnessed write loop with `abandon` — PRD-07, zero
8
- * closables), the query surface (Datalog as values: scoped vars/params,
9
- * atoms, negation, conditions, aggregates, engine recursion via predicates,
10
- * `db.prepare` as a plain value PRD-08), and the exhume surface
9
+ * closables), the query surface (Datalog as values, kysely-shaped:
10
+ * `query(S).rule(r => r.match(...).where(...).select(...))` with
11
+ * string-named domain-typed vars, params typed by use, negation,
12
+ * conditions, aggregates, and stratified recursion via `program()`/`rec` —
13
+ * `db.prepare` as a plain value), and the exhume surface
11
14
  * (`Db.exhume` — the one schema-independent read path: the store's
12
- * self-described shapes and raw facts by name, deliberately untyped
13
- * course-serialization PRD-02). The raw native bridge is not exported (the
14
- * PRD-03 stub died here as scheduled).
15
+ * self-described shapes and raw facts by name, typed at bare structural
16
+ * values, deliberately schema-free). The raw native bridge is not exported.
15
17
  */
16
- export { span } from "#brand.ts";
17
18
  export { closed } from "#closed.ts";
18
19
  export { atLeast, atMost, between, exactly, none } from "#count.ts";
19
20
  export { abandon, Db } from "#db.ts";
20
21
  export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
21
22
  export { on, oneOf } from "#face.ts";
22
- export { bool, bytes, i64, interval, str, u64 } from "#fields.ts";
23
+ export { bool, bytes, i64, interval, span, str, u64 } from "#fields.ts";
23
24
  export { lower, lowerClosed, lowerRelation } from "#lower.ts";
24
- export { ALLEN, allen, and, covers, duration, ge, gt, is, le, lt, match, ne, not, or } from "#query/atom.ts";
25
+ export { ALLEN } from "#query/atom.ts";
25
26
  export { lowerQuery, query } from "#query/lower.ts";
26
- export { argmax, argmin, count, countDistinct, max, min, pack, sum } from "#query/select.ts";
27
+ export { program } from "#query/predicate.ts";
27
28
  export { relation } from "#relation.ts";
28
29
  export { schema } from "#schema.ts";
29
30
  export { renderLiteral, renderLiteralSet, renderWindow } from "#spec.ts";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAYhC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAcnE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AASpC,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AAanB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAqBpC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAqB7D,OAAO,EACN,KAAK,EACL,KAAK,EACL,GAAG,EACH,MAAM,EACN,QAAQ,EACR,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,KAAK,EACL,EAAE,EACF,GAAG,EACH,EAAE,EACF,MAAM,gBAAgB,CAAA;AAUvB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AASnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAkB5F,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAcnC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAExE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAcnE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AASpC,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AAgBnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAmBpC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAqB7D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAoBtC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAoB7C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAcnC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAExE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/lower.d.ts CHANGED
@@ -19,9 +19,12 @@ declare function lowerRelation(relation: AnyRelation): RelationSpec;
19
19
  /**
20
20
  * Lowers one closed relation to its `RelationSpec` fragment: declared
21
21
  * intrinsic columns only (the engine materializes the synthetic `id`),
22
- * the relation's own name as its handle newtype, and the ground axioms in
23
- * declaration order (row id = index) the literals were already lowered
24
- * at `closed()` construction.
22
+ * the HANDLE DOMAIN as its handle newtype the `id` descriptor's own
23
+ * `` `${name}Id` `` label (Rust's `closed relation Kind as KindId`), the
24
+ * same string every referencing field carries, which is exactly how the
25
+ * engine resolves a handle literal back to its roster — and the ground
26
+ * axioms in declaration order (row id = index); the literals were already
27
+ * lowered at `closed()` construction.
25
28
  */
26
29
  declare function lowerClosed(member: AnyClosed): RelationSpec;
27
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAa,YAAY,EAAE,UAAU,EAA2B,MAAM,UAAU,CAAA;AAkD5F;;;GAGG;AACH,iBAAS,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,CAU1D;AAED;;;;;;GAMG;AACH,iBAAS,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAapD;AAED;;;;GAIG;AACH,iBAAS,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAQ5C;AAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAGX,YAAY,EACZ,UAAU,EAIV,MAAM,UAAU,CAAA;AA0FjB;;;GAGG;AACH,iBAAS,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,CAK1D;AAED;;;;;;;;;GASG;AACH,iBAAS,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAQpD;AAED;;;;GAIG;AACH,iBAAS,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAQ5C;AAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA"}
package/dist/lower.js CHANGED
@@ -14,6 +14,44 @@
14
14
  function isClosedMember(member) {
15
15
  return "handles" in member.data;
16
16
  }
17
+ /**
18
+ * Lowers one field descriptor's structural type to the wire
19
+ * {@link ValueTypeSpec}: the S1 kind tags map 1:1 onto the `ValueType`
20
+ * vocabulary (`str` spells `string`, `bytes` spells `fixedBytes` with its
21
+ * width label as `len`; intervals carry element and width labels through).
22
+ */
23
+ function valueTypeOf(field) {
24
+ switch (field.kind) {
25
+ case "bool":
26
+ return { kind: "bool" };
27
+ case "u64":
28
+ return { kind: "u64" };
29
+ case "i64":
30
+ return { kind: "i64" };
31
+ case "str":
32
+ return { kind: "string" };
33
+ case "bytes":
34
+ return { kind: "fixedBytes", len: field.width };
35
+ case "interval":
36
+ return { kind: "interval", element: field.element, width: field.width };
37
+ }
38
+ }
39
+ /**
40
+ * Lowers one field descriptor to its {@link FieldSpec}: the structural
41
+ * type, the DOMAIN label as the wire's `newtype` (the macro's `as NewType`
42
+ * name — carried for engine handle resolution, dropped at descriptor
43
+ * lowering, never fingerprinted), and the structural fresh mark (`fresh`
44
+ * is the literal `true` exactly on a fresh-marked u64 — on an unmarked one
45
+ * the property holds the marked descriptor, never `true`).
46
+ */
47
+ function lowerField(name, field) {
48
+ return {
49
+ name,
50
+ valueType: valueTypeOf(field),
51
+ newtype: field.domain,
52
+ fresh: "fresh" in field && field.fresh === true
53
+ };
54
+ }
17
55
  /** Lowers one face to a `SideSpec`: names only, σ as (field, set) pairs. */
18
56
  function lowerFace(face) {
19
57
  return {
@@ -56,36 +94,29 @@ function lowerStatement(statement) {
56
94
  * declaration order, `extension: undefined` (the option is the kind).
57
95
  */
58
96
  function lowerRelation(relation) {
59
- const fields = relation.data.fields.map(function lowerField(declared) {
60
- return {
61
- name: declared.name,
62
- valueType: declared.field.type,
63
- newtype: declared.field.newtype,
64
- fresh: declared.field.minted
65
- };
97
+ const fields = relation.data.fields.map(function lowerDeclared(declared) {
98
+ return lowerField(declared.name, declared.field);
66
99
  });
67
100
  return { name: relation.name, newtype: undefined, fields, extension: undefined };
68
101
  }
69
102
  /**
70
103
  * Lowers one closed relation to its `RelationSpec` fragment: declared
71
104
  * intrinsic columns only (the engine materializes the synthetic `id`),
72
- * the relation's own name as its handle newtype, and the ground axioms in
73
- * declaration order (row id = index) the literals were already lowered
74
- * at `closed()` construction.
105
+ * the HANDLE DOMAIN as its handle newtype the `id` descriptor's own
106
+ * `` `${name}Id` `` label (Rust's `closed relation Kind as KindId`), the
107
+ * same string every referencing field carries, which is exactly how the
108
+ * engine resolves a handle literal back to its roster — and the ground
109
+ * axioms in declaration order (row id = index); the literals were already
110
+ * lowered at `closed()` construction.
75
111
  */
76
112
  function lowerClosed(member) {
77
113
  const fields = member.data.columns.map(function lowerColumn(column) {
78
- return {
79
- name: column.name,
80
- valueType: column.field.type,
81
- newtype: column.field.newtype,
82
- fresh: false
83
- };
114
+ return lowerField(column.name, column.field);
84
115
  });
85
116
  const extension = member.data.rows.map(function lowerRow(row) {
86
117
  return { handle: row.handle, values: row.values };
87
118
  });
88
- return { name: member.name, newtype: member.name, fields, extension };
119
+ return { name: member.name, newtype: member.id.domain, fields, extension };
89
120
  }
90
121
  /**
91
122
  * Lowers a whole theory to the `SchemaSpec` the bridge takes: relations in
package/dist/lower.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lower.js","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lower.js","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"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"}