@bjornpagen/bumbledb 0.2.0 → 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 (94) hide show
  1. package/COOKBOOK.md +503 -427
  2. package/README.md +84 -36
  3. package/dist/closed.d.ts +111 -38
  4. package/dist/closed.d.ts.map +1 -1
  5. package/dist/closed.js +94 -99
  6. package/dist/closed.js.map +1 -1
  7. package/dist/db.d.ts +16 -2
  8. package/dist/db.d.ts.map +1 -1
  9. package/dist/db.js +46 -8
  10. package/dist/db.js.map +1 -1
  11. package/dist/face.d.ts +114 -69
  12. package/dist/face.d.ts.map +1 -1
  13. package/dist/face.js +38 -21
  14. package/dist/face.js.map +1 -1
  15. package/dist/fields.d.ts +72 -87
  16. package/dist/fields.d.ts.map +1 -1
  17. package/dist/fields.js +35 -67
  18. package/dist/fields.js.map +1 -1
  19. package/dist/index.d.ts +18 -13
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +11 -7
  22. package/dist/index.js.map +1 -1
  23. package/dist/law.d.ts +224 -0
  24. package/dist/law.d.ts.map +1 -0
  25. package/dist/law.js +224 -0
  26. package/dist/law.js.map +1 -0
  27. package/dist/lower.d.ts +17 -10
  28. package/dist/lower.d.ts.map +1 -1
  29. package/dist/lower.js +34 -23
  30. package/dist/lower.js.map +1 -1
  31. package/dist/marshal.d.ts +33 -6
  32. package/dist/marshal.d.ts.map +1 -1
  33. package/dist/marshal.js +67 -6
  34. package/dist/marshal.js.map +1 -1
  35. package/dist/native.d.ts +6 -2
  36. package/dist/native.d.ts.map +1 -1
  37. package/dist/native.js.map +1 -1
  38. package/dist/query/atom.d.ts +139 -56
  39. package/dist/query/atom.d.ts.map +1 -1
  40. package/dist/query/atom.js +7 -1
  41. package/dist/query/atom.js.map +1 -1
  42. package/dist/query/lower.d.ts +71 -56
  43. package/dist/query/lower.d.ts.map +1 -1
  44. package/dist/query/lower.js +341 -69
  45. package/dist/query/lower.js.map +1 -1
  46. package/dist/query/predicate.d.ts +10 -9
  47. package/dist/query/predicate.d.ts.map +1 -1
  48. package/dist/query/predicate.js +2 -2
  49. package/dist/query/predicate.js.map +1 -1
  50. package/dist/query/run.d.ts +15 -5
  51. package/dist/query/run.d.ts.map +1 -1
  52. package/dist/query/run.js +26 -6
  53. package/dist/query/run.js.map +1 -1
  54. package/dist/query/scope.d.ts +100 -43
  55. package/dist/query/scope.d.ts.map +1 -1
  56. package/dist/query/scope.js +89 -30
  57. package/dist/query/scope.js.map +1 -1
  58. package/dist/query/select.d.ts +5 -5
  59. package/dist/query/select.d.ts.map +1 -1
  60. package/dist/relation.d.ts +29 -15
  61. package/dist/relation.d.ts.map +1 -1
  62. package/dist/relation.js +45 -17
  63. package/dist/relation.js.map +1 -1
  64. package/dist/schema.d.ts +41 -3
  65. package/dist/schema.d.ts.map +1 -1
  66. package/dist/schema.js +16 -2
  67. package/dist/schema.js.map +1 -1
  68. package/dist/spec.d.ts +10 -8
  69. package/dist/spec.d.ts.map +1 -1
  70. package/dist/spec.js.map +1 -1
  71. package/dist/statements.d.ts +67 -31
  72. package/dist/statements.d.ts.map +1 -1
  73. package/dist/statements.js +97 -20
  74. package/dist/statements.js.map +1 -1
  75. package/package.json +2 -2
  76. package/src/closed.ts +214 -146
  77. package/src/db.ts +65 -10
  78. package/src/face.ts +169 -102
  79. package/src/fields.ts +97 -164
  80. package/src/index.ts +43 -18
  81. package/src/law.ts +519 -0
  82. package/src/lower.ts +36 -23
  83. package/src/marshal.ts +74 -7
  84. package/src/native.ts +6 -2
  85. package/src/query/atom.ts +155 -65
  86. package/src/query/lower.ts +572 -167
  87. package/src/query/predicate.ts +43 -33
  88. package/src/query/run.ts +26 -6
  89. package/src/query/scope.ts +161 -51
  90. package/src/query/select.ts +5 -5
  91. package/src/relation.ts +60 -26
  92. package/src/schema.ts +48 -7
  93. package/src/spec.ts +10 -8
  94. package/src/statements.ts +165 -46
package/dist/fields.d.ts CHANGED
@@ -1,27 +1,24 @@
1
1
  /**
2
2
  * Field descriptors — the value half of the `schema!` field grammar
3
- * (`docs/architecture/70-api.md`), STRUCTURAL edition: `bool`, `u64`, `i64`,
3
+ * (`docs/architecture/70-api.md`), MINIMAL edition: `bool`, `u64`, `i64`,
4
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 structurally the
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.
5
+ * that IS its own descriptor type — `{ kind, width?, element?, fresh? }` —
6
+ * honest at runtime and in the type alike. A field's VALUE type is its bare
7
+ * structural type (`u64` → `bigint`, `str` → `string`, `bytes(n)` →
8
+ * `Uint8Array`, intervals → `{ start, end }`): no brands, no phantoms, no
9
+ * minting casts. A descriptor carries STRUCTURE ONLY domains are never
10
+ * declared anywhere (the owner ruling: THE LAWS TYPE THE COLUMNS): a
11
+ * field's domain is COMPUTED by `schema()` from the statement list, where
12
+ * the dependencies themselves induce the equivalence classes. The macro's
13
+ * refusals are reproduced representationally: `.fresh` exists only on u64,
14
+ * and no field-level constraint vocabulary of any kind exists
15
+ * `unique`/`fk` are unwritable, not rejected.
19
16
  */
20
17
  import type { LiteralSpec } from "#spec.ts";
21
18
  /**
22
19
  * A half-open interval `[start, end)` as a plain value object — the ONE
23
- * interval value type, whatever the field's element domain or width label.
24
- * The ray is representable (`end` = the element domain's MAX_END); widths
20
+ * interval value type, whatever the field's element type or width label.
21
+ * The ray is representable (`end` = the element type's MAX_END); widths
25
22
  * and signedness are NOT modeled on the value — they are descriptor-type
26
23
  * labels the engine judges at the typed write boundary. Interval fields
27
24
  * derive no order (the Rust refusal, `docs/architecture/10-data-model.md`),
@@ -42,61 +39,51 @@ declare function span(start: bigint, end: bigint): IntervalValue;
42
39
  /**
43
40
  * A closed relation's roster as seen from a referencing field: the handle
44
41
  * namespace `where()` selections and ground axioms resolve bare handle ids
45
- * through (the macro's own rule: a handle is legal exactly on a field whose
46
- * domain is a closed relation's handle domain).
42
+ * through (the macro's own rule: a handle is legal exactly on a field that
43
+ * references a closed relation). The handle union is PRECISE — `H` carries
44
+ * the literal handle names in declaration order (the unbound `string`
45
+ * default exists only as the fallback where no roster is in scope); the
46
+ * runtime twin is the same frozen declaration-order array that was always
47
+ * there.
47
48
  */
48
- interface ClosedRoster {
49
+ interface ClosedRoster<H extends string = string> {
49
50
  readonly name: string;
50
- readonly handles: readonly string[];
51
+ readonly handles: readonly H[];
51
52
  }
52
- /** The `bool` field descriptor: value type `boolean`. No `.as`, no `.fresh` (macro parity). */
53
+ /** The `bool` field descriptor: value type `boolean`. No `.fresh` (macro parity). */
53
54
  interface BoolField {
54
55
  readonly kind: "bool";
55
- readonly domain: undefined;
56
56
  }
57
- /** The `str` field descriptor: value type `string`. No `.as`, no `.fresh` (macro parity). */
57
+ /** The `str` field descriptor: value type `string`. No `.fresh` (macro parity). */
58
58
  interface StrField {
59
59
  readonly kind: "str";
60
- readonly domain: undefined;
61
60
  }
62
61
  /**
63
- * A `fresh`-marked u64 field descriptor — `id: u64.as("AccountId").fresh`
64
- * (Rust: `id: u64 as AccountId, fresh`). The mark is a structural label
65
- * (`fresh: true`) in the descriptor type AND on the runtime value; it
66
- * implies the key `R(field) -> R`, which the ENGINE materializes
67
- * (`SchemaDescriptor::materialized_statements`). Terminal: no builder
68
- * property survives the mark.
62
+ * A `fresh`-marked u64 field descriptor — `id: u64.fresh`. The mark is a
63
+ * structural label (`fresh: true`) in the descriptor type AND on the
64
+ * runtime value; it implies the key `R(field) -> R`, which the ENGINE
65
+ * materializes (`SchemaDescriptor::materialized_statements`), and it makes
66
+ * the field a GENERATOR — `schema()` names its equivalence class by the
67
+ * declaration coordinate (`"Account.id"`). Terminal: no builder property
68
+ * survives the mark.
69
69
  */
70
- interface FreshU64Field<Domain extends string | undefined = undefined> {
70
+ interface FreshU64Field {
71
71
  readonly kind: "u64";
72
- readonly domain: Domain;
73
72
  readonly fresh: true;
74
73
  }
75
74
  /**
76
- * A domain-labeled u64 field descriptor `const HolderId =
77
- * u64.as("HolderId")` (Rust: `u64 as HolderId`). The label lives in the
78
- * descriptor type only; the value type stays bare `bigint`. `.fresh` marks
79
- * the field as engine-minted — the property doubles as the mark itself:
80
- * on an unmarked descriptor it holds the marked descriptor, on a marked
81
- * one it IS the literal `true` (one structural property, read either way).
75
+ * The `u64` field descriptor. `.fresh` marks the field as engine-minted —
76
+ * the property doubles as the mark itself: on an unmarked descriptor it
77
+ * holds the marked descriptor, on a marked one it IS the literal `true`
78
+ * (one structural property, read either way).
82
79
  */
83
- interface U64Field<Domain extends string | undefined = undefined> {
80
+ interface U64Field {
84
81
  readonly kind: "u64";
85
- readonly domain: Domain;
86
- readonly fresh: FreshU64Field<Domain>;
82
+ readonly fresh: FreshU64Field;
87
83
  }
88
- /** The `u64` constructor value: a bare u64 descriptor plus `.as` (one application — `.as` is absent on the result). */
89
- interface U64Ctor extends U64Field<undefined> {
90
- as<const Domain extends string>(domain: Domain): U64Field<Domain>;
91
- }
92
- /** A domain-labeled i64 field descriptor. Terminal: `.fresh` is legal on u64 only. */
93
- interface I64Field<Domain extends string | undefined = undefined> {
84
+ /** The `i64` field descriptor. Terminal: `.fresh` is legal on u64 only. */
85
+ interface I64Field {
94
86
  readonly kind: "i64";
95
- readonly domain: Domain;
96
- }
97
- /** The `i64` constructor value: a bare i64 descriptor plus `.as`. */
98
- interface I64Ctor extends I64Field<undefined> {
99
- as<const Domain extends string>(domain: Domain): I64Field<Domain>;
100
87
  }
101
88
  /**
102
89
  * A `bytes<N>` field descriptor. The width is a descriptor-type label
@@ -104,14 +91,9 @@ interface I64Ctor extends I64Field<undefined> {
104
91
  * value type is bare `Uint8Array`. No order is derived — no comparators
105
92
  * exist on the value type (the engine refuses order on bytes).
106
93
  */
107
- interface BytesField<Width extends number = number, Domain extends string | undefined = undefined> {
94
+ interface BytesField<Width extends number = number> {
108
95
  readonly kind: "bytes";
109
96
  readonly width: Width;
110
- readonly domain: Domain;
111
- }
112
- /** A `bytes(n)` constructor value: a bare bytes descriptor plus `.as`. */
113
- interface BytesCtor<Width extends number = number> extends BytesField<Width, undefined> {
114
- as<const Domain extends string>(domain: Domain): BytesField<Width, Domain>;
115
97
  }
116
98
  /**
117
99
  * An interval field descriptor — `interval(i64)` general (rays
@@ -119,42 +101,46 @@ interface BytesCtor<Width extends number = number> extends BytesField<Width, und
119
101
  * width are descriptor-type labels; the value type is always the bare
120
102
  * {@link IntervalValue}.
121
103
  */
122
- interface IntervalField<Element extends "u64" | "i64" = "u64" | "i64", Width extends bigint | undefined = bigint | undefined, Domain extends string | undefined = undefined> {
104
+ interface IntervalField<Element extends "u64" | "i64" = "u64" | "i64", Width extends bigint | undefined = bigint | undefined> {
123
105
  readonly kind: "interval";
124
106
  readonly element: Element;
125
107
  readonly width: Width;
126
- readonly domain: Domain;
127
- }
128
- /** An `interval(e[, w])` constructor value: a bare interval descriptor plus `.as`. */
129
- interface IntervalCtor<Element extends "u64" | "i64" = "u64" | "i64", Width extends bigint | undefined = bigint | undefined> extends IntervalField<Element, Width, undefined> {
130
- as<const Domain extends string>(domain: Domain): IntervalField<Element, Width, Domain>;
131
108
  }
132
109
  /**
133
110
  * A closed relation's reference field descriptor (`Kind.id`) — a u64
134
- * descriptor whose domain is the closed relation's handle domain
135
- * (`"KindId"`, mirroring Rust's `closed relation Kind as KindId`) and
136
- * whose roster resolves bare handle ids in selections and ground axioms.
137
- * Terminal: no `.as`, no `.fresh` its domain IS the closed relation's.
111
+ * descriptor carrying the closed linkage: the roster resolves handle
112
+ * literals in selections and ground axioms, and `schema()` names the id's
113
+ * generator class `"Kind.id"`. The handle union `H` is the field's VALUE
114
+ * TYPE (see {@link Infer}); `kind: "u64"` stays load-bearing for the class
115
+ * map and JoinOk, which compare kind/class/width/element. Terminal: no
116
+ * `.fresh` — a vocabulary's rows are ground axioms, never minted.
138
117
  */
139
- interface ClosedIdField<Domain extends string = string> {
118
+ interface ClosedIdField<H extends string = string> {
140
119
  readonly kind: "u64";
141
- readonly domain: Domain;
142
- readonly closed: ClosedRoster;
120
+ readonly closed: ClosedRoster<H>;
143
121
  }
144
- /** Any field descriptor, whatever its kind, domain label, or marks. */
145
- type AnyField = BoolField | StrField | U64Field<string | undefined> | FreshU64Field<string | undefined> | I64Field<string | undefined> | BytesField<number, string | undefined> | IntervalField<"u64" | "i64", bigint | undefined, string | undefined> | ClosedIdField;
122
+ /** Any field descriptor, whatever its kind or marks. */
123
+ type AnyField = BoolField | StrField | U64Field | FreshU64Field | I64Field | BytesField | IntervalField | ClosedIdField;
146
124
  /**
147
125
  * The bare structural VALUE type of a field descriptor — the one total
148
126
  * definition every fact, result row, and query term reads: `bool` →
149
- * `boolean`, `str` → `string`, `u64`/`i64` → `bigint` (domain labels
150
- * included the label never touches the value), `bytes<N>`
151
- * `Uint8Array`, intervals {@link IntervalValue}.
127
+ * `boolean`, `str` → `string`, `u64`/`i64` → `bigint`, `bytes<N>`
128
+ * `Uint8Array`, intervals {@link IntervalValue}, and a closed reference
129
+ * its PRECISE handle union (`"DirectPass" | "Failed"` the string-literal
130
+ * union IS the value type at the TS surface; the engine keeps u64 row ids
131
+ * and the marshal owns the bijection). The closed arm precedes the `u64`
132
+ * arm because a closed reference is structurally a u64 descriptor plus the
133
+ * roster.
152
134
  */
153
135
  type Infer<F extends AnyField> = F extends {
154
136
  readonly kind: "bool";
155
137
  } ? boolean : F extends {
156
138
  readonly kind: "str";
157
139
  } ? string : F extends {
140
+ readonly closed: {
141
+ readonly handles: readonly (infer H extends string)[];
142
+ };
143
+ } ? H : F extends {
158
144
  readonly kind: "u64";
159
145
  } ? bigint : F extends {
160
146
  readonly kind: "i64";
@@ -175,9 +161,9 @@ type Infer<F extends AnyField> = F extends {
175
161
  */
176
162
  declare function assertDeclarationOrderKey(where: string, name: string): void;
177
163
  /** The one `u64` constructor value. */
178
- declare const u64: U64Ctor;
164
+ declare const u64: U64Field;
179
165
  /** The one `i64` constructor value. */
180
- declare const i64: I64Ctor;
166
+ declare const i64: I64Field;
181
167
  /** The one `bool` constructor value. */
182
168
  declare const bool: BoolField;
183
169
  /** The one `str` constructor value. */
@@ -189,7 +175,7 @@ declare const str: StrField;
189
175
  * § the `schema!` grammar: N ∈ 1..=64 — bare `bytes` does not parse), the
190
176
  * macro-expansion boundary's analog being construction.
191
177
  */
192
- declare function bytes<const Width extends number>(width: Width): BytesCtor<Width>;
178
+ declare function bytes<const Width extends number>(width: Width): BytesField<Width>;
193
179
  /**
194
180
  * The interval field constructor — `interval(u64)` / `interval(i64)` for
195
181
  * the general type (rays representable), `interval(u64, w)` for the
@@ -199,18 +185,17 @@ declare function bytes<const Width extends number>(width: Width): BytesCtor<Widt
199
185
  * (`docs/architecture/70-api.md`: w ≥ 1; `interval<u64, 0>` is an
200
186
  * expansion error naming the field).
201
187
  */
202
- declare function interval<Element extends U64Ctor | I64Ctor>(element: Element): IntervalCtor<Element["kind"], undefined>;
203
- declare function interval<Element extends U64Ctor | I64Ctor, const Width extends bigint>(element: Element, width: Width): IntervalCtor<Element["kind"], Width>;
188
+ declare function interval<Element extends U64Field | I64Field>(element: Element): IntervalField<Element["kind"], undefined>;
189
+ declare function interval<Element extends U64Field | I64Field, const Width extends bigint>(element: Element, width: Width): IntervalField<Element["kind"], Width>;
204
190
  /**
205
191
  * Lowers one host literal at its field position to the wire
206
192
  * {@link LiteralSpec} — the selection-literal machine ground axioms and
207
193
  * `where()` bindings both ride (one machine, same errors — the macro's own
208
- * rule). A value on a closed-reference field resolves to its handle NAME
209
- * (the id is verified against the roster: an out-of-roster id is a
210
- * construction error); everything else lowers to a plain value tagged by
211
- * the field's structural kind.
194
+ * rule). A value on a closed-reference field IS its handle NAME (verified
195
+ * against the roster: an unknown name is a construction error); everything
196
+ * else lowers to a plain value tagged by the field's structural kind.
212
197
  */
213
198
  declare function literalOf(field: AnyField, value: unknown): LiteralSpec;
214
- export type { AnyField, BoolField, BytesCtor, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Ctor, I64Field, Infer, IntervalCtor, IntervalField, IntervalValue, StrField, U64Ctor, U64Field };
199
+ export type { AnyField, BoolField, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Field, Infer, IntervalField, IntervalValue, StrField, U64Field };
215
200
  export { assertDeclarationOrderKey, bool, bytes, i64, interval, literalOf, span, str, u64 };
216
201
  //# sourceMappingURL=fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
package/dist/fields.js CHANGED
@@ -1,21 +1,18 @@
1
1
  /**
2
2
  * Field descriptors — the value half of the `schema!` field grammar
3
- * (`docs/architecture/70-api.md`), STRUCTURAL edition: `bool`, `u64`, `i64`,
3
+ * (`docs/architecture/70-api.md`), MINIMAL edition: `bool`, `u64`, `i64`,
4
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 structurally the
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.
5
+ * that IS its own descriptor type — `{ kind, width?, element?, fresh? }` —
6
+ * honest at runtime and in the type alike. A field's VALUE type is its bare
7
+ * structural type (`u64` → `bigint`, `str` → `string`, `bytes(n)` →
8
+ * `Uint8Array`, intervals → `{ start, end }`): no brands, no phantoms, no
9
+ * minting casts. A descriptor carries STRUCTURE ONLY domains are never
10
+ * declared anywhere (the owner ruling: THE LAWS TYPE THE COLUMNS): a
11
+ * field's domain is COMPUTED by `schema()` from the statement list, where
12
+ * the dependencies themselves induce the equivalence classes. The macro's
13
+ * refusals are reproduced representationally: `.fresh` exists only on u64,
14
+ * and no field-level constraint vocabulary of any kind exists
15
+ * `unique`/`fk` are unwritable, not rejected.
19
16
  */
20
17
  import * as errors from "@superbuilders/errors";
21
18
  /**
@@ -48,20 +45,22 @@ function isIntervalLiteral(value) {
48
45
  typeof value.end === "bigint");
49
46
  }
50
47
  /**
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).
48
+ * Resolves one closed-handle literal: the handle NAME, verified against the
49
+ * roster an unknown name is a construction error, the belt the wide
50
+ * fallback type deliberately does not provide (structural values make any
51
+ * string spellable here; the roster judges). The name IS the value at the
52
+ * TS surface (the drizzle law); the wire literal already crossed as
53
+ * `{ kind: "handle", handle }`, so the output — and every fingerprint
54
+ * derived from it — is untouched.
55
55
  */
56
56
  function handleLiteral(closed, value) {
57
- if (typeof value !== "bigint") {
58
- throw literalShapeError(`a ${closed.name} handle id (bigint)`, value);
57
+ if (typeof value !== "string") {
58
+ throw literalShapeError(`a ${closed.name} handle name (string)`, value);
59
59
  }
60
- const handle = closed.handles[Number(value)];
61
- if (handle === undefined) {
62
- throw errors.new(`closed relation ${closed.name} has no handle with id ${value} (roster holds ${closed.handles.length})`);
60
+ if (!closed.handles.includes(value)) {
61
+ throw errors.new(`"${value}" is not a handle of ${closed.name} — the roster is ${closed.handles.join(", ")}`);
63
62
  }
64
- return { kind: "handle", handle };
63
+ return { kind: "handle", handle: value };
65
64
  }
66
65
  /** Lowers one interval literal at its element type. */
67
66
  function intervalLiteral(element, value) {
@@ -88,31 +87,16 @@ function assertDeclarationOrderKey(where, name) {
88
87
  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`);
89
88
  }
90
89
  }
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 });
94
- }
90
+ /** The one fresh-marked u64 descriptor (the `.fresh` property of the unmarked one). */
91
+ const freshU64 = Object.freeze({ kind: "u64", fresh: true });
95
92
  /** The one `u64` constructor value. */
96
- const u64 = Object.freeze({
97
- kind: "u64",
98
- domain: undefined,
99
- fresh: freshU64(undefined),
100
- as(domain) {
101
- return Object.freeze({ kind: "u64", domain, fresh: freshU64(domain) });
102
- }
103
- });
93
+ const u64 = Object.freeze({ kind: "u64", fresh: freshU64 });
104
94
  /** The one `i64` constructor value. */
105
- const i64 = Object.freeze({
106
- kind: "i64",
107
- domain: undefined,
108
- as(domain) {
109
- return Object.freeze({ kind: "i64", domain });
110
- }
111
- });
95
+ const i64 = Object.freeze({ kind: "i64" });
112
96
  /** The one `bool` constructor value. */
113
- const bool = Object.freeze({ kind: "bool", domain: undefined });
97
+ const bool = Object.freeze({ kind: "bool" });
114
98
  /** The one `str` constructor value. */
115
- const str = Object.freeze({ kind: "str", domain: undefined });
99
+ const str = Object.freeze({ kind: "str" });
116
100
  /**
117
101
  * The `bytes<N>` field constructor. The width is mandatory and a
118
102
  * descriptor-type label; `width` is validated to 1..=64 here because the
@@ -124,14 +108,7 @@ function bytes(width) {
124
108
  if (!Number.isInteger(width) || width < 1 || width > 64) {
125
109
  throw errors.new(`bytes width must be an integer in 1..=64 (got ${width}) — docs/architecture/70-api.md pins the range at declaration`);
126
110
  }
127
- return Object.freeze({
128
- kind: "bytes",
129
- width,
130
- domain: undefined,
131
- as(domain) {
132
- return Object.freeze({ kind: "bytes", width, domain });
133
- }
134
- });
111
+ return Object.freeze({ kind: "bytes", width });
135
112
  }
136
113
  function interval(element, width) {
137
114
  const elementKind = element.kind;
@@ -141,24 +118,15 @@ function interval(element, width) {
141
118
  if (width !== undefined && width < 1n) {
142
119
  throw errors.new(`interval width must be >= 1 (got ${width}) — docs/architecture/70-api.md pins w >= 1 at declaration`);
143
120
  }
144
- return Object.freeze({
145
- kind: "interval",
146
- element: elementKind,
147
- width,
148
- domain: undefined,
149
- as(domain) {
150
- return Object.freeze({ kind: "interval", element: elementKind, width, domain });
151
- }
152
- });
121
+ return Object.freeze({ kind: "interval", element: elementKind, width });
153
122
  }
154
123
  /**
155
124
  * Lowers one host literal at its field position to the wire
156
125
  * {@link LiteralSpec} — the selection-literal machine ground axioms and
157
126
  * `where()` bindings both ride (one machine, same errors — the macro's own
158
- * rule). A value on a closed-reference field resolves to its handle NAME
159
- * (the id is verified against the roster: an out-of-roster id is a
160
- * construction error); everything else lowers to a plain value tagged by
161
- * the field's structural kind.
127
+ * rule). A value on a closed-reference field IS its handle NAME (verified
128
+ * against the roster: an unknown name is a construction error); everything
129
+ * else lowers to a plain value tagged by the field's structural kind.
162
130
  */
163
131
  function literalOf(field, value) {
164
132
  if ("closed" in field) {
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,42 +1,47 @@
1
1
  /**
2
2
  * @bjornpagen/bumbledb — the type-theoretic TypeScript SDK for the
3
3
  * bumbledb embedded relational engine. Public surface: the structural type
4
- * kernel (fields with schema-level domain labels, `relation()`,
5
- * `closed()`), the statement
6
- * algebra with `schema()` and `SchemaSpec` lowering (PRD-06), the `Db`
4
+ * kernel (fields as pure structure, `relation()`, `closed()` — domains are
5
+ * never declared: THE LAWS TYPE THE COLUMNS, `schema()` computing every
6
+ * field's equivalence class FROM the statement list at both tiers), the
7
+ * statement algebra with `schema()` and `SchemaSpec` lowering (PRD-06), the `Db`
7
8
  * runtime (path-cached stores, transactions, typed violations, scoped
8
9
  * snapshot reads, the witnessed write loop with `abandon` — PRD-07, zero
9
10
  * closables), the query surface (Datalog as values, kysely-shaped:
10
11
  * `query(S).rule(r => r.match(...).where(...).select(...))` with
11
12
  * string-named domain-typed vars, params typed by use, negation,
12
13
  * conditions, aggregates, and stratified recursion via `program()`/`rec` —
13
- * `db.prepare` as a plain value), and the exhume surface
14
+ * `db.prepare` as a plain value; the comparison/connective builders are
15
+ * also free exports, and the free names `eq`/`not`/`and`/`or` collide with
16
+ * common host identifiers — import aliasing is the answer; the SDK does
17
+ * not rename for collision-avoidance), and the exhume surface
14
18
  * (`Db.exhume` — the one schema-independent read path: the store's
15
19
  * self-described shapes and raw facts by name, typed at bare structural
16
20
  * values, deliberately schema-free). The raw native bridge is not exported.
17
21
  */
18
- export type { AnyClosed, AxiomRow, Axioms, Closed, ClosedColumn, ClosedCore, ClosedData, ClosedRow, PayloadField } from "#closed.ts";
22
+ export type { AnyClosed, AnySelectedClosed, AxiomRow, Axioms, Closed, ClosedColumn, ClosedCore, ClosedData, ClosedRow, ClosedSelectionInput, PayloadField, SelectedClosed } from "#closed.ts";
19
23
  export { closed } from "#closed.ts";
20
24
  export type { Count } from "#count.ts";
21
25
  export { atLeast, atMost, between, exactly, none } from "#count.ts";
22
26
  export type { Abandon, DeclaredKeyFact, DeltaBuild, MemberRelation, OffendingFact, Prepared, ReadScope, Tx, Violation, WitnessedWriteResult, WriteResult } from "#db.ts";
23
- export { abandon, Db } from "#db.ts";
27
+ export { abandon, Db, ErrNewtypeMismatch } from "#db.ts";
24
28
  export type { Exhumed, ExhumedAxiom, ExhumedDescriptor, ExhumedFact, ExhumedField, ExhumedRelation } from "#exhume.ts";
25
29
  export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
26
- export type { AnyFace, Arity, Face, FaceArityMismatch, FaceData, FaceDomainMismatch, FaceDomains, FaceFields, FaceOwner, FaceSource, OneOf, SameArity, SameDomains } from "#face.ts";
27
- export { on, oneOf } from "#face.ts";
28
- export type { AnyField, BoolField, BytesCtor, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Ctor, I64Field, Infer, IntervalCtor, IntervalField, IntervalValue, StrField, U64Ctor, U64Field } from "#fields.ts";
30
+ export type { AnyFace, Arity, Face, FaceArityMismatch, FaceData, FaceFields, FaceOwner, FaceShapeMismatch, FaceShapes, FaceSource, OwnerOf, SameArity, SameShapes } from "#face.ts";
31
+ export { on } from "#face.ts";
32
+ export type { AnyField, BoolField, BytesField, ClosedIdField, ClosedRoster, FreshU64Field, I64Field, Infer, IntervalField, IntervalValue, StrField, U64Field } from "#fields.ts";
29
33
  export { bool, bytes, i64, interval, span, str, u64 } from "#fields.ts";
34
+ export type { ClassesOf, ClassWall, LawfulStatements, RelationClasses, SchemaClasses } from "#law.ts";
30
35
  export { lower, lowerClosed, lowerRelation } from "#lower.ts";
31
36
  export type { KeyFact, Minted } from "#marshal.ts";
32
37
  export type { FactValue, OccurrenceDrift, ProgramIr, Staleness, StatementKindTag } from "#native.ts";
33
- export type { AnyCond, BindingInput, Cmp, MatchShape, NotAtom, RecData, RuleData, SelectColumn, Tree } from "#query/atom.ts";
34
- export { ALLEN } from "#query/atom.ts";
38
+ export type { AnyCond, BindingInput, Cmp, MatchFields, MatchOwner, MatchShape, NotAtom, RecData, RuleData, SelectColumn, Tree } from "#query/atom.ts";
39
+ export { ALLEN, allen, and, covers, eq, ge, gt, le, lt, ne, not, or, pointIn } from "#query/atom.ts";
35
40
  export type { AnyQuery, AnyRuleValue, OutputRuleChain, OutputRuleScope, Query, QueryData, QueryParams, QueryRelation, QueryRow, QueryRuleChain, QueryRuleScope, QueryStart, RecRef, RecRuleChain, RecRuleScope, RuleValue, TermOps } from "#query/lower.ts";
36
41
  export { lowerQuery, query } from "#query/lower.ts";
37
42
  export type { ProgramScope, Rec } from "#query/predicate.ts";
38
43
  export { program } from "#query/predicate.ts";
39
- export type { Duration, MaskParam, Param, ParamEntry, ParamsRecord, SetParam, Var } from "#query/scope.ts";
44
+ export type { ClassedField, Duration, MaskParam, Param, ParamEntry, ParamsRecord, SetParam, Var, VarsRecord } from "#query/scope.ts";
40
45
  export type { Agg, SelectEntry } from "#query/select.ts";
41
46
  export type { AnyRelation, AnySelected, Fact, FieldRef, FieldRefs, FieldsShape, FreshKeys, InsertFact, Relation, RelationData, RelationField, RelationFields, Selected, SelectionBinding, SelectionInput } from "#relation.ts";
42
47
  export { relation } from "#relation.ts";
@@ -44,6 +49,6 @@ export type { AnySchema, Schema, SchemaRelation, SchemaRelations } from "#schema
44
49
  export { schema } from "#schema.ts";
45
50
  export type { FieldSpec, LiteralSetSpec, LiteralSpec, RelationSpec, RowSpec, SchemaSpec, SideSpec, StatementSpec, ValueSpec, ValueTypeSpec, WindowSpec } from "#spec.ts";
46
51
  export { renderLiteral, renderLiteralSet, renderWindow } from "#spec.ts";
47
- export type { KeyData, KeyStatement, Statement, StatementData } from "#statements.ts";
52
+ export type { ContainedStatement, ContainmentData, KeyData, KeyStatement, Statement, StatementData, WindowData, WindowStatement } from "#statements.ts";
48
53
  export { contained, key, mirrors, renderStatement, window } from "#statements.ts";
49
54
  //# 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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,YAAY,EACX,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnE,YAAY,EACX,OAAO,EACP,eAAe,EACf,UAAU,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,SAAS,EACT,EAAE,EACF,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AACxD,YAAY,EACX,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EACX,OAAO,EACP,KAAK,EACL,IAAI,EACJ,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC7B,YAAY,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,EACL,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACvE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrG,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC7D,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EACX,SAAS,EACT,eAAe,EACf,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACX,OAAO,EACP,YAAY,EACZ,GAAG,EACH,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACpG,YAAY,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,KAAK,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACR,cAAc,EACd,cAAc,EACd,UAAU,EACV,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACnD,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,YAAY,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,GAAG,EACH,UAAU,EACV,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACxD,YAAY,EACX,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,YAAY,EACX,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACxE,YAAY,EACX,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/index.js CHANGED
@@ -1,28 +1,32 @@
1
1
  /**
2
2
  * @bjornpagen/bumbledb — the type-theoretic TypeScript SDK for the
3
3
  * bumbledb embedded relational engine. Public surface: the structural type
4
- * kernel (fields with schema-level domain labels, `relation()`,
5
- * `closed()`), the statement
6
- * algebra with `schema()` and `SchemaSpec` lowering (PRD-06), the `Db`
4
+ * kernel (fields as pure structure, `relation()`, `closed()` — domains are
5
+ * never declared: THE LAWS TYPE THE COLUMNS, `schema()` computing every
6
+ * field's equivalence class FROM the statement list at both tiers), the
7
+ * statement algebra with `schema()` and `SchemaSpec` lowering (PRD-06), the `Db`
7
8
  * runtime (path-cached stores, transactions, typed violations, scoped
8
9
  * snapshot reads, the witnessed write loop with `abandon` — PRD-07, zero
9
10
  * closables), the query surface (Datalog as values, kysely-shaped:
10
11
  * `query(S).rule(r => r.match(...).where(...).select(...))` with
11
12
  * string-named domain-typed vars, params typed by use, negation,
12
13
  * conditions, aggregates, and stratified recursion via `program()`/`rec` —
13
- * `db.prepare` as a plain value), and the exhume surface
14
+ * `db.prepare` as a plain value; the comparison/connective builders are
15
+ * also free exports, and the free names `eq`/`not`/`and`/`or` collide with
16
+ * common host identifiers — import aliasing is the answer; the SDK does
17
+ * not rename for collision-avoidance), and the exhume surface
14
18
  * (`Db.exhume` — the one schema-independent read path: the store's
15
19
  * self-described shapes and raw facts by name, typed at bare structural
16
20
  * values, deliberately schema-free). The raw native bridge is not exported.
17
21
  */
18
22
  export { closed } from "#closed.ts";
19
23
  export { atLeast, atMost, between, exactly, none } from "#count.ts";
20
- export { abandon, Db } from "#db.ts";
24
+ export { abandon, Db, ErrNewtypeMismatch } from "#db.ts";
21
25
  export { ErrExhumeCorruption, ErrExhumeFormatMismatch, ErrExhumeNoDescriptor } from "#exhume.ts";
22
- export { on, oneOf } from "#face.ts";
26
+ export { on } from "#face.ts";
23
27
  export { bool, bytes, i64, interval, span, str, u64 } from "#fields.ts";
24
28
  export { lower, lowerClosed, lowerRelation } from "#lower.ts";
25
- export { ALLEN } from "#query/atom.ts";
29
+ export { ALLEN, allen, and, covers, eq, ge, gt, le, lt, ne, not, or, pointIn } from "#query/atom.ts";
26
30
  export { lowerQuery, query } from "#query/lower.ts";
27
31
  export { program } from "#query/predicate.ts";
28
32
  export { relation } from "#relation.ts";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAgBH,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,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AASxD,OAAO,EACN,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AAgBnB,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAe7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAuB7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAoBpG,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA8B7C,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;AAWxE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA"}