@superbee/core 0.1.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 (145) hide show
  1. package/dist/backend.d.ts +77 -0
  2. package/dist/backend.d.ts.map +1 -0
  3. package/dist/backend.js +380 -0
  4. package/dist/backend.js.map +1 -0
  5. package/dist/bundle.d.ts +38 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +107 -0
  8. package/dist/bundle.js.map +1 -0
  9. package/dist/content-type.d.ts +72 -0
  10. package/dist/content-type.d.ts.map +1 -0
  11. package/dist/content-type.js +149 -0
  12. package/dist/content-type.js.map +1 -0
  13. package/dist/document-mutation.d.ts +83 -0
  14. package/dist/document-mutation.d.ts.map +1 -0
  15. package/dist/document-mutation.js +319 -0
  16. package/dist/document-mutation.js.map +1 -0
  17. package/dist/document-precondition.d.ts +62 -0
  18. package/dist/document-precondition.d.ts.map +1 -0
  19. package/dist/document-precondition.js +134 -0
  20. package/dist/document-precondition.js.map +1 -0
  21. package/dist/document-write-policy.d.ts +42 -0
  22. package/dist/document-write-policy.d.ts.map +1 -0
  23. package/dist/document-write-policy.js +134 -0
  24. package/dist/document-write-policy.js.map +1 -0
  25. package/dist/engine.d.ts +48 -0
  26. package/dist/engine.d.ts.map +1 -0
  27. package/dist/engine.js +209 -0
  28. package/dist/engine.js.map +1 -0
  29. package/dist/errors.d.ts +36 -0
  30. package/dist/errors.d.ts.map +1 -0
  31. package/dist/errors.js +50 -0
  32. package/dist/errors.js.map +1 -0
  33. package/dist/filesystem-identity.d.ts +208 -0
  34. package/dist/filesystem-identity.d.ts.map +1 -0
  35. package/dist/filesystem-identity.js +675 -0
  36. package/dist/filesystem-identity.js.map +1 -0
  37. package/dist/filesystem-lock.d.ts +65 -0
  38. package/dist/filesystem-lock.d.ts.map +1 -0
  39. package/dist/filesystem-lock.js +460 -0
  40. package/dist/filesystem-lock.js.map +1 -0
  41. package/dist/freshness.d.ts +31 -0
  42. package/dist/freshness.d.ts.map +1 -0
  43. package/dist/freshness.js +98 -0
  44. package/dist/freshness.js.map +1 -0
  45. package/dist/frontmatter-contract.d.ts +17 -0
  46. package/dist/frontmatter-contract.d.ts.map +1 -0
  47. package/dist/frontmatter-contract.js +29 -0
  48. package/dist/frontmatter-contract.js.map +1 -0
  49. package/dist/frontmatter.d.ts +30 -0
  50. package/dist/frontmatter.d.ts.map +1 -0
  51. package/dist/frontmatter.js +115 -0
  52. package/dist/frontmatter.js.map +1 -0
  53. package/dist/index-marker.d.ts +3 -0
  54. package/dist/index-marker.d.ts.map +1 -0
  55. package/dist/index-marker.js +3 -0
  56. package/dist/index-marker.js.map +1 -0
  57. package/dist/index-projection.d.ts +79 -0
  58. package/dist/index-projection.d.ts.map +1 -0
  59. package/dist/index-projection.js +245 -0
  60. package/dist/index-projection.js.map +1 -0
  61. package/dist/index.d.ts +68 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +110 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/kinds-load.d.ts +13 -0
  66. package/dist/kinds-load.d.ts.map +1 -0
  67. package/dist/kinds-load.js +34 -0
  68. package/dist/kinds-load.js.map +1 -0
  69. package/dist/kinds.d.ts +241 -0
  70. package/dist/kinds.d.ts.map +1 -0
  71. package/dist/kinds.js +1001 -0
  72. package/dist/kinds.js.map +1 -0
  73. package/dist/links.d.ts +62 -0
  74. package/dist/links.d.ts.map +1 -0
  75. package/dist/links.js +203 -0
  76. package/dist/links.js.map +1 -0
  77. package/dist/meaningful-change-time.d.ts +11 -0
  78. package/dist/meaningful-change-time.d.ts.map +1 -0
  79. package/dist/meaningful-change-time.js +16 -0
  80. package/dist/meaningful-change-time.js.map +1 -0
  81. package/dist/memory-backend.d.ts +55 -0
  82. package/dist/memory-backend.d.ts.map +1 -0
  83. package/dist/memory-backend.js +214 -0
  84. package/dist/memory-backend.js.map +1 -0
  85. package/dist/mutation-attribution.d.ts +19 -0
  86. package/dist/mutation-attribution.d.ts.map +1 -0
  87. package/dist/mutation-attribution.js +34 -0
  88. package/dist/mutation-attribution.js.map +1 -0
  89. package/dist/mutation.d.ts +89 -0
  90. package/dist/mutation.d.ts.map +1 -0
  91. package/dist/mutation.js +94 -0
  92. package/dist/mutation.js.map +1 -0
  93. package/dist/page.d.ts +87 -0
  94. package/dist/page.d.ts.map +1 -0
  95. package/dist/page.js +151 -0
  96. package/dist/page.js.map +1 -0
  97. package/dist/paths.d.ts +78 -0
  98. package/dist/paths.d.ts.map +1 -0
  99. package/dist/paths.js +148 -0
  100. package/dist/paths.js.map +1 -0
  101. package/dist/portable-frontmatter.d.ts +8 -0
  102. package/dist/portable-frontmatter.d.ts.map +1 -0
  103. package/dist/portable-frontmatter.js +35 -0
  104. package/dist/portable-frontmatter.js.map +1 -0
  105. package/dist/publication-filesystem.d.ts +6 -0
  106. package/dist/publication-filesystem.d.ts.map +1 -0
  107. package/dist/publication-filesystem.js +6 -0
  108. package/dist/publication-filesystem.js.map +1 -0
  109. package/dist/query-filter.d.ts +12 -0
  110. package/dist/query-filter.d.ts.map +1 -0
  111. package/dist/query-filter.js +29 -0
  112. package/dist/query-filter.js.map +1 -0
  113. package/dist/query-selection.d.ts +25 -0
  114. package/dist/query-selection.d.ts.map +1 -0
  115. package/dist/query-selection.js +48 -0
  116. package/dist/query-selection.js.map +1 -0
  117. package/dist/remote-backend.d.ts +152 -0
  118. package/dist/remote-backend.d.ts.map +1 -0
  119. package/dist/remote-backend.js +505 -0
  120. package/dist/remote-backend.js.map +1 -0
  121. package/dist/remote.d.ts +4 -0
  122. package/dist/remote.d.ts.map +1 -0
  123. package/dist/remote.js +3 -0
  124. package/dist/remote.js.map +1 -0
  125. package/dist/storage.d.ts +7 -0
  126. package/dist/storage.d.ts.map +1 -0
  127. package/dist/storage.js +6 -0
  128. package/dist/storage.js.map +1 -0
  129. package/dist/types.d.ts +438 -0
  130. package/dist/types.d.ts.map +1 -0
  131. package/dist/types.js +12 -0
  132. package/dist/types.js.map +1 -0
  133. package/dist/validation.d.ts +22 -0
  134. package/dist/validation.d.ts.map +1 -0
  135. package/dist/validation.js +12 -0
  136. package/dist/validation.js.map +1 -0
  137. package/dist/version-transport.d.ts +13 -0
  138. package/dist/version-transport.d.ts.map +1 -0
  139. package/dist/version-transport.js +26 -0
  140. package/dist/version-transport.js.map +1 -0
  141. package/dist/versioning.d.ts +48 -0
  142. package/dist/versioning.d.ts.map +1 -0
  143. package/dist/versioning.js +62 -0
  144. package/dist/versioning.js.map +1 -0
  145. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-mutation.js","sourceRoot":"","sources":["../src/document-mutation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Field preconditions for document mutation: the DOMAIN half of the pairing `mutation.ts`'s
3
+ * header names. `versionedMutation` makes stale BYTES structurally impossible to act on, because
4
+ * every attempt's decision is derived from that attempt's own fresh read; it cannot make a stale
5
+ * DOMAIN ASSUMPTION impossible to act on, because the primitive cannot know which assumption a
6
+ * caller made before the retry loop began. A field precondition is that assumption, written down
7
+ * and re-derived from every attempt's fresh state.
8
+ *
9
+ * Evaluated inside `decide` against the same read whose version the CAS write is then conditional
10
+ * on, the check and the write are as atomic as the compare-and-swap itself: one round trip, no new
11
+ * backend method, and identical behavior on every adapter because no adapter participates. A
12
+ * frontmatter predicate is OKF semantics, which is why this lives above the storage seam.
13
+ *
14
+ * A failure is terminal, never retried. `decide` propagates any non-`VersionConflict` throw
15
+ * unchanged, so a caller whose assumption is already false is refused on its first attempt instead
16
+ * of burning a retry budget and winning on a later one.
17
+ */
18
+ import type { ConceptId, Frontmatter, Version } from "./types.js";
19
+ /** What a caller asserts about one field's observed value. */
20
+ export type FieldExpectation = "absent" | {
21
+ equals: string;
22
+ } | {
23
+ oneOf: string[];
24
+ };
25
+ /** One asserted fact about the document a caller is about to mutate. */
26
+ export interface FieldPrecondition {
27
+ /**
28
+ * The storage coordinate — the literal frontmatter key. Resolving a logical Kind field to its
29
+ * edition-specific storage field (`progress_status` -> `superbee_progress_status`) belongs to
30
+ * the caller that owns the Kind registry; this module reads exactly the key it is given.
31
+ */
32
+ field: string;
33
+ expect: FieldExpectation;
34
+ }
35
+ /**
36
+ * A caller's asserted fact about the document did not hold on the read it was evaluated against.
37
+ * Terminal: the mutation wrote nothing and the document is byte-unchanged. Consumers branch on the
38
+ * TYPE and map it to their own conflict shape; they never parse this message.
39
+ */
40
+ export declare class PreconditionFailed extends Error {
41
+ readonly id: ConceptId;
42
+ readonly field: string;
43
+ readonly expected: FieldExpectation;
44
+ readonly actual: unknown;
45
+ /** The version of the read this precondition was evaluated against; `null` when the document is absent. */
46
+ readonly observedVersion: Version | null;
47
+ constructor(id: ConceptId, field: string, expected: FieldExpectation, actual: unknown, observedVersion: Version | null);
48
+ }
49
+ /**
50
+ * Throw on the FIRST unsatisfied precondition in caller order, so a refusal names one deterministic
51
+ * field rather than whichever member of a set happened to be evaluated first. Preconditions are
52
+ * ANDed: an empty or absent list asserts nothing and passes.
53
+ *
54
+ * Shapes are validated in a COMPLETE pass before any of them is evaluated. Interleaving the two
55
+ * would let a malformed expectation escape unreported whenever an earlier assertion happens to
56
+ * fail first — the same guard silently absent depending on list order.
57
+ *
58
+ * `frontmatter === undefined` is an ABSENT document. Every field of a document that does not exist
59
+ * is absent, so `absent` holds there and every value expectation fails.
60
+ */
61
+ export declare function assertFieldPreconditions(id: ConceptId, frontmatter: Frontmatter | undefined, preconditions: readonly FieldPrecondition[] | undefined, observedVersion: Version | null): void;
62
+ //# sourceMappingURL=document-precondition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-precondition.d.ts","sourceRoot":"","sources":["../src/document-precondition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAElE,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAExB,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAqBD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,2GAA2G;IAC3G,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;gBAGvC,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,OAAO,GAAG,IAAI;CAalC;AAiDD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,EACvD,eAAe,EAAE,OAAO,GAAG,IAAI,GAC9B,IAAI,CAWN"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Field preconditions for document mutation: the DOMAIN half of the pairing `mutation.ts`'s
3
+ * header names. `versionedMutation` makes stale BYTES structurally impossible to act on, because
4
+ * every attempt's decision is derived from that attempt's own fresh read; it cannot make a stale
5
+ * DOMAIN ASSUMPTION impossible to act on, because the primitive cannot know which assumption a
6
+ * caller made before the retry loop began. A field precondition is that assumption, written down
7
+ * and re-derived from every attempt's fresh state.
8
+ *
9
+ * Evaluated inside `decide` against the same read whose version the CAS write is then conditional
10
+ * on, the check and the write are as atomic as the compare-and-swap itself: one round trip, no new
11
+ * backend method, and identical behavior on every adapter because no adapter participates. A
12
+ * frontmatter predicate is OKF semantics, which is why this lives above the storage seam.
13
+ *
14
+ * A failure is terminal, never retried. `decide` propagates any non-`VersionConflict` throw
15
+ * unchanged, so a caller whose assumption is already false is refused on its first attempt instead
16
+ * of burning a retry budget and winning on a later one.
17
+ */
18
+ import { InvalidInputError } from "./errors.js";
19
+ function describeExpectation(expect) {
20
+ if (expect === "absent")
21
+ return "absent";
22
+ if ("equals" in expect)
23
+ return `'${expect.equals}'`;
24
+ return `one of ${expect.oneOf.map((value) => `'${value}'`).join(", ")}`;
25
+ }
26
+ function describeActual(actual) {
27
+ if (actual === undefined || actual === null)
28
+ return "absent";
29
+ if (typeof actual === "string")
30
+ return `'${actual}'`;
31
+ // This runs while CONSTRUCTING the refusal, and a frontmatter value can be self-referential (a
32
+ // YAML alias pointing back at its own anchor), which makes `JSON.stringify` throw. A throw here
33
+ // would replace the typed error consumers branch on with a TypeError from the message builder.
34
+ try {
35
+ return JSON.stringify(actual) ?? String(actual);
36
+ }
37
+ catch {
38
+ return `an unrenderable ${typeof actual} value`;
39
+ }
40
+ }
41
+ /**
42
+ * A caller's asserted fact about the document did not hold on the read it was evaluated against.
43
+ * Terminal: the mutation wrote nothing and the document is byte-unchanged. Consumers branch on the
44
+ * TYPE and map it to their own conflict shape; they never parse this message.
45
+ */
46
+ export class PreconditionFailed extends Error {
47
+ id;
48
+ field;
49
+ expected;
50
+ actual;
51
+ /** The version of the read this precondition was evaluated against; `null` when the document is absent. */
52
+ observedVersion;
53
+ constructor(id, field, expected, actual, observedVersion) {
54
+ super(`'${id}' precondition failed: field '${field}' expected ${describeExpectation(expected)}, `
55
+ + `found ${describeActual(actual)}`);
56
+ this.name = "PreconditionFailed";
57
+ this.id = id;
58
+ this.field = field;
59
+ this.expected = expected;
60
+ this.actual = actual;
61
+ this.observedVersion = observedVersion;
62
+ }
63
+ }
64
+ /**
65
+ * A YAML key written with no value (`assignee:`) parses to `null`, which records the same "nobody
66
+ * set this" state as the key being missing. Distinguishing them would make an unclaimed document
67
+ * unclaimable purely because of how its frontmatter happened to be authored.
68
+ */
69
+ function isAbsent(value) {
70
+ return value === undefined || value === null;
71
+ }
72
+ /**
73
+ * Refuse a malformed expectation before anything evaluates it. Every other bad shape already fails
74
+ * CLOSED, but `{ oneOf: "todo" }` did not: `oneOf` reached `String.prototype.includes`, turning set
75
+ * membership into SUBSTRING matching, so `'tod'` and `''` satisfied it. A guard whose one failure
76
+ * mode is failing open is worse than no guard, so the shape is rejected rather than interpreted —
77
+ * and rejected here, in the owning primitive, so no caller can recreate the mistake at its own
78
+ * boundary. `equals` and `oneOf` are mutually exclusive: an object carrying both states two
79
+ * different assertions about one field and names neither.
80
+ */
81
+ function assertRecognizedExpectation(id, field, expect) {
82
+ if (expect === "absent")
83
+ return;
84
+ if (typeof expect === "object" && expect !== null && !Array.isArray(expect)) {
85
+ const shape = expect;
86
+ const hasEquals = "equals" in shape;
87
+ const hasOneOf = "oneOf" in shape;
88
+ if (hasEquals && !hasOneOf && typeof shape.equals === "string")
89
+ return;
90
+ if (hasOneOf
91
+ && !hasEquals
92
+ && Array.isArray(shape.oneOf)
93
+ && shape.oneOf.every((value) => typeof value === "string"))
94
+ return;
95
+ }
96
+ throw new InvalidInputError(`'${id}' declares an unrecognized precondition on field '${field}': `
97
+ + `expect must be "absent", { equals: string }, or { oneOf: string[] }`);
98
+ }
99
+ function satisfied(expect, actual) {
100
+ if (expect === "absent")
101
+ return isAbsent(actual);
102
+ // A value expectation is a declared string; a list, map, number, or boolean sitting at that
103
+ // coordinate is not that string, and coercing it to one would let `assignee: [a, b]` satisfy
104
+ // `equals: a` on some hosts and not others.
105
+ if (typeof actual !== "string")
106
+ return false;
107
+ return "equals" in expect ? actual === expect.equals : expect.oneOf.includes(actual);
108
+ }
109
+ /**
110
+ * Throw on the FIRST unsatisfied precondition in caller order, so a refusal names one deterministic
111
+ * field rather than whichever member of a set happened to be evaluated first. Preconditions are
112
+ * ANDed: an empty or absent list asserts nothing and passes.
113
+ *
114
+ * Shapes are validated in a COMPLETE pass before any of them is evaluated. Interleaving the two
115
+ * would let a malformed expectation escape unreported whenever an earlier assertion happens to
116
+ * fail first — the same guard silently absent depending on list order.
117
+ *
118
+ * `frontmatter === undefined` is an ABSENT document. Every field of a document that does not exist
119
+ * is absent, so `absent` holds there and every value expectation fails.
120
+ */
121
+ export function assertFieldPreconditions(id, frontmatter, preconditions, observedVersion) {
122
+ if (preconditions === undefined || preconditions.length === 0)
123
+ return;
124
+ for (const precondition of preconditions) {
125
+ assertRecognizedExpectation(id, precondition.field, precondition.expect);
126
+ }
127
+ for (const precondition of preconditions) {
128
+ const actual = frontmatter === undefined ? undefined : frontmatter[precondition.field];
129
+ if (!satisfied(precondition.expect, actual)) {
130
+ throw new PreconditionFailed(id, precondition.field, precondition.expect, actual, observedVersion);
131
+ }
132
+ }
133
+ }
134
+ //# sourceMappingURL=document-precondition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-precondition.js","sourceRoot":"","sources":["../src/document-precondition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /** Pure document-shape policies applied before a normalized document reaches storage. */
2
+ import type { Frontmatter, OkfDocument } from "./types.js";
3
+ /** OKF v0.2 actor spellings: human/process identities or a producer/version pair. */
4
+ export declare function isOkfActor(value: unknown): value is string;
5
+ /**
6
+ * Normalize one document according to Superbee's OKF v0.1 write contract.
7
+ * The caller supplies one evaluated preserve-or-fallback timestamp decision, keeping this policy
8
+ * deterministic and free of I/O.
9
+ */
10
+ export declare function normalizeV01DocumentForWrite(doc: OkfDocument, validatedType: string, timestamp: {
11
+ preserveExisting: true;
12
+ existingTimestamp: string;
13
+ } | {
14
+ preserveExisting: false;
15
+ fallbackTimestamp: string;
16
+ }): OkfDocument;
17
+ /**
18
+ * Normalize a v0.2 document without inventing optional provenance or legacy clock fields.
19
+ * Unknown fields and any existing top-level `timestamp` remain byte-semantically preserved.
20
+ */
21
+ export declare function normalizeV02DocumentForWrite(doc: OkfDocument, validatedType: string): OkfDocument;
22
+ /** Whether content/provenance changed, excluding verification history and the generation clock. */
23
+ export declare function v02MeaningfulContentChanged(existing: Pick<OkfDocument, "frontmatter" | "body">, candidate: Pick<OkfDocument, "frontmatter" | "body">): boolean;
24
+ export interface V02MutationMetadataOptions {
25
+ existing?: Pick<OkfDocument, "frontmatter" | "body">;
26
+ candidate: {
27
+ frontmatter: Frontmatter;
28
+ body: string;
29
+ };
30
+ meaningfulChangeAt: string;
31
+ /** Seed standard generation metadata when a newly created governed document needs a clock. */
32
+ requireGenerationClock?: boolean;
33
+ }
34
+ /**
35
+ * Apply the v0.2 mutation clock without conflating storage attribution with provenance.
36
+ * `generated` is optional; when present its producer is preserved unless explicitly replaced.
37
+ */
38
+ export declare function applyV02MutationMetadata(opts: V02MutationMetadataOptions): {
39
+ frontmatter: Frontmatter;
40
+ body: string;
41
+ };
42
+ //# sourceMappingURL=document-write-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-write-policy.d.ts","sourceRoot":"","sources":["../src/document-write-policy.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAGzF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY3D,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE;IAAE,gBAAgB,EAAE,IAAI,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,gBAAgB,EAAE,KAAK,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACzD,WAAW,CASb;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CAGjG;AAmCD,mGAAmG;AACnG,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC,EACnD,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC,GACnD,OAAO,CAOT;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;IACrD,SAAS,EAAE;QAAE,WAAW,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8FAA8F;IAC9F,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,0BAA0B,GAAG;IAC1E,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,CAoDA"}
@@ -0,0 +1,134 @@
1
+ /** Pure document-shape policies applied before a normalized document reaches storage. */
2
+ import { InvalidInputError } from "./errors.js";
3
+ function isRecord(value) {
4
+ return value !== null && typeof value === "object" && !Array.isArray(value);
5
+ }
6
+ function hasOwn(record, key) {
7
+ return Object.prototype.hasOwnProperty.call(record, key);
8
+ }
9
+ /** OKF v0.2 actor spellings: human/process identities or a producer/version pair. */
10
+ export function isOkfActor(value) {
11
+ if (typeof value !== "string" || value.trim() !== value || value.length === 0 || /\s/.test(value)) {
12
+ return false;
13
+ }
14
+ if (/^(?:human|process):[^\s:]+$/.test(value))
15
+ return true;
16
+ return /^[^\s/:]+\/[^\s/]+$/.test(value);
17
+ }
18
+ /**
19
+ * Normalize one document according to Superbee's OKF v0.1 write contract.
20
+ * The caller supplies one evaluated preserve-or-fallback timestamp decision, keeping this policy
21
+ * deterministic and free of I/O.
22
+ */
23
+ export function normalizeV01DocumentForWrite(doc, validatedType, timestamp) {
24
+ const normalizedTimestamp = timestamp.preserveExisting
25
+ ? timestamp.existingTimestamp
26
+ : timestamp.fallbackTimestamp;
27
+ // `type` leads and `timestamp` trails, matching OKF sample documents and historical bytes.
28
+ const { type: _type, timestamp: _timestamp, ...rest } = doc.frontmatter;
29
+ const frontmatter = { type: validatedType, ...rest, timestamp: normalizedTimestamp };
30
+ return { id: doc.id, frontmatter, body: doc.body ?? "" };
31
+ }
32
+ /**
33
+ * Normalize a v0.2 document without inventing optional provenance or legacy clock fields.
34
+ * Unknown fields and any existing top-level `timestamp` remain byte-semantically preserved.
35
+ */
36
+ export function normalizeV02DocumentForWrite(doc, validatedType) {
37
+ const { type: _type, ...rest } = doc.frontmatter;
38
+ return { id: doc.id, frontmatter: { type: validatedType, ...rest }, body: doc.body ?? "" };
39
+ }
40
+ function generatedRecord(value, label) {
41
+ if (value === undefined)
42
+ return undefined;
43
+ if (!isRecord(value)) {
44
+ throw new InvalidInputError(`OKF v0.2 ${label} must be a mapping when present`);
45
+ }
46
+ return value;
47
+ }
48
+ function sameValue(a, b) {
49
+ if (a === b)
50
+ return true;
51
+ if (Array.isArray(a) || Array.isArray(b)) {
52
+ return Array.isArray(a) && Array.isArray(b)
53
+ && a.length === b.length
54
+ && a.every((value, index) => sameValue(value, b[index]));
55
+ }
56
+ if (isRecord(a) && isRecord(b)) {
57
+ const aKeys = Object.keys(a);
58
+ const bKeys = Object.keys(b);
59
+ return aKeys.length === bKeys.length && aKeys.every((key) => sameValue(a[key], b[key]));
60
+ }
61
+ return false;
62
+ }
63
+ function withoutV02GenerationClock(frontmatter) {
64
+ const copy = { ...frontmatter };
65
+ const generated = copy.generated;
66
+ if (isRecord(generated)) {
67
+ const { at: _at, ...rest } = generated;
68
+ copy.generated = rest;
69
+ }
70
+ return copy;
71
+ }
72
+ /** Whether content/provenance changed, excluding verification history and the generation clock. */
73
+ export function v02MeaningfulContentChanged(existing, candidate) {
74
+ if (existing.body !== candidate.body)
75
+ return true;
76
+ const existingFrontmatter = withoutV02GenerationClock(existing.frontmatter);
77
+ const candidateFrontmatter = withoutV02GenerationClock(candidate.frontmatter);
78
+ delete existingFrontmatter.verified;
79
+ delete candidateFrontmatter.verified;
80
+ return !sameValue(existingFrontmatter, candidateFrontmatter);
81
+ }
82
+ /**
83
+ * Apply the v0.2 mutation clock without conflating storage attribution with provenance.
84
+ * `generated` is optional; when present its producer is preserved unless explicitly replaced.
85
+ */
86
+ export function applyV02MutationMetadata(opts) {
87
+ const existingGenerated = generatedRecord(opts.existing?.frontmatter.generated, "existing generated");
88
+ const declaredCandidateGenerated = generatedRecord(opts.candidate.frontmatter.generated, "generated");
89
+ const candidateGenerated = !opts.existing && opts.requireGenerationClock && !declaredCandidateGenerated
90
+ ? { by: "process:superbee" }
91
+ : declaredCandidateGenerated;
92
+ const frontmatter = candidateGenerated === declaredCandidateGenerated
93
+ ? { ...opts.candidate.frontmatter }
94
+ : { ...opts.candidate.frontmatter, generated: candidateGenerated };
95
+ if (opts.existing
96
+ && !hasOwn(frontmatter, "verified")
97
+ && hasOwn(opts.existing.frontmatter, "verified")) {
98
+ frontmatter.verified = opts.existing.frontmatter.verified;
99
+ }
100
+ if (!existingGenerated && !candidateGenerated)
101
+ return { ...opts.candidate, frontmatter };
102
+ const candidateHasBy = candidateGenerated ? hasOwn(candidateGenerated, "by") : false;
103
+ const existingBy = existingGenerated?.by;
104
+ const candidateBy = candidateGenerated?.by;
105
+ if (candidateHasBy && candidateBy !== existingBy && !isOkfActor(candidateBy)) {
106
+ throw new InvalidInputError("OKF v0.2 generated.by must be human:<id>, process:<id>, or <producer>/<version>");
107
+ }
108
+ const resolvedBy = candidateHasBy ? candidateBy : existingBy;
109
+ if (typeof resolvedBy !== "string" || resolvedBy.trim() === "") {
110
+ throw new InvalidInputError("OKF v0.2 generated.by is required when generated is present");
111
+ }
112
+ const generated = { ...existingGenerated, ...candidateGenerated, by: resolvedBy };
113
+ if (!opts.existing) {
114
+ if (generated.at === undefined)
115
+ generated.at = opts.meaningfulChangeAt;
116
+ else if (typeof generated.at !== "string" || Number.isNaN(Date.parse(generated.at))) {
117
+ throw new InvalidInputError("OKF v0.2 generated.at must be an ISO-8601 date/time when present");
118
+ }
119
+ }
120
+ else if (v02MeaningfulContentChanged(opts.existing, {
121
+ ...opts.candidate,
122
+ frontmatter: { ...frontmatter, generated },
123
+ })) {
124
+ generated.at = opts.meaningfulChangeAt;
125
+ }
126
+ else if (existingGenerated && hasOwn(existingGenerated, "at")) {
127
+ generated.at = existingGenerated.at;
128
+ }
129
+ return {
130
+ ...opts.candidate,
131
+ frontmatter: { ...frontmatter, generated },
132
+ };
133
+ }
134
+ //# sourceMappingURL=document-write-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-write-policy.js","sourceRoot":"","sources":["../src/document-write-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Runtime-neutral Superbee engine operations.
3
+ *
4
+ * Every operation receives its {@link StorageBackend} explicitly. Node filesystem defaults live
5
+ * only in the legacy root adapter (`bundle.ts`); Worker and browser consumers import this module.
6
+ */
7
+ import type { BlobKey, ConceptId, DeleteOptions, EdgeFilter, HeadResult, Link, OkfDocument, QueryFilter, ReadBlobResult, ReadResult, StorageBackend, Version, VersionInfo, WriteOptions } from "./types.js";
8
+ export { MalformedDocumentError } from "./frontmatter-contract.js";
9
+ export type { EdgeFilter, Link } from "./types.js";
10
+ /** A normalized written document together with the backend version recorded for it. */
11
+ export interface WriteResult {
12
+ doc: OkfDocument;
13
+ version: Version;
14
+ }
15
+ /** A document a resilient scan skipped because it was malformed. */
16
+ export interface SkippedDoc {
17
+ id: ConceptId;
18
+ reason: string;
19
+ }
20
+ /** Options for document and head scans. */
21
+ export interface QueryOptions {
22
+ onSkip?: (skip: SkippedDoc) => void;
23
+ }
24
+ /** Read the bundle-root OKF edition through an explicit backend. */
25
+ export declare function readBundleOkfVersion(backend: StorageBackend): Promise<string | undefined>;
26
+ /** Validate, normalize for the backend's bundle edition, and atomically persist a document. */
27
+ export declare function writeDocVersioned(backend: StorageBackend, doc: OkfDocument, options?: WriteOptions): Promise<WriteResult>;
28
+ /** Edition-pinned sibling for mutation policy after it has read the root once. */
29
+ export declare function writeDocVersionedForEdition(backend: StorageBackend, doc: OkfDocument, okfVersion: string, options?: WriteOptions): Promise<WriteResult>;
30
+ /** Persist a document while keeping the historical document-only result. */
31
+ export declare function writeDoc(backend: StorageBackend, doc: OkfDocument, options?: WriteOptions): Promise<OkfDocument>;
32
+ export declare function readDocVersioned(backend: StorageBackend, id: ConceptId): Promise<ReadResult>;
33
+ export declare function readDoc(backend: StorageBackend, id: ConceptId): Promise<OkfDocument>;
34
+ export declare function existsDoc(backend: StorageBackend, id: ConceptId): Promise<boolean>;
35
+ export declare function docVersions(backend: StorageBackend, id: ConceptId): Promise<VersionInfo[]>;
36
+ export declare function deleteDoc(backend: StorageBackend, id: ConceptId, options?: DeleteOptions): Promise<boolean>;
37
+ export declare function query(backend: StorageBackend, filter?: QueryFilter, options?: QueryOptions): Promise<OkfDocument[]>;
38
+ export declare const list: typeof query;
39
+ export declare function queryHeads(backend: StorageBackend, filter?: QueryFilter, options?: QueryOptions): Promise<HeadResult[]>;
40
+ export declare function parseLinks(doc: OkfDocument): Link[];
41
+ export declare function queryEdges(backend: StorageBackend, filter?: EdgeFilter): Promise<Link[]>;
42
+ export declare function backlinks(backend: StorageBackend, target: ConceptId): Promise<Link[]>;
43
+ export declare function readBlob(backend: StorageBackend, key: BlobKey): Promise<ReadBlobResult | null>;
44
+ export declare function writeBlob(backend: StorageBackend, key: BlobKey, bytes: Uint8Array, contentType?: string, options?: WriteOptions): Promise<Version>;
45
+ export declare function existsBlob(backend: StorageBackend, key: BlobKey): Promise<boolean>;
46
+ export declare function listBlobs(backend: StorageBackend, prefix?: string): Promise<BlobKey[]>;
47
+ export declare function deleteBlob(backend: StorageBackend, key: BlobKey, options?: DeleteOptions): Promise<boolean>;
48
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}