@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
@@ -7,12 +7,22 @@
7
7
  *
8
8
  * Every field reference is checked against the relation it names in the
9
9
  * TYPE — existence through {@link FaceFields} (`on(R, "nope")` does not
10
- * compile) and DOMAIN compatibility through {@link SameDomains}: the two
11
- * faces' projected domain labels are read structurally off the schema type
12
- * (S1's `F["domain"]`) and constrained positionwise equal, so a
13
- * cross-domain pair is a compile error by string-literal comparison of
14
- * descriptor shapes never by a value brand (the structural design's
15
- * ratified check). What is only a SEMANTIC property the target side of a
10
+ * compile) and STRUCTURAL compatibility through {@link SameShapes}: the two
11
+ * faces' projected kind/width/element/roster quadruples are read off the
12
+ * schema type (the minimal kernel descriptors are pure structure) and
13
+ * constrained positionwise equal, so a u64 face against a str face, a
14
+ * bytes width mismatch, an interval element mismatch, or a bare column
15
+ * against a closed reference is a compile error. The ROSTER slot carries a
16
+ * construction-time runtime twin here ({@link assertRosterAgreement} —
17
+ * roster IDENTITY, positionwise: a closed vocabulary's referencing column
18
+ * is spelled with the vocabulary's own id descriptor, the ONE spelling, so
19
+ * a plain u64 column can never alias a vocabulary through a declared law
20
+ * and the SDK's descriptor-keyed closed judgments stay sound). Domains are
21
+ * NOT compared here — there is no domain to compare at construction: the
22
+ * statements themselves are what define the equivalence classes, and the
23
+ * domain wall lives where they aggregate — `schema()` (the
24
+ * one-generator-per-class law) and query joins (class names off the schema
25
+ * type). What is only a SEMANTIC property — the target side of a
16
26
  * containment resolving a declared key of its relation — is DELIBERATELY
17
27
  * not (and cannot be) stated here: whether `B(y)` is a key of `B` depends
18
28
  * on which `key()` statements the surrounding `schema()` collects, a set no
@@ -23,6 +33,66 @@
23
33
  import * as errors from "@superbuilders/errors";
24
34
  import { renderFace } from "#face.ts";
25
35
  import { renderWindow } from "#spec.ts";
36
+ /**
37
+ * The field descriptor one face position projects: an ordinary relation's
38
+ * declared field; a closed relation's SEALED shape — the synthetic `id`
39
+ * (the value's own roster-carrying descriptor, by identity) or a declared
40
+ * payload column. `undefined` when the name is foreign (the type tier makes
41
+ * that unwritable; the engine re-judges projections at `Db.create`).
42
+ */
43
+ function projectedFieldOf(face, fieldName) {
44
+ const owner = face.owner;
45
+ if ("axioms" in owner) {
46
+ if (fieldName === "id") {
47
+ return owner.id;
48
+ }
49
+ const column = owner.data.columns.find(function byName(candidate) {
50
+ return candidate.name === fieldName;
51
+ });
52
+ return column?.field;
53
+ }
54
+ const declared = owner.data.fields.find(function byName(candidate) {
55
+ return candidate.name === fieldName;
56
+ });
57
+ return declared?.field;
58
+ }
59
+ /** The roster a descriptor carries: present exactly on a closed reference, absent on every other kind. */
60
+ function rosterOfField(field) {
61
+ if (field !== undefined && "closed" in field) {
62
+ return field.closed;
63
+ }
64
+ return undefined;
65
+ }
66
+ /** Renders one face position's closedness for the roster-agreement diagnostics. */
67
+ function renderRosterSide(roster) {
68
+ return roster === undefined ? "a bare column" : `a ${roster.name} reference`;
69
+ }
70
+ /**
71
+ * The runtime twin of {@link SameShapes}'s roster slot: the two faces'
72
+ * projected descriptors must agree POSITIONWISE on closedness — the same
73
+ * roster (value identity — vocabulary identity is value identity, the
74
+ * SDK's membership rule everywhere) or none. Without this wall a plain u64
75
+ * column could alias a closed vocabulary through a declared containment
76
+ * (`docs/architecture/10-data-model.md` spells the ENGINE encoding that
77
+ * way), and every descriptor-keyed closed judgment — the orderable ban,
78
+ * the name↔id marshal, answer decode — would silently miss it. The
79
+ * vocabulary's own descriptor (`Kind.id`) is the ONE spelling of a closed
80
+ * reference at this surface (the canonical-utterance law); the engine
81
+ * cannot backstop this one — the wire carries plain u64s, no rosters.
82
+ */
83
+ function assertRosterAgreement(source, target, statement) {
84
+ source.projection.forEach(function agreeAt(fieldName, position) {
85
+ const targetField = target.projection[position];
86
+ if (targetField === undefined) {
87
+ return;
88
+ }
89
+ const sourceRoster = rosterOfField(projectedFieldOf(source, fieldName));
90
+ const targetRoster = rosterOfField(projectedFieldOf(target, targetField));
91
+ if (sourceRoster !== targetRoster) {
92
+ throw errors.new(`${source.owner.name}.${fieldName} is ${renderRosterSide(sourceRoster)} but ${target.owner.name}.${targetField} is ${renderRosterSide(targetRoster)} — closedness rides the descriptor: a closed reference is spelled with the vocabulary's own id descriptor (one meaning, one spelling), so faces pair closed-with-closed through one roster or bare-with-bare, never across — ${renderStatement(statement)}`);
93
+ }
94
+ });
95
+ }
26
96
  /**
27
97
  * `R(X) -> R` — the FD key form, composite keys as tuples. No selection
28
98
  * parameter exists (the FD-with-selection shape is unrepresentable, as in
@@ -31,7 +101,7 @@ import { renderWindow } from "#spec.ts";
31
101
  * explicit one would only ever be a duplicate. Every projected name is
32
102
  * checked against `R`'s field block in the type, and the tuple is carried
33
103
  * in the returned value's type ({@link KeyStatement}) — keyed point reads
34
- * through THIS statement are typed field-for-field, domains resolvable
104
+ * through THIS statement are typed field-for-field, descriptors resolvable
35
105
  * through the owner's schema type.
36
106
  */
37
107
  function key(relation, fields) {
@@ -47,12 +117,12 @@ function key(relation, fields) {
47
117
  }
48
118
  /**
49
119
  * `A(X|φ) <= B(Y|ψ)` — conditional inclusion, source left. Arity mismatch
50
- * between the two faces is a type error ({@link SameArity}); a cross-domain
51
- * pair is a type error ({@link SameDomains} — positionwise string-literal
52
- * equality of the projected S1 domain labels). The target side must
53
- * resolve a declared key of B — a SEMANTIC property of the whole statement
54
- * set that no face type can state, DELIBERATELY judged by the engine at
55
- * `Db.create`/`Db.open` (`SchemaError`), never re-checked here.
120
+ * between the two faces is a type error ({@link SameArity}); a structurally
121
+ * mismatched pair is a type error ({@link SameShapes} — positionwise
122
+ * equality of the projected kind/width/element triples). The target side
123
+ * must resolve a declared key of B — a SEMANTIC property of the whole
124
+ * statement set that no face type can state, DELIBERATELY judged by the
125
+ * engine at `Db.create`/`Db.open` (`SchemaError`), never re-checked here.
56
126
  */
57
127
  function contained(source, target) {
58
128
  const data = Object.freeze({
@@ -61,7 +131,9 @@ function contained(source, target) {
61
131
  target: target.data,
62
132
  bidirectional: false
63
133
  });
64
- return Object.freeze({ data });
134
+ const statement = Object.freeze({ data });
135
+ assertRosterAgreement(data.source, data.target, statement);
136
+ return statement;
65
137
  }
66
138
  /**
67
139
  * `A(X|φ) == B(Y|ψ)` — the bidirectional abbreviation, one utterance: the
@@ -69,8 +141,8 @@ function contained(source, target) {
69
141
  * two faces (each side contains the other). It lowers to the two adjacent
70
142
  * containments in the `A <= B` first order (macro parity — the engine
71
143
  * performs the split, source-first) and renders as `==` once, in the
72
- * written orientation. Faces pair by arity AND domain, exactly as
73
- * {@link contained}.
144
+ * written orientation. Faces pair by arity AND structural shape, exactly
145
+ * as {@link contained}.
74
146
  */
75
147
  function mirrors(source, target) {
76
148
  const data = Object.freeze({
@@ -79,7 +151,9 @@ function mirrors(source, target) {
79
151
  target: target.data,
80
152
  bidirectional: true
81
153
  });
82
- return Object.freeze({ data });
154
+ const statement = Object.freeze({ data });
155
+ assertRosterAgreement(data.source, data.target, statement);
156
+ return statement;
83
157
  }
84
158
  /**
85
159
  * `B(Y|ψ) <={window} A(X|φ)` — the cardinality window. READ CAREFULLY: the
@@ -87,8 +161,9 @@ function mirrors(source, target) {
87
161
  * target-left — macro parity), and the RIGHT face is the counted source.
88
162
  * `window(on(Holder, "id"), atMost(3n), on(Account, "holder"))` says: each
89
163
  * Holder id groups at most three Account rows by holder. The two faces
90
- * pair by arity AND domain ({@link SameDomains}), exactly as containment —
91
- * the grouping join reads the same positionwise field pairing.
164
+ * pair by arity AND structural shape ({@link SameShapes}), exactly as
165
+ * containment — the grouping join reads the same positionwise field
166
+ * pairing.
92
167
  */
93
168
  function window(target, count, source) {
94
169
  const data = Object.freeze({
@@ -97,7 +172,9 @@ function window(target, count, source) {
97
172
  window: count.window,
98
173
  source: source.data
99
174
  });
100
- return Object.freeze({ data });
175
+ const statement = Object.freeze({ data });
176
+ assertRosterAgreement(data.source, data.target, statement);
177
+ return statement;
101
178
  }
102
179
  /**
103
180
  * Renders one statement in the CANONICAL macro spelling
@@ -1 +1 @@
1
- {"version":3,"file":"statements.js","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statements.js","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bjornpagen/bumbledb",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Type-theoretic TypeScript SDK for the bumbledb embedded relational engine",
5
5
  "module": "dist/index.js",
6
6
  "main": "dist/index.js",
@@ -44,7 +44,7 @@
44
44
  "@superbuilders/errors": "^4.0.2"
45
45
  },
46
46
  "optionalDependencies": {
47
- "@bjornpagen/bumbledb-darwin-arm64": "0.2.0"
47
+ "@bjornpagen/bumbledb-darwin-arm64": "0.4.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@biomejs/biome": "^2.0.0-beta.5",