@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/codec.js CHANGED
@@ -1,20 +1,35 @@
1
1
  import { Effect, Schema as EffectSchema, Result } from "effect";
2
+ import { membersAgree } from "#closed.ts";
2
3
  import { schemaTables } from "#compile.ts";
3
4
  import { dbNative } from "#db-native.ts";
4
- import { isFloatIntervalValue, isIntervalValue, rosterOf } from "#fields.ts";
5
+ import { AuthoringError } from "#errors.ts";
5
6
  import { lower } from "#lower.ts";
7
+ import { relationDescriptor, relationFields } from "#relation.ts";
6
8
  import { factOfCells, flatRowsOf } from "#rows.ts";
7
- import { nativeOperationWith, policyWire, runtimeHandle } from "#runtime.ts";
8
- import { DbError } from "#runtime-errors.ts";
9
+ import { nativeOperationWith, runtimeHandle } from "#runtime.ts";
10
+ import { argumentError, DbError } from "#runtime-errors.ts";
11
+ import { schemaDescriptor } from "#schema.ts";
9
12
  import { f64BitsHex } from "#spec.ts";
10
- import { Uuid } from "#uuid.ts";
13
+ import { fieldValue, recordValue } from "#values.ts";
11
14
  function rowShape(schema, relation) {
12
- return Object.freeze({ schema, relation });
15
+ const ownedSchema = schemaDescriptor(schema);
16
+ const ownedRelation = relationDescriptor(relation);
17
+ return Object.freeze({ schema: ownedSchema, relation: ownedRelation });
18
+ }
19
+ function checkedRowShape(operation, input) {
20
+ recordValue(`${operation} shape`, input, ["schema", "relation"]);
21
+ const schema = schemaDescriptor(input.schema);
22
+ const relation = relationDescriptor(input.relation);
23
+ const relationId = schemaTables(schema).relationIds.get(relation.name);
24
+ if (relationId === undefined || !membersAgree(schema.relations[relation.name], relation)) {
25
+ throw new AuthoringError({ message: `${operation}: relation is not declared in the schema` });
26
+ }
27
+ return { relation, relationId, spec: lower(schema) };
13
28
  }
14
29
  function invalid(operation) {
15
30
  return new DbError({ operation, reason: { _tag: "InvalidArgument" } });
16
31
  }
17
- const DECIMAL = /^-?(?:0|[1-9][0-9]*)$/;
32
+ const DECIMAL = /^(?:0|-?[1-9][0-9]*)$/;
18
33
  const HEX16 = /^[0-9a-f]{16}$/;
19
34
  const LOWER_HEX = /^(?:[0-9a-f]{2})*$/;
20
35
  function hexOfBytes(bytes) {
@@ -48,242 +63,152 @@ function f64OfHex(text) {
48
63
  }
49
64
  return value;
50
65
  }
51
- /** One host value to its schema-tagged JSON form (pure, bounded). */
52
- function encodeBoundaryValue(field, value) {
53
- const roster = rosterOf(field);
54
- if (roster !== undefined) {
55
- if (typeof value !== "string" || !roster.handles.includes(value)) {
56
- throw invalid("encodeBoundaryRows");
57
- }
58
- return value;
59
- }
66
+ /** One host value to its canonical, field-directed JSON representation. */
67
+ function encodeBoundaryValue(context, field, input) {
68
+ if ("closed" in field)
69
+ return fieldValue(context, field, input);
60
70
  switch (field.kind) {
61
- case "bool": {
62
- if (typeof value !== "boolean") {
63
- throw invalid("encodeBoundaryRows");
64
- }
65
- return value;
66
- }
71
+ case "bool":
72
+ case "str":
73
+ case "uuid":
74
+ return fieldValue(context, field, input);
67
75
  case "u64":
68
- case "i64": {
69
- if (typeof value !== "bigint") {
70
- throw invalid("encodeBoundaryRows");
71
- }
72
- return value.toString(10);
73
- }
74
- case "f64": {
75
- if (typeof value !== "number") {
76
- throw invalid("encodeBoundaryRows");
77
- }
78
- return { $f64: f64BitsHex(value) };
79
- }
80
- case "uuid": {
81
- if (!Uuid.isUuid(value)) {
82
- throw invalid("encodeBoundaryRows");
83
- }
84
- return value;
85
- }
86
- case "str": {
87
- if (typeof value !== "string" || !value.isWellFormed()) {
88
- throw invalid("encodeBoundaryRows");
89
- }
90
- return value;
91
- }
92
- case "bytes": {
93
- if (!(value instanceof Uint8Array) || value.byteLength !== field.width) {
94
- throw invalid("encodeBoundaryRows");
95
- }
96
- return hexOfBytes(value);
97
- }
76
+ case "i64":
77
+ return fieldValue(context, field, input).toString(10);
78
+ case "f64":
79
+ return { $f64: f64BitsHex(fieldValue(context, field, input)) };
80
+ case "bytes":
81
+ return hexOfBytes(fieldValue(context, field, input));
98
82
  case "interval": {
99
83
  if (field.element === "f64") {
100
- if (!isFloatIntervalValue(value)) {
101
- throw invalid("encodeBoundaryRows");
102
- }
84
+ const value = fieldValue(context, { ...field, element: "f64" }, input);
103
85
  return { start: { $f64: f64BitsHex(value.start) }, end: { $f64: f64BitsHex(value.end) } };
104
86
  }
105
- if (!isIntervalValue(value)) {
106
- throw invalid("encodeBoundaryRows");
107
- }
87
+ const value = fieldValue(context, { ...field, element: field.element }, input);
108
88
  return { start: value.start.toString(10), end: value.end.toString(10) };
109
89
  }
110
90
  }
111
91
  }
112
- const U64_MAX = 0xffffffffffffffffn;
113
- const I64_MIN = -0x8000000000000000n;
114
- const I64_MAX = 0x7fffffffffffffffn;
115
- function decodeInteger(kind, value) {
116
- if (typeof value !== "string" || !DECIMAL.test(value)) {
117
- return undefined;
118
- }
119
- const parsed = BigInt(value);
120
- if (kind === "u64" && (parsed < 0n || parsed > U64_MAX)) {
92
+ function decodeInteger(value) {
93
+ // No accepted integer spelling is longer than 20 ASCII characters.
94
+ if (typeof value !== "string" || value.length > 20 || !DECIMAL.test(value))
121
95
  return undefined;
122
- }
123
- if (kind === "i64" && (parsed < I64_MIN || parsed > I64_MAX)) {
124
- return undefined;
125
- }
126
- // Canonical decimal only (no leading zeros, no "-0") — DECIMAL enforces.
127
- return parsed;
96
+ return BigInt(value);
128
97
  }
129
98
  function decodeTaggedF64(value) {
130
- if (typeof value !== "object" || value === null || !("$f64" in value)) {
131
- return undefined;
132
- }
133
- const keys = Object.keys(value);
134
- if (keys.length !== 1) {
135
- return undefined;
136
- }
137
- return f64OfHex(value.$f64);
99
+ const record = recordValue("binary64 image", value, ["$f64"]);
100
+ return f64OfHex(record.$f64);
138
101
  }
139
- /** One schema-tagged JSON form back to the host value (strict, pure). */
140
- function decodeBoundaryValue(field, value) {
141
- const roster = rosterOf(field);
142
- if (roster !== undefined) {
143
- return typeof value === "string" && roster.handles.includes(value) ? value : undefined;
144
- }
102
+ /** Decode representation, then judge the value through the shared interpreter. */
103
+ function decodeBoundaryValue(context, field, input) {
104
+ if ("closed" in field)
105
+ return fieldValue(context, field, input);
106
+ let decoded = input;
145
107
  switch (field.kind) {
146
- case "bool":
147
- return typeof value === "boolean" ? value : undefined;
148
108
  case "u64":
149
109
  case "i64":
150
- return decodeInteger(field.kind, value);
110
+ decoded = decodeInteger(input);
111
+ break;
151
112
  case "f64":
152
- return decodeTaggedF64(value);
153
- case "uuid":
154
- return Uuid.isUuid(value) ? value : undefined;
155
- case "str":
156
- return typeof value === "string" && value.isWellFormed() ? value : undefined;
157
- case "bytes": {
158
- if (typeof value !== "string" || value.length !== field.width * 2) {
159
- return undefined;
160
- }
161
- return bytesOfHex(value);
162
- }
113
+ decoded = decodeTaggedF64(input);
114
+ break;
115
+ case "bytes":
116
+ decoded = typeof input === "string" && input.length === field.width * 2 ? bytesOfHex(input) : undefined;
117
+ break;
163
118
  case "interval": {
164
- if (typeof value !== "object" || value === null || !("start" in value) || !("end" in value)) {
165
- return undefined;
166
- }
167
- const raw = value;
168
- if (field.element === "f64") {
169
- const start = decodeTaggedF64(raw.start);
170
- const end = decodeTaggedF64(raw.end);
171
- if (start === undefined || end === undefined || Number.isNaN(start) || Number.isNaN(end) || !(start < end)) {
172
- return undefined;
173
- }
174
- return Object.freeze({ start, end });
175
- }
176
- const start = decodeInteger(field.element, raw.start);
177
- const end = decodeInteger(field.element, raw.end);
178
- if (start === undefined || end === undefined || start >= end) {
179
- return undefined;
180
- }
181
- return Object.freeze({ start, end });
119
+ const record = recordValue(context, input, ["start", "end"]);
120
+ decoded =
121
+ field.element === "f64"
122
+ ? { start: decodeTaggedF64(record.start), end: decodeTaggedF64(record.end) }
123
+ : { start: decodeInteger(record.start), end: decodeInteger(record.end) };
124
+ break;
182
125
  }
183
126
  }
127
+ return fieldValue(context, field, decoded);
184
128
  }
185
- /** Pure schema-tagged JSON encoding of owned rows (bounded per call). */
129
+ /** Pure schema-tagged JSON encoding of complete rows. */
186
130
  function encodeBoundaryRows(relation, rows) {
187
131
  return Result.try({
188
132
  try: () => {
189
133
  const out = [];
134
+ const fields = relationFields(relation);
135
+ const names = fields.map((declared) => declared.name);
190
136
  for (const row of rows) {
191
- const record = {};
192
- for (const declared of relation.data.fields) {
193
- record[declared.name] = encodeBoundaryValue(declared.field, row[declared.name]);
194
- }
195
- out.push(Object.freeze(record));
137
+ const input = recordValue(`relation ${relation.name}`, row, names);
138
+ out.push(Object.freeze(Object.fromEntries(fields.map((declared) => [
139
+ declared.name,
140
+ encodeBoundaryValue(`relation ${relation.name}.${declared.name}`, declared.field, input[declared.name])
141
+ ]))));
196
142
  }
197
143
  return Object.freeze(out);
198
144
  },
199
- catch: (cause) => (cause instanceof DbError ? cause : invalid("encodeBoundaryRows"))
145
+ catch: (cause) => argumentError("encodeBoundaryRows", cause)
200
146
  });
201
147
  }
202
- /** Pure strict decoding of schema-tagged JSON rows; any refusal is typed. */
148
+ /** Pure strict decoding; malformed records, getters and values fail as data. */
203
149
  function decodeBoundaryRows(relation, input) {
204
- if (!Array.isArray(input)) {
205
- return Result.fail(invalid("decodeBoundaryRows"));
206
- }
207
- const out = [];
208
- for (const raw of input) {
209
- if (typeof raw !== "object" || raw === null) {
210
- return Result.fail(invalid("decodeBoundaryRows"));
211
- }
212
- const record = {};
213
- for (const declared of relation.data.fields) {
214
- const decoded = decodeBoundaryValue(declared.field, raw[declared.name]);
215
- if (decoded === undefined) {
216
- return Result.fail(invalid("decodeBoundaryRows"));
217
- }
218
- record[declared.name] = decoded;
219
- }
220
- // Unknown extra keys refuse: wrong-schema values never pass.
221
- for (const key of Object.keys(raw)) {
222
- if (!(key in record)) {
223
- return Result.fail(invalid("decodeBoundaryRows"));
224
- }
225
- }
226
- out.push(Object.freeze(record));
227
- }
228
- return Result.succeed(Object.freeze(out));
150
+ return Result.try({
151
+ try: () => {
152
+ if (!Array.isArray(input))
153
+ throw invalid("decodeBoundaryRows");
154
+ const fields = relationFields(relation);
155
+ const names = fields.map((declared) => declared.name);
156
+ return Object.freeze(input.map((row) => {
157
+ const raw = recordValue(`relation ${relation.name}`, row, names);
158
+ return Object.freeze(Object.fromEntries(fields.map((declared) => [
159
+ declared.name,
160
+ decodeBoundaryValue(`relation ${relation.name}.${declared.name}`, declared.field, raw[declared.name])
161
+ ])));
162
+ }));
163
+ },
164
+ catch: (cause) => argumentError("decodeBoundaryRows", cause)
165
+ });
229
166
  }
230
- /**
231
- * An Effect Schema for one relation's typed row, DERIVED from the core
232
- * descriptors (a validation-only declaration; the canonical `$f64`/decimal
233
- * wire form stays this module's explicit codec — Effect Schema's generic
234
- * JSON number encoding is not Bumbledb's `$f64` codec).
235
- */
167
+ /** An Effect Schema derived from the same complete-row value interpreter. */
236
168
  function rowSchema(relation) {
169
+ const fields = relationFields(relation);
170
+ const names = fields.map((declared) => declared.name);
237
171
  return EffectSchema.declare((value) => {
238
- if (typeof value !== "object" || value === null) {
172
+ try {
173
+ const record = recordValue(`relation ${relation.name}`, value, names);
174
+ for (const declared of fields)
175
+ fieldValue(`relation ${relation.name}.${declared.name}`, declared.field, record[declared.name]);
176
+ return true;
177
+ }
178
+ catch {
239
179
  return false;
240
180
  }
241
- const record = value;
242
- return relation.data.fields.every(function checkField(declared) {
243
- const cell = record[declared.name];
244
- if (cell === undefined) {
245
- return false;
246
- }
247
- return Result.isSuccess(Result.try({
248
- try: () => encodeBoundaryValue(declared.field, cell),
249
- catch: () => invalid("rowSchema")
250
- }));
251
- });
252
181
  });
253
182
  }
254
183
  /**
255
- * The charged CANONICAL native row codec (chapter 35 roster): owned bytes
184
+ * The canonical native row codec (chapter 35 roster): owned bytes
256
185
  * out, owned typed rows back in — the same implementation log sealing and
257
186
  * migrations use. Binding parameters is ingestion: input must stay stable
258
187
  * through execution, and no native work starts before the checked owned
259
188
  * chunk exists.
260
189
  */
261
- const encodeRows = Effect.fn("encodeRows")(function* (shape, rows, work) {
190
+ const encodeRows = Effect.fn("encodeRows")(function* (shape, rows) {
262
191
  const runtime = yield* runtimeHandle();
263
- const tables = schemaTables(shape.schema);
264
- const relationId = tables.relationIds.get(shape.relation.name);
265
- if (relationId === undefined || shape.schema.relations[shape.relation.name] !== shape.relation) {
266
- return yield* Effect.fail(invalid("encodeRows"));
267
- }
192
+ const { relation, relationId, spec } = yield* Effect.try({
193
+ try: () => checkedRowShape("encodeRows", shape),
194
+ catch: (cause) => argumentError("encodeRows", cause)
195
+ });
268
196
  const flat = yield* Effect.try({
269
- try: () => flatRowsOf(shape.relation.data, rows),
270
- catch: (cause) => (cause instanceof DbError ? cause : invalid("encodeRows"))
197
+ try: () => flatRowsOf(relation, rows),
198
+ catch: (cause) => argumentError("encodeRows", cause)
271
199
  });
272
- const spec = lower(shape.schema);
273
- return yield* nativeOperationWith("encodeRows", (callback) => dbNative.runtimeEncodeRows(runtime, policyWire(work, "encodeRows"), spec, relationId, flat.rows, flat.cells, callback), dbNative.runtimeBytesTake, (bytes) => bytes);
200
+ return yield* nativeOperationWith("encodeRows", (callback) => dbNative.runtimeEncodeRows(runtime, spec, relationId, flat.rows, flat.cells, callback), dbNative.runtimeBytesTake, (bytes) => bytes);
274
201
  });
275
- const decodeRows = Effect.fn("decodeRows")(function* (shape, input, work) {
202
+ const decodeRows = Effect.fn("decodeRows")(function* (shape, input) {
276
203
  const runtime = yield* runtimeHandle();
277
- const tables = schemaTables(shape.schema);
278
- const relationId = tables.relationIds.get(shape.relation.name);
279
- if (relationId === undefined || shape.schema.relations[shape.relation.name] !== shape.relation) {
280
- return yield* Effect.fail(invalid("decodeRows"));
281
- }
204
+ const { relation, relationId, spec } = yield* Effect.try({
205
+ try: () => checkedRowShape("decodeRows", shape),
206
+ catch: (cause) => argumentError("decodeRows", cause)
207
+ });
282
208
  if (!(input instanceof Uint8Array) || !(input.buffer instanceof ArrayBuffer)) {
283
209
  return yield* Effect.fail(invalid("decodeRows"));
284
210
  }
285
- const spec = lower(shape.schema);
286
- return yield* nativeOperationWith("decodeRows", (callback) => dbNative.runtimeDecodeRows(runtime, policyWire(work, "decodeRows"), spec, relationId, input, callback), dbNative.runtimeRowsTake, (rows) => Object.freeze(rows.map((row) => factOfCells(shape.relation, row))));
211
+ return yield* nativeOperationWith("decodeRows", (callback) => dbNative.runtimeDecodeRows(runtime, spec, relationId, input, callback), dbNative.runtimeRowsTake, (rows) => Object.freeze(rows.map((row) => factOfCells(relation, row))));
287
212
  });
288
213
  export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
289
214
  //# sourceMappingURL=codec.js.map
package/dist/codec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
package/dist/compile.d.ts CHANGED
@@ -1,17 +1,15 @@
1
1
  import { Effect } from "effect";
2
2
  import type { SchemaClasses } from "./law.js";
3
3
  import type { SealedDescriptor } from "./native.js";
4
- import type { ExecutionPolicy } from "./runtime.js";
4
+ import type { AnyRelation } from "./relation.js";
5
5
  import type { AnySchema, Schema as SchemaDeclaration, SchemaRelations } from "./schema.js";
6
+ import { type KeyStatement, type Statement } from "./statements.js";
6
7
  /**
7
8
  * `SchemaId` — the engine's canonical schema fingerprint as lowercase hex.
8
- * Independent of database identity; a branded string so arbitrary text does
9
- * not typecheck where a schema identity is required.
9
+ * Independent of database identity; ordinary structural text. Native
10
+ * boundaries verify the fingerprint wherever it grants admission.
10
11
  */
11
- declare const schemaIdBrand: unique symbol;
12
- type SchemaId = string & {
13
- readonly [schemaIdBrand]: "bumbledb.SchemaId";
14
- };
12
+ type SchemaId = string;
15
13
  /**
16
14
  * `CompiledSchema<S>` — bounded detached immutable descriptor data plus the
17
15
  * canonical `schemaId`. NOT a tenant handle or a second
@@ -29,20 +27,21 @@ interface CompiledSchema<S extends AnySchema> {
29
27
  * ids (declaration order = ids), materialized statement ids (closed
30
28
  * relations' auto-handle keys FIRST in relation-declaration order, then
31
29
  * declared statements in declaration order with `mirrors` occupying two
32
- * consecutive slots, source-first — the theory's `StatementId` law), and
33
- * each relation's primary key (a closed relation's synthetic `(id)`,
34
- * otherwise its FIRST declared `key` statement).
30
+ * consecutive slots, source-first — the theory's `StatementId` law).
31
+ * Every declared statement retains its own native identity; no key is
32
+ * privileged by its position in the declaration.
35
33
  */
36
- interface PrimaryKey {
37
- readonly statementId: number;
38
- readonly projection: readonly string[];
39
- }
40
34
  interface SchemaTables {
41
35
  readonly relationIds: ReadonlyMap<string, number>;
42
- readonly primaryKeys: ReadonlyMap<string, PrimaryKey>;
36
+ readonly statementIds: ReadonlyMap<Statement, number>;
43
37
  }
44
38
  /** Memoized pure tables (per schema value identity; no native work). */
45
39
  declare function schemaTables(theory: AnySchema): SchemaTables;
40
+ /** Resolve a logical key declaration, never an opaque constructor token. */
41
+ declare function declaredKey<R extends AnyRelation>(theory: AnySchema, input: KeyStatement<R>): {
42
+ readonly key: KeyStatement<R>;
43
+ readonly statementId: number;
44
+ } | undefined;
46
45
  /**
47
46
  * The declaration-tier `Schema<Rels, Classes>` TYPE (from `#schema.ts`),
48
47
  * re-aliased LOCALLY so the one name carries both meanings through a
@@ -60,8 +59,8 @@ type Schema<Rels extends SchemaRelations, Classes extends SchemaClasses = Schema
60
59
  * the effectful half. One exported name, two meanings.
61
60
  */
62
61
  declare const Schema: Readonly<{
63
- compile: <S extends AnySchema>(schema: S, work: ExecutionPolicy) => Effect.Effect<CompiledSchema<S>, import("./runtime-errors.js").DbError, import("./runtime.js").NativeRuntime>;
62
+ compile: <S extends AnySchema>(schema: S) => Effect.Effect<CompiledSchema<S>, import("./runtime-errors.js").DbError, import("./runtime.js").NativeRuntime>;
64
63
  }>;
65
- export type { CompiledSchema, PrimaryKey, SchemaId, SchemaTables };
66
- export { Schema, schemaTables };
64
+ export type { CompiledSchema, SchemaId, SchemaTables };
65
+ export { declaredKey, Schema, schemaTables };
67
66
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGzF;;;;GAIG;AACH,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAA;AAE1C,KAAK,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAE1E;;;;;;GAMG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS;IAC3C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;CACrC;AAED;;;;;;;;GAQG;AACH,UAAU,UAAU;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC;AAED,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACrD;AA8BD,wEAAwE;AACxE,iBAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAQrD;AAkCD;;;;;;;;GAQG;AACH,KAAK,MAAM,CAAC,IAAI,SAAS,eAAe,EAAE,OAAO,SAAS,aAAa,GAAG,aAAa,IAAI,iBAAiB,CAC3G,IAAI,EACJ,OAAO,CACP,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,MAAM;cArC2C,CAAC,SAAS,SAAS;EAqCjC,CAAA;AAEzC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAEvF;;;;GAIG;AACH,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB;;;;;;GAMG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS;IAC3C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;CACrC;AAED;;;;;;;;GAQG;AACH,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;CACrD;AA0BD,wEAAwE;AACxE,iBAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAQrD;AAED,4EAA4E;AAC5E,iBAAS,WAAW,CAAC,CAAC,SAAS,WAAW,EACzC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AA2D9E;;;;;;;;GAQG;AACH,KAAK,MAAM,CAAC,IAAI,SAAS,eAAe,EAAE,OAAO,SAAS,aAAa,GAAG,aAAa,IAAI,iBAAiB,CAC3G,IAAI,EACJ,OAAO,CACP,CAAA;AAED;;;;;GAKG;AACH,QAAA,MAAM,MAAM;cA9C2C,CAAC,SAAS,SAAS;EA8CjC,CAAA;AAEzC,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
package/dist/compile.js CHANGED
@@ -1,32 +1,32 @@
1
1
  import { Effect } from "effect";
2
- import { isClosedMember } from "#closed.ts";
2
+ import { isClosedMember, membersAgree } from "#closed.ts";
3
3
  import { dbNative } from "#db-native.ts";
4
4
  import { SdkInvariantError } from "#errors.ts";
5
+ import { isImmutable, snapshotData } from "#immutable.ts";
5
6
  import { lower } from "#lower.ts";
6
- import { nativeOperationWith, policyWire, runtimeHandle } from "#runtime.ts";
7
+ import { nativeOperationWith, runtimeHandle } from "#runtime.ts";
8
+ import { argumentError } from "#runtime-errors.ts";
9
+ import { schemaDescriptor } from "#schema.ts";
10
+ import { statementDescriptor } from "#statements.ts";
7
11
  function declaredWidth(statement) {
8
- return statement.data.kind === "mirrors" ? 2 : 1;
12
+ return statement.kind === "mirrors" ? 2 : 1;
9
13
  }
10
14
  function tablesOf(theory) {
11
15
  const relationIds = new Map();
12
- const primaryKeys = new Map();
16
+ const statementIds = new Map();
13
17
  let autoKeys = 0;
14
18
  Object.entries(theory.relations).forEach(function assignRelation([name, member], ordinal) {
15
19
  relationIds.set(name, ordinal);
16
20
  if (isClosedMember(member)) {
17
- primaryKeys.set(name, Object.freeze({ statementId: autoKeys, projection: Object.freeze(["id"]) }));
18
21
  autoKeys += 1;
19
22
  }
20
23
  });
21
24
  let offset = autoKeys;
22
25
  for (const statement of theory.statements) {
23
- const data = statement.data;
24
- if (data.kind === "key" && !primaryKeys.has(data.owner.name)) {
25
- primaryKeys.set(data.owner.name, Object.freeze({ statementId: offset, projection: data.projection }));
26
- }
26
+ statementIds.set(statement, offset);
27
27
  offset += declaredWidth(statement);
28
28
  }
29
- return Object.freeze({ relationIds, primaryKeys });
29
+ return Object.freeze({ relationIds, statementIds });
30
30
  }
31
31
  const compiledCache = new WeakMap();
32
32
  /** Memoized pure tables (per schema value identity; no native work). */
@@ -36,31 +36,52 @@ function schemaTables(theory) {
36
36
  return cached;
37
37
  }
38
38
  const built = tablesOf(theory);
39
- compiledCache.set(theory, built);
39
+ if (isImmutable(theory))
40
+ compiledCache.set(theory, built);
40
41
  return built;
41
42
  }
43
+ function declaredKey(theory, input) {
44
+ const key = statementDescriptor(input);
45
+ for (const [candidate, statementId] of schemaTables(theory).statementIds) {
46
+ if (candidate.kind === "key" &&
47
+ membersAgree(candidate.owner, key.owner) &&
48
+ candidate.projection.length === key.projection.length &&
49
+ candidate.projection.every((field) => key.projection.includes(field)))
50
+ return { key: candidate, statementId };
51
+ }
52
+ return undefined;
53
+ }
42
54
  function admitSchemaId(fingerprint) {
43
- if (typeof fingerprint !== "string" || fingerprint.length === 0) {
55
+ if (typeof fingerprint !== "string" || !/^[0-9a-f]{64}$/.test(fingerprint)) {
44
56
  throw new SdkInvariantError({ message: "Schema.compile: the engine returned no canonical fingerprint" });
45
57
  }
46
58
  return fingerprint;
47
59
  }
48
60
  /**
49
- * Charged, effectful native schema admission/compilation: a
61
+ * Effectful native schema admission/compilation: a
50
62
  * schema declaration is pure metadata and never a claim its theory has been
51
- * admitted. Runs on the one bounded executor under `work`, requires the
63
+ * admitted. Runs on the shared executor, requires the
52
64
  * acquired {@link NativeRuntime}, and yields detached immutable descriptor
53
65
  * data plus the canonical schema identity. No database is opened and no
54
66
  * native finalizer is created.
55
67
  */
56
- const compile = Effect.fn("Schema.compile")(function* (schema, work) {
68
+ const compile = Effect.fn("Schema.compile")(function* (schema) {
69
+ const owned = yield* Effect.try({
70
+ try: () => schemaDescriptor(schema),
71
+ catch: (cause) => argumentError("Schema.compile", cause)
72
+ });
73
+ const spec = yield* Effect.try({ try: () => lower(owned), catch: (cause) => argumentError("Schema.compile", cause) });
57
74
  const handle = yield* runtimeHandle();
58
- const spec = lower(schema);
59
- const descriptor = yield* nativeOperationWith("Schema.compile", (callback) => dbNative.runtimeSchemaCompile(handle, policyWire(work, "Schema.compile"), spec, callback), dbNative.runtimeSchemaTake, (value) => value);
75
+ const descriptor = yield* nativeOperationWith("Schema.compile", (callback) => dbNative.runtimeSchemaCompile(handle, spec, callback), dbNative.runtimeSchemaTake, (value) => value);
76
+ const ownedDescriptor = snapshotData(descriptor);
60
77
  const compiled = Object.freeze({
61
- schema,
78
+ get schema() {
79
+ return snapshotData(owned);
80
+ },
62
81
  schemaId: admitSchemaId(descriptor.fingerprint),
63
- descriptor
82
+ get descriptor() {
83
+ return snapshotData(ownedDescriptor);
84
+ }
64
85
  });
65
86
  return compiled;
66
87
  });
@@ -71,5 +92,5 @@ const compile = Effect.fn("Schema.compile")(function* (schema, work) {
71
92
  * the effectful half. One exported name, two meanings.
72
93
  */
73
94
  const Schema = Object.freeze({ compile });
74
- export { Schema, schemaTables };
95
+ export { declaredKey, Schema, schemaTables };
75
96
  //# sourceMappingURL=compile.js.map