@bjornpagen/bumbledb 0.20.2 → 1.0.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 (192) hide show
  1. package/COOKBOOK.md +283 -1611
  2. package/README.md +156 -118
  3. package/dist/capacity.d.ts +16 -12
  4. package/dist/capacity.d.ts.map +1 -1
  5. package/dist/capacity.js +16 -48
  6. package/dist/capacity.js.map +1 -1
  7. package/dist/changes.d.ts +54 -0
  8. package/dist/changes.d.ts.map +1 -0
  9. package/dist/changes.js +245 -0
  10. package/dist/changes.js.map +1 -0
  11. package/dist/close.d.ts +24 -0
  12. package/dist/close.d.ts.map +1 -0
  13. package/dist/close.js +34 -0
  14. package/dist/close.js.map +1 -0
  15. package/dist/closed.d.ts +1 -3
  16. package/dist/closed.d.ts.map +1 -1
  17. package/dist/closed.js +24 -12
  18. package/dist/closed.js.map +1 -1
  19. package/dist/codec.d.ts +56 -0
  20. package/dist/codec.d.ts.map +1 -0
  21. package/dist/codec.js +289 -0
  22. package/dist/codec.js.map +1 -0
  23. package/dist/compile.d.ts +68 -0
  24. package/dist/compile.d.ts.map +1 -0
  25. package/dist/compile.js +75 -0
  26. package/dist/compile.js.map +1 -0
  27. package/dist/db-native.d.ts +170 -0
  28. package/dist/db-native.d.ts.map +1 -0
  29. package/dist/db-native.js +5 -0
  30. package/dist/db-native.js.map +1 -0
  31. package/dist/db.d.ts +101 -233
  32. package/dist/db.d.ts.map +1 -1
  33. package/dist/db.js +232 -1084
  34. package/dist/db.js.map +1 -1
  35. package/dist/errors.d.ts +57 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +32 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/face.d.ts.map +1 -1
  40. package/dist/face.js +2 -2
  41. package/dist/face.js.map +1 -1
  42. package/dist/fields.d.ts +65 -24
  43. package/dist/fields.d.ts.map +1 -1
  44. package/dist/fields.js +94 -24
  45. package/dist/fields.js.map +1 -1
  46. package/dist/index.d.ts +37 -32
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +17 -21
  49. package/dist/index.js.map +1 -1
  50. package/dist/internal/log.d.ts +24 -0
  51. package/dist/internal/log.d.ts.map +1 -0
  52. package/dist/internal/log.js +10 -0
  53. package/dist/internal/log.js.map +1 -0
  54. package/dist/law.d.ts +8 -13
  55. package/dist/law.d.ts.map +1 -1
  56. package/dist/law.js +6 -59
  57. package/dist/law.js.map +1 -1
  58. package/dist/lower.d.ts +0 -13
  59. package/dist/lower.d.ts.map +1 -1
  60. package/dist/lower.js +9 -17
  61. package/dist/lower.js.map +1 -1
  62. package/dist/migration.d.ts +33 -0
  63. package/dist/migration.d.ts.map +1 -0
  64. package/dist/migration.js +48 -0
  65. package/dist/migration.js.map +1 -0
  66. package/dist/native.d.ts +256 -301
  67. package/dist/native.d.ts.map +1 -1
  68. package/dist/native.js +65 -108
  69. package/dist/native.js.map +1 -1
  70. package/dist/query/atom.d.ts +24 -13
  71. package/dist/query/atom.d.ts.map +1 -1
  72. package/dist/query/atom.js +7 -3
  73. package/dist/query/atom.js.map +1 -1
  74. package/dist/query/compute.d.ts +68 -0
  75. package/dist/query/compute.d.ts.map +1 -0
  76. package/dist/query/compute.js +141 -0
  77. package/dist/query/compute.js.map +1 -0
  78. package/dist/query/find.d.ts +15 -8
  79. package/dist/query/find.d.ts.map +1 -1
  80. package/dist/query/find.js +6 -2
  81. package/dist/query/find.js.map +1 -1
  82. package/dist/query/lower.d.ts +23 -2
  83. package/dist/query/lower.d.ts.map +1 -1
  84. package/dist/query/lower.js +433 -80
  85. package/dist/query/lower.js.map +1 -1
  86. package/dist/query/parse-ir.d.ts.map +1 -1
  87. package/dist/query/parse-ir.js +17 -8
  88. package/dist/query/parse-ir.js.map +1 -1
  89. package/dist/query/run.d.ts +12 -2
  90. package/dist/query/run.d.ts.map +1 -1
  91. package/dist/query/run.js +26 -9
  92. package/dist/query/run.js.map +1 -1
  93. package/dist/query/scope.d.ts +47 -3
  94. package/dist/query/scope.d.ts.map +1 -1
  95. package/dist/query/scope.js +83 -19
  96. package/dist/query/scope.js.map +1 -1
  97. package/dist/relation.d.ts +3 -8
  98. package/dist/relation.d.ts.map +1 -1
  99. package/dist/relation.js +16 -10
  100. package/dist/relation.js.map +1 -1
  101. package/dist/result.d.ts +47 -0
  102. package/dist/result.d.ts.map +1 -0
  103. package/dist/result.js +50 -0
  104. package/dist/result.js.map +1 -0
  105. package/dist/rows.d.ts +69 -0
  106. package/dist/rows.d.ts.map +1 -0
  107. package/dist/rows.js +328 -0
  108. package/dist/rows.js.map +1 -0
  109. package/dist/runtime-codes.d.ts +2 -0
  110. package/dist/runtime-codes.d.ts.map +1 -0
  111. package/dist/runtime-codes.js +19 -0
  112. package/dist/runtime-codes.js.map +1 -0
  113. package/dist/runtime-errors.d.ts +106 -0
  114. package/dist/runtime-errors.d.ts.map +1 -0
  115. package/dist/runtime-errors.js +62 -0
  116. package/dist/runtime-errors.js.map +1 -0
  117. package/dist/runtime-native.d.ts +171 -0
  118. package/dist/runtime-native.d.ts.map +1 -0
  119. package/dist/runtime-native.js +5 -0
  120. package/dist/runtime-native.js.map +1 -0
  121. package/dist/runtime.d.ts +73 -0
  122. package/dist/runtime.d.ts.map +1 -0
  123. package/dist/runtime.js +293 -0
  124. package/dist/runtime.js.map +1 -0
  125. package/dist/scalar.d.ts +165 -0
  126. package/dist/scalar.d.ts.map +1 -0
  127. package/dist/scalar.js +344 -0
  128. package/dist/scalar.js.map +1 -0
  129. package/dist/schema.d.ts +1 -1
  130. package/dist/schema.d.ts.map +1 -1
  131. package/dist/schema.js +34 -37
  132. package/dist/schema.js.map +1 -1
  133. package/dist/shape.d.ts +28 -0
  134. package/dist/shape.d.ts.map +1 -0
  135. package/dist/shape.js +2 -0
  136. package/dist/shape.js.map +1 -0
  137. package/dist/spec.d.ts +27 -3
  138. package/dist/spec.d.ts.map +1 -1
  139. package/dist/spec.js +22 -1
  140. package/dist/spec.js.map +1 -1
  141. package/dist/statements.d.ts +16 -3
  142. package/dist/statements.d.ts.map +1 -1
  143. package/dist/statements.js +54 -28
  144. package/dist/statements.js.map +1 -1
  145. package/dist/uuid.d.ts +23 -0
  146. package/dist/uuid.d.ts.map +1 -0
  147. package/dist/uuid.js +54 -0
  148. package/dist/uuid.js.map +1 -0
  149. package/pack-provenance.json +7 -0
  150. package/package.json +12 -16
  151. package/src/capacity.ts +34 -54
  152. package/src/changes.ts +361 -0
  153. package/src/close.ts +53 -0
  154. package/src/closed.ts +25 -19
  155. package/src/codec.ts +379 -0
  156. package/src/compile.ts +149 -0
  157. package/src/db-native.ts +247 -0
  158. package/src/db.ts +461 -1632
  159. package/src/errors.ts +50 -0
  160. package/src/face.ts +2 -2
  161. package/src/fields.ts +182 -55
  162. package/src/index.ts +62 -126
  163. package/src/internal/log.ts +51 -0
  164. package/src/law.ts +13 -28
  165. package/src/lower.ts +9 -4
  166. package/src/migration.ts +69 -0
  167. package/src/native.ts +326 -487
  168. package/src/query/atom.ts +61 -25
  169. package/src/query/compute.ts +237 -0
  170. package/src/query/find.ts +31 -12
  171. package/src/query/lower.ts +531 -143
  172. package/src/query/parse-ir.ts +18 -13
  173. package/src/query/run.ts +32 -16
  174. package/src/query/scope.ts +140 -8
  175. package/src/relation.ts +17 -21
  176. package/src/result.ts +130 -0
  177. package/src/rows.ts +404 -0
  178. package/src/runtime-codes.ts +18 -0
  179. package/src/runtime-errors.ts +69 -0
  180. package/src/runtime-native.ts +242 -0
  181. package/src/runtime.ts +440 -0
  182. package/src/scalar.ts +560 -0
  183. package/src/schema.ts +35 -37
  184. package/src/shape.ts +31 -0
  185. package/src/spec.ts +33 -3
  186. package/src/statements.ts +75 -68
  187. package/src/uuid.ts +69 -0
  188. package/dist/marshal.d.ts +0 -44
  189. package/dist/marshal.d.ts.map +0 -1
  190. package/dist/marshal.js +0 -165
  191. package/dist/marshal.js.map +0 -1
  192. package/src/marshal.ts +0 -200
@@ -1,5 +1,5 @@
1
- import * as errors from "@superbuilders/errors";
2
1
  import { sealedFieldsOf } from "#closed.ts";
2
+ import { AuthoringError, SdkInvariantError } from "#errors.ts";
3
3
  import { rosterOf, signaturesAgree } from "#fields.ts";
4
4
  const term = Symbol("bumbledb.query.term");
5
5
  const inferred = Symbol("bumbledb.query.inferred");
@@ -17,33 +17,97 @@ function varsMinted(owner, record) {
17
17
  return Object.hasOwn(record, declared.name);
18
18
  });
19
19
  }
20
- /**
21
- * Mints a FRESH batch of query variables over an atom owner's
22
- * statically-known columns — one variable per sealed column
23
- * (`sealedFieldsOf`: a closed owner mints `id` first, then payload columns),
24
- * each frozen and each defined by OWN-property definition (object-protocol
25
- * column names must work, the `closed` precedent). Every `v` call mints
26
- * new objects, so two batches are two variables; property access within one
27
- * batch is stable by construction (the record is an eager frozen record,
28
- * never a Proxy). Variable identity is the object reference: destructure
29
- * what you need (`const { id, holder } = v(Account)`) and reuse a value
30
- * across binding positions to join.
31
- */
20
+ function isImportedSource(value) {
21
+ if (typeof value !== "object" || value === null || !("data" in value) || !("schema" in value)) {
22
+ return false;
23
+ }
24
+ const data = value.data;
25
+ return (typeof data === "object" &&
26
+ data !== null &&
27
+ "kind" in data &&
28
+ (data.kind === "cq" || data.kind === "reach") &&
29
+ "finds" in data);
30
+ }
31
+ const facadeBySource = new WeakMap();
32
+ const facadeByOwner = new WeakMap();
33
+ let importOrdinal = 0;
34
+ const importLabels = new WeakMap();
35
+ /** `.named(label)` registration — a diagnostic name, never a schema relation. */
36
+ function labelImport(source, label) {
37
+ importLabels.set(source, label);
38
+ }
39
+ function importFacadeOf(source) {
40
+ const cached = facadeBySource.get(source);
41
+ if (cached !== undefined) {
42
+ return cached;
43
+ }
44
+ importOrdinal += 1;
45
+ const name = importLabels.get(source) ?? `\u0000import:${importOrdinal}`;
46
+ const columns = new Map();
47
+ const fields = [];
48
+ for (const column of source.data.finds) {
49
+ if (column.slot === undefined) {
50
+ throw new AuthoringError({
51
+ message: `v(query): the imported head column ${column.name} carries no descriptor — the imported query is not a mintable relation expression`
52
+ });
53
+ }
54
+ columns.set(column.name, column);
55
+ fields.push(Object.freeze({ name: column.name, field: column.slot.field }));
56
+ }
57
+ const data = Object.freeze({ name, fields: Object.freeze(fields) });
58
+ const owner = Object.freeze({
59
+ name,
60
+ data,
61
+ where() {
62
+ throw new AuthoringError({
63
+ message: `imported query ${name}: an imported relation expression takes no selection — filter through where() in the consuming rule`
64
+ });
65
+ }
66
+ });
67
+ const facade = Object.freeze({ owner, source, columns });
68
+ facadeBySource.set(source, facade);
69
+ facadeByOwner.set(owner, facade);
70
+ return facade;
71
+ }
72
+ /** The import awareness the lowering's mint judgment reads. */
73
+ function importFacadeOfOwner(owner) {
74
+ return facadeByOwner.get(owner);
75
+ }
32
76
  function v(owner) {
77
+ if (isImportedSource(owner) && !("name" in owner)) {
78
+ const facade = importFacadeOf(owner);
79
+ const record = {};
80
+ for (const [columnName, column] of facade.columns) {
81
+ const slot = column.slot;
82
+ if (slot === undefined) {
83
+ throw new SdkInvariantError({ message: `v(query): facade column ${columnName} lost its slot` });
84
+ }
85
+ const variable = Object.freeze({
86
+ [term]: "var",
87
+ owner: facade.owner,
88
+ column: columnName,
89
+ field: slot.field,
90
+ label: `${facade.owner.name}.${columnName}`
91
+ });
92
+ Object.defineProperty(record, columnName, { value: variable, enumerable: true });
93
+ }
94
+ return Object.freeze(record);
95
+ }
96
+ const member = owner;
33
97
  const record = {};
34
- for (const declared of sealedFieldsOf(owner)) {
98
+ for (const declared of sealedFieldsOf(member)) {
35
99
  const variable = Object.freeze({
36
100
  [term]: "var",
37
- owner,
101
+ owner: member,
38
102
  column: declared.name,
39
103
  field: declared.field,
40
- label: `${owner.name}.${declared.name}`
104
+ label: `${member.name}.${declared.name}`
41
105
  });
42
106
  Object.defineProperty(record, declared.name, { value: variable, enumerable: true });
43
107
  }
44
108
  Object.freeze(record);
45
- if (!varsMinted(owner, record)) {
46
- throw errors.new(`v(${owner.name}): variable-record minting incomplete`);
109
+ if (!varsMinted(member, record)) {
110
+ throw new SdkInvariantError({ message: `v(${member.name}): variable-record minting incomplete` });
47
111
  }
48
112
  return record;
49
113
  }
@@ -101,5 +165,5 @@ function renderFieldKind(slot) {
101
165
  }
102
166
  return slot.class === undefined ? `${base} (bare)` : `${base} in class ${slot.class}`;
103
167
  }
104
- export { fieldAntiJoins, fieldJoins, headFieldJoins, inferred, isTerm, makeParam, makeSetParam, renderFieldKind, term, v };
168
+ export { fieldAntiJoins, fieldJoins, headFieldJoins, importFacadeOf, importFacadeOfOwner, inferred, isImportedSource, isTerm, labelImport, makeParam, makeSetParam, renderFieldKind, term, v };
105
169
  //# sourceMappingURL=scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/query/scope.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@
8
8
  * NAME everywhere — statements (`on(R, "holder")`), selections, and match
9
9
  * records all spell the field's own name, checked by type
10
10
  * (`FaceFields`/`MatchShape`). `Fact<>` is the inferred row object type
11
- * at BARE structural value types (no brands): every field is present,
12
- * including fresh cells. Mint with `tx.reserve` before insert.
11
+ * at BARE structural value types: every field is present. Identities are
12
+ * ordinary application-owned values (`Uuid`); the database mints none.
13
13
  */
14
14
  import { type AnyField, type Infer } from "./fields.js";
15
15
  import { type LiteralSetSpec } from "./spec.js";
@@ -48,12 +48,7 @@ type RelationFields<R extends AnyRelation> = R extends Relation<string, infer F
48
48
  type Fact<R extends AnyRelation> = {
49
49
  [K in keyof RelationFields<R>]: Infer<RelationFields<R>[K]>;
50
50
  };
51
- type FreshKeys<R extends AnyRelation> = {
52
- [K in keyof RelationFields<R>]: RelationFields<R>[K] extends {
53
- readonly fresh: true;
54
- } ? K : never;
55
- }[keyof RelationFields<R>];
56
51
  declare function relation<const Name extends string, Fields extends FieldsShape>(name: Name, fields: Fields): Relation<Name, Fields>;
57
- export type { AnyRelation, AnySelected, Fact, FieldsShape, FreshKeys, Relation, RelationData, RelationField, RelationFields, Selected, SelectionBinding, SelectionInput };
52
+ export type { AnyRelation, AnySelected, Fact, FieldsShape, Relation, RelationData, RelationField, RelationFields, Selected, SelectionBinding, SelectionInput };
58
53
  export { relation, resolveSelection };
59
54
  //# sourceMappingURL=relation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAsD,KAAK,KAAK,EAAa,MAAM,YAAY,CAAA;AACrH,OAAO,EAAE,KAAK,cAAc,EAAmC,MAAM,UAAU,CAAA;AA6B/E,iBAAS,gBAAgB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAChD,SAAS,gBAAgB,EAAE,CAsB7B;AAED,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAE3C,UAAU,aAAa;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CACxB;AAED,UAAU,YAAY;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;CACzC;AAED,UAAU,gBAAgB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;CAC5B;AAED,KAAK,cAAc,CAAC,MAAM,SAAS,WAAW,IAAI;IACjD,QAAQ,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;CAC7E,CAAA;AAED,UAAU,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,WAAW;IACjE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AAED,UAAU,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,WAAW;IACjE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;CAChE;AAED,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAEhD,UAAU,WAAW;IACpB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AAED,KAAK,cAAc,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEhH,KAAK,IAAI,CAAC,CAAC,SAAS,WAAW,IAAI;KACjC,CAAC,IAAI,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAA;AAED,iBAAS,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,WAAW,EACtE,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACZ,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAuBxB;AAED,YAAY,EACX,WAAW,EACX,WAAW,EACX,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,CAAA;AACD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA"}
package/dist/relation.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { AuthoringError } from "#errors.ts";
1
2
  /**
2
3
  * `relation` — the ordinary-relation half of the theory's signature. A
3
4
  * relation value is a frozen plain object carrying its name, its ordered
@@ -8,25 +9,28 @@
8
9
  * NAME everywhere — statements (`on(R, "holder")`), selections, and match
9
10
  * records all spell the field's own name, checked by type
10
11
  * (`FaceFields`/`MatchShape`). `Fact<>` is the inferred row object type
11
- * at BARE structural value types (no brands): every field is present,
12
- * including fresh cells. Mint with `tx.reserve` before insert.
12
+ * at BARE structural value types: every field is present. Identities are
13
+ * ordinary application-owned values (`Uuid`); the database mints none.
13
14
  */
14
- import * as errors from "@superbuilders/errors";
15
15
  import { assertDeclarationOrderKey, assertDeclarationRecord, literalOf } from "#fields.ts";
16
16
  import { renderLiteral } from "#spec.ts";
17
17
  function resolveEntry(context, field, entry) {
18
18
  if (Array.isArray(entry)) {
19
19
  if (entry.length < 2) {
20
- throw errors.new(entry.length === 0
21
- ? `${context}: an empty literal set selects nothing — write the selection you mean`
22
- : `${context}: a one-element literal set is the bare literal respelled — write the literal (the canonical-utterance law: one meaning, one spelling)`);
20
+ throw new AuthoringError({
21
+ message: entry.length === 0
22
+ ? `${context}: an empty literal set selects nothing — write the selection you mean`
23
+ : `${context}: a one-element literal set is the bare literal respelled — write the literal (the canonical-utterance law: one meaning, one spelling)`
24
+ });
23
25
  }
24
26
  const seen = new Set();
25
27
  const literals = entry.map(function lowerSetLiteral(literal) {
26
28
  const lowered = Object.freeze(literalOf(field, literal));
27
29
  const rendered = renderLiteral(lowered);
28
30
  if (seen.has(rendered)) {
29
- throw errors.new(`${context}: the literal set spells ${rendered} twice — write it once (the canonical-utterance law: one meaning, one spelling)`);
31
+ throw new AuthoringError({
32
+ message: `${context}: the literal set spells ${rendered} twice — write it once (the canonical-utterance law: one meaning, one spelling)`
33
+ });
30
34
  }
31
35
  seen.add(rendered);
32
36
  return lowered;
@@ -45,12 +49,14 @@ function resolveSelection(name, ordered, entries) {
45
49
  return candidate.name === fieldName;
46
50
  });
47
51
  if (declared === undefined) {
48
- throw errors.new(`relation ${name} has no field ${fieldName}`);
52
+ throw new AuthoringError({ message: `relation ${name} has no field ${fieldName}` });
49
53
  }
50
54
  bindings.push(Object.freeze({ field: fieldName, set: resolveEntry(`relation ${name}.${fieldName}`, declared.field, entry) }));
51
55
  }
52
56
  if (bindings.length === 0) {
53
- throw errors.new(`relation ${name}: an empty selection is the bare relation respelled — pass the relation itself (the canonical-utterance law: one meaning, one spelling)`);
57
+ throw new AuthoringError({
58
+ message: `relation ${name}: an empty selection is the bare relation respelled — pass the relation itself (the canonical-utterance law: one meaning, one spelling)`
59
+ });
54
60
  }
55
61
  return Object.freeze(bindings);
56
62
  }
@@ -67,7 +73,7 @@ function relation(name, fields) {
67
73
  function where(selection) {
68
74
  const owner = holder.value;
69
75
  if (owner === undefined) {
70
- throw errors.new(`relation ${name}: self-reference read before construction completed`);
76
+ throw new AuthoringError({ message: `relation ${name}: self-reference read before construction completed` });
71
77
  }
72
78
  return Object.freeze({
73
79
  relation: owner,
@@ -1 +1 @@
1
- {"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Effect, Stream } from "effect";
2
+ import type { ResultHandle } from "./db-native.js";
3
+ import type { FindColumn } from "./query/atom.js";
4
+ import type { ExecutionPolicy } from "./runtime.js";
5
+ import type { CloseReport, DbError } from "./runtime-errors.js";
6
+ /**
7
+ * `CompleteResult<A>` — the sealed owner of one COMPLETED query answer
8
+ * (C05): published only after all evaluation/finalization succeeded,
9
+ * possibly backed by temporary LMDB scratch. Owned and independent of its
10
+ * source snapshot/session.
11
+ *
12
+ * `collect` materializes a bounded owned array and leaves the result
13
+ * available; it refuses (`ResourceLimit`) before allocating past
14
+ * `maxBytes`, and a cap failure leaves the sealed backing available for
15
+ * `pages`. `pages` is chapter 35's ONE-SHOT consuming stream over the
16
+ * completed result: its first execution atomically spends the result and
17
+ * moves the backing storage into a private cursor owned by the stream's
18
+ * scope — construction alone spends nothing, a second run fails
19
+ * `SpentHandle`, and a run after the result's scope closed fails
20
+ * `ClosedHandle`. Early take, downstream failure and interruption all
21
+ * close/drain the private cursor; EOF cleanup is identical. There is no
22
+ * public cursor, `next`, AsyncIterable, clone or second streaming API.
23
+ */
24
+ interface CompleteResult<A> {
25
+ collect(options: {
26
+ readonly maxBytes: bigint;
27
+ }, work: ExecutionPolicy): Effect.Effect<ReadonlyArray<A>, DbError>;
28
+ pages(options: {
29
+ readonly pageBytes: bigint;
30
+ }, work: ExecutionPolicy): Stream.Stream<ReadonlyArray<A>, DbError>;
31
+ close(): Effect.Effect<CloseReport>;
32
+ }
33
+ interface ResultInternal {
34
+ readonly handle: ResultHandle;
35
+ }
36
+ /** Private cross-module accessor (scope finalizers in db.ts reach the handle). */
37
+ declare function internalResult(value: object): ResultInternal | undefined;
38
+ /**
39
+ * Internal constructor: `db.ts` publishes results through this after
40
+ * execution completes. Delivery (`collect`/`pages`) starts a fresh bounded
41
+ * operation under the caller's delivery policy — never the completed query's
42
+ * expired execution deadline.
43
+ */
44
+ declare function makeCompleteResult<A>(handle: ResultHandle, finds: readonly FindColumn[]): CompleteResult<A>;
45
+ export type { CompleteResult };
46
+ export { internalResult, makeCompleteResult };
47
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAA;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE9D;;;;;;;;;;;;;;;;;GAiBG;AACH,UAAU,cAAc,CAAC,CAAC;IACzB,OAAO,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAChH,KAAK,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC/G,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAED,UAAU,cAAc;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC7B;AAID,kFAAkF;AAClF,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEjE;AAQD;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAoEpG;AAED,YAAY,EAAE,cAAc,EAAE,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAA"}
package/dist/result.js ADDED
@@ -0,0 +1,50 @@
1
+ import { Effect, Option, Stream } from "effect";
2
+ import { drainClose, releaseOwner } from "#close.ts";
3
+ import { dbNative } from "#db-native.ts";
4
+ import { decodeAnswers } from "#query/run.ts";
5
+ import { deliveryResultBytes, nativeOperationWith, policyWire } from "#runtime.ts";
6
+ const resultInternals = new WeakMap();
7
+ /** Private cross-module accessor (scope finalizers in db.ts reach the handle). */
8
+ function internalResult(value) {
9
+ return resultInternals.get(value);
10
+ }
11
+ function decodePage(finds, rows) {
12
+ // Owned ordinary records in declared column order — the same fields and
13
+ // shapes on every page (stable row shape; no Proxy, no per-row fiber).
14
+ return Object.freeze(decodeAnswers(finds, rows));
15
+ }
16
+ /**
17
+ * Internal constructor: `db.ts` publishes results through this after
18
+ * execution completes. Delivery (`collect`/`pages`) starts a fresh bounded
19
+ * operation under the caller's delivery policy — never the completed query's
20
+ * expired execution deadline.
21
+ */
22
+ function makeCompleteResult(handle, finds) {
23
+ function deliveryWire(operation, delivery, requested) {
24
+ return policyWire({ ...delivery, resultBytes: deliveryResultBytes(requested, delivery) }, operation);
25
+ }
26
+ const value = {
27
+ collect(options, work) {
28
+ return Effect.suspend(() => nativeOperationWith("CompleteResult.collect", (callback) => dbNative.runtimeResultCollect(handle, deliveryWire("CompleteResult.collect", work, options.maxBytes), callback), dbNative.runtimeRowsTake, (rows) => decodePage(finds, rows)));
29
+ },
30
+ pages(options, work) {
31
+ return Stream.unwrap(Effect.gen(function* () {
32
+ const cursor = yield* Effect.acquireRelease(nativeOperationWith("CompleteResult.pages", (callback) => dbNative.runtimeResultCursor(handle, deliveryWire("CompleteResult.pages", work, options.pageBytes), callback), dbNative.runtimeCursorTake, (taken) => taken), (taken) => releaseOwner("ResultCursor.close", (callback) => dbNative.runtimeCursorClose(taken, callback)), { interruptible: true });
33
+ return Stream.paginate(undefined, () => nativeOperationWith("CompleteResult.page", (callback) => dbNative.runtimeCursorNext(cursor, deliveryWire("CompleteResult.page", work, options.pageBytes), callback), dbNative.runtimePageTake, (page) => page).pipe(Effect.map((page) => {
34
+ if (page === null) {
35
+ return [[], Option.none()];
36
+ }
37
+ return [[decodePage(finds, page)], Option.some(undefined)];
38
+ })));
39
+ }));
40
+ },
41
+ close() {
42
+ return drainClose("CompleteResult.close", (callback) => dbNative.runtimeResultClose(handle, callback));
43
+ }
44
+ };
45
+ Object.freeze(value);
46
+ resultInternals.set(value, { handle });
47
+ return value;
48
+ }
49
+ export { internalResult, makeCompleteResult };
50
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
package/dist/rows.d.ts ADDED
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The successor row codec: fact object ⇄ positional cell array by field
3
+ * ordinal, schema-directed, in ONE place. The write side lowers named host
4
+ * objects to rows in the relation's field-declaration order (declaration
5
+ * order = ordinal ids); the read side decodes owned rows back to named
6
+ * objects of BARE structural values. This module is the one fact⇄row
7
+ * projector. It covers the COMPLETE successor value roster: bool, u64, i64,
8
+ * f64, uuid, str, bytes<N>, discrete intervals and dense float intervals,
9
+ * plus the closed-handle bijection (name ⇄ declaration-order row id).
10
+ *
11
+ * Cells here are OWNED plain host values; the native boundary re-judges
12
+ * every crossing against its resident sealed roster. Shape misuse throws
13
+ * the pure {@link AuthoringError}; the Effect ingestion boundary catches
14
+ * and types it (never an untracked partial draft). SharedArrayBuffer-backed
15
+ * views are refused before any copy. Host length is judged before string
16
+ * scans and byte copies (TS-004).
17
+ */
18
+ import type { AnyClosedRoster, AnyField } from "./fields.js";
19
+ import type { AnyRelation, Fact, RelationData } from "./relation.js";
20
+ /**
21
+ * One owned cell at the private bridge boundary. The declared sealed field
22
+ * type disambiguates the union: `string` is text, an `uuid` in its
23
+ * canonical hyphenated UUID spelling (chapter 35), or a closed handle
24
+ * before lowering (closed handles cross as `bigint` row ids),
25
+ * `Uint8Array` is `bytes<N>`, `{ start, end }` bigints are a discrete
26
+ * interval and numbers a dense float interval.
27
+ */
28
+ type CellValue = boolean | bigint | number | string | Uint8Array | {
29
+ readonly start: bigint;
30
+ readonly end: bigint;
31
+ } | {
32
+ readonly start: number;
33
+ readonly end: number;
34
+ };
35
+ interface FlatRows {
36
+ readonly rows: bigint;
37
+ readonly cells: readonly CellValue[];
38
+ /** Conservative charged byte size of the owned cells (input accounting). */
39
+ readonly bytes: bigint;
40
+ }
41
+ declare function recordOf(fact: object): Readonly<Record<string, unknown>>;
42
+ /**
43
+ * Cheap host charge before any string scan or byte copy (TS-004). UTF-16
44
+ * code units × 2 upper-bounds UTF-8; byte views charge their length.
45
+ */
46
+ declare function hostCellCharge(value: unknown): bigint;
47
+ declare function assertHostCellFits(context: string, value: unknown, limit: bigint): bigint;
48
+ declare function handleOf(context: string, closed: AnyClosedRoster, cell: unknown): string;
49
+ /** Conservative owned-byte charge of one cell (host accounting, not wire). */
50
+ declare function cellBytes(cell: CellValue): bigint;
51
+ declare function cellOf(context: string, field: AnyField, value: unknown): CellValue;
52
+ /**
53
+ * The flat projector: every fact's cells land in ONE row-major cell array
54
+ * (length rows × arity) with the row count and charged byte size counted
55
+ * while projecting. Missing-field refusal and per-cell judgment are
56
+ * {@link cellOf}'s, byte for byte.
57
+ */
58
+ declare function flatRowsOf(data: RelationData, facts: Iterable<object>): FlatRows;
59
+ declare function keyCellsOf(data: RelationData, projection: readonly string[], key: Readonly<Record<string, unknown>>): CellValue[];
60
+ declare function decodeCell(context: string, field: AnyField, cell: unknown): unknown;
61
+ /**
62
+ * The read half: one owned positional row into a plain frozen record in
63
+ * declared field order — the SAME fields and shapes on every row (chapter
64
+ * 35's stable row shape rule; no Proxy, no per-cell closures).
65
+ */
66
+ declare function factOfCells<R extends AnyRelation>(relation: R, row: readonly unknown[]): Fact<R>;
67
+ export type { CellValue, FlatRows };
68
+ export { assertHostCellFits, cellBytes, cellOf, decodeCell, factOfCells, flatRowsOf, handleOf, hostCellCharge, keyCellsOf, recordOf };
69
+ //# sourceMappingURL=rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../src/rows.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAMnE;;;;;;;GAOG;AACH,KAAK,SAAS,GACX,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnD,UAAU,QAAQ;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAKjE;AAUD;;;GAGG;AACH,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiB9C;AAED,iBAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlF;AAiBD,iBAAS,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAWjF;AAED,8EAA8E;AAC9E,iBAAS,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAiB1C;AAED,iBAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAqF3E;AAED;;;;;GAKG;AACH,iBAAS,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAkBzE;AAED,iBAAS,UAAU,CAClB,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACpC,SAAS,EAAE,CAyBb;AAED,iBAAS,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CA6D5E;AAWD;;;;GAIG;AACH,iBAAS,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAsBzF;AAED,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AACnC,OAAO,EACN,kBAAkB,EAClB,SAAS,EACT,MAAM,EACN,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,QAAQ,EACR,CAAA"}