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