@superbee/core 0.2.0-pre.4 → 0.2.0-pre.41

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 (628) hide show
  1. package/README.md +1255 -0
  2. package/dist/artifact-contract.d.ts +90 -0
  3. package/dist/artifact-contract.d.ts.map +1 -0
  4. package/dist/artifact-contract.js +205 -0
  5. package/dist/artifact-contract.js.map +1 -0
  6. package/dist/backend.d.ts +22 -2
  7. package/dist/backend.d.ts.map +1 -1
  8. package/dist/backend.js +153 -38
  9. package/dist/backend.js.map +1 -1
  10. package/dist/blob-contract.d.ts +82 -0
  11. package/dist/blob-contract.d.ts.map +1 -0
  12. package/dist/blob-contract.js +134 -0
  13. package/dist/blob-contract.js.map +1 -0
  14. package/dist/blob-journal.d.ts +303 -0
  15. package/dist/blob-journal.d.ts.map +1 -0
  16. package/dist/blob-journal.js +541 -0
  17. package/dist/blob-journal.js.map +1 -0
  18. package/dist/body-replace-guards.d.ts +52 -0
  19. package/dist/body-replace-guards.d.ts.map +1 -0
  20. package/dist/body-replace-guards.js +176 -0
  21. package/dist/body-replace-guards.js.map +1 -0
  22. package/dist/builtin-recipes/content.d.ts +93 -0
  23. package/dist/builtin-recipes/content.d.ts.map +1 -0
  24. package/dist/builtin-recipes/content.js +288 -0
  25. package/dist/builtin-recipes/content.js.map +1 -0
  26. package/dist/builtin-recipes.d.ts +10 -0
  27. package/dist/builtin-recipes.d.ts.map +1 -0
  28. package/dist/builtin-recipes.js +97 -0
  29. package/dist/builtin-recipes.js.map +1 -0
  30. package/dist/bundle-health/index.d.ts +14 -0
  31. package/dist/bundle-health/index.d.ts.map +1 -0
  32. package/dist/bundle-health/index.js +12 -0
  33. package/dist/bundle-health/index.js.map +1 -0
  34. package/dist/bundle-health/kind-findings.d.ts +44 -0
  35. package/dist/bundle-health/kind-findings.d.ts.map +1 -0
  36. package/dist/bundle-health/kind-findings.js +68 -0
  37. package/dist/bundle-health/kind-findings.js.map +1 -0
  38. package/dist/bundle-health/legacy-page.d.ts +39 -0
  39. package/dist/bundle-health/legacy-page.d.ts.map +1 -0
  40. package/dist/bundle-health/legacy-page.js +50 -0
  41. package/dist/bundle-health/legacy-page.js.map +1 -0
  42. package/dist/bundle-health/report.d.ts +207 -0
  43. package/dist/bundle-health/report.d.ts.map +1 -0
  44. package/dist/bundle-health/report.js +454 -0
  45. package/dist/bundle-health/report.js.map +1 -0
  46. package/dist/bundle-ops.d.ts +3 -2
  47. package/dist/bundle-ops.d.ts.map +1 -1
  48. package/dist/bundle-ops.js +4 -4
  49. package/dist/bundle-ops.js.map +1 -1
  50. package/dist/bundle.d.ts +3 -4
  51. package/dist/bundle.d.ts.map +1 -1
  52. package/dist/bundle.js +5 -14
  53. package/dist/bundle.js.map +1 -1
  54. package/dist/code-point-order.d.ts +8 -0
  55. package/dist/code-point-order.d.ts.map +1 -0
  56. package/dist/code-point-order.js +20 -0
  57. package/dist/code-point-order.js.map +1 -0
  58. package/dist/code-unit-order.d.ts +15 -0
  59. package/dist/code-unit-order.d.ts.map +1 -0
  60. package/dist/code-unit-order.js +17 -0
  61. package/dist/code-unit-order.js.map +1 -0
  62. package/dist/connector-request.d.ts +112 -0
  63. package/dist/connector-request.d.ts.map +1 -0
  64. package/dist/connector-request.js +495 -0
  65. package/dist/connector-request.js.map +1 -0
  66. package/dist/connectors.d.ts +297 -0
  67. package/dist/connectors.d.ts.map +1 -0
  68. package/dist/connectors.js +1233 -0
  69. package/dist/connectors.js.map +1 -0
  70. package/dist/cross-bundle.d.ts +135 -0
  71. package/dist/cross-bundle.d.ts.map +1 -0
  72. package/dist/cross-bundle.js +191 -0
  73. package/dist/cross-bundle.js.map +1 -0
  74. package/dist/dependencies.d.ts +94 -0
  75. package/dist/dependencies.d.ts.map +1 -0
  76. package/dist/dependencies.js +180 -0
  77. package/dist/dependencies.js.map +1 -0
  78. package/dist/document-codec.d.ts +7 -2
  79. package/dist/document-codec.d.ts.map +1 -1
  80. package/dist/document-codec.js +8 -5
  81. package/dist/document-codec.js.map +1 -1
  82. package/dist/document-field-actions.d.ts +31 -1
  83. package/dist/document-field-actions.d.ts.map +1 -1
  84. package/dist/document-field-actions.js +137 -34
  85. package/dist/document-field-actions.js.map +1 -1
  86. package/dist/document-mutation.d.ts +37 -13
  87. package/dist/document-mutation.d.ts.map +1 -1
  88. package/dist/document-mutation.js +129 -60
  89. package/dist/document-mutation.js.map +1 -1
  90. package/dist/document-transfer.d.ts +208 -0
  91. package/dist/document-transfer.d.ts.map +1 -0
  92. package/dist/document-transfer.js +928 -0
  93. package/dist/document-transfer.js.map +1 -0
  94. package/dist/document-write-policy.d.ts.map +1 -1
  95. package/dist/document-write-policy.js +4 -2
  96. package/dist/document-write-policy.js.map +1 -1
  97. package/dist/domain-model.d.ts +73 -0
  98. package/dist/domain-model.d.ts.map +1 -0
  99. package/dist/domain-model.js +169 -0
  100. package/dist/domain-model.js.map +1 -0
  101. package/dist/engine.d.ts +21 -9
  102. package/dist/engine.d.ts.map +1 -1
  103. package/dist/engine.js +72 -14
  104. package/dist/engine.js.map +1 -1
  105. package/dist/file-journaled-backend-internal.d.ts +21 -0
  106. package/dist/file-journaled-backend-internal.d.ts.map +1 -0
  107. package/dist/file-journaled-backend-internal.js +12 -0
  108. package/dist/file-journaled-backend-internal.js.map +1 -0
  109. package/dist/file-journaled-backend.d.ts +160 -0
  110. package/dist/file-journaled-backend.d.ts.map +1 -0
  111. package/dist/file-journaled-backend.js +1345 -0
  112. package/dist/file-journaled-backend.js.map +1 -0
  113. package/dist/filesystem-host.d.ts +15 -0
  114. package/dist/filesystem-host.d.ts.map +1 -0
  115. package/dist/filesystem-host.js +20 -0
  116. package/dist/filesystem-host.js.map +1 -0
  117. package/dist/filesystem-identity.d.ts +97 -21
  118. package/dist/filesystem-identity.d.ts.map +1 -1
  119. package/dist/filesystem-identity.js +398 -119
  120. package/dist/filesystem-identity.js.map +1 -1
  121. package/dist/filesystem-lock.d.ts +16 -3
  122. package/dist/filesystem-lock.d.ts.map +1 -1
  123. package/dist/filesystem-lock.js +323 -77
  124. package/dist/filesystem-lock.js.map +1 -1
  125. package/dist/filesystem-push-role.d.ts +77 -0
  126. package/dist/filesystem-push-role.d.ts.map +1 -0
  127. package/dist/filesystem-push-role.js +165 -0
  128. package/dist/filesystem-push-role.js.map +1 -0
  129. package/dist/filesystem.d.ts +17 -0
  130. package/dist/filesystem.d.ts.map +1 -0
  131. package/dist/filesystem.js +18 -0
  132. package/dist/filesystem.js.map +1 -0
  133. package/dist/frontmatter.d.ts +8 -6
  134. package/dist/frontmatter.d.ts.map +1 -1
  135. package/dist/frontmatter.js +5 -4
  136. package/dist/frontmatter.js.map +1 -1
  137. package/dist/governed-body-write.d.ts +8 -1
  138. package/dist/governed-body-write.d.ts.map +1 -1
  139. package/dist/governed-body-write.js +9 -2
  140. package/dist/governed-body-write.js.map +1 -1
  141. package/dist/heads-digest.d.ts.map +1 -1
  142. package/dist/heads-digest.js +2 -1
  143. package/dist/heads-digest.js.map +1 -1
  144. package/dist/host-policy-snapshot.d.ts +9 -0
  145. package/dist/host-policy-snapshot.d.ts.map +1 -0
  146. package/dist/host-policy-snapshot.js +33 -0
  147. package/dist/host-policy-snapshot.js.map +1 -0
  148. package/dist/host-text.d.ts +31 -0
  149. package/dist/host-text.d.ts.map +1 -0
  150. package/dist/host-text.js +77 -0
  151. package/dist/host-text.js.map +1 -0
  152. package/dist/hosted-client/binding.d.ts +7 -0
  153. package/dist/hosted-client/binding.d.ts.map +1 -0
  154. package/dist/hosted-client/binding.js +10 -0
  155. package/dist/hosted-client/binding.js.map +1 -0
  156. package/dist/hosted-client/blob-delivery.d.ts +68 -0
  157. package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
  158. package/dist/hosted-client/blob-delivery.js +170 -0
  159. package/dist/hosted-client/blob-delivery.js.map +1 -0
  160. package/dist/hosted-client/blob-write.d.ts +387 -0
  161. package/dist/hosted-client/blob-write.d.ts.map +1 -0
  162. package/dist/hosted-client/blob-write.js +770 -0
  163. package/dist/hosted-client/blob-write.js.map +1 -0
  164. package/dist/hosted-client/bundle-listing.d.ts +46 -0
  165. package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
  166. package/dist/hosted-client/bundle-listing.js +36 -0
  167. package/dist/hosted-client/bundle-listing.js.map +1 -0
  168. package/dist/hosted-client/client.d.ts +219 -0
  169. package/dist/hosted-client/client.d.ts.map +1 -0
  170. package/dist/hosted-client/client.js +309 -0
  171. package/dist/hosted-client/client.js.map +1 -0
  172. package/dist/hosted-client/directory.d.ts +46 -0
  173. package/dist/hosted-client/directory.d.ts.map +1 -0
  174. package/dist/hosted-client/directory.js +74 -0
  175. package/dist/hosted-client/directory.js.map +1 -0
  176. package/dist/hosted-client/errors.d.ts +26 -0
  177. package/dist/hosted-client/errors.d.ts.map +1 -0
  178. package/dist/hosted-client/errors.js +35 -0
  179. package/dist/hosted-client/errors.js.map +1 -0
  180. package/dist/hosted-client/inbox.d.ts +320 -0
  181. package/dist/hosted-client/inbox.d.ts.map +1 -0
  182. package/dist/hosted-client/inbox.js +379 -0
  183. package/dist/hosted-client/inbox.js.map +1 -0
  184. package/dist/hosted-client/index.d.ts +30 -0
  185. package/dist/hosted-client/index.d.ts.map +1 -0
  186. package/dist/hosted-client/index.js +32 -0
  187. package/dist/hosted-client/index.js.map +1 -0
  188. package/dist/hosted-client/journal.d.ts +103 -0
  189. package/dist/hosted-client/journal.d.ts.map +1 -0
  190. package/dist/hosted-client/journal.js +464 -0
  191. package/dist/hosted-client/journal.js.map +1 -0
  192. package/dist/hosted-client/node.d.ts +74 -0
  193. package/dist/hosted-client/node.d.ts.map +1 -0
  194. package/dist/hosted-client/node.js +219 -0
  195. package/dist/hosted-client/node.js.map +1 -0
  196. package/dist/hosted-client/reference.d.ts +12 -0
  197. package/dist/hosted-client/reference.d.ts.map +1 -0
  198. package/dist/hosted-client/reference.js +29 -0
  199. package/dist/hosted-client/reference.js.map +1 -0
  200. package/dist/hosted-client/write.d.ts +217 -0
  201. package/dist/hosted-client/write.d.ts.map +1 -0
  202. package/dist/hosted-client/write.js +418 -0
  203. package/dist/hosted-client/write.js.map +1 -0
  204. package/dist/hosted-transport/answer-rows.d.ts +243 -0
  205. package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
  206. package/dist/hosted-transport/answer-rows.js +457 -0
  207. package/dist/hosted-transport/answer-rows.js.map +1 -0
  208. package/dist/hosted-transport/blob-reads.d.ts +35 -0
  209. package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
  210. package/dist/hosted-transport/blob-reads.js +179 -0
  211. package/dist/hosted-transport/blob-reads.js.map +1 -0
  212. package/dist/hosted-transport/blob-write.d.ts +34 -0
  213. package/dist/hosted-transport/blob-write.d.ts.map +1 -0
  214. package/dist/hosted-transport/blob-write.js +115 -0
  215. package/dist/hosted-transport/blob-write.js.map +1 -0
  216. package/dist/hosted-transport/carrier.d.ts +151 -0
  217. package/dist/hosted-transport/carrier.d.ts.map +1 -0
  218. package/dist/hosted-transport/carrier.js +260 -0
  219. package/dist/hosted-transport/carrier.js.map +1 -0
  220. package/dist/hosted-transport/document-backend.d.ts +74 -0
  221. package/dist/hosted-transport/document-backend.d.ts.map +1 -0
  222. package/dist/hosted-transport/document-backend.js +160 -0
  223. package/dist/hosted-transport/document-backend.js.map +1 -0
  224. package/dist/hosted-transport/history-pages.d.ts +55 -0
  225. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  226. package/dist/hosted-transport/history-pages.js +69 -0
  227. package/dist/hosted-transport/history-pages.js.map +1 -0
  228. package/dist/hosted-transport/index.d.ts +19 -0
  229. package/dist/hosted-transport/index.d.ts.map +1 -0
  230. package/dist/hosted-transport/index.js +19 -0
  231. package/dist/hosted-transport/index.js.map +1 -0
  232. package/dist/hosted-transport/operations.d.ts +85 -0
  233. package/dist/hosted-transport/operations.d.ts.map +1 -0
  234. package/dist/hosted-transport/operations.js +128 -0
  235. package/dist/hosted-transport/operations.js.map +1 -0
  236. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  237. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  238. package/dist/hosted-transport/paged-reads.js +238 -0
  239. package/dist/hosted-transport/paged-reads.js.map +1 -0
  240. package/dist/hosted-transport/read-adapter.d.ts +256 -0
  241. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  242. package/dist/hosted-transport/read-adapter.js +568 -0
  243. package/dist/hosted-transport/read-adapter.js.map +1 -0
  244. package/dist/hosted-transport/root-write.d.ts +114 -0
  245. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  246. package/dist/hosted-transport/root-write.js +171 -0
  247. package/dist/hosted-transport/root-write.js.map +1 -0
  248. package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
  249. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  250. package/dist/hosted-transport/whole-document-transport.js +447 -0
  251. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  252. package/dist/identity-fold.d.ts +18 -0
  253. package/dist/identity-fold.d.ts.map +1 -0
  254. package/dist/identity-fold.js +22 -0
  255. package/dist/identity-fold.js.map +1 -0
  256. package/dist/index.d.ts +41 -11
  257. package/dist/index.d.ts.map +1 -1
  258. package/dist/index.js +31 -9
  259. package/dist/index.js.map +1 -1
  260. package/dist/indexeddb-backend.d.ts +25 -33
  261. package/dist/indexeddb-backend.d.ts.map +1 -1
  262. package/dist/indexeddb-backend.js +264 -8
  263. package/dist/indexeddb-backend.js.map +1 -1
  264. package/dist/inventory-guard.d.ts +58 -0
  265. package/dist/inventory-guard.d.ts.map +1 -0
  266. package/dist/inventory-guard.js +169 -0
  267. package/dist/inventory-guard.js.map +1 -0
  268. package/dist/journaled-backend.d.ts +149 -9
  269. package/dist/journaled-backend.d.ts.map +1 -1
  270. package/dist/journaled-backend.js +64 -58
  271. package/dist/journaled-backend.js.map +1 -1
  272. package/dist/kind-authoring.d.ts +170 -0
  273. package/dist/kind-authoring.d.ts.map +1 -0
  274. package/dist/kind-authoring.js +452 -0
  275. package/dist/kind-authoring.js.map +1 -0
  276. package/dist/kind-changes.d.ts +45 -0
  277. package/dist/kind-changes.d.ts.map +1 -0
  278. package/dist/kind-changes.js +96 -0
  279. package/dist/kind-changes.js.map +1 -0
  280. package/dist/kind-conformance-error.d.ts +15 -0
  281. package/dist/kind-conformance-error.d.ts.map +1 -0
  282. package/dist/kind-conformance-error.js +20 -0
  283. package/dist/kind-conformance-error.js.map +1 -0
  284. package/dist/kind-coverage.d.ts +99 -0
  285. package/dist/kind-coverage.d.ts.map +1 -0
  286. package/dist/kind-coverage.js +186 -0
  287. package/dist/kind-coverage.js.map +1 -0
  288. package/dist/kind-deprecation.d.ts +32 -0
  289. package/dist/kind-deprecation.d.ts.map +1 -0
  290. package/dist/kind-deprecation.js +141 -0
  291. package/dist/kind-deprecation.js.map +1 -0
  292. package/dist/kind-field-mutation.d.ts +4 -0
  293. package/dist/kind-field-mutation.d.ts.map +1 -1
  294. package/dist/kind-field-mutation.js +28 -3
  295. package/dist/kind-field-mutation.js.map +1 -1
  296. package/dist/kinds-load.js +4 -4
  297. package/dist/kinds-load.js.map +1 -1
  298. package/dist/kinds.d.ts +111 -2
  299. package/dist/kinds.d.ts.map +1 -1
  300. package/dist/kinds.js +386 -20
  301. package/dist/kinds.js.map +1 -1
  302. package/dist/link-emit.d.ts +29 -0
  303. package/dist/link-emit.d.ts.map +1 -0
  304. package/dist/link-emit.js +39 -0
  305. package/dist/link-emit.js.map +1 -0
  306. package/dist/link-types.d.ts +27 -0
  307. package/dist/link-types.d.ts.map +1 -0
  308. package/dist/link-types.js +60 -0
  309. package/dist/link-types.js.map +1 -0
  310. package/dist/links.d.ts +52 -3
  311. package/dist/links.d.ts.map +1 -1
  312. package/dist/links.js +259 -18
  313. package/dist/links.js.map +1 -1
  314. package/dist/managed-document-metadata.d.ts +2 -0
  315. package/dist/managed-document-metadata.d.ts.map +1 -0
  316. package/dist/managed-document-metadata.js +9 -0
  317. package/dist/managed-document-metadata.js.map +1 -0
  318. package/dist/memory-backend.d.ts +3 -0
  319. package/dist/memory-backend.d.ts.map +1 -1
  320. package/dist/memory-backend.js +44 -2
  321. package/dist/memory-backend.js.map +1 -1
  322. package/dist/okf-actor.d.ts +1 -0
  323. package/dist/okf-actor.d.ts.map +1 -1
  324. package/dist/okf-actor.js +1 -0
  325. package/dist/okf-actor.js.map +1 -1
  326. package/dist/okf-authoring.d.ts +4 -0
  327. package/dist/okf-authoring.d.ts.map +1 -0
  328. package/dist/okf-authoring.js +12 -0
  329. package/dist/okf-authoring.js.map +1 -0
  330. package/dist/okf-standard-fields.d.ts +3 -0
  331. package/dist/okf-standard-fields.d.ts.map +1 -1
  332. package/dist/okf-standard-fields.js +3 -0
  333. package/dist/okf-standard-fields.js.map +1 -1
  334. package/dist/path-fold.d.ts +39 -0
  335. package/dist/path-fold.d.ts.map +1 -0
  336. package/dist/path-fold.js +41 -0
  337. package/dist/path-fold.js.map +1 -0
  338. package/dist/paths.d.ts +18 -0
  339. package/dist/paths.d.ts.map +1 -1
  340. package/dist/paths.js +32 -0
  341. package/dist/paths.js.map +1 -1
  342. package/dist/platform.d.ts +13 -2
  343. package/dist/platform.d.ts.map +1 -1
  344. package/dist/platform.js +16 -0
  345. package/dist/platform.js.map +1 -1
  346. package/dist/portable-export.d.ts +119 -0
  347. package/dist/portable-export.d.ts.map +1 -0
  348. package/dist/portable-export.js +501 -0
  349. package/dist/portable-export.js.map +1 -0
  350. package/dist/publication-filesystem.d.ts +1 -1
  351. package/dist/publication-filesystem.d.ts.map +1 -1
  352. package/dist/publication-filesystem.js +1 -1
  353. package/dist/publication-filesystem.js.map +1 -1
  354. package/dist/qualified-links.d.ts +67 -0
  355. package/dist/qualified-links.d.ts.map +1 -0
  356. package/dist/qualified-links.js +117 -0
  357. package/dist/qualified-links.js.map +1 -0
  358. package/dist/query-filter.d.ts +16 -2
  359. package/dist/query-filter.d.ts.map +1 -1
  360. package/dist/query-filter.js +40 -1
  361. package/dist/query-filter.js.map +1 -1
  362. package/dist/query-order.d.ts +22 -0
  363. package/dist/query-order.d.ts.map +1 -0
  364. package/dist/query-order.js +43 -0
  365. package/dist/query-order.js.map +1 -0
  366. package/dist/recipe-lifecycle/errors.d.ts +96 -0
  367. package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
  368. package/dist/recipe-lifecycle/errors.js +122 -0
  369. package/dist/recipe-lifecycle/errors.js.map +1 -0
  370. package/dist/recipe-lifecycle/evolution.d.ts +124 -0
  371. package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
  372. package/dist/recipe-lifecycle/evolution.js +993 -0
  373. package/dist/recipe-lifecycle/evolution.js.map +1 -0
  374. package/dist/recipe-lifecycle/index.d.ts +34 -0
  375. package/dist/recipe-lifecycle/index.d.ts.map +1 -0
  376. package/dist/recipe-lifecycle/index.js +28 -0
  377. package/dist/recipe-lifecycle/index.js.map +1 -0
  378. package/dist/recipe-lifecycle/install.d.ts +155 -0
  379. package/dist/recipe-lifecycle/install.d.ts.map +1 -0
  380. package/dist/recipe-lifecycle/install.js +604 -0
  381. package/dist/recipe-lifecycle/install.js.map +1 -0
  382. package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
  383. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
  384. package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
  385. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
  386. package/dist/recipe-lifecycle/retirement-apply.d.ts +59 -0
  387. package/dist/recipe-lifecycle/retirement-apply.d.ts.map +1 -0
  388. package/dist/recipe-lifecycle/retirement-apply.js +165 -0
  389. package/dist/recipe-lifecycle/retirement-apply.js.map +1 -0
  390. package/dist/recipe-lifecycle/retirement.d.ts +89 -0
  391. package/dist/recipe-lifecycle/retirement.d.ts.map +1 -0
  392. package/dist/recipe-lifecycle/retirement.js +347 -0
  393. package/dist/recipe-lifecycle/retirement.js.map +1 -0
  394. package/dist/recipe-lifecycle/stamp.d.ts +151 -0
  395. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
  396. package/dist/recipe-lifecycle/stamp.js +364 -0
  397. package/dist/recipe-lifecycle/stamp.js.map +1 -0
  398. package/dist/recipe-set-preflight.d.ts +139 -0
  399. package/dist/recipe-set-preflight.d.ts.map +1 -0
  400. package/dist/recipe-set-preflight.js +536 -0
  401. package/dist/recipe-set-preflight.js.map +1 -0
  402. package/dist/recipes.d.ts +29 -1
  403. package/dist/recipes.d.ts.map +1 -1
  404. package/dist/recipes.js +137 -1
  405. package/dist/recipes.js.map +1 -1
  406. package/dist/record-overlay/apply.d.ts +43 -0
  407. package/dist/record-overlay/apply.d.ts.map +1 -0
  408. package/dist/record-overlay/apply.js +527 -0
  409. package/dist/record-overlay/apply.js.map +1 -0
  410. package/dist/record-overlay/canonical.d.ts +22 -0
  411. package/dist/record-overlay/canonical.d.ts.map +1 -0
  412. package/dist/record-overlay/canonical.js +47 -0
  413. package/dist/record-overlay/canonical.js.map +1 -0
  414. package/dist/record-overlay/digest.d.ts +4 -0
  415. package/dist/record-overlay/digest.d.ts.map +1 -0
  416. package/dist/record-overlay/digest.js +11 -0
  417. package/dist/record-overlay/digest.js.map +1 -0
  418. package/dist/record-overlay/errors.d.ts +44 -0
  419. package/dist/record-overlay/errors.d.ts.map +1 -0
  420. package/dist/record-overlay/errors.js +55 -0
  421. package/dist/record-overlay/errors.js.map +1 -0
  422. package/dist/record-overlay/findings.d.ts +5 -0
  423. package/dist/record-overlay/findings.d.ts.map +1 -0
  424. package/dist/record-overlay/findings.js +83 -0
  425. package/dist/record-overlay/findings.js.map +1 -0
  426. package/dist/record-overlay/index.d.ts +23 -0
  427. package/dist/record-overlay/index.d.ts.map +1 -0
  428. package/dist/record-overlay/index.js +21 -0
  429. package/dist/record-overlay/index.js.map +1 -0
  430. package/dist/record-overlay/plan.d.ts +12 -0
  431. package/dist/record-overlay/plan.d.ts.map +1 -0
  432. package/dist/record-overlay/plan.js +285 -0
  433. package/dist/record-overlay/plan.js.map +1 -0
  434. package/dist/record-overlay/policy.d.ts +74 -0
  435. package/dist/record-overlay/policy.d.ts.map +1 -0
  436. package/dist/record-overlay/policy.js +235 -0
  437. package/dist/record-overlay/policy.js.map +1 -0
  438. package/dist/record-overlay/redact.d.ts +3 -0
  439. package/dist/record-overlay/redact.d.ts.map +1 -0
  440. package/dist/record-overlay/redact.js +27 -0
  441. package/dist/record-overlay/redact.js.map +1 -0
  442. package/dist/record-overlay/signal-kind.d.ts +30 -0
  443. package/dist/record-overlay/signal-kind.d.ts.map +1 -0
  444. package/dist/record-overlay/signal-kind.js +38 -0
  445. package/dist/record-overlay/signal-kind.js.map +1 -0
  446. package/dist/record-overlay/signal-text.d.ts +45 -0
  447. package/dist/record-overlay/signal-text.d.ts.map +1 -0
  448. package/dist/record-overlay/signal-text.js +116 -0
  449. package/dist/record-overlay/signal-text.js.map +1 -0
  450. package/dist/record-overlay/source-index.d.ts +19 -0
  451. package/dist/record-overlay/source-index.d.ts.map +1 -0
  452. package/dist/record-overlay/source-index.js +102 -0
  453. package/dist/record-overlay/source-index.js.map +1 -0
  454. package/dist/record-overlay/types.d.ts +291 -0
  455. package/dist/record-overlay/types.d.ts.map +1 -0
  456. package/dist/record-overlay/types.js +2 -0
  457. package/dist/record-overlay/types.js.map +1 -0
  458. package/dist/remote-backend.d.ts +58 -13
  459. package/dist/remote-backend.d.ts.map +1 -1
  460. package/dist/remote-backend.js +156 -36
  461. package/dist/remote-backend.js.map +1 -1
  462. package/dist/remote-document-codec.d.ts +2 -1
  463. package/dist/remote-document-codec.d.ts.map +1 -1
  464. package/dist/remote-document-codec.js +3 -2
  465. package/dist/remote-document-codec.js.map +1 -1
  466. package/dist/remote-error.d.ts +17 -1
  467. package/dist/remote-error.d.ts.map +1 -1
  468. package/dist/remote-error.js +32 -2
  469. package/dist/remote-error.js.map +1 -1
  470. package/dist/remote-operations.d.ts +0 -40
  471. package/dist/remote-operations.d.ts.map +1 -1
  472. package/dist/remote-operations.js +26 -6
  473. package/dist/remote-operations.js.map +1 -1
  474. package/dist/remote-parsers.d.ts +1 -1
  475. package/dist/remote-parsers.js +1 -1
  476. package/dist/search/backend-source.d.ts +6 -0
  477. package/dist/search/backend-source.d.ts.map +1 -0
  478. package/dist/search/backend-source.js +33 -0
  479. package/dist/search/backend-source.js.map +1 -0
  480. package/dist/search/contract.d.ts +151 -0
  481. package/dist/search/contract.d.ts.map +1 -0
  482. package/dist/search/contract.js +78 -0
  483. package/dist/search/contract.js.map +1 -0
  484. package/dist/search/errors.d.ts +30 -0
  485. package/dist/search/errors.d.ts.map +1 -0
  486. package/dist/search/errors.js +50 -0
  487. package/dist/search/errors.js.map +1 -0
  488. package/dist/search/identity.d.ts +12 -0
  489. package/dist/search/identity.d.ts.map +1 -0
  490. package/dist/search/identity.js +90 -0
  491. package/dist/search/identity.js.map +1 -0
  492. package/dist/search/index.d.ts +16 -0
  493. package/dist/search/index.d.ts.map +1 -0
  494. package/dist/search/index.js +15 -0
  495. package/dist/search/index.js.map +1 -0
  496. package/dist/search/memory-source.d.ts +36 -0
  497. package/dist/search/memory-source.d.ts.map +1 -0
  498. package/dist/search/memory-source.js +235 -0
  499. package/dist/search/memory-source.js.map +1 -0
  500. package/dist/search/rank.d.ts +34 -0
  501. package/dist/search/rank.d.ts.map +1 -0
  502. package/dist/search/rank.js +129 -0
  503. package/dist/search/rank.js.map +1 -0
  504. package/dist/search/row-text.d.ts +38 -0
  505. package/dist/search/row-text.d.ts.map +1 -0
  506. package/dist/search/row-text.js +88 -0
  507. package/dist/search/row-text.js.map +1 -0
  508. package/dist/search/search.d.ts +28 -0
  509. package/dist/search/search.d.ts.map +1 -0
  510. package/dist/search/search.js +257 -0
  511. package/dist/search/search.js.map +1 -0
  512. package/dist/search/source.d.ts +67 -0
  513. package/dist/search/source.d.ts.map +1 -0
  514. package/dist/search/source.js +2 -0
  515. package/dist/search/source.js.map +1 -0
  516. package/dist/search/text.d.ts +47 -0
  517. package/dist/search/text.d.ts.map +1 -0
  518. package/dist/search/text.js +150 -0
  519. package/dist/search/text.js.map +1 -0
  520. package/dist/site-capabilities.d.ts +345 -0
  521. package/dist/site-capabilities.d.ts.map +1 -0
  522. package/dist/site-capabilities.js +724 -0
  523. package/dist/site-capabilities.js.map +1 -0
  524. package/dist/source-engine/driver.d.ts +42 -0
  525. package/dist/source-engine/driver.d.ts.map +1 -0
  526. package/dist/source-engine/driver.js +529 -0
  527. package/dist/source-engine/driver.js.map +1 -0
  528. package/dist/source-engine/evidence.d.ts +39 -0
  529. package/dist/source-engine/evidence.d.ts.map +1 -0
  530. package/dist/source-engine/evidence.js +54 -0
  531. package/dist/source-engine/evidence.js.map +1 -0
  532. package/dist/source-engine/guard.d.ts +87 -0
  533. package/dist/source-engine/guard.d.ts.map +1 -0
  534. package/dist/source-engine/guard.js +427 -0
  535. package/dist/source-engine/guard.js.map +1 -0
  536. package/dist/source-engine/index.d.ts +35 -0
  537. package/dist/source-engine/index.d.ts.map +1 -0
  538. package/dist/source-engine/index.js +27 -0
  539. package/dist/source-engine/index.js.map +1 -0
  540. package/dist/source-engine/machine-state.d.ts +87 -0
  541. package/dist/source-engine/machine-state.d.ts.map +1 -0
  542. package/dist/source-engine/machine-state.js +94 -0
  543. package/dist/source-engine/machine-state.js.map +1 -0
  544. package/dist/source-engine/observe.d.ts +10 -0
  545. package/dist/source-engine/observe.d.ts.map +1 -0
  546. package/dist/source-engine/observe.js +276 -0
  547. package/dist/source-engine/observe.js.map +1 -0
  548. package/dist/source-engine/overlay.d.ts +50 -0
  549. package/dist/source-engine/overlay.d.ts.map +1 -0
  550. package/dist/source-engine/overlay.js +114 -0
  551. package/dist/source-engine/overlay.js.map +1 -0
  552. package/dist/source-engine/robots.d.ts +53 -0
  553. package/dist/source-engine/robots.d.ts.map +1 -0
  554. package/dist/source-engine/robots.js +158 -0
  555. package/dist/source-engine/robots.js.map +1 -0
  556. package/dist/source-engine/snapshot.d.ts +104 -0
  557. package/dist/source-engine/snapshot.d.ts.map +1 -0
  558. package/dist/source-engine/snapshot.js +240 -0
  559. package/dist/source-engine/snapshot.js.map +1 -0
  560. package/dist/source-engine/target-consumer.d.ts +12 -0
  561. package/dist/source-engine/target-consumer.d.ts.map +1 -0
  562. package/dist/source-engine/target-consumer.js +15 -0
  563. package/dist/source-engine/target-consumer.js.map +1 -0
  564. package/dist/source-engine/target-descriptor.d.ts +3 -0
  565. package/dist/source-engine/target-descriptor.d.ts.map +1 -0
  566. package/dist/source-engine/target-descriptor.js +26 -0
  567. package/dist/source-engine/target-descriptor.js.map +1 -0
  568. package/dist/source-engine/target.d.ts +82 -0
  569. package/dist/source-engine/target.d.ts.map +1 -0
  570. package/dist/source-engine/target.js +213 -0
  571. package/dist/source-engine/target.js.map +1 -0
  572. package/dist/source-engine/types.d.ts +296 -0
  573. package/dist/source-engine/types.d.ts.map +1 -0
  574. package/dist/source-engine/types.js +2 -0
  575. package/dist/source-engine/types.js.map +1 -0
  576. package/dist/source-harness/conformance.d.ts +16 -0
  577. package/dist/source-harness/conformance.d.ts.map +1 -0
  578. package/dist/source-harness/conformance.js +266 -0
  579. package/dist/source-harness/conformance.js.map +1 -0
  580. package/dist/source-harness/fixture.d.ts +97 -0
  581. package/dist/source-harness/fixture.d.ts.map +1 -0
  582. package/dist/source-harness/fixture.js +276 -0
  583. package/dist/source-harness/fixture.js.map +1 -0
  584. package/dist/source-harness/index.d.ts +22 -0
  585. package/dist/source-harness/index.d.ts.map +1 -0
  586. package/dist/source-harness/index.js +19 -0
  587. package/dist/source-harness/index.js.map +1 -0
  588. package/dist/source-harness/peer.d.ts +74 -0
  589. package/dist/source-harness/peer.d.ts.map +1 -0
  590. package/dist/source-harness/peer.js +106 -0
  591. package/dist/source-harness/peer.js.map +1 -0
  592. package/dist/source-profiles/index.d.ts +31 -0
  593. package/dist/source-profiles/index.d.ts.map +1 -0
  594. package/dist/source-profiles/index.js +206 -0
  595. package/dist/source-profiles/index.js.map +1 -0
  596. package/dist/source-profiles/link-header.d.ts +6 -0
  597. package/dist/source-profiles/link-header.d.ts.map +1 -0
  598. package/dist/source-profiles/link-header.js +131 -0
  599. package/dist/source-profiles/link-header.js.map +1 -0
  600. package/dist/storage.d.ts +9 -2
  601. package/dist/storage.d.ts.map +1 -1
  602. package/dist/storage.js +6 -1
  603. package/dist/storage.js.map +1 -1
  604. package/dist/string-identity-agreement.d.ts +35 -0
  605. package/dist/string-identity-agreement.d.ts.map +1 -0
  606. package/dist/string-identity-agreement.js +72 -0
  607. package/dist/string-identity-agreement.js.map +1 -0
  608. package/dist/types.d.ts +41 -6
  609. package/dist/types.d.ts.map +1 -1
  610. package/dist/types.js +0 -10
  611. package/dist/types.js.map +1 -1
  612. package/dist/uncertain-write.d.ts +157 -17
  613. package/dist/uncertain-write.d.ts.map +1 -1
  614. package/dist/uncertain-write.js +86 -30
  615. package/dist/uncertain-write.js.map +1 -1
  616. package/dist/versioning.d.ts +9 -4
  617. package/dist/versioning.d.ts.map +1 -1
  618. package/dist/versioning.js +9 -4
  619. package/dist/versioning.js.map +1 -1
  620. package/dist/view-launch-contract.d.ts +14 -0
  621. package/dist/view-launch-contract.d.ts.map +1 -0
  622. package/dist/view-launch-contract.js +23 -0
  623. package/dist/view-launch-contract.js.map +1 -0
  624. package/dist/write-identity.d.ts +5 -0
  625. package/dist/write-identity.d.ts.map +1 -0
  626. package/dist/write-identity.js +9 -0
  627. package/dist/write-identity.js.map +1 -0
  628. package/package.json +140 -3
@@ -0,0 +1,541 @@
1
+ /** File-journal optional ordinary-file admission. Frozen payloads are data, never authority:
2
+ * a dispatcher must compare their scope with its current trusted context before delivery. */
3
+ import { captureBlobWriteExpected, decodeBlobWriteResult, assertBlobKey, isBlobContentType, isSafeBlobKey } from "./blob-contract.js";
4
+ import { isHostedBundleId } from "./dependencies.js";
5
+ import { isAgentLabelVia, isWriteBinding, isWriteRequestId } from "./write-identity.js";
6
+ import { sha256HexOfBytes } from "./sha256.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";
10
+ export { isWriteRequestId } from "./write-identity.js";
11
+ export const BLOB_JOURNAL_BOUNDS = Object.freeze({ rawBytes: 16 * 1024 * 1024, preparedBytes: 24 * 1024 * 1024,
12
+ /** The file codec checks the actual tagged encoding, not an estimate of JSON text. */
13
+ terminalReceiptBytes: 128 * 1024,
14
+ settlementStructureBytes: 4 * 1024,
15
+ /** Aggregate encoded metadata growth ordinarily needed for the settled byte+MIME baseline. */
16
+ baselineBytes: 16 * 1024,
17
+ });
18
+ /** Bounded diagnostics, never acceptance or a terminal receipt. */
19
+ export function captureBlobDeletionHold(value) {
20
+ const hold = captureJournalValue(value);
21
+ if (!object(hold) || !only(hold, ["deletions", "baseline"]) || !Number.isSafeInteger(hold.deletions) || hold.deletions < 1 || !Number.isSafeInteger(hold.baseline) || hold.baseline < 0)
22
+ throw new TypeError("invalid blob deletion hold");
23
+ return hold;
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
+ }
39
+ const object = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
40
+ const only = (v, keys) => Object.keys(v).every(key => keys.includes(key));
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));
42
+ function captureInput(value) {
43
+ const v = captureJournalValue(value);
44
+ if (!object(v) || !only(v, ["scope", "intent", "identity", "createdAt"]) || !timestamp(v.createdAt) || !object(v.scope) || !only(v.scope, ["origin", "prefix", "bundleId", "workspaceSlug"]) || !object(v.identity) || !only(v.identity, ["requestId", "binding", "via"]))
45
+ throw new TypeError("invalid prepared blob input");
46
+ const { scope, identity } = v;
47
+ if (typeof scope.origin !== "string" || scope.origin.length > 2048 || typeof scope.prefix !== "string" || scope.prefix.length > 512 || !/^\/(?:[a-zA-Z0-9._~-]+\/)*[a-zA-Z0-9._~-]+$/.test(scope.prefix) || scope.prefix.split("/").some(part => part === "." || part === "..") || typeof scope.bundleId !== "string" || !isHostedBundleId(scope.bundleId) || !(scope.workspaceSlug === null || typeof scope.workspaceSlug === "string" && /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(scope.workspaceSlug)))
48
+ throw new TypeError("invalid blob target scope");
49
+ let origin;
50
+ try {
51
+ origin = new URL(scope.origin);
52
+ }
53
+ catch {
54
+ throw new TypeError("invalid blob target origin");
55
+ }
56
+ if (!['http:', 'https:'].includes(origin.protocol) || origin.origin !== scope.origin)
57
+ throw new TypeError("invalid blob target origin");
58
+ if (typeof identity.requestId !== "string" || !isWriteRequestId(identity.requestId) || typeof identity.binding !== "string" || !isWriteBinding(identity.binding) || identity.via !== undefined && !isAgentLabelVia(identity.via))
59
+ throw new TypeError("invalid blob prepared identity");
60
+ const original = captureBlobWriteExpected(v.intent);
61
+ const pins = { operationId: original.operationId, key: original.key, expectedVersion: original.expectedVersion, expectedContentType: original.expectedContentType };
62
+ const intent = (original.operationId === "blobs.delete.v1" ? pins : { ...pins, version: original.version, contentType: original.contentType });
63
+ return { scope: { origin: scope.origin, prefix: scope.prefix, bundleId: scope.bundleId, workspaceSlug: scope.workspaceSlug }, intent, identity: { requestId: identity.requestId, binding: identity.binding, ...(identity.via === undefined ? {} : { via: identity.via }) }, createdAt: v.createdAt };
64
+ }
65
+ function base64(bytes) {
66
+ let binary = "";
67
+ for (let at = 0; at < bytes.length; at += 8192)
68
+ binary += String.fromCharCode(...bytes.subarray(at, at + 8192));
69
+ return btoa(binary);
70
+ }
71
+ function checkedPayload(input, bytes) {
72
+ const captured = captureInput(input);
73
+ const deletion = captured.intent.operationId === "blobs.delete.v1";
74
+ if (deletion ? bytes !== undefined : !(bytes instanceof Uint8Array) || bytes.byteLength > BLOB_JOURNAL_BOUNDS.rawBytes)
75
+ throw new TypeError("invalid prepared blob bytes");
76
+ if (captured.intent.operationId !== "blobs.delete.v1" && `sha256:${sha256HexOfBytes(bytes)}` !== captured.intent.version)
77
+ throw new TypeError("prepared blob digest does not match bytes");
78
+ return { schemaVersion: 1, ...captured, ...(deletion ? {} : { bytesBase64: base64(bytes) }) };
79
+ }
80
+ export function prepareBlobIntent(input, bytes) {
81
+ const payload = JSON.stringify(checkedPayload(input, bytes === undefined ? undefined : new Uint8Array(bytes)));
82
+ if (new TextEncoder().encode(payload).byteLength > BLOB_JOURNAL_BOUNDS.preparedBytes)
83
+ throw new RangeError("prepared blob exceeds its byte bound");
84
+ return payload;
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
+ }
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) {
117
+ if (typeof payload !== "string" || payload.length > BLOB_JOURNAL_BOUNDS.preparedBytes || new TextEncoder().encode(payload).byteLength > BLOB_JOURNAL_BOUNDS.preparedBytes)
118
+ throw new TypeError("invalid prepared blob payload");
119
+ const value = JSON.parse(payload);
120
+ if (!object(value) || !only(value, ["schemaVersion", "scope", "intent", "identity", "createdAt", "bytesBase64"]) || value.schemaVersion !== 1)
121
+ throw new TypeError("invalid prepared blob schema");
122
+ const { schemaVersion: _schema, bytesBase64, ...input } = value;
123
+ let bytes;
124
+ if (bytesBase64 !== undefined) {
125
+ if (typeof bytesBase64 !== "string" || bytesBase64.length > Math.ceil(BLOB_JOURNAL_BOUNDS.rawBytes / 3) * 4)
126
+ throw new TypeError("invalid prepared blob base64");
127
+ bytes = Uint8Array.from(atob(bytesBase64), c => c.charCodeAt(0));
128
+ if (base64(bytes) !== bytesBase64)
129
+ throw new TypeError("noncanonical prepared blob base64");
130
+ }
131
+ const checked = checkedPayload(input, bytes);
132
+ if (JSON.stringify(checked) !== payload)
133
+ throw new TypeError("noncanonical prepared blob payload");
134
+ return captureJournalValue(checked);
135
+ }
136
+ export function blobReceipt(prepared, raw) {
137
+ const original = decodePreparedBlobIntent(prepared);
138
+ const result = decodeBlobWriteResult(raw, original.intent);
139
+ if (!result.ok) {
140
+ if (result.error.writeState !== "not_applied")
141
+ throw new TypeError("uncertain blob result is not a terminal receipt");
142
+ return { scope: original.scope, result };
143
+ }
144
+ const head = { key: result.data.key, version: result.data.version, contentType: result.data.contentType };
145
+ return result.operationId === "blobs.delete.v1" ? { scope: original.scope, result, head: null, removed: head } : { scope: original.scope, result, head };
146
+ }
147
+ export function captureBlobIntentRecord(value) {
148
+ const row = captureJournalValue(value);
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))
150
+ throw new TypeError("invalid blob intent record");
151
+ const prepared = decodePreparedBlobIntent(row.prepared);
152
+ if (row.requestId !== prepared.identity.requestId || row.target !== prepared.intent.key)
153
+ throw new TypeError("blob record index does not match payload");
154
+ const prefix = row.notAppliedThrough === undefined ? 0 : row.notAppliedThrough;
155
+ if (!Number.isSafeInteger(prefix) || prefix < 0 || prefix > row.attempts)
156
+ throw new TypeError("invalid blob non-execution prefix");
157
+ if (row.deletionHold !== undefined) {
158
+ captureBlobDeletionHold(row.deletionHold);
159
+ if (prefix === 0 || prepared.intent.operationId !== "blobs.delete.v1")
160
+ throw new TypeError("blob hold requires its proven deletion prefix");
161
+ }
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");
169
+ const terminal = row.state === "acknowledged" || row.state === "conflict" || row.state === "refused";
170
+ if (terminal !== (row.receipt !== undefined))
171
+ throw new TypeError("blob terminal state requires its receipt");
172
+ if (row.receipt !== undefined) {
173
+ const receipt = blobReceipt(row.prepared, row.receipt.result);
174
+ if (!equalJournalValue(receipt, row.receipt) || (row.state === "acknowledged") !== receipt.result.ok || (!receipt.result.ok && (row.state === "conflict") !== (receipt.result.error.code === "version_conflict")))
175
+ throw new TypeError("blob receipt does not match state");
176
+ }
177
+ return row;
178
+ }
179
+ export function captureBlobJournalGuard(value) {
180
+ const guard = captureJournalValue(value);
181
+ if (!object(guard) || !only(guard, ["key", "intents", "meta"]) || !Array.isArray(guard.intents) || !Array.isArray(guard.meta))
182
+ throw new JournalGuardConflict("blob");
183
+ assertBlobKey(guard.key);
184
+ const ids = new Set(), sequences = new Set(), keys = new Set();
185
+ for (const row of guard.intents) {
186
+ captureBlobIntentRecord(row);
187
+ if (row.target !== guard.key || ids.has(row.requestId) || sequences.has(row.sequence))
188
+ throw new JournalGuardConflict(guard.key);
189
+ ids.add(row.requestId);
190
+ sequences.add(row.sequence);
191
+ }
192
+ for (const row of guard.meta) {
193
+ if (!object(row) || !only(row, ["key", "expected"]) || typeof row.key !== "string" || keys.has(row.key))
194
+ throw new JournalGuardConflict(guard.key);
195
+ keys.add(row.key);
196
+ assertMetaExpectation(row.expected);
197
+ }
198
+ return guard;
199
+ }
200
+ export function assertBlobJournalGuard(expected, actual) {
201
+ const a = captureBlobJournalGuard(expected), b = captureBlobJournalGuard(actual);
202
+ for (const guard of [a, b]) {
203
+ guard.intents.sort((x, y) => x.sequence - y.sequence);
204
+ guard.meta.sort((x, y) => x.key.localeCompare(y.key));
205
+ }
206
+ if (!equalJournalValue(a, b))
207
+ throw new JournalGuardConflict(a.key);
208
+ }
209
+ export function captureBlobMutationOptions(options) {
210
+ const captured = captureJournalValue(options);
211
+ if (!object(captured) || !only(captured, ["guard", "meta", "removeMeta"]))
212
+ throw new JournalGuardConflict("blob");
213
+ captured.guard = captureBlobJournalGuard(captured.guard);
214
+ const puts = captured.meta ?? [], removals = captured.removeMeta ?? [];
215
+ if (!Array.isArray(puts) || !Array.isArray(removals) || puts.some(row => !object(row) || !only(row, ["key", "value"]) || typeof row.key !== "string") || new Set(puts.map(row => row.key)).size !== puts.length || new Set(removals).size !== removals.length || [...puts.map(row => row.key), ...removals].some(key => typeof key !== "string" || !captured.guard.meta.some(row => row.key === key)) || removals.some(key => puts.some(row => row.key === key)))
216
+ throw new JournalGuardConflict(captured.guard.key);
217
+ return captured;
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
+ /** Checks retry eligibility for a validated journal record. A true result still requires admission
389
+ * checks and a successful guarded claim before submission; it does not validate non-execution evidence. */
390
+ export function blobIntentResendable(row) {
391
+ return row.receipt === undefined && (row.state === "pending" || row.state === "unknown") && (row.notAppliedThrough ?? 0) === row.attempts;
392
+ }
393
+ export function captureBlobRetirement(key, requestIds, options) {
394
+ assertBlobKey(key);
395
+ const ids = captureJournalValue([...requestIds]);
396
+ const captured = captureBlobMutationOptions(options);
397
+ if (captured.guard.key !== key || ids.length === 0 || ids.some(id => typeof id !== "string") || new Set(ids).size !== ids.length)
398
+ throw new JournalGuardConflict(key);
399
+ return { key, requestIds: ids, options: captured };
400
+ }
401
+ /** Only terminal records with their receipt retire, and only together with their key's guard. */
402
+ export function decideBlobRetirement(view, retirement) {
403
+ const { key, requestIds, options: { guard, meta = [], removeMeta = [] } } = retirement;
404
+ assertBlobGuardMatches(view, guard);
405
+ for (const id of requestIds) {
406
+ const row = view.blobIntent(id);
407
+ if (!row || row.target !== key || !row.receipt || !["acknowledged", "refused", "conflict"].includes(row.state))
408
+ throw new JournalGuardConflict(key);
409
+ }
410
+ return { result: undefined, intents: requestIds.map(requestId => ({ requestId, value: null })), meta, removeMeta };
411
+ }
412
+ export function captureBlobForget(requestId, options) {
413
+ const captured = captureBlobMutationOptions(options);
414
+ if (typeof requestId !== "string" || !isWriteRequestId(requestId))
415
+ throw new JournalGuardConflict(captured.guard.key);
416
+ return { requestId, options: captured };
417
+ }
418
+ /** Only an `unknown`, receipt-less intent whose latest attempt is not proven unapplied may be forgotten. */
419
+ export function decideBlobForget(view, forget) {
420
+ const { requestId, options: { guard, meta = [], removeMeta = [] } } = forget;
421
+ assertBlobGuardMatches(view, guard);
422
+ const row = view.blobIntent(requestId);
423
+ if (!row || row.state !== "unknown")
424
+ throw new IntentStateConflict(requestId, "unknown", row?.state ?? view.intentState(requestId));
425
+ if (row.target !== guard.key || row.receipt !== undefined || (row.notAppliedThrough ?? 0) >= row.attempts)
426
+ throw new JournalGuardConflict(guard.key);
427
+ return { result: undefined, intents: [{ requestId, value: null }], meta, removeMeta };
428
+ }
429
+ export function captureBlobMetaWrite(key, changes, options) {
430
+ assertBlobKey(key);
431
+ const captured = captureBlobMutationOptions({ ...captureJournalValue(changes), guard: options.guard });
432
+ if (captured.guard.key !== key)
433
+ throw new JournalGuardConflict(key);
434
+ return { key, options: captured };
435
+ }
436
+ export function decideBlobMetaWrite(view, write) {
437
+ assertBlobGuardMatches(view, write.options.guard);
438
+ return { result: undefined, intents: [], meta: write.options.meta ?? [], removeMeta: write.options.removeMeta ?? [] };
439
+ }
440
+ /** A same-key read and the complete guard a later mutation must present. Values are copies. */
441
+ export function readBlobJournal(view, key, options = {}) {
442
+ assertBlobKey(key);
443
+ const intents = [...view.blobIntentsFor(key)].sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row));
444
+ const meta = new Map();
445
+ const premises = [];
446
+ for (const name of new Set(options.meta ?? [])) {
447
+ if (typeof name !== "string")
448
+ throw new JournalGuardConflict(key);
449
+ const actual = view.meta(name);
450
+ if (actual.present) {
451
+ const value = structuredClone(actual.value);
452
+ meta.set(name, value);
453
+ premises.push({ key: name, expected: { present: true, value: structuredClone(value) } });
454
+ }
455
+ else
456
+ premises.push({ key: name, expected: { present: false } });
457
+ }
458
+ return { key, intents, meta, guard: { key, intents: structuredClone(intents), meta: premises } };
459
+ }
460
+ /**
461
+ * A {@link BlobJournaledBackend} held in memory, for a browser or a test: the same pure transition
462
+ * functions as the file journal, nothing durable. Each verb decides and applies with no await in
463
+ * between, so verbs never interleave. A terminal receipt is bounded by its JSON size here, where
464
+ * the file journal measures its own tagged encoding. `state` restores exported rows as a new
465
+ * handle would find them: an `in_flight` claim among them is not this handle's.
466
+ */
467
+ export function createMemoryBlobJournal(state) {
468
+ const intents = new Map();
469
+ const meta = new Map();
470
+ const claims = new Map();
471
+ let sequence = 0;
472
+ if (state !== undefined) {
473
+ const restored = captureJournalValue(state);
474
+ if (!object(restored) || !only(restored, ["intents", "meta", "sequence"]) || !Array.isArray(restored.intents) || !Array.isArray(restored.meta) || !Number.isSafeInteger(restored.sequence) || restored.sequence < 0)
475
+ throw new TypeError("invalid memory blob journal state");
476
+ for (const row of restored.intents) {
477
+ const captured = captureBlobIntentRecord(row);
478
+ if (intents.has(captured.requestId) || captured.sequence > restored.sequence)
479
+ throw new TypeError("invalid memory blob journal state");
480
+ intents.set(captured.requestId, captured);
481
+ }
482
+ for (const entry of restored.meta) {
483
+ if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== "string" || meta.has(entry[0]))
484
+ throw new TypeError("invalid memory blob journal state");
485
+ meta.set(entry[0], entry[1]);
486
+ }
487
+ sequence = restored.sequence;
488
+ }
489
+ const view = {
490
+ blobIntentsFor: key => [...intents.values()].filter(row => row.target === key),
491
+ blobIntent: id => intents.get(id),
492
+ intentState: id => intents.get(id)?.state ?? null,
493
+ meta: key => meta.has(key) ? { present: true, value: meta.get(key) } : { present: false },
494
+ get sequence() { return sequence; },
495
+ claimedInThisSession: (id, attempts) => claims.get(id) === attempts,
496
+ };
497
+ const apply = (decision) => {
498
+ for (const { requestId, value } of decision.intents) {
499
+ if (value)
500
+ intents.set(requestId, structuredClone(value));
501
+ else
502
+ intents.delete(requestId);
503
+ }
504
+ if (decision.sequence !== undefined)
505
+ sequence = decision.sequence;
506
+ for (const row of decision.meta)
507
+ meta.set(row.key, structuredClone(row.value));
508
+ for (const key of decision.removeMeta)
509
+ meta.delete(key);
510
+ if (decision.session) {
511
+ if (decision.session.claimed === null)
512
+ claims.delete(decision.session.requestId);
513
+ else
514
+ claims.set(decision.session.requestId, decision.session.claimed);
515
+ }
516
+ for (const { requestId, value } of decision.intents)
517
+ if (value === null)
518
+ claims.delete(requestId);
519
+ return decision.result;
520
+ };
521
+ const checkReceipt = (row) => {
522
+ if (row.receipt !== undefined && new TextEncoder().encode(JSON.stringify(row.receipt)).byteLength > BLOB_JOURNAL_BOUNDS.terminalReceiptBytes)
523
+ throw new RangeError("a blob terminal receipt exceeds its byte bound");
524
+ };
525
+ return {
526
+ async readBlobWithJournal(key, options = {}) { return readBlobJournal(view, key, options); },
527
+ async writeBlobMeta(key, changes, options) { apply(decideBlobMetaWrite(view, captureBlobMetaWrite(key, changes, options))); },
528
+ async admitPreparedBlob(prepared, options) { return structuredClone(apply(decideBlobAdmission(view, captureBlobAdmission(prepared, options), new Date().toISOString()))); },
529
+ async listBlobIntents(state) {
530
+ const wanted = state === undefined ? null : new Set(typeof state === "string" ? [state] : state);
531
+ return [...intents.values()].filter(row => !wanted || wanted.has(row.state)).sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row));
532
+ },
533
+ async readBlobIntent(requestId) { const row = intents.get(requestId); return row && structuredClone(row); },
534
+ async updateBlobIntent(requestId, expectedState, patch, options) { return structuredClone(apply(decideBlobUpdate(view, captureBlobUpdate(requestId, expectedState, patch, options), new Date().toISOString(), checkReceipt))); },
535
+ async retireBlobIntents(key, requestIds, options) { apply(decideBlobRetirement(view, captureBlobRetirement(key, requestIds, options))); },
536
+ async forgetBlobIntent(requestId, options) { apply(decideBlobForget(view, captureBlobForget(requestId, options))); },
537
+ async readMeta(key) { return meta.has(key) ? structuredClone(meta.get(key)) : undefined; },
538
+ exportState: () => ({ intents: [...intents.values()].sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row)), meta: [...meta].map(([key, value]) => [key, structuredClone(value)]), sequence }),
539
+ };
540
+ }
541
+ //# sourceMappingURL=blob-journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-journal.js","sourceRoot":"","sources":["../src/blob-journal.ts"],"names":[],"mappings":"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"}