@bjornpagen/bumbledb-log 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.
Files changed (192) hide show
  1. package/README.md +275 -114
  2. package/dist/admin.d.ts +24 -0
  3. package/dist/admin.d.ts.map +1 -0
  4. package/dist/admin.js +12 -0
  5. package/dist/admin.js.map +1 -0
  6. package/dist/bridge.d.ts +30 -0
  7. package/dist/bridge.d.ts.map +1 -0
  8. package/dist/bridge.js +92 -0
  9. package/dist/bridge.js.map +1 -0
  10. package/dist/codes.d.ts +11 -0
  11. package/dist/codes.d.ts.map +1 -0
  12. package/dist/codes.js +53 -0
  13. package/dist/codes.js.map +1 -0
  14. package/dist/command.d.ts +21 -0
  15. package/dist/command.d.ts.map +1 -0
  16. package/dist/command.js +12 -0
  17. package/dist/command.js.map +1 -0
  18. package/dist/errors.d.ts +78 -197
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +144 -114
  21. package/dist/errors.js.map +1 -1
  22. package/dist/history.d.ts +22 -0
  23. package/dist/history.d.ts.map +1 -0
  24. package/dist/history.js +12 -0
  25. package/dist/history.js.map +1 -0
  26. package/dist/identity.d.ts +144 -0
  27. package/dist/identity.d.ts.map +1 -0
  28. package/dist/identity.js +223 -0
  29. package/dist/identity.js.map +1 -0
  30. package/dist/index.d.ts +24 -31
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +16 -21
  33. package/dist/index.js.map +1 -1
  34. package/dist/machine.d.ts +151 -0
  35. package/dist/machine.d.ts.map +1 -0
  36. package/dist/machine.js +1128 -0
  37. package/dist/machine.js.map +1 -0
  38. package/dist/migration-ops.d.ts +20 -0
  39. package/dist/migration-ops.d.ts.map +1 -0
  40. package/dist/migration-ops.js +7 -0
  41. package/dist/migration-ops.js.map +1 -0
  42. package/dist/migrations/bin.d.ts +3 -0
  43. package/dist/migrations/bin.d.ts.map +1 -0
  44. package/dist/migrations/bin.js +43 -0
  45. package/dist/migrations/bin.js.map +1 -0
  46. package/dist/migrations/canonical.d.ts +40 -0
  47. package/dist/migrations/canonical.d.ts.map +1 -0
  48. package/dist/migrations/canonical.js +156 -0
  49. package/dist/migrations/canonical.js.map +1 -0
  50. package/dist/migrations/cli.d.ts +32 -0
  51. package/dist/migrations/cli.d.ts.map +1 -0
  52. package/dist/migrations/cli.js +147 -0
  53. package/dist/migrations/cli.js.map +1 -0
  54. package/dist/migrations/codec.d.ts +74 -0
  55. package/dist/migrations/codec.d.ts.map +1 -0
  56. package/dist/migrations/codec.js +2 -0
  57. package/dist/migrations/codec.js.map +1 -0
  58. package/dist/migrations/decode.d.ts +16 -0
  59. package/dist/migrations/decode.d.ts.map +1 -0
  60. package/dist/migrations/decode.js +302 -0
  61. package/dist/migrations/decode.js.map +1 -0
  62. package/dist/migrations/diff.d.ts +39 -0
  63. package/dist/migrations/diff.d.ts.map +1 -0
  64. package/dist/migrations/diff.js +385 -0
  65. package/dist/migrations/diff.js.map +1 -0
  66. package/dist/migrations/expr.d.ts +22 -0
  67. package/dist/migrations/expr.d.ts.map +1 -0
  68. package/dist/migrations/expr.js +228 -0
  69. package/dist/migrations/expr.js.map +1 -0
  70. package/dist/migrations/fail.d.ts +34 -0
  71. package/dist/migrations/fail.d.ts.map +1 -0
  72. package/dist/migrations/fail.js +69 -0
  73. package/dist/migrations/fail.js.map +1 -0
  74. package/dist/migrations/fsops.d.ts +37 -0
  75. package/dist/migrations/fsops.d.ts.map +1 -0
  76. package/dist/migrations/fsops.js +222 -0
  77. package/dist/migrations/fsops.js.map +1 -0
  78. package/dist/migrations/generate.d.ts +11 -0
  79. package/dist/migrations/generate.d.ts.map +1 -0
  80. package/dist/migrations/generate.js +479 -0
  81. package/dist/migrations/generate.js.map +1 -0
  82. package/dist/migrations/index.d.ts +25 -0
  83. package/dist/migrations/index.d.ts.map +1 -0
  84. package/dist/migrations/index.js +6 -0
  85. package/dist/migrations/index.js.map +1 -0
  86. package/dist/migrations/intent.d.ts +86 -0
  87. package/dist/migrations/intent.d.ts.map +1 -0
  88. package/dist/migrations/intent.js +97 -0
  89. package/dist/migrations/intent.js.map +1 -0
  90. package/dist/migrations/lock.d.ts +27 -0
  91. package/dist/migrations/lock.d.ts.map +1 -0
  92. package/dist/migrations/lock.js +14 -0
  93. package/dist/migrations/lock.js.map +1 -0
  94. package/dist/migrations/native.d.ts +37 -0
  95. package/dist/migrations/native.d.ts.map +1 -0
  96. package/dist/migrations/native.js +135 -0
  97. package/dist/migrations/native.js.map +1 -0
  98. package/dist/migrations/repo.d.ts +38 -0
  99. package/dist/migrations/repo.d.ts.map +1 -0
  100. package/dist/migrations/repo.js +191 -0
  101. package/dist/migrations/repo.js.map +1 -0
  102. package/dist/migrations/theory.d.ts +21 -0
  103. package/dist/migrations/theory.d.ts.map +1 -0
  104. package/dist/migrations/theory.js +107 -0
  105. package/dist/migrations/theory.js.map +1 -0
  106. package/dist/migrations/types.d.ts +243 -0
  107. package/dist/migrations/types.d.ts.map +1 -0
  108. package/dist/migrations/types.js +2 -0
  109. package/dist/migrations/types.js.map +1 -0
  110. package/dist/migrations/workflow.d.ts +11 -0
  111. package/dist/migrations/workflow.d.ts.map +1 -0
  112. package/dist/migrations/workflow.js +14 -0
  113. package/dist/migrations/workflow.js.map +1 -0
  114. package/dist/native.d.ts +600 -0
  115. package/dist/native.d.ts.map +1 -0
  116. package/dist/native.js +8 -0
  117. package/dist/native.js.map +1 -0
  118. package/dist/options.d.ts +106 -0
  119. package/dist/options.d.ts.map +1 -0
  120. package/dist/options.js +2 -0
  121. package/dist/options.js.map +1 -0
  122. package/dist/outcome.d.ts +291 -0
  123. package/dist/outcome.d.ts.map +1 -0
  124. package/dist/outcome.js +2 -0
  125. package/dist/outcome.js.map +1 -0
  126. package/dist/production.d.ts +12 -0
  127. package/dist/production.d.ts.map +1 -0
  128. package/dist/production.js +29 -0
  129. package/dist/production.js.map +1 -0
  130. package/dist/schema.d.ts +10 -0
  131. package/dist/schema.d.ts.map +1 -0
  132. package/dist/schema.js +9 -0
  133. package/dist/schema.js.map +1 -0
  134. package/dist/surface.d.ts +80 -0
  135. package/dist/surface.d.ts.map +1 -0
  136. package/dist/surface.js +2 -0
  137. package/dist/surface.js.map +1 -0
  138. package/dist/tenants.d.ts +20 -52
  139. package/dist/tenants.d.ts.map +1 -1
  140. package/dist/tenants.js +11 -330
  141. package/dist/tenants.js.map +1 -1
  142. package/pack-provenance.json +7 -0
  143. package/package.json +20 -23
  144. package/dist/braids.d.ts +0 -28
  145. package/dist/braids.d.ts.map +0 -1
  146. package/dist/braids.js +0 -45
  147. package/dist/braids.js.map +0 -1
  148. package/dist/bytes.d.ts +0 -26
  149. package/dist/bytes.d.ts.map +0 -1
  150. package/dist/bytes.js +0 -86
  151. package/dist/bytes.js.map +0 -1
  152. package/dist/chain.d.ts +0 -56
  153. package/dist/chain.d.ts.map +0 -1
  154. package/dist/chain.js +0 -137
  155. package/dist/chain.js.map +0 -1
  156. package/dist/codec.d.ts +0 -71
  157. package/dist/codec.d.ts.map +0 -1
  158. package/dist/codec.js +0 -179
  159. package/dist/codec.js.map +0 -1
  160. package/dist/descriptor.d.ts +0 -61
  161. package/dist/descriptor.d.ts.map +0 -1
  162. package/dist/descriptor.js +0 -160
  163. package/dist/descriptor.js.map +0 -1
  164. package/dist/keys.d.ts +0 -52
  165. package/dist/keys.d.ts.map +0 -1
  166. package/dist/keys.js +0 -166
  167. package/dist/keys.js.map +0 -1
  168. package/dist/manifest.d.ts +0 -42
  169. package/dist/manifest.d.ts.map +0 -1
  170. package/dist/manifest.js +0 -116
  171. package/dist/manifest.js.map +0 -1
  172. package/dist/replica.d.ts +0 -154
  173. package/dist/replica.d.ts.map +0 -1
  174. package/dist/replica.js +0 -820
  175. package/dist/replica.js.map +0 -1
  176. package/dist/store-s3.d.ts +0 -31
  177. package/dist/store-s3.d.ts.map +0 -1
  178. package/dist/store-s3.js +0 -299
  179. package/dist/store-s3.js.map +0 -1
  180. package/dist/store.d.ts +0 -129
  181. package/dist/store.d.ts.map +0 -1
  182. package/dist/store.js +0 -577
  183. package/dist/store.js.map +0 -1
  184. package/dist/tilde-family.json +0 -21
  185. package/dist/vector.d.ts +0 -31
  186. package/dist/vector.d.ts.map +0 -1
  187. package/dist/vector.js +0 -87
  188. package/dist/vector.js.map +0 -1
  189. package/dist/writer.d.ts +0 -106
  190. package/dist/writer.d.ts.map +0 -1
  191. package/dist/writer.js +0 -677
  192. package/dist/writer.js.map +0 -1
@@ -1,61 +0,0 @@
1
- /**
2
- * The parsed protocol descriptor: one thin parse of the engine's sealed
3
- * truth — relation ids, sealed field order, resolved closed rows,
4
- * materialized statements, and the real fingerprint — plus the braid
5
- * map and serial-at roster read off the log core's braids seat
6
- * (`internalLogBraidsOf`): one derivation of the braid partition,
7
- * projected here into the driver's branded shapes. Cached per theory
8
- * value.
9
- */
10
- import type { AnySchema, FactValue, LogCodecHandle, SchemaSpec, SealedStatement, ValueTypeSpec } from "@bjornpagen/bumbledb";
11
- interface FieldInfo {
12
- readonly name: string;
13
- readonly type: ValueTypeSpec;
14
- readonly fresh: boolean;
15
- /** Set when the field's newtype names a closed relation's id class. */
16
- readonly closedRef: string | undefined;
17
- }
18
- interface RelationInfo {
19
- readonly id: number;
20
- readonly name: string;
21
- readonly closed: boolean;
22
- readonly handles: readonly string[];
23
- /** Sealed order: a closed relation's synthetic u64 `id` at ordinal 0. */
24
- readonly fields: readonly FieldInfo[];
25
- /** Closed ground axioms in sealed order (id first), resolved values. */
26
- readonly rows: ReadonlyArray<readonly FactValue[]>;
27
- }
28
- declare const braidBrand: unique symbol;
29
- type Braid = string & {
30
- readonly [braidBrand]: typeof braidBrand;
31
- };
32
- declare function braid(raw: string): Braid;
33
- interface SerialStatement {
34
- readonly statement: number;
35
- readonly braid: Braid;
36
- }
37
- /** The braids seat names serial-at statements by id; the braid tag is a
38
- * projection join through the statement's own relation. */
39
- declare function serialAtFrom(ids: readonly number[], statements: readonly SealedStatement[], braidOfRelation: ReadonlyMap<number, Braid>): SerialStatement[];
40
- interface Descriptor {
41
- readonly relations: readonly RelationInfo[];
42
- readonly relationByName: ReadonlyMap<string, RelationInfo>;
43
- readonly statements: readonly SealedStatement[];
44
- /** Ordinary relation id → braid id (`c{smallest:08x}`). */
45
- readonly braidOfRelation: ReadonlyMap<number, Braid>;
46
- /** Braid id → member relation ids, ascending. */
47
- readonly braidMembers: ReadonlyMap<Braid, readonly number[]>;
48
- readonly serialAtStatements: readonly SerialStatement[];
49
- /** The sealed per-theory codec handle — the grammar's one reader,
50
- * minted once and cached with the parse. */
51
- readonly codec: LogCodecHandle;
52
- readonly fingerprint: string;
53
- readonly fingerprintBytes: Uint8Array;
54
- }
55
- /** The pure trio's input: the theory value, its lowered spec, or an already-parsed descriptor. */
56
- type Theory = AnySchema | SchemaSpec | Descriptor;
57
- declare function descriptorOf(theory: Theory): Descriptor;
58
- declare function braidHex(relationId: number): Braid;
59
- export type { Braid, Descriptor, FieldInfo, RelationInfo, SerialStatement, Theory };
60
- export { braid, braidHex, descriptorOf, serialAtFrom };
61
- //# sourceMappingURL=descriptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../src/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACd,UAAU,EAEV,eAAe,EACf,aAAa,EACb,MAAM,sBAAsB,CAAA;AAM7B,UAAU,SAAS;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACtC;AAED,UAAU,YAAY;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,SAAS,EAAE,CAAC,CAAA;CAClD;AAED,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAA;AACvC,KAAK,KAAK,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAA;CAAE,CAAA;AAIlE,iBAAS,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAKjC;AAMD,UAAU,eAAe;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACrB;AAED;4DAC4D;AAC5D,iBAAS,YAAY,CACpB,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,GACzC,eAAe,EAAE,CAoBnB;AAED,UAAU,UAAU;IACnB,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAA;IAC3C,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC1D,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAA;IAC/C,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACpD,iDAAiD;IACjD,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IAC5D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,eAAe,EAAE,CAAA;IACvD;iDAC6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAA;CACrC;AAED,kGAAkG;AAClG,KAAK,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;AAYjD,iBAAS,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAahD;AAED,iBAAS,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAE3C;AAoGD,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACnF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA"}
@@ -1,160 +0,0 @@
1
- /**
2
- * The parsed protocol descriptor: one thin parse of the engine's sealed
3
- * truth — relation ids, sealed field order, resolved closed rows,
4
- * materialized statements, and the real fingerprint — plus the braid
5
- * map and serial-at roster read off the log core's braids seat
6
- * (`internalLogBraidsOf`): one derivation of the braid partition,
7
- * projected here into the driver's branded shapes. Cached per theory
8
- * value.
9
- */
10
- import { internalDescriptor, internalLogBraidsOf, internalLogCodec, lower } from "@bjornpagen/bumbledb";
11
- import * as errors from "@superbuilders/errors";
12
- import { regex } from "arkregex";
13
- import { fromHex } from "#bytes.ts";
14
- const BRAID_ID = regex("^c[0-9a-f]{8}$");
15
- function braid(raw) {
16
- if (!BRAID_ID.test(raw)) {
17
- throw errors.new(`not a braid id: ${raw}`);
18
- }
19
- return raw;
20
- }
21
- function refuseShape(why) {
22
- throw errors.new(`theory: ${why}`);
23
- }
24
- /** The braids seat names serial-at statements by id; the braid tag is a
25
- * projection join through the statement's own relation. */
26
- function serialAtFrom(ids, statements, braidOfRelation) {
27
- const statementById = new Map();
28
- for (const statement of statements) {
29
- statementById.set(statement.id, statement);
30
- }
31
- return ids.map(function joinBraid(id) {
32
- const statement = statementById.get(id);
33
- if (statement === undefined) {
34
- refuseShape(`serial-at statement ${id} is not in the sealed statements`);
35
- }
36
- if (statement.kind === "containment") {
37
- refuseShape(`serial-at statement ${id} is a containment`);
38
- }
39
- const relation = statement.kind === "functionality" ? statement.relation : statement.target.relation;
40
- const braid = braidOfRelation.get(relation);
41
- if (braid === undefined) {
42
- refuseShape(`serial-at statement ${id} relation ${relation} is in no braid`);
43
- }
44
- return { statement: id, braid };
45
- });
46
- }
47
- function isDescriptor(theory) {
48
- return "braidMembers" in theory;
49
- }
50
- function isSpec(theory) {
51
- return Array.isArray(theory.relations);
52
- }
53
- const cache = new WeakMap();
54
- function descriptorOf(theory) {
55
- if (isDescriptor(theory)) {
56
- return theory;
57
- }
58
- const hit = cache.get(theory);
59
- if (hit !== undefined) {
60
- return hit;
61
- }
62
- const spec = isSpec(theory) ? theory : lower(theory);
63
- const parsed = spec === theory ? fromSealed(spec) : (cache.get(spec) ?? fromSealed(spec));
64
- cache.set(theory, parsed);
65
- cache.set(spec, parsed);
66
- return parsed;
67
- }
68
- function braidHex(relationId) {
69
- return braid(`c${relationId.toString(16).padStart(8, "0")}`);
70
- }
71
- function fromSealed(spec) {
72
- const sealed = internalDescriptor(spec);
73
- /** Handle newtype (`{name}.id`, off each closed relation's sealed id slot) → roster name. */
74
- const ownerOfIdClass = new Map();
75
- for (const relation of sealed.relations) {
76
- if (relation.extension === undefined) {
77
- continue;
78
- }
79
- const idSlot = relation.fields.find(function idOf(field) {
80
- return field.name === "id";
81
- });
82
- const handleClass = idSlot?.newtype;
83
- if (handleClass === undefined) {
84
- refuseShape(`closed relation ${relation.name} has no handle class on its sealed id slot`);
85
- }
86
- ownerOfIdClass.set(handleClass, relation.name);
87
- }
88
- const relations = sealed.relations.map(function relationOf(relation) {
89
- const fields = relation.fields.map(function fieldOf(field) {
90
- return {
91
- name: field.name,
92
- type: field.valueType,
93
- fresh: field.fresh,
94
- closedRef: field.newtype === undefined ? undefined : ownerOfIdClass.get(field.newtype)
95
- };
96
- });
97
- const extension = relation.extension ?? [];
98
- const named = new Map(relation.fields.map(function indexOf(field) {
99
- return [field.name, field];
100
- }));
101
- const rows = extension.map(function rowOf(row) {
102
- const cells = new Map(row.values.map(function cellOf(cell) {
103
- return [cell.name, cell.value];
104
- }));
105
- return relation.fields.map(function cellValue(field) {
106
- const hit = cells.get(field.name);
107
- if (hit !== undefined) {
108
- return hit;
109
- }
110
- if (field.name === "id" && named.has("id")) {
111
- return row.id;
112
- }
113
- return refuseShape(`closed relation ${relation.name}: sealed row ${row.handle} missing field ${field.name}`);
114
- });
115
- });
116
- return {
117
- id: relation.id,
118
- name: relation.name,
119
- closed: relation.extension !== undefined,
120
- handles: extension.map(function handleOf(row) {
121
- return row.handle;
122
- }),
123
- fields,
124
- rows
125
- };
126
- });
127
- const byName = new Map();
128
- for (const relation of relations) {
129
- if (byName.has(relation.name)) {
130
- refuseShape(`duplicate relation ${relation.name}`);
131
- }
132
- byName.set(relation.name, relation);
133
- }
134
- const statements = sealed.statements;
135
- const braids = internalLogBraidsOf(sealed);
136
- const braidOfRelation = new Map();
137
- const braidMembers = new Map();
138
- for (const component of braids.components) {
139
- const id = braidHex(component.braid);
140
- braidMembers.set(id, component.relations);
141
- for (const member of component.relations) {
142
- braidOfRelation.set(member, id);
143
- }
144
- }
145
- const serialAtStatements = serialAtFrom(braids.serialAt, statements, braidOfRelation);
146
- const fingerprint = sealed.fingerprint;
147
- return {
148
- relations,
149
- relationByName: byName,
150
- statements,
151
- braidOfRelation,
152
- braidMembers,
153
- serialAtStatements,
154
- codec: internalLogCodec(sealed),
155
- fingerprint,
156
- fingerprintBytes: fromHex(fingerprint)
157
- };
158
- }
159
- export { braid, braidHex, descriptorOf, serialAtFrom };
160
- //# sourceMappingURL=descriptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../src/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACvG,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwBnC,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAExC,SAAS,KAAK,CAAC,GAAW;IACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,GAAY,CAAA;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC/B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAA;AACnC,CAAC;AAOD;4DAC4D;AAC5D,SAAS,YAAY,CACpB,GAAsB,EACtB,UAAsC,EACtC,eAA2C;IAE3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAA;IACxD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,EAAE;QACnC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,WAAW,CAAC,uBAAuB,EAAE,kCAAkC,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACtC,WAAW,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAA;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAA;QACpG,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,WAAW,CAAC,uBAAuB,EAAE,aAAa,QAAQ,iBAAiB,CAAC,CAAA;QAC7E,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;AACH,CAAC;AAqBD,SAAS,YAAY,CAAC,MAAc;IACnC,OAAO,cAAc,IAAI,MAAM,CAAA;AAChC,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAE,MAAqB,CAAC,SAAS,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,OAAO,EAAsB,CAAA;AAE/C,SAAS,YAAY,CAAC,MAAc;IACnC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAA;IACd,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,GAAG,CAAA;IACX,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACzF,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvB,OAAO,MAAM,CAAA;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,UAAkB;IACnC,OAAO,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB;IACnC,MAAM,MAAM,GAAqB,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAEzD,6FAA6F;IAC7F,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAChD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,SAAQ;QACT,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK;YACtD,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,MAAM,WAAW,GAAG,MAAM,EAAE,OAAO,CAAA;QACnC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,WAAW,CAAC,mBAAmB,QAAQ,CAAC,IAAI,4CAA4C,CAAC,CAAA;QAC1F,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,SAAS,GAAmB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,QAAQ;QAClF,MAAM,MAAM,GAAgB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,KAAK;YACrE,OAAO;gBACN,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,SAAS;gBACrB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;aACtF,CAAA;QACF,CAAC,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,CACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,KAAK;YACzC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC3B,CAAC,CAAC,CACF,CAAA;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,GAAG;YAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,CACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI;gBAClC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC,CAAC,CACF,CAAA;YACD,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,KAAK;gBAClD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACjC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,GAAG,CAAA;gBACX,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5C,OAAO,GAAG,CAAC,EAAE,CAAA;gBACd,CAAC;gBACD,OAAO,WAAW,CAAC,mBAAmB,QAAQ,CAAC,IAAI,gBAAgB,GAAG,CAAC,MAAM,kBAAkB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7G,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO;YACN,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,QAAQ,CAAC,SAAS,KAAK,SAAS;YACxC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG;gBAC3C,OAAO,GAAG,CAAC,MAAM,CAAA;YAClB,CAAC,CAAC;YACF,MAAM;YACN,IAAI;SACJ,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,WAAW,CAAC,sBAAsB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;IACpC,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAA;IAChD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAA;IACxD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACpC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;QACzC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YAC1C,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAChC,CAAC;IACF,CAAC;IACD,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAA;IAErF,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;IACtC,OAAO;QACN,SAAS;QACT,cAAc,EAAE,MAAM;QACtB,UAAU;QACV,eAAe;QACf,YAAY;QACZ,kBAAkB;QAClB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAC/B,WAAW;QACX,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC;KACtC,CAAA;AACF,CAAC;AAGD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA"}
package/dist/keys.d.ts DELETED
@@ -1,52 +0,0 @@
1
- /**
2
- * The key layout: generation numbers zero-padded lowercase hex, 16
3
- * chars; a prefix is a store; a tenant is a prefix under `t/`. A
4
- * StoreKey is parsed here, once — the verbs take the proof and never
5
- * re-check. An empty prefix joins as the rest alone, so a leading
6
- * slash is unrepresentable. Temps and leases live under a reserved
7
- * tilde-family first segment no StoreKey can spell — the generated
8
- * table under `conformance/v3/keys/` is the set, read at module init
9
- * — so those namespaces stay disjoint from every honest key. Format
10
- * characters, line and paragraph separators, and space separators
11
- * cannot hide a reserved prefix or a `.lock` suffix: a segment
12
- * containing one is refused outright.
13
- */
14
- import type { Digest32 } from "./bytes.js";
15
- import type { Braid } from "./descriptor.js";
16
- /** Reserved first-segment names no StoreKey can spell. Temps and leases live here. */
17
- declare const TEMP_NAMESPACE = "~tmp";
18
- declare const LEASE_NAMESPACE = "~lease";
19
- declare const storeKeyBrand: unique symbol;
20
- type StoreKey = string & {
21
- readonly [storeKeyBrand]: typeof storeKeyBrand;
22
- };
23
- declare const generationBrand: unique symbol;
24
- type Generation = bigint & {
25
- readonly [generationBrand]: typeof generationBrand;
26
- };
27
- declare function storeKey(raw: string): StoreKey;
28
- /** Empty, or a StoreKey spelling (the same segment grammar, no leading or trailing slash). */
29
- declare function parsePrefix(raw: string): string;
30
- declare function reservedTemp(pid: number, seq: number): string;
31
- declare function reservedLease(key: string, token: bigint): string;
32
- /** A slash path whose first segment is `~tmp` or `~lease`. Not a StoreKey. */
33
- declare function reservedName(raw: string): string;
34
- /** Known scratch-lease document under `~lease`. One path, no LIST. */
35
- declare const CKPT_SCRATCH_LEASE = "ckpt-scratch";
36
- /** The reserved scratch name: `~lease/ckpt-scratch`. */
37
- declare function scratchCkptName(): string;
38
- /** The scratch-lease body, spelled by the one grammar (`crates/bumbledb-log`). */
39
- declare function encodeCkptScratch(digest: Digest32): Uint8Array;
40
- /** The digest a scratch-lease body names, or null — the one grammar's
41
- * parse, branded; the refusal is undifferentiated by law. */
42
- declare function parseCkptScratch(bytes: Uint8Array): Digest32 | null;
43
- declare function generation(raw: bigint): Generation;
44
- declare function manifestKey(prefix: string): StoreKey;
45
- declare function logKey(prefix: string, braid: Braid, g: Generation): StoreKey;
46
- declare function checkpointMdbKey(prefix: string, digest: Digest32): StoreKey;
47
- declare function ckptDocKey(prefix: string, digest: Digest32): StoreKey;
48
- declare function idsKey(prefix: string, relation: number, field: number): StoreKey;
49
- declare function tenantPrefix(root: string, tenant: string): string;
50
- export type { Generation, StoreKey };
51
- export { CKPT_SCRATCH_LEASE, checkpointMdbKey, ckptDocKey, encodeCkptScratch, generation, idsKey, LEASE_NAMESPACE, logKey, manifestKey, parseCkptScratch, parsePrefix, reservedLease, reservedName, reservedTemp, scratchCkptName, storeKey, TEMP_NAMESPACE, tenantPrefix };
52
- //# sourceMappingURL=keys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAM3C,sFAAsF;AACtF,QAAA,MAAM,cAAc,SAAS,CAAA;AAC7B,QAAA,MAAM,eAAe,WAAW,CAAA;AAwChC,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAA;AAC1C,KAAK,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,aAAa,CAAA;CAAE,CAAA;AAE3E,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAA;AAC5C,KAAK,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,eAAe,CAAA;CAAE,CAAA;AA4BjF,iBAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAMvC;AAED,8FAA8F;AAC9F,iBAAS,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKxC;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,iBAAS,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,8EAA8E;AAC9E,iBAAS,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUzC;AAED,sEAAsE;AACtE,QAAA,MAAM,kBAAkB,iBAAiB,CAAA;AAEzC,wDAAwD;AACxD,iBAAS,eAAe,IAAI,MAAM,CAEjC;AAED,kFAAkF;AAClF,iBAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAEvD;AAED;8DAC8D;AAC9D,iBAAS,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAM5D;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAK3C;AAUD,iBAAS,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAE7C;AAED,iBAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,GAAG,QAAQ,CAErE;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAEpE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAE9D;AAED,iBAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAEzE;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AACpC,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,eAAe,EACf,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,CAAA"}
package/dist/keys.js DELETED
@@ -1,166 +0,0 @@
1
- /**
2
- * The key layout: generation numbers zero-padded lowercase hex, 16
3
- * chars; a prefix is a store; a tenant is a prefix under `t/`. A
4
- * StoreKey is parsed here, once — the verbs take the proof and never
5
- * re-check. An empty prefix joins as the rest alone, so a leading
6
- * slash is unrepresentable. Temps and leases live under a reserved
7
- * tilde-family first segment no StoreKey can spell — the generated
8
- * table under `conformance/v3/keys/` is the set, read at module init
9
- * — so those namespaces stay disjoint from every honest key. Format
10
- * characters, line and paragraph separators, and space separators
11
- * cannot hide a reserved prefix or a `.lock` suffix: a segment
12
- * containing one is refused outright.
13
- */
14
- import { internalLogParseCkptScratch, internalLogRenderCkptScratch } from "@bjornpagen/bumbledb";
15
- import * as errors from "@superbuilders/errors";
16
- import { regex } from "arkregex";
17
- import { digest32, hex32, U64_MAX } from "#bytes.ts";
18
- import tildeTable from "./tilde-family.json" with { type: "json" };
19
- /** A segment wearing this suffix is not a key. */
20
- const LOCK_SUFFIX = ".lock";
21
- /** Reserved first-segment names no StoreKey can spell. Temps and leases live here. */
22
- const TEMP_NAMESPACE = "~tmp";
23
- const LEASE_NAMESPACE = "~lease";
24
- /**
25
- * The one tilde table both drivers consume: ASCII `~`, its lookalikes, and
26
- * the NFKC preimage of U+007E. The packaged copy is the census-pinned
27
- * byte-identical twin of the generator's output at
28
- * crates/bumbledb-log/conformance/v3/keys/tilde-family.json. A JSON
29
- * import inlines under bundlers (nitro will not relocate the sidecar)
30
- * and still resolves beside dist/keys.js when the package stays external.
31
- */
32
- const CODE_POINT_SPELLING = regex("^U\\+[0-9A-F]{4,6}$");
33
- function loadTildeFamily() {
34
- const table = tildeTable;
35
- if (typeof table !== "object" || table === null || !("codePoints" in table)) {
36
- throw errors.new("tilde table is not a codePoints document");
37
- }
38
- const { codePoints } = table;
39
- if (!Array.isArray(codePoints) || codePoints.length === 0) {
40
- throw errors.new("tilde table codePoints is not a nonempty array");
41
- }
42
- const family = new Set();
43
- for (const spelling of codePoints) {
44
- if (typeof spelling !== "string" || !CODE_POINT_SPELLING.test(spelling)) {
45
- throw errors.new(`tilde table entry is not a U+XXXX code point: ${String(spelling)}`);
46
- }
47
- family.add(String.fromCodePoint(Number.parseInt(spelling.slice(2), 16)));
48
- }
49
- if (!family.has("~")) {
50
- throw errors.new("tilde table does not reserve ASCII tilde");
51
- }
52
- return family;
53
- }
54
- /** First-segment code points that spell a reserved name. The table is the set; no local spelling. */
55
- const TILDE_FAMILY = loadTildeFamily();
56
- const FORMAT_OR_SEPARATOR = regex("[\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}\\p{Zs}]", "u");
57
- const SLASH_TRIM = regex("^/+|/+$", "g");
58
- function firstCodePoint(seg) {
59
- for (const ch of seg) {
60
- return ch;
61
- }
62
- return undefined;
63
- }
64
- function tildeFamilyPrefix(seg) {
65
- const first = firstCodePoint(seg);
66
- if (first === undefined) {
67
- return false;
68
- }
69
- return TILDE_FAMILY.has(first);
70
- }
71
- /** One path segment of a key or a tenant id: the same grammar. */
72
- function segmentOk(seg) {
73
- if (seg.length === 0 || seg.includes("/") || seg === "." || seg === "..") {
74
- return false;
75
- }
76
- if (FORMAT_OR_SEPARATOR.test(seg)) {
77
- return false;
78
- }
79
- return !tildeFamilyPrefix(seg) && !seg.endsWith(LOCK_SUFFIX);
80
- }
81
- function storeKey(raw) {
82
- const wellFormed = raw.length > 0 && !raw.startsWith("/") && !raw.endsWith("/") && raw.split("/").every(segmentOk);
83
- if (!wellFormed) {
84
- throw errors.new(`store key is not a slash path: ${raw}`);
85
- }
86
- return raw;
87
- }
88
- /** Empty, or a StoreKey spelling (the same segment grammar, no leading or trailing slash). */
89
- function parsePrefix(raw) {
90
- if (raw.length === 0) {
91
- return "";
92
- }
93
- return storeKey(raw.replace(SLASH_TRIM, ""));
94
- }
95
- function reservedTemp(pid, seq) {
96
- return `${TEMP_NAMESPACE}/${String(pid)}.${String(seq)}`;
97
- }
98
- function reservedLease(key, token) {
99
- return `${LEASE_NAMESPACE}/${key}/${String(token)}`;
100
- }
101
- /** A slash path whose first segment is `~tmp` or `~lease`. Not a StoreKey. */
102
- function reservedName(raw) {
103
- const segs = raw.split("/");
104
- if (segs.length === 0 || segs.some((seg) => seg.length === 0 || seg === "." || seg === "..")) {
105
- throw errors.new(`reserved name is not a slash path: ${raw}`);
106
- }
107
- const first = segs[0];
108
- if (first !== TEMP_NAMESPACE && first !== LEASE_NAMESPACE) {
109
- throw errors.new(`reserved name is not under ${TEMP_NAMESPACE} or ${LEASE_NAMESPACE}: ${raw}`);
110
- }
111
- return raw;
112
- }
113
- /** Known scratch-lease document under `~lease`. One path, no LIST. */
114
- const CKPT_SCRATCH_LEASE = "ckpt-scratch";
115
- /** The reserved scratch name: `~lease/ckpt-scratch`. */
116
- function scratchCkptName() {
117
- return reservedName(`${LEASE_NAMESPACE}/${CKPT_SCRATCH_LEASE}`);
118
- }
119
- /** The scratch-lease body, spelled by the one grammar (`crates/bumbledb-log`). */
120
- function encodeCkptScratch(digest) {
121
- return internalLogRenderCkptScratch(digest);
122
- }
123
- /** The digest a scratch-lease body names, or null — the one grammar's
124
- * parse, branded; the refusal is undifferentiated by law. */
125
- function parseCkptScratch(bytes) {
126
- const named = internalLogParseCkptScratch(bytes);
127
- if (named === null) {
128
- return null;
129
- }
130
- return digest32(named);
131
- }
132
- function generation(raw) {
133
- if (raw < 0n || raw > U64_MAX) {
134
- throw errors.new(`generation is a u64: ${raw}`);
135
- }
136
- return raw;
137
- }
138
- function hex16(g) {
139
- return g.toString(16).padStart(16, "0");
140
- }
141
- function assemble(prefix, rest) {
142
- return storeKey(prefix.length === 0 ? rest : `${prefix}/${rest}`);
143
- }
144
- function manifestKey(prefix) {
145
- return assemble(prefix, "manifest");
146
- }
147
- function logKey(prefix, braid, g) {
148
- return assemble(prefix, `log/${braid}/${hex16(g)}`);
149
- }
150
- function checkpointMdbKey(prefix, digest) {
151
- return assemble(prefix, `ckpt/${hex32(digest)}.mdb`);
152
- }
153
- function ckptDocKey(prefix, digest) {
154
- return assemble(prefix, `ckpt/${hex32(digest)}`);
155
- }
156
- function idsKey(prefix, relation, field) {
157
- return assemble(prefix, `ids/${relation.toString(16).padStart(8, "0")}/${field.toString(16).padStart(4, "0")}`);
158
- }
159
- function tenantPrefix(root, tenant) {
160
- if (!segmentOk(tenant)) {
161
- throw errors.new(`tenant id is not a single path segment: ${tenant}`);
162
- }
163
- return assemble(root, `t/${tenant}`);
164
- }
165
- export { CKPT_SCRATCH_LEASE, checkpointMdbKey, ckptDocKey, encodeCkptScratch, generation, idsKey, LEASE_NAMESPACE, logKey, manifestKey, parseCkptScratch, parsePrefix, reservedLease, reservedName, reservedTemp, scratchCkptName, storeKey, TEMP_NAMESPACE, tenantPrefix };
166
- //# sourceMappingURL=keys.js.map
package/dist/keys.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * The protocol's one mutable object and its checkpoint, as typed
3
- * payloads. The byte grammar has one implementation —
4
- * `crates/bumbledb-log` behind the napi bridge — so parse and render
5
- * here are marshal walks: branded `Digest32` and `Braid` values in,
6
- * bridge-tagged payloads across, never a second reader of the bytes.
7
- * The vector algebra over checkpoint heads and the seed transition's
8
- * catalog audit are machine logic and stay here.
9
- */
10
- import type { LogCodecHandle } from "@bjornpagen/bumbledb";
11
- import type { Digest32 } from "./bytes.js";
12
- import type { Braid } from "./descriptor.js";
13
- import type { Generation } from "./keys.js";
14
- import { Vector } from "./vector.js";
15
- interface Manifest {
16
- readonly fingerprint: Digest32;
17
- readonly checkpoint: Digest32 | null;
18
- }
19
- declare function renderManifest(manifest: Manifest): Uint8Array;
20
- declare function parseManifest(bytes: Uint8Array): Manifest;
21
- interface CheckpointHead {
22
- readonly g: Generation;
23
- readonly hash: Digest32;
24
- readonly ts: bigint;
25
- }
26
- interface CheckpointFacts {
27
- readonly braids: ReadonlyMap<Braid, CheckpointHead>;
28
- readonly catalog: Digest32;
29
- readonly writer: bigint;
30
- readonly prev: Digest32 | null;
31
- readonly sum: bigint;
32
- }
33
- declare function checkpointVector(facts: CheckpointFacts): Vector;
34
- declare function renderCheckpoint(codec: LogCodecHandle, facts: CheckpointFacts): Uint8Array;
35
- declare function parseCheckpoint(codec: LogCodecHandle, bytes: Uint8Array): CheckpointFacts;
36
- /** The seed transition's catalog claim: a present checkpoint
37
- * compares the opened store's `catalog_digest` against the document.
38
- * Genesis (no checkpoint) has no claim. A mismatch names the publisher. */
39
- declare function auditCatalog(facts: CheckpointFacts | null, computed: Digest32): void;
40
- export type { CheckpointFacts, CheckpointHead };
41
- export { auditCatalog, checkpointVector, parseCheckpoint, parseManifest, renderCheckpoint, renderManifest };
42
- //# sourceMappingURL=manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAuC,cAAc,EAAmB,MAAM,sBAAsB,CAAA;AAOhH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,UAAU,QAAQ;IACjB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAA;CACpC;AA8BD,iBAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAMtD;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CASlD;AAED,UAAU,cAAc;IACvB,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,eAAe;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAUD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAExD;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAanF;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAsBlF;AAED;;4EAE4E;AAC5E,iBAAS,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAW7E;AAED,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAA"}
package/dist/manifest.js DELETED
@@ -1,116 +0,0 @@
1
- /**
2
- * The protocol's one mutable object and its checkpoint, as typed
3
- * payloads. The byte grammar has one implementation —
4
- * `crates/bumbledb-log` behind the napi bridge — so parse and render
5
- * here are marshal walks: branded `Digest32` and `Braid` values in,
6
- * bridge-tagged payloads across, never a second reader of the bytes.
7
- * The vector algebra over checkpoint heads and the seed transition's
8
- * catalog audit are machine logic and stay here.
9
- */
10
- import { internalLogParseCheckpoint, internalLogParseManifest, internalLogRenderCheckpoint, internalLogRenderManifest } from "@bjornpagen/bumbledb";
11
- import { bytesEqual, digest32, hex32 } from "#bytes.ts";
12
- import { braidHex } from "#descriptor.ts";
13
- import { refuse } from "#errors.ts";
14
- import { generation } from "#keys.ts";
15
- import { Vector } from "#vector.ts";
16
- /**
17
- * Remints a bridge refusal row as the driver's typed refusal. The
18
- * boundary carries `{ kind, message }` only: the kind is the log
19
- * core's own identity string, so the cause payload holds the data this
20
- * side owns — the document's length, its version byte (byte 0 of every
21
- * v:3 document) — and nothing invented. The raw braid id of an
22
- * `UnknownBraid` rides the message; the drifted set of a `BraidSet`
23
- * rides the message the same way.
24
- */
25
- function refuseBridged(kind, message, bytes) {
26
- switch (kind) {
27
- case "Version":
28
- return refuse({ kind: "Version", version: bytes[0] ?? 0 }, message);
29
- case "Overflow":
30
- return refuse({ kind: "Overflow" }, message);
31
- case "UnknownBraid":
32
- return refuse({ kind: "UnknownBraid" }, message);
33
- case "BraidSet":
34
- return refuse({ kind: "BraidSet" }, message);
35
- case "Malformed":
36
- return refuse({ kind: "Malformed", at: bytes.length }, message);
37
- }
38
- }
39
- function braidIdOf(id) {
40
- return Number.parseInt(id.slice(1), 16);
41
- }
42
- function renderManifest(manifest) {
43
- return internalLogRenderManifest(manifest.checkpoint === null
44
- ? { fingerprint: manifest.fingerprint }
45
- : { fingerprint: manifest.fingerprint, checkpoint: manifest.checkpoint });
46
- }
47
- function parseManifest(bytes) {
48
- const parsed = internalLogParseManifest(bytes);
49
- if (!parsed.ok) {
50
- refuseBridged(parsed.kind, parsed.message, bytes);
51
- }
52
- return {
53
- fingerprint: digest32(parsed.value.fingerprint),
54
- checkpoint: parsed.value.checkpoint === undefined ? null : digest32(parsed.value.checkpoint)
55
- };
56
- }
57
- function vectorOfHeads(braids) {
58
- const counts = new Map();
59
- for (const [id, head] of braids) {
60
- counts.set(id, head.g);
61
- }
62
- return Vector.from(counts);
63
- }
64
- function checkpointVector(facts) {
65
- return vectorOfHeads(facts.braids);
66
- }
67
- function renderCheckpoint(codec, facts) {
68
- const braids = [...facts.braids.entries()]
69
- .sort(function ascending(a, b) {
70
- return braidIdOf(a[0]) - braidIdOf(b[0]);
71
- })
72
- .map(function headOf([id, head]) {
73
- return { braid: braidIdOf(id), g: head.g, hash: head.hash, ts: head.ts };
74
- });
75
- const doc = facts.prev === null
76
- ? { braids, catalog: facts.catalog, writer: facts.writer }
77
- : { braids, catalog: facts.catalog, writer: facts.writer, prev: facts.prev };
78
- return internalLogRenderCheckpoint(codec, doc);
79
- }
80
- function parseCheckpoint(codec, bytes) {
81
- const parsed = internalLogParseCheckpoint(codec, bytes);
82
- if (!parsed.ok) {
83
- refuseBridged(parsed.kind, parsed.message, bytes);
84
- }
85
- const braids = new Map();
86
- for (const head of parsed.value.braids) {
87
- braids.set(braidHex(head.braid), { g: generation(head.g), hash: digest32(head.hash), ts: head.ts });
88
- }
89
- /** The core refuses `Overflow` at parse; the narrowing here is the
90
- * derived sum's own type gate over the same heads. */
91
- const summed = vectorOfHeads(braids).sum();
92
- if (typeof summed !== "bigint") {
93
- refuse({ kind: "Overflow" }, "checkpoint vector sum overflows u64");
94
- }
95
- return {
96
- braids,
97
- catalog: digest32(parsed.value.catalog),
98
- writer: parsed.value.writer,
99
- prev: parsed.value.prev === undefined ? null : digest32(parsed.value.prev),
100
- sum: summed
101
- };
102
- }
103
- /** The seed transition's catalog claim: a present checkpoint
104
- * compares the opened store's `catalog_digest` against the document.
105
- * Genesis (no checkpoint) has no claim. A mismatch names the publisher. */
106
- function auditCatalog(facts, computed) {
107
- if (facts === null) {
108
- return;
109
- }
110
- if (bytesEqual(facts.catalog, computed)) {
111
- return;
112
- }
113
- refuse({ kind: "CheckpointDigest", expected: hex32(facts.catalog), computed: hex32(computed) }, `checkpoint catalog ${hex32(facts.catalog)} disagrees with the opened store ${hex32(computed)}; publisher ${facts.writer}`);
114
- }
115
- export { auditCatalog, checkpointVector, parseCheckpoint, parseManifest, renderCheckpoint, renderManifest };
116
- //# sourceMappingURL=manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}