@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.
- package/COOKBOOK.md +283 -1611
- package/README.md +156 -118
- package/dist/capacity.d.ts +16 -12
- package/dist/capacity.d.ts.map +1 -1
- package/dist/capacity.js +16 -48
- package/dist/capacity.js.map +1 -1
- package/dist/changes.d.ts +54 -0
- package/dist/changes.d.ts.map +1 -0
- package/dist/changes.js +245 -0
- package/dist/changes.js.map +1 -0
- package/dist/close.d.ts +24 -0
- package/dist/close.d.ts.map +1 -0
- package/dist/close.js +34 -0
- package/dist/close.js.map +1 -0
- package/dist/closed.d.ts +1 -3
- package/dist/closed.d.ts.map +1 -1
- package/dist/closed.js +24 -12
- package/dist/closed.js.map +1 -1
- package/dist/codec.d.ts +56 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +289 -0
- package/dist/codec.js.map +1 -0
- package/dist/compile.d.ts +68 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +75 -0
- package/dist/compile.js.map +1 -0
- package/dist/db-native.d.ts +170 -0
- package/dist/db-native.d.ts.map +1 -0
- package/dist/db-native.js +5 -0
- package/dist/db-native.js.map +1 -0
- package/dist/db.d.ts +101 -233
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +232 -1084
- package/dist/db.js.map +1 -1
- package/dist/errors.d.ts +57 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +32 -0
- package/dist/errors.js.map +1 -0
- package/dist/face.d.ts.map +1 -1
- package/dist/face.js +2 -2
- package/dist/face.js.map +1 -1
- package/dist/fields.d.ts +65 -24
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +94 -24
- package/dist/fields.js.map +1 -1
- package/dist/index.d.ts +37 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -21
- package/dist/index.js.map +1 -1
- package/dist/internal/log.d.ts +24 -0
- package/dist/internal/log.d.ts.map +1 -0
- package/dist/internal/log.js +10 -0
- package/dist/internal/log.js.map +1 -0
- package/dist/law.d.ts +8 -13
- package/dist/law.d.ts.map +1 -1
- package/dist/law.js +6 -59
- package/dist/law.js.map +1 -1
- package/dist/lower.d.ts +0 -13
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +9 -17
- package/dist/lower.js.map +1 -1
- package/dist/migration.d.ts +33 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +48 -0
- package/dist/migration.js.map +1 -0
- package/dist/native.d.ts +256 -301
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +65 -108
- package/dist/native.js.map +1 -1
- package/dist/query/atom.d.ts +24 -13
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +7 -3
- package/dist/query/atom.js.map +1 -1
- package/dist/query/compute.d.ts +68 -0
- package/dist/query/compute.d.ts.map +1 -0
- package/dist/query/compute.js +141 -0
- package/dist/query/compute.js.map +1 -0
- package/dist/query/find.d.ts +15 -8
- package/dist/query/find.d.ts.map +1 -1
- package/dist/query/find.js +6 -2
- package/dist/query/find.js.map +1 -1
- package/dist/query/lower.d.ts +23 -2
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +433 -80
- package/dist/query/lower.js.map +1 -1
- package/dist/query/parse-ir.d.ts.map +1 -1
- package/dist/query/parse-ir.js +17 -8
- package/dist/query/parse-ir.js.map +1 -1
- package/dist/query/run.d.ts +12 -2
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +26 -9
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +47 -3
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js +83 -19
- package/dist/query/scope.js.map +1 -1
- package/dist/relation.d.ts +3 -8
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +16 -10
- package/dist/relation.js.map +1 -1
- package/dist/result.d.ts +47 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +50 -0
- package/dist/result.js.map +1 -0
- package/dist/rows.d.ts +69 -0
- package/dist/rows.d.ts.map +1 -0
- package/dist/rows.js +328 -0
- package/dist/rows.js.map +1 -0
- package/dist/runtime-codes.d.ts +2 -0
- package/dist/runtime-codes.d.ts.map +1 -0
- package/dist/runtime-codes.js +19 -0
- package/dist/runtime-codes.js.map +1 -0
- package/dist/runtime-errors.d.ts +106 -0
- package/dist/runtime-errors.d.ts.map +1 -0
- package/dist/runtime-errors.js +62 -0
- package/dist/runtime-errors.js.map +1 -0
- package/dist/runtime-native.d.ts +171 -0
- package/dist/runtime-native.d.ts.map +1 -0
- package/dist/runtime-native.js +5 -0
- package/dist/runtime-native.js.map +1 -0
- package/dist/runtime.d.ts +73 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +293 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scalar.d.ts +165 -0
- package/dist/scalar.d.ts.map +1 -0
- package/dist/scalar.js +344 -0
- package/dist/scalar.js.map +1 -0
- package/dist/schema.d.ts +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +34 -37
- package/dist/schema.js.map +1 -1
- package/dist/shape.d.ts +28 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +2 -0
- package/dist/shape.js.map +1 -0
- package/dist/spec.d.ts +27 -3
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +22 -1
- package/dist/spec.js.map +1 -1
- package/dist/statements.d.ts +16 -3
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +54 -28
- package/dist/statements.js.map +1 -1
- package/dist/uuid.d.ts +23 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +54 -0
- package/dist/uuid.js.map +1 -0
- package/pack-provenance.json +7 -0
- package/package.json +12 -16
- package/src/capacity.ts +34 -54
- package/src/changes.ts +361 -0
- package/src/close.ts +53 -0
- package/src/closed.ts +25 -19
- package/src/codec.ts +379 -0
- package/src/compile.ts +149 -0
- package/src/db-native.ts +247 -0
- package/src/db.ts +461 -1632
- package/src/errors.ts +50 -0
- package/src/face.ts +2 -2
- package/src/fields.ts +182 -55
- package/src/index.ts +62 -126
- package/src/internal/log.ts +51 -0
- package/src/law.ts +13 -28
- package/src/lower.ts +9 -4
- package/src/migration.ts +69 -0
- package/src/native.ts +326 -487
- package/src/query/atom.ts +61 -25
- package/src/query/compute.ts +237 -0
- package/src/query/find.ts +31 -12
- package/src/query/lower.ts +531 -143
- package/src/query/parse-ir.ts +18 -13
- package/src/query/run.ts +32 -16
- package/src/query/scope.ts +140 -8
- package/src/relation.ts +17 -21
- package/src/result.ts +130 -0
- package/src/rows.ts +404 -0
- package/src/runtime-codes.ts +18 -0
- package/src/runtime-errors.ts +69 -0
- package/src/runtime-native.ts +242 -0
- package/src/runtime.ts +440 -0
- package/src/scalar.ts +560 -0
- package/src/schema.ts +35 -37
- package/src/shape.ts +31 -0
- package/src/spec.ts +33 -3
- package/src/statements.ts +75 -68
- package/src/uuid.ts +69 -0
- package/dist/marshal.d.ts +0 -44
- package/dist/marshal.d.ts.map +0 -1
- package/dist/marshal.js +0 -165
- package/dist/marshal.js.map +0 -1
- 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"}
|
package/dist/compile.js
ADDED
|
@@ -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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"}
|