@bjornpagen/bumbledb 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/COOKBOOK.md +176 -36
  2. package/README.md +70 -26
  3. package/dist/capacity.d.ts +15 -55
  4. package/dist/capacity.d.ts.map +1 -1
  5. package/dist/capacity.js +63 -12
  6. package/dist/capacity.js.map +1 -1
  7. package/dist/changes.d.ts +28 -6
  8. package/dist/changes.d.ts.map +1 -1
  9. package/dist/changes.js +119 -71
  10. package/dist/changes.js.map +1 -1
  11. package/dist/closed.d.ts +23 -51
  12. package/dist/closed.d.ts.map +1 -1
  13. package/dist/closed.js +110 -168
  14. package/dist/closed.js.map +1 -1
  15. package/dist/codec.d.ts +8 -14
  16. package/dist/codec.d.ts.map +1 -1
  17. package/dist/codec.js +113 -188
  18. package/dist/codec.js.map +1 -1
  19. package/dist/compile.d.ts +17 -18
  20. package/dist/compile.d.ts.map +1 -1
  21. package/dist/compile.js +41 -20
  22. package/dist/compile.js.map +1 -1
  23. package/dist/db-native.d.ts +76 -41
  24. package/dist/db-native.d.ts.map +1 -1
  25. package/dist/db-native.js +8 -0
  26. package/dist/db-native.js.map +1 -1
  27. package/dist/db.d.ts +61 -26
  28. package/dist/db.d.ts.map +1 -1
  29. package/dist/db.js +152 -85
  30. package/dist/db.js.map +1 -1
  31. package/dist/errors.d.ts +11 -3
  32. package/dist/errors.d.ts.map +1 -1
  33. package/dist/errors.js +13 -1
  34. package/dist/errors.js.map +1 -1
  35. package/dist/face.d.ts +19 -25
  36. package/dist/face.d.ts.map +1 -1
  37. package/dist/face.js +30 -24
  38. package/dist/face.js.map +1 -1
  39. package/dist/fields.d.ts +13 -26
  40. package/dist/fields.d.ts.map +1 -1
  41. package/dist/fields.js +89 -116
  42. package/dist/fields.js.map +1 -1
  43. package/dist/immutable.d.ts +10 -0
  44. package/dist/immutable.d.ts.map +1 -0
  45. package/dist/immutable.js +75 -0
  46. package/dist/immutable.js.map +1 -0
  47. package/dist/index.d.ts +16 -12
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +6 -4
  50. package/dist/index.js.map +1 -1
  51. package/dist/internal/log.d.ts +6 -4
  52. package/dist/internal/log.d.ts.map +1 -1
  53. package/dist/internal/log.js +3 -1
  54. package/dist/internal/log.js.map +1 -1
  55. package/dist/law.d.ts +11 -11
  56. package/dist/law.d.ts.map +1 -1
  57. package/dist/law.js +1 -1
  58. package/dist/law.js.map +1 -1
  59. package/dist/lower.d.ts.map +1 -1
  60. package/dist/lower.js +11 -6
  61. package/dist/lower.js.map +1 -1
  62. package/dist/migration.d.ts +2 -3
  63. package/dist/migration.d.ts.map +1 -1
  64. package/dist/migration.js +5 -5
  65. package/dist/migration.js.map +1 -1
  66. package/dist/native.d.ts +2 -2
  67. package/dist/native.d.ts.map +1 -1
  68. package/dist/native.js.map +1 -1
  69. package/dist/query/atom.d.ts +1 -1
  70. package/dist/query/atom.d.ts.map +1 -1
  71. package/dist/query/atom.js.map +1 -1
  72. package/dist/query/description.d.ts +33 -0
  73. package/dist/query/description.d.ts.map +1 -0
  74. package/dist/query/description.js +302 -0
  75. package/dist/query/description.js.map +1 -0
  76. package/dist/query/lower.d.ts +60 -4
  77. package/dist/query/lower.d.ts.map +1 -1
  78. package/dist/query/lower.js +126 -161
  79. package/dist/query/lower.js.map +1 -1
  80. package/dist/query/parse-ir.d.ts +7 -2
  81. package/dist/query/parse-ir.d.ts.map +1 -1
  82. package/dist/query/parse-ir.js +240 -53
  83. package/dist/query/parse-ir.js.map +1 -1
  84. package/dist/query/run.d.ts.map +1 -1
  85. package/dist/query/run.js +8 -10
  86. package/dist/query/run.js.map +1 -1
  87. package/dist/query/scope.d.ts +3 -4
  88. package/dist/query/scope.d.ts.map +1 -1
  89. package/dist/query/scope.js +5 -10
  90. package/dist/query/scope.js.map +1 -1
  91. package/dist/relation.d.ts +22 -48
  92. package/dist/relation.d.ts.map +1 -1
  93. package/dist/relation.js +30 -82
  94. package/dist/relation.js.map +1 -1
  95. package/dist/result.d.ts +10 -25
  96. package/dist/result.d.ts.map +1 -1
  97. package/dist/result.js +7 -12
  98. package/dist/result.js.map +1 -1
  99. package/dist/rows.d.ts +11 -14
  100. package/dist/rows.d.ts.map +1 -1
  101. package/dist/rows.js +49 -237
  102. package/dist/rows.js.map +1 -1
  103. package/dist/runtime-codes.d.ts +1 -1
  104. package/dist/runtime-codes.d.ts.map +1 -1
  105. package/dist/runtime-codes.js +1 -2
  106. package/dist/runtime-codes.js.map +1 -1
  107. package/dist/runtime-errors.d.ts +27 -15
  108. package/dist/runtime-errors.d.ts.map +1 -1
  109. package/dist/runtime-errors.js +44 -8
  110. package/dist/runtime-errors.js.map +1 -1
  111. package/dist/runtime-native.d.ts +16 -34
  112. package/dist/runtime-native.d.ts.map +1 -1
  113. package/dist/runtime-native.js.map +1 -1
  114. package/dist/runtime.d.ts +11 -28
  115. package/dist/runtime.d.ts.map +1 -1
  116. package/dist/runtime.js +14 -54
  117. package/dist/runtime.js.map +1 -1
  118. package/dist/schema.d.ts +9 -1
  119. package/dist/schema.d.ts.map +1 -1
  120. package/dist/schema.js +85 -24
  121. package/dist/schema.js.map +1 -1
  122. package/dist/selection.d.ts +27 -0
  123. package/dist/selection.d.ts.map +1 -0
  124. package/dist/selection.js +104 -0
  125. package/dist/selection.js.map +1 -0
  126. package/dist/shape.d.ts +6 -9
  127. package/dist/shape.d.ts.map +1 -1
  128. package/dist/statements.d.ts +17 -52
  129. package/dist/statements.d.ts.map +1 -1
  130. package/dist/statements.js +92 -111
  131. package/dist/statements.js.map +1 -1
  132. package/dist/values.d.ts +25 -0
  133. package/dist/values.d.ts.map +1 -0
  134. package/dist/values.js +203 -0
  135. package/dist/values.js.map +1 -0
  136. package/pack-provenance.json +3 -3
  137. package/package.json +4 -4
  138. package/src/capacity.ts +86 -76
  139. package/src/changes.ts +225 -94
  140. package/src/closed.ts +161 -314
  141. package/src/codec.ts +123 -213
  142. package/src/compile.ts +61 -38
  143. package/src/db-native.ts +73 -68
  144. package/src/db.ts +268 -165
  145. package/src/errors.ts +16 -1
  146. package/src/face.ts +44 -74
  147. package/src/fields.ts +100 -146
  148. package/src/immutable.ts +76 -0
  149. package/src/index.ts +38 -31
  150. package/src/internal/log.ts +4 -5
  151. package/src/law.ts +14 -14
  152. package/src/lower.ts +13 -10
  153. package/src/migration.ts +5 -12
  154. package/src/native.ts +2 -1
  155. package/src/query/atom.ts +1 -0
  156. package/src/query/description.ts +394 -0
  157. package/src/query/lower.ts +139 -173
  158. package/src/query/parse-ir.ts +247 -54
  159. package/src/query/run.ts +15 -9
  160. package/src/query/scope.ts +10 -18
  161. package/src/relation.ts +58 -142
  162. package/src/result.ts +16 -45
  163. package/src/rows.ts +57 -250
  164. package/src/runtime-codes.ts +1 -2
  165. package/src/runtime-errors.ts +48 -8
  166. package/src/runtime-native.ts +13 -46
  167. package/src/runtime.ts +51 -119
  168. package/src/schema.ts +99 -29
  169. package/src/selection.ts +124 -0
  170. package/src/shape.ts +9 -9
  171. package/src/statements.ts +138 -189
  172. package/src/values.ts +223 -0
package/dist/face.js CHANGED
@@ -1,41 +1,47 @@
1
+ import { memberDescriptor, sealedFieldOf } from "#closed.ts";
1
2
  import { AuthoringError } from "#errors.ts";
3
+ import { assertDeclarationRecord } from "#fields.ts";
4
+ import { selectionBindings } from "#selection.ts";
2
5
  import { renderLiteralSet } from "#spec.ts";
6
+ import { arrayValue, recordValue } from "#values.ts";
3
7
  const emptySelection = Object.freeze([]);
4
8
  function faceParts(source) {
9
+ assertDeclarationRecord("face source", source);
5
10
  if ("relation" in source) {
11
+ recordValue("selected relation", source, ["relation", "selection"]);
6
12
  return { owner: source.relation, selection: source.selection };
7
13
  }
8
14
  return { owner: source, selection: emptySelection };
9
15
  }
10
16
  function on(source, fields) {
11
- const projection = Object.freeze(typeof fields === "string" ? [fields] : [...fields]);
12
17
  const parts = faceParts(source);
13
- const data = Object.freeze({
18
+ return faceDescriptor({
14
19
  owner: parts.owner,
15
- projection,
20
+ projection: typeof fields === "string" ? [fields] : fields,
16
21
  selection: parts.selection
17
22
  });
18
- const value = Object.freeze({ source, projection, data });
19
- if (!faceMinted(value, source, projection)) {
20
- throw new AuthoringError({ message: `face over ${parts.owner.name}: face construction incomplete` });
21
- }
22
- return value;
23
23
  }
24
- /**
25
- * The trusted admission seam of the face mint (the pattern's home is
26
- * `isTypedScope` in query/lower.ts): the
27
- * checkable facts the value carries exactly the source and projection it
28
- * was built from, and `data.owner` is exactly the owner {@link faceParts}
29
- * resolves for that source are verified before the wide construction is
30
- * admitted at the exact {@link Face} type (whose `data` claims the owner at
31
- * its precise type, the carrier the schema-level law-typing reads).
32
- */
33
- function faceMinted(value, source, projection) {
34
- const owner = "relation" in source ? source.relation : source;
35
- return (value.source === source &&
36
- value.projection === projection &&
37
- value.data.owner === owner &&
38
- value.data.projection === projection);
24
+ function faceDescriptor(raw) {
25
+ const input = recordValue("face", raw, ["owner", "projection", "selection"]);
26
+ const owner = memberDescriptor(input.owner);
27
+ const projection = arrayValue("face projection", input.projection, (_, value) => {
28
+ if (typeof value !== "string")
29
+ throw new AuthoringError({ message: "face: expected a field name" });
30
+ return value;
31
+ });
32
+ if (projection.length === 0) {
33
+ throw new AuthoringError({ message: "face: expected a nonempty projection" });
34
+ }
35
+ const projected = new Set();
36
+ for (const field of projection) {
37
+ if (typeof field !== "string" || sealedFieldOf(owner, field) === undefined)
38
+ throw new AuthoringError({ message: `face ${owner.name}: unknown field ${String(field)}` });
39
+ if (projected.has(field))
40
+ throw new AuthoringError({ message: `face ${owner.name}: duplicate field ${field}` });
41
+ projected.add(field);
42
+ }
43
+ const selection = selectionBindings(owner, input.selection);
44
+ return Object.freeze({ owner, projection, selection });
39
45
  }
40
46
  function renderFace(face) {
41
47
  const projection = face.projection.join(", ");
@@ -49,5 +55,5 @@ function renderFace(face) {
49
55
  .join(", ");
50
56
  return `${face.owner.name}(${projection} | ${bindings})`;
51
57
  }
52
- export { on, renderFace };
58
+ export { faceDescriptor, on, renderFace };
53
59
  //# sourceMappingURL=face.js.map
package/dist/face.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"face.js","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAI3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,MAAM,cAAc,GAAgC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAIrE,SAAS,SAAS,CAAC,MAAkB;IAIpC,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;IAC/D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;AACpD,CAAC;AA8FD,SAAS,EAAE,CAAuB,MAAS,EAAE,MAAkC;IAC9E,MAAM,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;IACxG,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAa,MAAM,CAAC,MAAM,CAAC;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU;QACV,SAAS,EAAE,KAAK,CAAC,SAAS;KAC1B,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,IAAI,CAAC,UAAU,CAAuB,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,CAAC,KAAK,CAAC,IAAI,gCAAgC,EAAE,CAAC,CAAA;IACrG,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAClB,KAAuG,EACvG,MAAS,EACT,UAAa;IAEb,MAAM,KAAK,GAAG,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;IAC7D,OAAO,CACN,KAAK,CAAC,MAAM,KAAK,MAAM;QACvB,KAAK,CAAC,UAAU,KAAK,UAAU;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;QAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CACpC,CAAA;AACF,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,GAAG,CAAA;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;SAC7B,GAAG,CAAC,SAAS,aAAa,CAAC,OAAO;QAClC,OAAO,GAAG,OAAO,CAAC,KAAK,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,MAAM,QAAQ,GAAG,CAAA;AACzD,CAAC;AAkBD,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"face.js","sourceRoot":"","sources":["../src/face.ts"],"names":[],"mappings":"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"}
package/dist/fields.d.ts CHANGED
@@ -1,7 +1,5 @@
1
- import { Result } from "effect";
2
- import { DbError } from "./runtime-errors.js";
3
1
  import type { LiteralSpec } from "./spec.js";
4
- import { Uuid } from "./uuid.js";
2
+ import type { Uuid } from "./uuid.js";
5
3
  /**
6
4
  * A half-open integer interval `[start, end)` as a plain value object —
7
5
  * the ONE discrete interval value type, whatever the field's element type
@@ -17,29 +15,14 @@ interface IntervalValue {
17
15
  /**
18
16
  * A half-open dense float interval `[start, end)` as a plain value object:
19
17
  * two canonical binary64 bounds on the dense numeric line.
20
- * NaN is never an endpoint, signed zero is normalized at the checked
21
- * constructor and again by the native boundary, and strict `start < end`
22
- * makes empty spans unrepresentable through {@link span}. Infinite bounds
23
- * denote a missing bound, not a member point.
18
+ * Field-directed validation rejects NaN endpoints and empty intervals and
19
+ * normalizes signed zero. Infinite bounds denote a missing bound, not a
20
+ * member point; a plain object alone is not evidence of validation.
24
21
  */
25
22
  interface FloatIntervalValue {
26
23
  readonly start: number;
27
24
  readonly end: number;
28
25
  }
29
- /**
30
- * Constructs a checked interval literal — the `start..end` spelling.
31
- * Half-open and nonempty by construction. Fallible pure parsing
32
- * returns `Result` (use `Effect.fromResult(span(...))` inside a generator),
33
- * never hidden I/O and never a thrown domain outcome.
34
- *
35
- * Two element domains, selected by argument type: `span(0n, 60n)` is a
36
- * discrete integer interval; `span(0.5, 1.5)` is a dense float interval
37
- * with canonical endpoints (NaN refused, `-0` normalized to `+0`,
38
- * `-Infinity` legal only as the lower bound and `+Infinity` only as the
39
- * upper bound — both enforced by strict numeric `start < end`).
40
- */
41
- declare function span(start: bigint, end: bigint): Result.Result<IntervalValue, DbError>;
42
- declare function span(start: number, end: number): Result.Result<FloatIntervalValue, DbError>;
43
26
  /**
44
27
  * Nonempty declaration-order handle vector — the ONE roster carrier. The
45
28
  * handle union is `Handles[number]`, the ordinal of a handle is its tuple
@@ -137,10 +120,8 @@ type Infer<F extends AnyField> = F extends {
137
120
  readonly kind: "bytes";
138
121
  } ? Uint8Array : F extends {
139
122
  readonly kind: "interval";
140
- readonly element: "f64";
141
- } ? FloatIntervalValue : F extends {
142
- readonly kind: "interval";
143
- } ? IntervalValue : never;
123
+ readonly element: infer Element;
124
+ } ? Element extends "f64" ? FloatIntervalValue : IntervalValue : never;
144
125
  /**
145
126
  * The typed shape refusal shared by every literal machine — the selection
146
127
  * lowering here, the row codec (`rows.ts`), and the query-literal
@@ -165,6 +146,12 @@ declare function isIntervalValue(value: unknown): value is IntervalValue;
165
146
  declare function isFloatIntervalValue(value: unknown): value is FloatIntervalValue;
166
147
  declare function assertDeclarationOrderKey(where: string, name: string): void;
167
148
  declare function assertDeclarationRecord(where: string, record: object): void;
149
+ /** Own a checked roster; never freeze the caller's array. */
150
+ declare function ownHandles<const H extends ClosedHandleTuple>(context: string, handles: H): H;
151
+ declare function ownHandles(context: string, handles: unknown): ClosedHandleTuple;
152
+ /** Checked structural field descriptors, shared by declaration boundaries. */
153
+ declare function fieldDescriptor<F extends AnyField>(context: string, input: F): F;
154
+ declare function fieldDescriptor(context: string, input: unknown): AnyField;
168
155
  declare const u64: U64Field;
169
156
  declare const i64: I64Field;
170
157
  /** Binary64. The native value boundary canonicalizes NaN and signed zero. */
@@ -178,5 +165,5 @@ declare function interval<Element extends U64Field | I64Field | F64Field>(elemen
178
165
  declare function interval<Element extends U64Field | I64Field, const Width extends bigint>(element: Element, width: Width): IntervalField<Element["kind"], Width>;
179
166
  declare function literalOf(field: AnyField, value: unknown): LiteralSpec;
180
167
  export type { AnyClosedIdField, AnyClosedRoster, AnyField, BoolField, BytesField, ClosedHandleTuple, ClosedIdField, ClosedRoster, F64Field, FloatIntervalValue, I64Field, Infer, IntervalElementKind, IntervalField, IntervalValue, SignatureOf, StrField, U64Field, UuidField };
181
- export { assertDeclarationOrderKey, assertDeclarationRecord, bool, bytes, f64, i64, interval, isFloatIntervalValue, isIntervalValue, literalOf, literalShapeError, rosterOf, rostersAgree, signaturesAgree, span, str, u64, uuid };
168
+ export { assertDeclarationOrderKey, assertDeclarationRecord, bool, bytes, f64, fieldDescriptor, i64, interval, isFloatIntervalValue, isIntervalValue, literalOf, literalShapeError, ownHandles, rosterOf, rostersAgree, signaturesAgree, str, u64, uuid };
182
169
  //# 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,29 +1,7 @@
1
1
  import { regex } from "arkregex";
2
- import { Result } from "effect";
3
2
  import { AuthoringError } from "#errors.ts";
4
- import { DbError } from "#runtime-errors.ts";
5
- import { Uuid } from "#uuid.ts";
3
+ import { arrayValue, fieldValue, recordValue, taggedValueOf, U64_MAX } from "#values.ts";
6
4
  const INTEGER_INDEX_NAME = regex("^(?:0|[1-9][0-9]*)$");
7
- function span(start, end) {
8
- if (typeof start === "bigint" && typeof end === "bigint") {
9
- if (start >= end) {
10
- return Result.fail(new DbError({ operation: "span", reason: { _tag: "InvalidArgument" } }));
11
- }
12
- return Result.succeed(Object.freeze({ start, end }));
13
- }
14
- if (typeof start === "number" && typeof end === "number") {
15
- if (Number.isNaN(start) || Number.isNaN(end)) {
16
- return Result.fail(new DbError({ operation: "span", reason: { _tag: "InvalidArgument" } }));
17
- }
18
- const lo = Object.is(start, -0) ? 0 : start;
19
- const hi = Object.is(end, -0) ? 0 : end;
20
- if (!(lo < hi)) {
21
- return Result.fail(new DbError({ operation: "span", reason: { _tag: "InvalidArgument" } }));
22
- }
23
- return Result.succeed(Object.freeze({ start: lo, end: hi }));
24
- }
25
- return Result.fail(new DbError({ operation: "span", reason: { _tag: "InvalidArgument" } }));
26
- }
27
5
  /**
28
6
  * The typed shape refusal shared by every literal machine — the selection
29
7
  * lowering here, the row codec (`rows.ts`), and the query-literal
@@ -82,45 +60,10 @@ function isFloatIntervalValue(value) {
82
60
  typeof value.start === "number" &&
83
61
  typeof value.end === "number");
84
62
  }
85
- function handleLiteral(closed, value) {
86
- if (typeof value !== "string") {
87
- throw literalShapeError("selection literal", `a ${closed.name} handle name (string)`, value);
88
- }
89
- if (!closed.handles.includes(value)) {
90
- throw new AuthoringError({
91
- message: `"${value}" is not a handle of ${closed.name} — the roster is ${closed.handles.join(", ")}`
92
- });
93
- }
94
- return { kind: "handle", handle: value };
95
- }
96
- function intervalLiteral(element, value) {
97
- if (element === "f64") {
98
- if (!isFloatIntervalValue(value)) {
99
- throw literalShapeError("selection literal", "float interval ({ start, end } numbers)", value);
100
- }
101
- if (Number.isNaN(value.start) || Number.isNaN(value.end) || !(value.start < value.end)) {
102
- throw new AuthoringError({
103
- message: "selection literal: a float interval is half-open and nonempty with non-NaN canonical endpoints"
104
- });
105
- }
106
- return {
107
- kind: "value",
108
- value: {
109
- kind: "intervalF64",
110
- start: Object.is(value.start, -0) ? 0 : value.start,
111
- end: Object.is(value.end, -0) ? 0 : value.end
112
- }
113
- };
114
- }
115
- if (!isIntervalValue(value)) {
116
- throw literalShapeError("selection literal", "interval ({ start, end } bigints)", value);
117
- }
118
- if (element === "u64") {
119
- return { kind: "value", value: { kind: "intervalU64", start: value.start, end: value.end } };
120
- }
121
- return { kind: "value", value: { kind: "intervalI64", start: value.start, end: value.end } };
122
- }
123
63
  function assertDeclarationOrderKey(where, name) {
64
+ if (typeof name !== "string" || !name.isWellFormed()) {
65
+ throw new AuthoringError({ message: `${where}: expected a well-formed Unicode name` });
66
+ }
124
67
  if (INTEGER_INDEX_NAME.test(name)) {
125
68
  throw new AuthoringError({
126
69
  message: `${where}: name ${name} is an integer index — JavaScript object keys re-order integer indices, breaking the declaration-order law; use a non-numeric name`
@@ -133,12 +76,91 @@ function assertDeclarationOrderKey(where, name) {
133
76
  }
134
77
  }
135
78
  function assertDeclarationRecord(where, record) {
79
+ if (typeof record !== "object" || record === null) {
80
+ throw new AuthoringError({ message: `${where}: expected a plain declaration record` });
81
+ }
136
82
  const proto = Object.getPrototypeOf(record);
137
83
  if (proto !== Object.prototype && proto !== null) {
138
84
  throw new AuthoringError({
139
85
  message: `${where}: the declaration record's prototype was replaced — a plain \`__proto__: {...}\` entry is the prototype setter, so its key silently vanishes from the declaration; spell it computed (["__proto__"]: {...}) to declare it as data`
140
86
  });
141
87
  }
88
+ for (const key of Reflect.ownKeys(record)) {
89
+ const property = Object.getOwnPropertyDescriptor(record, key);
90
+ if (typeof key !== "string" || property?.enumerable !== true || !("value" in property)) {
91
+ throw new AuthoringError({ message: `${where}: declarations require enumerable own data fields` });
92
+ }
93
+ }
94
+ }
95
+ function ownHandles(context, handles) {
96
+ if (!Array.isArray(handles) || handles.length === 0) {
97
+ throw new AuthoringError({ message: `${context}: expected a nonempty handle tuple` });
98
+ }
99
+ const seen = new Set();
100
+ const values = arrayValue(context, handles, (_, handle) => {
101
+ if (typeof handle !== "string")
102
+ throw new AuthoringError({ message: `${context}: expected string handles` });
103
+ if (!handle.isWellFormed())
104
+ throw new AuthoringError({ message: `${context}: expected well-formed string handles` });
105
+ if (seen.has(handle))
106
+ throw new AuthoringError({ message: `${context}: duplicate handle ${handle}` });
107
+ seen.add(handle);
108
+ return handle;
109
+ });
110
+ const first = values[0];
111
+ if (first === undefined)
112
+ throw new AuthoringError({ message: `${context}: expected a nonempty handle tuple` });
113
+ return Object.freeze([first, ...values.slice(1)]);
114
+ }
115
+ function fieldDescriptor(context, input) {
116
+ if (typeof input !== "object" || input === null || !("kind" in input)) {
117
+ throw new AuthoringError({ message: `${context}: expected a field descriptor` });
118
+ }
119
+ assertDeclarationRecord(context, input);
120
+ switch (input.kind) {
121
+ case "bool":
122
+ case "str":
123
+ case "i64":
124
+ case "f64":
125
+ case "uuid":
126
+ recordValue(context, input, ["kind"]);
127
+ return Object.freeze({ kind: input.kind });
128
+ case "u64": {
129
+ if (!("closed" in input)) {
130
+ recordValue(context, input, ["kind"]);
131
+ return u64;
132
+ }
133
+ recordValue(context, input, ["kind", "closed"]);
134
+ const roster = recordValue(context, input.closed, ["name", "handles"]);
135
+ if (typeof roster.name !== "string")
136
+ throw new AuthoringError({ message: `${context}: expected a roster name` });
137
+ assertDeclarationOrderKey(context, roster.name);
138
+ return Object.freeze({
139
+ kind: "u64",
140
+ closed: Object.freeze({ name: roster.name, handles: ownHandles(context, roster.handles) })
141
+ });
142
+ }
143
+ case "bytes": {
144
+ const value = recordValue(context, input, ["kind", "width"]);
145
+ if (typeof value.width !== "number")
146
+ throw new AuthoringError({ message: `${context}: expected a bytes width` });
147
+ return bytes(value.width);
148
+ }
149
+ case "interval": {
150
+ const value = recordValue(context, input, ["kind", "element", "width"]);
151
+ if (value.element !== "u64" && value.element !== "i64" && value.element !== "f64") {
152
+ throw new AuthoringError({ message: `${context}: expected an interval element kind` });
153
+ }
154
+ if (value.width === undefined)
155
+ return interval({ kind: value.element });
156
+ if (value.element === "f64" || typeof value.width !== "bigint") {
157
+ throw new AuthoringError({ message: `${context}: only discrete intervals accept a bigint width` });
158
+ }
159
+ return interval({ kind: value.element }, value.width);
160
+ }
161
+ default:
162
+ throw new AuthoringError({ message: `${context}: unknown field kind` });
163
+ }
142
164
  }
143
165
  const u64 = Object.freeze({ kind: "u64" });
144
166
  const i64 = Object.freeze({ kind: "i64" });
@@ -168,67 +190,18 @@ function interval(element, width) {
168
190
  message: "interval(f64) takes no width — a fixed-width float interval is unrepresentable (rounded start + width is not an exact fixed length on the dense line); applications supply two checked bounds"
169
191
  });
170
192
  }
171
- if (width !== undefined && width < 1n) {
193
+ if (width !== undefined && (typeof width !== "bigint" || width < 1n || width > U64_MAX)) {
172
194
  throw new AuthoringError({
173
- message: `interval width must be >= 1 (got ${width}) — w >= 1 is pinned at declaration`
195
+ message: "interval width must be a bigint in 1..=u64::MAX"
174
196
  });
175
197
  }
176
198
  return Object.freeze({ kind: "interval", element: elementKind, width });
177
199
  }
178
200
  function literalOf(field, value) {
179
- const roster = rosterOf(field);
180
- if (roster !== undefined) {
181
- return handleLiteral(roster, value);
182
- }
183
- switch (field.kind) {
184
- case "bool": {
185
- if (typeof value !== "boolean") {
186
- throw literalShapeError("selection literal", "boolean", value);
187
- }
188
- return { kind: "value", value: { kind: "bool", value } };
189
- }
190
- case "u64": {
191
- if (typeof value !== "bigint") {
192
- throw literalShapeError("selection literal", "bigint", value);
193
- }
194
- return { kind: "value", value: { kind: "u64", value } };
195
- }
196
- case "i64": {
197
- if (typeof value !== "bigint") {
198
- throw literalShapeError("selection literal", "bigint", value);
199
- }
200
- return { kind: "value", value: { kind: "i64", value } };
201
- }
202
- case "str": {
203
- if (typeof value !== "string") {
204
- throw literalShapeError("selection literal", "string", value);
205
- }
206
- if (!value.isWellFormed()) {
207
- throw literalShapeError("selection literal", "well-formed string", value);
208
- }
209
- return { kind: "value", value: { kind: "string", value } };
210
- }
211
- case "f64": {
212
- if (typeof value !== "number") {
213
- throw literalShapeError("selection literal", "number", value);
214
- }
215
- return { kind: "value", value: { kind: "f64", value } };
216
- }
217
- case "uuid": {
218
- if (!Uuid.isUuid(value)) {
219
- throw literalShapeError("selection literal", "a UUID (canonical UUID text)", value);
220
- }
221
- return { kind: "value", value: { kind: "uuid", value } };
222
- }
223
- case "bytes": {
224
- if (!(value instanceof Uint8Array)) {
225
- throw literalShapeError("selection literal", "Uint8Array", value);
226
- }
227
- return { kind: "value", value: { kind: "fixedBytes", value } };
228
- }
229
- case "interval":
230
- return intervalLiteral(field.element, value);
201
+ if ("closed" in field) {
202
+ return { kind: "handle", handle: fieldValue("selection literal", field, value) };
231
203
  }
204
+ return { kind: "value", value: taggedValueOf("selection literal", field, value) };
232
205
  }
233
- export { assertDeclarationOrderKey, assertDeclarationRecord, bool, bytes, f64, i64, interval, isFloatIntervalValue, isIntervalValue, literalOf, literalShapeError, rosterOf, rostersAgree, signaturesAgree, span, str, u64, uuid };
206
+ export { assertDeclarationOrderKey, assertDeclarationRecord, bool, bytes, f64, fieldDescriptor, i64, interval, isFloatIntervalValue, isIntervalValue, literalOf, literalShapeError, ownHandles, rosterOf, rostersAgree, signaturesAgree, str, u64, uuid };
234
207
  //# sourceMappingURL=fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ declare function isImmutable(input: unknown, visiting?: WeakSet<object>): boolean;
2
+ /** Validation is never skipped for a mutable structural input. Validated
3
+ * immutable outputs can be reused without requiring constructor identity. */
4
+ declare function descriptorCache<A extends object>(parse: (input: unknown) => A): (input: unknown) => A;
5
+ /** Detached inspection data: share proven immutable branches, copy byte
6
+ * buffers and their parents, and preserve references within one snapshot.
7
+ * This is for already checked internal data, not an input validator. */
8
+ declare function snapshotData<A>(input: A, onCopy?: (source: object, snapshot: object) => void): A;
9
+ export { descriptorCache, isImmutable, snapshotData };
10
+ //# sourceMappingURL=immutable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"immutable.d.ts","sourceRoot":"","sources":["../src/immutable.ts"],"names":[],"mappings":"AAIA,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,kBAAwB,GAAG,OAAO,CAqB9E;AAED;6EAC6E;AAC7E,iBAAS,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAc9F;AAED;;wEAEwE;AACxE,iBAAS,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,CAAA;AA2B1F,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,75 @@
1
+ /** Only frozen plain data graphs are stable cache keys. Typed-array contents
2
+ * remain mutable even behind a frozen parent, so they never qualify. */
3
+ const immutable = new WeakSet();
4
+ function isImmutable(input, visiting = new WeakSet()) {
5
+ if (typeof input !== "object" || input === null)
6
+ return typeof input !== "function";
7
+ if (immutable.has(input))
8
+ return true;
9
+ const prototype = Object.getPrototypeOf(input);
10
+ if ((prototype !== Object.prototype && prototype !== null && prototype !== Array.prototype) ||
11
+ !Object.isFrozen(input) ||
12
+ visiting.has(input))
13
+ return false;
14
+ visiting.add(input);
15
+ for (const name of Reflect.ownKeys(input)) {
16
+ const property = Object.getOwnPropertyDescriptor(input, name);
17
+ if (property === undefined || !("value" in property) || !isImmutable(property.value, visiting)) {
18
+ visiting.delete(input);
19
+ return false;
20
+ }
21
+ }
22
+ visiting.delete(input);
23
+ immutable.add(input);
24
+ return true;
25
+ }
26
+ /** Validation is never skipped for a mutable structural input. Validated
27
+ * immutable outputs can be reused without requiring constructor identity. */
28
+ function descriptorCache(parse) {
29
+ const cache = new WeakMap();
30
+ return (input) => {
31
+ if (typeof input === "object" && input !== null) {
32
+ const found = cache.get(input);
33
+ if (found !== undefined)
34
+ return found;
35
+ }
36
+ const result = parse(input);
37
+ if (isImmutable(result)) {
38
+ cache.set(result, result);
39
+ if (typeof input === "object" && input !== null && isImmutable(input))
40
+ cache.set(input, result);
41
+ }
42
+ return result;
43
+ };
44
+ }
45
+ function snapshotData(input, onCopy) {
46
+ const copied = new WeakMap();
47
+ function visit(value) {
48
+ if (typeof value !== "object" || value === null || isImmutable(value))
49
+ return value;
50
+ const existing = copied.get(value);
51
+ if (existing !== undefined)
52
+ return existing;
53
+ if (value instanceof Uint8Array) {
54
+ const bytes = Uint8Array.from(value);
55
+ copied.set(value, bytes);
56
+ return bytes;
57
+ }
58
+ const result = Array.isArray(value) ? [] : Object.create(Object.getPrototypeOf(value));
59
+ copied.set(value, result);
60
+ for (const name of Reflect.ownKeys(value)) {
61
+ if (Array.isArray(value) && name === "length")
62
+ continue;
63
+ const property = Object.getOwnPropertyDescriptor(value, name);
64
+ if (property === undefined || !("value" in property))
65
+ throw new TypeError("snapshotData requires checked data");
66
+ Object.defineProperty(result, name, { value: visit(property.value), enumerable: property.enumerable === true });
67
+ }
68
+ Object.freeze(result);
69
+ onCopy?.(value, result);
70
+ return result;
71
+ }
72
+ return visit(input);
73
+ }
74
+ export { descriptorCache, isImmutable, snapshotData };
75
+ //# sourceMappingURL=immutable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"immutable.js","sourceRoot":"","sources":["../src/immutable.ts"],"names":[],"mappings":"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"}