@superbee/core 0.2.0-pre.3 → 0.2.0-pre.30

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 (534) hide show
  1. package/README.md +1082 -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 +19 -1
  7. package/dist/backend.d.ts.map +1 -1
  8. package/dist/backend.js +83 -36
  9. package/dist/backend.js.map +1 -1
  10. package/dist/blob-contract.d.ts +80 -0
  11. package/dist/blob-contract.d.ts.map +1 -0
  12. package/dist/blob-contract.js +131 -0
  13. package/dist/blob-contract.js.map +1 -0
  14. package/dist/blob-journal.d.ts +302 -0
  15. package/dist/blob-journal.d.ts.map +1 -0
  16. package/dist/blob-journal.js +540 -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 +202 -0
  43. package/dist/bundle-health/report.d.ts.map +1 -0
  44. package/dist/bundle-health/report.js +438 -0
  45. package/dist/bundle-health/report.js.map +1 -0
  46. package/dist/bundle-ops.d.ts +1 -1
  47. package/dist/bundle-ops.d.ts.map +1 -1
  48. package/dist/bundle-ops.js +2 -2
  49. package/dist/bundle-ops.js.map +1 -1
  50. package/dist/bundle.d.ts +2 -1
  51. package/dist/bundle.d.ts.map +1 -1
  52. package/dist/bundle.js +3 -3
  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/connector-request.d.ts +87 -0
  59. package/dist/connector-request.d.ts.map +1 -0
  60. package/dist/connector-request.js +370 -0
  61. package/dist/connector-request.js.map +1 -0
  62. package/dist/connectors.d.ts +262 -0
  63. package/dist/connectors.d.ts.map +1 -0
  64. package/dist/connectors.js +1179 -0
  65. package/dist/connectors.js.map +1 -0
  66. package/dist/cross-bundle.d.ts +135 -0
  67. package/dist/cross-bundle.d.ts.map +1 -0
  68. package/dist/cross-bundle.js +186 -0
  69. package/dist/cross-bundle.js.map +1 -0
  70. package/dist/dependencies.d.ts +94 -0
  71. package/dist/dependencies.d.ts.map +1 -0
  72. package/dist/dependencies.js +180 -0
  73. package/dist/dependencies.js.map +1 -0
  74. package/dist/document-codec.d.ts +5 -1
  75. package/dist/document-codec.d.ts.map +1 -1
  76. package/dist/document-codec.js +7 -4
  77. package/dist/document-codec.js.map +1 -1
  78. package/dist/document-field-actions.d.ts +31 -1
  79. package/dist/document-field-actions.d.ts.map +1 -1
  80. package/dist/document-field-actions.js +137 -34
  81. package/dist/document-field-actions.js.map +1 -1
  82. package/dist/document-mutation.d.ts +22 -10
  83. package/dist/document-mutation.d.ts.map +1 -1
  84. package/dist/document-mutation.js +61 -27
  85. package/dist/document-mutation.js.map +1 -1
  86. package/dist/document-write-policy.d.ts.map +1 -1
  87. package/dist/document-write-policy.js +4 -2
  88. package/dist/document-write-policy.js.map +1 -1
  89. package/dist/domain-model.d.ts +73 -0
  90. package/dist/domain-model.d.ts.map +1 -0
  91. package/dist/domain-model.js +169 -0
  92. package/dist/domain-model.js.map +1 -0
  93. package/dist/engine.d.ts +16 -8
  94. package/dist/engine.d.ts.map +1 -1
  95. package/dist/engine.js +42 -4
  96. package/dist/engine.js.map +1 -1
  97. package/dist/file-journaled-backend-internal.d.ts +21 -0
  98. package/dist/file-journaled-backend-internal.d.ts.map +1 -0
  99. package/dist/file-journaled-backend-internal.js +12 -0
  100. package/dist/file-journaled-backend-internal.js.map +1 -0
  101. package/dist/file-journaled-backend.d.ts +160 -0
  102. package/dist/file-journaled-backend.d.ts.map +1 -0
  103. package/dist/file-journaled-backend.js +1345 -0
  104. package/dist/file-journaled-backend.js.map +1 -0
  105. package/dist/filesystem-host.d.ts +15 -0
  106. package/dist/filesystem-host.d.ts.map +1 -0
  107. package/dist/filesystem-host.js +20 -0
  108. package/dist/filesystem-host.js.map +1 -0
  109. package/dist/filesystem-identity.d.ts +86 -4
  110. package/dist/filesystem-identity.d.ts.map +1 -1
  111. package/dist/filesystem-identity.js +338 -102
  112. package/dist/filesystem-identity.js.map +1 -1
  113. package/dist/filesystem-lock.d.ts +16 -3
  114. package/dist/filesystem-lock.d.ts.map +1 -1
  115. package/dist/filesystem-lock.js +323 -77
  116. package/dist/filesystem-lock.js.map +1 -1
  117. package/dist/filesystem-push-role.d.ts +77 -0
  118. package/dist/filesystem-push-role.d.ts.map +1 -0
  119. package/dist/filesystem-push-role.js +165 -0
  120. package/dist/filesystem-push-role.js.map +1 -0
  121. package/dist/filesystem.d.ts +17 -0
  122. package/dist/filesystem.d.ts.map +1 -0
  123. package/dist/filesystem.js +18 -0
  124. package/dist/filesystem.js.map +1 -0
  125. package/dist/governed-body-write.d.ts +106 -0
  126. package/dist/governed-body-write.d.ts.map +1 -0
  127. package/dist/governed-body-write.js +251 -0
  128. package/dist/governed-body-write.js.map +1 -0
  129. package/dist/host-policy-snapshot.d.ts +9 -0
  130. package/dist/host-policy-snapshot.d.ts.map +1 -0
  131. package/dist/host-policy-snapshot.js +33 -0
  132. package/dist/host-policy-snapshot.js.map +1 -0
  133. package/dist/host-text.d.ts +31 -0
  134. package/dist/host-text.d.ts.map +1 -0
  135. package/dist/host-text.js +77 -0
  136. package/dist/host-text.js.map +1 -0
  137. package/dist/hosted-client/binding.d.ts +7 -0
  138. package/dist/hosted-client/binding.d.ts.map +1 -0
  139. package/dist/hosted-client/binding.js +10 -0
  140. package/dist/hosted-client/binding.js.map +1 -0
  141. package/dist/hosted-client/blob-delivery.d.ts +67 -0
  142. package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
  143. package/dist/hosted-client/blob-delivery.js +169 -0
  144. package/dist/hosted-client/blob-delivery.js.map +1 -0
  145. package/dist/hosted-client/blob-write.d.ts +386 -0
  146. package/dist/hosted-client/blob-write.d.ts.map +1 -0
  147. package/dist/hosted-client/blob-write.js +770 -0
  148. package/dist/hosted-client/blob-write.js.map +1 -0
  149. package/dist/hosted-client/bundle-listing.d.ts +46 -0
  150. package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
  151. package/dist/hosted-client/bundle-listing.js +36 -0
  152. package/dist/hosted-client/bundle-listing.js.map +1 -0
  153. package/dist/hosted-client/client.d.ts +219 -0
  154. package/dist/hosted-client/client.d.ts.map +1 -0
  155. package/dist/hosted-client/client.js +309 -0
  156. package/dist/hosted-client/client.js.map +1 -0
  157. package/dist/hosted-client/directory.d.ts +46 -0
  158. package/dist/hosted-client/directory.d.ts.map +1 -0
  159. package/dist/hosted-client/directory.js +74 -0
  160. package/dist/hosted-client/directory.js.map +1 -0
  161. package/dist/hosted-client/errors.d.ts +26 -0
  162. package/dist/hosted-client/errors.d.ts.map +1 -0
  163. package/dist/hosted-client/errors.js +35 -0
  164. package/dist/hosted-client/errors.js.map +1 -0
  165. package/dist/hosted-client/inbox.d.ts +320 -0
  166. package/dist/hosted-client/inbox.d.ts.map +1 -0
  167. package/dist/hosted-client/inbox.js +379 -0
  168. package/dist/hosted-client/inbox.js.map +1 -0
  169. package/dist/hosted-client/index.d.ts +30 -0
  170. package/dist/hosted-client/index.d.ts.map +1 -0
  171. package/dist/hosted-client/index.js +32 -0
  172. package/dist/hosted-client/index.js.map +1 -0
  173. package/dist/hosted-client/journal.d.ts +103 -0
  174. package/dist/hosted-client/journal.d.ts.map +1 -0
  175. package/dist/hosted-client/journal.js +464 -0
  176. package/dist/hosted-client/journal.js.map +1 -0
  177. package/dist/hosted-client/node.d.ts +74 -0
  178. package/dist/hosted-client/node.d.ts.map +1 -0
  179. package/dist/hosted-client/node.js +219 -0
  180. package/dist/hosted-client/node.js.map +1 -0
  181. package/dist/hosted-client/reference.d.ts +12 -0
  182. package/dist/hosted-client/reference.d.ts.map +1 -0
  183. package/dist/hosted-client/reference.js +29 -0
  184. package/dist/hosted-client/reference.js.map +1 -0
  185. package/dist/hosted-client/write.d.ts +217 -0
  186. package/dist/hosted-client/write.d.ts.map +1 -0
  187. package/dist/hosted-client/write.js +418 -0
  188. package/dist/hosted-client/write.js.map +1 -0
  189. package/dist/hosted-transport/answer-rows.d.ts +243 -0
  190. package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
  191. package/dist/hosted-transport/answer-rows.js +454 -0
  192. package/dist/hosted-transport/answer-rows.js.map +1 -0
  193. package/dist/hosted-transport/blob-reads.d.ts +35 -0
  194. package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
  195. package/dist/hosted-transport/blob-reads.js +179 -0
  196. package/dist/hosted-transport/blob-reads.js.map +1 -0
  197. package/dist/hosted-transport/blob-write.d.ts +34 -0
  198. package/dist/hosted-transport/blob-write.d.ts.map +1 -0
  199. package/dist/hosted-transport/blob-write.js +115 -0
  200. package/dist/hosted-transport/blob-write.js.map +1 -0
  201. package/dist/hosted-transport/carrier.d.ts +151 -0
  202. package/dist/hosted-transport/carrier.d.ts.map +1 -0
  203. package/dist/hosted-transport/carrier.js +260 -0
  204. package/dist/hosted-transport/carrier.js.map +1 -0
  205. package/dist/hosted-transport/history-pages.d.ts +55 -0
  206. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  207. package/dist/hosted-transport/history-pages.js +69 -0
  208. package/dist/hosted-transport/history-pages.js.map +1 -0
  209. package/dist/hosted-transport/index.d.ts +18 -0
  210. package/dist/hosted-transport/index.d.ts.map +1 -0
  211. package/dist/hosted-transport/index.js +18 -0
  212. package/dist/hosted-transport/index.js.map +1 -0
  213. package/dist/hosted-transport/operations.d.ts +85 -0
  214. package/dist/hosted-transport/operations.d.ts.map +1 -0
  215. package/dist/hosted-transport/operations.js +128 -0
  216. package/dist/hosted-transport/operations.js.map +1 -0
  217. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  218. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  219. package/dist/hosted-transport/paged-reads.js +238 -0
  220. package/dist/hosted-transport/paged-reads.js.map +1 -0
  221. package/dist/hosted-transport/read-adapter.d.ts +256 -0
  222. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  223. package/dist/hosted-transport/read-adapter.js +568 -0
  224. package/dist/hosted-transport/read-adapter.js.map +1 -0
  225. package/dist/hosted-transport/root-write.d.ts +114 -0
  226. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  227. package/dist/hosted-transport/root-write.js +171 -0
  228. package/dist/hosted-transport/root-write.js.map +1 -0
  229. package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
  230. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  231. package/dist/hosted-transport/whole-document-transport.js +447 -0
  232. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  233. package/dist/index.d.ts +34 -10
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +26 -8
  236. package/dist/index.js.map +1 -1
  237. package/dist/indexeddb-backend.d.ts +28 -37
  238. package/dist/indexeddb-backend.d.ts.map +1 -1
  239. package/dist/indexeddb-backend.js +467 -113
  240. package/dist/indexeddb-backend.js.map +1 -1
  241. package/dist/journaled-backend.d.ts +232 -15
  242. package/dist/journaled-backend.d.ts.map +1 -1
  243. package/dist/journaled-backend.js +254 -55
  244. package/dist/journaled-backend.js.map +1 -1
  245. package/dist/kind-authoring.d.ts +170 -0
  246. package/dist/kind-authoring.d.ts.map +1 -0
  247. package/dist/kind-authoring.js +451 -0
  248. package/dist/kind-authoring.js.map +1 -0
  249. package/dist/kind-conformance-error.d.ts +15 -0
  250. package/dist/kind-conformance-error.d.ts.map +1 -0
  251. package/dist/kind-conformance-error.js +20 -0
  252. package/dist/kind-conformance-error.js.map +1 -0
  253. package/dist/kind-coverage.d.ts +99 -0
  254. package/dist/kind-coverage.d.ts.map +1 -0
  255. package/dist/kind-coverage.js +186 -0
  256. package/dist/kind-coverage.js.map +1 -0
  257. package/dist/kind-field-mutation.d.ts +4 -0
  258. package/dist/kind-field-mutation.d.ts.map +1 -1
  259. package/dist/kind-field-mutation.js +28 -3
  260. package/dist/kind-field-mutation.js.map +1 -1
  261. package/dist/kinds-load.js +4 -4
  262. package/dist/kinds-load.js.map +1 -1
  263. package/dist/kinds.d.ts +65 -2
  264. package/dist/kinds.d.ts.map +1 -1
  265. package/dist/kinds.js +341 -21
  266. package/dist/kinds.js.map +1 -1
  267. package/dist/link-types.d.ts +26 -0
  268. package/dist/link-types.d.ts.map +1 -0
  269. package/dist/link-types.js +57 -0
  270. package/dist/link-types.js.map +1 -0
  271. package/dist/links.d.ts +21 -3
  272. package/dist/links.d.ts.map +1 -1
  273. package/dist/links.js +213 -14
  274. package/dist/links.js.map +1 -1
  275. package/dist/managed-document-metadata.d.ts +2 -0
  276. package/dist/managed-document-metadata.d.ts.map +1 -0
  277. package/dist/managed-document-metadata.js +9 -0
  278. package/dist/managed-document-metadata.js.map +1 -0
  279. package/dist/memory-backend.d.ts.map +1 -1
  280. package/dist/memory-backend.js +6 -2
  281. package/dist/memory-backend.js.map +1 -1
  282. package/dist/paths.d.ts +16 -0
  283. package/dist/paths.d.ts.map +1 -1
  284. package/dist/paths.js +25 -0
  285. package/dist/paths.js.map +1 -1
  286. package/dist/platform.d.ts +13 -2
  287. package/dist/platform.d.ts.map +1 -1
  288. package/dist/platform.js +16 -0
  289. package/dist/platform.js.map +1 -1
  290. package/dist/portable-export.d.ts +119 -0
  291. package/dist/portable-export.d.ts.map +1 -0
  292. package/dist/portable-export.js +501 -0
  293. package/dist/portable-export.js.map +1 -0
  294. package/dist/publication-filesystem.d.ts +1 -1
  295. package/dist/publication-filesystem.d.ts.map +1 -1
  296. package/dist/publication-filesystem.js +1 -1
  297. package/dist/publication-filesystem.js.map +1 -1
  298. package/dist/qualified-links.d.ts +67 -0
  299. package/dist/qualified-links.d.ts.map +1 -0
  300. package/dist/qualified-links.js +117 -0
  301. package/dist/qualified-links.js.map +1 -0
  302. package/dist/query-filter.d.ts +16 -2
  303. package/dist/query-filter.d.ts.map +1 -1
  304. package/dist/query-filter.js +40 -1
  305. package/dist/query-filter.js.map +1 -1
  306. package/dist/query-order.d.ts +22 -0
  307. package/dist/query-order.d.ts.map +1 -0
  308. package/dist/query-order.js +42 -0
  309. package/dist/query-order.js.map +1 -0
  310. package/dist/recipe-lifecycle/errors.d.ts +96 -0
  311. package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
  312. package/dist/recipe-lifecycle/errors.js +122 -0
  313. package/dist/recipe-lifecycle/errors.js.map +1 -0
  314. package/dist/recipe-lifecycle/evolution.d.ts +112 -0
  315. package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
  316. package/dist/recipe-lifecycle/evolution.js +941 -0
  317. package/dist/recipe-lifecycle/evolution.js.map +1 -0
  318. package/dist/recipe-lifecycle/index.d.ts +30 -0
  319. package/dist/recipe-lifecycle/index.d.ts.map +1 -0
  320. package/dist/recipe-lifecycle/index.js +26 -0
  321. package/dist/recipe-lifecycle/index.js.map +1 -0
  322. package/dist/recipe-lifecycle/install.d.ts +155 -0
  323. package/dist/recipe-lifecycle/install.d.ts.map +1 -0
  324. package/dist/recipe-lifecycle/install.js +594 -0
  325. package/dist/recipe-lifecycle/install.js.map +1 -0
  326. package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
  327. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
  328. package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
  329. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
  330. package/dist/recipe-lifecycle/stamp.d.ts +151 -0
  331. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
  332. package/dist/recipe-lifecycle/stamp.js +364 -0
  333. package/dist/recipe-lifecycle/stamp.js.map +1 -0
  334. package/dist/recipes.d.ts +29 -1
  335. package/dist/recipes.d.ts.map +1 -1
  336. package/dist/recipes.js +137 -1
  337. package/dist/recipes.js.map +1 -1
  338. package/dist/record-overlay/apply.d.ts +43 -0
  339. package/dist/record-overlay/apply.d.ts.map +1 -0
  340. package/dist/record-overlay/apply.js +527 -0
  341. package/dist/record-overlay/apply.js.map +1 -0
  342. package/dist/record-overlay/canonical.d.ts +22 -0
  343. package/dist/record-overlay/canonical.d.ts.map +1 -0
  344. package/dist/record-overlay/canonical.js +47 -0
  345. package/dist/record-overlay/canonical.js.map +1 -0
  346. package/dist/record-overlay/digest.d.ts +4 -0
  347. package/dist/record-overlay/digest.d.ts.map +1 -0
  348. package/dist/record-overlay/digest.js +11 -0
  349. package/dist/record-overlay/digest.js.map +1 -0
  350. package/dist/record-overlay/errors.d.ts +44 -0
  351. package/dist/record-overlay/errors.d.ts.map +1 -0
  352. package/dist/record-overlay/errors.js +55 -0
  353. package/dist/record-overlay/errors.js.map +1 -0
  354. package/dist/record-overlay/findings.d.ts +5 -0
  355. package/dist/record-overlay/findings.d.ts.map +1 -0
  356. package/dist/record-overlay/findings.js +83 -0
  357. package/dist/record-overlay/findings.js.map +1 -0
  358. package/dist/record-overlay/index.d.ts +23 -0
  359. package/dist/record-overlay/index.d.ts.map +1 -0
  360. package/dist/record-overlay/index.js +21 -0
  361. package/dist/record-overlay/index.js.map +1 -0
  362. package/dist/record-overlay/plan.d.ts +12 -0
  363. package/dist/record-overlay/plan.d.ts.map +1 -0
  364. package/dist/record-overlay/plan.js +285 -0
  365. package/dist/record-overlay/plan.js.map +1 -0
  366. package/dist/record-overlay/policy.d.ts +69 -0
  367. package/dist/record-overlay/policy.d.ts.map +1 -0
  368. package/dist/record-overlay/policy.js +228 -0
  369. package/dist/record-overlay/policy.js.map +1 -0
  370. package/dist/record-overlay/redact.d.ts +3 -0
  371. package/dist/record-overlay/redact.d.ts.map +1 -0
  372. package/dist/record-overlay/redact.js +27 -0
  373. package/dist/record-overlay/redact.js.map +1 -0
  374. package/dist/record-overlay/signal-kind.d.ts +30 -0
  375. package/dist/record-overlay/signal-kind.d.ts.map +1 -0
  376. package/dist/record-overlay/signal-kind.js +38 -0
  377. package/dist/record-overlay/signal-kind.js.map +1 -0
  378. package/dist/record-overlay/signal-text.d.ts +45 -0
  379. package/dist/record-overlay/signal-text.d.ts.map +1 -0
  380. package/dist/record-overlay/signal-text.js +116 -0
  381. package/dist/record-overlay/signal-text.js.map +1 -0
  382. package/dist/record-overlay/source-index.d.ts +19 -0
  383. package/dist/record-overlay/source-index.d.ts.map +1 -0
  384. package/dist/record-overlay/source-index.js +102 -0
  385. package/dist/record-overlay/source-index.js.map +1 -0
  386. package/dist/record-overlay/types.d.ts +291 -0
  387. package/dist/record-overlay/types.d.ts.map +1 -0
  388. package/dist/record-overlay/types.js +2 -0
  389. package/dist/record-overlay/types.js.map +1 -0
  390. package/dist/remote-backend.d.ts +67 -67
  391. package/dist/remote-backend.d.ts.map +1 -1
  392. package/dist/remote-backend.js +168 -201
  393. package/dist/remote-backend.js.map +1 -1
  394. package/dist/remote-document-codec.d.ts +2 -1
  395. package/dist/remote-document-codec.d.ts.map +1 -1
  396. package/dist/remote-document-codec.js +3 -2
  397. package/dist/remote-document-codec.js.map +1 -1
  398. package/dist/remote-error.d.ts +38 -0
  399. package/dist/remote-error.d.ts.map +1 -0
  400. package/dist/remote-error.js +59 -0
  401. package/dist/remote-error.js.map +1 -0
  402. package/dist/remote-operations.d.ts +0 -40
  403. package/dist/remote-operations.d.ts.map +1 -1
  404. package/dist/remote-operations.js +26 -6
  405. package/dist/remote-operations.js.map +1 -1
  406. package/dist/remote-parsers.d.ts +86 -0
  407. package/dist/remote-parsers.d.ts.map +1 -0
  408. package/dist/remote-parsers.js +181 -0
  409. package/dist/remote-parsers.js.map +1 -0
  410. package/dist/remote.d.ts +5 -2
  411. package/dist/remote.d.ts.map +1 -1
  412. package/dist/remote.js +5 -1
  413. package/dist/remote.js.map +1 -1
  414. package/dist/search/backend-source.d.ts +6 -0
  415. package/dist/search/backend-source.d.ts.map +1 -0
  416. package/dist/search/backend-source.js +33 -0
  417. package/dist/search/backend-source.js.map +1 -0
  418. package/dist/search/contract.d.ts +151 -0
  419. package/dist/search/contract.d.ts.map +1 -0
  420. package/dist/search/contract.js +78 -0
  421. package/dist/search/contract.js.map +1 -0
  422. package/dist/search/errors.d.ts +30 -0
  423. package/dist/search/errors.d.ts.map +1 -0
  424. package/dist/search/errors.js +50 -0
  425. package/dist/search/errors.js.map +1 -0
  426. package/dist/search/identity.d.ts +12 -0
  427. package/dist/search/identity.d.ts.map +1 -0
  428. package/dist/search/identity.js +90 -0
  429. package/dist/search/identity.js.map +1 -0
  430. package/dist/search/index.d.ts +16 -0
  431. package/dist/search/index.d.ts.map +1 -0
  432. package/dist/search/index.js +15 -0
  433. package/dist/search/index.js.map +1 -0
  434. package/dist/search/memory-source.d.ts +36 -0
  435. package/dist/search/memory-source.d.ts.map +1 -0
  436. package/dist/search/memory-source.js +235 -0
  437. package/dist/search/memory-source.js.map +1 -0
  438. package/dist/search/rank.d.ts +34 -0
  439. package/dist/search/rank.d.ts.map +1 -0
  440. package/dist/search/rank.js +129 -0
  441. package/dist/search/rank.js.map +1 -0
  442. package/dist/search/row-text.d.ts +38 -0
  443. package/dist/search/row-text.d.ts.map +1 -0
  444. package/dist/search/row-text.js +88 -0
  445. package/dist/search/row-text.js.map +1 -0
  446. package/dist/search/search.d.ts +28 -0
  447. package/dist/search/search.d.ts.map +1 -0
  448. package/dist/search/search.js +257 -0
  449. package/dist/search/search.js.map +1 -0
  450. package/dist/search/source.d.ts +67 -0
  451. package/dist/search/source.d.ts.map +1 -0
  452. package/dist/search/source.js +2 -0
  453. package/dist/search/source.js.map +1 -0
  454. package/dist/search/text.d.ts +47 -0
  455. package/dist/search/text.d.ts.map +1 -0
  456. package/dist/search/text.js +150 -0
  457. package/dist/search/text.js.map +1 -0
  458. package/dist/site-capabilities.d.ts +345 -0
  459. package/dist/site-capabilities.d.ts.map +1 -0
  460. package/dist/site-capabilities.js +724 -0
  461. package/dist/site-capabilities.js.map +1 -0
  462. package/dist/source-engine/guard.d.ts +78 -0
  463. package/dist/source-engine/guard.d.ts.map +1 -0
  464. package/dist/source-engine/guard.js +423 -0
  465. package/dist/source-engine/guard.js.map +1 -0
  466. package/dist/source-engine/index.d.ts +26 -0
  467. package/dist/source-engine/index.d.ts.map +1 -0
  468. package/dist/source-engine/index.js +21 -0
  469. package/dist/source-engine/index.js.map +1 -0
  470. package/dist/source-engine/machine-state.d.ts +74 -0
  471. package/dist/source-engine/machine-state.d.ts.map +1 -0
  472. package/dist/source-engine/machine-state.js +48 -0
  473. package/dist/source-engine/machine-state.js.map +1 -0
  474. package/dist/source-engine/observe.d.ts +18 -0
  475. package/dist/source-engine/observe.d.ts.map +1 -0
  476. package/dist/source-engine/observe.js +620 -0
  477. package/dist/source-engine/observe.js.map +1 -0
  478. package/dist/source-engine/overlay.d.ts +49 -0
  479. package/dist/source-engine/overlay.d.ts.map +1 -0
  480. package/dist/source-engine/overlay.js +114 -0
  481. package/dist/source-engine/overlay.js.map +1 -0
  482. package/dist/source-engine/robots.d.ts +53 -0
  483. package/dist/source-engine/robots.d.ts.map +1 -0
  484. package/dist/source-engine/robots.js +158 -0
  485. package/dist/source-engine/robots.js.map +1 -0
  486. package/dist/source-engine/types.d.ts +287 -0
  487. package/dist/source-engine/types.d.ts.map +1 -0
  488. package/dist/source-engine/types.js +2 -0
  489. package/dist/source-engine/types.js.map +1 -0
  490. package/dist/source-harness/conformance.d.ts +16 -0
  491. package/dist/source-harness/conformance.d.ts.map +1 -0
  492. package/dist/source-harness/conformance.js +266 -0
  493. package/dist/source-harness/conformance.js.map +1 -0
  494. package/dist/source-harness/fixture.d.ts +95 -0
  495. package/dist/source-harness/fixture.d.ts.map +1 -0
  496. package/dist/source-harness/fixture.js +273 -0
  497. package/dist/source-harness/fixture.js.map +1 -0
  498. package/dist/source-harness/index.d.ts +22 -0
  499. package/dist/source-harness/index.d.ts.map +1 -0
  500. package/dist/source-harness/index.js +19 -0
  501. package/dist/source-harness/index.js.map +1 -0
  502. package/dist/source-harness/peer.d.ts +74 -0
  503. package/dist/source-harness/peer.d.ts.map +1 -0
  504. package/dist/source-harness/peer.js +106 -0
  505. package/dist/source-harness/peer.js.map +1 -0
  506. package/dist/source-profiles/index.d.ts +31 -0
  507. package/dist/source-profiles/index.d.ts.map +1 -0
  508. package/dist/source-profiles/index.js +206 -0
  509. package/dist/source-profiles/index.js.map +1 -0
  510. package/dist/source-profiles/link-header.d.ts +6 -0
  511. package/dist/source-profiles/link-header.d.ts.map +1 -0
  512. package/dist/source-profiles/link-header.js +131 -0
  513. package/dist/source-profiles/link-header.js.map +1 -0
  514. package/dist/storage.d.ts +6 -2
  515. package/dist/storage.d.ts.map +1 -1
  516. package/dist/storage.js +4 -1
  517. package/dist/storage.js.map +1 -1
  518. package/dist/types.d.ts +38 -5
  519. package/dist/types.d.ts.map +1 -1
  520. package/dist/types.js +0 -10
  521. package/dist/types.js.map +1 -1
  522. package/dist/uncertain-write.d.ts +161 -19
  523. package/dist/uncertain-write.d.ts.map +1 -1
  524. package/dist/uncertain-write.js +90 -31
  525. package/dist/uncertain-write.js.map +1 -1
  526. package/dist/versioning.d.ts +9 -4
  527. package/dist/versioning.d.ts.map +1 -1
  528. package/dist/versioning.js +9 -4
  529. package/dist/versioning.js.map +1 -1
  530. package/dist/write-identity.d.ts +5 -0
  531. package/dist/write-identity.d.ts.map +1 -0
  532. package/dist/write-identity.js +9 -0
  533. package/dist/write-identity.js.map +1 -0
  534. package/package.json +103 -2
@@ -0,0 +1,454 @@
1
+ /**
2
+ * The hosted answer grammar, once: how every identified-write answer, every outcome-lookup
3
+ * answer and every read-route answer is classified, whichever client sent the request. The
4
+ * browser editor's body delivery and the CLI's whole-document sync read these same tables, so
5
+ * "recorded", "unknown" and "absent past retention" mean one thing in both.
6
+ *
7
+ * The update rows are hosted's browser table plus the sync quota rows (`request_capacity`),
8
+ * which only the `/sync/v1` routes answer. Until the hosted browser imports this module, hosted's golden exchanges
9
+ * (`test/fixtures/hosted-transport/`, produced from the hosted encoders) pin that these rows
10
+ * classify exactly what the host emits.
11
+ *
12
+ * The rows keep three facts apart: a refusal the host recorded under the request identity is
13
+ * definitive; a refusal answered before dispatch is definitive but unrecorded; and anything the
14
+ * host may have applied without saying so is unknown. Only two refusal codes reach the shared
15
+ * primitive's authorization set and pause the store: `AUTH_REQUIRED` (the carrier denied the
16
+ * request) and `PERMISSION_DENIED` (the host refused the caller's access to the bundle).
17
+ */
18
+ import { decodeBlobWriteResult, isBlobWriteExpected } from "../blob-contract.js";
19
+ import { isWriteRequestId } from "../write-identity.js";
20
+ import { isContentVersion } from "../version-transport.js";
21
+ import { stripHostText } from "../host-text.js";
22
+ /**
23
+ * The refusal codes of a sync quota the host enforces on identified writes (`request_capacity`),
24
+ * one per scope it names: the person's rolling daily bound in this bundle, or the bundle's own
25
+ * bound. The shared primitive counts both as pausing refusals, so the store pauses with nothing
26
+ * lost and `resume` requeues the refused intents once the quota resets.
27
+ */
28
+ export const CAPACITY_REFUSAL_CODES = Object.freeze({ principal: "REQUEST_CAPACITY_PRINCIPAL", bundle: "REQUEST_CAPACITY_BUNDLE" });
29
+ /**
30
+ * The refusal code of the host's mass-delete hold (`428 deletions_held`): a delete that would take
31
+ * over half of the bundle's documents within 24 hours, counted over every person and checkout. It
32
+ * never pauses: only a person's typed acknowledgment releases it, never time or a plain resend.
33
+ */
34
+ export const DELETIONS_HELD_REFUSAL_CODE = "DELETIONS_HELD";
35
+ /** The quota scope a refused outcome names, or `null` when it is not a capacity refusal. */
36
+ export function capacityScopeOf(outcome) {
37
+ if (outcome.kind !== "refused")
38
+ return null;
39
+ if (outcome.code === CAPACITY_REFUSAL_CODES.principal)
40
+ return "principal";
41
+ if (outcome.code === CAPACITY_REFUSAL_CODES.bundle)
42
+ return "bundle";
43
+ return null;
44
+ }
45
+ export const UPDATE_ANSWER_ROWS = Object.freeze([
46
+ { answer: "200 ok", recorded: "yes", outcome: "committed" },
47
+ { answer: "200 version_conflict", recorded: "yes", outcome: "conflict" },
48
+ { answer: "200 document_not_found", recorded: "yes", outcome: "conflict" },
49
+ { answer: "200 validation_failed", recorded: "yes", outcome: "refused" },
50
+ { answer: "200 body_edit_mismatch", recorded: "yes", outcome: "refused" },
51
+ { answer: "200 invalid_input", recorded: "settled-only", outcome: "refused" },
52
+ { answer: "200 insufficient_scope", recorded: "no", outcome: "refused", code: "PERMISSION_DENIED" },
53
+ { answer: "200 bundle_not_found", recorded: "no", outcome: "refused", code: "PERMISSION_DENIED" },
54
+ { answer: "200 access_denied", recorded: "no", outcome: "refused", code: "PERMISSION_DENIED" },
55
+ { answer: "200 backend_unavailable", recorded: "settled-only", outcome: "refused" },
56
+ { answer: "200 concurrent_change", recorded: "settled-only", outcome: "refused" },
57
+ { answer: "200 internal_error", recorded: "settled-only", outcome: "refused" },
58
+ { answer: "200 deadline_exceeded", recorded: "settled-only", outcome: "refused" },
59
+ { answer: "200 cancelled", recorded: "settled-only", outcome: "refused" },
60
+ // The remaining not_applied codes of the write schema: definitive once recorded, like the transient ones.
61
+ { answer: "200 result_too_large", recorded: "settled-only", outcome: "refused" },
62
+ { answer: "200 field_action_refused", recorded: "settled-only", outcome: "refused" },
63
+ // A model change the host's compatibility check refused (designs/hosted-model-evolution.md 4.6).
64
+ { answer: "200 definition_incompatible", recorded: "settled-only", outcome: "refused" },
65
+ { answer: "200 document_exists", recorded: "settled-only", outcome: "refused" },
66
+ { answer: "200 candidate_unavailable", recorded: "settled-only", outcome: "refused" },
67
+ { answer: "200 candidate_recovery_unavailable", recorded: "settled-only", outcome: "refused" },
68
+ // A create whose id is not canonical, or folds onto a stored document's id (hosted kernel,
69
+ // tasks/canonical-document-ids-across-surfaces): definitive, like the rows above.
70
+ { answer: "200 document_id_not_canonical", recorded: "settled-only", outcome: "refused" },
71
+ { answer: "200 document_id_collision", recorded: "settled-only", outcome: "refused" },
72
+ // The sync quota, refused before dispatch; the row's outcome code is chosen by the scope the answer names.
73
+ { answer: "200 request_capacity", recorded: "no", outcome: "refused" },
74
+ { answer: "429 request_capacity", recorded: "no", outcome: "refused" },
75
+ // The mass-delete hold, refused before dispatch on a delete; not pausing (see DELETIONS_HELD_REFUSAL_CODE).
76
+ { answer: "428 deletions_held", recorded: "no", outcome: "refused" },
77
+ { answer: "200 write_outcome_unknown", recorded: "maybe", outcome: "unknown" },
78
+ { answer: "200 other", recorded: "unknown", outcome: "unknown" },
79
+ { answer: "400", recorded: "no", outcome: "unknown" },
80
+ { answer: "401 not_applied", recorded: "no", outcome: "refused", code: "AUTH_REQUIRED" },
81
+ { answer: "401 write_outcome_unknown", recorded: "maybe", outcome: "unknown" },
82
+ { answer: "401 other", recorded: "unknown", outcome: "refused", code: "AUTH_REQUIRED" },
83
+ { answer: "403", recorded: "no", outcome: "refused", code: "AUTH_REQUIRED" },
84
+ { answer: "503", recorded: "maybe", outcome: "unknown" },
85
+ { answer: "other status", recorded: "unknown", outcome: "unknown" },
86
+ { answer: "not sent", recorded: "no", outcome: "refused", code: "AUTH_REQUIRED" },
87
+ { answer: "carrier", recorded: "maybe", outcome: "unknown" },
88
+ ]);
89
+ export const OUTCOME_ANSWER_ROWS = Object.freeze([
90
+ { answer: "200 absent", result: "null" },
91
+ { answer: "200 absent past retention", result: "unknown" },
92
+ { answer: "200 pending", result: "pending" },
93
+ { answer: "200 committed", result: "committed" },
94
+ { answer: "200 refused", result: "recorded" },
95
+ { answer: "200 committed contradiction", result: "throws" },
96
+ { answer: "400", result: "throws" },
97
+ { answer: "401", result: "throws" },
98
+ { answer: "403", result: "throws" },
99
+ { answer: "503", result: "throws" },
100
+ { answer: "malformed", result: "throws" },
101
+ { answer: "carrier", result: "throws" },
102
+ ]);
103
+ export const READ_ANSWER_ROWS = Object.freeze([
104
+ { answer: "capabilities 200", result: "admitted" },
105
+ { answer: "heads 200", result: "admitted" },
106
+ { answer: "heads 304", result: "not-modified" },
107
+ { answer: "heads 200 page", result: "admitted" },
108
+ { answer: "snapshot 200 complete", result: "admitted" },
109
+ { answer: "snapshot 200 page", result: "admitted" },
110
+ { answer: "snapshot 200 truncated", result: "truncated" },
111
+ { answer: "refusal 409 concurrent_change", result: "restart" },
112
+ { answer: "refusal 400 invalid_input", result: "authority" },
113
+ { answer: "refusal 401 unauthenticated", result: "authority" },
114
+ { answer: "refusal 404 bundle_not_found", result: "authority" },
115
+ { answer: "refusal 422 result_too_large", result: "authority" },
116
+ { answer: "refusal 422 validation_failed", result: "authority" },
117
+ { answer: "refusal 503 backend_unavailable", result: "offline" },
118
+ ]);
119
+ // ── the operation result envelope ──────────────────────────────────────────────────────────
120
+ /** The codes a write refusal may carry: the hosted write schema's closed set. */
121
+ export const WRITE_ERROR_CODES = Object.freeze([
122
+ "field_action_refused",
123
+ "invalid_input",
124
+ "insufficient_scope",
125
+ "bundle_not_found",
126
+ "backend_unavailable",
127
+ "document_not_found",
128
+ "document_exists",
129
+ "version_conflict",
130
+ "body_edit_mismatch",
131
+ "validation_failed",
132
+ "result_too_large",
133
+ "cancelled",
134
+ "deadline_exceeded",
135
+ "concurrent_change",
136
+ "write_outcome_unknown",
137
+ "internal_error",
138
+ "candidate_unavailable",
139
+ "candidate_recovery_unavailable",
140
+ "document_id_not_canonical",
141
+ "document_id_collision",
142
+ "request_capacity",
143
+ "deletions_held",
144
+ "definition_incompatible",
145
+ ]);
146
+ /** The whole-document delete: its success names the tombstone as `version`, and the version that left. */
147
+ export const DELETE_OPERATION_ID = "documents.delete.v1";
148
+ /** At most this many documents are named per finding in {@link definitionFindingsText}; the count says the rest. */
149
+ const FINDING_IDS_SHOWN = 5;
150
+ /** The bound on the findings text: the refusal message is journaled, so it stays small. */
151
+ export const DEFINITION_FINDINGS_TEXT_BYTES = 2048;
152
+ /** One part of a finding as text to show: host text, stripped of control and format characters; absent when not short text. */
153
+ const findingText = (value) => {
154
+ if (typeof value !== "string" || value.length > 256)
155
+ return undefined;
156
+ const text = stripHostText(value, 256);
157
+ return text.length > 0 ? text : undefined;
158
+ };
159
+ /**
160
+ * A model-change refusal's findings (`definitionDetails`) as text a person reads: one clause per
161
+ * finding, naming the rule, the Kind's type and field, the core code, and up to five documents
162
+ * with the full count, within {@link DEFINITION_FINDINGS_TEXT_BYTES}. Read leniently: a finding
163
+ * without a rule, or a part that is not short text, is left out; anything else the host sends is
164
+ * ignored. Empty when nothing is readable. The findings carry no values, bodies or authors, so
165
+ * neither does this.
166
+ */
167
+ export function definitionFindingsText(details) {
168
+ const findings = isRecord(details) && Array.isArray(details.findings) ? details.findings : [];
169
+ const clauses = [];
170
+ for (const finding of findings) {
171
+ if (!isRecord(finding))
172
+ continue;
173
+ const rule = findingText(finding.rule);
174
+ if (!rule)
175
+ continue;
176
+ const type = findingText(finding.type);
177
+ const conventionId = findingText(finding.conventionId);
178
+ const field = findingText(finding.field);
179
+ const detail = findingText(finding.detail);
180
+ const where = [type ? `Kind '${type}'` : conventionId ? `'${conventionId}'` : "", field ? `field '${field}'` : ""].filter(Boolean).join(" ");
181
+ const instances = isRecord(finding.instances) ? finding.instances : undefined;
182
+ const total = instances && Number.isSafeInteger(instances.count) && instances.count > 0 ? instances.count : 0;
183
+ const ids = instances && Array.isArray(instances.ids) ? instances.ids.map(findingText).filter((id) => id !== undefined) : [];
184
+ const shown = ids.slice(0, FINDING_IDS_SHOWN);
185
+ const documents = total > 0 ? `: ${total} document${total === 1 ? "" : "s"}${shown.length > 0 ? `, ${shown.join(", ")}${total > shown.length ? ", ..." : ""}` : ""}` : "";
186
+ clauses.push(`${rule}${where ? ` on ${where}` : ""}${detail ? ` (${detail})` : ""}${documents}`);
187
+ }
188
+ const more = isRecord(details) && details.truncated === true;
189
+ let text = "";
190
+ for (const [index, clause] of clauses.entries()) {
191
+ const next = text === "" ? clause : `${text}; ${clause}`;
192
+ const rest = clauses.length - index;
193
+ if (new TextEncoder().encode(next).byteLength > DEFINITION_FINDINGS_TEXT_BYTES - 32) {
194
+ // One clause alone can pass the bound (every part at the host's 256): it is cut, not dropped.
195
+ return text === "" ? `${clause.slice(0, 512)}...${rest > 1 ? `; and ${rest - 1} more` : ""}` : `${text}; and ${rest} more`;
196
+ }
197
+ text = next;
198
+ }
199
+ return more && text !== "" ? `${text}; and more` : text;
200
+ }
201
+ export class HostedAnswerError extends Error {
202
+ name = "HostedAnswerError";
203
+ }
204
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
205
+ const onlyKeys = (value, allowed) => Object.keys(value).every((key) => allowed.includes(key));
206
+ const DATA_KEYS = ["bundleId", "documentId", "version", "changed", "scope"];
207
+ const DELETE_DATA_KEYS = [...DATA_KEYS, "deletedVersion", "deleted"];
208
+ const ERROR_KEYS = ["code", "message", "retryable", "writeState", "currentVersion", "diagnostics", "fieldActionDetails", "definitionDetails", "candidate", "retentionUnavailable", "scope", "resetAt", "deletions", "baseline"];
209
+ const count = (value) => Number.isSafeInteger(value) && value >= 1;
210
+ /**
211
+ * A write operation's result envelope, admitted or refused as one: the operation it answers,
212
+ * the document it names, and a success with a content version or a refusal with a known code
213
+ * and write state. A refusal's detail blocks (diagnostics, corrective details) are carried but
214
+ * not interpreted here. `write_outcome_unknown` must say its write state is unknown.
215
+ */
216
+ export function parseWriteResult(raw, expected) {
217
+ const refuse = () => new HostedAnswerError("the write result envelope is not one the client admits");
218
+ if (!isRecord(raw) || !onlyKeys(raw, ["ok", "operationId", "data", "error"]) || typeof raw.operationId !== "string" || !expected.operationIds.includes(raw.operationId))
219
+ throw refuse();
220
+ const { operationId } = raw;
221
+ if (raw.ok === true) {
222
+ const data = raw.data;
223
+ // A delete's success, and only a delete's, names the version that left and says it left.
224
+ const deletion = operationId === DELETE_OPERATION_ID;
225
+ if (raw.error !== undefined || !isRecord(data) || !onlyKeys(data, deletion ? DELETE_DATA_KEYS : DATA_KEYS) || typeof data.bundleId !== "string" || data.bundleId.length === 0 ||
226
+ data.documentId !== expected.documentId || (expected.bundleId !== undefined && data.bundleId !== expected.bundleId) ||
227
+ !isContentVersion(data.version) || typeof data.changed !== "boolean" ||
228
+ (deletion && (!isContentVersion(data.deletedVersion) || data.deleted !== true)))
229
+ throw refuse();
230
+ const accepted = data;
231
+ return { ok: true, operationId, data: { ...accepted } };
232
+ }
233
+ if (raw.ok !== false)
234
+ throw refuse();
235
+ const error = raw.error;
236
+ if (raw.data !== undefined || !isRecord(error) || !onlyKeys(error, ERROR_KEYS) || !WRITE_ERROR_CODES.includes(error.code) ||
237
+ typeof error.message !== "string" || error.retryable !== false || (error.writeState !== "not_applied" && error.writeState !== "unknown") ||
238
+ (error.currentVersion !== undefined && !isContentVersion(error.currentVersion)) ||
239
+ (error.code === "write_outcome_unknown" && error.writeState !== "unknown") ||
240
+ (error.code === "request_capacity"
241
+ ? (error.scope !== "principal" && error.scope !== "bundle") || error.writeState !== "not_applied" || (error.resetAt !== undefined && (typeof error.resetAt !== "string" || !Number.isFinite(Date.parse(error.resetAt))))
242
+ : error.scope !== undefined || error.resetAt !== undefined) ||
243
+ (error.code === "deletions_held"
244
+ ? operationId !== DELETE_OPERATION_ID || error.writeState !== "not_applied" || !count(error.deletions) || !count(error.baseline)
245
+ : error.deletions !== undefined || error.baseline !== undefined) ||
246
+ // A model-change refusal says nothing was applied; its findings ride on it alone.
247
+ (error.code === "definition_incompatible" && error.writeState !== "not_applied") ||
248
+ (error.definitionDetails !== undefined && error.code !== "definition_incompatible"))
249
+ throw refuse();
250
+ return { ok: false, operationId, error: { ...error } };
251
+ }
252
+ // ── classifying an identified-write answer ─────────────────────────────────────────────────
253
+ /** The refusals answered before dispatch, by status: the sync quota, and the mass-delete hold. */
254
+ const BEFORE_DISPATCH = new Map([
255
+ [429, { code: "request_capacity", lenient: true }],
256
+ [428, { code: "deletions_held", lenient: false }],
257
+ ]);
258
+ const rowsByAnswer = new Map(UPDATE_ANSWER_ROWS.map((row) => [row.answer, row]));
259
+ /** The row named `answer`; every name this module uses is in the table. */
260
+ export function updateRow(answer) {
261
+ const row = rowsByAnswer.get(answer);
262
+ if (!row)
263
+ throw new RangeError(`no update answer row '${answer}'`);
264
+ return row;
265
+ }
266
+ /** The row an identified-write answer falls under, and the validated envelope when it carries one. */
267
+ export function classifyWriteAnswer(answer, expected) {
268
+ const { status, body } = answer;
269
+ if (status === 200) {
270
+ // The legacy denial is outside the canonical result schema, so it is read before it.
271
+ const legacy = body;
272
+ if (legacy?.ok === false && legacy.error?.code === "access_denied")
273
+ return { row: updateRow("200 access_denied") };
274
+ let result;
275
+ try {
276
+ result = parseWriteResult(body, expected);
277
+ }
278
+ catch {
279
+ return { row: updateRow("200 other") };
280
+ }
281
+ if (result.ok)
282
+ return { row: updateRow("200 ok"), result };
283
+ return { row: rowsByAnswer.get(`200 ${result.error.code}`) ?? updateRow("200 other"), result };
284
+ }
285
+ return classifyCarrierWriteAnswer(answer, (error) => parseWriteResult({ ok: false, operationId: expected.operationIds[0], error }, expected));
286
+ }
287
+ /** Status rows are shared across identified operation families; each family validates its own
288
+ * operation result when a before-dispatch refusal carries one. */
289
+ function classifyCarrierWriteAnswer(answer, parseRefusal) {
290
+ const { status, body } = answer;
291
+ if (status === 400)
292
+ return { row: updateRow("400") };
293
+ if (status === 401) {
294
+ const error = body?.error;
295
+ if (error?.writeState === "not_applied")
296
+ return { row: updateRow("401 not_applied") };
297
+ if (error?.code === "write_outcome_unknown")
298
+ return { row: updateRow("401 write_outcome_unknown") };
299
+ return { row: updateRow("401 other") };
300
+ }
301
+ if (status === 403)
302
+ return { row: updateRow("403") };
303
+ // The refusals the host answers before dispatch, each with its own status and code. The
304
+ // capacity refusal is read leniently (its early hosts left fields out); the mass-delete hold is
305
+ // parsed exactly as the host sends it, so a 428 that does not say it applied nothing is not one.
306
+ const beforeDispatch = BEFORE_DISPATCH.get(status);
307
+ if (beforeDispatch) {
308
+ const error = body?.error;
309
+ if (!isRecord(error) || error.code !== beforeDispatch.code)
310
+ return { row: updateRow("other status") };
311
+ try {
312
+ const sent = beforeDispatch.lenient ? { retryable: false, writeState: "not_applied", message: "", ...error } : error;
313
+ return { row: updateRow(`${status} ${beforeDispatch.code}`), result: parseRefusal(sent) };
314
+ }
315
+ catch {
316
+ return { row: updateRow("other status") };
317
+ }
318
+ }
319
+ if (status === 503)
320
+ return { row: updateRow("503") };
321
+ return { row: updateRow("other status") };
322
+ }
323
+ // ── the outcome lookup answer ──────────────────────────────────────────────────────────────
324
+ /** Why an outcome lookup could not produce evidence; the primitive counts it as a failed lookup. */
325
+ export class HostedOutcomeError extends Error {
326
+ name = "HostedOutcomeError";
327
+ reason;
328
+ status;
329
+ code;
330
+ constructor(reason, status, code) {
331
+ super(status === undefined ? reason : `${reason}: ${status}${code ? ` ${code}` : ""}`);
332
+ this.reason = reason;
333
+ this.status = status;
334
+ this.code = code;
335
+ }
336
+ }
337
+ /** An outcome answer carries the committed document's exact bytes under this bound. */
338
+ export const OUTCOME_CONTENT_BYTES = 1024 * 1024;
339
+ /** The bytes a canonical base64 string encodes, refused when it is not one or exceeds `maximum`. */
340
+ function decodeBase64(text, maximum) {
341
+ if (text.length > 4 * Math.ceil(maximum / 3) || text.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(text))
342
+ throw new HostedOutcomeError("malformed");
343
+ const binary = atob(text);
344
+ if (binary.length > maximum)
345
+ throw new HostedOutcomeError("malformed");
346
+ const bytes = new Uint8Array(binary.length);
347
+ for (let index = 0; index < binary.length; index++)
348
+ bytes[index] = binary.charCodeAt(index);
349
+ return bytes;
350
+ }
351
+ /**
352
+ * The lookup route's `200` answer, admitted or refused as one: `schemaVersion` 1, the request
353
+ * identity and binding it answers for, and one status. A committed answer carries the original
354
+ * validated success and the committed document's exact bytes as base64 at the receipt's
355
+ * version (a delete's carries none: a tombstone has no bytes); a refused answer carries the
356
+ * original definitive failure. Anything else, including a
357
+ * stored result whose write state is not definitive, is malformed evidence.
358
+ */
359
+ export function decodeOutcomeAnswer(value, expected) {
360
+ const malformed = () => new HostedOutcomeError("malformed");
361
+ if (!isRecord(value))
362
+ throw malformed();
363
+ const body = value;
364
+ if (body.schemaVersion !== 1 || body.requestId !== expected.requestId || body.binding !== expected.binding)
365
+ throw malformed();
366
+ const result = () => {
367
+ try {
368
+ return parseWriteResult(body.result, { operationIds: expected.operationIds, documentId: expected.documentId, bundleId: expected.bundleId });
369
+ }
370
+ catch {
371
+ throw malformed();
372
+ }
373
+ };
374
+ const observation = body.status;
375
+ if (observation === "absent" || observation === "pending") {
376
+ if (body.result !== undefined || body.content !== undefined)
377
+ throw malformed();
378
+ return { status: observation };
379
+ }
380
+ switch (observation) {
381
+ case "committed": {
382
+ const parsed = result();
383
+ // A committed delete carries the recorded result and no content: nothing it committed has bytes.
384
+ if (parsed.ok && parsed.operationId === DELETE_OPERATION_ID) {
385
+ if (body.content !== undefined)
386
+ throw malformed();
387
+ return { status: "committed", result: parsed, content: null };
388
+ }
389
+ const content = body.content;
390
+ if (!parsed.ok || !isRecord(content) || content.encoding !== "base64" || !isContentVersion(content.version) || typeof content.bytes !== "string")
391
+ throw malformed();
392
+ return { status: "committed", result: parsed, content: { version: content.version, bytes: decodeBase64(content.bytes, OUTCOME_CONTENT_BYTES) } };
393
+ }
394
+ case "refused": {
395
+ const parsed = result();
396
+ if (parsed.ok || parsed.error.writeState !== "not_applied" || body.content !== undefined)
397
+ throw malformed();
398
+ return { status: "refused", result: parsed };
399
+ }
400
+ default:
401
+ throw malformed();
402
+ }
403
+ }
404
+ // ── explicit ordinary-file results ────────────────────────────────────────────────────────
405
+ export { BLOB_OPERATION_IDS } from "../blob-contract.js";
406
+ /** Preserve the hosted answer error facade around the neutral result grammar. */
407
+ export function parseBlobWriteResult(raw, expected) {
408
+ try {
409
+ return decodeBlobWriteResult(raw, expected);
410
+ }
411
+ catch {
412
+ throw new HostedAnswerError("the blob write result does not answer the retained intent");
413
+ }
414
+ }
415
+ /** Blob operations share the document carrier rows, while retaining their separate result
416
+ * grammar. Malformed 200 answers stay unknown, never settling a possible delivery. */
417
+ export function classifyBlobWriteAnswer(answer, expected) {
418
+ if (answer.status !== 200)
419
+ return classifyCarrierWriteAnswer(answer, error => parseBlobWriteResult({ ok: false, operationId: expected.operationId, error }, expected));
420
+ try {
421
+ const result = parseBlobWriteResult(answer.body, expected);
422
+ return { row: result.ok ? updateRow("200 ok") : rowsByAnswer.get(`200 ${result.error.code}`) ?? updateRow("200 other"), result };
423
+ }
424
+ catch {
425
+ return { row: updateRow("200 other") };
426
+ }
427
+ }
428
+ /** Immutable blob evidence uses the common status/identity envelope without content bytes.
429
+ * A terminal result is checked against the original intent, never a later head observation. */
430
+ export function decodeBlobOutcomeAnswer(value, expected) {
431
+ const malformed = () => new HostedOutcomeError("malformed");
432
+ if (!isBlobWriteExpected(expected) || !isRecord(value) || !onlyKeys(value, ["schemaVersion", "requestId", "binding", "status", "result"]) ||
433
+ value.schemaVersion !== 1 || value.requestId !== expected.requestId || value.binding !== expected.binding ||
434
+ !isWriteRequestId(expected.requestId) || !isContentVersion(expected.binding))
435
+ throw malformed();
436
+ if (value.status === "absent") {
437
+ if (value.result !== undefined)
438
+ throw malformed();
439
+ return { status: "absent" };
440
+ }
441
+ let result;
442
+ try {
443
+ result = parseBlobWriteResult(value.result, expected);
444
+ }
445
+ catch {
446
+ throw malformed();
447
+ }
448
+ if (value.status === "committed" && result.ok)
449
+ return { status: "committed", result };
450
+ if (value.status === "refused" && !result.ok && result.error.writeState === "not_applied")
451
+ return { status: "refused", result };
452
+ throw malformed();
453
+ }
454
+ //# sourceMappingURL=answer-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-rows.js","sourceRoot":"","sources":["../../src/hosted-transport/answer-rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type BlobHead } from "../blob-contract.js";
2
+ import { type HostedCarrier } from "./carrier.js";
3
+ import { type HostedCapabilities } from "./read-adapter.js";
4
+ export type HostedBlobHead = BlobHead;
5
+ export interface HostedBlobHeads {
6
+ readonly bundleId: string;
7
+ readonly revision: number;
8
+ readonly digest: string;
9
+ readonly heads: readonly HostedBlobHead[];
10
+ }
11
+ export interface HostedBlobRead extends HostedBlobHead {
12
+ readonly bytes: Uint8Array;
13
+ }
14
+ export interface HostedBlobReadAdapterOptions {
15
+ readonly carrier: HostedCarrier;
16
+ readonly bundleId: string;
17
+ readonly prefix?: string;
18
+ /** The caller owns this adapter's lifetime, as it owns its carrier and capability cache. */
19
+ readonly signal: AbortSignal;
20
+ readonly capabilities: () => Promise<HostedCapabilities>;
21
+ readonly sleep?: (ms: number, signal: AbortSignal) => Promise<void>;
22
+ }
23
+ export interface HostedBlobReadAdapter {
24
+ heads(): Promise<HostedBlobHeads>;
25
+ read(pin: HostedBlobHead): Promise<HostedBlobRead>;
26
+ }
27
+ export declare const HOSTED_BLOB_READ_BOUNDS: Readonly<{
28
+ bytes: number;
29
+ heads: 10000;
30
+ headsPerPage: 1000;
31
+ headsPageBytes: number;
32
+ cursorChars: 1024;
33
+ }>;
34
+ export declare function createHostedBlobReadAdapter(options: HostedBlobReadAdapterOptions): HostedBlobReadAdapter;
35
+ //# sourceMappingURL=blob-reads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-reads.d.ts","sourceRoot":"","sources":["../../src/hosted-transport/blob-reads.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIrE,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGjG,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AACtC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AACD,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AACD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AACD,MAAM,WAAW,qBAAqB;IACpC,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,uBAAuB;;;;;;EAOlC,CAAC;AAcH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,4BAA4B,GAAG,qBAAqB,CA8GxG"}