@superbee/core 0.2.0-pre.16 → 0.2.0-pre.19

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 (278) hide show
  1. package/README.md +622 -5
  2. package/dist/blob-journal.d.ts +187 -2
  3. package/dist/blob-journal.d.ts.map +1 -1
  4. package/dist/blob-journal.js +377 -5
  5. package/dist/blob-journal.js.map +1 -1
  6. package/dist/body-replace-guards.d.ts +50 -0
  7. package/dist/body-replace-guards.d.ts.map +1 -0
  8. package/dist/body-replace-guards.js +158 -0
  9. package/dist/body-replace-guards.js.map +1 -0
  10. package/dist/builtin-recipes/content.d.ts +93 -0
  11. package/dist/builtin-recipes/content.d.ts.map +1 -0
  12. package/dist/builtin-recipes/content.js +288 -0
  13. package/dist/builtin-recipes/content.js.map +1 -0
  14. package/dist/builtin-recipes.d.ts +10 -0
  15. package/dist/builtin-recipes.d.ts.map +1 -0
  16. package/dist/builtin-recipes.js +97 -0
  17. package/dist/builtin-recipes.js.map +1 -0
  18. package/dist/bundle-health/index.d.ts +14 -0
  19. package/dist/bundle-health/index.d.ts.map +1 -0
  20. package/dist/bundle-health/index.js +12 -0
  21. package/dist/bundle-health/index.js.map +1 -0
  22. package/dist/bundle-health/kind-findings.d.ts +44 -0
  23. package/dist/bundle-health/kind-findings.d.ts.map +1 -0
  24. package/dist/bundle-health/kind-findings.js +68 -0
  25. package/dist/bundle-health/kind-findings.js.map +1 -0
  26. package/dist/bundle-health/legacy-page.d.ts +39 -0
  27. package/dist/bundle-health/legacy-page.d.ts.map +1 -0
  28. package/dist/bundle-health/legacy-page.js +50 -0
  29. package/dist/bundle-health/legacy-page.js.map +1 -0
  30. package/dist/bundle-health/report.d.ts +202 -0
  31. package/dist/bundle-health/report.d.ts.map +1 -0
  32. package/dist/bundle-health/report.js +438 -0
  33. package/dist/bundle-health/report.js.map +1 -0
  34. package/dist/code-point-order.d.ts +8 -0
  35. package/dist/code-point-order.d.ts.map +1 -0
  36. package/dist/code-point-order.js +20 -0
  37. package/dist/code-point-order.js.map +1 -0
  38. package/dist/connectors.d.ts +223 -0
  39. package/dist/connectors.d.ts.map +1 -0
  40. package/dist/connectors.js +1143 -0
  41. package/dist/connectors.js.map +1 -0
  42. package/dist/document-field-actions.d.ts +18 -0
  43. package/dist/document-field-actions.d.ts.map +1 -1
  44. package/dist/document-field-actions.js +91 -29
  45. package/dist/document-field-actions.js.map +1 -1
  46. package/dist/document-mutation.d.ts +7 -9
  47. package/dist/document-mutation.d.ts.map +1 -1
  48. package/dist/document-mutation.js +16 -16
  49. package/dist/document-mutation.js.map +1 -1
  50. package/dist/file-journaled-backend.d.ts +31 -5
  51. package/dist/file-journaled-backend.d.ts.map +1 -1
  52. package/dist/file-journaled-backend.js +131 -118
  53. package/dist/file-journaled-backend.js.map +1 -1
  54. package/dist/hosted-client/blob-delivery.d.ts +6 -0
  55. package/dist/hosted-client/blob-delivery.d.ts.map +1 -1
  56. package/dist/hosted-client/blob-delivery.js +23 -1
  57. package/dist/hosted-client/blob-delivery.js.map +1 -1
  58. package/dist/hosted-client/blob-write.d.ts +386 -0
  59. package/dist/hosted-client/blob-write.d.ts.map +1 -0
  60. package/dist/hosted-client/blob-write.js +770 -0
  61. package/dist/hosted-client/blob-write.js.map +1 -0
  62. package/dist/hosted-client/client.d.ts +64 -0
  63. package/dist/hosted-client/client.d.ts.map +1 -1
  64. package/dist/hosted-client/client.js +31 -0
  65. package/dist/hosted-client/client.js.map +1 -1
  66. package/dist/hosted-client/directory.d.ts +46 -0
  67. package/dist/hosted-client/directory.d.ts.map +1 -0
  68. package/dist/hosted-client/directory.js +74 -0
  69. package/dist/hosted-client/directory.js.map +1 -0
  70. package/dist/hosted-client/errors.d.ts +10 -0
  71. package/dist/hosted-client/errors.d.ts.map +1 -1
  72. package/dist/hosted-client/errors.js +13 -0
  73. package/dist/hosted-client/errors.js.map +1 -1
  74. package/dist/hosted-client/inbox.d.ts +320 -0
  75. package/dist/hosted-client/inbox.d.ts.map +1 -0
  76. package/dist/hosted-client/inbox.js +379 -0
  77. package/dist/hosted-client/inbox.js.map +1 -0
  78. package/dist/hosted-client/index.d.ts +11 -4
  79. package/dist/hosted-client/index.d.ts.map +1 -1
  80. package/dist/hosted-client/index.js +11 -4
  81. package/dist/hosted-client/index.js.map +1 -1
  82. package/dist/hosted-client/journal.d.ts +103 -0
  83. package/dist/hosted-client/journal.d.ts.map +1 -0
  84. package/dist/hosted-client/journal.js +464 -0
  85. package/dist/hosted-client/journal.js.map +1 -0
  86. package/dist/hosted-client/node.d.ts +5 -1
  87. package/dist/hosted-client/node.d.ts.map +1 -1
  88. package/dist/hosted-client/node.js +6 -1
  89. package/dist/hosted-client/node.js.map +1 -1
  90. package/dist/hosted-client/write.d.ts +28 -2
  91. package/dist/hosted-client/write.d.ts.map +1 -1
  92. package/dist/hosted-client/write.js +33 -11
  93. package/dist/hosted-client/write.js.map +1 -1
  94. package/dist/hosted-transport/answer-rows.d.ts +3 -2
  95. package/dist/hosted-transport/answer-rows.d.ts.map +1 -1
  96. package/dist/hosted-transport/answer-rows.js +1 -1
  97. package/dist/hosted-transport/answer-rows.js.map +1 -1
  98. package/dist/hosted-transport/carrier.d.ts +10 -0
  99. package/dist/hosted-transport/carrier.d.ts.map +1 -1
  100. package/dist/hosted-transport/carrier.js +22 -2
  101. package/dist/hosted-transport/carrier.js.map +1 -1
  102. package/dist/hosted-transport/whole-document-transport.d.ts +1 -1
  103. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -1
  104. package/dist/hosted-transport/whole-document-transport.js +20 -12
  105. package/dist/hosted-transport/whole-document-transport.js.map +1 -1
  106. package/dist/index.d.ts +6 -2
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +4 -2
  109. package/dist/index.js.map +1 -1
  110. package/dist/kind-authoring.d.ts +170 -0
  111. package/dist/kind-authoring.d.ts.map +1 -0
  112. package/dist/kind-authoring.js +451 -0
  113. package/dist/kind-authoring.js.map +1 -0
  114. package/dist/kind-conformance-error.d.ts +15 -0
  115. package/dist/kind-conformance-error.d.ts.map +1 -0
  116. package/dist/kind-conformance-error.js +20 -0
  117. package/dist/kind-conformance-error.js.map +1 -0
  118. package/dist/kinds-load.js +4 -4
  119. package/dist/kinds-load.js.map +1 -1
  120. package/dist/kinds.d.ts +2 -0
  121. package/dist/kinds.d.ts.map +1 -1
  122. package/dist/kinds.js +10 -2
  123. package/dist/kinds.js.map +1 -1
  124. package/dist/paths.d.ts +16 -0
  125. package/dist/paths.d.ts.map +1 -1
  126. package/dist/paths.js +25 -0
  127. package/dist/paths.js.map +1 -1
  128. package/dist/query-filter.d.ts +9 -0
  129. package/dist/query-filter.d.ts.map +1 -1
  130. package/dist/query-filter.js +19 -3
  131. package/dist/query-filter.js.map +1 -1
  132. package/dist/recipe-lifecycle/stamp.d.ts +11 -0
  133. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -1
  134. package/dist/recipe-lifecycle/stamp.js +6 -0
  135. package/dist/recipe-lifecycle/stamp.js.map +1 -1
  136. package/dist/record-overlay/apply.d.ts +43 -0
  137. package/dist/record-overlay/apply.d.ts.map +1 -0
  138. package/dist/record-overlay/apply.js +527 -0
  139. package/dist/record-overlay/apply.js.map +1 -0
  140. package/dist/record-overlay/canonical.d.ts +22 -0
  141. package/dist/record-overlay/canonical.d.ts.map +1 -0
  142. package/dist/record-overlay/canonical.js +47 -0
  143. package/dist/record-overlay/canonical.js.map +1 -0
  144. package/dist/record-overlay/digest.d.ts +4 -0
  145. package/dist/record-overlay/digest.d.ts.map +1 -0
  146. package/dist/record-overlay/digest.js +11 -0
  147. package/dist/record-overlay/digest.js.map +1 -0
  148. package/dist/record-overlay/errors.d.ts +44 -0
  149. package/dist/record-overlay/errors.d.ts.map +1 -0
  150. package/dist/record-overlay/errors.js +55 -0
  151. package/dist/record-overlay/errors.js.map +1 -0
  152. package/dist/record-overlay/findings.d.ts +5 -0
  153. package/dist/record-overlay/findings.d.ts.map +1 -0
  154. package/dist/record-overlay/findings.js +83 -0
  155. package/dist/record-overlay/findings.js.map +1 -0
  156. package/dist/record-overlay/index.d.ts +23 -0
  157. package/dist/record-overlay/index.d.ts.map +1 -0
  158. package/dist/record-overlay/index.js +21 -0
  159. package/dist/record-overlay/index.js.map +1 -0
  160. package/dist/record-overlay/plan.d.ts +12 -0
  161. package/dist/record-overlay/plan.d.ts.map +1 -0
  162. package/dist/record-overlay/plan.js +285 -0
  163. package/dist/record-overlay/plan.js.map +1 -0
  164. package/dist/record-overlay/policy.d.ts +69 -0
  165. package/dist/record-overlay/policy.d.ts.map +1 -0
  166. package/dist/record-overlay/policy.js +228 -0
  167. package/dist/record-overlay/policy.js.map +1 -0
  168. package/dist/record-overlay/redact.d.ts +3 -0
  169. package/dist/record-overlay/redact.d.ts.map +1 -0
  170. package/dist/record-overlay/redact.js +27 -0
  171. package/dist/record-overlay/redact.js.map +1 -0
  172. package/dist/record-overlay/signal-kind.d.ts +30 -0
  173. package/dist/record-overlay/signal-kind.d.ts.map +1 -0
  174. package/dist/record-overlay/signal-kind.js +38 -0
  175. package/dist/record-overlay/signal-kind.js.map +1 -0
  176. package/dist/record-overlay/signal-text.d.ts +45 -0
  177. package/dist/record-overlay/signal-text.d.ts.map +1 -0
  178. package/dist/record-overlay/signal-text.js +116 -0
  179. package/dist/record-overlay/signal-text.js.map +1 -0
  180. package/dist/record-overlay/source-index.d.ts +19 -0
  181. package/dist/record-overlay/source-index.d.ts.map +1 -0
  182. package/dist/record-overlay/source-index.js +102 -0
  183. package/dist/record-overlay/source-index.js.map +1 -0
  184. package/dist/record-overlay/types.d.ts +291 -0
  185. package/dist/record-overlay/types.d.ts.map +1 -0
  186. package/dist/record-overlay/types.js +2 -0
  187. package/dist/record-overlay/types.js.map +1 -0
  188. package/dist/remote-operations.js +5 -2
  189. package/dist/remote-operations.js.map +1 -1
  190. package/dist/search/contract.d.ts +151 -0
  191. package/dist/search/contract.d.ts.map +1 -0
  192. package/dist/search/contract.js +78 -0
  193. package/dist/search/contract.js.map +1 -0
  194. package/dist/search/errors.d.ts +30 -0
  195. package/dist/search/errors.d.ts.map +1 -0
  196. package/dist/search/errors.js +50 -0
  197. package/dist/search/errors.js.map +1 -0
  198. package/dist/search/identity.d.ts +12 -0
  199. package/dist/search/identity.d.ts.map +1 -0
  200. package/dist/search/identity.js +90 -0
  201. package/dist/search/identity.js.map +1 -0
  202. package/dist/search/index.d.ts +15 -0
  203. package/dist/search/index.d.ts.map +1 -0
  204. package/dist/search/index.js +14 -0
  205. package/dist/search/index.js.map +1 -0
  206. package/dist/search/memory-source.d.ts +25 -0
  207. package/dist/search/memory-source.d.ts.map +1 -0
  208. package/dist/search/memory-source.js +230 -0
  209. package/dist/search/memory-source.js.map +1 -0
  210. package/dist/search/rank.d.ts +34 -0
  211. package/dist/search/rank.d.ts.map +1 -0
  212. package/dist/search/rank.js +129 -0
  213. package/dist/search/rank.js.map +1 -0
  214. package/dist/search/row-text.d.ts +38 -0
  215. package/dist/search/row-text.d.ts.map +1 -0
  216. package/dist/search/row-text.js +88 -0
  217. package/dist/search/row-text.js.map +1 -0
  218. package/dist/search/search.d.ts +28 -0
  219. package/dist/search/search.d.ts.map +1 -0
  220. package/dist/search/search.js +240 -0
  221. package/dist/search/search.js.map +1 -0
  222. package/dist/search/source.d.ts +67 -0
  223. package/dist/search/source.d.ts.map +1 -0
  224. package/dist/search/source.js +2 -0
  225. package/dist/search/source.js.map +1 -0
  226. package/dist/search/text.d.ts +47 -0
  227. package/dist/search/text.d.ts.map +1 -0
  228. package/dist/search/text.js +148 -0
  229. package/dist/search/text.js.map +1 -0
  230. package/dist/source-engine/guard.d.ts +82 -0
  231. package/dist/source-engine/guard.d.ts.map +1 -0
  232. package/dist/source-engine/guard.js +396 -0
  233. package/dist/source-engine/guard.js.map +1 -0
  234. package/dist/source-engine/index.d.ts +24 -0
  235. package/dist/source-engine/index.d.ts.map +1 -0
  236. package/dist/source-engine/index.js +20 -0
  237. package/dist/source-engine/index.js.map +1 -0
  238. package/dist/source-engine/machine-state.d.ts +74 -0
  239. package/dist/source-engine/machine-state.d.ts.map +1 -0
  240. package/dist/source-engine/machine-state.js +48 -0
  241. package/dist/source-engine/machine-state.js.map +1 -0
  242. package/dist/source-engine/observe.d.ts +18 -0
  243. package/dist/source-engine/observe.d.ts.map +1 -0
  244. package/dist/source-engine/observe.js +598 -0
  245. package/dist/source-engine/observe.js.map +1 -0
  246. package/dist/source-engine/robots.d.ts +53 -0
  247. package/dist/source-engine/robots.d.ts.map +1 -0
  248. package/dist/source-engine/robots.js +158 -0
  249. package/dist/source-engine/robots.js.map +1 -0
  250. package/dist/source-engine/types.d.ts +285 -0
  251. package/dist/source-engine/types.d.ts.map +1 -0
  252. package/dist/source-engine/types.js +2 -0
  253. package/dist/source-engine/types.js.map +1 -0
  254. package/dist/source-harness/conformance.d.ts +16 -0
  255. package/dist/source-harness/conformance.d.ts.map +1 -0
  256. package/dist/source-harness/conformance.js +265 -0
  257. package/dist/source-harness/conformance.js.map +1 -0
  258. package/dist/source-harness/fixture.d.ts +95 -0
  259. package/dist/source-harness/fixture.d.ts.map +1 -0
  260. package/dist/source-harness/fixture.js +261 -0
  261. package/dist/source-harness/fixture.js.map +1 -0
  262. package/dist/source-harness/index.d.ts +22 -0
  263. package/dist/source-harness/index.d.ts.map +1 -0
  264. package/dist/source-harness/index.js +19 -0
  265. package/dist/source-harness/index.js.map +1 -0
  266. package/dist/source-harness/peer.d.ts +74 -0
  267. package/dist/source-harness/peer.d.ts.map +1 -0
  268. package/dist/source-harness/peer.js +106 -0
  269. package/dist/source-harness/peer.js.map +1 -0
  270. package/dist/storage.d.ts +2 -1
  271. package/dist/storage.d.ts.map +1 -1
  272. package/dist/storage.js +1 -1
  273. package/dist/storage.js.map +1 -1
  274. package/dist/uncertain-write.d.ts +39 -6
  275. package/dist/uncertain-write.d.ts.map +1 -1
  276. package/dist/uncertain-write.js +25 -3
  277. package/dist/uncertain-write.js.map +1 -1
  278. package/package.json +33 -1
@@ -1,10 +1,12 @@
1
1
  /** File-journal optional ordinary-file admission. Frozen payloads are data, never authority:
2
2
  * a dispatcher must compare their scope with its current trusted context before delivery. */
3
- import { captureBlobWriteExpected, decodeBlobWriteResult, assertBlobKey } from "./blob-contract.js";
3
+ import { captureBlobWriteExpected, decodeBlobWriteResult, assertBlobKey, isBlobContentType, isSafeBlobKey } from "./blob-contract.js";
4
4
  import { isHostedBundleId } from "./dependencies.js";
5
5
  import { isAgentLabelVia, isWriteBinding, isWriteRequestId } from "./write-identity.js";
6
6
  import { sha256HexOfBytes } from "./sha256.js";
7
- import { captureJournalValue, equalJournalValue, assertMetaExpectation, JournalGuardConflict } from "./journaled-backend.js";
7
+ import { captureJournalValue, equalJournalValue, assertMetaExpectation, IntentStateConflict, JournalGuardConflict, JournalSnapshotConflict } from "./journaled-backend.js";
8
+ import { isReservedFile } from "./paths.js";
9
+ import { PAGE_ENTRY_PREFIX, PAGE_REGISTRY_PREFIX, VIEW_ENTRY_PREFIX, VIEW_REGISTRY_PREFIX } from "./page.js";
8
10
  export { isWriteRequestId } from "./write-identity.js";
9
11
  export const BLOB_JOURNAL_BOUNDS = Object.freeze({ rawBytes: 16 * 1024 * 1024, preparedBytes: 24 * 1024 * 1024,
10
12
  /** The file codec checks the actual tagged encoding, not an estimate of JSON text. */
@@ -20,6 +22,20 @@ export function captureBlobDeletionHold(value) {
20
22
  throw new TypeError("invalid blob deletion hold");
21
23
  return hold;
22
24
  }
25
+ /**
26
+ * Why a claimed attempt is proven never to have left the process. Only for this invocation's own
27
+ * claim, made through the same open journal, and only for a failure before the carrier is invoked
28
+ * (credentials, an already-aborted signal, a malformed identity, a local precondition) or the
29
+ * carrier's own `denied`, which by its contract means nothing left. Any other carrier or transport
30
+ * failure, and any claim found at open, may have been sent: that is `unknown`.
31
+ */
32
+ export const BLOB_NOT_DISPATCHED_CODES = Object.freeze(["credentials_unavailable", "credentials_denied", "aborted", "invalid_identity", "precondition_failed"]);
33
+ export function captureBlobNotDispatched(value) {
34
+ const evidence = captureJournalValue(value);
35
+ if (!object(evidence) || !only(evidence, ["code"]) || !BLOB_NOT_DISPATCHED_CODES.includes(evidence.code))
36
+ throw new TypeError("invalid blob not-dispatched evidence");
37
+ return evidence;
38
+ }
23
39
  const object = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
24
40
  const only = (v, keys) => Object.keys(v).every(key => keys.includes(key));
25
41
  const timestamp = (v) => typeof v === "string" && v.length <= 64 && /^\d{4}-\d\d-\d\dT.*(?:Z|[+-]\d\d:\d\d)$/.test(v) && Number.isFinite(Date.parse(v));
@@ -67,7 +83,37 @@ export function prepareBlobIntent(input, bytes) {
67
83
  throw new RangeError("prepared blob exceeds its byte bound");
68
84
  return payload;
69
85
  }
86
+ /**
87
+ * Payloads already validated, keyed by the payload text itself: validation is a pure function of
88
+ * that text, and one write validates its record's payload many times (every guard and transition
89
+ * re-captures it). Bounded by count and by payload length, oldest out first; each hit still
90
+ * returns a fresh copy, so no caller shares or can change a cached value.
91
+ */
92
+ const DECODED = new Map();
93
+ const DECODED_ENTRIES = 8;
94
+ const DECODED_CHARS = 32 * 1024 * 1024;
95
+ let decodedChars = 0;
96
+ function copyPrepared(value) {
97
+ return { ...value, scope: { ...value.scope }, intent: { ...value.intent }, identity: { ...value.identity } };
98
+ }
70
99
  export function decodePreparedBlobIntent(payload) {
100
+ const cached = typeof payload === "string" ? DECODED.get(payload) : undefined;
101
+ if (cached)
102
+ return copyPrepared(cached);
103
+ const decoded = decodeUncachedPreparedBlobIntent(payload);
104
+ if (payload.length <= DECODED_CHARS) {
105
+ DECODED.set(payload, copyPrepared(decoded));
106
+ decodedChars += payload.length;
107
+ for (const key of DECODED.keys()) {
108
+ if (DECODED.size <= DECODED_ENTRIES && decodedChars <= DECODED_CHARS)
109
+ break;
110
+ DECODED.delete(key);
111
+ decodedChars -= key.length;
112
+ }
113
+ }
114
+ return decoded;
115
+ }
116
+ function decodeUncachedPreparedBlobIntent(payload) {
71
117
  if (typeof payload !== "string" || payload.length > BLOB_JOURNAL_BOUNDS.preparedBytes || new TextEncoder().encode(payload).byteLength > BLOB_JOURNAL_BOUNDS.preparedBytes)
72
118
  throw new TypeError("invalid prepared blob payload");
73
119
  const value = JSON.parse(payload);
@@ -100,7 +146,7 @@ export function blobReceipt(prepared, raw) {
100
146
  }
101
147
  export function captureBlobIntentRecord(value) {
102
148
  const row = captureJournalValue(value);
103
- if (!object(row) || !only(row, ["recordFamily", "requestId", "target", "prepared", "sequence", "attempts", "state", "updatedAt", "receipt", "notAppliedThrough", "deletionHold"]) || row.recordFamily !== "blob" || !Number.isSafeInteger(row.sequence) || row.sequence < 1 || !Number.isSafeInteger(row.attempts) || row.attempts < 0 || !timestamp(row.updatedAt) || !["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(row.state))
149
+ if (!object(row) || !only(row, ["recordFamily", "requestId", "target", "prepared", "sequence", "attempts", "state", "updatedAt", "receipt", "notAppliedThrough", "deletionHold", "notDispatched"]) || row.recordFamily !== "blob" || !Number.isSafeInteger(row.sequence) || row.sequence < 1 || !Number.isSafeInteger(row.attempts) || row.attempts < 0 || !timestamp(row.updatedAt) || !["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(row.state))
104
150
  throw new TypeError("invalid blob intent record");
105
151
  const prepared = decodePreparedBlobIntent(row.prepared);
106
152
  if (row.requestId !== prepared.identity.requestId || row.target !== prepared.intent.key)
@@ -113,8 +159,13 @@ export function captureBlobIntentRecord(value) {
113
159
  if (prefix === 0 || prepared.intent.operationId !== "blobs.delete.v1")
114
160
  throw new TypeError("blob hold requires its proven deletion prefix");
115
161
  }
116
- if (prefix > 0 && row.deletionHold === undefined)
117
- throw new TypeError("blob non-execution prefix requires hold diagnostics");
162
+ if (row.notDispatched !== undefined) {
163
+ captureBlobNotDispatched(row.notDispatched);
164
+ if (prefix === 0)
165
+ throw new TypeError("blob not-dispatched evidence requires its proven prefix");
166
+ }
167
+ if (prefix > 0 && row.deletionHold === undefined && row.notDispatched === undefined)
168
+ throw new TypeError("blob non-execution prefix requires typed evidence");
118
169
  const terminal = row.state === "acknowledged" || row.state === "conflict" || row.state === "refused";
119
170
  if (terminal !== (row.receipt !== undefined))
120
171
  throw new TypeError("blob terminal state requires its receipt");
@@ -165,4 +216,325 @@ export function captureBlobMutationOptions(options) {
165
216
  throw new JournalGuardConflict(captured.guard.key);
166
217
  return captured;
167
218
  }
219
+ // ── the one transition owner ─────────────────────────────────────────────────────────────
220
+ // Every blob journal decides admission, claims, settlement, non-execution proof, retirement and
221
+ // guarded metadata through these pure functions; a backend only persists what they return.
222
+ /** Admission refused: an unsettled intent on the same bundle and key was not named as a premise. */
223
+ export class BlobAdmissionConflict extends JournalGuardConflict {
224
+ unsettled;
225
+ constructor(key, unsettled) {
226
+ super(key);
227
+ this.message = `'${key}' already has an unsettled blob intent (${unsettled.join(", ") || "premise mismatch"}) in this bundle; name it as a premise to admit beside it`;
228
+ this.unsettled = Object.freeze([...unsettled]);
229
+ }
230
+ }
231
+ /** The guard must equal the complete same-key intent set and every named meta premise. */
232
+ export function assertBlobGuardMatches(view, guard) {
233
+ assertBlobJournalGuard(guard, { key: guard.key, intents: [...view.blobIntentsFor(guard.key)], meta: guard.meta.map(row => ({ key: row.key, expected: view.meta(row.key) })) });
234
+ }
235
+ /** The top-level folders that hold Superbee's own records, never ordinary files: View and page entries and registries, conventions, recipes and references. */
236
+ const NON_ORDINARY_ROOTS = Object.freeze([PAGE_ENTRY_PREFIX, PAGE_REGISTRY_PREFIX, VIEW_ENTRY_PREFIX, VIEW_REGISTRY_PREFIX, "conventions/", "recipes/", "references/"].map(prefix => prefix.slice(0, -1)));
237
+ /**
238
+ * Whether `key` names an ordinary file a blob write may change: a safe blob key that is not a
239
+ * reserved file and does not sit under one of Superbee's own record folders (compared
240
+ * case-insensitively, under compatibility folding, as a case-insensitive file system would).
241
+ * The one key policy for every blob writer: the hosted client and the CLI's checkout sync.
242
+ */
243
+ export function isOrdinaryBlobKey(key) {
244
+ if (typeof key !== "string")
245
+ return false;
246
+ try {
247
+ assertBlobKey(key);
248
+ }
249
+ catch {
250
+ return false;
251
+ }
252
+ if (isReservedFile(key))
253
+ return false;
254
+ const root = key.split("/")[0].normalize("NFKD").toLowerCase().toUpperCase().toLowerCase();
255
+ return !NON_ORDINARY_ROOTS.includes(root);
256
+ }
257
+ export function checkBlobAdmission(input) {
258
+ const refuse = (reason, message) => ({ ok: false, code: "invalid_input", reason, message });
259
+ if (!isSafeBlobKey(input.key))
260
+ return refuse("unsafe_key", "the blob key is not a safe ordinary-file key");
261
+ if (!isOrdinaryBlobKey(input.key))
262
+ return refuse("protected_key", "the blob key names a reserved file or a folder of Superbee's own records (views, pages, conventions, recipes, references), which blob writes never change");
263
+ const deletion = input.operation === "delete";
264
+ if (!deletion && !isBlobContentType(input.contentType))
265
+ return refuse("invalid_content_type", "the blob content type is not a valid MIME value");
266
+ if (input.operation !== "create" && !isBlobContentType(input.expectedContentType))
267
+ return refuse("invalid_expected_content_type", "replace and delete pin the expected content type");
268
+ if (deletion)
269
+ return input.byteLength === undefined ? { ok: true } : refuse("bytes_with_delete", "a blob delete carries no bytes");
270
+ if (!Number.isSafeInteger(input.byteLength) || input.byteLength < 0)
271
+ return refuse("missing_bytes", "a blob create or replace carries bytes");
272
+ const advertised = input.maximumBytes;
273
+ if (advertised !== undefined && advertised !== null && (!Number.isSafeInteger(advertised) || advertised < 1))
274
+ return refuse("invalid_bound", "the advertised blob write bound is not a positive integer");
275
+ const bound = Math.min(BLOB_JOURNAL_BOUNDS.rawBytes, advertised ?? BLOB_JOURNAL_BOUNDS.rawBytes);
276
+ if (input.byteLength > bound)
277
+ return refuse("too_large", `the blob is ${input.byteLength} bytes; the write bound is ${bound}`);
278
+ return { ok: true };
279
+ }
280
+ /** One unsettled intent per (bundle, key): every receipt-less same-bundle intent on the key must be
281
+ * named, exactly, in `unsettled`. Other bundles on the same key never block. */
282
+ export function assertBlobSameKeyAdmission(existing, prepared, unsettled = []) {
283
+ const key = prepared.intent.key;
284
+ const blocking = existing.filter(row => row.target === key && row.receipt === undefined && decodePreparedBlobIntent(row.prepared).scope.bundleId === prepared.scope.bundleId);
285
+ const named = new Set(unsettled.map(row => row.requestId));
286
+ if (named.size !== unsettled.length || unsettled.length !== blocking.length || !blocking.every(row => unsettled.some(premise => equalJournalValue(premise, row))))
287
+ throw new BlobAdmissionConflict(key, blocking.map(row => row.requestId));
288
+ }
289
+ export function captureBlobAdmission(prepared, options) {
290
+ const decoded = decodePreparedBlobIntent(prepared);
291
+ const { unsettled, ...rest } = object(options) ? options : {};
292
+ const captured = captureBlobMutationOptions((object(options) ? rest : options));
293
+ if (captured.guard.key !== decoded.intent.key)
294
+ throw new JournalGuardConflict(decoded.intent.key);
295
+ let premise;
296
+ if (unsettled !== undefined) {
297
+ const rows = captureJournalValue(unsettled);
298
+ if (!Array.isArray(rows))
299
+ throw new JournalGuardConflict(decoded.intent.key);
300
+ premise = rows.map(row => captureBlobIntentRecord(row));
301
+ }
302
+ return { prepared, decoded, options: captured, ...(premise === undefined ? {} : { unsettled: premise }) };
303
+ }
304
+ export function decideBlobAdmission(view, admission, now) {
305
+ const { decoded, prepared, options: { guard, meta = [], removeMeta = [] } } = admission;
306
+ assertBlobGuardMatches(view, guard);
307
+ if (view.intentState(decoded.identity.requestId) !== null)
308
+ throw new JournalSnapshotConflict(guard.key);
309
+ assertBlobSameKeyAdmission(view.blobIntentsFor(guard.key), decoded, admission.unsettled);
310
+ const sequence = view.sequence + 1;
311
+ if (!Number.isSafeInteger(sequence))
312
+ throw new RangeError("journal sequence exhausted");
313
+ const record = captureBlobIntentRecord({ recordFamily: "blob", requestId: decoded.identity.requestId, target: decoded.intent.key, prepared, sequence, attempts: 0, state: "pending", updatedAt: now });
314
+ return { result: record, sequence, intents: [{ requestId: record.requestId, value: record }], meta, removeMeta };
315
+ }
316
+ const PATCH_KEYS = ["state", "attempts", "receipt", "notAppliedThrough", "deletionHold", "notDispatched"];
317
+ export function captureBlobUpdate(requestId, expectedState, patch, options) {
318
+ const captured = captureJournalValue(patch);
319
+ const mutation = captureBlobMutationOptions(options);
320
+ // An undefined-valued key would merge into the record as a present key; a patch names only values.
321
+ if (!captured || typeof captured !== "object" || Array.isArray(captured) || Object.entries(captured).some(([key, value]) => !PATCH_KEYS.includes(key) || value === undefined))
322
+ throw new JournalGuardConflict(mutation.guard.key);
323
+ return { requestId, expectedState, patch: captured, options: mutation };
324
+ }
325
+ /**
326
+ * The single claim/settle/non-execution rule. A claim consumes exactly one eligibility (`pending` or
327
+ * `unknown`, every earlier attempt proven not applied) before any wire operation. Proof of
328
+ * non-execution extends the prefix by exactly the claimed attempt and returns the record to
329
+ * `pending`: a deletion hold from `in_flight` or `unknown`, not-dispatched only from an `in_flight`
330
+ * claim this journal handle made at exactly the current attempt (`claimedHere`).
331
+ * A receipt freezes the record. Anything else may not touch the counters or the evidence.
332
+ */
333
+ export function nextBlobIntentRecord(current, update, guardKey, now, options = {}) {
334
+ const { requestId, expectedState, patch } = update;
335
+ const { checkRecord, claimedHere = false } = options;
336
+ if (!current || current.state !== expectedState)
337
+ throw new IntentStateConflict(requestId, expectedState, current?.state ?? null);
338
+ if (current.target !== guardKey)
339
+ throw new JournalGuardConflict(guardKey);
340
+ const next = captureBlobIntentRecord({ ...current, ...patch, updatedAt: now });
341
+ checkRecord?.(next);
342
+ const beforePrefix = current.notAppliedThrough ?? 0, afterPrefix = next.notAppliedThrough ?? 0;
343
+ const sameHold = equalJournalValue(current.deletionHold, next.deletionHold);
344
+ const sameNotDispatched = equalJournalValue(current.notDispatched, next.notDispatched);
345
+ const refuse = () => new JournalGuardConflict(guardKey);
346
+ if (current.receipt && (next.attempts !== current.attempts || next.state !== current.state || !equalJournalValue(current.receipt, next.receipt) || afterPrefix !== beforePrefix || !sameHold || !sameNotDispatched))
347
+ throw refuse();
348
+ if (next.attempts !== current.attempts) {
349
+ if (current.receipt || !["pending", "unknown"].includes(current.state) || next.state !== "in_flight" || next.attempts !== current.attempts + 1 || beforePrefix !== current.attempts || afterPrefix !== beforePrefix || !sameHold || !sameNotDispatched)
350
+ throw refuse();
351
+ }
352
+ else if (afterPrefix !== beforePrefix) {
353
+ // Typed evidence belongs to this exact claimed count and must extend the complete prefix.
354
+ const held = patch.deletionHold !== undefined, notDispatched = patch.notDispatched !== undefined;
355
+ if (current.receipt || next.state !== "pending" || patch.attempts !== current.attempts || beforePrefix !== current.attempts - 1 || afterPrefix !== current.attempts || next.receipt !== undefined || held === notDispatched)
356
+ throw refuse();
357
+ if (held ? !["in_flight", "unknown"].includes(current.state) : current.state !== "in_flight" || !sameHold || !claimedHere)
358
+ throw refuse();
359
+ }
360
+ else if (!sameHold || !sameNotDispatched || patch.state === "in_flight")
361
+ throw refuse();
362
+ return next;
363
+ }
364
+ export function decideBlobUpdate(view, update, now, checkRecord) {
365
+ const { guard, meta = [], removeMeta = [] } = update.options;
366
+ assertBlobGuardMatches(view, guard);
367
+ const current = view.blobIntent(update.requestId);
368
+ if (!current && view.intentState(update.requestId) !== null)
369
+ throw new IntentStateConflict(update.requestId, update.expectedState, view.intentState(update.requestId));
370
+ const claimedHere = current !== undefined && view.claimedInThisSession(update.requestId, current.attempts);
371
+ const next = nextBlobIntentRecord(current, update, guard.key, now, { ...(checkRecord ? { checkRecord } : {}), claimedHere });
372
+ const claimed = next.attempts !== current.attempts ? next.attempts : next.state !== "in_flight" ? null : undefined;
373
+ return { result: next, intents: [{ requestId: update.requestId, value: next }], meta, removeMeta, ...(claimed === undefined ? {} : { session: { requestId: update.requestId, claimed } }) };
374
+ }
375
+ /** The patch that records typed non-execution of the latest claimed attempt. `not_dispatched` is
376
+ * only for this invocation's own claim, before the carrier is invoked or refused by it as `denied`;
377
+ * the journal refuses it for a claim it did not make in this session. Any other carrier or
378
+ * transport failure is `unknown`, never this. */
379
+ export function blobNonExecutionPatch(current, reason) {
380
+ const { kind, ...evidence } = reason;
381
+ const base = { state: "pending", attempts: current.attempts, notAppliedThrough: current.attempts };
382
+ if (kind === "deletion_hold")
383
+ return { ...base, deletionHold: captureBlobDeletionHold(evidence) };
384
+ if (kind === "not_dispatched")
385
+ return { ...base, notDispatched: captureBlobNotDispatched(evidence) };
386
+ throw new TypeError("unknown blob non-execution kind");
387
+ }
388
+ /** Fresh submission is allowed only while every earlier attempt is proven not applied. */
389
+ export function blobIntentResendable(row) {
390
+ return row.receipt === undefined && (row.state === "pending" || row.state === "unknown") && (row.notAppliedThrough ?? 0) === row.attempts;
391
+ }
392
+ export function captureBlobRetirement(key, requestIds, options) {
393
+ assertBlobKey(key);
394
+ const ids = captureJournalValue([...requestIds]);
395
+ const captured = captureBlobMutationOptions(options);
396
+ if (captured.guard.key !== key || ids.length === 0 || ids.some(id => typeof id !== "string") || new Set(ids).size !== ids.length)
397
+ throw new JournalGuardConflict(key);
398
+ return { key, requestIds: ids, options: captured };
399
+ }
400
+ /** Only terminal records with their receipt retire, and only together with their key's guard. */
401
+ export function decideBlobRetirement(view, retirement) {
402
+ const { key, requestIds, options: { guard, meta = [], removeMeta = [] } } = retirement;
403
+ assertBlobGuardMatches(view, guard);
404
+ for (const id of requestIds) {
405
+ const row = view.blobIntent(id);
406
+ if (!row || row.target !== key || !row.receipt || !["acknowledged", "refused", "conflict"].includes(row.state))
407
+ throw new JournalGuardConflict(key);
408
+ }
409
+ return { result: undefined, intents: requestIds.map(requestId => ({ requestId, value: null })), meta, removeMeta };
410
+ }
411
+ export function captureBlobForget(requestId, options) {
412
+ const captured = captureBlobMutationOptions(options);
413
+ if (typeof requestId !== "string" || !isWriteRequestId(requestId))
414
+ throw new JournalGuardConflict(captured.guard.key);
415
+ return { requestId, options: captured };
416
+ }
417
+ /** Only an `unknown`, receipt-less intent whose latest attempt is not proven unapplied may be forgotten. */
418
+ export function decideBlobForget(view, forget) {
419
+ const { requestId, options: { guard, meta = [], removeMeta = [] } } = forget;
420
+ assertBlobGuardMatches(view, guard);
421
+ const row = view.blobIntent(requestId);
422
+ if (!row || row.state !== "unknown")
423
+ throw new IntentStateConflict(requestId, "unknown", row?.state ?? view.intentState(requestId));
424
+ if (row.target !== guard.key || row.receipt !== undefined || (row.notAppliedThrough ?? 0) >= row.attempts)
425
+ throw new JournalGuardConflict(guard.key);
426
+ return { result: undefined, intents: [{ requestId, value: null }], meta, removeMeta };
427
+ }
428
+ export function captureBlobMetaWrite(key, changes, options) {
429
+ assertBlobKey(key);
430
+ const captured = captureBlobMutationOptions({ ...captureJournalValue(changes), guard: options.guard });
431
+ if (captured.guard.key !== key)
432
+ throw new JournalGuardConflict(key);
433
+ return { key, options: captured };
434
+ }
435
+ export function decideBlobMetaWrite(view, write) {
436
+ assertBlobGuardMatches(view, write.options.guard);
437
+ return { result: undefined, intents: [], meta: write.options.meta ?? [], removeMeta: write.options.removeMeta ?? [] };
438
+ }
439
+ /** A same-key read and the complete guard a later mutation must present. Values are copies. */
440
+ export function readBlobJournal(view, key, options = {}) {
441
+ assertBlobKey(key);
442
+ const intents = [...view.blobIntentsFor(key)].sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row));
443
+ const meta = new Map();
444
+ const premises = [];
445
+ for (const name of new Set(options.meta ?? [])) {
446
+ if (typeof name !== "string")
447
+ throw new JournalGuardConflict(key);
448
+ const actual = view.meta(name);
449
+ if (actual.present) {
450
+ const value = structuredClone(actual.value);
451
+ meta.set(name, value);
452
+ premises.push({ key: name, expected: { present: true, value: structuredClone(value) } });
453
+ }
454
+ else
455
+ premises.push({ key: name, expected: { present: false } });
456
+ }
457
+ return { key, intents, meta, guard: { key, intents: structuredClone(intents), meta: premises } };
458
+ }
459
+ /**
460
+ * A {@link BlobJournaledBackend} held in memory, for a browser or a test: the same pure transition
461
+ * functions as the file journal, nothing durable. Each verb decides and applies with no await in
462
+ * between, so verbs never interleave. A terminal receipt is bounded by its JSON size here, where
463
+ * the file journal measures its own tagged encoding. `state` restores exported rows as a new
464
+ * handle would find them: an `in_flight` claim among them is not this handle's.
465
+ */
466
+ export function createMemoryBlobJournal(state) {
467
+ const intents = new Map();
468
+ const meta = new Map();
469
+ const claims = new Map();
470
+ let sequence = 0;
471
+ if (state !== undefined) {
472
+ const restored = captureJournalValue(state);
473
+ if (!object(restored) || !only(restored, ["intents", "meta", "sequence"]) || !Array.isArray(restored.intents) || !Array.isArray(restored.meta) || !Number.isSafeInteger(restored.sequence) || restored.sequence < 0)
474
+ throw new TypeError("invalid memory blob journal state");
475
+ for (const row of restored.intents) {
476
+ const captured = captureBlobIntentRecord(row);
477
+ if (intents.has(captured.requestId) || captured.sequence > restored.sequence)
478
+ throw new TypeError("invalid memory blob journal state");
479
+ intents.set(captured.requestId, captured);
480
+ }
481
+ for (const entry of restored.meta) {
482
+ if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== "string" || meta.has(entry[0]))
483
+ throw new TypeError("invalid memory blob journal state");
484
+ meta.set(entry[0], entry[1]);
485
+ }
486
+ sequence = restored.sequence;
487
+ }
488
+ const view = {
489
+ blobIntentsFor: key => [...intents.values()].filter(row => row.target === key),
490
+ blobIntent: id => intents.get(id),
491
+ intentState: id => intents.get(id)?.state ?? null,
492
+ meta: key => meta.has(key) ? { present: true, value: meta.get(key) } : { present: false },
493
+ get sequence() { return sequence; },
494
+ claimedInThisSession: (id, attempts) => claims.get(id) === attempts,
495
+ };
496
+ const apply = (decision) => {
497
+ for (const { requestId, value } of decision.intents) {
498
+ if (value)
499
+ intents.set(requestId, structuredClone(value));
500
+ else
501
+ intents.delete(requestId);
502
+ }
503
+ if (decision.sequence !== undefined)
504
+ sequence = decision.sequence;
505
+ for (const row of decision.meta)
506
+ meta.set(row.key, structuredClone(row.value));
507
+ for (const key of decision.removeMeta)
508
+ meta.delete(key);
509
+ if (decision.session) {
510
+ if (decision.session.claimed === null)
511
+ claims.delete(decision.session.requestId);
512
+ else
513
+ claims.set(decision.session.requestId, decision.session.claimed);
514
+ }
515
+ for (const { requestId, value } of decision.intents)
516
+ if (value === null)
517
+ claims.delete(requestId);
518
+ return decision.result;
519
+ };
520
+ const checkReceipt = (row) => {
521
+ if (row.receipt !== undefined && new TextEncoder().encode(JSON.stringify(row.receipt)).byteLength > BLOB_JOURNAL_BOUNDS.terminalReceiptBytes)
522
+ throw new RangeError("a blob terminal receipt exceeds its byte bound");
523
+ };
524
+ return {
525
+ async readBlobWithJournal(key, options = {}) { return readBlobJournal(view, key, options); },
526
+ async writeBlobMeta(key, changes, options) { apply(decideBlobMetaWrite(view, captureBlobMetaWrite(key, changes, options))); },
527
+ async admitPreparedBlob(prepared, options) { return structuredClone(apply(decideBlobAdmission(view, captureBlobAdmission(prepared, options), new Date().toISOString()))); },
528
+ async listBlobIntents(state) {
529
+ const wanted = state === undefined ? null : new Set(typeof state === "string" ? [state] : state);
530
+ return [...intents.values()].filter(row => !wanted || wanted.has(row.state)).sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row));
531
+ },
532
+ async readBlobIntent(requestId) { const row = intents.get(requestId); return row && structuredClone(row); },
533
+ async updateBlobIntent(requestId, expectedState, patch, options) { return structuredClone(apply(decideBlobUpdate(view, captureBlobUpdate(requestId, expectedState, patch, options), new Date().toISOString(), checkReceipt))); },
534
+ async retireBlobIntents(key, requestIds, options) { apply(decideBlobRetirement(view, captureBlobRetirement(key, requestIds, options))); },
535
+ async forgetBlobIntent(requestId, options) { apply(decideBlobForget(view, captureBlobForget(requestId, options))); },
536
+ async readMeta(key) { return meta.has(key) ? structuredClone(meta.get(key)) : undefined; },
537
+ exportState: () => ({ intents: [...intents.values()].sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row)), meta: [...meta].map(([key, value]) => [key, structuredClone(value)]), sequence }),
538
+ };
539
+ }
168
540
  //# sourceMappingURL=blob-journal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blob-journal.js","sourceRoot":"","sources":["../src/blob-journal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blob-journal.js","sourceRoot":"","sources":["../src/blob-journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { InvalidInputError } from "./errors.js";
2
+ import type { KindConvention } from "./kinds.js";
3
+ import type { Bundle, Link, OkfDocument } from "./types.js";
4
+ export declare const BODY_PREVIEW_LIMIT = 1000;
5
+ export declare const BODY_PREVIEW_TRUNCATION_MARKER = "[superbee:body-preview-truncated]";
6
+ export declare const BODY_PREVIEW_TRUNCATION_SIGNATURE: RegExp;
7
+ export declare const BODY_PREVIEW_KEY = "body_preview";
8
+ export declare const BODY_PREVIEW_RESERVED_KEYS: readonly string[];
9
+ export declare function attachBodyPreview(rec: Record<string, unknown>, body: string, fullBodyHelp: readonly string[]): void;
10
+ export type BodyPreviewFinding = {
11
+ reason: "preview_marker";
12
+ marker: string;
13
+ notice: string;
14
+ } | {
15
+ reason: "stored_body_preview";
16
+ preview_limit: number;
17
+ supplied_body_chars: number;
18
+ stored_body_chars: number;
19
+ };
20
+ /** Unchanged serialized bodies and stored notices carried by a preserving append are safe. */
21
+ export declare function bodyPreviewFinding(existing: OkfDocument, nextBody: string): BodyPreviewFinding | undefined;
22
+ export type BodyReplaceFinding = BodyPreviewFinding | {
23
+ reason: "dropped_links";
24
+ dropped_links: Link[];
25
+ };
26
+ export declare class BodyReplaceError extends InvalidInputError {
27
+ readonly id: string;
28
+ readonly finding: BodyReplaceFinding;
29
+ readonly storedCarriesNotice: boolean;
30
+ constructor(id: string, finding: BodyReplaceFinding, storedCarriesNotice?: boolean);
31
+ }
32
+ export interface BodyReplacePosture {
33
+ acceptTruncatedBody?: boolean;
34
+ replaceLinks?: boolean;
35
+ }
36
+ /** Exact pairs consume first; target mode then admits retext while preserving occurrence counts.
37
+ * Exact-edge mode is available to authorities that protect relationship text as well. */
38
+ export declare function computeDroppedLinks(existingLinks: readonly Link[], nextLinks: readonly Link[], mode?: "target" | "exact-edge"): Link[];
39
+ export declare function droppedLinks(_bundle: Bundle, existing: OkfDocument, nextBody: string): Link[];
40
+ export declare function guardTruncatedBodyPreview(existing: OkfDocument, nextBody: string, acceptTruncatedBody: boolean): void;
41
+ export declare function guardDroppedLinks(bundle: Bundle, existing: OkfDocument, nextBody: string, replaceLinks: boolean): void;
42
+ export declare function guardBodyReplace(bundle: Bundle, existing: OkfDocument, nextBody: string, posture?: BodyReplacePosture): void;
43
+ /** A scalar patch cannot replace a declared list, even when the stored field is absent. */
44
+ export declare class TypedListPatchError extends InvalidInputError {
45
+ readonly field: string;
46
+ readonly fieldType: "string-list" | "https-url-list";
47
+ constructor(field: string, fieldType: "string-list" | "https-url-list");
48
+ }
49
+ export declare function assertTypedListPatch(kind: KindConvention, storageField: string): void;
50
+ //# sourceMappingURL=body-replace-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-replace-guards.d.ts","sourceRoot":"","sources":["../src/body-replace-guards.ts"],"names":[],"mappings":"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"}