@bjornpagen/bumbledb 0.1.0 → 0.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 +1394 -0
- package/README.md +4 -0
- package/dist/closed.d.ts +60 -37
- package/dist/closed.d.ts.map +1 -1
- package/dist/closed.js +159 -40
- package/dist/closed.js.map +1 -1
- package/dist/count.d.ts +64 -17
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +37 -14
- package/dist/count.js.map +1 -1
- package/dist/db.d.ts +15 -7
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +13 -5
- package/dist/db.js.map +1 -1
- package/dist/exhume.d.ts +12 -11
- package/dist/exhume.d.ts.map +1 -1
- package/dist/exhume.js +7 -6
- package/dist/exhume.js.map +1 -1
- package/dist/face.d.ts +79 -19
- package/dist/face.d.ts.map +1 -1
- package/dist/face.js +14 -15
- package/dist/face.js.map +1 -1
- package/dist/fields.d.ts +158 -129
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +80 -81
- package/dist/fields.js.map +1 -1
- package/dist/index.d.ts +21 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/lower.d.ts +6 -3
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +48 -17
- package/dist/lower.js.map +1 -1
- package/dist/marshal.d.ts +36 -21
- package/dist/marshal.d.ts.map +1 -1
- package/dist/marshal.js +41 -25
- package/dist/marshal.js.map +1 -1
- package/dist/native.js +2 -2
- package/dist/query/atom.d.ts +332 -174
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +72 -172
- package/dist/query/atom.js.map +1 -1
- package/dist/query/lower.d.ts +295 -107
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +860 -388
- package/dist/query/lower.js.map +1 -1
- package/dist/query/predicate.d.ts +69 -88
- package/dist/query/predicate.d.ts.map +1 -1
- package/dist/query/predicate.js +118 -72
- package/dist/query/predicate.js.map +1 -1
- package/dist/query/run.d.ts +19 -16
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +31 -24
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +139 -123
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js +71 -115
- package/dist/query/scope.js.map +1 -1
- package/dist/query/select.d.ts +102 -80
- package/dist/query/select.d.ts.map +1 -1
- package/dist/query/select.js +39 -34
- package/dist/query/select.js.map +1 -1
- package/dist/relation.d.ts +33 -36
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +15 -16
- package/dist/relation.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +19 -8
- package/dist/schema.js.map +1 -1
- package/dist/spec.d.ts +6 -5
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js.map +1 -1
- package/dist/statements.d.ts +56 -31
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +38 -13
- package/dist/statements.js.map +1 -1
- package/package.json +4 -3
- package/src/closed.ts +271 -93
- package/src/count.ts +112 -18
- package/src/db.ts +22 -12
- package/src/exhume.ts +12 -11
- package/src/face.ts +114 -22
- package/src/fields.ts +261 -217
- package/src/index.ts +50 -59
- package/src/lower.ts +62 -20
- package/src/marshal.ts +48 -30
- package/src/native.ts +2 -2
- package/src/query/atom.ts +480 -376
- package/src/query/lower.ts +1341 -542
- package/src/query/predicate.ts +198 -161
- package/src/query/run.ts +35 -25
- package/src/query/scope.ts +188 -218
- package/src/query/select.ts +168 -93
- package/src/relation.ts +38 -44
- package/src/schema.ts +22 -12
- package/src/spec.ts +6 -5
- package/src/statements.ts +69 -26
- package/dist/brand.d.ts +0 -59
- package/dist/brand.d.ts.map +0 -1
- package/dist/brand.js +0 -47
- package/dist/brand.js.map +0 -1
- package/src/brand.ts +0 -82
package/dist/relation.d.ts
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `relation()` — the ordinary-relation half of the theory's signature. A
|
|
3
3
|
* relation value is a frozen plain object carrying its name, its ordered
|
|
4
|
-
* field
|
|
5
|
-
* field references (`R.fields.holder`), and — since selections are
|
|
6
|
-
* relation's own vocabulary — `where()`, which resolves a selection
|
|
7
|
-
* lowered bindings eagerly (handles
|
|
4
|
+
* field descriptors (declaration order = ordinal ids, the macro's law),
|
|
5
|
+
* typed field references (`R.fields.holder`), and — since selections are
|
|
6
|
+
* the relation's own vocabulary — `where()`, which resolves a selection
|
|
7
|
+
* into lowered bindings eagerly (handles verified against their roster at
|
|
8
8
|
* construction). `Fact<>`/`InsertFact<>` are the inferred row object
|
|
9
|
-
* types
|
|
10
|
-
*
|
|
9
|
+
* types at BARE structural value types (no brands): fresh fields are
|
|
10
|
+
* optional on insert input (omit-to-mint) and present on read
|
|
11
|
+
* (resupply-to-preserve-identity), typed exactly.
|
|
11
12
|
*/
|
|
12
|
-
import { phantom } from "#brand.ts";
|
|
13
13
|
import type { OneOf } from "#face.ts";
|
|
14
|
-
import { type AnyField, type
|
|
14
|
+
import { type AnyField, type Infer } from "#fields.ts";
|
|
15
15
|
import type { LiteralSetSpec } from "#spec.ts";
|
|
16
16
|
/** Flattens an intersection into one displayed object type (hover legibility). */
|
|
17
17
|
type Flatten<T> = {
|
|
18
18
|
[K in keyof T]: T[K];
|
|
19
19
|
};
|
|
20
|
-
/** The field block of a relation: field name to field
|
|
20
|
+
/** The field block of a relation: field name to field descriptor. */
|
|
21
21
|
type FieldsShape = Record<string, AnyField>;
|
|
22
22
|
/**
|
|
23
23
|
* A typed field reference (`Account.fields.holder`) — the value statements,
|
|
24
|
-
* selections, and queries address a field through
|
|
25
|
-
* field's
|
|
24
|
+
* selections, and queries address a field through. Purely positional
|
|
25
|
+
* (relation name + field name); the field's descriptor (domain label
|
|
26
|
+
* included) is read off the relation's schema type structurally.
|
|
26
27
|
*/
|
|
27
|
-
interface FieldRef<Rel extends string, Name extends string
|
|
28
|
+
interface FieldRef<Rel extends string, Name extends string> {
|
|
28
29
|
readonly relation: Rel;
|
|
29
30
|
readonly field: Name;
|
|
30
|
-
readonly [phantom]?: V;
|
|
31
31
|
}
|
|
32
32
|
/** The typed field-reference record of a relation. */
|
|
33
33
|
type FieldRefs<RName extends string, Fields extends FieldsShape> = {
|
|
34
|
-
readonly [K in keyof Fields & string]: FieldRef<RName, K
|
|
34
|
+
readonly [K in keyof Fields & string]: FieldRef<RName, K>;
|
|
35
35
|
};
|
|
36
|
-
/** One declared field: name plus its
|
|
36
|
+
/** One declared field: name plus its descriptor, in declaration order. */
|
|
37
37
|
interface RelationField {
|
|
38
38
|
readonly name: string;
|
|
39
|
-
readonly field:
|
|
39
|
+
readonly field: AnyField;
|
|
40
40
|
}
|
|
41
41
|
/** A relation's runtime description. */
|
|
42
42
|
interface RelationData {
|
|
@@ -53,15 +53,14 @@ interface SelectionBinding {
|
|
|
53
53
|
readonly set: LiteralSetSpec;
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
* The `where()` argument: per field, a
|
|
57
|
-
* type (a closed handle constant IS such a literal —
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* parameter exists anywhere.
|
|
56
|
+
* The `where()` argument: per field, a bare structural literal of that
|
|
57
|
+
* field's value type (a closed handle constant IS such a literal — a
|
|
58
|
+
* bigint verified against the roster at construction), an `oneOf(a, b,
|
|
59
|
+
* ...)` literal set, or a `span(start, end)` interval literal.
|
|
60
|
+
* Equality-only by construction: no operator parameter exists anywhere.
|
|
62
61
|
*/
|
|
63
62
|
type SelectionInput<Fields extends FieldsShape> = {
|
|
64
|
-
readonly [K in keyof Fields]?:
|
|
63
|
+
readonly [K in keyof Fields]?: Infer<Fields[K]> | OneOf<Infer<Fields[K]>>;
|
|
65
64
|
};
|
|
66
65
|
/** A relation with a selection applied — what `on()` consumes as a σ-carrying source. */
|
|
67
66
|
interface Selected<Name extends string, Fields extends FieldsShape> {
|
|
@@ -83,22 +82,20 @@ interface AnySelected {
|
|
|
83
82
|
readonly selection: readonly SelectionBinding[];
|
|
84
83
|
}
|
|
85
84
|
/** Extracts a relation's field block type. */
|
|
86
|
-
type RelationFields<R extends AnyRelation> = R extends Relation<string, infer F> ? F : never;
|
|
85
|
+
type RelationFields<R extends AnyRelation> = R extends Relation<string, infer F extends FieldsShape> ? F : never;
|
|
87
86
|
/**
|
|
88
87
|
* The inferred row object type of a relation as READ: every field present,
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* shape.
|
|
88
|
+
* at its BARE structural value type ({@link Infer}). Closed relations have
|
|
89
|
+
* no `Fact` — they are unwritable, and the type constraint refuses them
|
|
90
|
+
* because a closed value lacks the relation shape.
|
|
92
91
|
*/
|
|
93
92
|
type Fact<R extends AnyRelation> = {
|
|
94
|
-
[K in keyof RelationFields<R>]:
|
|
93
|
+
[K in keyof RelationFields<R>]: Infer<RelationFields<R>[K]>;
|
|
95
94
|
};
|
|
96
|
-
/** The field names of `R`
|
|
95
|
+
/** The field names of `R` whose descriptor type carries the fresh mint mark. */
|
|
97
96
|
type FreshKeys<R extends AnyRelation> = {
|
|
98
97
|
[K in keyof RelationFields<R>]: RelationFields<R>[K] extends {
|
|
99
|
-
readonly
|
|
100
|
-
readonly minted: true;
|
|
101
|
-
};
|
|
98
|
+
readonly fresh: true;
|
|
102
99
|
} ? K : never;
|
|
103
100
|
}[keyof RelationFields<R>];
|
|
104
101
|
/**
|
|
@@ -109,10 +106,10 @@ type FreshKeys<R extends AnyRelation> = {
|
|
|
109
106
|
type InsertFact<R extends AnyRelation> = Flatten<Omit<Fact<R>, FreshKeys<R>> & Partial<Pick<Fact<R>, FreshKeys<R>>>>;
|
|
110
107
|
/**
|
|
111
108
|
* Declares one relation: `relation("Account", { id: AccountId.fresh,
|
|
112
|
-
* holder: HolderId, ... })` — every field references a declared
|
|
113
|
-
* (`const AccountId = u64.
|
|
114
|
-
* Field declaration order is ordinal-id order (macro
|
|
115
|
-
* value is frozen and side-effect free.
|
|
109
|
+
* holder: HolderId, ... })` — every field references a declared
|
|
110
|
+
* domain-labeled descriptor (`const AccountId = u64.as("AccountId")`) or a
|
|
111
|
+
* bare constructor. Field declaration order is ordinal-id order (macro
|
|
112
|
+
* parity); the returned value is frozen and side-effect free.
|
|
116
113
|
*/
|
|
117
114
|
declare function relation<const Name extends string, Fields extends FieldsShape>(name: Name, fields: Fields): Relation<Name, Fields>;
|
|
118
115
|
export type { AnyRelation, AnySelected, Fact, FieldRef, FieldRefs, FieldsShape, FreshKeys, InsertFact, Relation, RelationData, RelationField, RelationFields, Selected, SelectionBinding, SelectionInput };
|
package/dist/relation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
|
package/dist/relation.js
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `relation()` — the ordinary-relation half of the theory's signature. A
|
|
3
3
|
* relation value is a frozen plain object carrying its name, its ordered
|
|
4
|
-
* field
|
|
5
|
-
* field references (`R.fields.holder`), and — since selections are
|
|
6
|
-
* relation's own vocabulary — `where()`, which resolves a selection
|
|
7
|
-
* lowered bindings eagerly (handles
|
|
4
|
+
* field descriptors (declaration order = ordinal ids, the macro's law),
|
|
5
|
+
* typed field references (`R.fields.holder`), and — since selections are
|
|
6
|
+
* the relation's own vocabulary — `where()`, which resolves a selection
|
|
7
|
+
* into lowered bindings eagerly (handles verified against their roster at
|
|
8
8
|
* construction). `Fact<>`/`InsertFact<>` are the inferred row object
|
|
9
|
-
* types
|
|
10
|
-
*
|
|
9
|
+
* types at BARE structural value types (no brands): fresh fields are
|
|
10
|
+
* optional on insert input (omit-to-mint) and present on read
|
|
11
|
+
* (resupply-to-preserve-identity), typed exactly.
|
|
11
12
|
*/
|
|
12
13
|
import * as errors from "@superbuilders/errors";
|
|
13
|
-
import { phantom } from "#brand.ts";
|
|
14
14
|
import { assertDeclarationOrderKey, literalOf } from "#fields.ts";
|
|
15
15
|
/**
|
|
16
|
-
* The one
|
|
16
|
+
* The one trusted seam of `relation()`: the reference record is built by
|
|
17
17
|
* iterating the declared fields, and this guard verifies the checkable
|
|
18
18
|
* facts — one reference per declared field, each carrying its own name —
|
|
19
|
-
* before the record is admitted as the typed {@link FieldRefs}
|
|
20
|
-
*
|
|
21
|
-
* module's single trusted seam, the macro-emission analog.
|
|
19
|
+
* before the record is admitted as the typed {@link FieldRefs} (the
|
|
20
|
+
* macro-emission analog).
|
|
22
21
|
*/
|
|
23
22
|
function refsComplete(refs, fields) {
|
|
24
23
|
return Object.keys(fields).every(function hasRef(fieldName) {
|
|
@@ -69,16 +68,16 @@ function resolveSelection(name, ordered, entries) {
|
|
|
69
68
|
}
|
|
70
69
|
/**
|
|
71
70
|
* Declares one relation: `relation("Account", { id: AccountId.fresh,
|
|
72
|
-
* holder: HolderId, ... })` — every field references a declared
|
|
73
|
-
* (`const AccountId = u64.
|
|
74
|
-
* Field declaration order is ordinal-id order (macro
|
|
75
|
-
* value is frozen and side-effect free.
|
|
71
|
+
* holder: HolderId, ... })` — every field references a declared
|
|
72
|
+
* domain-labeled descriptor (`const AccountId = u64.as("AccountId")`) or a
|
|
73
|
+
* bare constructor. Field declaration order is ordinal-id order (macro
|
|
74
|
+
* parity); the returned value is frozen and side-effect free.
|
|
76
75
|
*/
|
|
77
76
|
function relation(name, fields) {
|
|
78
77
|
const ordered = [];
|
|
79
78
|
for (const [fieldName, field] of Object.entries(fields)) {
|
|
80
79
|
assertDeclarationOrderKey(`relation ${name} field`, fieldName);
|
|
81
|
-
ordered.push(Object.freeze({ name: fieldName, field
|
|
80
|
+
ordered.push(Object.freeze({ name: fieldName, field }));
|
|
82
81
|
}
|
|
83
82
|
const data = Object.freeze({ name, fields: Object.freeze(ordered) });
|
|
84
83
|
const refs = {};
|
package/dist/relation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAiB,yBAAyB,EAAc,SAAS,EAAE,MAAM,YAAY,CAAA;AAM5F;;;;;;GAMG;AACH,SAAS,YAAY,CACpB,IAA6B,EAC7B,MAAc;IAEd,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,SAAS;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAC3B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,CAAA;IAC5F,CAAC,CAAC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAe,EAAE,KAAc;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzG,MAAM,QAAQ,GAAkB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,eAAe,CAAC,OAAgB;YAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;AACvF,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CACxB,IAAY,EACZ,OAAiC,EACjC,OAAkD;IAElD,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,SAAQ;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,SAAS;YACtD,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,CAAA;QACpC,CAAC,CAAC,CAAA;QACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,iBAAiB,SAAS,EAAE,CAAC,CAAA;QAC/D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,GAAG,CACf,YAAY,IAAI,yIAAyI,CACzJ,CAAA;IACF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC/B,CAAC;AAsGD;;;;;;GAMG;AACH,SAAS,QAAQ,CAChB,IAAU,EACV,MAAc;IAEd,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,yBAAyB,CAAC,YAAY,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,IAAI,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAClF,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9E,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnB,IAAI,CAAC,YAAY,CAAe,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,2CAA2C,CAAC,CAAA;IAC9E,CAAC;IACD,MAAM,MAAM,GAAkD,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IAClF,SAAS,KAAK,CAAC,SAAiC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,qDAAqD,CAAC,CAAA;QACxF,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACrE,CAAC,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAA2B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACxF,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,OAAO,KAAK,CAAA;AACb,CAAC;AAmBD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAkOhE,gDAAgD;AAChD,KAAK,cAAc,GAAG,WAAW,GAAG,SAAS,CAAA;AAE7C,mFAAmF;AACnF,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAErD,+EAA+E;AAC/E,UAAU,MAAM,CAAC,IAAI,SAAS,eAAe;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAA;CACzC;AAED,sDAAsD;AACtD,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,iBAAS,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,eAAe,EACjD,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,SAAS,SAAS,EAAE,GAC9B,MAAM,CAAC,IAAI,CAAC,CAmBd;AAED,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
package/dist/schema.js
CHANGED
|
@@ -30,7 +30,7 @@ function collectImplied(name, relations) {
|
|
|
30
30
|
continue;
|
|
31
31
|
}
|
|
32
32
|
for (const declared of member.data.fields) {
|
|
33
|
-
if (declared.field.
|
|
33
|
+
if ("fresh" in declared.field && declared.field.fresh === true) {
|
|
34
34
|
implied.add(`${member.name}(${declared.name}) -> ${member.name}`);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -61,7 +61,7 @@ function verifyMembership(name, relations, statement, rendered) {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
/** Finds a face's field
|
|
64
|
+
/** Finds a face's field descriptor by name, across both relation kinds. */
|
|
65
65
|
function faceField(face, fieldName) {
|
|
66
66
|
const data = face.owner.data;
|
|
67
67
|
if ("handles" in data) {
|
|
@@ -75,6 +75,17 @@ function faceField(face, fieldName) {
|
|
|
75
75
|
});
|
|
76
76
|
return declared?.field;
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* The roster a field resolves handles through: present exactly on a closed
|
|
80
|
+
* reference descriptor (the structural `closed` property — S1's
|
|
81
|
+
* `ClosedIdField`), absent on every other field kind.
|
|
82
|
+
*/
|
|
83
|
+
function rosterOf(field) {
|
|
84
|
+
if (field !== undefined && "closed" in field) {
|
|
85
|
+
return field.closed;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
78
89
|
/** Flattens one binding's literal set into its literals. */
|
|
79
90
|
function bindingLiterals(set) {
|
|
80
91
|
if (set.kind === "one") {
|
|
@@ -89,16 +100,16 @@ function bindingLiterals(set) {
|
|
|
89
100
|
* engine boundary with a colder message.
|
|
90
101
|
*/
|
|
91
102
|
function verifyBindingHandles(name, face, binding, rendered) {
|
|
92
|
-
const
|
|
103
|
+
const roster = rosterOf(faceField(face, binding.field));
|
|
93
104
|
for (const literal of bindingLiterals(binding.set)) {
|
|
94
105
|
if (literal.kind !== "handle") {
|
|
95
106
|
continue;
|
|
96
107
|
}
|
|
97
|
-
if (
|
|
98
|
-
throw errors.new(`schema ${name}: ${face.owner.name}.${binding.field} is not a closed-relation reference — the handle literal ${literal.handle} is legal only on a field whose
|
|
108
|
+
if (roster === undefined) {
|
|
109
|
+
throw errors.new(`schema ${name}: ${face.owner.name}.${binding.field} is not a closed-relation reference — the handle literal ${literal.handle} is legal only on a field whose domain is a closed relation's handle domain — ${rendered}`);
|
|
99
110
|
}
|
|
100
|
-
if (!
|
|
101
|
-
throw errors.new(`schema ${name}: closed relation ${
|
|
111
|
+
if (!roster.handles.includes(literal.handle)) {
|
|
112
|
+
throw errors.new(`schema ${name}: closed relation ${roster.name} has no handle ${literal.handle} — ${rendered}`);
|
|
102
113
|
}
|
|
103
114
|
}
|
|
104
115
|
}
|
|
@@ -180,7 +191,7 @@ function verifyClosedReferenceBinding(name, statements, face, binding, rendered)
|
|
|
180
191
|
if (!spellsHandle) {
|
|
181
192
|
return;
|
|
182
193
|
}
|
|
183
|
-
const roster = faceField(face, binding.field)
|
|
194
|
+
const roster = rosterOf(faceField(face, binding.field));
|
|
184
195
|
if (roster === undefined) {
|
|
185
196
|
return;
|
|
186
197
|
}
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAG/C,OAAO,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.d.ts
CHANGED
|
@@ -124,9 +124,10 @@ type WindowSpec = {
|
|
|
124
124
|
readonly lo: bigint;
|
|
125
125
|
};
|
|
126
126
|
/**
|
|
127
|
-
* One field: name, structural type, host newtype name
|
|
128
|
-
*
|
|
129
|
-
*
|
|
127
|
+
* One field: name, structural type, host newtype name — the descriptor's
|
|
128
|
+
* DOMAIN label (the macro's `as NewType`; the SDK's `.as("Domain")`),
|
|
129
|
+
* carried for handle resolution only, dropped by the engine at descriptor
|
|
130
|
+
* lowering and never fingerprinted — and the `fresh` mint mark.
|
|
130
131
|
*/
|
|
131
132
|
interface FieldSpec {
|
|
132
133
|
readonly name: string;
|
|
@@ -147,8 +148,8 @@ interface RowSpec {
|
|
|
147
148
|
* kind); a closed relation's `fields` are its declared intrinsic columns
|
|
148
149
|
* only — the synthetic (`id`, u64) handle field is materialized by the
|
|
149
150
|
* engine's schema validation. `newtype` is the handle newtype of a closed
|
|
150
|
-
* relation (the SDK
|
|
151
|
-
* ordinary one.
|
|
151
|
+
* relation (the SDK emits its handle DOMAIN, `` `${name}Id` `` — the same
|
|
152
|
+
* label every referencing field carries), undefined on an ordinary one.
|
|
152
153
|
*/
|
|
153
154
|
interface RelationSpec {
|
|
154
155
|
readonly name: string;
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/statements.d.ts
CHANGED
|
@@ -4,18 +4,34 @@
|
|
|
4
4
|
* form, conditional containment, the bidirectional `==` abbreviation, and
|
|
5
5
|
* the cardinality window. A statement value is opaque and inert — no
|
|
6
6
|
* methods, no fluent continuation: a fact about the theory, not a builder.
|
|
7
|
+
*
|
|
8
|
+
* Every field reference is checked against the relation it names in the
|
|
9
|
+
* TYPE — existence through {@link FaceFields} (`on(R, "nope")` does not
|
|
10
|
+
* compile) and DOMAIN compatibility through {@link SameDomains}: the two
|
|
11
|
+
* faces' projected domain labels are read structurally off the schema type
|
|
12
|
+
* (S1's `F["domain"]`) and constrained positionwise equal, so a
|
|
13
|
+
* cross-domain pair is a compile error by string-literal comparison of
|
|
14
|
+
* descriptor shapes — never by a value brand (the structural design's
|
|
15
|
+
* ratified check). What is only a SEMANTIC property — the target side of a
|
|
16
|
+
* containment resolving a declared key of its relation — is DELIBERATELY
|
|
17
|
+
* not (and cannot be) stated here: whether `B(y)` is a key of `B` depends
|
|
18
|
+
* on which `key()` statements the surrounding `schema()` collects, a set no
|
|
19
|
+
* face type can see; it stays the engine's typed `SchemaError` judgment at
|
|
20
|
+
* `Db.create`/`Db.open` (the two-boundary split, engine as final
|
|
21
|
+
* authority).
|
|
7
22
|
*/
|
|
8
|
-
import { phantom } from "#brand.ts";
|
|
9
23
|
import type { Count } from "#count.ts";
|
|
10
|
-
import { type AnyFace, type FaceData, type SameArity } from "#face.ts";
|
|
24
|
+
import { type AnyFace, type FaceData, type SameArity, type SameDomains } from "#face.ts";
|
|
11
25
|
import type { AnyRelation, RelationFields } from "#relation.ts";
|
|
12
26
|
import { type WindowSpec } from "#spec.ts";
|
|
13
|
-
/**
|
|
14
|
-
|
|
27
|
+
/** A `key()` statement's runtime description — owner and projection carried at exact types. */
|
|
28
|
+
interface KeyData<R extends AnyRelation, Projection extends readonly string[]> {
|
|
15
29
|
readonly kind: "key";
|
|
16
|
-
readonly owner:
|
|
17
|
-
readonly projection:
|
|
18
|
-
}
|
|
30
|
+
readonly owner: R;
|
|
31
|
+
readonly projection: Projection;
|
|
32
|
+
}
|
|
33
|
+
/** One statement's runtime description, tagged by form. */
|
|
34
|
+
type StatementData = KeyData<AnyRelation, readonly string[]> | {
|
|
19
35
|
readonly kind: "containment";
|
|
20
36
|
readonly source: FaceData;
|
|
21
37
|
readonly target: FaceData;
|
|
@@ -31,50 +47,59 @@ interface Statement {
|
|
|
31
47
|
readonly data: StatementData;
|
|
32
48
|
}
|
|
33
49
|
/**
|
|
34
|
-
* A `key()` statement as a TYPED value:
|
|
35
|
-
*
|
|
50
|
+
* A `key()` statement as a TYPED value: its `data` carries the owner
|
|
51
|
+
* relation and the projection tuple at their EXACT types (honest runtime
|
|
52
|
+
* properties — no phantom), which is what the key-statement-selected
|
|
36
53
|
* `get(relation, keyStatement, key)` overload types its key object by
|
|
37
|
-
* (`docs/architecture/70-api.md` § the freeze, the multi-key typed get)
|
|
38
|
-
*
|
|
39
|
-
*
|
|
54
|
+
* (`docs/architecture/70-api.md` § the freeze, the multi-key typed get) and
|
|
55
|
+
* what resolves each projected field's domain label through the owner's
|
|
56
|
+
* schema type. Structurally still a plain {@link Statement}.
|
|
40
57
|
*/
|
|
41
58
|
interface KeyStatement<R extends AnyRelation, Projection extends readonly string[]> extends Statement {
|
|
42
|
-
readonly
|
|
43
|
-
readonly owner: R;
|
|
44
|
-
readonly projection: Projection;
|
|
45
|
-
};
|
|
59
|
+
readonly data: KeyData<R, Projection>;
|
|
46
60
|
}
|
|
47
61
|
/**
|
|
48
62
|
* `R(X) -> R` — the FD key form, composite keys as tuples. No selection
|
|
49
63
|
* parameter exists (the FD-with-selection shape is unrepresentable, as in
|
|
50
64
|
* the grammar), and only ordinary relations are accepted: a closed
|
|
51
65
|
* relation's key `R(id) -> R` is materialized by the engine, so an
|
|
52
|
-
* explicit one would only ever be a duplicate.
|
|
53
|
-
*
|
|
54
|
-
*
|
|
66
|
+
* explicit one would only ever be a duplicate. Every projected name is
|
|
67
|
+
* checked against `R`'s field block in the type, and the tuple is carried
|
|
68
|
+
* in the returned value's type ({@link KeyStatement}) — keyed point reads
|
|
69
|
+
* through THIS statement are typed field-for-field, domains resolvable
|
|
70
|
+
* through the owner's schema type.
|
|
55
71
|
*/
|
|
56
72
|
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>;
|
|
57
73
|
/**
|
|
58
|
-
* `A(X|φ) <= B(Y|ψ)` — conditional inclusion, source left.
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
74
|
+
* `A(X|φ) <= B(Y|ψ)` — conditional inclusion, source left. Arity mismatch
|
|
75
|
+
* between the two faces is a type error ({@link SameArity}); a cross-domain
|
|
76
|
+
* pair is a type error ({@link SameDomains} — positionwise string-literal
|
|
77
|
+
* equality of the projected S1 domain labels). The target side must
|
|
78
|
+
* resolve a declared key of B — a SEMANTIC property of the whole statement
|
|
79
|
+
* set that no face type can state, DELIBERATELY judged by the engine at
|
|
80
|
+
* `Db.create`/`Db.open` (`SchemaError`), never re-checked here.
|
|
62
81
|
*/
|
|
63
|
-
declare function contained<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B>): Statement;
|
|
82
|
+
declare function contained<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameDomains<A, B>): Statement;
|
|
64
83
|
/**
|
|
65
|
-
* `A(X|φ) == B(Y|ψ)` — the bidirectional abbreviation, one utterance
|
|
66
|
-
*
|
|
67
|
-
* (
|
|
84
|
+
* `A(X|φ) == B(Y|ψ)` — the bidirectional abbreviation, one utterance: the
|
|
85
|
+
* selected `==` bijection, a keyed one-to-one correspondence between the
|
|
86
|
+
* two faces (each side contains the other). It lowers to the two adjacent
|
|
87
|
+
* containments in the `A <= B` first order (macro parity — the engine
|
|
88
|
+
* performs the split, source-first) and renders as `==` once, in the
|
|
89
|
+
* written orientation. Faces pair by arity AND domain, exactly as
|
|
90
|
+
* {@link contained}.
|
|
68
91
|
*/
|
|
69
|
-
declare function mirrors<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B>): Statement;
|
|
92
|
+
declare function mirrors<A extends AnyFace, B extends AnyFace>(source: A, target: B & SameArity<A, B> & SameDomains<A, B>): Statement;
|
|
70
93
|
/**
|
|
71
94
|
* `B(Y|ψ) <={window} A(X|φ)` — the cardinality window. READ CAREFULLY: the
|
|
72
95
|
* LEFT face is the window's TARGET, the per-group parent (B-family,
|
|
73
96
|
* target-left — macro parity), and the RIGHT face is the counted source.
|
|
74
97
|
* `window(on(Holder, "id"), atMost(3n), on(Account, "holder"))` says: each
|
|
75
|
-
* Holder id groups at most three Account rows by holder.
|
|
98
|
+
* Holder id groups at most three Account rows by holder. The two faces
|
|
99
|
+
* pair by arity AND domain ({@link SameDomains}), exactly as containment —
|
|
100
|
+
* the grouping join reads the same positionwise field pairing.
|
|
76
101
|
*/
|
|
77
|
-
declare function window<B extends AnyFace, A extends AnyFace>(target: B, count: Count, source: A & SameArity<B, A>): Statement;
|
|
102
|
+
declare function window<B extends AnyFace, A extends AnyFace>(target: B, count: Count, source: A & SameArity<B, A> & SameDomains<B, A>): Statement;
|
|
78
103
|
/**
|
|
79
104
|
* Renders one statement in the CANONICAL macro spelling
|
|
80
105
|
* (`docs/architecture/70-api.md`; the engine's `schema/render.rs` emits the
|
|
@@ -86,6 +111,6 @@ declare function window<B extends AnyFace, A extends AnyFace>(target: B, count:
|
|
|
86
111
|
* strings are output-only.
|
|
87
112
|
*/
|
|
88
113
|
declare function renderStatement(statement: Statement): string;
|
|
89
|
-
export type { KeyStatement, Statement, StatementData };
|
|
114
|
+
export type { KeyData, KeyStatement, Statement, StatementData };
|
|
90
115
|
export { contained, key, mirrors, renderStatement, window };
|
|
91
116
|
//# 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
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}
|