@bjornpagen/bumbledb 0.20.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COOKBOOK.md +283 -1611
- package/README.md +156 -118
- package/dist/capacity.d.ts +16 -12
- package/dist/capacity.d.ts.map +1 -1
- package/dist/capacity.js +16 -48
- package/dist/capacity.js.map +1 -1
- package/dist/changes.d.ts +54 -0
- package/dist/changes.d.ts.map +1 -0
- package/dist/changes.js +245 -0
- package/dist/changes.js.map +1 -0
- package/dist/close.d.ts +24 -0
- package/dist/close.d.ts.map +1 -0
- package/dist/close.js +34 -0
- package/dist/close.js.map +1 -0
- package/dist/closed.d.ts +1 -3
- package/dist/closed.d.ts.map +1 -1
- package/dist/closed.js +24 -12
- package/dist/closed.js.map +1 -1
- package/dist/codec.d.ts +56 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +289 -0
- package/dist/codec.js.map +1 -0
- package/dist/compile.d.ts +68 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +75 -0
- package/dist/compile.js.map +1 -0
- package/dist/db-native.d.ts +170 -0
- package/dist/db-native.d.ts.map +1 -0
- package/dist/db-native.js +5 -0
- package/dist/db-native.js.map +1 -0
- package/dist/db.d.ts +101 -233
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +232 -1084
- package/dist/db.js.map +1 -1
- package/dist/errors.d.ts +57 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +32 -0
- package/dist/errors.js.map +1 -0
- package/dist/face.d.ts.map +1 -1
- package/dist/face.js +2 -2
- package/dist/face.js.map +1 -1
- package/dist/fields.d.ts +65 -24
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +94 -24
- package/dist/fields.js.map +1 -1
- package/dist/index.d.ts +37 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -21
- package/dist/index.js.map +1 -1
- package/dist/internal/log.d.ts +24 -0
- package/dist/internal/log.d.ts.map +1 -0
- package/dist/internal/log.js +10 -0
- package/dist/internal/log.js.map +1 -0
- package/dist/law.d.ts +8 -13
- package/dist/law.d.ts.map +1 -1
- package/dist/law.js +6 -59
- package/dist/law.js.map +1 -1
- package/dist/lower.d.ts +0 -13
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +9 -17
- package/dist/lower.js.map +1 -1
- package/dist/migration.d.ts +33 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +48 -0
- package/dist/migration.js.map +1 -0
- package/dist/native.d.ts +256 -301
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +65 -108
- package/dist/native.js.map +1 -1
- package/dist/query/atom.d.ts +24 -13
- package/dist/query/atom.d.ts.map +1 -1
- package/dist/query/atom.js +7 -3
- package/dist/query/atom.js.map +1 -1
- package/dist/query/compute.d.ts +68 -0
- package/dist/query/compute.d.ts.map +1 -0
- package/dist/query/compute.js +141 -0
- package/dist/query/compute.js.map +1 -0
- package/dist/query/find.d.ts +15 -8
- package/dist/query/find.d.ts.map +1 -1
- package/dist/query/find.js +6 -2
- package/dist/query/find.js.map +1 -1
- package/dist/query/lower.d.ts +23 -2
- package/dist/query/lower.d.ts.map +1 -1
- package/dist/query/lower.js +433 -80
- package/dist/query/lower.js.map +1 -1
- package/dist/query/parse-ir.d.ts.map +1 -1
- package/dist/query/parse-ir.js +17 -8
- package/dist/query/parse-ir.js.map +1 -1
- package/dist/query/run.d.ts +12 -2
- package/dist/query/run.d.ts.map +1 -1
- package/dist/query/run.js +26 -9
- package/dist/query/run.js.map +1 -1
- package/dist/query/scope.d.ts +47 -3
- package/dist/query/scope.d.ts.map +1 -1
- package/dist/query/scope.js +83 -19
- package/dist/query/scope.js.map +1 -1
- package/dist/relation.d.ts +3 -8
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +16 -10
- package/dist/relation.js.map +1 -1
- package/dist/result.d.ts +47 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +50 -0
- package/dist/result.js.map +1 -0
- package/dist/rows.d.ts +69 -0
- package/dist/rows.d.ts.map +1 -0
- package/dist/rows.js +328 -0
- package/dist/rows.js.map +1 -0
- package/dist/runtime-codes.d.ts +2 -0
- package/dist/runtime-codes.d.ts.map +1 -0
- package/dist/runtime-codes.js +19 -0
- package/dist/runtime-codes.js.map +1 -0
- package/dist/runtime-errors.d.ts +106 -0
- package/dist/runtime-errors.d.ts.map +1 -0
- package/dist/runtime-errors.js +62 -0
- package/dist/runtime-errors.js.map +1 -0
- package/dist/runtime-native.d.ts +171 -0
- package/dist/runtime-native.d.ts.map +1 -0
- package/dist/runtime-native.js +5 -0
- package/dist/runtime-native.js.map +1 -0
- package/dist/runtime.d.ts +73 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +293 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scalar.d.ts +165 -0
- package/dist/scalar.d.ts.map +1 -0
- package/dist/scalar.js +344 -0
- package/dist/scalar.js.map +1 -0
- package/dist/schema.d.ts +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +34 -37
- package/dist/schema.js.map +1 -1
- package/dist/shape.d.ts +28 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +2 -0
- package/dist/shape.js.map +1 -0
- package/dist/spec.d.ts +27 -3
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +22 -1
- package/dist/spec.js.map +1 -1
- package/dist/statements.d.ts +16 -3
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +54 -28
- package/dist/statements.js.map +1 -1
- package/dist/uuid.d.ts +23 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +54 -0
- package/dist/uuid.js.map +1 -0
- package/pack-provenance.json +7 -0
- package/package.json +12 -16
- package/src/capacity.ts +34 -54
- package/src/changes.ts +361 -0
- package/src/close.ts +53 -0
- package/src/closed.ts +25 -19
- package/src/codec.ts +379 -0
- package/src/compile.ts +149 -0
- package/src/db-native.ts +247 -0
- package/src/db.ts +461 -1632
- package/src/errors.ts +50 -0
- package/src/face.ts +2 -2
- package/src/fields.ts +182 -55
- package/src/index.ts +62 -126
- package/src/internal/log.ts +51 -0
- package/src/law.ts +13 -28
- package/src/lower.ts +9 -4
- package/src/migration.ts +69 -0
- package/src/native.ts +326 -487
- package/src/query/atom.ts +61 -25
- package/src/query/compute.ts +237 -0
- package/src/query/find.ts +31 -12
- package/src/query/lower.ts +531 -143
- package/src/query/parse-ir.ts +18 -13
- package/src/query/run.ts +32 -16
- package/src/query/scope.ts +140 -8
- package/src/relation.ts +17 -21
- package/src/result.ts +130 -0
- package/src/rows.ts +404 -0
- package/src/runtime-codes.ts +18 -0
- package/src/runtime-errors.ts +69 -0
- package/src/runtime-native.ts +242 -0
- package/src/runtime.ts +440 -0
- package/src/scalar.ts +560 -0
- package/src/schema.ts +35 -37
- package/src/shape.ts +31 -0
- package/src/spec.ts +33 -3
- package/src/statements.ts +75 -68
- package/src/uuid.ts +69 -0
- package/dist/marshal.d.ts +0 -44
- package/dist/marshal.d.ts.map +0 -1
- package/dist/marshal.js +0 -165
- package/dist/marshal.js.map +0 -1
- package/src/marshal.ts +0 -200
package/dist/statements.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":"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"}
|
package/dist/uuid.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Result } from "effect";
|
|
2
|
+
import { DbError } from "./runtime-errors.js";
|
|
3
|
+
/** Structural UUID spelling, compatible with host generators and ordinary literals.
|
|
4
|
+
* Exact hexadecimal width and canonical case are checked at runtime boundaries.
|
|
5
|
+
*/
|
|
6
|
+
type Uuid = `${string}-${string}-${string}-${string}-${string}`;
|
|
7
|
+
/** Pure parsing: normalize hexadecimal case, never inspect UUID version or variant. */
|
|
8
|
+
declare function parse(text: string): Result.Result<Uuid, DbError>;
|
|
9
|
+
/** Canonical wire validation. No normalization is permitted at the native boundary. */
|
|
10
|
+
declare function isUuid(value: unknown): value is Uuid;
|
|
11
|
+
/** All sixteen-byte payloads are representable, including Nil, Max, and future versions. */
|
|
12
|
+
declare function fromBytes(bytes: Uint8Array): Result.Result<Uuid, DbError>;
|
|
13
|
+
/** Validate the structural string before decoding fresh bytes in standard UUID order. */
|
|
14
|
+
declare function toBytes(value: Uuid): Result.Result<Uint8Array, DbError>;
|
|
15
|
+
/** Generate UUIDs with a host library; preserve the result across database retries. */
|
|
16
|
+
declare const Uuid: Readonly<{
|
|
17
|
+
parse: typeof parse;
|
|
18
|
+
fromBytes: typeof fromBytes;
|
|
19
|
+
toBytes: typeof toBytes;
|
|
20
|
+
isUuid: typeof isUuid;
|
|
21
|
+
}>;
|
|
22
|
+
export { Uuid };
|
|
23
|
+
//# sourceMappingURL=uuid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C;;GAEG;AACH,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAA;AAS/D,uFAAuF;AACvF,iBAAS,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAMzD;AAED,uFAAuF;AACvF,iBAAS,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAE7C;AAED,4FAA4F;AAC5F,iBAAS,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAYlE;AAMD,yFAAyF;AACzF,iBAAS,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAchE;AAED,uFAAuF;AACvF,QAAA,MAAM,IAAI;;;;;EAAuD,CAAA;AAEjE,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
package/dist/uuid.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Result } from "effect";
|
|
2
|
+
import { DbError } from "#runtime-errors.ts";
|
|
3
|
+
const SYNTAX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
4
|
+
const HEX = "0123456789abcdef";
|
|
5
|
+
function invalid(operation) {
|
|
6
|
+
return new DbError({ operation, reason: { _tag: "InvalidArgument" } });
|
|
7
|
+
}
|
|
8
|
+
/** Pure parsing: normalize hexadecimal case, never inspect UUID version or variant. */
|
|
9
|
+
function parse(text) {
|
|
10
|
+
if (typeof text !== "string" || text.length !== 36) {
|
|
11
|
+
return Result.fail(invalid("Uuid.parse"));
|
|
12
|
+
}
|
|
13
|
+
const canonical = text.toLowerCase();
|
|
14
|
+
return isUuid(canonical) ? Result.succeed(canonical) : Result.fail(invalid("Uuid.parse"));
|
|
15
|
+
}
|
|
16
|
+
/** Canonical wire validation. No normalization is permitted at the native boundary. */
|
|
17
|
+
function isUuid(value) {
|
|
18
|
+
return typeof value === "string" && value.length === 36 && SYNTAX.test(value);
|
|
19
|
+
}
|
|
20
|
+
/** All sixteen-byte payloads are representable, including Nil, Max, and future versions. */
|
|
21
|
+
function fromBytes(bytes) {
|
|
22
|
+
if (!(bytes instanceof Uint8Array) || bytes.length !== 16) {
|
|
23
|
+
return Result.fail(invalid("Uuid.fromBytes"));
|
|
24
|
+
}
|
|
25
|
+
let text = "";
|
|
26
|
+
for (const byte of bytes) {
|
|
27
|
+
text += HEX.charAt(byte >>> 4);
|
|
28
|
+
text += HEX.charAt(byte & 15);
|
|
29
|
+
}
|
|
30
|
+
return Result.succeed(`${text.slice(0, 8)}-${text.slice(8, 12)}-${text.slice(12, 16)}-${text.slice(16, 20)}-${text.slice(20)}`);
|
|
31
|
+
}
|
|
32
|
+
function digit(code) {
|
|
33
|
+
return code <= 57 ? code - 48 : code - 87;
|
|
34
|
+
}
|
|
35
|
+
/** Validate the structural string before decoding fresh bytes in standard UUID order. */
|
|
36
|
+
function toBytes(value) {
|
|
37
|
+
if (!isUuid(value)) {
|
|
38
|
+
return Result.fail(invalid("Uuid.toBytes"));
|
|
39
|
+
}
|
|
40
|
+
const bytes = new Uint8Array(16);
|
|
41
|
+
let offset = 0;
|
|
42
|
+
for (let index = 0; index < 16; index += 1) {
|
|
43
|
+
if (value.charCodeAt(offset) === 45) {
|
|
44
|
+
offset += 1;
|
|
45
|
+
}
|
|
46
|
+
bytes[index] = (digit(value.charCodeAt(offset)) << 4) | digit(value.charCodeAt(offset + 1));
|
|
47
|
+
offset += 2;
|
|
48
|
+
}
|
|
49
|
+
return Result.succeed(bytes);
|
|
50
|
+
}
|
|
51
|
+
/** Generate UUIDs with a host library; preserve the result across database retries. */
|
|
52
|
+
const Uuid = Object.freeze({ parse, fromBytes, toBytes, isUuid });
|
|
53
|
+
export { Uuid };
|
|
54
|
+
//# sourceMappingURL=uuid.js.map
|
package/dist/uuid.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"candidateSourceDigest": "5be8ac5be0ecb3d44502dd24f7aeabe72aac867999f224f61eecf5a19cdce83d",
|
|
3
|
+
"specificationRevision": "87e9a83ee21d1f843c73ac6e7057b2b740db75aae70a553b8053b4f38e87bd2d",
|
|
4
|
+
"stagedAt": "2026-09-07T01:48:46.489Z",
|
|
5
|
+
"package": "@bjornpagen/bumbledb",
|
|
6
|
+
"version": "1.0.0"
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bjornpagen/bumbledb",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Effect-native embedded relational database for TypeScript: typed schemas and queries, exact floats, commit-time constraints",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"default": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"./internal/log": {
|
|
12
|
+
"types": "./dist/internal/log.d.ts",
|
|
13
|
+
"default": "./dist/internal/log.js"
|
|
10
14
|
}
|
|
11
15
|
},
|
|
12
16
|
"imports": {
|
|
@@ -18,6 +22,7 @@
|
|
|
18
22
|
}
|
|
19
23
|
},
|
|
20
24
|
"files": [
|
|
25
|
+
"pack-provenance.json",
|
|
21
26
|
"dist",
|
|
22
27
|
"src",
|
|
23
28
|
"COOKBOOK.md"
|
|
@@ -39,13 +44,10 @@
|
|
|
39
44
|
},
|
|
40
45
|
"homepage": "https://github.com/bjornpagen/bumbledb#readme",
|
|
41
46
|
"dependencies": {
|
|
42
|
-
"@superbuilders/errors": "^4.0.2",
|
|
43
47
|
"arkregex": "^0.0.8"
|
|
44
48
|
},
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"@types/node": "^26.1.0",
|
|
48
|
-
"typescript": "^7.0.2"
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"effect": "4.0.0-rc.112"
|
|
49
51
|
},
|
|
50
52
|
"engines": {
|
|
51
53
|
"node": ">=24"
|
|
@@ -55,14 +57,8 @@
|
|
|
55
57
|
},
|
|
56
58
|
"private": false,
|
|
57
59
|
"optionalDependencies": {
|
|
58
|
-
"@bjornpagen/bumbledb-darwin-arm64": "0.
|
|
59
|
-
"@bjornpagen/bumbledb-linux-arm64": "0.
|
|
60
|
-
"@bjornpagen/bumbledb-linux-x64": "0.
|
|
61
|
-
},
|
|
62
|
-
"scripts": {
|
|
63
|
-
"build": "node scripts/build.ts",
|
|
64
|
-
"typecheck": "tsc --noEmit",
|
|
65
|
-
"lint": "biome check .",
|
|
66
|
-
"test": "pnpm run build && node --test 'test/**/*.test.ts'"
|
|
60
|
+
"@bjornpagen/bumbledb-darwin-arm64": "1.0.0",
|
|
61
|
+
"@bjornpagen/bumbledb-linux-arm64": "1.0.0",
|
|
62
|
+
"@bjornpagen/bumbledb-linux-x64": "1.0.0"
|
|
67
63
|
}
|
|
68
64
|
}
|
package/src/capacity.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AuthoringError } from "#errors.ts"
|
|
1
2
|
/**
|
|
2
3
|
* Capacity-law mints — the window, weight, and dependent-bound vocabulary
|
|
3
4
|
* the one `capacity` statement constructor consumes
|
|
@@ -35,7 +36,6 @@
|
|
|
35
36
|
* back as `bigint` too (u128-wide engine accumulator, C3).
|
|
36
37
|
*/
|
|
37
38
|
|
|
38
|
-
import * as errors from "@superbuilders/errors"
|
|
39
39
|
import type { AnyFace, FaceFields, FaceSource, ProjectedShape } from "#face.ts"
|
|
40
40
|
import type { CapacityBoundSpec, CapacityWindowSpec, WeightSpec } from "#spec.ts"
|
|
41
41
|
|
|
@@ -102,13 +102,14 @@ type NegativeBan<N extends bigint> = bigint extends N
|
|
|
102
102
|
? BannedWindow<"capacity bounds are u64 — a negative bound is out of domain">
|
|
103
103
|
: unknown
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
105
|
+
/**
|
|
106
|
+
* The spelling-ban tables are DELETED (C01, chapter 34): `{n..n}`, `{0..0}`,
|
|
107
|
+
* unit floors `{1..*}`/`{N..*}` and the vacuous `{0..*}` are harmless
|
|
108
|
+
* equivalent spellings that lower to the one canonical `(lo, hi)` law at
|
|
109
|
+
* the mint. Genuinely different semantics still refuse: negative bounds
|
|
110
|
+
* (out of the u64 domain) and inverted literal bounds.
|
|
111
|
+
*/
|
|
112
|
+
type FloorBan<N extends bigint> = NegativeBan<N>
|
|
112
113
|
|
|
113
114
|
type RangeBan<Lo extends bigint, Hi extends bigint> = bigint extends Lo
|
|
114
115
|
? unknown
|
|
@@ -118,22 +119,7 @@ type RangeBan<Lo extends bigint, Hi extends bigint> = bigint extends Lo
|
|
|
118
119
|
? BannedWindow<"capacity bounds are u64 — a negative bound is out of domain">
|
|
119
120
|
: IsNegative<Hi> extends true
|
|
120
121
|
? BannedWindow<"capacity bounds are u64 — a negative bound is out of domain">
|
|
121
|
-
:
|
|
122
|
-
? Hi extends Lo
|
|
123
|
-
? Lo extends 0n
|
|
124
|
-
? BannedWindow<"`{0..0}` — the point window is written `{0}`: use within(0n)">
|
|
125
|
-
: BannedWindow<"`{n..n}` — an exact measure is written `{n}`: use within(n)">
|
|
126
|
-
: unknown
|
|
127
|
-
: unknown
|
|
128
|
-
|
|
129
|
-
type UnitWindowBan<W extends CapacityWindow> = W["window"] extends {
|
|
130
|
-
readonly kind: "floor"
|
|
131
|
-
readonly lo: { readonly kind: "lit"; readonly value: 1n }
|
|
132
|
-
}
|
|
133
|
-
? BannedWindow<"`{1..*}` on the unit instance says only what the bare containment says — write contained(source, target)">
|
|
134
|
-
: W["window"] extends { readonly kind: "floor" }
|
|
135
|
-
? BannedWindow<"`{N..*}` on the unit instance — a bare count floor is refused; weigh the source (`<=[w]{N..*}` stays legal) or drop the bound">
|
|
136
|
-
: unknown
|
|
122
|
+
: unknown
|
|
137
123
|
|
|
138
124
|
/**
|
|
139
125
|
* The C18 dimension gate's ban row, unit instance (the engine's
|
|
@@ -228,9 +214,9 @@ const unitWeight: WeightSpec = Object.freeze({ kind: "unit" })
|
|
|
228
214
|
|
|
229
215
|
function assertRowLocal(field: string, role: string): string {
|
|
230
216
|
if (field.includes(".")) {
|
|
231
|
-
throw
|
|
232
|
-
`${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`
|
|
233
|
-
)
|
|
217
|
+
throw new AuthoringError({
|
|
218
|
+
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`
|
|
219
|
+
})
|
|
234
220
|
}
|
|
235
221
|
return field
|
|
236
222
|
}
|
|
@@ -270,38 +256,41 @@ function within<const Lo extends bigint, const R extends FieldRef | DurationRef>
|
|
|
270
256
|
function within<const Lo extends bigint, const Hi extends bigint>(
|
|
271
257
|
lo: Lo,
|
|
272
258
|
hi: Hi & RangeBan<Lo, Hi>
|
|
273
|
-
): CapacityWindow<
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
259
|
+
): CapacityWindow<
|
|
260
|
+
| {
|
|
261
|
+
readonly kind: "range"
|
|
262
|
+
readonly lo: { readonly kind: "lit"; readonly value: Lo }
|
|
263
|
+
readonly hi: { readonly kind: "lit"; readonly value: Hi }
|
|
264
|
+
}
|
|
265
|
+
| { readonly kind: "exact"; readonly n: { readonly kind: "lit"; readonly value: Lo } }
|
|
266
|
+
>
|
|
278
267
|
function within(lo: bigint, hi?: bigint | "*" | FieldRef | DurationRef): CapacityWindow {
|
|
279
268
|
if (lo < 0n) {
|
|
280
|
-
throw
|
|
269
|
+
throw new AuthoringError({
|
|
270
|
+
message: `capacity bounds are u64: within(${lo}${hi === undefined ? "" : ", …"}) is out of domain`
|
|
271
|
+
})
|
|
281
272
|
}
|
|
282
273
|
if (hi === undefined) {
|
|
283
274
|
return admitWindow({ kind: "exact", n: lit(lo) })
|
|
284
275
|
}
|
|
285
276
|
if (hi === "*") {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
277
|
+
// `{0..*}` (vacuous) and `{N..*}` floors are ACCEPTED canonical laws
|
|
278
|
+
// (C01): normalization preserves authored statement attribution
|
|
279
|
+
// instead of policing the spelling.
|
|
289
280
|
return admitWindow({ kind: "floor", lo: lit(lo) })
|
|
290
281
|
}
|
|
291
282
|
if (typeof hi === "bigint") {
|
|
292
283
|
if (hi < 0n) {
|
|
293
|
-
throw
|
|
284
|
+
throw new AuthoringError({ message: `capacity bounds are u64: within(${lo}, ${hi}) is out of domain` })
|
|
294
285
|
}
|
|
295
286
|
if (hi < lo) {
|
|
296
|
-
throw
|
|
297
|
-
`the window \`{${lo}..${hi}}\` is inverted — no measure satisfies it; bounds are \`{lo..hi}\` with lo
|
|
298
|
-
)
|
|
287
|
+
throw new AuthoringError({
|
|
288
|
+
message: `the window \`{${lo}..${hi}}\` is inverted — no measure satisfies it; bounds are \`{lo..hi}\` with lo <= hi`
|
|
289
|
+
})
|
|
299
290
|
}
|
|
300
291
|
if (lo === hi) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
throw errors.new(`\`{${lo}..${lo}}\` — an exact measure is written \`{${lo}}\`: use within(${lo}n)`)
|
|
292
|
+
// `{n..n}` and `{0..0}` lower to the one canonical exact law.
|
|
293
|
+
return admitWindow({ kind: "exact", n: lit(lo) })
|
|
305
294
|
}
|
|
306
295
|
return admitWindow({ kind: "range", lo: lit(lo), hi: lit(hi) })
|
|
307
296
|
}
|
|
@@ -350,14 +339,5 @@ function duration<const F extends string>(field: F & PathBan<F>): DurationRef<F>
|
|
|
350
339
|
return Object.freeze({ kind: "durationField", field: assertRowLocal(field, "Duration measure") }) as DurationRef<F>
|
|
351
340
|
}
|
|
352
341
|
|
|
353
|
-
export type {
|
|
354
|
-
BoundsOnTarget,
|
|
355
|
-
CapacityWeight,
|
|
356
|
-
CapacityWindow,
|
|
357
|
-
DurationRef,
|
|
358
|
-
FieldRef,
|
|
359
|
-
UnitDimensionBan,
|
|
360
|
-
UnitWindowBan,
|
|
361
|
-
WeightOnSource
|
|
362
|
-
}
|
|
342
|
+
export type { BoundsOnTarget, CapacityWeight, CapacityWindow, DurationRef, FieldRef, UnitDimensionBan, WeightOnSource }
|
|
363
343
|
export { duration, isCapacityWeight, isCapacityWindow, ref, unitWeight, weigh, within }
|