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

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 (612) hide show
  1. package/README.md +1209 -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 +35 -13
  87. package/dist/document-mutation.d.ts.map +1 -1
  88. package/dist/document-mutation.js +124 -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/history-pages.d.ts +55 -0
  221. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  222. package/dist/hosted-transport/history-pages.js +69 -0
  223. package/dist/hosted-transport/history-pages.js.map +1 -0
  224. package/dist/hosted-transport/index.d.ts +18 -0
  225. package/dist/hosted-transport/index.d.ts.map +1 -0
  226. package/dist/hosted-transport/index.js +18 -0
  227. package/dist/hosted-transport/index.js.map +1 -0
  228. package/dist/hosted-transport/operations.d.ts +85 -0
  229. package/dist/hosted-transport/operations.d.ts.map +1 -0
  230. package/dist/hosted-transport/operations.js +128 -0
  231. package/dist/hosted-transport/operations.js.map +1 -0
  232. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  233. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  234. package/dist/hosted-transport/paged-reads.js +238 -0
  235. package/dist/hosted-transport/paged-reads.js.map +1 -0
  236. package/dist/hosted-transport/read-adapter.d.ts +256 -0
  237. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  238. package/dist/hosted-transport/read-adapter.js +568 -0
  239. package/dist/hosted-transport/read-adapter.js.map +1 -0
  240. package/dist/hosted-transport/root-write.d.ts +114 -0
  241. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  242. package/dist/hosted-transport/root-write.js +171 -0
  243. package/dist/hosted-transport/root-write.js.map +1 -0
  244. package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
  245. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  246. package/dist/hosted-transport/whole-document-transport.js +447 -0
  247. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  248. package/dist/identity-fold.d.ts +18 -0
  249. package/dist/identity-fold.d.ts.map +1 -0
  250. package/dist/identity-fold.js +22 -0
  251. package/dist/identity-fold.js.map +1 -0
  252. package/dist/index.d.ts +41 -11
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/index.js +31 -9
  255. package/dist/index.js.map +1 -1
  256. package/dist/indexeddb-backend.d.ts +25 -33
  257. package/dist/indexeddb-backend.d.ts.map +1 -1
  258. package/dist/indexeddb-backend.js +264 -8
  259. package/dist/indexeddb-backend.js.map +1 -1
  260. package/dist/inventory-guard.d.ts +58 -0
  261. package/dist/inventory-guard.d.ts.map +1 -0
  262. package/dist/inventory-guard.js +169 -0
  263. package/dist/inventory-guard.js.map +1 -0
  264. package/dist/journaled-backend.d.ts +149 -9
  265. package/dist/journaled-backend.d.ts.map +1 -1
  266. package/dist/journaled-backend.js +64 -58
  267. package/dist/journaled-backend.js.map +1 -1
  268. package/dist/kind-authoring.d.ts +170 -0
  269. package/dist/kind-authoring.d.ts.map +1 -0
  270. package/dist/kind-authoring.js +452 -0
  271. package/dist/kind-authoring.js.map +1 -0
  272. package/dist/kind-changes.d.ts +45 -0
  273. package/dist/kind-changes.d.ts.map +1 -0
  274. package/dist/kind-changes.js +96 -0
  275. package/dist/kind-changes.js.map +1 -0
  276. package/dist/kind-conformance-error.d.ts +15 -0
  277. package/dist/kind-conformance-error.d.ts.map +1 -0
  278. package/dist/kind-conformance-error.js +20 -0
  279. package/dist/kind-conformance-error.js.map +1 -0
  280. package/dist/kind-coverage.d.ts +99 -0
  281. package/dist/kind-coverage.d.ts.map +1 -0
  282. package/dist/kind-coverage.js +186 -0
  283. package/dist/kind-coverage.js.map +1 -0
  284. package/dist/kind-deprecation.d.ts +32 -0
  285. package/dist/kind-deprecation.d.ts.map +1 -0
  286. package/dist/kind-deprecation.js +141 -0
  287. package/dist/kind-deprecation.js.map +1 -0
  288. package/dist/kind-field-mutation.d.ts +4 -0
  289. package/dist/kind-field-mutation.d.ts.map +1 -1
  290. package/dist/kind-field-mutation.js +28 -3
  291. package/dist/kind-field-mutation.js.map +1 -1
  292. package/dist/kinds-load.js +4 -4
  293. package/dist/kinds-load.js.map +1 -1
  294. package/dist/kinds.d.ts +111 -2
  295. package/dist/kinds.d.ts.map +1 -1
  296. package/dist/kinds.js +386 -20
  297. package/dist/kinds.js.map +1 -1
  298. package/dist/link-emit.d.ts +29 -0
  299. package/dist/link-emit.d.ts.map +1 -0
  300. package/dist/link-emit.js +39 -0
  301. package/dist/link-emit.js.map +1 -0
  302. package/dist/link-types.d.ts +27 -0
  303. package/dist/link-types.d.ts.map +1 -0
  304. package/dist/link-types.js +60 -0
  305. package/dist/link-types.js.map +1 -0
  306. package/dist/links.d.ts +52 -3
  307. package/dist/links.d.ts.map +1 -1
  308. package/dist/links.js +259 -18
  309. package/dist/links.js.map +1 -1
  310. package/dist/managed-document-metadata.d.ts +2 -0
  311. package/dist/managed-document-metadata.d.ts.map +1 -0
  312. package/dist/managed-document-metadata.js +9 -0
  313. package/dist/managed-document-metadata.js.map +1 -0
  314. package/dist/memory-backend.d.ts +3 -0
  315. package/dist/memory-backend.d.ts.map +1 -1
  316. package/dist/memory-backend.js +44 -2
  317. package/dist/memory-backend.js.map +1 -1
  318. package/dist/okf-actor.d.ts +1 -0
  319. package/dist/okf-actor.d.ts.map +1 -1
  320. package/dist/okf-actor.js +1 -0
  321. package/dist/okf-actor.js.map +1 -1
  322. package/dist/okf-authoring.d.ts +4 -0
  323. package/dist/okf-authoring.d.ts.map +1 -0
  324. package/dist/okf-authoring.js +12 -0
  325. package/dist/okf-authoring.js.map +1 -0
  326. package/dist/okf-standard-fields.d.ts +3 -0
  327. package/dist/okf-standard-fields.d.ts.map +1 -1
  328. package/dist/okf-standard-fields.js +3 -0
  329. package/dist/okf-standard-fields.js.map +1 -1
  330. package/dist/path-fold.d.ts +39 -0
  331. package/dist/path-fold.d.ts.map +1 -0
  332. package/dist/path-fold.js +41 -0
  333. package/dist/path-fold.js.map +1 -0
  334. package/dist/paths.d.ts +18 -0
  335. package/dist/paths.d.ts.map +1 -1
  336. package/dist/paths.js +32 -0
  337. package/dist/paths.js.map +1 -1
  338. package/dist/platform.d.ts +13 -2
  339. package/dist/platform.d.ts.map +1 -1
  340. package/dist/platform.js +16 -0
  341. package/dist/platform.js.map +1 -1
  342. package/dist/portable-export.d.ts +119 -0
  343. package/dist/portable-export.d.ts.map +1 -0
  344. package/dist/portable-export.js +501 -0
  345. package/dist/portable-export.js.map +1 -0
  346. package/dist/publication-filesystem.d.ts +1 -1
  347. package/dist/publication-filesystem.d.ts.map +1 -1
  348. package/dist/publication-filesystem.js +1 -1
  349. package/dist/publication-filesystem.js.map +1 -1
  350. package/dist/qualified-links.d.ts +67 -0
  351. package/dist/qualified-links.d.ts.map +1 -0
  352. package/dist/qualified-links.js +117 -0
  353. package/dist/qualified-links.js.map +1 -0
  354. package/dist/query-filter.d.ts +16 -2
  355. package/dist/query-filter.d.ts.map +1 -1
  356. package/dist/query-filter.js +40 -1
  357. package/dist/query-filter.js.map +1 -1
  358. package/dist/query-order.d.ts +22 -0
  359. package/dist/query-order.d.ts.map +1 -0
  360. package/dist/query-order.js +43 -0
  361. package/dist/query-order.js.map +1 -0
  362. package/dist/recipe-lifecycle/errors.d.ts +96 -0
  363. package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
  364. package/dist/recipe-lifecycle/errors.js +122 -0
  365. package/dist/recipe-lifecycle/errors.js.map +1 -0
  366. package/dist/recipe-lifecycle/evolution.d.ts +124 -0
  367. package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
  368. package/dist/recipe-lifecycle/evolution.js +993 -0
  369. package/dist/recipe-lifecycle/evolution.js.map +1 -0
  370. package/dist/recipe-lifecycle/index.d.ts +34 -0
  371. package/dist/recipe-lifecycle/index.d.ts.map +1 -0
  372. package/dist/recipe-lifecycle/index.js +28 -0
  373. package/dist/recipe-lifecycle/index.js.map +1 -0
  374. package/dist/recipe-lifecycle/install.d.ts +155 -0
  375. package/dist/recipe-lifecycle/install.d.ts.map +1 -0
  376. package/dist/recipe-lifecycle/install.js +604 -0
  377. package/dist/recipe-lifecycle/install.js.map +1 -0
  378. package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
  379. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
  380. package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
  381. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
  382. package/dist/recipe-lifecycle/retirement-apply.d.ts +59 -0
  383. package/dist/recipe-lifecycle/retirement-apply.d.ts.map +1 -0
  384. package/dist/recipe-lifecycle/retirement-apply.js +165 -0
  385. package/dist/recipe-lifecycle/retirement-apply.js.map +1 -0
  386. package/dist/recipe-lifecycle/retirement.d.ts +89 -0
  387. package/dist/recipe-lifecycle/retirement.d.ts.map +1 -0
  388. package/dist/recipe-lifecycle/retirement.js +347 -0
  389. package/dist/recipe-lifecycle/retirement.js.map +1 -0
  390. package/dist/recipe-lifecycle/stamp.d.ts +151 -0
  391. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
  392. package/dist/recipe-lifecycle/stamp.js +364 -0
  393. package/dist/recipe-lifecycle/stamp.js.map +1 -0
  394. package/dist/recipe-set-preflight.d.ts +139 -0
  395. package/dist/recipe-set-preflight.d.ts.map +1 -0
  396. package/dist/recipe-set-preflight.js +536 -0
  397. package/dist/recipe-set-preflight.js.map +1 -0
  398. package/dist/recipes.d.ts +29 -1
  399. package/dist/recipes.d.ts.map +1 -1
  400. package/dist/recipes.js +137 -1
  401. package/dist/recipes.js.map +1 -1
  402. package/dist/record-overlay/apply.d.ts +43 -0
  403. package/dist/record-overlay/apply.d.ts.map +1 -0
  404. package/dist/record-overlay/apply.js +527 -0
  405. package/dist/record-overlay/apply.js.map +1 -0
  406. package/dist/record-overlay/canonical.d.ts +22 -0
  407. package/dist/record-overlay/canonical.d.ts.map +1 -0
  408. package/dist/record-overlay/canonical.js +47 -0
  409. package/dist/record-overlay/canonical.js.map +1 -0
  410. package/dist/record-overlay/digest.d.ts +4 -0
  411. package/dist/record-overlay/digest.d.ts.map +1 -0
  412. package/dist/record-overlay/digest.js +11 -0
  413. package/dist/record-overlay/digest.js.map +1 -0
  414. package/dist/record-overlay/errors.d.ts +44 -0
  415. package/dist/record-overlay/errors.d.ts.map +1 -0
  416. package/dist/record-overlay/errors.js +55 -0
  417. package/dist/record-overlay/errors.js.map +1 -0
  418. package/dist/record-overlay/findings.d.ts +5 -0
  419. package/dist/record-overlay/findings.d.ts.map +1 -0
  420. package/dist/record-overlay/findings.js +83 -0
  421. package/dist/record-overlay/findings.js.map +1 -0
  422. package/dist/record-overlay/index.d.ts +23 -0
  423. package/dist/record-overlay/index.d.ts.map +1 -0
  424. package/dist/record-overlay/index.js +21 -0
  425. package/dist/record-overlay/index.js.map +1 -0
  426. package/dist/record-overlay/plan.d.ts +12 -0
  427. package/dist/record-overlay/plan.d.ts.map +1 -0
  428. package/dist/record-overlay/plan.js +285 -0
  429. package/dist/record-overlay/plan.js.map +1 -0
  430. package/dist/record-overlay/policy.d.ts +74 -0
  431. package/dist/record-overlay/policy.d.ts.map +1 -0
  432. package/dist/record-overlay/policy.js +235 -0
  433. package/dist/record-overlay/policy.js.map +1 -0
  434. package/dist/record-overlay/redact.d.ts +3 -0
  435. package/dist/record-overlay/redact.d.ts.map +1 -0
  436. package/dist/record-overlay/redact.js +27 -0
  437. package/dist/record-overlay/redact.js.map +1 -0
  438. package/dist/record-overlay/signal-kind.d.ts +30 -0
  439. package/dist/record-overlay/signal-kind.d.ts.map +1 -0
  440. package/dist/record-overlay/signal-kind.js +38 -0
  441. package/dist/record-overlay/signal-kind.js.map +1 -0
  442. package/dist/record-overlay/signal-text.d.ts +45 -0
  443. package/dist/record-overlay/signal-text.d.ts.map +1 -0
  444. package/dist/record-overlay/signal-text.js +116 -0
  445. package/dist/record-overlay/signal-text.js.map +1 -0
  446. package/dist/record-overlay/source-index.d.ts +19 -0
  447. package/dist/record-overlay/source-index.d.ts.map +1 -0
  448. package/dist/record-overlay/source-index.js +102 -0
  449. package/dist/record-overlay/source-index.js.map +1 -0
  450. package/dist/record-overlay/types.d.ts +291 -0
  451. package/dist/record-overlay/types.d.ts.map +1 -0
  452. package/dist/record-overlay/types.js +2 -0
  453. package/dist/record-overlay/types.js.map +1 -0
  454. package/dist/remote-backend.d.ts +58 -13
  455. package/dist/remote-backend.d.ts.map +1 -1
  456. package/dist/remote-backend.js +156 -36
  457. package/dist/remote-backend.js.map +1 -1
  458. package/dist/remote-document-codec.d.ts +2 -1
  459. package/dist/remote-document-codec.d.ts.map +1 -1
  460. package/dist/remote-document-codec.js +3 -2
  461. package/dist/remote-document-codec.js.map +1 -1
  462. package/dist/remote-error.d.ts +17 -1
  463. package/dist/remote-error.d.ts.map +1 -1
  464. package/dist/remote-error.js +32 -2
  465. package/dist/remote-error.js.map +1 -1
  466. package/dist/remote-operations.d.ts +0 -40
  467. package/dist/remote-operations.d.ts.map +1 -1
  468. package/dist/remote-operations.js +26 -6
  469. package/dist/remote-operations.js.map +1 -1
  470. package/dist/remote-parsers.d.ts +1 -1
  471. package/dist/remote-parsers.js +1 -1
  472. package/dist/search/backend-source.d.ts +6 -0
  473. package/dist/search/backend-source.d.ts.map +1 -0
  474. package/dist/search/backend-source.js +33 -0
  475. package/dist/search/backend-source.js.map +1 -0
  476. package/dist/search/contract.d.ts +151 -0
  477. package/dist/search/contract.d.ts.map +1 -0
  478. package/dist/search/contract.js +78 -0
  479. package/dist/search/contract.js.map +1 -0
  480. package/dist/search/errors.d.ts +30 -0
  481. package/dist/search/errors.d.ts.map +1 -0
  482. package/dist/search/errors.js +50 -0
  483. package/dist/search/errors.js.map +1 -0
  484. package/dist/search/identity.d.ts +12 -0
  485. package/dist/search/identity.d.ts.map +1 -0
  486. package/dist/search/identity.js +90 -0
  487. package/dist/search/identity.js.map +1 -0
  488. package/dist/search/index.d.ts +16 -0
  489. package/dist/search/index.d.ts.map +1 -0
  490. package/dist/search/index.js +15 -0
  491. package/dist/search/index.js.map +1 -0
  492. package/dist/search/memory-source.d.ts +36 -0
  493. package/dist/search/memory-source.d.ts.map +1 -0
  494. package/dist/search/memory-source.js +235 -0
  495. package/dist/search/memory-source.js.map +1 -0
  496. package/dist/search/rank.d.ts +34 -0
  497. package/dist/search/rank.d.ts.map +1 -0
  498. package/dist/search/rank.js +129 -0
  499. package/dist/search/rank.js.map +1 -0
  500. package/dist/search/row-text.d.ts +38 -0
  501. package/dist/search/row-text.d.ts.map +1 -0
  502. package/dist/search/row-text.js +88 -0
  503. package/dist/search/row-text.js.map +1 -0
  504. package/dist/search/search.d.ts +28 -0
  505. package/dist/search/search.d.ts.map +1 -0
  506. package/dist/search/search.js +257 -0
  507. package/dist/search/search.js.map +1 -0
  508. package/dist/search/source.d.ts +67 -0
  509. package/dist/search/source.d.ts.map +1 -0
  510. package/dist/search/source.js +2 -0
  511. package/dist/search/source.js.map +1 -0
  512. package/dist/search/text.d.ts +47 -0
  513. package/dist/search/text.d.ts.map +1 -0
  514. package/dist/search/text.js +150 -0
  515. package/dist/search/text.js.map +1 -0
  516. package/dist/site-capabilities.d.ts +345 -0
  517. package/dist/site-capabilities.d.ts.map +1 -0
  518. package/dist/site-capabilities.js +724 -0
  519. package/dist/site-capabilities.js.map +1 -0
  520. package/dist/source-engine/driver.d.ts +40 -0
  521. package/dist/source-engine/driver.d.ts.map +1 -0
  522. package/dist/source-engine/driver.js +392 -0
  523. package/dist/source-engine/driver.js.map +1 -0
  524. package/dist/source-engine/evidence.d.ts +39 -0
  525. package/dist/source-engine/evidence.d.ts.map +1 -0
  526. package/dist/source-engine/evidence.js +54 -0
  527. package/dist/source-engine/evidence.js.map +1 -0
  528. package/dist/source-engine/guard.d.ts +87 -0
  529. package/dist/source-engine/guard.d.ts.map +1 -0
  530. package/dist/source-engine/guard.js +427 -0
  531. package/dist/source-engine/guard.js.map +1 -0
  532. package/dist/source-engine/index.d.ts +33 -0
  533. package/dist/source-engine/index.d.ts.map +1 -0
  534. package/dist/source-engine/index.js +26 -0
  535. package/dist/source-engine/index.js.map +1 -0
  536. package/dist/source-engine/machine-state.d.ts +74 -0
  537. package/dist/source-engine/machine-state.d.ts.map +1 -0
  538. package/dist/source-engine/machine-state.js +48 -0
  539. package/dist/source-engine/machine-state.js.map +1 -0
  540. package/dist/source-engine/observe.d.ts +10 -0
  541. package/dist/source-engine/observe.d.ts.map +1 -0
  542. package/dist/source-engine/observe.js +270 -0
  543. package/dist/source-engine/observe.js.map +1 -0
  544. package/dist/source-engine/overlay.d.ts +50 -0
  545. package/dist/source-engine/overlay.d.ts.map +1 -0
  546. package/dist/source-engine/overlay.js +114 -0
  547. package/dist/source-engine/overlay.js.map +1 -0
  548. package/dist/source-engine/robots.d.ts +53 -0
  549. package/dist/source-engine/robots.d.ts.map +1 -0
  550. package/dist/source-engine/robots.js +158 -0
  551. package/dist/source-engine/robots.js.map +1 -0
  552. package/dist/source-engine/snapshot.d.ts +104 -0
  553. package/dist/source-engine/snapshot.d.ts.map +1 -0
  554. package/dist/source-engine/snapshot.js +240 -0
  555. package/dist/source-engine/snapshot.js.map +1 -0
  556. package/dist/source-engine/types.d.ts +292 -0
  557. package/dist/source-engine/types.d.ts.map +1 -0
  558. package/dist/source-engine/types.js +2 -0
  559. package/dist/source-engine/types.js.map +1 -0
  560. package/dist/source-harness/conformance.d.ts +16 -0
  561. package/dist/source-harness/conformance.d.ts.map +1 -0
  562. package/dist/source-harness/conformance.js +266 -0
  563. package/dist/source-harness/conformance.js.map +1 -0
  564. package/dist/source-harness/fixture.d.ts +97 -0
  565. package/dist/source-harness/fixture.d.ts.map +1 -0
  566. package/dist/source-harness/fixture.js +276 -0
  567. package/dist/source-harness/fixture.js.map +1 -0
  568. package/dist/source-harness/index.d.ts +22 -0
  569. package/dist/source-harness/index.d.ts.map +1 -0
  570. package/dist/source-harness/index.js +19 -0
  571. package/dist/source-harness/index.js.map +1 -0
  572. package/dist/source-harness/peer.d.ts +74 -0
  573. package/dist/source-harness/peer.d.ts.map +1 -0
  574. package/dist/source-harness/peer.js +106 -0
  575. package/dist/source-harness/peer.js.map +1 -0
  576. package/dist/source-profiles/index.d.ts +31 -0
  577. package/dist/source-profiles/index.d.ts.map +1 -0
  578. package/dist/source-profiles/index.js +206 -0
  579. package/dist/source-profiles/index.js.map +1 -0
  580. package/dist/source-profiles/link-header.d.ts +6 -0
  581. package/dist/source-profiles/link-header.d.ts.map +1 -0
  582. package/dist/source-profiles/link-header.js +131 -0
  583. package/dist/source-profiles/link-header.js.map +1 -0
  584. package/dist/storage.d.ts +9 -2
  585. package/dist/storage.d.ts.map +1 -1
  586. package/dist/storage.js +6 -1
  587. package/dist/storage.js.map +1 -1
  588. package/dist/string-identity-agreement.d.ts +35 -0
  589. package/dist/string-identity-agreement.d.ts.map +1 -0
  590. package/dist/string-identity-agreement.js +72 -0
  591. package/dist/string-identity-agreement.js.map +1 -0
  592. package/dist/types.d.ts +41 -6
  593. package/dist/types.d.ts.map +1 -1
  594. package/dist/types.js +0 -10
  595. package/dist/types.js.map +1 -1
  596. package/dist/uncertain-write.d.ts +157 -17
  597. package/dist/uncertain-write.d.ts.map +1 -1
  598. package/dist/uncertain-write.js +86 -30
  599. package/dist/uncertain-write.js.map +1 -1
  600. package/dist/versioning.d.ts +9 -4
  601. package/dist/versioning.d.ts.map +1 -1
  602. package/dist/versioning.js +9 -4
  603. package/dist/versioning.js.map +1 -1
  604. package/dist/view-launch-contract.d.ts +14 -0
  605. package/dist/view-launch-contract.d.ts.map +1 -0
  606. package/dist/view-launch-contract.js +23 -0
  607. package/dist/view-launch-contract.js.map +1 -0
  608. package/dist/write-identity.d.ts +5 -0
  609. package/dist/write-identity.d.ts.map +1 -0
  610. package/dist/write-identity.js +9 -0
  611. package/dist/write-identity.js.map +1 -0
  612. package/package.json +140 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/source-engine/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,292 @@
1
+ /** Types of `@superbee/core/source-engine`. */
2
+ import type { BoundFeed, Connector, MappingDiagnostic } from "../connectors.js";
3
+ import type { Finding, RecordChange } from "../record-overlay/types.js";
4
+ import type { ConceptId } from "../types.js";
5
+ import type { MachineState } from "./machine-state.js";
6
+ import type { FetchIdentity } from "./robots.js";
7
+ export type HttpMethod = "GET" | "POST";
8
+ /** One record as a profile normalizes it: a JSON object the connector's mapping reads by dotted path. */
9
+ export type NormalizedRecord = Readonly<Record<string, unknown>>;
10
+ export type SpecResult<Spec> = {
11
+ ok: true;
12
+ spec: Spec;
13
+ } | {
14
+ ok: false;
15
+ errors: Array<{
16
+ path: string;
17
+ message: string;
18
+ }>;
19
+ };
20
+ /** What the engine asks a transport for. A transport never follows a redirect itself. */
21
+ export interface TransportRequest {
22
+ url: string;
23
+ method: HttpMethod;
24
+ headers: Readonly<Record<string, string>>;
25
+ body?: string;
26
+ /** The most response body bytes to read; a longer body is refused, never truncated. */
27
+ maxBytes: number;
28
+ /**
29
+ * The engine's own decision that `url` names one of the auth kind's credential hosts. A
30
+ * transport sends its credential only when this is true and its own exact host match agrees.
31
+ */
32
+ credentialHost: boolean;
33
+ /** Aborts the request: the run's deadline, or the per-request timeout. */
34
+ signal?: AbortSignal;
35
+ }
36
+ /**
37
+ * A response with lowercase header names and the body bytes read, or the refusal of a body over
38
+ * `maxBytes`. A network failure rejects.
39
+ */
40
+ export type TransportResult = {
41
+ ok: true;
42
+ status: number;
43
+ headers: Readonly<Record<string, string>>;
44
+ body: string;
45
+ bytes: number;
46
+ } | {
47
+ ok: false;
48
+ refused: "too_large";
49
+ };
50
+ /**
51
+ * The one network port. A credential-injecting transport adds a credential only toward the
52
+ * connector's credential hosts over https, decided per URL, and never forwards it to another host;
53
+ * `@superbee/core/source-harness` holds the conformance suite every transport passes.
54
+ */
55
+ export interface Transport {
56
+ request(input: TransportRequest): Promise<TransportResult>;
57
+ }
58
+ /** A request as a profile makes it, through the engine's guarded transport. */
59
+ export interface ProfileRequest {
60
+ url: string;
61
+ method?: HttpMethod;
62
+ headers?: Readonly<Record<string, string>>;
63
+ body?: string;
64
+ maxBytes?: number;
65
+ }
66
+ /** A success (2xx), or in incremental mode a not-modified (304) answer; `url` is the final URL after redirects. */
67
+ export interface ProfileResponse {
68
+ status: number;
69
+ headers: Readonly<Record<string, string>>;
70
+ body: string;
71
+ url: string;
72
+ }
73
+ /**
74
+ * The transport a profile sees. Every other answer, and every refused request, stops the run: the
75
+ * call throws and the engine discards the page, whatever the profile does with the error.
76
+ */
77
+ export interface ProfileTransport {
78
+ request(input: ProfileRequest): Promise<ProfileResponse>;
79
+ }
80
+ export interface ProfileDiagnostic {
81
+ code: string;
82
+ message: string;
83
+ count?: number;
84
+ }
85
+ export interface ObserveContext<Spec, Cursor> {
86
+ spec: Spec;
87
+ bound: BoundFeed;
88
+ /** The cursor the last committed page returned; null at the start of a pass. */
89
+ cursor: Cursor | null;
90
+ /** True on the first page of a run that continues a pass an earlier run left open. */
91
+ resumed: boolean;
92
+ mode: "incremental" | "complete";
93
+ transport: ProfileTransport;
94
+ /** Requests left in this run, and the byte bound per response. */
95
+ budget: {
96
+ requests: number;
97
+ maxBytes: number;
98
+ };
99
+ now: Date;
100
+ /** Validators the last committed page stored; always null in complete mode. */
101
+ validators: Readonly<Record<string, string>> | null;
102
+ }
103
+ /** One page of a pass. */
104
+ export interface ObservePage<Cursor> {
105
+ records: readonly NormalizedRecord[];
106
+ /** Stored once this page commits; the next page or run receives it. JSON data. */
107
+ nextCursor: Cursor | null;
108
+ /** Another page of this pass follows. */
109
+ more: boolean;
110
+ /** With `more: false`, the profile's claim that the pass listed every record of the resource. */
111
+ complete: boolean;
112
+ diagnostics?: readonly ProfileDiagnostic[];
113
+ validators?: Readonly<Record<string, string>>;
114
+ }
115
+ /**
116
+ * A versioned, named module that turns a bound Source Feed, a cursor and a transport into pages of
117
+ * normalized records. It never opens a socket, never sees a credential, never names a Kind field
118
+ * and never writes.
119
+ */
120
+ export interface SourceProfile<Spec = unknown, Cursor = unknown> {
121
+ readonly id: string;
122
+ readonly version: number;
123
+ readonly kind: "generic" | "extension";
124
+ /** Profile semantics only. */
125
+ validateSpec(spec: unknown): SpecResult<Spec>;
126
+ /** Every host a run may touch. */
127
+ hostsFor(spec: Spec, bound: BoundFeed): readonly string[];
128
+ observe(ctx: ObserveContext<Spec, Cursor>): Promise<ObservePage<Cursor>>;
129
+ }
130
+ /**
131
+ * Per-request hooks a declaration's provider rules feed. The engine's own rules hold whatever a
132
+ * hook says: `authorization`, `cookie`, `proxy-authorization`, `host`, `user-agent` and the
133
+ * method-override headers are never sent, and a POST is refused unless `post` admits it.
134
+ */
135
+ export interface RequestRules {
136
+ /** The guard inspects a response before a profile receives it. */
137
+ response?(response: ProfileResponse): void;
138
+ /**
139
+ * A lowercase header name beyond `accept` toward `url`. The validators `if-none-match` and
140
+ * `if-modified-since` are the engine's: sent in incremental mode, never in complete mode.
141
+ */
142
+ header?(name: string, url: URL): boolean;
143
+ /** A POST toward `url` with `body`; absent, every POST is refused. */
144
+ post?(url: URL, body: string | undefined): boolean;
145
+ /** Every URL after the host guard admits it: the first request and each redirect hop. */
146
+ url?(url: URL, hop: {
147
+ method: HttpMethod;
148
+ redirect: boolean;
149
+ }): boolean;
150
+ }
151
+ /** Status sets: the declaration's `errors` rows. Any other status outside 2xx and 304 is `provider_unavailable`. */
152
+ export interface StatusRules {
153
+ deferred: readonly number[];
154
+ credential_refused: readonly number[];
155
+ not_found: readonly number[];
156
+ }
157
+ export interface SourceBudget {
158
+ /** Transport calls per run, robots.txt reads and redirect hops included. */
159
+ requests: number;
160
+ /** Response body bytes per request. */
161
+ maxBytes: number;
162
+ /** Redirects followed per request. */
163
+ redirects: number;
164
+ /** Pages committed per run. */
165
+ pages: number;
166
+ /** The run's deadline when the caller passes no `signal`; with one, the caller owns the run's time. */
167
+ deadlineMs: number;
168
+ /** Each request's timeout, with or without the caller's `signal`. */
169
+ requestTimeoutMs: number;
170
+ }
171
+ export type SourceOutcome =
172
+ /** The pass reached its end in this run. */
173
+ "observed"
174
+ /** Stopped with work left (rate limit, budget, deadline); committed pages stay. */
175
+ | "deferred"
176
+ /** The credential was refused; a retry needs a changed credential. */
177
+ | "credential_refused"
178
+ /** A server error or a transport failure. */
179
+ | "provider_unavailable" | "not_found" | "unsupported_content" | "too_large"
180
+ /** A guard refused the run or a request before it was sent. */
181
+ | "refused"
182
+ /** The profile, the state store or the caller's commit failed. */
183
+ | "failed";
184
+ export interface SourceRequestRow {
185
+ method: HttpMethod;
186
+ /** Redacted. */
187
+ url: string;
188
+ purpose: "page" | "robots";
189
+ status?: number;
190
+ /** A guard refusal (nothing was sent) or the transport's `too_large`. */
191
+ refused?: string;
192
+ }
193
+ /** What the caller writes for one page: the record-overlay changes, and whether the pass ended complete. */
194
+ export interface PageCommit {
195
+ feed: ConceptId;
196
+ provider: string;
197
+ observed_at: string;
198
+ /** 1-based within the run; 0 for the replay of pending changes before the first request. */
199
+ page: number;
200
+ /** The changes were held by an earlier commit and are planned again. */
201
+ replay: boolean;
202
+ changes: readonly RecordChange[];
203
+ /** The record values the changes name, for titles. */
204
+ records: Readonly<Record<string, {
205
+ fields: Record<string, unknown>;
206
+ }>>;
207
+ /** No state was stored for this feed before this run. */
208
+ baseline: boolean;
209
+ /** This page ended a complete observation; disappearances are among the changes. */
210
+ complete: boolean;
211
+ }
212
+ /**
213
+ * External ids of changes the commit did not write. Either way the record's stored entry stays
214
+ * where it was. A `retry` change (a lost compare-and-swap, a claimed Signal) is kept pending in the
215
+ * machine state and planned again at the start of every run until it is written, refused for
216
+ * good, or superseded by a newer observation of the record. A `hold` change is not pending: the
217
+ * record is planned again when it is next observed.
218
+ */
219
+ export interface CommitResult {
220
+ hold?: readonly string[];
221
+ retry?: readonly string[];
222
+ }
223
+ export interface SourceRunReceipt {
224
+ feed: ConceptId;
225
+ provider: string;
226
+ source: string;
227
+ profile: {
228
+ id: string;
229
+ version: number;
230
+ };
231
+ mode: "incremental" | "complete";
232
+ observed_at: string;
233
+ outcome: SourceOutcome;
234
+ reason?: string;
235
+ detail?: string;
236
+ status?: number;
237
+ /** Whether the same run may succeed later without a change to the credential or declaration. */
238
+ retry: boolean;
239
+ retry_after?: string;
240
+ /** Pages committed in this run. */
241
+ pages: number;
242
+ /** Changes this run's commits did not write (`hold` and `retry`), replays included. */
243
+ held: number;
244
+ /** Changes pending when the run ended. */
245
+ pending: number;
246
+ requests: SourceRequestRow[];
247
+ pass: {
248
+ resumed: boolean;
249
+ ended: boolean;
250
+ complete: boolean;
251
+ };
252
+ changes: {
253
+ new: number;
254
+ changed: number;
255
+ disappeared: number;
256
+ };
257
+ /** The cursor stored when the run ended. */
258
+ cursor: unknown;
259
+ cursor_reset?: "profile_version";
260
+ diagnostics: MappingDiagnostic[];
261
+ profile_diagnostics: ProfileDiagnostic[];
262
+ findings: Finding[];
263
+ }
264
+ export interface ObserveSourceOptions<Spec = unknown, Cursor = unknown> {
265
+ /** The declaration's credential kind and keyless domains: the only hosts a run may reach. */
266
+ connector: Pick<Connector, "auth" | "domains">;
267
+ bound: BoundFeed;
268
+ profile: SourceProfile<Spec, Cursor>;
269
+ spec: unknown;
270
+ transport: Transport;
271
+ state: MachineState;
272
+ identity: FetchIdentity;
273
+ mode?: "incremental" | "complete";
274
+ budget?: Partial<SourceBudget>;
275
+ /**
276
+ * The run's deadline: once aborted, no request starts, the one in flight and the profile's page
277
+ * are abandoned, and the run ends `deferred`. Without one the budget's `deadlineMs` applies. A
278
+ * commit or state write in progress is never abandoned, so a hung one holds the run.
279
+ */
280
+ signal?: AbortSignal;
281
+ now?: () => Date;
282
+ /** Explicit admission by the trusted embedding host for a new bound GET policy; absent denies. */
283
+ readPolicyApproval?: {
284
+ contract: 1;
285
+ digest: string;
286
+ };
287
+ rules?: RequestRules;
288
+ statuses?: Partial<StatusRules>;
289
+ /** Write one page's changes; the cursor and record state are stored only after this resolves. */
290
+ commit(page: PageCommit): Promise<CommitResult | void>;
291
+ }
292
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/source-engine/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAExC,yGAAyG;AACzG,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjE,MAAM,MAAM,UAAU,CAAC,IAAI,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAE1H,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAExC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5D;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mHAAmH;AACnH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,EAAE,MAAM;IAC1C,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,gFAAgF;IAChF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sFAAsF;IACtF,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,aAAa,GAAG,UAAU,CAAC;IACjC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,kEAAkE;IAClE,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,GAAG,EAAE,IAAI,CAAC;IACV,+EAA+E;IAC/E,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;CACrD;AAED,0BAA0B;AAC1B,MAAM,WAAW,WAAW,CAAC,MAAM;IACjC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,kFAAkF;IAClF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yCAAyC;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,iGAAiG;IACjG,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IACvC,8BAA8B;IAC9B,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9C,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1E;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C;;;OAGG;IACH,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IACzC,sEAAsE;IACtE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,yFAAyF;IACzF,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;CACzE;AAED,oHAAoH;AACpH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa;AACvB,4CAA4C;AAC1C,UAAU;AACZ,mFAAmF;GACjF,UAAU;AACZ,sEAAsE;GACpE,oBAAoB;AACtB,6CAA6C;GAC3C,sBAAsB,GACtB,WAAW,GACX,qBAAqB,GACrB,WAAW;AACb,+DAA+D;GAC7D,SAAS;AACX,kEAAkE;GAChE,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4GAA4G;AAC5G,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,sDAAsD;IACtD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACvE,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,IAAI,EAAE,aAAa,GAAG,UAAU,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9D,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IACpE,6FAA6F;IAC7F,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,kGAAkG;IAClG,kBAAkB,CAAC,EAAE;QAAC,QAAQ,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;IACnD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,iGAAiG;IACjG,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACxD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/source-engine/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { Transport } from "../source-engine/types.js";
2
+ import { ScriptedPeer, type TransportCredential } from "./peer.js";
3
+ export interface TransportConformanceTarget {
4
+ name: string;
5
+ /** The transport under test, delivering its requests to `peer` and holding `credential`. */
6
+ create(peer: ScriptedPeer, credential: TransportCredential): Transport;
7
+ }
8
+ export interface ConformanceRow {
9
+ scenario: string;
10
+ ok: boolean;
11
+ detail?: string;
12
+ }
13
+ export declare const CONFORMANCE_SCENARIOS: readonly ["credential-reaches-its-host", "credential-stays-on-its-host", "redirect-returned-unfollowed", "cross-host-redirect-refused", "body-over-bound-refused", "private-redirect-refused"];
14
+ /** Run every conformance scenario against one transport. */
15
+ export declare function runTransportConformance(target: TransportConformanceTarget): Promise<ConformanceRow[]>;
16
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../src/source-harness/conformance.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAmC,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAuC,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAExG,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACxE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,qBAAqB,gMAOvB,CAAC;AAsOZ,4DAA4D;AAC5D,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAW3G"}
@@ -0,0 +1,266 @@
1
+ /**
2
+ * The transport conformance suite. The engine's guard cannot see headers a transport adds after
3
+ * it, so every transport proves against a scripted peer that it sends the credential only when the
4
+ * engine's `credentialHost` and its own exact host match agree (lookalike hosts included), returns
5
+ * redirects unfollowed and refuses a body over the bound, and, behind the engine, that a
6
+ * cross-host or private-address redirect reaches nothing. It returns rows rather than asserting,
7
+ * so it runs under any test runner.
8
+ */
9
+ import { bindSourceFeed, credentialHosts, parseConnectorDoc } from "../connectors.js";
10
+ import { buildKindRegistry } from "../kinds.js";
11
+ import { MemoryMachineState } from "../source-engine/machine-state.js";
12
+ import { observeSource } from "../source-engine/observe.js";
13
+ import { fetchIdentity } from "../source-engine/robots.js";
14
+ import { ScriptedPeer } from "./peer.js";
15
+ export const CONFORMANCE_SCENARIOS = Object.freeze([
16
+ "credential-reaches-its-host",
17
+ "credential-stays-on-its-host",
18
+ "redirect-returned-unfollowed",
19
+ "cross-host-redirect-refused",
20
+ "body-over-bound-refused",
21
+ "private-redirect-refused",
22
+ ]);
23
+ const CREDENTIAL_HOST = "api.github.com";
24
+ const KEYLESS_HOST = "feeds.example.org";
25
+ const OUTSIDE_HOST = "collector.example.net";
26
+ const PROBE = "conformance-probe";
27
+ const IDENTITY = fetchIdentity("SuperbeeConformance/1 (+https://superbee.example.org/conformance)");
28
+ const PRIVATE_TARGETS = Object.freeze([
29
+ "https://127.0.0.1/latest",
30
+ "https://10.0.0.5/internal",
31
+ "https://[::1]/x",
32
+ "https://[::ffff:127.0.0.1]/x",
33
+ "https://169.254.169.254/latest/meta-data/",
34
+ "https://metadata.google.internal/computeMetadata/v1/",
35
+ "https://localhost/x",
36
+ "https://api.github.com:8443/x",
37
+ "http://api.github.com/x",
38
+ ]);
39
+ /**
40
+ * Requests that must never carry the credential: hosts that only look like the credential host,
41
+ * whatever the engine says, and the credential host itself when the engine says it is not one.
42
+ */
43
+ const CREDENTIAL_PROBES = Object.freeze([
44
+ { name: "a declared keyless host", url: `https://${KEYLESS_HOST}/feed.json`, credentialHost: true },
45
+ { name: "an undeclared host", url: `https://${OUTSIDE_HOST}/collect`, credentialHost: true },
46
+ { name: "the credential host over http", url: `http://${CREDENTIAL_HOST}/repos/octo/probe/issues`, credentialHost: true },
47
+ { name: "a host starting with the credential host", url: `https://${CREDENTIAL_HOST}.${OUTSIDE_HOST}/x`, credentialHost: true },
48
+ { name: "a host ending with the credential host without a dot", url: `https://evil${CREDENTIAL_HOST}/repos/octo/probe/issues`, credentialHost: true },
49
+ { name: "the credential host with a trailing dot", url: `https://${CREDENTIAL_HOST}./x`, credentialHost: true },
50
+ { name: "the credential host as userinfo", url: `https://${CREDENTIAL_HOST}@${OUTSIDE_HOST}/x`, credentialHost: true },
51
+ { name: "the credential host on another port", url: `https://${CREDENTIAL_HOST}:8443/x`, credentialHost: true },
52
+ { name: "the credential host when the engine says otherwise", url: `https://${CREDENTIAL_HOST}/repos/octo/probe/issues`, credentialHost: false },
53
+ ]);
54
+ const record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
55
+ /** Requests the probe profile makes: one GET of `spec.url`, its host and `spec.also` declared. */
56
+ const probe = {
57
+ id: PROBE,
58
+ version: 1,
59
+ kind: "generic",
60
+ validateSpec(spec) {
61
+ if (!record(spec) || typeof spec.url !== "string")
62
+ return { ok: false, errors: [{ path: "/url", message: "is a URL" }] };
63
+ const also = Array.isArray(spec.also) ? spec.also.filter((host) => typeof host === "string") : [];
64
+ return { ok: true, spec: { url: spec.url, also } };
65
+ },
66
+ hostsFor: (spec) => [new URL(spec.url).hostname, ...spec.also],
67
+ async observe({ spec, transport }) {
68
+ await transport.request({ url: spec.url, headers: { accept: "application/json" } });
69
+ return { records: [], nextCursor: null, more: false, complete: false };
70
+ },
71
+ };
72
+ let world;
73
+ function probeWorld() {
74
+ if (world)
75
+ return world;
76
+ const registry = buildKindRegistry([{ id: "conventions/probe", body: "", frontmatter: { type: "Convention", title: "Probe", governs: "Probe", fields: { required: ["title"] } } }], [], { okfVersion: "0.2" });
77
+ const parsed = parseConnectorDoc({ id: "connectors/conformance", body: "", frontmatter: {
78
+ type: "Connector", title: "Transport conformance probe", auth: { kind: "token", provider: "github" }, domains: [KEYLESS_HOST],
79
+ record_sources: [{ name: "probe", profile: PROBE, request: { host: CREDENTIAL_HOST, method: "GET", path: "/repos/{owner}/{repo}/issues", items: "" }, target_kind: "Probe", identity: { resource: `https://${CREDENTIAL_HOST}/repos/{owner}/{repo}`, id: "{id}" }, fields: { title: "title" }, completeness: "complete" }],
80
+ } }, { kinds: registry });
81
+ if (!parsed.ok)
82
+ throw new Error(`conformance connector refused: ${parsed.errors.map((e) => e.code).join(", ")}`);
83
+ const bound = bindSourceFeed(parsed.connector, { id: "source-feeds/conformance", frontmatter: {
84
+ type: "Source Feed", connector: parsed.connector.id, source: "probe", url: `https://${CREDENTIAL_HOST}/repos/octo/probe`, owned_fields: ["title"],
85
+ } }, registry, { okfVersion: "0.2" });
86
+ return (world = { connector: parsed.connector, bound });
87
+ }
88
+ const CREDENTIALS = () => [
89
+ { hosts: credentialHosts({ kind: "token", provider: "github" }), header: "authorization", value: "Bearer conformance-secret-1" },
90
+ // A provider's own header (Vagaro's `accessToken`), so a check on `authorization` alone cannot pass.
91
+ { hosts: credentialHosts({ kind: "token", provider: "github" }), header: "accessToken", value: "conformance-secret-2" },
92
+ ];
93
+ /**
94
+ * Whether a request carries the credential anywhere: a header, the URL (decoded, so an encoded
95
+ * copy counts) or the body. The secret is the value's last word, so `Bearer x` is found as `x`.
96
+ */
97
+ function carries(request, credential) {
98
+ const secret = credential.value.split(/\s+/).at(-1);
99
+ let url = request.url;
100
+ try {
101
+ url = decodeURIComponent(request.url.replaceAll("+", " "));
102
+ }
103
+ catch { /* keep the raw URL */ }
104
+ return [...Object.values(request.headers), url, request.url, request.body ?? ""].some((text) => text.includes(secret));
105
+ }
106
+ /** Every request that carried the credential's value toward a host it does not belong to. */
107
+ function leaks(peer, credential) {
108
+ return peer.received.filter((request) => {
109
+ const url = new URL(request.url);
110
+ const allowed = url.protocol === "https:" && credential.hosts.includes(url.hostname);
111
+ return !allowed && carries(request, credential);
112
+ }).map((request) => `${request.method} ${request.url}`);
113
+ }
114
+ const answer = (routes) => (request) => {
115
+ const url = new URL(request.url);
116
+ if (url.pathname === "/robots.txt")
117
+ return { status: 404, body: "" };
118
+ return routes[`${url.origin}${url.pathname}`] ?? { status: 404, body: "" };
119
+ };
120
+ async function throughEngine(target, credential, routes, spec, maxBytes) {
121
+ const { connector, bound } = probeWorld();
122
+ const scopedBound = { ...bound, source: { ...bound.source, request: { ...bound.source.request, host: new URL(spec.url).hostname } } };
123
+ const peer = new ScriptedPeer(answer(routes));
124
+ const receipt = await observeSource({
125
+ connector, bound: scopedBound, profile: probe, spec, transport: target.create(peer, credential), state: new MemoryMachineState(), identity: IDENTITY,
126
+ mode: "complete", budget: { requests: 20, ...(maxBytes !== undefined ? { maxBytes } : {}) }, commit: async () => { },
127
+ });
128
+ return { receipt, peer };
129
+ }
130
+ async function direct(transport, url, options = {}) {
131
+ try {
132
+ return await transport.request({ url, method: "GET", headers: { accept: "application/json" }, maxBytes: options.maxBytes ?? 4096, credentialHost: options.credentialHost ?? false });
133
+ }
134
+ catch (error) {
135
+ return error instanceof Error ? error : new Error(String(error));
136
+ }
137
+ }
138
+ const CHECKS = {
139
+ async "credential-reaches-its-host"(target) {
140
+ const problems = [];
141
+ for (const credential of CREDENTIALS()) {
142
+ const peer = new ScriptedPeer(() => ({ status: 200, body: "[]" }));
143
+ await direct(target.create(peer, credential), `https://${CREDENTIAL_HOST}/repos/octo/probe/issues`, { credentialHost: true });
144
+ const sent = peer.received[0]?.headers[credential.header.toLowerCase()];
145
+ if (sent !== credential.value)
146
+ problems.push(`the ${credential.header} credential did not reach ${CREDENTIAL_HOST}`);
147
+ const { peer: engine } = await throughEngine(target, credential, { [`https://${CREDENTIAL_HOST}/repos/octo/probe/issues`]: { status: 200, body: "{}" } }, { url: `https://${CREDENTIAL_HOST}/repos/octo/probe/issues` });
148
+ if (engine.received[0]?.headers[credential.header.toLowerCase()] !== credential.value)
149
+ problems.push(`behind the engine the ${credential.header} credential did not reach ${CREDENTIAL_HOST}`);
150
+ }
151
+ return problems;
152
+ },
153
+ async "credential-stays-on-its-host"(target) {
154
+ const problems = [];
155
+ for (const credential of CREDENTIALS()) {
156
+ const peer = new ScriptedPeer(() => ({ status: 200, body: "[]" }));
157
+ const transport = target.create(peer, credential);
158
+ for (const probe of CREDENTIAL_PROBES) {
159
+ const before = peer.received.length;
160
+ await direct(transport, probe.url, { credentialHost: probe.credentialHost });
161
+ const carried = peer.received.slice(before).filter((request) => carries(request, credential));
162
+ if (carried.length)
163
+ problems.push(`${credential.header} sent toward ${probe.name}`);
164
+ }
165
+ }
166
+ return problems;
167
+ },
168
+ async "redirect-returned-unfollowed"(target) {
169
+ const [credential] = CREDENTIALS();
170
+ const peer = new ScriptedPeer(answer({
171
+ [`https://${CREDENTIAL_HOST}/a`]: { status: 302, headers: { Location: `https://${CREDENTIAL_HOST}/b` }, body: "" },
172
+ [`https://${CREDENTIAL_HOST}/b`]: { status: 200, body: "{}" },
173
+ }));
174
+ const result = await direct(target.create(peer, credential), `https://${CREDENTIAL_HOST}/a`, { credentialHost: true });
175
+ const problems = [];
176
+ if (result instanceof Error || !result.ok || result.status !== 302)
177
+ problems.push("the 302 was not returned as the answer");
178
+ else if (result.headers.location !== `https://${CREDENTIAL_HOST}/b`)
179
+ problems.push("the 302's location header was not returned under a lowercase name");
180
+ if (peer.received.length !== 1)
181
+ problems.push(`the transport sent ${peer.received.length} requests for one call`);
182
+ return problems;
183
+ },
184
+ async "cross-host-redirect-refused"(target) {
185
+ const problems = [];
186
+ const cases = [
187
+ { name: "credential host to an undeclared host", from: `https://${CREDENTIAL_HOST}/repos/octo/probe/issues`, to: `https://${OUTSIDE_HOST}/steal` },
188
+ { name: "keyless host to an undeclared host", from: `https://${KEYLESS_HOST}/repos/octo/probe/issues`, to: `https://${OUTSIDE_HOST}/steal` },
189
+ { name: "credential host to a declared keyless host", from: `https://${CREDENTIAL_HOST}/repos/octo/probe/issues`, to: `https://${KEYLESS_HOST}/repos/octo/probe/issues`, also: [KEYLESS_HOST] },
190
+ { name: "declared keyless host to the credential host", from: `https://${KEYLESS_HOST}/repos/octo/probe/issues`, to: `https://${CREDENTIAL_HOST}/y`, also: [CREDENTIAL_HOST] },
191
+ ];
192
+ for (const credential of CREDENTIALS()) {
193
+ for (const c of cases) {
194
+ const toHost = new URL(c.to).hostname;
195
+ const { receipt, peer } = await throughEngine(target, credential, {
196
+ [c.from]: { status: 302, headers: { location: c.to }, body: "" },
197
+ [c.to]: { status: 200, body: "{}" },
198
+ }, { url: c.from, ...(c.also ? { also: c.also } : {}) });
199
+ const reached = peer.received.filter((request) => request.url.startsWith(c.to)).length;
200
+ if (receipt.outcome !== "refused")
201
+ problems.push(`${c.name}: the run ended ${receipt.outcome}, not refused`);
202
+ if (reached)
203
+ problems.push(`${c.name}: ${reached} request(s) reached ${toHost}`);
204
+ for (const leak of leaks(peer, credential))
205
+ problems.push(`${c.name}: ${credential.header} sent with ${leak}`);
206
+ }
207
+ }
208
+ return problems;
209
+ },
210
+ async "body-over-bound-refused"(target) {
211
+ const [credential] = CREDENTIALS();
212
+ const problems = [];
213
+ // 600 characters, 1200 bytes: a bound read in characters would pass it.
214
+ const over = "é".repeat(600);
215
+ const exact = "a".repeat(1000);
216
+ const peer = new ScriptedPeer(answer({
217
+ [`https://${CREDENTIAL_HOST}/repos/octo/probe/issues`]: { status: 200, body: over },
218
+ [`https://${CREDENTIAL_HOST}/exact`]: { status: 200, body: exact },
219
+ }));
220
+ const transport = target.create(peer, credential);
221
+ const refused = await direct(transport, `https://${CREDENTIAL_HOST}/repos/octo/probe/issues`, { maxBytes: 1000, credentialHost: true });
222
+ if (refused instanceof Error || refused.ok || refused.refused !== "too_large")
223
+ problems.push("a 1200-byte body under a 1000-byte bound was not refused as too_large");
224
+ const admitted = await direct(transport, `https://${CREDENTIAL_HOST}/exact`, { maxBytes: 1000, credentialHost: true });
225
+ if (admitted instanceof Error || !admitted.ok || admitted.body !== exact || admitted.bytes !== 1000)
226
+ problems.push("a body exactly at the bound was not returned whole");
227
+ const { receipt } = await throughEngine(target, credential, { [`https://${CREDENTIAL_HOST}/repos/octo/probe/issues`]: { status: 200, body: over } }, { url: `https://${CREDENTIAL_HOST}/repos/octo/probe/issues` }, 1000);
228
+ if (receipt.outcome !== "too_large")
229
+ problems.push(`behind the engine the run ended ${receipt.outcome}, not too_large`);
230
+ return problems;
231
+ },
232
+ async "private-redirect-refused"(target) {
233
+ const [credential] = CREDENTIALS();
234
+ const problems = [];
235
+ for (const from of [`https://${CREDENTIAL_HOST}/repos/octo/probe/issues`, `https://${KEYLESS_HOST}/repos/octo/probe/issues`]) {
236
+ for (const to of PRIVATE_TARGETS) {
237
+ const { receipt, peer } = await throughEngine(target, credential, { [from]: { status: 302, headers: { location: to }, body: "" } }, { url: from });
238
+ const toUrl = new URL(to);
239
+ const reached = peer.received.filter((request) => {
240
+ const url = new URL(request.url);
241
+ return url.hostname === toUrl.hostname && url.port === toUrl.port && url.protocol === toUrl.protocol;
242
+ }).length;
243
+ if (receipt.outcome !== "refused")
244
+ problems.push(`${from} to ${to}: the run ended ${receipt.outcome}, not refused`);
245
+ if (reached)
246
+ problems.push(`${from} to ${to}: ${reached} request(s) reached it`);
247
+ }
248
+ }
249
+ return problems;
250
+ },
251
+ };
252
+ /** Run every conformance scenario against one transport. */
253
+ export async function runTransportConformance(target) {
254
+ const rows = [];
255
+ for (const scenario of CONFORMANCE_SCENARIOS) {
256
+ try {
257
+ const problems = await CHECKS[scenario](target);
258
+ rows.push(problems.length ? { scenario, ok: false, detail: problems.join("; ") } : { scenario, ok: true });
259
+ }
260
+ catch (error) {
261
+ rows.push({ scenario, ok: false, detail: `threw: ${error instanceof Error ? error.message : String(error)}` });
262
+ }
263
+ }
264
+ return rows;
265
+ }
266
+ //# sourceMappingURL=conformance.js.map