@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/rows.js
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { AuthoringError, SdkInvariantError } from "#errors.ts";
|
|
2
|
+
import { isFloatIntervalValue, isIntervalValue, literalShapeError, rosterOf } from "#fields.ts";
|
|
3
|
+
import { Uuid } from "#uuid.ts";
|
|
4
|
+
/** Converter-granularity host cell wall (64 KiB). One oversize cell refuses. */
|
|
5
|
+
const HOST_CELL_MAX = 65536n;
|
|
6
|
+
function recordOf(fact) {
|
|
7
|
+
if (typeof fact !== "object" && typeof fact !== "function") {
|
|
8
|
+
throw new AuthoringError({ message: "fact object is not string-indexable" });
|
|
9
|
+
}
|
|
10
|
+
return fact;
|
|
11
|
+
}
|
|
12
|
+
function refuseShared(context, value) {
|
|
13
|
+
if (!(value.buffer instanceof ArrayBuffer)) {
|
|
14
|
+
throw new AuthoringError({
|
|
15
|
+
message: `${context}: SharedArrayBuffer-backed views are refused — make a synchronized stable copy into ordinary unshared input first`
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Cheap host charge before any string scan or byte copy (TS-004). UTF-16
|
|
21
|
+
* code units × 2 upper-bounds UTF-8; byte views charge their length.
|
|
22
|
+
*/
|
|
23
|
+
function hostCellCharge(value) {
|
|
24
|
+
if (typeof value === "string") {
|
|
25
|
+
return BigInt(value.length) * 2n;
|
|
26
|
+
}
|
|
27
|
+
if (value instanceof Uint8Array) {
|
|
28
|
+
return BigInt(value.byteLength);
|
|
29
|
+
}
|
|
30
|
+
if (typeof value === "boolean") {
|
|
31
|
+
return 1n;
|
|
32
|
+
}
|
|
33
|
+
if (typeof value === "bigint" || typeof value === "number") {
|
|
34
|
+
return 8n;
|
|
35
|
+
}
|
|
36
|
+
if (value !== null && typeof value === "object" && "start" in value && "end" in value) {
|
|
37
|
+
return 16n;
|
|
38
|
+
}
|
|
39
|
+
return 0n;
|
|
40
|
+
}
|
|
41
|
+
function assertHostCellFits(context, value, limit) {
|
|
42
|
+
const charge = hostCellCharge(value);
|
|
43
|
+
if (charge > limit) {
|
|
44
|
+
throw new AuthoringError({
|
|
45
|
+
message: `${context}: host cell of ${charge} bytes exceeds the ${limit}-byte converter bound — refuse before copy or scan`
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return charge;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The write half of the closed bijection: one handle NAME to its u64 row
|
|
52
|
+
* id (declaration order = row ids). An unknown name is a pointed refusal
|
|
53
|
+
* naming the vocabulary and its roster.
|
|
54
|
+
*/
|
|
55
|
+
function closedCellOf(context, closed, name) {
|
|
56
|
+
const id = closed.handles.indexOf(name);
|
|
57
|
+
if (id === -1) {
|
|
58
|
+
throw new AuthoringError({
|
|
59
|
+
message: `${context}: "${name}" is not a handle of ${closed.name} — the roster is ${closed.handles.join(", ")}`
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return BigInt(id);
|
|
63
|
+
}
|
|
64
|
+
function handleOf(context, closed, cell) {
|
|
65
|
+
if (typeof cell !== "bigint") {
|
|
66
|
+
throw literalShapeError(context, `a ${closed.name} handle id (bigint)`, cell);
|
|
67
|
+
}
|
|
68
|
+
const handle = closed.handles[Number(cell)];
|
|
69
|
+
if (handle === undefined) {
|
|
70
|
+
throw new AuthoringError({
|
|
71
|
+
message: `${context}: id ${cell} is outside the ${closed.name} roster (${closed.handles.join(", ")})`
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return handle;
|
|
75
|
+
}
|
|
76
|
+
/** Conservative owned-byte charge of one cell (host accounting, not wire). */
|
|
77
|
+
function cellBytes(cell) {
|
|
78
|
+
if (typeof cell === "boolean") {
|
|
79
|
+
return 1n;
|
|
80
|
+
}
|
|
81
|
+
if (typeof cell === "bigint" || typeof cell === "number") {
|
|
82
|
+
return 8n;
|
|
83
|
+
}
|
|
84
|
+
if (typeof cell === "string") {
|
|
85
|
+
// UTF-16 code units × 2 is a cheap safe upper bound before exact
|
|
86
|
+
// UTF-8 conversion is charged natively (chapter 35: reject oversize
|
|
87
|
+
// cells with cheap length bounds before costly conversion).
|
|
88
|
+
return BigInt(cell.length) * 2n;
|
|
89
|
+
}
|
|
90
|
+
if (cell instanceof Uint8Array) {
|
|
91
|
+
return BigInt(cell.byteLength);
|
|
92
|
+
}
|
|
93
|
+
return 16n;
|
|
94
|
+
}
|
|
95
|
+
function cellOf(context, field, value) {
|
|
96
|
+
const roster = rosterOf(field);
|
|
97
|
+
if (roster !== undefined) {
|
|
98
|
+
if (typeof value !== "string") {
|
|
99
|
+
throw literalShapeError(context, `a ${roster.name} handle name (string)`, value);
|
|
100
|
+
}
|
|
101
|
+
return closedCellOf(context, roster, value);
|
|
102
|
+
}
|
|
103
|
+
switch (field.kind) {
|
|
104
|
+
case "bool": {
|
|
105
|
+
if (typeof value !== "boolean") {
|
|
106
|
+
throw literalShapeError(context, "boolean", value);
|
|
107
|
+
}
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
case "u64":
|
|
111
|
+
case "i64": {
|
|
112
|
+
if (typeof value !== "bigint") {
|
|
113
|
+
throw literalShapeError(context, "bigint", value);
|
|
114
|
+
}
|
|
115
|
+
return value;
|
|
116
|
+
}
|
|
117
|
+
case "str": {
|
|
118
|
+
if (typeof value !== "string") {
|
|
119
|
+
throw literalShapeError(context, "string", value);
|
|
120
|
+
}
|
|
121
|
+
assertHostCellFits(context, value, HOST_CELL_MAX);
|
|
122
|
+
if (!value.isWellFormed()) {
|
|
123
|
+
throw literalShapeError(context, "well-formed string", value);
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
case "f64": {
|
|
128
|
+
if (typeof value !== "number") {
|
|
129
|
+
throw literalShapeError(context, "number", value);
|
|
130
|
+
}
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
case "uuid": {
|
|
134
|
+
if (!Uuid.isUuid(value)) {
|
|
135
|
+
throw literalShapeError(context, "a UUID (canonical UUID text)", value);
|
|
136
|
+
}
|
|
137
|
+
// Chapter 35: uuid crosses the bridge as the canonical
|
|
138
|
+
// canonical hyphenated UUID STRING (the native marshal's spelling),
|
|
139
|
+
// never as sixteen raw bytes.
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
142
|
+
case "bytes": {
|
|
143
|
+
if (!(value instanceof Uint8Array)) {
|
|
144
|
+
throw literalShapeError(context, "Uint8Array", value);
|
|
145
|
+
}
|
|
146
|
+
refuseShared(context, value);
|
|
147
|
+
assertHostCellFits(context, value, HOST_CELL_MAX);
|
|
148
|
+
if (value.byteLength !== field.width) {
|
|
149
|
+
throw new AuthoringError({
|
|
150
|
+
message: `${context}: bytes<${field.width}> takes exactly ${field.width} bytes (got ${value.byteLength})`
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// Owned copy at the ownership boundary: later caller mutation
|
|
154
|
+
// cannot change an accepted cell.
|
|
155
|
+
return Uint8Array.from(value);
|
|
156
|
+
}
|
|
157
|
+
case "interval": {
|
|
158
|
+
if (field.element === "f64") {
|
|
159
|
+
if (!isFloatIntervalValue(value)) {
|
|
160
|
+
throw literalShapeError(context, "float interval ({ start, end } numbers)", value);
|
|
161
|
+
}
|
|
162
|
+
if (Number.isNaN(value.start) || Number.isNaN(value.end)) {
|
|
163
|
+
throw new AuthoringError({ message: `${context}: a float interval endpoint cannot be NaN` });
|
|
164
|
+
}
|
|
165
|
+
const start = Object.is(value.start, -0) ? 0 : value.start;
|
|
166
|
+
const end = Object.is(value.end, -0) ? 0 : value.end;
|
|
167
|
+
if (!(start < end)) {
|
|
168
|
+
throw new AuthoringError({
|
|
169
|
+
message: `${context}: a float interval is half-open and nonempty (start < end strictly)`
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return { start, end };
|
|
173
|
+
}
|
|
174
|
+
if (!isIntervalValue(value)) {
|
|
175
|
+
throw literalShapeError(context, "interval ({ start, end } bigints)", value);
|
|
176
|
+
}
|
|
177
|
+
return { start: value.start, end: value.end };
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* The flat projector: every fact's cells land in ONE row-major cell array
|
|
183
|
+
* (length rows × arity) with the row count and charged byte size counted
|
|
184
|
+
* while projecting. Missing-field refusal and per-cell judgment are
|
|
185
|
+
* {@link cellOf}'s, byte for byte.
|
|
186
|
+
*/
|
|
187
|
+
function flatRowsOf(data, facts) {
|
|
188
|
+
const cells = [];
|
|
189
|
+
let rows = 0n;
|
|
190
|
+
let bytes = 0n;
|
|
191
|
+
for (const fact of facts) {
|
|
192
|
+
rows += 1n;
|
|
193
|
+
const record = recordOf(fact);
|
|
194
|
+
for (const declared of data.fields) {
|
|
195
|
+
const value = record[declared.name];
|
|
196
|
+
if (value === undefined) {
|
|
197
|
+
throw new AuthoringError({ message: `relation ${data.name}: fact is missing field ${declared.name}` });
|
|
198
|
+
}
|
|
199
|
+
const cell = cellOf(`relation ${data.name} field ${declared.name}`, declared.field, value);
|
|
200
|
+
bytes += cellBytes(cell);
|
|
201
|
+
cells.push(cell);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return { rows, cells, bytes };
|
|
205
|
+
}
|
|
206
|
+
function keyCellsOf(data, projection, key) {
|
|
207
|
+
for (const supplied of Object.keys(key)) {
|
|
208
|
+
if (key[supplied] !== undefined && !projection.includes(supplied)) {
|
|
209
|
+
throw new AuthoringError({
|
|
210
|
+
message: `relation ${data.name}: key object carries field ${supplied} outside the primary key projection (${projection.join(", ")})`
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return projection.map(function marshalKeyCell(fieldName) {
|
|
215
|
+
const declared = data.fields.find(function byName(candidate) {
|
|
216
|
+
return candidate.name === fieldName;
|
|
217
|
+
});
|
|
218
|
+
if (declared === undefined) {
|
|
219
|
+
throw new AuthoringError({
|
|
220
|
+
message: `relation ${data.name}: key projection cites unknown field ${fieldName}`
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const value = key[fieldName];
|
|
224
|
+
if (value === undefined) {
|
|
225
|
+
throw new AuthoringError({
|
|
226
|
+
message: `relation ${data.name}: key object is missing field ${fieldName} — get reads through the primary (first-declared) key, whose projection is (${projection.join(", ")})`
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return cellOf(`relation ${data.name} key field ${fieldName}`, declared.field, value);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
function decodeCell(context, field, cell) {
|
|
233
|
+
const roster = rosterOf(field);
|
|
234
|
+
if (roster !== undefined) {
|
|
235
|
+
return handleOf(context, roster, cell);
|
|
236
|
+
}
|
|
237
|
+
switch (field.kind) {
|
|
238
|
+
case "bool": {
|
|
239
|
+
if (typeof cell !== "boolean") {
|
|
240
|
+
throw new SdkInvariantError({ message: `${context}: expected boolean cell` });
|
|
241
|
+
}
|
|
242
|
+
return cell;
|
|
243
|
+
}
|
|
244
|
+
case "u64":
|
|
245
|
+
case "i64": {
|
|
246
|
+
if (typeof cell !== "bigint") {
|
|
247
|
+
throw new SdkInvariantError({ message: `${context}: expected bigint cell` });
|
|
248
|
+
}
|
|
249
|
+
return cell;
|
|
250
|
+
}
|
|
251
|
+
case "f64": {
|
|
252
|
+
if (typeof cell !== "number") {
|
|
253
|
+
throw new SdkInvariantError({ message: `${context}: expected number cell` });
|
|
254
|
+
}
|
|
255
|
+
return cell;
|
|
256
|
+
}
|
|
257
|
+
case "str": {
|
|
258
|
+
if (typeof cell !== "string") {
|
|
259
|
+
throw new SdkInvariantError({ message: `${context}: expected string cell` });
|
|
260
|
+
}
|
|
261
|
+
return cell;
|
|
262
|
+
}
|
|
263
|
+
case "uuid": {
|
|
264
|
+
// The native renderer spells uuid as the canonical
|
|
265
|
+
// canonical hyphenated UUID string (marshal.rs `uuid_hex`); the read
|
|
266
|
+
// side revalidates the spelling and keeps the string value.
|
|
267
|
+
if (!Uuid.isUuid(cell)) {
|
|
268
|
+
throw new SdkInvariantError({
|
|
269
|
+
message: `${context}: expected an uuid cell (canonical UUID text)`
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
return cell;
|
|
273
|
+
}
|
|
274
|
+
case "bytes": {
|
|
275
|
+
if (!(cell instanceof Uint8Array)) {
|
|
276
|
+
throw new SdkInvariantError({ message: `${context}: expected owned bytes` });
|
|
277
|
+
}
|
|
278
|
+
return cell;
|
|
279
|
+
}
|
|
280
|
+
case "interval": {
|
|
281
|
+
if (field.element === "f64") {
|
|
282
|
+
if (!isFloatIntervalValue(cell)) {
|
|
283
|
+
throw new SdkInvariantError({ message: `${context}: expected a float interval cell` });
|
|
284
|
+
}
|
|
285
|
+
return Object.freeze({ start: cell.start, end: cell.end });
|
|
286
|
+
}
|
|
287
|
+
if (!isIntervalValue(cell)) {
|
|
288
|
+
throw new SdkInvariantError({ message: `${context}: expected an integer interval cell` });
|
|
289
|
+
}
|
|
290
|
+
return Object.freeze({ start: cell.start, end: cell.end });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function isCompleteFact(relation, decoded) {
|
|
295
|
+
return relation.data.fields.every(function present(declared) {
|
|
296
|
+
return decoded[declared.name] !== undefined;
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* The read half: one owned positional row into a plain frozen record in
|
|
301
|
+
* declared field order — the SAME fields and shapes on every row (chapter
|
|
302
|
+
* 35's stable row shape rule; no Proxy, no per-cell closures).
|
|
303
|
+
*/
|
|
304
|
+
function factOfCells(relation, row) {
|
|
305
|
+
const data = relation.data;
|
|
306
|
+
if (row.length !== data.fields.length) {
|
|
307
|
+
throw new SdkInvariantError({
|
|
308
|
+
message: `relation ${data.name}: row arity ${row.length} does not match the ${data.fields.length} declared fields`
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
const decoded = {};
|
|
312
|
+
data.fields.forEach(function decodeOne(declared, ordinal) {
|
|
313
|
+
const cell = row[ordinal];
|
|
314
|
+
if (cell === undefined) {
|
|
315
|
+
throw new SdkInvariantError({
|
|
316
|
+
message: `relation ${data.name}: row cell ${ordinal} (${declared.name}) is absent`
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
decoded[declared.name] = decodeCell(`relation ${data.name} field ${declared.name}`, declared.field, cell);
|
|
320
|
+
});
|
|
321
|
+
Object.freeze(decoded);
|
|
322
|
+
if (!isCompleteFact(relation, decoded)) {
|
|
323
|
+
throw new SdkInvariantError({ message: `relation ${data.name}: decoded row is not a complete fact` });
|
|
324
|
+
}
|
|
325
|
+
return decoded;
|
|
326
|
+
}
|
|
327
|
+
export { assertHostCellFits, cellBytes, cellOf, decodeCell, factOfCells, flatRowsOf, handleOf, hostCellCharge, keyCellsOf, recordOf };
|
|
328
|
+
//# sourceMappingURL=rows.js.map
|
package/dist/rows.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rows.js","sourceRoot":"","sources":["../src/rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const runtimeErrorCodes: readonly ["RuntimeAlreadyLive", "ForeignRuntime", "ClosedHandle", "SpentHandle", "QueueFull", "InvalidArgument", "Internal", "DirectoryBusy", "WriterBusy", "InvalidPath", "Io", "ResourceLimit", "Engine", "Cancelled", "DeadlineExceeded"];
|
|
2
|
+
//# sourceMappingURL=runtime-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-codes.d.ts","sourceRoot":"","sources":["../src/runtime-codes.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,YAC7B,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,kBAAkB,CACT,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Generated from the exact native runtimeErrorCodes export; do not edit.
|
|
2
|
+
export const runtimeErrorCodes = [
|
|
3
|
+
"RuntimeAlreadyLive",
|
|
4
|
+
"ForeignRuntime",
|
|
5
|
+
"ClosedHandle",
|
|
6
|
+
"SpentHandle",
|
|
7
|
+
"QueueFull",
|
|
8
|
+
"InvalidArgument",
|
|
9
|
+
"Internal",
|
|
10
|
+
"DirectoryBusy",
|
|
11
|
+
"WriterBusy",
|
|
12
|
+
"InvalidPath",
|
|
13
|
+
"Io",
|
|
14
|
+
"ResourceLimit",
|
|
15
|
+
"Engine",
|
|
16
|
+
"Cancelled",
|
|
17
|
+
"DeadlineExceeded"
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=runtime-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-codes.js","sourceRoot":"","sources":["../src/runtime-codes.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,YAAY;IACZ,aAAa;IACb,IAAI;IACJ,eAAe;IACf,QAAQ;IACR,WAAW;IACX,kBAAkB;CACT,CAAA"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
export { runtimeErrorCodes } from "./runtime-codes.js";
|
|
3
|
+
export declare const DbReason: Schema.Union<readonly [Schema.Struct<{
|
|
4
|
+
readonly _tag: Schema.Literal<"ResourceLimit">;
|
|
5
|
+
readonly dimension: Schema.String;
|
|
6
|
+
readonly used: Schema.BigInt;
|
|
7
|
+
readonly requested: Schema.BigInt;
|
|
8
|
+
readonly limit: Schema.BigInt;
|
|
9
|
+
}>, Schema.Struct<{
|
|
10
|
+
readonly _tag: Schema.Literal<"Io">;
|
|
11
|
+
readonly kind: Schema.String;
|
|
12
|
+
readonly osCode: Schema.optional<Schema.Number>;
|
|
13
|
+
}>, Schema.Struct<{
|
|
14
|
+
readonly _tag: Schema.Literal<"Engine">;
|
|
15
|
+
readonly kind: Schema.String;
|
|
16
|
+
readonly message: Schema.String;
|
|
17
|
+
}>, Schema.Struct<{
|
|
18
|
+
readonly _tag: Schema.Literals<("Cancelled" | "ClosedHandle" | "DeadlineExceeded" | "DirectoryBusy" | "ForeignRuntime" | "Internal" | "InvalidArgument" | "InvalidPath" | "QueueFull" | "RuntimeAlreadyLive" | "SpentHandle" | "WriterBusy")[]>;
|
|
19
|
+
}>]>;
|
|
20
|
+
declare const DbError_base: Schema.Class<DbError, Schema.TaggedStruct<"DbError", {
|
|
21
|
+
readonly operation: Schema.String;
|
|
22
|
+
readonly reason: Schema.Union<readonly [Schema.Struct<{
|
|
23
|
+
readonly _tag: Schema.Literal<"ResourceLimit">;
|
|
24
|
+
readonly dimension: Schema.String;
|
|
25
|
+
readonly used: Schema.BigInt;
|
|
26
|
+
readonly requested: Schema.BigInt;
|
|
27
|
+
readonly limit: Schema.BigInt;
|
|
28
|
+
}>, Schema.Struct<{
|
|
29
|
+
readonly _tag: Schema.Literal<"Io">;
|
|
30
|
+
readonly kind: Schema.String;
|
|
31
|
+
readonly osCode: Schema.optional<Schema.Number>;
|
|
32
|
+
}>, Schema.Struct<{
|
|
33
|
+
readonly _tag: Schema.Literal<"Engine">;
|
|
34
|
+
readonly kind: Schema.String;
|
|
35
|
+
readonly message: Schema.String;
|
|
36
|
+
}>, Schema.Struct<{
|
|
37
|
+
readonly _tag: Schema.Literals<("Cancelled" | "ClosedHandle" | "DeadlineExceeded" | "DirectoryBusy" | "ForeignRuntime" | "Internal" | "InvalidArgument" | "InvalidPath" | "QueueFull" | "RuntimeAlreadyLive" | "SpentHandle" | "WriterBusy")[]>;
|
|
38
|
+
}>]>;
|
|
39
|
+
}>, import("effect/Cause").YieldableError>;
|
|
40
|
+
export declare class DbError extends DbError_base {
|
|
41
|
+
get code(): "Cancelled" | "ClosedHandle" | "DeadlineExceeded" | "DirectoryBusy" | "Engine" | "ForeignRuntime" | "Internal" | "InvalidArgument" | "InvalidPath" | "Io" | "QueueFull" | "ResourceLimit" | "RuntimeAlreadyLive" | "SpentHandle" | "WriterBusy";
|
|
42
|
+
}
|
|
43
|
+
export declare function dbError(operation: string, cause: unknown): DbError;
|
|
44
|
+
declare const Outstanding: Schema.Struct<{
|
|
45
|
+
readonly phase: Schema.Literals<readonly ["open", "closing", "closed"]>;
|
|
46
|
+
readonly queued: Schema.BigInt;
|
|
47
|
+
readonly active: Schema.BigInt;
|
|
48
|
+
readonly retained: Schema.BigInt;
|
|
49
|
+
readonly owners: Schema.BigInt;
|
|
50
|
+
readonly databases: Schema.BigInt;
|
|
51
|
+
readonly natives: Schema.BigInt;
|
|
52
|
+
readonly inputBytes: Schema.BigInt;
|
|
53
|
+
readonly workingBytes: Schema.BigInt;
|
|
54
|
+
readonly scratchBytes: Schema.BigInt;
|
|
55
|
+
readonly resultBytes: Schema.BigInt;
|
|
56
|
+
}>;
|
|
57
|
+
export type OutstandingWork = typeof Outstanding.Type;
|
|
58
|
+
declare const Close: Schema.Union<readonly [Schema.Struct<{
|
|
59
|
+
readonly kind: Schema.Literal<"closed">;
|
|
60
|
+
}>, Schema.Struct<{
|
|
61
|
+
readonly kind: Schema.Literal<"incomplete">;
|
|
62
|
+
readonly outstanding: Schema.Struct<{
|
|
63
|
+
readonly phase: Schema.Literals<readonly ["open", "closing", "closed"]>;
|
|
64
|
+
readonly queued: Schema.BigInt;
|
|
65
|
+
readonly active: Schema.BigInt;
|
|
66
|
+
readonly retained: Schema.BigInt;
|
|
67
|
+
readonly owners: Schema.BigInt;
|
|
68
|
+
readonly databases: Schema.BigInt;
|
|
69
|
+
readonly natives: Schema.BigInt;
|
|
70
|
+
readonly inputBytes: Schema.BigInt;
|
|
71
|
+
readonly workingBytes: Schema.BigInt;
|
|
72
|
+
readonly scratchBytes: Schema.BigInt;
|
|
73
|
+
readonly resultBytes: Schema.BigInt;
|
|
74
|
+
}>;
|
|
75
|
+
}>, Schema.Struct<{
|
|
76
|
+
readonly kind: Schema.Literal<"failed">;
|
|
77
|
+
readonly error: typeof DbError;
|
|
78
|
+
}>]>;
|
|
79
|
+
export type CloseReport = typeof Close.Type;
|
|
80
|
+
declare const CloseFailure_base: Schema.Class<CloseFailure, Schema.TaggedStruct<"CloseFailure", {
|
|
81
|
+
readonly operation: Schema.String;
|
|
82
|
+
readonly report: Schema.Union<readonly [Schema.Struct<{
|
|
83
|
+
readonly kind: Schema.Literal<"closed">;
|
|
84
|
+
}>, Schema.Struct<{
|
|
85
|
+
readonly kind: Schema.Literal<"incomplete">;
|
|
86
|
+
readonly outstanding: Schema.Struct<{
|
|
87
|
+
readonly phase: Schema.Literals<readonly ["open", "closing", "closed"]>;
|
|
88
|
+
readonly queued: Schema.BigInt;
|
|
89
|
+
readonly active: Schema.BigInt;
|
|
90
|
+
readonly retained: Schema.BigInt;
|
|
91
|
+
readonly owners: Schema.BigInt;
|
|
92
|
+
readonly databases: Schema.BigInt;
|
|
93
|
+
readonly natives: Schema.BigInt;
|
|
94
|
+
readonly inputBytes: Schema.BigInt;
|
|
95
|
+
readonly workingBytes: Schema.BigInt;
|
|
96
|
+
readonly scratchBytes: Schema.BigInt;
|
|
97
|
+
readonly resultBytes: Schema.BigInt;
|
|
98
|
+
}>;
|
|
99
|
+
}>, Schema.Struct<{
|
|
100
|
+
readonly kind: Schema.Literal<"failed">;
|
|
101
|
+
readonly error: typeof DbError;
|
|
102
|
+
}>]>;
|
|
103
|
+
}>, import("effect/Cause").YieldableError>;
|
|
104
|
+
export declare class CloseFailure extends CloseFailure_base {
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=runtime-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-errors.d.ts","sourceRoot":"","sources":["../src/runtime-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAyBrD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;IAAyD,CAAA;;;;;;;;;;;;;;;;;;;;;AAC9E,qBAAa,OAAQ,SAAQ,YAG3B;IACD,IAAI,IAAI,oPAEP;CACD;AAGD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAGlE;AAED,QAAA,MAAM,WAAW;;;;;;;;;;;;EAYf,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AACrD,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;IAIT,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAE3C,qBAAa,YAAa,SAAQ,iBAGhC;CAAG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { runtimeErrorCodes } from "#runtime-codes.ts";
|
|
3
|
+
export { runtimeErrorCodes } from "#runtime-codes.ts";
|
|
4
|
+
const ResourceLimit = Schema.Struct({
|
|
5
|
+
_tag: Schema.Literal("ResourceLimit"),
|
|
6
|
+
dimension: Schema.String,
|
|
7
|
+
used: Schema.BigInt,
|
|
8
|
+
requested: Schema.BigInt,
|
|
9
|
+
limit: Schema.BigInt
|
|
10
|
+
});
|
|
11
|
+
const PlainReason = Schema.Struct({
|
|
12
|
+
_tag: Schema.Literals(runtimeErrorCodes.filter((code) => code !== "ResourceLimit" && code !== "Io" && code !== "Engine"))
|
|
13
|
+
});
|
|
14
|
+
const Io = Schema.Struct({
|
|
15
|
+
_tag: Schema.Literal("Io"),
|
|
16
|
+
kind: Schema.String,
|
|
17
|
+
osCode: Schema.optional(Schema.Number)
|
|
18
|
+
});
|
|
19
|
+
/** A typed engine refusal crossing the executor: core family tag + message. */
|
|
20
|
+
const Engine = Schema.Struct({
|
|
21
|
+
_tag: Schema.Literal("Engine"),
|
|
22
|
+
kind: Schema.String,
|
|
23
|
+
message: Schema.String
|
|
24
|
+
});
|
|
25
|
+
export const DbReason = Schema.Union([ResourceLimit, Io, Engine, PlainReason]);
|
|
26
|
+
export class DbError extends Schema.TaggedError()("DbError", {
|
|
27
|
+
operation: Schema.String,
|
|
28
|
+
reason: DbReason
|
|
29
|
+
}) {
|
|
30
|
+
get code() {
|
|
31
|
+
return this.reason._tag;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const decodeReason = Schema.decodeUnknownOption(DbReason);
|
|
35
|
+
export function dbError(operation, cause) {
|
|
36
|
+
const decoded = decodeReason(cause);
|
|
37
|
+
return new DbError({ operation, reason: decoded._tag === "Some" ? decoded.value : { _tag: "Internal" } });
|
|
38
|
+
}
|
|
39
|
+
const Outstanding = Schema.Struct({
|
|
40
|
+
phase: Schema.Literals(["open", "closing", "closed"]),
|
|
41
|
+
queued: Schema.BigInt,
|
|
42
|
+
active: Schema.BigInt,
|
|
43
|
+
retained: Schema.BigInt,
|
|
44
|
+
owners: Schema.BigInt,
|
|
45
|
+
databases: Schema.BigInt,
|
|
46
|
+
natives: Schema.BigInt,
|
|
47
|
+
inputBytes: Schema.BigInt,
|
|
48
|
+
workingBytes: Schema.BigInt,
|
|
49
|
+
scratchBytes: Schema.BigInt,
|
|
50
|
+
resultBytes: Schema.BigInt
|
|
51
|
+
});
|
|
52
|
+
const Close = Schema.Union([
|
|
53
|
+
Schema.Struct({ kind: Schema.Literal("closed") }),
|
|
54
|
+
Schema.Struct({ kind: Schema.Literal("incomplete"), outstanding: Outstanding }),
|
|
55
|
+
Schema.Struct({ kind: Schema.Literal("failed"), error: DbError })
|
|
56
|
+
]);
|
|
57
|
+
export class CloseFailure extends Schema.TaggedError()("CloseFailure", {
|
|
58
|
+
operation: Schema.String,
|
|
59
|
+
report: Close
|
|
60
|
+
}) {
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=runtime-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-errors.js","sourceRoot":"","sources":["../src/runtime-errors.ts"],"names":[],"mappings":"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"}
|