@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/capacity.d.ts
CHANGED
|
@@ -1,50 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* the
|
|
4
|
-
* § the canonical-utterance law, restated
|
|
5
|
-
* around the aggregate form). `within` is the ONE window spelling —
|
|
6
|
-
* `within(n)` exact (`within(0n)` IS the exclusion's one spelling),
|
|
7
|
-
* `within(lo, hi)` range (`within(0n, hi)` the canonical ceiling),
|
|
8
|
-
* `within(lo, "*")` floor — `weigh` names the measure on the SOURCE row
|
|
9
|
-
* (`weigh("watts")` a u64 field, `weigh(duration("booked"))` an interval's
|
|
10
|
-
* measure), and `ref`/`duration` read a dependent bound from the
|
|
11
|
-
* TARGET row (hi slot only — ruled 2026-07-24, C6). The ban table is
|
|
12
|
-
* enforced REPRESENTATIONALLY in two tiers, split per-aggregate where
|
|
13
|
-
* weight-sensitive (design § 6: a ban is canonical-utterance policing when
|
|
14
|
-
* it is weight-independent, semantic deduplication when it is not):
|
|
15
|
-
*
|
|
16
|
-
* - **The type tier**: a banned spelling written as a LITERAL does not
|
|
17
|
-
* compile — every negative bound, `within(n, n)`, `within(0n, 0n)`, and
|
|
18
|
-
* `within(0n, "*")` are type errors naming the canonical form. The
|
|
19
|
-
* weight-SENSITIVE row rides the `capacity` overloads themselves:
|
|
20
|
-
* `within(1n, "*")` is banned on the unit overload only (`{1..*}` on the
|
|
21
|
-
* count instance is the bare containment respelled —
|
|
22
|
-
* `window_floor_containment`), and LEGAL on the weighted one ("positive
|
|
23
|
-
* total" is not an existence claim over rows).
|
|
24
|
-
* - **The construction tier**: a bound the type level cannot judge — a
|
|
25
|
-
* COMPUTED `bigint`, or an inverted `within(lo, hi)` order — is judged at
|
|
26
|
-
* construction with the same canonical-naming errors; and past both
|
|
27
|
-
* tiers the engine's own spec validation remains the law for a hostile
|
|
28
|
-
* FFI caller (the standing two-tier ban enforcement).
|
|
29
|
-
*
|
|
30
|
-
* The weight vocabulary is closed at the row (ruled 2026-07-24, ruling 6):
|
|
31
|
-
* a path weight (`weigh("model.watts")`) is a typed refusal at BOTH tiers
|
|
32
|
-
* whose diagnostic names the pinned-column idiom — the two-column
|
|
33
|
-
* containment IS the join, stated as a law. Bounds are `bigint` (u64
|
|
34
|
-
* crosses as bigint always, PRD-04's law); the witnessed measure comes
|
|
35
|
-
* back as `bigint` too (u128-wide engine accumulator, C3).
|
|
36
|
-
*/
|
|
1
|
+
/** Structural capacity measures and windows. Constructors and generated
|
|
2
|
+
* descriptions share the same checked representation. Bounds are u64;
|
|
3
|
+
* dependent bounds read the target row, measures read the source row. */
|
|
37
4
|
import type { AnyFace, FaceFields, FaceSource, ProjectedShape } from "./face.js";
|
|
38
5
|
import type { CapacityWindowSpec, WeightSpec } from "./spec.js";
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
readonly window: S;
|
|
42
|
-
readonly [admitted]: true;
|
|
43
|
-
}
|
|
44
|
-
interface CapacityWeight<S extends WeightSpec = WeightSpec> {
|
|
45
|
-
readonly weight: S;
|
|
46
|
-
readonly [admitted]: true;
|
|
47
|
-
}
|
|
6
|
+
type CapacityWindow<S extends CapacityWindowSpec = CapacityWindowSpec> = S;
|
|
7
|
+
type CapacityWeight<S extends WeightSpec = WeightSpec> = S;
|
|
48
8
|
interface FieldRef<F extends string = string> {
|
|
49
9
|
readonly kind: "field";
|
|
50
10
|
readonly field: F;
|
|
@@ -53,8 +13,6 @@ interface DurationRef<F extends string = string> {
|
|
|
53
13
|
readonly kind: "durationField";
|
|
54
14
|
readonly field: F;
|
|
55
15
|
}
|
|
56
|
-
declare function isCapacityWindow(value: unknown): value is CapacityWindow;
|
|
57
|
-
declare function isCapacityWeight(value: unknown): value is CapacityWeight;
|
|
58
16
|
interface BannedWindow<Canonical extends string> {
|
|
59
17
|
readonly "banned window spelling — the canonical-utterance law names the one legal form": Canonical;
|
|
60
18
|
}
|
|
@@ -92,7 +50,7 @@ type RangeBan<Lo extends bigint, Hi extends bigint> = bigint extends Lo ? unknow
|
|
|
92
50
|
* only: Duration weights pair with Duration-capable bounds, so the
|
|
93
51
|
* weighted overload takes the same window freely.
|
|
94
52
|
*/
|
|
95
|
-
type UnitDimensionBan<W extends CapacityWindow> = W
|
|
53
|
+
type UnitDimensionBan<W extends CapacityWindow> = W extends {
|
|
96
54
|
readonly hi: {
|
|
97
55
|
readonly kind: "durationField";
|
|
98
56
|
};
|
|
@@ -110,10 +68,10 @@ interface BoundKindMismatch<K, Want> {
|
|
|
110
68
|
Want
|
|
111
69
|
];
|
|
112
70
|
}
|
|
113
|
-
type BoundOnTarget<K extends string, Want extends "u64" | "interval", B extends AnyFace> = string extends K ? unknown : K extends FaceFields<B["
|
|
114
|
-
type BoundsOnTarget<W extends CapacityWindow, B extends AnyFace> = W
|
|
71
|
+
type BoundOnTarget<K extends string, Want extends "u64" | "interval", B extends AnyFace> = string extends K ? unknown : K extends FaceFields<B["owner"]> ? KindAt<B["owner"], K> extends Want ? unknown : BoundKindMismatch<K, Want> : BoundOffTargetRoster<K, FaceFields<B["owner"]>>;
|
|
72
|
+
type BoundsOnTarget<W extends CapacityWindow, B extends AnyFace> = W extends {
|
|
115
73
|
readonly hi: FieldRef<infer K>;
|
|
116
|
-
} ? BoundOnTarget<K, "u64", B> : W
|
|
74
|
+
} ? BoundOnTarget<K, "u64", B> : W extends {
|
|
117
75
|
readonly hi: DurationRef<infer K>;
|
|
118
76
|
} ? BoundOnTarget<K, "interval", B> : unknown;
|
|
119
77
|
interface WeightOffSourceRoster<K, Roster> {
|
|
@@ -135,13 +93,13 @@ interface WeightKindMismatch<K, Want> {
|
|
|
135
93
|
* position. Checked at the `capacity` call where the source face is
|
|
136
94
|
* inferred — the proven constrain-after-inference pattern.
|
|
137
95
|
*/
|
|
138
|
-
type WeightOnSource<M extends CapacityWeight, A extends AnyFace> = M
|
|
96
|
+
type WeightOnSource<M extends CapacityWeight, A extends AnyFace> = M extends {
|
|
139
97
|
readonly kind: "field";
|
|
140
98
|
readonly field: infer K extends string;
|
|
141
|
-
} ? string extends K ? unknown : K extends FaceFields<A["
|
|
99
|
+
} ? string extends K ? unknown : K extends FaceFields<A["owner"]> ? KindAt<A["owner"], K> extends "u64" ? unknown : WeightKindMismatch<K, "u64"> : WeightOffSourceRoster<K, FaceFields<A["owner"]>> : M extends {
|
|
142
100
|
readonly kind: "durationField";
|
|
143
101
|
readonly field: infer K extends string;
|
|
144
|
-
} ? string extends K ? unknown : K extends FaceFields<A["
|
|
102
|
+
} ? string extends K ? unknown : K extends FaceFields<A["owner"]> ? KindAt<A["owner"], K> extends "interval" ? unknown : WeightKindMismatch<K, "interval"> : WeightOffSourceRoster<K, FaceFields<A["owner"]>> : unknown;
|
|
145
103
|
declare const unitWeight: WeightSpec;
|
|
146
104
|
declare function within<const N extends bigint>(n: N & NegativeBan<N>): CapacityWindow<{
|
|
147
105
|
readonly kind: "exact";
|
|
@@ -211,5 +169,7 @@ declare function ref<const F extends string>(field: F & PathBan<F>): FieldRef<F>
|
|
|
211
169
|
*/
|
|
212
170
|
declare function duration<const F extends string>(field: F & PathBan<F>): DurationRef<F>;
|
|
213
171
|
export type { BoundsOnTarget, CapacityWeight, CapacityWindow, DurationRef, FieldRef, UnitDimensionBan, WeightOnSource };
|
|
214
|
-
|
|
172
|
+
declare function capacityWindow(input: unknown): CapacityWindow;
|
|
173
|
+
declare function capacityWeight(input: unknown): CapacityWeight;
|
|
174
|
+
export { capacityWeight, capacityWindow, duration, ref, unitWeight, weigh, within };
|
|
215
175
|
//# sourceMappingURL=capacity.d.ts.map
|
package/dist/capacity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../src/capacity.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../src/capacity.ts"],"names":[],"mappings":"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"}
|
package/dist/capacity.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { AuthoringError } from "#errors.ts";
|
|
2
|
-
|
|
3
|
-
function isCapacityWindow(value) {
|
|
4
|
-
return typeof value === "object" && value !== null && admitted in value && "window" in value;
|
|
5
|
-
}
|
|
6
|
-
function isCapacityWeight(value) {
|
|
7
|
-
return typeof value === "object" && value !== null && admitted in value && "weight" in value;
|
|
8
|
-
}
|
|
2
|
+
import { integerValue, recordValue } from "#values.ts";
|
|
9
3
|
const unitWeight = Object.freeze({ kind: "unit" });
|
|
10
4
|
function assertRowLocal(field, role) {
|
|
5
|
+
if (typeof field !== "string" || !field.isWellFormed())
|
|
6
|
+
throw new AuthoringError({ message: `${role}: expected a well-formed field name` });
|
|
11
7
|
if (field.includes(".")) {
|
|
12
8
|
throw new AuthoringError({
|
|
13
9
|
message: `${role} \`${field}\` walks a reference — the vocabulary is closed at the row (ruling 6): pin the column with a two-column containment (Source(ref, f) <= Catalog(id, f)) and name the local field`
|
|
@@ -16,13 +12,16 @@ function assertRowLocal(field, role) {
|
|
|
16
12
|
return field;
|
|
17
13
|
}
|
|
18
14
|
function admitWindow(window) {
|
|
19
|
-
|
|
20
|
-
return Object.freeze(
|
|
15
|
+
capacityWindow(window);
|
|
16
|
+
return Object.freeze(window);
|
|
21
17
|
}
|
|
22
18
|
function lit(value) {
|
|
23
19
|
return Object.freeze({ kind: "lit", value });
|
|
24
20
|
}
|
|
25
21
|
function within(lo, hi) {
|
|
22
|
+
integerValue("capacity lower bound", "u64", lo);
|
|
23
|
+
if (typeof hi === "bigint")
|
|
24
|
+
integerValue("capacity upper bound", "u64", hi);
|
|
26
25
|
if (lo < 0n) {
|
|
27
26
|
throw new AuthoringError({
|
|
28
27
|
message: `capacity bounds are u64: within(${lo}${hi === undefined ? "" : ", …"}) is out of domain`
|
|
@@ -59,8 +58,8 @@ function within(lo, hi) {
|
|
|
59
58
|
return admitWindow({ kind: "range", lo: lit(lo), hi: Object.freeze({ kind: "field", field }) });
|
|
60
59
|
}
|
|
61
60
|
function admitWeight(weight) {
|
|
62
|
-
|
|
63
|
-
return Object.freeze(
|
|
61
|
+
capacityWeight(weight);
|
|
62
|
+
return Object.freeze(weight);
|
|
64
63
|
}
|
|
65
64
|
function weigh(measure) {
|
|
66
65
|
if (typeof measure === "string") {
|
|
@@ -80,5 +79,57 @@ function ref(field) {
|
|
|
80
79
|
function duration(field) {
|
|
81
80
|
return Object.freeze({ kind: "durationField", field: assertRowLocal(field, "Duration measure") });
|
|
82
81
|
}
|
|
83
|
-
|
|
82
|
+
/** Read a checked bound without retaining a caller-owned record. */
|
|
83
|
+
function capacityBound(input) {
|
|
84
|
+
const kind = typeof input === "object" && input !== null && "kind" in input ? input.kind : undefined;
|
|
85
|
+
if (kind === "lit") {
|
|
86
|
+
const bound = recordValue("capacity bound", input, ["kind", "value"]);
|
|
87
|
+
return Object.freeze({ kind, value: integerValue("capacity bound", "u64", bound.value) });
|
|
88
|
+
}
|
|
89
|
+
if (kind === "field" || kind === "durationField") {
|
|
90
|
+
const bound = recordValue("capacity bound", input, ["kind", "field"]);
|
|
91
|
+
if (typeof bound.field !== "string")
|
|
92
|
+
throw new AuthoringError({ message: "capacity bound: expected a field name" });
|
|
93
|
+
return Object.freeze({ kind, field: assertRowLocal(bound.field, "dependent bound") });
|
|
94
|
+
}
|
|
95
|
+
throw new AuthoringError({ message: "capacity bound: unknown kind" });
|
|
96
|
+
}
|
|
97
|
+
function literalBound(input) {
|
|
98
|
+
const bound = capacityBound(input);
|
|
99
|
+
if (bound.kind !== "lit")
|
|
100
|
+
throw new AuthoringError({ message: "dependent bounds are allowed only at a range's upper bound" });
|
|
101
|
+
return bound;
|
|
102
|
+
}
|
|
103
|
+
function capacityWindow(input) {
|
|
104
|
+
const kind = typeof input === "object" && input !== null && "kind" in input ? input.kind : undefined;
|
|
105
|
+
if (kind === "exact") {
|
|
106
|
+
const window = recordValue("capacity window", input, ["kind", "n"]);
|
|
107
|
+
return Object.freeze({ kind, n: literalBound(window.n) });
|
|
108
|
+
}
|
|
109
|
+
if (kind === "floor") {
|
|
110
|
+
const window = recordValue("capacity window", input, ["kind", "lo"]);
|
|
111
|
+
return Object.freeze({ kind, lo: literalBound(window.lo) });
|
|
112
|
+
}
|
|
113
|
+
if (kind === "range") {
|
|
114
|
+
const window = recordValue("capacity window", input, ["kind", "lo", "hi"]);
|
|
115
|
+
const lo = literalBound(window.lo);
|
|
116
|
+
const hi = capacityBound(window.hi);
|
|
117
|
+
if (hi.kind === "lit" && hi.value < lo.value)
|
|
118
|
+
throw new AuthoringError({ message: "capacity window is inverted" });
|
|
119
|
+
return Object.freeze({ kind, lo, hi });
|
|
120
|
+
}
|
|
121
|
+
throw new AuthoringError({ message: "capacity window: unknown kind" });
|
|
122
|
+
}
|
|
123
|
+
function capacityWeight(input) {
|
|
124
|
+
const kind = typeof input === "object" && input !== null && "kind" in input ? input.kind : undefined;
|
|
125
|
+
if (kind === "unit") {
|
|
126
|
+
recordValue("capacity weight", input, ["kind"]);
|
|
127
|
+
return unitWeight;
|
|
128
|
+
}
|
|
129
|
+
const weight = capacityBound(input);
|
|
130
|
+
if (weight.kind === "lit")
|
|
131
|
+
throw new AuthoringError({ message: "capacity weight: expected unit or a source field" });
|
|
132
|
+
return weight;
|
|
133
|
+
}
|
|
134
|
+
export { capacityWeight, capacityWindow, duration, ref, unitWeight, weigh, within };
|
|
84
135
|
//# sourceMappingURL=capacity.js.map
|
package/dist/capacity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacity.js","sourceRoot":"","sources":["../src/capacity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"capacity.js","sourceRoot":"","sources":["../src/capacity.ts"],"names":[],"mappings":"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"}
|
package/dist/changes.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { Scope } from "effect";
|
|
2
|
-
import { Effect } from "effect";
|
|
2
|
+
import { Effect, Stream } from "effect";
|
|
3
3
|
import type { SchemaId } from "./compile.js";
|
|
4
4
|
import type { ChangesHandle } from "./db-native.js";
|
|
5
|
-
import type
|
|
6
|
-
import type { ExecutionPolicy } from "./runtime.js";
|
|
5
|
+
import { type AnyRelation, type Fact } from "./relation.js";
|
|
7
6
|
import type { CloseReport } from "./runtime-errors.js";
|
|
8
7
|
import { DbError } from "./runtime-errors.js";
|
|
9
8
|
import type { AnySchema } from "./schema.js";
|
|
@@ -15,16 +14,38 @@ import type { Rel } from "./shape.js";
|
|
|
15
14
|
* add-wins. Immutable and reusable while open; sealing/submitting it later
|
|
16
15
|
* retains the SAME native value — no second JS row walk ever happens.
|
|
17
16
|
*/
|
|
17
|
+
/** Counts of distinct fact additions and removals, never input events. */
|
|
18
|
+
interface ChangeCounts {
|
|
19
|
+
readonly added: bigint;
|
|
20
|
+
readonly removed: bigint;
|
|
21
|
+
}
|
|
22
|
+
/** A relation-name-discriminated union of plain, fully typed facts. */
|
|
23
|
+
type ChangeRecord<S extends AnySchema> = {
|
|
24
|
+
[N in keyof S["relations"]]: S["relations"][N] extends AnyRelation ? {
|
|
25
|
+
readonly relation: N;
|
|
26
|
+
readonly kind: "add" | "remove";
|
|
27
|
+
readonly fact: Fact<S["relations"][N]>;
|
|
28
|
+
} : never;
|
|
29
|
+
}[keyof S["relations"]];
|
|
18
30
|
interface ChangeSet<S extends AnySchema> {
|
|
19
31
|
readonly schemaId: SchemaId;
|
|
32
|
+
/** Distinct requested actions; use judge for effective counts against a store. */
|
|
33
|
+
readonly counts: ChangeCounts;
|
|
34
|
+
readonly byteLength: bigint;
|
|
20
35
|
/** Phantom schema brand: a ChangeSet is only ever applied to its own S. */
|
|
21
36
|
readonly schema?: S;
|
|
37
|
+
/** Independent scoped traversal, delivered in bounded native batches. Reusable. */
|
|
38
|
+
records(): Stream.Stream<ChangeRecord<S>, DbError>;
|
|
39
|
+
/** Explicit full byte materialization. Mutating returned bytes cannot alter this value. */
|
|
40
|
+
toBytes(): Effect.Effect<Uint8Array, DbError>;
|
|
41
|
+
/** Commutative add-wins composition into one command, not sequential replay. */
|
|
42
|
+
compose(other: ChangeSet<S>): Effect.Effect<ChangeSet<S>, DbError, Scope.Scope>;
|
|
22
43
|
close(): Effect.Effect<CloseReport>;
|
|
23
44
|
}
|
|
24
45
|
/**
|
|
25
46
|
* `ChangeDraft` — the scoped, database-free construction capability.
|
|
26
47
|
* Every method constructs a LAZY effect; execution reads the then-current
|
|
27
|
-
* iterable
|
|
48
|
+
* iterable again on every sequential rerun (no hidden
|
|
28
49
|
* memoization, no automatic retry, no iterator replay). Input must stay
|
|
29
50
|
* stable from an ingestion effect's execution start through its Exit;
|
|
30
51
|
* after successful ingestion the accepted native bytes are independent.
|
|
@@ -47,8 +68,9 @@ interface ChangesInternal {
|
|
|
47
68
|
/** Private cross-module accessor (db.apply retains the native ChangeSet). */
|
|
48
69
|
declare function internalChanges(value: object): ChangesInternal | undefined;
|
|
49
70
|
declare const ChangeSet: Readonly<{
|
|
50
|
-
builder: <S extends AnySchema>(schema: S
|
|
71
|
+
builder: <S extends AnySchema>(schema: S) => Effect.Effect<ChangeDraft<S>, DbError, import("./runtime.js").NativeRuntime | Scope.Scope>;
|
|
72
|
+
fromBytes: <S extends AnySchema>(schema: S, bytes: Uint8Array<ArrayBufferLike>) => Effect.Effect<ChangeSet<S>, DbError, import("./runtime.js").NativeRuntime | Scope.Scope>;
|
|
51
73
|
}>;
|
|
52
|
-
export type { ChangeDraft };
|
|
74
|
+
export type { ChangeCounts, ChangeDraft, ChangeRecord };
|
|
53
75
|
export { ChangeSet, internalChanges };
|
|
54
76
|
//# sourceMappingURL=changes.d.ts.map
|
package/dist/changes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
|