@bjornpagen/bumbledb 1.1.0 → 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 +114 -11
- package/README.md +52 -9
- 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 +26 -3
- package/dist/changes.d.ts.map +1 -1
- package/dist/changes.js +89 -44
- 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 +4 -9
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js +108 -183
- package/dist/codec.js.map +1 -1
- package/dist/compile.d.ts +16 -16
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +36 -15
- package/dist/compile.js.map +1 -1
- package/dist/db-native.d.ts +39 -0
- 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 +28 -8
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +91 -38
- 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 +14 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/log.d.ts +2 -0
- package/dist/internal/log.d.ts.map +1 -1
- package/dist/internal/log.js +2 -0
- package/dist/internal/log.js.map +1 -1
- package/dist/law.d.ts +10 -10
- 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/native.d.ts +1 -1
- 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/rows.d.ts +7 -4
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +44 -198
- package/dist/rows.js.map +1 -1
- package/dist/runtime-errors.d.ts +26 -2
- package/dist/runtime-errors.d.ts.map +1 -1
- package/dist/runtime-errors.js +43 -3
- package/dist/runtime-errors.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 +183 -54
- package/src/closed.ts +161 -314
- package/src/codec.ts +116 -190
- package/src/compile.ts +56 -32
- package/src/db-native.ts +42 -0
- package/src/db.ts +134 -52
- 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 +34 -28
- package/src/internal/log.ts +2 -0
- package/src/law.ts +13 -13
- package/src/lower.ts +13 -10
- package/src/native.ts +2 -0
- 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/rows.ts +62 -205
- package/src/runtime-errors.ts +47 -3
- 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/schema.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
1
2
|
import { AuthoringError, SdkInvariantError } from "#errors.ts";
|
|
2
|
-
import { isClosedMember, sealedFieldOf } from "#closed.ts";
|
|
3
|
+
import { isClosedMember, memberDescriptor, membersAgree, sealedFieldOf } from "#closed.ts";
|
|
3
4
|
import { assertDeclarationOrderKey, assertDeclarationRecord, rosterOf } from "#fields.ts";
|
|
5
|
+
import { descriptorCache, isImmutable } from "#immutable.ts";
|
|
4
6
|
import { classesComplete, computeClasses } from "#law.ts";
|
|
5
|
-
import {
|
|
7
|
+
import { renderStatement, statementDescriptor } from "#statements.ts";
|
|
8
|
+
import { arrayValue, recordValue } from "#values.ts";
|
|
6
9
|
function collectImplied(name, relations) {
|
|
7
10
|
assertDeclarationRecord(`schema ${name} relations`, relations);
|
|
8
11
|
const rendered = new Set();
|
|
@@ -26,7 +29,7 @@ function collectImplied(name, relations) {
|
|
|
26
29
|
return { rendered, roster };
|
|
27
30
|
}
|
|
28
31
|
function statementOwners(statement) {
|
|
29
|
-
const data = statement
|
|
32
|
+
const data = statement;
|
|
30
33
|
if (data.kind === "key") {
|
|
31
34
|
return [data.owner];
|
|
32
35
|
}
|
|
@@ -40,9 +43,9 @@ function verifyMembership(name, relations, statement, rendered) {
|
|
|
40
43
|
message: `schema ${name}: relation ${owner.name} is not declared in this schema — ${rendered}`
|
|
41
44
|
});
|
|
42
45
|
}
|
|
43
|
-
if (member
|
|
46
|
+
if (!membersAgree(member, owner)) {
|
|
44
47
|
throw new AuthoringError({
|
|
45
|
-
message: `schema ${name}: statement references a different relation
|
|
48
|
+
message: `schema ${name}: statement references a different relation declaration named ${owner.name} than the one this schema declares — ${rendered}`
|
|
46
49
|
});
|
|
47
50
|
}
|
|
48
51
|
}
|
|
@@ -72,7 +75,7 @@ function verifyBindingHandles(name, face, binding, rendered) {
|
|
|
72
75
|
}
|
|
73
76
|
}
|
|
74
77
|
function verifyHandles(name, statement, rendered) {
|
|
75
|
-
const data = statement
|
|
78
|
+
const data = statement;
|
|
76
79
|
if (data.kind === "key") {
|
|
77
80
|
return;
|
|
78
81
|
}
|
|
@@ -84,7 +87,7 @@ function verifyHandles(name, statement, rendered) {
|
|
|
84
87
|
}
|
|
85
88
|
function closedTargetOf(statements, owner, field) {
|
|
86
89
|
for (const statement of statements) {
|
|
87
|
-
const data = statement
|
|
90
|
+
const data = statement;
|
|
88
91
|
if (data.kind !== "containment" && data.kind !== "mirrors") {
|
|
89
92
|
continue;
|
|
90
93
|
}
|
|
@@ -107,7 +110,7 @@ function closedTargetOf(statements, owner, field) {
|
|
|
107
110
|
}
|
|
108
111
|
function verifyClosedReferences(name, statements) {
|
|
109
112
|
for (const statement of statements) {
|
|
110
|
-
const data = statement
|
|
113
|
+
const data = statement;
|
|
111
114
|
if (data.kind === "key") {
|
|
112
115
|
continue;
|
|
113
116
|
}
|
|
@@ -160,7 +163,7 @@ function verifyClosedReferenceBinding(name, statements, face, binding, rendered)
|
|
|
160
163
|
function verifyTargetKeys(name, statements, implied) {
|
|
161
164
|
const declared = new Map();
|
|
162
165
|
for (const statement of statements) {
|
|
163
|
-
const data = statement
|
|
166
|
+
const data = statement;
|
|
164
167
|
if (data.kind !== "key") {
|
|
165
168
|
continue;
|
|
166
169
|
}
|
|
@@ -173,7 +176,7 @@ function verifyTargetKeys(name, statements, implied) {
|
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
for (const statement of statements) {
|
|
176
|
-
const data = statement
|
|
179
|
+
const data = statement;
|
|
177
180
|
if (data.kind === "key") {
|
|
178
181
|
continue;
|
|
179
182
|
}
|
|
@@ -235,17 +238,75 @@ function verifyTargetKeyFace(name, face, implied, declared, rendered) {
|
|
|
235
238
|
message: `schema ${name}: ${rendered}: target projection (${face.projection.join(", ")}) matches no declared key of ${face.owner.name} — available keys: ${available}${hint}`
|
|
236
239
|
});
|
|
237
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Logical schema equivalence, including the ordered native ordinals and
|
|
243
|
+
* host decoding domains. Schema display names do not change the theory.
|
|
244
|
+
* A database/snapshot still has its own resource identity and lifetime.
|
|
245
|
+
*/
|
|
246
|
+
function schemasAgree(leftInput, rightInput) {
|
|
247
|
+
const left = schemaDescriptor(leftInput);
|
|
248
|
+
const right = schemaDescriptor(rightInput);
|
|
249
|
+
if (left === right)
|
|
250
|
+
return true;
|
|
251
|
+
const cacheable = isImmutable(left) && isImmutable(right);
|
|
252
|
+
const cached = schemaComparisons.get(left)?.get(right);
|
|
253
|
+
if (cacheable && cached !== undefined)
|
|
254
|
+
return cached;
|
|
255
|
+
const names = Object.keys(left.relations);
|
|
256
|
+
const otherNames = Object.keys(right.relations);
|
|
257
|
+
const equal = names.length === otherNames.length &&
|
|
258
|
+
names.every((name, index) => {
|
|
259
|
+
const member = right.relations[name];
|
|
260
|
+
return name === otherNames[index] && member !== undefined && membersAgree(left.relations[name], member);
|
|
261
|
+
}) &&
|
|
262
|
+
isDeepStrictEqual(left.statements, right.statements) &&
|
|
263
|
+
isDeepStrictEqual(left.classes, right.classes);
|
|
264
|
+
if (cacheable) {
|
|
265
|
+
let comparisons = schemaComparisons.get(left);
|
|
266
|
+
if (comparisons === undefined) {
|
|
267
|
+
comparisons = new WeakMap();
|
|
268
|
+
schemaComparisons.set(left, comparisons);
|
|
269
|
+
}
|
|
270
|
+
comparisons.set(right, equal);
|
|
271
|
+
}
|
|
272
|
+
return equal;
|
|
273
|
+
}
|
|
274
|
+
const schemaComparisons = new WeakMap();
|
|
275
|
+
function schemaDescriptor(input) {
|
|
276
|
+
return checkedSchema(input);
|
|
277
|
+
}
|
|
278
|
+
const checkedSchema = descriptorCache((input) => {
|
|
279
|
+
const raw = recordValue("schema", input, ["name", "relations", "statements", "classes"]);
|
|
280
|
+
if (typeof raw.name !== "string")
|
|
281
|
+
throw new AuthoringError({ message: "schema: expected a name" });
|
|
282
|
+
const relations = ownRelations(raw.name, raw.relations);
|
|
283
|
+
const statements = arrayValue("schema statements", raw.statements, (_, statement) => statementDescriptor(statement));
|
|
284
|
+
const result = schema(raw.name, relations, statements);
|
|
285
|
+
const classes = recordValue("schema classes", raw.classes, Object.keys(result.classes));
|
|
286
|
+
for (const [name, fields] of Object.entries(result.classes)) {
|
|
287
|
+
const supplied = recordValue(`schema classes.${name}`, classes[name], Object.keys(fields));
|
|
288
|
+
for (const [field, value] of Object.entries(fields)) {
|
|
289
|
+
if (supplied[field] !== value)
|
|
290
|
+
throw new AuthoringError({ message: `schema classes.${name}.${field}: incorrect class` });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return result;
|
|
294
|
+
});
|
|
295
|
+
function ownRelations(name, input) {
|
|
296
|
+
if (typeof input !== "object" || input === null)
|
|
297
|
+
throw new AuthoringError({ message: `schema ${name}: expected relations` });
|
|
298
|
+
assertDeclarationRecord(`schema ${name} relations`, input);
|
|
299
|
+
return Object.freeze(Object.fromEntries(Object.entries(input).map(([name, member]) => [name, memberDescriptor(member)])));
|
|
300
|
+
}
|
|
238
301
|
function schema(name, relations, statements) {
|
|
239
|
-
|
|
302
|
+
assertDeclarationOrderKey("schema", name);
|
|
303
|
+
const ownedRelations = ownRelations(name, relations);
|
|
304
|
+
const ownedStatements = arrayValue("schema statements", statements, (_, statement) => statementDescriptor(statement));
|
|
305
|
+
const implied = collectImplied(name, ownedRelations);
|
|
240
306
|
const seen = new Set();
|
|
241
|
-
for (const statement of
|
|
242
|
-
if (!isStatement(statement)) {
|
|
243
|
-
throw new AuthoringError({
|
|
244
|
-
message: `schema ${name}: a statement is minted only by key/contained/mirrors/capacity — a structural literal skips the construction-time arity and roster walls`
|
|
245
|
-
});
|
|
246
|
-
}
|
|
307
|
+
for (const statement of ownedStatements) {
|
|
247
308
|
const rendered = renderStatement(statement);
|
|
248
|
-
verifyMembership(name,
|
|
309
|
+
verifyMembership(name, ownedRelations, statement, rendered);
|
|
249
310
|
if (implied.rendered.has(rendered)) {
|
|
250
311
|
throw new AuthoringError({
|
|
251
312
|
message: `schema ${name}: ${rendered} is redundant here (closedness already implies it) — and rejected as a duplicate`
|
|
@@ -257,13 +318,13 @@ function schema(name, relations, statements) {
|
|
|
257
318
|
seen.add(rendered);
|
|
258
319
|
verifyHandles(name, statement, rendered);
|
|
259
320
|
}
|
|
260
|
-
verifyClosedReferences(name,
|
|
261
|
-
verifyTargetKeys(name,
|
|
262
|
-
const classes = computeClasses(name,
|
|
263
|
-
if (!classesComplete(classes,
|
|
321
|
+
verifyClosedReferences(name, ownedStatements);
|
|
322
|
+
verifyTargetKeys(name, ownedStatements, implied.roster);
|
|
323
|
+
const classes = computeClasses(name, ownedRelations, ownedStatements);
|
|
324
|
+
if (!classesComplete(classes, ownedRelations)) {
|
|
264
325
|
throw new SdkInvariantError({ message: `schema ${name}: class-map construction incomplete` });
|
|
265
326
|
}
|
|
266
|
-
return Object.freeze({ name, relations, statements: Object.freeze(
|
|
327
|
+
return Object.freeze({ name, relations: ownedRelations, statements: Object.freeze(ownedStatements), classes });
|
|
267
328
|
}
|
|
268
|
-
export { schema };
|
|
329
|
+
export { schema, schemaDescriptor, schemasAgree };
|
|
269
330
|
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type AnyClosed } from "./closed.js";
|
|
2
|
+
import { type AnyField, type ClosedIdField, type Infer } from "./fields.js";
|
|
3
|
+
import type { AnyRelation, RelationFields } from "./relation.js";
|
|
4
|
+
import { type LiteralSetSpec, type LiteralSpec } from "./spec.js";
|
|
5
|
+
type Selectable = AnyRelation | AnyClosed;
|
|
6
|
+
type FieldsOf<R extends Selectable> = R extends AnyRelation ? RelationFields<R> : R extends AnyClosed ? {
|
|
7
|
+
readonly id: ClosedIdField<R["name"], R["handles"]>;
|
|
8
|
+
} & R["columns"] : never;
|
|
9
|
+
type SelectionInput<R extends Selectable> = {
|
|
10
|
+
readonly [K in keyof FieldsOf<R>]?: Infer<FieldsOf<R>[K]> | readonly Infer<FieldsOf<R>[K]>[];
|
|
11
|
+
};
|
|
12
|
+
interface SelectionBinding {
|
|
13
|
+
readonly field: string;
|
|
14
|
+
readonly set: LiteralSetSpec;
|
|
15
|
+
}
|
|
16
|
+
interface Selected<R extends Selectable = Selectable> {
|
|
17
|
+
readonly relation: R;
|
|
18
|
+
readonly selection: readonly SelectionBinding[];
|
|
19
|
+
}
|
|
20
|
+
type AnySelected = Selected;
|
|
21
|
+
/** Checked logical literals use the same field interpreter as fact values. */
|
|
22
|
+
declare function selectionLiteral(field: AnyField, input: unknown): LiteralSpec;
|
|
23
|
+
declare function selectionBindings(owner: Selectable, input: unknown): readonly SelectionBinding[];
|
|
24
|
+
declare function select<R extends Selectable>(relation: R, input: SelectionInput<R>): Selected<R>;
|
|
25
|
+
export type { AnySelected, FieldsOf, Selectable, Selected, SelectionBinding, SelectionInput };
|
|
26
|
+
export { select, selectionBindings, selectionLiteral };
|
|
27
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmD,MAAM,YAAY,CAAA;AAE5F,OAAO,EAAE,KAAK,QAAQ,EAA2B,KAAK,aAAa,EAAE,KAAK,KAAK,EAAa,MAAM,YAAY,CAAA;AAC9G,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAiB,MAAM,UAAU,CAAA;AAG/E,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;AACzC,KAAK,QAAQ,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,WAAW,GACxD,cAAc,CAAC,CAAC,CAAC,GACjB,CAAC,SAAS,SAAS,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GACtE,KAAK,CAAA;AACT,KAAK,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI;IAC3C,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;CAC5F,CAAA;AACD,UAAU,gBAAgB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;CAC5B;AACD,UAAU,QAAQ,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACnD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC/C;AACD,KAAK,WAAW,GAAG,QAAQ,CAAA;AAE3B,8EAA8E;AAC9E,iBAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,WAAW,CAoBtE;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,gBAAgB,EAAE,CAsCzF;AAED,iBAAS,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CA+BxF;AAED,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAA;AAC7F,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { memberDescriptor, sealedFieldOf, sealedFieldsOf } from "#closed.ts";
|
|
2
|
+
import { AuthoringError } from "#errors.ts";
|
|
3
|
+
import { assertDeclarationRecord, literalOf } from "#fields.ts";
|
|
4
|
+
import { renderLiteral } from "#spec.ts";
|
|
5
|
+
import { arrayValue, recordValue } from "#values.ts";
|
|
6
|
+
/** Checked logical literals use the same field interpreter as fact values. */
|
|
7
|
+
function selectionLiteral(field, input) {
|
|
8
|
+
const raw = recordValue("selection literal", input, "closed" in field ? ["kind", "handle"] : ["kind", "value"]);
|
|
9
|
+
if ("closed" in field) {
|
|
10
|
+
if (raw.kind !== "handle")
|
|
11
|
+
throw new AuthoringError({ message: "closed selection requires a handle literal" });
|
|
12
|
+
return Object.freeze(literalOf(field, raw.handle));
|
|
13
|
+
}
|
|
14
|
+
if (raw.kind !== "value")
|
|
15
|
+
throw new AuthoringError({ message: "selection requires a value literal" });
|
|
16
|
+
const value = recordValue("selection value", raw.value, field.kind === "interval" ? ["kind", "start", "end"] : ["kind", "value"]);
|
|
17
|
+
let kind = field.kind;
|
|
18
|
+
if (field.kind === "str")
|
|
19
|
+
kind = "string";
|
|
20
|
+
if (field.kind === "bytes")
|
|
21
|
+
kind = "fixedBytes";
|
|
22
|
+
if (field.kind === "interval")
|
|
23
|
+
kind = { u64: "intervalU64", i64: "intervalI64", f64: "intervalF64" }[field.element];
|
|
24
|
+
if (value.kind !== kind)
|
|
25
|
+
throw new AuthoringError({ message: `selection requires the ${kind} value tag` });
|
|
26
|
+
const literal = literalOf(field, field.kind === "interval" ? { start: value.start, end: value.end } : value.value);
|
|
27
|
+
if (literal.kind === "value")
|
|
28
|
+
Object.freeze(literal.value);
|
|
29
|
+
return Object.freeze(literal);
|
|
30
|
+
}
|
|
31
|
+
function selectionBindings(owner, input) {
|
|
32
|
+
if (!Array.isArray(input))
|
|
33
|
+
throw new AuthoringError({ message: "selection: expected bindings" });
|
|
34
|
+
const selected = new Set();
|
|
35
|
+
return Object.freeze(arrayValue("selection", input, (_, raw) => {
|
|
36
|
+
const binding = recordValue("selection binding", raw, ["field", "set"]);
|
|
37
|
+
if (typeof binding.field !== "string")
|
|
38
|
+
throw new AuthoringError({ message: "selection: expected a field name" });
|
|
39
|
+
const field = sealedFieldOf(owner, binding.field);
|
|
40
|
+
if (field === undefined)
|
|
41
|
+
throw new AuthoringError({ message: `relation ${owner.name} has no field ${binding.field}` });
|
|
42
|
+
if (selected.has(binding.field))
|
|
43
|
+
throw new AuthoringError({ message: "selection: duplicate field" });
|
|
44
|
+
selected.add(binding.field);
|
|
45
|
+
const set = binding.set;
|
|
46
|
+
if (typeof set !== "object" || set === null || !("kind" in set))
|
|
47
|
+
throw new AuthoringError({ message: "literal set: expected a descriptor" });
|
|
48
|
+
assertDeclarationRecord("literal set", set);
|
|
49
|
+
if (set.kind === "one") {
|
|
50
|
+
const rawSet = recordValue("literal set", set, ["kind", "literal"]);
|
|
51
|
+
return Object.freeze({
|
|
52
|
+
field: binding.field,
|
|
53
|
+
set: Object.freeze({ kind: "one", literal: selectionLiteral(field, rawSet.literal) })
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (set.kind !== "many")
|
|
57
|
+
throw new AuthoringError({ message: "literal set: unknown kind" });
|
|
58
|
+
const rawSet = recordValue("literal set", set, ["kind", "literals"]);
|
|
59
|
+
if (!Array.isArray(rawSet.literals) || rawSet.literals.length < 2)
|
|
60
|
+
throw new AuthoringError({ message: "literal set: expected at least two distinct literals" });
|
|
61
|
+
const literals = arrayValue("selection literals", rawSet.literals, (_, literal) => selectionLiteral(field, literal));
|
|
62
|
+
if (new Set(literals.map(renderLiteral)).size !== literals.length)
|
|
63
|
+
throw new AuthoringError({ message: "literal set: duplicate literal" });
|
|
64
|
+
return Object.freeze({
|
|
65
|
+
field: binding.field,
|
|
66
|
+
set: Object.freeze({ kind: "many", literals: Object.freeze(literals) })
|
|
67
|
+
});
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
function select(relation, input) {
|
|
71
|
+
const owner = memberDescriptor(relation);
|
|
72
|
+
assertDeclarationRecord(`relation ${owner.name} selection`, input);
|
|
73
|
+
const fields = sealedFieldsOf(owner);
|
|
74
|
+
const selection = Object.entries(input).map(([name, entry]) => {
|
|
75
|
+
const field = fields.find((field) => field.name === name)?.field;
|
|
76
|
+
if (field === undefined)
|
|
77
|
+
throw new AuthoringError({ message: `relation ${owner.name} has no field ${name}` });
|
|
78
|
+
if (!Array.isArray(entry))
|
|
79
|
+
return { field: name, set: { kind: "one", literal: literalOf(field, entry) } };
|
|
80
|
+
const context = `relation ${owner.name}.${name}`;
|
|
81
|
+
if (entry.length < 2)
|
|
82
|
+
throw new AuthoringError({
|
|
83
|
+
message: entry.length === 0
|
|
84
|
+
? `${context}: an empty literal set selects nothing — write the selection you mean`
|
|
85
|
+
: `${context}: a one-element literal set is the bare literal respelled — write the literal`
|
|
86
|
+
});
|
|
87
|
+
const literals = arrayValue(context, entry, (_, value) => literalOf(field, value));
|
|
88
|
+
const seen = new Set();
|
|
89
|
+
for (const literal of literals) {
|
|
90
|
+
const rendered = renderLiteral(literal);
|
|
91
|
+
if (seen.has(rendered))
|
|
92
|
+
throw new AuthoringError({ message: `${context}: the literal set spells ${rendered} twice — write it once` });
|
|
93
|
+
seen.add(rendered);
|
|
94
|
+
}
|
|
95
|
+
return { field: name, set: { kind: "many", literals } };
|
|
96
|
+
});
|
|
97
|
+
if (selection.length === 0)
|
|
98
|
+
throw new AuthoringError({
|
|
99
|
+
message: `relation ${owner.name}: an empty selection is the bare relation respelled — pass the relation itself`
|
|
100
|
+
});
|
|
101
|
+
return Object.freeze({ relation: owner, selection: selectionBindings(owner, selection) });
|
|
102
|
+
}
|
|
103
|
+
export { select, selectionBindings, selectionLiteral };
|
|
104
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"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"}
|
package/dist/shape.d.ts
CHANGED
|
@@ -3,24 +3,21 @@ import type { ParamsRecord } from "./query/scope.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Shared derived types: `S` is a
|
|
5
5
|
* declared core schema value's type, `Rel<S>` its ordinary (writable)
|
|
6
|
-
* relations, `Fact<R>` the inferred row object, `Key<
|
|
7
|
-
*
|
|
6
|
+
* relations, `Fact<R>` the inferred row object, `Key<K>` the exact value
|
|
7
|
+
* of a declared key accepted by `QueryReader.get`, and `QueryTemplate<S, P, A>` the
|
|
8
8
|
* immutable schema-bound logical query template. All are derived from the
|
|
9
9
|
* existing typed descriptors — no second hand-maintained roster.
|
|
10
10
|
*/
|
|
11
11
|
import type { AnyRelation, Fact } from "./relation.js";
|
|
12
12
|
import type { AnySchema } from "./schema.js";
|
|
13
|
+
import type { KeyStatement } from "./statements.js";
|
|
13
14
|
/** The ordinary relations of a schema (closed vocabularies are ground axioms, never ingestion targets). */
|
|
14
15
|
type Rel<S extends AnySchema> = Extract<S["relations"][keyof S["relations"]], AnyRelation>;
|
|
15
16
|
/**
|
|
16
|
-
* The
|
|
17
|
-
*
|
|
18
|
-
* otherwise the first declared `key`). The exact projection is a schema
|
|
19
|
-
* fact, verified at execution against the compiled tables; the type admits
|
|
20
|
-
* any subset of the fact's own fields and the runtime refuses a mismatch
|
|
21
|
-
* with a typed `DbError` before any native work.
|
|
17
|
+
* The structural value of one declared key, derived from its owner's
|
|
18
|
+
* fields and its exact projection. Every selected field is required.
|
|
22
19
|
*/
|
|
23
|
-
type Key<
|
|
20
|
+
type Key<K extends KeyStatement<AnyRelation, readonly string[]>> = Pick<Fact<K["owner"]>, Extract<K["projection"][number], keyof Fact<K["owner"]>>>;
|
|
24
21
|
/** Immutable typed query template. */
|
|
25
22
|
type QueryTemplate<S extends AnySchema, P extends ParamsRecord, A> = Query<S["relations"], A, P>;
|
|
26
23
|
export type { Key, QueryTemplate, Rel };
|
package/dist/shape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,2GAA2G;AAC3G,KAAK,GAAG,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAE1F;;;GAGG;AACH,KAAK,GAAG,CAAC,CAAC,SAAS,YAAY,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC,IAAI,IAAI,CACtE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAChB,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACxD,CAAA;AAED,sCAAsC;AACtC,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhG,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAA"}
|
package/dist/statements.d.ts
CHANGED
|
@@ -1,80 +1,45 @@
|
|
|
1
1
|
import { type BoundsOnTarget, type CapacityWeight, type CapacityWindow, type UnitDimensionBan, type WeightOnSource } from "./capacity.js";
|
|
2
|
-
import { type AnyFace, type
|
|
2
|
+
import { type AnyFace, type SameArity, type SameShapes } from "./face.js";
|
|
3
3
|
import type { AnyRelation, RelationFields } from "./relation.js";
|
|
4
|
-
|
|
5
|
-
interface KeyData<R extends AnyRelation, Projection extends readonly string[]> {
|
|
4
|
+
interface KeyStatement<R extends AnyRelation = AnyRelation, Projection extends readonly string[] = readonly string[]> {
|
|
6
5
|
readonly kind: "key";
|
|
7
6
|
readonly owner: R;
|
|
8
7
|
readonly projection: Projection;
|
|
9
8
|
}
|
|
10
|
-
interface
|
|
9
|
+
interface ContainmentStatement<Src extends AnyFace = AnyFace, Tgt extends AnyFace = AnyFace> {
|
|
11
10
|
readonly kind: "containment";
|
|
12
11
|
readonly source: Src;
|
|
13
12
|
readonly target: Tgt;
|
|
14
13
|
}
|
|
15
|
-
interface
|
|
14
|
+
interface MirrorsStatement<Src extends AnyFace = AnyFace, Tgt extends AnyFace = AnyFace> {
|
|
16
15
|
readonly kind: "mirrors";
|
|
17
16
|
readonly source: Src;
|
|
18
17
|
readonly target: Tgt;
|
|
19
18
|
}
|
|
20
|
-
interface
|
|
19
|
+
interface CapacityStatement<Tgt extends AnyFace = AnyFace, Src extends AnyFace = AnyFace> {
|
|
21
20
|
readonly kind: "capacity";
|
|
22
21
|
readonly target: Tgt;
|
|
23
|
-
readonly weight:
|
|
24
|
-
readonly window:
|
|
22
|
+
readonly weight: CapacityWeight;
|
|
23
|
+
readonly window: CapacityWindow;
|
|
25
24
|
readonly source: Src;
|
|
26
25
|
}
|
|
27
|
-
type
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
readonly [admitted]: true;
|
|
32
|
-
}
|
|
33
|
-
declare function isStatement(value: unknown): value is Statement;
|
|
34
|
-
interface ContainedStatement<Src extends FaceData, Tgt extends FaceData> extends Statement {
|
|
35
|
-
readonly data: ContainmentData<Src, Tgt> | MirrorsData<Src, Tgt>;
|
|
36
|
-
}
|
|
37
|
-
interface CapacityStatement<Tgt extends FaceData, Src extends FaceData> extends Statement {
|
|
38
|
-
readonly data: CapacityData<Tgt, Src>;
|
|
39
|
-
}
|
|
40
|
-
interface KeyStatement<R extends AnyRelation, Projection extends readonly string[]> extends Statement {
|
|
41
|
-
readonly data: KeyData<R, Projection>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* `R(X) -> R` — the FD key form, composite keys as tuples. No selection
|
|
45
|
-
* parameter exists (the FD-with-selection shape is unrepresentable, as in
|
|
46
|
-
* the grammar), and only ordinary relations are accepted: a closed
|
|
47
|
-
* relation's key `R(id) -> R` is materialized by the engine, so an
|
|
48
|
-
* explicit one would only ever be a duplicate. Every projected name is
|
|
49
|
-
* checked against `R`'s field block in the type, and the tuple is carried
|
|
50
|
-
* in the returned value's type ({@link KeyStatement}) — keyed point reads
|
|
51
|
-
* through THIS statement are typed field-for-field, descriptors resolvable
|
|
52
|
-
* through the owner's schema type. A DUPLICATE field in the projection is
|
|
53
|
-
* refused here, at the mint (the engine's `FieldSet` refuses the same
|
|
54
|
-
* duplicate at `Db.create`; canonical utterance says the twice-spelled
|
|
55
|
-
* field is the once-spelled projection respelled) — without this wall a
|
|
56
|
-
* `new Set`-collapsed duplicate could set-match a shorter target
|
|
57
|
-
* projection the engine refuses.
|
|
58
|
-
*/
|
|
26
|
+
type Statement = KeyStatement | ContainmentStatement | MirrorsStatement | CapacityStatement;
|
|
27
|
+
/** Every authoring path checks and owns the same plain descriptor. */
|
|
28
|
+
declare function statementDescriptor<S extends Statement>(input: S): S;
|
|
29
|
+
declare function statementDescriptor(input: unknown): Statement;
|
|
59
30
|
declare function key<R extends AnyRelation, const Projection extends readonly [keyof RelationFields<R> & string, ...(keyof RelationFields<R> & string)[]]>(relation: R, fields: Projection): KeyStatement<R, Projection>;
|
|
60
|
-
declare function contained<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>):
|
|
61
|
-
declare function mirrors<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>):
|
|
62
|
-
/**
|
|
63
|
-
* The chapter 34 NAMED-OPTIONS capacity call — it replaces the old four
|
|
64
|
-
* positional arguments: `capacity(target, { from, weight?, within })`.
|
|
65
|
-
* Unit weight is the default; `weigh(...)`/`within(...)` remain the only
|
|
66
|
-
* mints for the weight/window values.
|
|
67
|
-
*/
|
|
31
|
+
declare function contained<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>): ContainmentStatement<A, B>;
|
|
32
|
+
declare function mirrors<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameShapes<A, B>): MirrorsStatement<A, B>;
|
|
68
33
|
declare function capacity<B extends AnyFace, W extends CapacityWindow, A extends AnyFace>(target: B, options: {
|
|
69
34
|
readonly from: A & SameArity<B, A> & SameShapes<B, A>;
|
|
70
35
|
readonly within: W & UnitDimensionBan<W> & BoundsOnTarget<W, B>;
|
|
71
|
-
}): CapacityStatement<B
|
|
36
|
+
}): CapacityStatement<B, A>;
|
|
72
37
|
declare function capacity<B extends AnyFace, M extends CapacityWeight, W extends CapacityWindow, A extends AnyFace>(target: B, options: {
|
|
73
38
|
readonly from: A & SameArity<B, A> & SameShapes<B, A>;
|
|
74
39
|
readonly weight: M & WeightOnSource<M, A>;
|
|
75
40
|
readonly within: W & BoundsOnTarget<W, B>;
|
|
76
|
-
}): CapacityStatement<B
|
|
41
|
+
}): CapacityStatement<B, A>;
|
|
77
42
|
declare function renderStatement(statement: Statement): string;
|
|
78
|
-
export type {
|
|
79
|
-
export { capacity, contained,
|
|
43
|
+
export type { CapacityStatement, ContainmentStatement, KeyStatement, MirrorsStatement, Statement };
|
|
44
|
+
export { capacity, contained, key, mirrors, renderStatement, statementDescriptor };
|
|
80
45
|
//# sourceMappingURL=statements.d.ts.map
|
package/dist/statements.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAGnB,KAAK,gBAAgB,EAErB,KAAK,cAAc,EACnB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}
|