@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
package/dist/codec.js ADDED
@@ -0,0 +1,289 @@
1
+ import { Effect, Schema as EffectSchema, Result } from "effect";
2
+ import { schemaTables } from "#compile.ts";
3
+ import { dbNative } from "#db-native.ts";
4
+ import { isFloatIntervalValue, isIntervalValue, rosterOf } from "#fields.ts";
5
+ import { lower } from "#lower.ts";
6
+ import { factOfCells, flatRowsOf } from "#rows.ts";
7
+ import { nativeOperationWith, policyWire, runtimeHandle } from "#runtime.ts";
8
+ import { DbError } from "#runtime-errors.ts";
9
+ import { f64BitsHex } from "#spec.ts";
10
+ import { Uuid } from "#uuid.ts";
11
+ function rowShape(schema, relation) {
12
+ return Object.freeze({ schema, relation });
13
+ }
14
+ function invalid(operation) {
15
+ return new DbError({ operation, reason: { _tag: "InvalidArgument" } });
16
+ }
17
+ const DECIMAL = /^-?(?:0|[1-9][0-9]*)$/;
18
+ const HEX16 = /^[0-9a-f]{16}$/;
19
+ const LOWER_HEX = /^(?:[0-9a-f]{2})*$/;
20
+ function hexOfBytes(bytes) {
21
+ let out = "";
22
+ for (const byte of bytes) {
23
+ out += byte.toString(16).padStart(2, "0");
24
+ }
25
+ return out;
26
+ }
27
+ function bytesOfHex(text) {
28
+ if (!LOWER_HEX.test(text)) {
29
+ return undefined;
30
+ }
31
+ const out = new Uint8Array(text.length / 2);
32
+ for (let index = 0; index < out.length; index += 1) {
33
+ out[index] = Number.parseInt(text.slice(index * 2, index * 2 + 2), 16);
34
+ }
35
+ return out;
36
+ }
37
+ function f64OfHex(text) {
38
+ if (typeof text !== "string" || !HEX16.test(text)) {
39
+ return undefined;
40
+ }
41
+ const bits = BigInt(`0x${text}`);
42
+ const image = new DataView(new ArrayBuffer(8));
43
+ image.setBigUint64(0, bits);
44
+ const value = image.getFloat64(0);
45
+ // Canonical only: the one NaN bit pattern, and no negative zero image.
46
+ if (f64BitsHex(value) !== text) {
47
+ return undefined;
48
+ }
49
+ return value;
50
+ }
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
+ }
60
+ switch (field.kind) {
61
+ case "bool": {
62
+ if (typeof value !== "boolean") {
63
+ throw invalid("encodeBoundaryRows");
64
+ }
65
+ return value;
66
+ }
67
+ 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
+ }
98
+ case "interval": {
99
+ if (field.element === "f64") {
100
+ if (!isFloatIntervalValue(value)) {
101
+ throw invalid("encodeBoundaryRows");
102
+ }
103
+ return { start: { $f64: f64BitsHex(value.start) }, end: { $f64: f64BitsHex(value.end) } };
104
+ }
105
+ if (!isIntervalValue(value)) {
106
+ throw invalid("encodeBoundaryRows");
107
+ }
108
+ return { start: value.start.toString(10), end: value.end.toString(10) };
109
+ }
110
+ }
111
+ }
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)) {
121
+ 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;
128
+ }
129
+ 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);
138
+ }
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
+ }
145
+ switch (field.kind) {
146
+ case "bool":
147
+ return typeof value === "boolean" ? value : undefined;
148
+ case "u64":
149
+ case "i64":
150
+ return decodeInteger(field.kind, value);
151
+ 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
+ }
163
+ 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 });
182
+ }
183
+ }
184
+ }
185
+ /** Pure schema-tagged JSON encoding of owned rows (bounded per call). */
186
+ function encodeBoundaryRows(relation, rows) {
187
+ return Result.try({
188
+ try: () => {
189
+ const out = [];
190
+ 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));
196
+ }
197
+ return Object.freeze(out);
198
+ },
199
+ catch: (cause) => (cause instanceof DbError ? cause : invalid("encodeBoundaryRows"))
200
+ });
201
+ }
202
+ /** Pure strict decoding of schema-tagged JSON rows; any refusal is typed. */
203
+ 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));
229
+ }
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
+ */
236
+ function rowSchema(relation) {
237
+ return EffectSchema.declare((value) => {
238
+ if (typeof value !== "object" || value === null) {
239
+ return false;
240
+ }
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
+ });
253
+ }
254
+ /**
255
+ * The charged CANONICAL native row codec (chapter 35 roster): owned bytes
256
+ * out, owned typed rows back in — the same implementation log sealing and
257
+ * migrations use. Binding parameters is ingestion: input must stay stable
258
+ * through execution, and no native work starts before the checked owned
259
+ * chunk exists.
260
+ */
261
+ const encodeRows = Effect.fn("encodeRows")(function* (shape, rows, work) {
262
+ 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
+ }
268
+ const flat = yield* Effect.try({
269
+ try: () => flatRowsOf(shape.relation.data, rows),
270
+ catch: (cause) => (cause instanceof DbError ? cause : invalid("encodeRows"))
271
+ });
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);
274
+ });
275
+ const decodeRows = Effect.fn("decodeRows")(function* (shape, input, work) {
276
+ 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
+ }
282
+ if (!(input instanceof Uint8Array) || !(input.buffer instanceof ArrayBuffer)) {
283
+ return yield* Effect.fail(invalid("decodeRows"));
284
+ }
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))));
287
+ });
288
+ export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
289
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { Effect } from "effect";
2
+ import type { SchemaClasses } from "./law.js";
3
+ import type { SealedDescriptor } from "./native.js";
4
+ import type { ExecutionPolicy } from "./runtime.js";
5
+ import type { AnySchema, Schema as SchemaDeclaration, SchemaRelations } from "./schema.js";
6
+ /**
7
+ * `SchemaId` — the canonical schema/theory identity (chapter 30's value
8
+ * vocabulary): the engine's canonical schema fingerprint as lowercase hex.
9
+ * Independent of database identity; a branded string so arbitrary text does
10
+ * not typecheck where a schema identity is required.
11
+ */
12
+ declare const schemaIdBrand: unique symbol;
13
+ type SchemaId = string & {
14
+ readonly [schemaIdBrand]: "bumbledb.SchemaId";
15
+ };
16
+ /**
17
+ * `CompiledSchema<S>` — bounded detached immutable descriptor data plus the
18
+ * canonical `schemaId` (chapter 35). NOT a tenant handle or a second
19
+ * user-authored schema: it needs no native finalizer, holds no native
20
+ * resource, and open/create/build compile through the same implementation —
21
+ * prior compilation is optional, never a mandatory prepare ceremony.
22
+ */
23
+ interface CompiledSchema<S extends AnySchema> {
24
+ readonly schema: S;
25
+ readonly schemaId: SchemaId;
26
+ readonly descriptor: SealedDescriptor;
27
+ }
28
+ /**
29
+ * Pure declaration-order tables shared by the whole core surface: relation
30
+ * ids (declaration order = ids), materialized statement ids (closed
31
+ * relations' auto-handle keys FIRST in relation-declaration order, then
32
+ * declared statements in declaration order with `mirrors` occupying two
33
+ * consecutive slots, source-first — the theory's `StatementId` law), and
34
+ * each relation's primary key (a closed relation's synthetic `(id)`,
35
+ * otherwise its FIRST declared `key` statement).
36
+ */
37
+ interface PrimaryKey {
38
+ readonly statementId: number;
39
+ readonly projection: readonly string[];
40
+ }
41
+ interface SchemaTables {
42
+ readonly relationIds: ReadonlyMap<string, number>;
43
+ readonly primaryKeys: ReadonlyMap<string, PrimaryKey>;
44
+ }
45
+ /** Memoized pure tables (per schema value identity; no native work). */
46
+ declare function schemaTables(theory: AnySchema): SchemaTables;
47
+ /**
48
+ * The declaration-tier `Schema<Rels, Classes>` TYPE (from `#schema.ts`),
49
+ * re-aliased LOCALLY so the one name carries both meanings through a
50
+ * SINGLE export specifier below — a local `type` + `const` merge is the
51
+ * plain TypeScript type/value merge, with no same-name pair of export
52
+ * declarations for any checker to refuse (the earlier
53
+ * `export type { Schema } from "./schema.js"` beside `export { Schema }`
54
+ * spelled the type meaning twice at the barrel; this spelling cannot).
55
+ */
56
+ type Schema<Rels extends SchemaRelations, Classes extends SchemaClasses = SchemaClasses> = SchemaDeclaration<Rels, Classes>;
57
+ /**
58
+ * The core `Schema` namespace (import as `BumbleSchema` when Effect Schema
59
+ * is also in scope — chapter 35). The `Schema<Rels>` TYPE remains the pure
60
+ * declaration from `#schema.ts` (the local alias above); this value owns
61
+ * the effectful half. One exported name, two meanings.
62
+ */
63
+ declare const Schema: Readonly<{
64
+ compile: <S extends AnySchema>(schema: S, work: ExecutionPolicy) => Effect.Effect<CompiledSchema<S>, import("./runtime-errors.js").DbError, import("./runtime.js").NativeRuntime>;
65
+ }>;
66
+ export type { CompiledSchema, PrimaryKey, SchemaId, SchemaTables };
67
+ export { Schema, schemaTables };
68
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +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;;;;;GAKG;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"}
@@ -0,0 +1,75 @@
1
+ import { Effect } from "effect";
2
+ import { isClosedMember } from "#closed.ts";
3
+ import { dbNative } from "#db-native.ts";
4
+ import { SdkInvariantError } from "#errors.ts";
5
+ import { lower } from "#lower.ts";
6
+ import { nativeOperationWith, policyWire, runtimeHandle } from "#runtime.ts";
7
+ function declaredWidth(statement) {
8
+ return statement.data.kind === "mirrors" ? 2 : 1;
9
+ }
10
+ function tablesOf(theory) {
11
+ const relationIds = new Map();
12
+ const primaryKeys = new Map();
13
+ let autoKeys = 0;
14
+ Object.entries(theory.relations).forEach(function assignRelation([name, member], ordinal) {
15
+ relationIds.set(name, ordinal);
16
+ if (isClosedMember(member)) {
17
+ primaryKeys.set(name, Object.freeze({ statementId: autoKeys, projection: Object.freeze(["id"]) }));
18
+ autoKeys += 1;
19
+ }
20
+ });
21
+ let offset = autoKeys;
22
+ 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
+ }
27
+ offset += declaredWidth(statement);
28
+ }
29
+ return Object.freeze({ relationIds, primaryKeys });
30
+ }
31
+ const compiledCache = new WeakMap();
32
+ /** Memoized pure tables (per schema value identity; no native work). */
33
+ function schemaTables(theory) {
34
+ const cached = compiledCache.get(theory);
35
+ if (cached !== undefined) {
36
+ return cached;
37
+ }
38
+ const built = tablesOf(theory);
39
+ compiledCache.set(theory, built);
40
+ return built;
41
+ }
42
+ function admitSchemaId(fingerprint) {
43
+ if (typeof fingerprint !== "string" || fingerprint.length === 0) {
44
+ throw new SdkInvariantError({ message: "Schema.compile: the engine returned no canonical fingerprint" });
45
+ }
46
+ return fingerprint;
47
+ }
48
+ /**
49
+ * Charged, effectful native schema admission/compilation (chapter 35): a
50
+ * 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
52
+ * acquired {@link NativeRuntime}, and yields detached immutable descriptor
53
+ * data plus the canonical schema identity. No database is opened and no
54
+ * native finalizer is created.
55
+ */
56
+ const compile = Effect.fn("Schema.compile")(function* (schema, work) {
57
+ 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);
60
+ const compiled = Object.freeze({
61
+ schema,
62
+ schemaId: admitSchemaId(descriptor.fingerprint),
63
+ descriptor
64
+ });
65
+ return compiled;
66
+ });
67
+ /**
68
+ * The core `Schema` namespace (import as `BumbleSchema` when Effect Schema
69
+ * is also in scope — chapter 35). The `Schema<Rels>` TYPE remains the pure
70
+ * declaration from `#schema.ts` (the local alias above); this value owns
71
+ * the effectful half. One exported name, two meanings.
72
+ */
73
+ const Schema = Object.freeze({ compile });
74
+ export { Schema, schemaTables };
75
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Private core database bridge roster — the C09/C05 CONSUMER-side pin for
3
+ * the managed runtime verbs the chapter 35 core surface dispatches. Not a
4
+ * public API: nothing here is exported from the package barrel.
5
+ *
6
+ * OWNERSHIP NOTE (recorded in implementation/packets/P07.md): the addon
7
+ * implementation of every verb below is P06R's lane (`ts/crate/src/`,
8
+ * worker-affine sessions per P06.md's reactor design) on top of P02's C04
9
+ * owned snapshots and P03's C05 completed results. This file declares the
10
+ * exact shapes P07 codes against, exactly as `#runtime-native.ts` pins the
11
+ * landed runtime/directory/fs handshake. Every verb runs on the ONE bounded
12
+ * executor (no AsyncTask/libuv bypass), registers under the runtime's
13
+ * operation accounting, takes a `PolicyWire` converted once at admission,
14
+ * and completes through the registered callback; `runtimeCancel` cancels
15
+ * and joins any of them. Close verbs report the real drain outcome through
16
+ * `CloseWire`.
17
+ */
18
+ import type { DbHandle, ParsedQuery, QueryParam, SealedDescriptor, Violation } from "./native.js";
19
+ import { native } from "./native.js";
20
+ import type { CellValue } from "./rows.js";
21
+ import type { CloseWire, OperationHandle, PolicyWire, RuntimeHandle } from "./runtime-native.js";
22
+ import type { SchemaSpec } from "./spec.js";
23
+ export interface SnapshotHandle {
24
+ readonly __snapshot: unique symbol;
25
+ }
26
+ export interface SessionHandle {
27
+ readonly __session: unique symbol;
28
+ }
29
+ export interface ResultHandle {
30
+ readonly __result: unique symbol;
31
+ }
32
+ export interface CursorHandle {
33
+ readonly __cursor: unique symbol;
34
+ }
35
+ export interface DraftHandle {
36
+ readonly __draft: unique symbol;
37
+ }
38
+ export interface ChangesHandle {
39
+ readonly __changes: unique symbol;
40
+ }
41
+ /** The core-local witness: catalog/store identity plus generation, never a StateStamp. */
42
+ export interface WitnessWire {
43
+ readonly store: string;
44
+ readonly generation: bigint;
45
+ }
46
+ export type ExpectedWire = {
47
+ readonly kind: "any";
48
+ } | {
49
+ readonly kind: "exact";
50
+ readonly store: string;
51
+ readonly generation: bigint;
52
+ };
53
+ export type ApplyOutcomeWire = {
54
+ readonly tag: "accepted";
55
+ readonly witness: WitnessWire;
56
+ } | {
57
+ readonly tag: "no-change";
58
+ readonly witness: WitnessWire;
59
+ } | {
60
+ readonly tag: "invariant-rejected";
61
+ readonly violations: readonly Violation[];
62
+ } | {
63
+ readonly tag: "moved";
64
+ readonly witnessed: WitnessWire;
65
+ readonly current: WitnessWire;
66
+ };
67
+ /** Bounded database diagnostics: measurements, never retained row payloads. */
68
+ export interface DbInspectionWire {
69
+ readonly generation: bigint;
70
+ readonly mapBytes: bigint;
71
+ readonly populatedBytes: bigint;
72
+ readonly diskBytes: bigint;
73
+ readonly residentEstimateBytes: bigint;
74
+ readonly retainedOperations: bigint;
75
+ }
76
+ export interface SnapshotWire {
77
+ readonly snapshot: SnapshotHandle;
78
+ readonly witness: WitnessWire;
79
+ }
80
+ export interface ChangesWire {
81
+ readonly changes: ChangesHandle;
82
+ readonly fingerprint: string;
83
+ }
84
+ export interface MutationReportWire {
85
+ readonly submitted: bigint;
86
+ readonly changed: bigint;
87
+ }
88
+ interface DbBridge {
89
+ /** Charged schema admission/compilation; take yields detached descriptor data. */
90
+ runtimeSchemaCompile(runtime: RuntimeHandle, policy: PolicyWire, spec: SchemaSpec, callback: () => void): OperationHandle;
91
+ runtimeSchemaTake(operation: OperationHandle): SealedDescriptor;
92
+ /** Coherent owned snapshot acquisition off a managed database. */
93
+ runtimeDbSnapshot(db: DbHandle, policy: PolicyWire, callback: () => void): OperationHandle;
94
+ runtimeSnapshotTake(operation: OperationHandle): SnapshotWire;
95
+ runtimeSnapshotClose(snapshot: SnapshotHandle, callback: (report: CloseWire) => void): void;
96
+ /** Reusable snapshot-bound execution session (worker-affine natively). */
97
+ runtimeSnapshotSession(snapshot: SnapshotHandle, policy: PolicyWire, callback: () => void): OperationHandle;
98
+ runtimeSessionTake(operation: OperationHandle): SessionHandle;
99
+ runtimeSessionClose(session: SessionHandle, callback: (report: CloseWire) => void): void;
100
+ /** Exact-key point read; take yields one owned row or null (absent). */
101
+ runtimeSnapshotGet(snapshot: SnapshotHandle, policy: PolicyWire, relationId: number, keyStatementId: number, keyCells: readonly CellValue[], callback: () => void): OperationHandle;
102
+ runtimeRowTake(operation: OperationHandle): readonly CellValue[] | null;
103
+ /**
104
+ * Complete bounded execution. The snapshot variant owns an internal
105
+ * one-shot session and closes it before publishing the result; the
106
+ * session variant reuses the caller's session. Either way the result is
107
+ * sealed and independent only after ALL evaluation succeeded (C05).
108
+ */
109
+ runtimeSnapshotExecute(snapshot: SnapshotHandle, policy: PolicyWire, query: ParsedQuery, params: readonly QueryParam[], callback: () => void): OperationHandle;
110
+ runtimeSessionExecute(session: SessionHandle, policy: PolicyWire, query: ParsedQuery, params: readonly QueryParam[], callback: () => void): OperationHandle;
111
+ runtimeResultTake(operation: OperationHandle): ResultHandle;
112
+ runtimeResultClose(result: ResultHandle, callback: (report: CloseWire) => void): void;
113
+ /**
114
+ * Bounded total materialization: refuses (ResourceLimit) BEFORE
115
+ * allocating past `policy.resultBytes`; a cap failure leaves the sealed
116
+ * backing available. Take yields owned row arrays.
117
+ */
118
+ runtimeResultCollect(result: ResultHandle, policy: PolicyWire, callback: () => void): OperationHandle;
119
+ runtimeRowsTake(operation: OperationHandle): readonly (readonly CellValue[])[];
120
+ /**
121
+ * Atomic spend: moves the completed result's backing storage into one
122
+ * private cursor. A second transfer, or transfer racing collect,
123
+ * refuses (SpentHandle) before touching the backing.
124
+ */
125
+ runtimeResultCursor(result: ResultHandle, policy: PolicyWire, callback: () => void): OperationHandle;
126
+ runtimeCursorTake(operation: OperationHandle): CursorHandle;
127
+ /** One owned page bounded by `policy.resultBytes`; null is EOF (cursor storage reclaimed). */
128
+ runtimeCursorNext(cursor: CursorHandle, policy: PolicyWire, callback: () => void): OperationHandle;
129
+ runtimePageTake(operation: OperationHandle): readonly (readonly CellValue[])[] | null;
130
+ runtimeCursorClose(cursor: CursorHandle, callback: (report: CloseWire) => void): void;
131
+ /** Database-free draft acquisition (schema compiled/checked on the executor). */
132
+ runtimeDraftOpen(runtime: RuntimeHandle, policy: PolicyWire, spec: SchemaSpec, callback: () => void): OperationHandle;
133
+ runtimeDraftTake(operation: OperationHandle): DraftHandle;
134
+ /**
135
+ * One bounded ingestion chunk (rows × arity cells, row-major, sealed
136
+ * field order). Chunks share the draft's cumulative aggregate budget —
137
+ * they never reset it. Failure spends the draft and starts tracked
138
+ * drain natively.
139
+ */
140
+ runtimeDraftInsert(draft: DraftHandle, policy: PolicyWire, relationId: number, rows: bigint, cells: readonly CellValue[], callback: () => void): OperationHandle;
141
+ runtimeDraftDelete(draft: DraftHandle, policy: PolicyWire, relationId: number, rows: bigint, cells: readonly CellValue[], callback: () => void): OperationHandle;
142
+ runtimeReportTake(operation: OperationHandle): MutationReportWire;
143
+ /** Consumes the draft into an immutable schema-bound ChangeSet (one command, add-wins normalization). */
144
+ runtimeDraftFinish(draft: DraftHandle, policy: PolicyWire, callback: () => void): OperationHandle;
145
+ runtimeChangesTake(operation: OperationHandle): ChangesWire;
146
+ runtimeDraftClose(draft: DraftHandle, callback: (report: CloseWire) => void): void;
147
+ runtimeChangesClose(changes: ChangesHandle, callback: (report: CloseWire) => void): void;
148
+ /** One immutable final-state admission/commit under the managed owner. */
149
+ runtimeDbApply(db: DbHandle, policy: PolicyWire, changes: ChangesHandle, expected: ExpectedWire, callback: () => void): OperationHandle;
150
+ runtimeApplyTake(operation: OperationHandle): ApplyOutcomeWire;
151
+ runtimeDbInspect(db: DbHandle, policy: PolicyWire, callback: () => void): OperationHandle;
152
+ runtimeDbInspectTake(operation: OperationHandle): DbInspectionWire;
153
+ /** Shared canonical row codec (also the log/migration encoding). */
154
+ runtimeEncodeRows(runtime: RuntimeHandle, policy: PolicyWire, spec: SchemaSpec, relationId: number, rows: bigint, cells: readonly CellValue[], callback: () => void): OperationHandle;
155
+ runtimeBytesTake(operation: OperationHandle): Uint8Array;
156
+ runtimeDecodeRows(runtime: RuntimeHandle, policy: PolicyWire, spec: SchemaSpec, relationId: number, bytes: Uint8Array, callback: () => void): OperationHandle;
157
+ /**
158
+ * Read-only migration-codec integration (C11; P09's native
159
+ * `schema_file::{schema_id, render}` / `migration::{plan, manifest}`
160
+ * lanes reached through the P06 executor). `hashChunk`-shaped: bounded
161
+ * owned input, bounded owned JSON response bytes, one registered
162
+ * cancellable operation. Neither verb opens, initializes, freezes or
163
+ * migrates a database.
164
+ */
165
+ runtimeMigrationSchema(runtime: RuntimeHandle, policy: PolicyWire, spec: SchemaSpec, callback: () => void): OperationHandle;
166
+ runtimeMigrationRead(runtime: RuntimeHandle, policy: PolicyWire, request: Uint8Array, callback: () => void): OperationHandle;
167
+ }
168
+ export declare const dbNative: typeof native & DbBridge;
169
+ export {};
170
+ //# sourceMappingURL=db-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-native.d.ts","sourceRoot":"","sources":["../src/db-native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { native } from "#native.ts";
2
+ // The fresh-addon roster test pins this private declaration exactly as it
3
+ // pins #runtime-native.ts's; the two casts re-type the SAME single binding.
4
+ export const dbNative = native;
5
+ //# sourceMappingURL=db-native.js.map