@nitpicker/archive 0.0.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (737) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +106 -0
  3. package/lib/apply-connection-pragmas.d.ts +18 -0
  4. package/lib/apply-connection-pragmas.js +40 -0
  5. package/lib/archive-accessor.d.ts +265 -0
  6. package/lib/archive-accessor.js +477 -0
  7. package/lib/archive-lock.d.ts +45 -0
  8. package/lib/archive-lock.js +154 -0
  9. package/lib/archive.d.ts +736 -0
  10. package/lib/archive.js +1056 -0
  11. package/lib/body-hash/compute-body-hash.d.ts +32 -0
  12. package/lib/body-hash/compute-body-hash.js +35 -0
  13. package/lib/cache/clear-archive-cache-entry.d.ts +18 -0
  14. package/lib/cache/clear-archive-cache-entry.js +24 -0
  15. package/lib/cache/clear-archive-cache-root.d.ts +26 -0
  16. package/lib/cache/clear-archive-cache-root.js +32 -0
  17. package/lib/cache/compute-archive-cache-key.d.ts +39 -0
  18. package/lib/cache/compute-archive-cache-key.js +95 -0
  19. package/lib/cache/extract-archive-to-cache.d.ts +57 -0
  20. package/lib/cache/extract-archive-to-cache.js +326 -0
  21. package/lib/cache/get-archive-cache-root.d.ts +20 -0
  22. package/lib/cache/get-archive-cache-root.js +53 -0
  23. package/lib/cache/is-archive-cache-disabled.d.ts +24 -0
  24. package/lib/cache/is-archive-cache-disabled.js +34 -0
  25. package/lib/cache/list-archive-cache-entries.d.ts +23 -0
  26. package/lib/cache/list-archive-cache-entries.js +130 -0
  27. package/lib/cache/path-exists.d.ts +9 -0
  28. package/lib/cache/path-exists.js +18 -0
  29. package/lib/cache/resolve-archive-cache-dir.d.ts +26 -0
  30. package/lib/cache/resolve-archive-cache-dir.js +32 -0
  31. package/lib/cache/types.d.ts +33 -0
  32. package/lib/cache/types.js +1 -0
  33. package/lib/content-type/is-html-content-type.d.ts +17 -0
  34. package/lib/content-type/is-html-content-type.js +19 -0
  35. package/lib/content-type/normalize-content-type.d.ts +14 -0
  36. package/lib/content-type/normalize-content-type.js +20 -0
  37. package/lib/create-adjunct-tables.d.ts +66 -0
  38. package/lib/create-adjunct-tables.js +510 -0
  39. package/lib/create-entity-tables.d.ts +191 -0
  40. package/lib/create-entity-tables.js +387 -0
  41. package/lib/create-progress-reporter.d.ts +30 -0
  42. package/lib/create-progress-reporter.js +38 -0
  43. package/lib/create-ref-tables.d.ts +35 -0
  44. package/lib/create-ref-tables.js +185 -0
  45. package/lib/create-template-tables.d.ts +28 -0
  46. package/lib/create-template-tables.js +92 -0
  47. package/lib/database.d.ts +549 -0
  48. package/lib/database.js +804 -0
  49. package/lib/db-ops/_shared/clear-write-ref-caches.d.ts +27 -0
  50. package/lib/db-ops/_shared/clear-write-ref-caches.js +35 -0
  51. package/lib/db-ops/_shared/compress-payload.d.ts +26 -0
  52. package/lib/db-ops/_shared/compress-payload.js +30 -0
  53. package/lib/db-ops/_shared/create-write-ref-caches.d.ts +17 -0
  54. package/lib/db-ops/_shared/create-write-ref-caches.js +27 -0
  55. package/lib/db-ops/_shared/decode-json-ref.d.ts +17 -0
  56. package/lib/db-ops/_shared/decode-json-ref.js +31 -0
  57. package/lib/db-ops/_shared/keyset-paginate-by-id.d.ts +49 -0
  58. package/lib/db-ops/_shared/keyset-paginate-by-id.js +69 -0
  59. package/lib/db-ops/_shared/load-response-headers-by-set-ids.d.ts +20 -0
  60. package/lib/db-ops/_shared/load-response-headers-by-set-ids.js +53 -0
  61. package/lib/db-ops/_shared/resolve-content-item-id.d.ts +62 -0
  62. package/lib/db-ops/_shared/resolve-content-item-id.js +143 -0
  63. package/lib/db-ops/_shared/resolve-url-or-blob.d.ts +23 -0
  64. package/lib/db-ops/_shared/resolve-url-or-blob.js +29 -0
  65. package/lib/db-ops/_shared/retry-setting.d.ts +16 -0
  66. package/lib/db-ops/_shared/retry-setting.js +18 -0
  67. package/lib/db-ops/_shared/safe-parse-json.d.ts +11 -0
  68. package/lib/db-ops/_shared/safe-parse-json.js +18 -0
  69. package/lib/db-ops/_shared/types.d.ts +94 -0
  70. package/lib/db-ops/_shared/types.js +1 -0
  71. package/lib/db-ops/_shared/upsert-blob-ref.d.ts +25 -0
  72. package/lib/db-ops/_shared/upsert-blob-ref.js +48 -0
  73. package/lib/db-ops/_shared/upsert-content-type-ref.d.ts +30 -0
  74. package/lib/db-ops/_shared/upsert-content-type-ref.js +45 -0
  75. package/lib/db-ops/_shared/upsert-json-ref.d.ts +22 -0
  76. package/lib/db-ops/_shared/upsert-json-ref.js +41 -0
  77. package/lib/db-ops/_shared/upsert-response-headers.d.ts +35 -0
  78. package/lib/db-ops/_shared/upsert-response-headers.js +49 -0
  79. package/lib/db-ops/_shared/upsert-url-ref.d.ts +39 -0
  80. package/lib/db-ops/_shared/upsert-url-ref.js +62 -0
  81. package/lib/db-ops/anchors/get-anchors-on-page.d.ts +10 -0
  82. package/lib/db-ops/anchors/get-anchors-on-page.js +21 -0
  83. package/lib/db-ops/config/get-base-url.d.ts +8 -0
  84. package/lib/db-ops/config/get-base-url.js +14 -0
  85. package/lib/db-ops/config/get-config.d.ts +10 -0
  86. package/lib/db-ops/config/get-config.js +29 -0
  87. package/lib/db-ops/config/get-created-cwd.d.ts +11 -0
  88. package/lib/db-ops/config/get-created-cwd.js +13 -0
  89. package/lib/db-ops/config/get-name.d.ts +8 -0
  90. package/lib/db-ops/config/get-name.js +14 -0
  91. package/lib/db-ops/config/info-column-allowlist.d.ts +7 -0
  92. package/lib/db-ops/config/info-column-allowlist.js +29 -0
  93. package/lib/db-ops/config/info-json-columns.d.ts +5 -0
  94. package/lib/db-ops/config/info-json-columns.js +11 -0
  95. package/lib/db-ops/config/set-config.d.ts +12 -0
  96. package/lib/db-ops/config/set-config.js +21 -0
  97. package/lib/db-ops/config/update-config.d.ts +17 -0
  98. package/lib/db-ops/config/update-config.js +36 -0
  99. package/lib/db-ops/console-logs/compute-console-log-hash.d.ts +19 -0
  100. package/lib/db-ops/console-logs/compute-console-log-hash.js +30 -0
  101. package/lib/db-ops/console-logs/replace-console-logs.d.ts +34 -0
  102. package/lib/db-ops/console-logs/replace-console-logs.js +123 -0
  103. package/lib/db-ops/console-logs/stringify-console-log-args.d.ts +16 -0
  104. package/lib/db-ops/console-logs/stringify-console-log-args.js +26 -0
  105. package/lib/db-ops/console-logs/types.d.ts +38 -0
  106. package/lib/db-ops/console-logs/types.js +1 -0
  107. package/lib/db-ops/console-logs/upsert-console-log-item.d.ts +29 -0
  108. package/lib/db-ops/console-logs/upsert-console-log-item.js +52 -0
  109. package/lib/db-ops/dedupe-cap/accumulate-dedupe-cap-rejected-count.d.ts +18 -0
  110. package/lib/db-ops/dedupe-cap/accumulate-dedupe-cap-rejected-count.js +23 -0
  111. package/lib/db-ops/dedupe-cap/finalize-dedupe-cap-event.d.ts +12 -0
  112. package/lib/db-ops/dedupe-cap/finalize-dedupe-cap-event.js +15 -0
  113. package/lib/db-ops/dedupe-cap/insert-dedupe-cap-event.d.ts +14 -0
  114. package/lib/db-ops/dedupe-cap/insert-dedupe-cap-event.js +30 -0
  115. package/lib/db-ops/dedupe-cap/list-dedupe-cap-observations.d.ts +57 -0
  116. package/lib/db-ops/dedupe-cap/list-dedupe-cap-observations.js +87 -0
  117. package/lib/db-ops/dedupe-cap/list-dedupe-cap-shape-keys.d.ts +21 -0
  118. package/lib/db-ops/dedupe-cap/list-dedupe-cap-shape-keys.js +27 -0
  119. package/lib/db-ops/errors/insert-crawl-error.d.ts +15 -0
  120. package/lib/db-ops/errors/insert-crawl-error.js +21 -0
  121. package/lib/db-ops/errors/insert-page-error.d.ts +21 -0
  122. package/lib/db-ops/errors/insert-page-error.js +30 -0
  123. package/lib/db-ops/errors/list-dns-burned-host-candidates.d.ts +33 -0
  124. package/lib/db-ops/errors/list-dns-burned-host-candidates.js +158 -0
  125. package/lib/db-ops/html/read-page-html-blob.d.ts +17 -0
  126. package/lib/db-ops/html/read-page-html-blob.js +20 -0
  127. package/lib/db-ops/lifecycle/checkpoint.d.ts +8 -0
  128. package/lib/db-ops/lifecycle/checkpoint.js +9 -0
  129. package/lib/db-ops/lifecycle/destroy.d.ts +6 -0
  130. package/lib/db-ops/lifecycle/destroy.js +7 -0
  131. package/lib/db-ops/lifecycle/init.d.ts +58 -0
  132. package/lib/db-ops/lifecycle/init.js +122 -0
  133. package/lib/db-ops/list-reconcile/record-list-reconcile-run.d.ts +22 -0
  134. package/lib/db-ops/list-reconcile/record-list-reconcile-run.js +41 -0
  135. package/lib/db-ops/meta/get-audios-of-page.d.ts +11 -0
  136. package/lib/db-ops/meta/get-audios-of-page.js +15 -0
  137. package/lib/db-ops/meta/get-buttons-of-page.d.ts +11 -0
  138. package/lib/db-ops/meta/get-buttons-of-page.js +15 -0
  139. package/lib/db-ops/meta/get-canvases-of-page.d.ts +11 -0
  140. package/lib/db-ops/meta/get-canvases-of-page.js +15 -0
  141. package/lib/db-ops/meta/get-custom-elements-of-page.d.ts +11 -0
  142. package/lib/db-ops/meta/get-custom-elements-of-page.js +15 -0
  143. package/lib/db-ops/meta/get-headings-of-page.d.ts +11 -0
  144. package/lib/db-ops/meta/get-headings-of-page.js +15 -0
  145. package/lib/db-ops/meta/get-iframes-of-page.d.ts +11 -0
  146. package/lib/db-ops/meta/get-iframes-of-page.js +15 -0
  147. package/lib/db-ops/meta/get-jsonld-of-page.d.ts +13 -0
  148. package/lib/db-ops/meta/get-jsonld-of-page.js +27 -0
  149. package/lib/db-ops/meta/get-main-content-images-of-page.d.ts +11 -0
  150. package/lib/db-ops/meta/get-main-content-images-of-page.js +15 -0
  151. package/lib/db-ops/meta/get-main-content-tables-of-page.d.ts +11 -0
  152. package/lib/db-ops/meta/get-main-content-tables-of-page.js +15 -0
  153. package/lib/db-ops/meta/get-page-technologies-of-page.d.ts +11 -0
  154. package/lib/db-ops/meta/get-page-technologies-of-page.js +15 -0
  155. package/lib/db-ops/meta/get-technology-signals-of-page.d.ts +11 -0
  156. package/lib/db-ops/meta/get-technology-signals-of-page.js +15 -0
  157. package/lib/db-ops/meta/get-videos-of-page.d.ts +11 -0
  158. package/lib/db-ops/meta/get-videos-of-page.js +15 -0
  159. package/lib/db-ops/outages/close-network-outage.d.ts +12 -0
  160. package/lib/db-ops/outages/close-network-outage.js +15 -0
  161. package/lib/db-ops/outages/close-stale-open-network-outages.d.ts +26 -0
  162. package/lib/db-ops/outages/close-stale-open-network-outages.js +42 -0
  163. package/lib/db-ops/outages/compute-outage-clamp-timestamp.d.ts +26 -0
  164. package/lib/db-ops/outages/compute-outage-clamp-timestamp.js +31 -0
  165. package/lib/db-ops/outages/insert-network-outage.d.ts +14 -0
  166. package/lib/db-ops/outages/insert-network-outage.js +29 -0
  167. package/lib/db-ops/outages/list-network-outages.d.ts +28 -0
  168. package/lib/db-ops/outages/list-network-outages.js +42 -0
  169. package/lib/db-ops/pages/order/set-url-order.d.ts +13 -0
  170. package/lib/db-ops/pages/order/set-url-order.js +38 -0
  171. package/lib/db-ops/pages/read/build-page-query.d.ts +18 -0
  172. package/lib/db-ops/pages/read/build-page-query.js +40 -0
  173. package/lib/db-ops/pages/read/get-crawling-state.d.ts +117 -0
  174. package/lib/db-ops/pages/read/get-crawling-state.js +161 -0
  175. package/lib/db-ops/pages/read/get-existing-page-urls.d.ts +15 -0
  176. package/lib/db-ops/pages/read/get-existing-page-urls.js +30 -0
  177. package/lib/db-ops/pages/read/get-page-count.d.ts +12 -0
  178. package/lib/db-ops/pages/read/get-page-count.js +21 -0
  179. package/lib/db-ops/pages/read/get-page-source-by-url.d.ts +24 -0
  180. package/lib/db-ops/pages/read/get-page-source-by-url.js +28 -0
  181. package/lib/db-ops/pages/read/get-pages-with-rels.d.ts +38 -0
  182. package/lib/db-ops/pages/read/get-pages-with-rels.js +107 -0
  183. package/lib/db-ops/pages/read/get-pages.d.ts +11 -0
  184. package/lib/db-ops/pages/read/get-pages.js +51 -0
  185. package/lib/db-ops/pages/read/get-scraped-html-page-count.d.ts +18 -0
  186. package/lib/db-ops/pages/read/get-scraped-html-page-count.js +25 -0
  187. package/lib/db-ops/pages/read/reconstruct-page-rows.d.ts +31 -0
  188. package/lib/db-ops/pages/read/reconstruct-page-rows.js +32 -0
  189. package/lib/db-ops/pages/reset/clear-page-derived-rows.d.ts +20 -0
  190. package/lib/db-ops/pages/reset/clear-page-derived-rows.js +37 -0
  191. package/lib/db-ops/pages/reset/repromote-external-pages.d.ts +30 -0
  192. package/lib/db-ops/pages/reset/repromote-external-pages.js +91 -0
  193. package/lib/db-ops/pages/reset/reset-failed-pages.d.ts +88 -0
  194. package/lib/db-ops/pages/reset/reset-failed-pages.js +216 -0
  195. package/lib/db-ops/pages/reset/reset-pages-by-urls.d.ts +80 -0
  196. package/lib/db-ops/pages/reset/reset-pages-by-urls.js +151 -0
  197. package/lib/db-ops/pages/reset/retryable-image-scan-codes.d.ts +24 -0
  198. package/lib/db-ops/pages/reset/retryable-image-scan-codes.js +24 -0
  199. package/lib/db-ops/pages/write/insert-audios.d.ts +14 -0
  200. package/lib/db-ops/pages/write/insert-audios.js +25 -0
  201. package/lib/db-ops/pages/write/insert-buttons.d.ts +14 -0
  202. package/lib/db-ops/pages/write/insert-buttons.js +29 -0
  203. package/lib/db-ops/pages/write/insert-canvases.d.ts +14 -0
  204. package/lib/db-ops/pages/write/insert-canvases.js +26 -0
  205. package/lib/db-ops/pages/write/insert-custom-elements.d.ts +27 -0
  206. package/lib/db-ops/pages/write/insert-custom-elements.js +40 -0
  207. package/lib/db-ops/pages/write/insert-headings.d.ts +15 -0
  208. package/lib/db-ops/pages/write/insert-headings.js +27 -0
  209. package/lib/db-ops/pages/write/insert-iframes.d.ts +14 -0
  210. package/lib/db-ops/pages/write/insert-iframes.js +28 -0
  211. package/lib/db-ops/pages/write/insert-inventory-content-items.d.ts +38 -0
  212. package/lib/db-ops/pages/write/insert-inventory-content-items.js +60 -0
  213. package/lib/db-ops/pages/write/insert-inventory-seeds.d.ts +36 -0
  214. package/lib/db-ops/pages/write/insert-inventory-seeds.js +48 -0
  215. package/lib/db-ops/pages/write/insert-inventory-skipped-pages.d.ts +42 -0
  216. package/lib/db-ops/pages/write/insert-inventory-skipped-pages.js +56 -0
  217. package/lib/db-ops/pages/write/insert-jsonld.d.ts +17 -0
  218. package/lib/db-ops/pages/write/insert-jsonld.js +49 -0
  219. package/lib/db-ops/pages/write/insert-main-content-images.d.ts +20 -0
  220. package/lib/db-ops/pages/write/insert-main-content-images.js +32 -0
  221. package/lib/db-ops/pages/write/insert-main-content-tables.d.ts +14 -0
  222. package/lib/db-ops/pages/write/insert-main-content-tables.js +29 -0
  223. package/lib/db-ops/pages/write/insert-page.d.ts +56 -0
  224. package/lib/db-ops/pages/write/insert-page.js +259 -0
  225. package/lib/db-ops/pages/write/insert-technologies.d.ts +25 -0
  226. package/lib/db-ops/pages/write/insert-technologies.js +45 -0
  227. package/lib/db-ops/pages/write/insert-videos.d.ts +14 -0
  228. package/lib/db-ops/pages/write/insert-videos.js +28 -0
  229. package/lib/db-ops/pages/write/link-redirect-sources.d.ts +42 -0
  230. package/lib/db-ops/pages/write/link-redirect-sources.js +101 -0
  231. package/lib/db-ops/pages/write/record-redirect.d.ts +35 -0
  232. package/lib/db-ops/pages/write/record-redirect.js +100 -0
  233. package/lib/db-ops/pages/write/set-skipped-page.d.ts +13 -0
  234. package/lib/db-ops/pages/write/set-skipped-page.js +24 -0
  235. package/lib/db-ops/pages/write/update-page.d.ts +40 -0
  236. package/lib/db-ops/pages/write/update-page.js +419 -0
  237. package/lib/db-ops/pages/write/write-page-html-blob.d.ts +19 -0
  238. package/lib/db-ops/pages/write/write-page-html-blob.js +41 -0
  239. package/lib/db-ops/referrers/get-redirects-for-pages.d.ts +9 -0
  240. package/lib/db-ops/referrers/get-redirects-for-pages.js +15 -0
  241. package/lib/db-ops/referrers/get-referrers-of-page.d.ts +17 -0
  242. package/lib/db-ops/referrers/get-referrers-of-page.js +32 -0
  243. package/lib/db-ops/referrers/get-referrers-of-resource.d.ts +8 -0
  244. package/lib/db-ops/referrers/get-referrers-of-resource.js +15 -0
  245. package/lib/db-ops/resources/build-resource-query.d.ts +25 -0
  246. package/lib/db-ops/resources/build-resource-query.js +29 -0
  247. package/lib/db-ops/resources/get-existing-resource-urls.d.ts +9 -0
  248. package/lib/db-ops/resources/get-existing-resource-urls.js +24 -0
  249. package/lib/db-ops/resources/get-resource-by-url.d.ts +13 -0
  250. package/lib/db-ops/resources/get-resource-by-url.js +22 -0
  251. package/lib/db-ops/resources/get-resource-url-list.d.ts +17 -0
  252. package/lib/db-ops/resources/get-resource-url-list.js +26 -0
  253. package/lib/db-ops/resources/get-resources.d.ts +8 -0
  254. package/lib/db-ops/resources/get-resources.js +11 -0
  255. package/lib/db-ops/resources/insert-inventory-resources.d.ts +24 -0
  256. package/lib/db-ops/resources/insert-inventory-resources.js +64 -0
  257. package/lib/db-ops/resources/insert-resource-referrers.d.ts +15 -0
  258. package/lib/db-ops/resources/insert-resource-referrers.js +54 -0
  259. package/lib/db-ops/resources/insert-resource.d.ts +34 -0
  260. package/lib/db-ops/resources/insert-resource.js +73 -0
  261. package/lib/db-ops/resources/reconstruct-resource-rows.d.ts +26 -0
  262. package/lib/db-ops/resources/reconstruct-resource-rows.js +30 -0
  263. package/lib/db-ops/templates/assign-template-labels.d.ts +60 -0
  264. package/lib/db-ops/templates/assign-template-labels.js +187 -0
  265. package/lib/db-ops/templates/replace-page-templates.d.ts +44 -0
  266. package/lib/db-ops/templates/replace-page-templates.js +174 -0
  267. package/lib/db-ops/templates/serialize-template-cluster-reason.d.ts +16 -0
  268. package/lib/db-ops/templates/serialize-template-cluster-reason.js +17 -0
  269. package/lib/db-ops/templates/types.d.ts +103 -0
  270. package/lib/db-ops/templates/types.js +1 -0
  271. package/lib/debug.d.ts +8 -0
  272. package/lib/debug.js +9 -0
  273. package/lib/decode-html-blob.d.ts +20 -0
  274. package/lib/decode-html-blob.js +23 -0
  275. package/lib/decode-page-html-blob-bytes.d.ts +25 -0
  276. package/lib/decode-page-html-blob-bytes.js +29 -0
  277. package/lib/decode-stored-blob-bytes.d.ts +25 -0
  278. package/lib/decode-stored-blob-bytes.js +47 -0
  279. package/lib/derive-lineage-from-parent.d.ts +37 -0
  280. package/lib/derive-lineage-from-parent.js +42 -0
  281. package/lib/drop-legacy-tables.d.ts +45 -0
  282. package/lib/drop-legacy-tables.js +56 -0
  283. package/lib/error-kind/classify-error-kind.d.ts +20 -0
  284. package/lib/error-kind/classify-error-kind.js +136 -0
  285. package/lib/error-kind/network-related-error-kinds.d.ts +23 -0
  286. package/lib/error-kind/network-related-error-kinds.js +28 -0
  287. package/lib/error-kind/permanent-error-kinds.d.ts +48 -0
  288. package/lib/error-kind/permanent-error-kinds.js +54 -0
  289. package/lib/error-kind/types.d.ts +54 -0
  290. package/lib/error-kind/types.js +1 -0
  291. package/lib/filesystem/append-text.d.ts +9 -0
  292. package/lib/filesystem/append-text.js +14 -0
  293. package/lib/filesystem/copy-dir-sync.d.ts +6 -0
  294. package/lib/filesystem/copy-dir-sync.js +9 -0
  295. package/lib/filesystem/copy-dir.d.ts +7 -0
  296. package/lib/filesystem/copy-dir.js +13 -0
  297. package/lib/filesystem/copy-file-with-progress.d.ts +20 -0
  298. package/lib/filesystem/copy-file-with-progress.js +34 -0
  299. package/lib/filesystem/exists.d.ts +6 -0
  300. package/lib/filesystem/exists.js +9 -0
  301. package/lib/filesystem/get-file-list.d.ts +8 -0
  302. package/lib/filesystem/get-file-list.js +12 -0
  303. package/lib/filesystem/is-dir.d.ts +6 -0
  304. package/lib/filesystem/is-dir.js +10 -0
  305. package/lib/filesystem/mkdir.d.ts +8 -0
  306. package/lib/filesystem/mkdir.js +15 -0
  307. package/lib/filesystem/output-binary.d.ts +12 -0
  308. package/lib/filesystem/output-binary.js +17 -0
  309. package/lib/filesystem/output-json.d.ts +9 -0
  310. package/lib/filesystem/output-json.js +14 -0
  311. package/lib/filesystem/output-text.d.ts +11 -0
  312. package/lib/filesystem/output-text.js +32 -0
  313. package/lib/filesystem/parse-pax-path.d.ts +18 -0
  314. package/lib/filesystem/parse-pax-path.js +47 -0
  315. package/lib/filesystem/parse-tar-size-field.d.ts +13 -0
  316. package/lib/filesystem/parse-tar-size-field.js +40 -0
  317. package/lib/filesystem/peek-tar-top-dir.d.ts +35 -0
  318. package/lib/filesystem/peek-tar-top-dir.js +215 -0
  319. package/lib/filesystem/read-json.d.ts +7 -0
  320. package/lib/filesystem/read-json.js +11 -0
  321. package/lib/filesystem/read-text.d.ts +6 -0
  322. package/lib/filesystem/read-text.js +10 -0
  323. package/lib/filesystem/readline.d.ts +11 -0
  324. package/lib/filesystem/readline.js +26 -0
  325. package/lib/filesystem/remove.d.ts +5 -0
  326. package/lib/filesystem/remove.js +10 -0
  327. package/lib/filesystem/rename.d.ts +16 -0
  328. package/lib/filesystem/rename.js +48 -0
  329. package/lib/filesystem/tar.d.ts +23 -0
  330. package/lib/filesystem/tar.js +78 -0
  331. package/lib/filesystem/untar.d.ts +33 -0
  332. package/lib/filesystem/untar.js +84 -0
  333. package/lib/get-failed-page-messages.d.ts +56 -0
  334. package/lib/get-failed-page-messages.js +146 -0
  335. package/lib/get-json.d.ts +10 -0
  336. package/lib/get-json.js +25 -0
  337. package/lib/html-snapshot/match-selector-html.d.ts +25 -0
  338. package/lib/html-snapshot/match-selector-html.js +28 -0
  339. package/lib/html-snapshot/match-selector-snapshots.d.ts +33 -0
  340. package/lib/html-snapshot/match-selector-snapshots.js +33 -0
  341. package/lib/html-snapshot/search-html-document.d.ts +29 -0
  342. package/lib/html-snapshot/search-html-document.js +27 -0
  343. package/lib/html-snapshot/search-html-snapshots.d.ts +36 -0
  344. package/lib/html-snapshot/search-html-snapshots.js +35 -0
  345. package/lib/html-snapshot/types.d.ts +111 -0
  346. package/lib/html-snapshot/types.js +7 -0
  347. package/lib/html-snapshot/validate-search-pattern.d.ts +15 -0
  348. package/lib/html-snapshot/validate-search-pattern.js +17 -0
  349. package/lib/init-schema.d.ts +48 -0
  350. package/lib/init-schema.js +124 -0
  351. package/lib/is-inventory-source.d.ts +21 -0
  352. package/lib/is-inventory-source.js +22 -0
  353. package/lib/is-within-outage-window.d.ts +49 -0
  354. package/lib/is-within-outage-window.js +33 -0
  355. package/lib/isolated-cluster/create-isolated-cluster-run.d.ts +24 -0
  356. package/lib/isolated-cluster/create-isolated-cluster-run.js +26 -0
  357. package/lib/libsql-dialect.d.ts +115 -0
  358. package/lib/libsql-dialect.js +116 -0
  359. package/lib/limited-page-ids.d.ts +9 -0
  360. package/lib/limited-page-ids.js +18 -0
  361. package/lib/meta/assert-compatible-version.d.ts +60 -0
  362. package/lib/meta/assert-compatible-version.js +93 -0
  363. package/lib/meta/classify-jsonld-type.d.ts +23 -0
  364. package/lib/meta/classify-jsonld-type.js +43 -0
  365. package/lib/meta/compare-semver.d.ts +23 -0
  366. package/lib/meta/compare-semver.js +51 -0
  367. package/lib/meta/compute-main-contents-denormalized.d.ts +41 -0
  368. package/lib/meta/compute-main-contents-denormalized.js +88 -0
  369. package/lib/meta/compute-page-denormalized.d.ts +20 -0
  370. package/lib/meta/compute-page-denormalized.js +35 -0
  371. package/lib/meta/derive-flat-from-meta.d.ts +34 -0
  372. package/lib/meta/derive-flat-from-meta.js +158 -0
  373. package/lib/meta/derive-meta-extras.d.ts +20 -0
  374. package/lib/meta/derive-meta-extras.js +23 -0
  375. package/lib/meta/extract-tags-for-archive.d.ts +17 -0
  376. package/lib/meta/extract-tags-for-archive.js +36 -0
  377. package/lib/meta/parse-main-content-class-list.d.ts +19 -0
  378. package/lib/meta/parse-main-content-class-list.js +34 -0
  379. package/lib/meta/summarize-jsonld.d.ts +17 -0
  380. package/lib/meta/summarize-jsonld.js +29 -0
  381. package/lib/meta/technologies/combine-technology-confidence.d.ts +46 -0
  382. package/lib/meta/technologies/combine-technology-confidence.js +93 -0
  383. package/lib/meta/technologies/convert-legacy-page-tags-to-inserts.d.ts +45 -0
  384. package/lib/meta/technologies/convert-legacy-page-tags-to-inserts.js +53 -0
  385. package/lib/meta/technologies/convert-tag-row-to-wappalyzer-signal.d.ts +33 -0
  386. package/lib/meta/technologies/convert-tag-row-to-wappalyzer-signal.js +46 -0
  387. package/lib/meta/technologies/extract-technologies-for-archive.d.ts +33 -0
  388. package/lib/meta/technologies/extract-technologies-for-archive.js +30 -0
  389. package/lib/meta/technologies/match-js-license-comment-signal.d.ts +21 -0
  390. package/lib/meta/technologies/match-js-license-comment-signal.js +23 -0
  391. package/lib/meta/technologies/match-structural-technology-signals.d.ts +26 -0
  392. package/lib/meta/technologies/match-structural-technology-signals.js +48 -0
  393. package/lib/meta/technologies/normalize-wappalyzer-entries.d.ts +25 -0
  394. package/lib/meta/technologies/normalize-wappalyzer-entries.js +35 -0
  395. package/lib/meta/technologies/technology-signal-definitions.d.ts +44 -0
  396. package/lib/meta/technologies/technology-signal-definitions.js +60 -0
  397. package/lib/meta/technologies/types.d.ts +70 -0
  398. package/lib/meta/technologies/types.js +13 -0
  399. package/lib/meta/types.d.ts +1490 -0
  400. package/lib/meta/types.js +65 -0
  401. package/lib/migrate-content-items-alias-of-id.d.ts +52 -0
  402. package/lib/migrate-content-items-alias-of-id.js +69 -0
  403. package/lib/migrate-content-items-dedupe-cap-event-id.d.ts +46 -0
  404. package/lib/migrate-content-items-dedupe-cap-event-id.js +62 -0
  405. package/lib/migrate-content-items-is-metadata-only.d.ts +44 -0
  406. package/lib/migrate-content-items-is-metadata-only.js +60 -0
  407. package/lib/migrate-entity-tables.d.ts +55 -0
  408. package/lib/migrate-entity-tables.js +66 -0
  409. package/lib/migrate-info-created-cwd.d.ts +17 -0
  410. package/lib/migrate-info-created-cwd.js +36 -0
  411. package/lib/migrate-info-main-content-selector.d.ts +16 -0
  412. package/lib/migrate-info-main-content-selector.js +35 -0
  413. package/lib/migrate-info-request-header-names.d.ts +16 -0
  414. package/lib/migrate-info-request-header-names.js +35 -0
  415. package/lib/migrate-info-roots.d.ts +20 -0
  416. package/lib/migrate-info-roots.js +52 -0
  417. package/lib/migrate-inventory-runs-to-list-reconcile-runs.d.ts +34 -0
  418. package/lib/migrate-inventory-runs-to-list-reconcile-runs.js +51 -0
  419. package/lib/migrate-list-reconcile-runs-exclude-skipped.d.ts +25 -0
  420. package/lib/migrate-list-reconcile-runs-exclude-skipped.js +44 -0
  421. package/lib/migrate-list-reconcile-runs-invalid-skipped.d.ts +16 -0
  422. package/lib/migrate-list-reconcile-runs-invalid-skipped.js +35 -0
  423. package/lib/migrate-main-contents-columns.d.ts +26 -0
  424. package/lib/migrate-main-contents-columns.js +61 -0
  425. package/lib/migrate-page-meta-body-hash.d.ts +44 -0
  426. package/lib/migrate-page-meta-body-hash.js +63 -0
  427. package/lib/migrate-page-meta-console-error-count.d.ts +27 -0
  428. package/lib/migrate-page-meta-console-error-count.js +45 -0
  429. package/lib/migrate-page-meta-custom-element-count.d.ts +33 -0
  430. package/lib/migrate-page-meta-custom-element-count.js +51 -0
  431. package/lib/migrate-page-meta-image-scan.d.ts +27 -0
  432. package/lib/migrate-page-meta-image-scan.js +52 -0
  433. package/lib/migrate-page-tags-to-page-technologies.d.ts +39 -0
  434. package/lib/migrate-page-tags-to-page-technologies.js +79 -0
  435. package/lib/migrate-ref-tables.d.ts +25 -0
  436. package/lib/migrate-ref-tables.js +38 -0
  437. package/lib/native-executor/check-native-executor-config.d.ts +17 -0
  438. package/lib/native-executor/check-native-executor-config.js +20 -0
  439. package/lib/page-meta-column-maps.d.ts +32 -0
  440. package/lib/page-meta-column-maps.js +43 -0
  441. package/lib/page.d.ts +546 -0
  442. package/lib/page.js +764 -0
  443. package/lib/peek-archive-lock.d.ts +40 -0
  444. package/lib/peek-archive-lock.js +62 -0
  445. package/lib/populate-entity-tables/collapse-anchor-rows.d.ts +41 -0
  446. package/lib/populate-entity-tables/collapse-anchor-rows.js +87 -0
  447. package/lib/populate-entity-tables/derive-dom-path.d.ts +35 -0
  448. package/lib/populate-entity-tables/derive-dom-path.js +72 -0
  449. package/lib/populate-entity-tables/is-blob-ref-value.d.ts +16 -0
  450. package/lib/populate-entity-tables/is-blob-ref-value.js +19 -0
  451. package/lib/populate-entity-tables/match-images-to-dom-paths.d.ts +66 -0
  452. package/lib/populate-entity-tables/match-images-to-dom-paths.js +96 -0
  453. package/lib/populate-entity-tables/populate-anchor-edges.d.ts +33 -0
  454. package/lib/populate-entity-tables/populate-anchor-edges.js +153 -0
  455. package/lib/populate-entity-tables/populate-content-items.d.ts +40 -0
  456. package/lib/populate-entity-tables/populate-content-items.js +141 -0
  457. package/lib/populate-entity-tables/populate-entities.d.ts +81 -0
  458. package/lib/populate-entity-tables/populate-entities.js +110 -0
  459. package/lib/populate-entity-tables/populate-image-items.d.ts +91 -0
  460. package/lib/populate-entity-tables/populate-image-items.js +226 -0
  461. package/lib/populate-entity-tables/populate-page-meta.d.ts +33 -0
  462. package/lib/populate-entity-tables/populate-page-meta.js +267 -0
  463. package/lib/populate-entity-tables/populate-resource-items.d.ts +22 -0
  464. package/lib/populate-entity-tables/populate-resource-items.js +114 -0
  465. package/lib/populate-entity-tables/populate-resource-ref-edges.d.ts +31 -0
  466. package/lib/populate-entity-tables/populate-resource-ref-edges.js +33 -0
  467. package/lib/populate-entity-tables/resolve-blob-refs.d.ts +31 -0
  468. package/lib/populate-entity-tables/resolve-blob-refs.js +100 -0
  469. package/lib/populate-entity-tables/resolve-content-type-refs.d.ts +22 -0
  470. package/lib/populate-entity-tables/resolve-content-type-refs.js +27 -0
  471. package/lib/populate-entity-tables/resolve-header-sets.d.ts +49 -0
  472. package/lib/populate-entity-tables/resolve-header-sets.js +122 -0
  473. package/lib/populate-entity-tables/resolve-json-refs.d.ts +25 -0
  474. package/lib/populate-entity-tables/resolve-json-refs.js +67 -0
  475. package/lib/populate-entity-tables/resolve-text-refs.d.ts +30 -0
  476. package/lib/populate-entity-tables/resolve-text-refs.js +61 -0
  477. package/lib/populate-entity-tables/resolve-url-or-blob-from-maps.d.ts +21 -0
  478. package/lib/populate-entity-tables/resolve-url-or-blob-from-maps.js +27 -0
  479. package/lib/populate-entity-tables/resolve-url-refs.d.ts +33 -0
  480. package/lib/populate-entity-tables/resolve-url-refs.js +60 -0
  481. package/lib/populate-entity-tables/test-utils/count-rows.d.ts +17 -0
  482. package/lib/populate-entity-tables/test-utils/count-rows.js +20 -0
  483. package/lib/populate-entity-tables/test-utils/seed-content-items.d.ts +25 -0
  484. package/lib/populate-entity-tables/test-utils/seed-content-items.js +42 -0
  485. package/lib/populate-entity-tables/test-utils/setup-entities-db.d.ts +30 -0
  486. package/lib/populate-entity-tables/test-utils/setup-entities-db.js +175 -0
  487. package/lib/populate-entity-tables/types.d.ts +157 -0
  488. package/lib/populate-entity-tables/types.js +12 -0
  489. package/lib/populate-entity-tables/upsert-text-refs.d.ts +38 -0
  490. package/lib/populate-entity-tables/upsert-text-refs.js +78 -0
  491. package/lib/populate-ref-tables/classify-content-type.d.ts +16 -0
  492. package/lib/populate-ref-tables/classify-content-type.js +52 -0
  493. package/lib/populate-ref-tables/compute-content-hash.d.ts +22 -0
  494. package/lib/populate-ref-tables/compute-content-hash.js +26 -0
  495. package/lib/populate-ref-tables/compute-header-flags.d.ts +16 -0
  496. package/lib/populate-ref-tables/compute-header-flags.js +70 -0
  497. package/lib/populate-ref-tables/content-type-rules.d.ts +38 -0
  498. package/lib/populate-ref-tables/content-type-rules.js +133 -0
  499. package/lib/populate-ref-tables/create-header-table-caches.d.ts +25 -0
  500. package/lib/populate-ref-tables/create-header-table-caches.js +49 -0
  501. package/lib/populate-ref-tables/data-uri-url-refs-limit.d.ts +15 -0
  502. package/lib/populate-ref-tables/data-uri-url-refs-limit.js +15 -0
  503. package/lib/populate-ref-tables/decode-data-uri.d.ts +21 -0
  504. package/lib/populate-ref-tables/decode-data-uri.js +126 -0
  505. package/lib/populate-ref-tables/decompose-header-set.d.ts +29 -0
  506. package/lib/populate-ref-tables/decompose-header-set.js +157 -0
  507. package/lib/populate-ref-tables/decompose-url.d.ts +25 -0
  508. package/lib/populate-ref-tables/decompose-url.js +70 -0
  509. package/lib/populate-ref-tables/header-stability.d.ts +19 -0
  510. package/lib/populate-ref-tables/header-stability.js +22 -0
  511. package/lib/populate-ref-tables/header-value-cache-key.d.ts +17 -0
  512. package/lib/populate-ref-tables/header-value-cache-key.js +19 -0
  513. package/lib/populate-ref-tables/normalize-mime.d.ts +24 -0
  514. package/lib/populate-ref-tables/normalize-mime.js +36 -0
  515. package/lib/populate-ref-tables/populate-blob-refs.d.ts +38 -0
  516. package/lib/populate-ref-tables/populate-blob-refs.js +134 -0
  517. package/lib/populate-ref-tables/populate-content-type-refs.d.ts +27 -0
  518. package/lib/populate-ref-tables/populate-content-type-refs.js +70 -0
  519. package/lib/populate-ref-tables/populate-header-tables.d.ts +35 -0
  520. package/lib/populate-ref-tables/populate-header-tables.js +80 -0
  521. package/lib/populate-ref-tables/populate-json-refs.d.ts +29 -0
  522. package/lib/populate-ref-tables/populate-json-refs.js +101 -0
  523. package/lib/populate-ref-tables/populate-refs.d.ts +51 -0
  524. package/lib/populate-ref-tables/populate-refs.js +62 -0
  525. package/lib/populate-ref-tables/populate-text-refs.d.ts +32 -0
  526. package/lib/populate-ref-tables/populate-text-refs.js +133 -0
  527. package/lib/populate-ref-tables/populate-url-refs.d.ts +28 -0
  528. package/lib/populate-ref-tables/populate-url-refs.js +148 -0
  529. package/lib/populate-ref-tables/test-utils/count-rows.d.ts +15 -0
  530. package/lib/populate-ref-tables/test-utils/count-rows.js +17 -0
  531. package/lib/populate-ref-tables/types.d.ts +197 -0
  532. package/lib/populate-ref-tables/types.js +7 -0
  533. package/lib/populate-ref-tables/upsert-one-header-set.d.ts +34 -0
  534. package/lib/populate-ref-tables/upsert-one-header-set.js +208 -0
  535. package/lib/populate-ref-tables/volatile-header-names.d.ts +20 -0
  536. package/lib/populate-ref-tables/volatile-header-names.js +33 -0
  537. package/lib/redirect-table.d.ts +9 -0
  538. package/lib/redirect-table.js +28 -0
  539. package/lib/release-finished-statements.d.ts +42 -0
  540. package/lib/release-finished-statements.js +45 -0
  541. package/lib/resolve-redirect-chain.d.ts +33 -0
  542. package/lib/resolve-redirect-chain.js +27 -0
  543. package/lib/resource.d.ts +46 -0
  544. package/lib/resource.js +62 -0
  545. package/lib/retarget-legacy-fk-tables.d.ts +61 -0
  546. package/lib/retarget-legacy-fk-tables.js +137 -0
  547. package/lib/safe-path.d.ts +9 -0
  548. package/lib/safe-path.js +17 -0
  549. package/lib/scope/build-scope-map.d.ts +21 -0
  550. package/lib/scope/build-scope-map.js +32 -0
  551. package/lib/scope/find-scope-entry.d.ts +25 -0
  552. package/lib/scope/find-scope-entry.js +45 -0
  553. package/lib/template-classification/classify-archive-page-templates.d.ts +42 -0
  554. package/lib/template-classification/classify-archive-page-templates.js +70 -0
  555. package/lib/template-classification/classify-page-templates.d.ts +33 -0
  556. package/lib/template-classification/classify-page-templates.js +60 -0
  557. package/lib/template-classification/collect-page-ids-with-html.d.ts +24 -0
  558. package/lib/template-classification/collect-page-ids-with-html.js +30 -0
  559. package/lib/template-classification/collect-page-stylesheet-urls.d.ts +32 -0
  560. package/lib/template-classification/collect-page-stylesheet-urls.js +130 -0
  561. package/lib/template-classification/create-content-root-hint.d.ts +41 -0
  562. package/lib/template-classification/create-content-root-hint.js +51 -0
  563. package/lib/template-classification/create-page-cluster-factory.d.ts +36 -0
  564. package/lib/template-classification/create-page-cluster-factory.js +52 -0
  565. package/lib/template-classification/load-page-cluster-candidates.d.ts +32 -0
  566. package/lib/template-classification/load-page-cluster-candidates.js +93 -0
  567. package/lib/template-classification/page-cluster/resolve-page-cluster-keys.d.ts +34 -0
  568. package/lib/template-classification/page-cluster/resolve-page-cluster-keys.js +236 -0
  569. package/lib/template-classification/page-cluster/types.d.ts +123 -0
  570. package/lib/template-classification/page-cluster/types.js +1 -0
  571. package/lib/template-classification/types.d.ts +234 -0
  572. package/lib/template-classification/types.js +1 -0
  573. package/lib/test-utils/build-full-schema-test-db.d.ts +34 -0
  574. package/lib/test-utils/build-full-schema-test-db.js +74 -0
  575. package/lib/test-utils/create-legacy-analysis-tables.d.ts +13 -0
  576. package/lib/test-utils/create-legacy-analysis-tables.js +37 -0
  577. package/lib/test-utils/fk-parent-tables.d.ts +15 -0
  578. package/lib/test-utils/fk-parent-tables.js +19 -0
  579. package/lib/test-utils/seed-content-item.d.ts +35 -0
  580. package/lib/test-utils/seed-content-item.js +42 -0
  581. package/lib/test-utils/setup-legacy-fk-db.d.ts +34 -0
  582. package/lib/test-utils/setup-legacy-fk-db.js +271 -0
  583. package/lib/transfer/attach-source-database.d.ts +31 -0
  584. package/lib/transfer/attach-source-database.js +40 -0
  585. package/lib/transfer/build-split-config.d.ts +30 -0
  586. package/lib/transfer/build-split-config.js +42 -0
  587. package/lib/transfer/clear-replaced-page-rows.d.ts +23 -0
  588. package/lib/transfer/clear-replaced-page-rows.js +61 -0
  589. package/lib/transfer/concat-archives.d.ts +55 -0
  590. package/lib/transfer/concat-archives.js +95 -0
  591. package/lib/transfer/concat-source-transfer-phases.d.ts +10 -0
  592. package/lib/transfer/concat-source-transfer-phases.js +17 -0
  593. package/lib/transfer/content-item-rank-sql.d.ts +21 -0
  594. package/lib/transfer/content-item-rank-sql.js +23 -0
  595. package/lib/transfer/copy-anchor-edges.d.ts +28 -0
  596. package/lib/transfer/copy-anchor-edges.js +42 -0
  597. package/lib/transfer/copy-dictionaries-for-concat.d.ts +39 -0
  598. package/lib/transfer/copy-dictionaries-for-concat.js +81 -0
  599. package/lib/transfer/copy-dictionaries-for-split.d.ts +29 -0
  600. package/lib/transfer/copy-dictionaries-for-split.js +224 -0
  601. package/lib/transfer/copy-header-set-children.d.ts +27 -0
  602. package/lib/transfer/copy-header-set-children.js +51 -0
  603. package/lib/transfer/copy-image-items.d.ts +21 -0
  604. package/lib/transfer/copy-image-items.js +62 -0
  605. package/lib/transfer/copy-inventory-source-lists.d.ts +30 -0
  606. package/lib/transfer/copy-inventory-source-lists.js +61 -0
  607. package/lib/transfer/copy-journal-tables.d.ts +30 -0
  608. package/lib/transfer/copy-journal-tables.js +56 -0
  609. package/lib/transfer/copy-page-console-logs.d.ts +16 -0
  610. package/lib/transfer/copy-page-console-logs.js +27 -0
  611. package/lib/transfer/copy-page-html-blobs.d.ts +31 -0
  612. package/lib/transfer/copy-page-html-blobs.js +43 -0
  613. package/lib/transfer/copy-page-meta.d.ts +27 -0
  614. package/lib/transfer/copy-page-meta.js +68 -0
  615. package/lib/transfer/copy-page-template-clusters.d.ts +31 -0
  616. package/lib/transfer/copy-page-template-clusters.js +56 -0
  617. package/lib/transfer/copy-page-template-labels.d.ts +34 -0
  618. package/lib/transfer/copy-page-template-labels.js +88 -0
  619. package/lib/transfer/copy-resource-items.d.ts +29 -0
  620. package/lib/transfer/copy-resource-items.js +89 -0
  621. package/lib/transfer/copy-resource-ref-edges.d.ts +20 -0
  622. package/lib/transfer/copy-resource-ref-edges.js +33 -0
  623. package/lib/transfer/copy-simple-page-scoped-tables.d.ts +15 -0
  624. package/lib/transfer/copy-simple-page-scoped-tables.js +34 -0
  625. package/lib/transfer/count-external-pages-in-scope.d.ts +26 -0
  626. package/lib/transfer/count-external-pages-in-scope.js +40 -0
  627. package/lib/transfer/create-transfer-temp-tables.d.ts +30 -0
  628. package/lib/transfer/create-transfer-temp-tables.js +59 -0
  629. package/lib/transfer/dictionary-copy-specs.d.ts +32 -0
  630. package/lib/transfer/dictionary-copy-specs.js +28 -0
  631. package/lib/transfer/drop-transfer-temp-tables.d.ts +9 -0
  632. package/lib/transfer/drop-transfer-temp-tables.js +18 -0
  633. package/lib/transfer/flatten-redirect-chains.d.ts +44 -0
  634. package/lib/transfer/flatten-redirect-chains.js +74 -0
  635. package/lib/transfer/insert-content-items.d.ts +35 -0
  636. package/lib/transfer/insert-content-items.js +116 -0
  637. package/lib/transfer/list-transfer-columns.d.ts +35 -0
  638. package/lib/transfer/list-transfer-columns.js +45 -0
  639. package/lib/transfer/mark-in-scope-content-items.d.ts +31 -0
  640. package/lib/transfer/mark-in-scope-content-items.js +54 -0
  641. package/lib/transfer/merge-archive-configs.d.ts +51 -0
  642. package/lib/transfer/merge-archive-configs.js +85 -0
  643. package/lib/transfer/plan-content-items-for-concat.d.ts +33 -0
  644. package/lib/transfer/plan-content-items-for-concat.js +51 -0
  645. package/lib/transfer/plan-content-items-for-split.d.ts +42 -0
  646. package/lib/transfer/plan-content-items-for-split.js +83 -0
  647. package/lib/transfer/plan-resource-items.d.ts +40 -0
  648. package/lib/transfer/plan-resource-items.js +69 -0
  649. package/lib/transfer/quote-transfer-identifier.d.ts +18 -0
  650. package/lib/transfer/quote-transfer-identifier.js +20 -0
  651. package/lib/transfer/reclassify-resource-externality.d.ts +37 -0
  652. package/lib/transfer/reclassify-resource-externality.js +66 -0
  653. package/lib/transfer/remap-redirect-dest-ids.d.ts +34 -0
  654. package/lib/transfer/remap-redirect-dest-ids.js +51 -0
  655. package/lib/transfer/replace-content-items.d.ts +39 -0
  656. package/lib/transfer/replace-content-items.js +83 -0
  657. package/lib/transfer/simple-page-scoped-tables.d.ts +25 -0
  658. package/lib/transfer/simple-page-scoped-tables.js +38 -0
  659. package/lib/transfer/split-archive.d.ts +55 -0
  660. package/lib/transfer/split-archive.js +98 -0
  661. package/lib/transfer/split-source-transfer-phases.d.ts +11 -0
  662. package/lib/transfer/split-source-transfer-phases.js +18 -0
  663. package/lib/transfer/transfer-action.d.ts +34 -0
  664. package/lib/transfer/transfer-action.js +32 -0
  665. package/lib/transfer/transfer-archive-rows.d.ts +65 -0
  666. package/lib/transfer/transfer-archive-rows.js +156 -0
  667. package/lib/transfer/transfer-dictionary-tables.d.ts +12 -0
  668. package/lib/transfer/transfer-dictionary-tables.js +22 -0
  669. package/lib/transfer/transfer-post-phases.d.ts +10 -0
  670. package/lib/transfer/transfer-post-phases.js +13 -0
  671. package/lib/transfer/transfer-source-alias.d.ts +9 -0
  672. package/lib/transfer/transfer-source-alias.js +9 -0
  673. package/lib/transfer/types.d.ts +111 -0
  674. package/lib/transfer/types.js +35 -0
  675. package/lib/types.d.ts +772 -0
  676. package/lib/types.js +1 -0
  677. package/lib/url-alias/compute-tier-a-alias-key.d.ts +44 -0
  678. package/lib/url-alias/compute-tier-a-alias-key.js +47 -0
  679. package/lib/url-alias/compute-tier-b-alias-key.d.ts +23 -0
  680. package/lib/url-alias/compute-tier-b-alias-key.js +26 -0
  681. package/lib/url-alias/group-alias-candidates.d.ts +27 -0
  682. package/lib/url-alias/group-alias-candidates.js +29 -0
  683. package/lib/url-alias/types.d.ts +12 -0
  684. package/lib/url-alias/types.js +1 -0
  685. package/lib/url-pattern/compute-shape-key.d.ts +58 -0
  686. package/lib/url-pattern/compute-shape-key.js +129 -0
  687. package/lib/url-pattern/decompose-url.d.ts +33 -0
  688. package/lib/url-pattern/decompose-url.js +79 -0
  689. package/lib/url-pattern/reconstruct-url.d.ts +15 -0
  690. package/lib/url-pattern/reconstruct-url.js +33 -0
  691. package/lib/url-sort/compute-url-sort-ranks.d.ts +30 -0
  692. package/lib/url-sort/compute-url-sort-ranks.js +33 -0
  693. package/lib/utils/array/each-splitted.d.ts +10 -0
  694. package/lib/utils/array/each-splitted.js +14 -0
  695. package/lib/utils/debug.d.ts +8 -0
  696. package/lib/utils/debug.js +8 -0
  697. package/lib/utils/error/emit-error-with-retry.d.ts +40 -0
  698. package/lib/utils/error/emit-error-with-retry.js +44 -0
  699. package/lib/utils/error/emit-error.d.ts +39 -0
  700. package/lib/utils/error/emit-error.js +41 -0
  701. package/lib/utils/object/parse-response-headers.d.ts +12 -0
  702. package/lib/utils/object/parse-response-headers.js +26 -0
  703. package/lib/utils/object/redact-request-headers.d.ts +15 -0
  704. package/lib/utils/object/redact-request-headers.js +27 -0
  705. package/lib/utils/types/types.d.ts +383 -0
  706. package/lib/utils/types/types.js +1 -0
  707. package/lib/verify-migration/capture-rejection.d.ts +24 -0
  708. package/lib/verify-migration/capture-rejection.js +31 -0
  709. package/lib/verify-migration/check-anchor-edges-count.d.ts +34 -0
  710. package/lib/verify-migration/check-anchor-edges-count.js +72 -0
  711. package/lib/verify-migration/check-anchor-edges-sum.d.ts +13 -0
  712. package/lib/verify-migration/check-anchor-edges-sum.js +27 -0
  713. package/lib/verify-migration/check-content-items-count.d.ts +16 -0
  714. package/lib/verify-migration/check-content-items-count.js +30 -0
  715. package/lib/verify-migration/check-content-type-preservation.d.ts +22 -0
  716. package/lib/verify-migration/check-content-type-preservation.js +40 -0
  717. package/lib/verify-migration/check-foreign-key-integrity.d.ts +31 -0
  718. package/lib/verify-migration/check-foreign-key-integrity.js +47 -0
  719. package/lib/verify-migration/check-image-items-count.d.ts +12 -0
  720. package/lib/verify-migration/check-image-items-count.js +26 -0
  721. package/lib/verify-migration/check-page-meta-count.d.ts +15 -0
  722. package/lib/verify-migration/check-page-meta-count.js +31 -0
  723. package/lib/verify-migration/check-reader-parity.d.ts +23 -0
  724. package/lib/verify-migration/check-reader-parity.js +182 -0
  725. package/lib/verify-migration/check-resource-items-count.d.ts +17 -0
  726. package/lib/verify-migration/check-resource-items-count.js +33 -0
  727. package/lib/verify-migration/check-url-round-trip.d.ts +43 -0
  728. package/lib/verify-migration/check-url-round-trip.js +112 -0
  729. package/lib/verify-migration/types.d.ts +70 -0
  730. package/lib/verify-migration/types.js +63 -0
  731. package/lib/verify-migration/verify-migration.d.ts +41 -0
  732. package/lib/verify-migration/verify-migration.js +120 -0
  733. package/lib/with-bulk-write-pragmas.d.ts +51 -0
  734. package/lib/with-bulk-write-pragmas.js +132 -0
  735. package/lib/write-queue.d.ts +32 -0
  736. package/lib/write-queue.js +55 -0
  737. package/package.json +350 -3
@@ -0,0 +1,51 @@
1
+ import { TRANSFER_ACTION } from './transfer-action.js';
2
+ import { TRANSFER_SOURCE_ALIAS } from './transfer-source-alias.js';
3
+ /**
4
+ * Remaps `redirect_dest_id` for every `full`/`stub`/`replace`-action
5
+ * destination row this source just wrote, from the source's own id space
6
+ * into the destination's, via `temp.xfer_ci_plan` (which by this point
7
+ * maps EVERY source id to a destination id, not just the ones this source
8
+ * inserted — `skip`/`replace` rows already had `dest_id` set at plan
9
+ * time).
10
+ *
11
+ * `skip`-action rows are deliberately excluded from the `SET` target
12
+ * (via the `p.action IN (...)` filter) — a `skip` row's `content_items`
13
+ * row belongs to a PRIOR, better-ranked source, and this (losing) source
14
+ * has no business touching its `redirect_dest_id`.
15
+ *
16
+ * Must run AFTER both
17
+ * {@link import('./insert-content-items.js').insertContentItems} and
18
+ * {@link import('./replace-content-items.js').replaceContentItems} —
19
+ * every plan row needs a resolved `dest_id` (its own AND its redirect
20
+ * target's) before this can run. A source row whose `redirect_dest_id`
21
+ * points outside this source's own plan (should not happen — concat's
22
+ * plan covers every source row, and split's plan closure always pulls a
23
+ * kept row's redirect target in too, see `plan-content-items-for-split.ts`)
24
+ * silently leaves that destination row's `redirect_dest_id` at `NULL`
25
+ * rather than erroring — a dangling-but-absent redirect is a safe
26
+ * degrade, never a wrong one.
27
+ * @param trx - Transaction with the source ATTACHed as
28
+ * {@link TRANSFER_SOURCE_ALIAS}.
29
+ * @example
30
+ * ```ts
31
+ * await insertContentItems(trx, { crawlOrderOffset: 0 });
32
+ * await remapRedirectDestIds(trx);
33
+ * ```
34
+ */
35
+ export async function remapRedirectDestIds(trx) {
36
+ await trx.raw(`
37
+ UPDATE main.content_items
38
+ SET redirect_dest_id = x.redirect_dest_id
39
+ FROM (
40
+ SELECT p.dest_id AS id, p2.dest_id AS redirect_dest_id
41
+ FROM xfer_ci_plan p
42
+ JOIN ${TRANSFER_SOURCE_ALIAS}.content_items s ON s.id = p.src_id
43
+ JOIN xfer_ci_plan p2 ON p2.src_id = s.redirect_dest_id
44
+ WHERE s.redirect_dest_id IS NOT NULL
45
+ AND p.action IN (${TRANSFER_ACTION.full}, ${TRANSFER_ACTION.stub}, ${TRANSFER_ACTION.replace})
46
+ AND p2.dest_id IS NOT NULL
47
+ ) x
48
+ WHERE main.content_items.id = x.id
49
+ AND x.redirect_dest_id != x.id
50
+ `);
51
+ }
@@ -0,0 +1,39 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Overwrites every `replace`-action destination `content_items` row
4
+ * (concat only — split never assigns `replace`) with this source's
5
+ * column values, using the same per-column remap rules
6
+ * {@link import('./insert-content-items.js').insertContentItems} applies
7
+ * (dictionary FKs through their `temp.xfer_map_*` table, `redirect_dest_id`/
8
+ * `alias_of_id`/`dedupe_cap_event_id` always `NULL`, `crawl_order` offset).
9
+ *
10
+ * `url_id` is deliberately excluded from the UPDATE — a `replace` row was
11
+ * matched by URL string in the first place (`plan-content-items-for-concat.ts`),
12
+ * so the destination's `url_id` already points at the correct `url_refs`
13
+ * row and must not change. `is_external`/`is_target` are never forced
14
+ * here (unlike `insertContentItems`'s `stub` case) — concat has no stub
15
+ * action, so the source's own observed values pass straight through the
16
+ * generic `default` branch.
17
+ *
18
+ * Must run BEFORE {@link import('./insert-content-items.js').insertContentItems}
19
+ * would otherwise be fine in either order relative to it (they touch
20
+ * disjoint plan actions), but MUST run before the page-scoped table
21
+ * copies (`copy-page-meta.ts` et al.) — and after
22
+ * {@link import('./clear-replaced-page-rows.js').clearReplacedPageRows}
23
+ * has deleted the old derived rows for these same destination ids, so the
24
+ * fresh page-scoped copy does not collide with stale data.
25
+ * @param trx - Transaction with the source ATTACHed as
26
+ * {@link TRANSFER_SOURCE_ALIAS}.
27
+ * @param options - Options.
28
+ * @param options.crawlOrderOffset - See `insertContentItems`'s parameter
29
+ * of the same name — the same value passed to that call for this source.
30
+ * @example
31
+ * ```ts
32
+ * await clearReplacedPageRows(trx);
33
+ * await replaceContentItems(trx, { crawlOrderOffset: 0 });
34
+ * await insertContentItems(trx, { crawlOrderOffset: 0 });
35
+ * ```
36
+ */
37
+ export declare function replaceContentItems(trx: Knex, options: {
38
+ crawlOrderOffset: number;
39
+ }): Promise<void>;
@@ -0,0 +1,83 @@
1
+ import { listTransferColumns } from './list-transfer-columns.js';
2
+ import { quoteTransferIdentifier } from './quote-transfer-identifier.js';
3
+ import { TRANSFER_ACTION } from './transfer-action.js';
4
+ import { TRANSFER_SOURCE_ALIAS } from './transfer-source-alias.js';
5
+ const SRC = TRANSFER_SOURCE_ALIAS;
6
+ /**
7
+ * Overwrites every `replace`-action destination `content_items` row
8
+ * (concat only — split never assigns `replace`) with this source's
9
+ * column values, using the same per-column remap rules
10
+ * {@link import('./insert-content-items.js').insertContentItems} applies
11
+ * (dictionary FKs through their `temp.xfer_map_*` table, `redirect_dest_id`/
12
+ * `alias_of_id`/`dedupe_cap_event_id` always `NULL`, `crawl_order` offset).
13
+ *
14
+ * `url_id` is deliberately excluded from the UPDATE — a `replace` row was
15
+ * matched by URL string in the first place (`plan-content-items-for-concat.ts`),
16
+ * so the destination's `url_id` already points at the correct `url_refs`
17
+ * row and must not change. `is_external`/`is_target` are never forced
18
+ * here (unlike `insertContentItems`'s `stub` case) — concat has no stub
19
+ * action, so the source's own observed values pass straight through the
20
+ * generic `default` branch.
21
+ *
22
+ * Must run BEFORE {@link import('./insert-content-items.js').insertContentItems}
23
+ * would otherwise be fine in either order relative to it (they touch
24
+ * disjoint plan actions), but MUST run before the page-scoped table
25
+ * copies (`copy-page-meta.ts` et al.) — and after
26
+ * {@link import('./clear-replaced-page-rows.js').clearReplacedPageRows}
27
+ * has deleted the old derived rows for these same destination ids, so the
28
+ * fresh page-scoped copy does not collide with stale data.
29
+ * @param trx - Transaction with the source ATTACHed as
30
+ * {@link TRANSFER_SOURCE_ALIAS}.
31
+ * @param options - Options.
32
+ * @param options.crawlOrderOffset - See `insertContentItems`'s parameter
33
+ * of the same name — the same value passed to that call for this source.
34
+ * @example
35
+ * ```ts
36
+ * await clearReplacedPageRows(trx);
37
+ * await replaceContentItems(trx, { crawlOrderOffset: 0 });
38
+ * await insertContentItems(trx, { crawlOrderOffset: 0 });
39
+ * ```
40
+ */
41
+ export async function replaceContentItems(trx, options) {
42
+ const columns = await listTransferColumns(trx, SRC, 'content_items', ['id', 'url_id']);
43
+ const setList = columns
44
+ .map((col) => `${quoteTransferIdentifier(col)} = x.${quoteTransferIdentifier(col)}`)
45
+ .join(', ');
46
+ const selectList = columns
47
+ .map((col) => {
48
+ const quotedCol = quoteTransferIdentifier(col);
49
+ switch (col) {
50
+ case 'content_type_id': {
51
+ return `mct.dest_id AS ${quotedCol}`;
52
+ }
53
+ case 'header_set_id': {
54
+ return `mhs.dest_id AS ${quotedCol}`;
55
+ }
56
+ case 'redirect_dest_id':
57
+ case 'alias_of_id':
58
+ case 'dedupe_cap_event_id': {
59
+ return `NULL AS ${quotedCol}`;
60
+ }
61
+ case 'crawl_order': {
62
+ return `s.crawl_order + ${options.crawlOrderOffset} AS ${quotedCol}`;
63
+ }
64
+ default: {
65
+ return `s.${quotedCol} AS ${quotedCol}`;
66
+ }
67
+ }
68
+ })
69
+ .join(', ');
70
+ await trx.raw(`
71
+ UPDATE main.content_items
72
+ SET ${setList}
73
+ FROM (
74
+ SELECT p.dest_id AS dest_id, ${selectList}
75
+ FROM xfer_ci_plan p
76
+ JOIN ${SRC}.content_items s ON s.id = p.src_id
77
+ LEFT JOIN xfer_map_content_type_refs mct ON mct.src_id = s.content_type_id
78
+ LEFT JOIN xfer_map_header_sets mhs ON mhs.src_id = s.header_set_id
79
+ WHERE p.action = ${TRANSFER_ACTION.replace}
80
+ ) x
81
+ WHERE main.content_items.id = x.dest_id
82
+ `);
83
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Every page-scoped table whose only FK column is its own page reference
3
+ * — no dictionary or cross-entity FK columns to remap, so every other
4
+ * column passes through unchanged. Covers the 9
5
+ * beholder-`MainContentsData` sub-entity tables, the technology-detection
6
+ * pair (always updated together, per ARCHITECTURE.md's pairing
7
+ * invariant — copying both in the same call keeps that true here too),
8
+ * `page_jsonld`, `page_errors`, `page_html_ref` (`hash` is the content-
9
+ * addressed identity of a `page_html_blobs` row, identical in every archive,
10
+ * so it passes through once `copy-page-html-blobs.ts` has copied the blob),
11
+ * and `page_templates` (`template_key` is a plain string column, not a
12
+ * dictionary FK — see `copy-page-template-clusters.ts` for its paired
13
+ * cluster-evidence table).
14
+ *
15
+ * Shared between {@link import('./copy-simple-page-scoped-tables.js').copySimplePageScopedTables}
16
+ * (what to copy verbatim) and
17
+ * {@link import('./clear-replaced-page-rows.js').clearReplacedPageRows}
18
+ * (a subset of what to delete for a `replace`d page) — a single list here
19
+ * means a future page-scoped table only needs adding in one place to stay
20
+ * consistent between the two operations.
21
+ */
22
+ export declare const SIMPLE_PAGE_SCOPED_TABLES: readonly {
23
+ table: string;
24
+ pageColumn: string;
25
+ }[];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Every page-scoped table whose only FK column is its own page reference
3
+ * — no dictionary or cross-entity FK columns to remap, so every other
4
+ * column passes through unchanged. Covers the 9
5
+ * beholder-`MainContentsData` sub-entity tables, the technology-detection
6
+ * pair (always updated together, per ARCHITECTURE.md's pairing
7
+ * invariant — copying both in the same call keeps that true here too),
8
+ * `page_jsonld`, `page_errors`, `page_html_ref` (`hash` is the content-
9
+ * addressed identity of a `page_html_blobs` row, identical in every archive,
10
+ * so it passes through once `copy-page-html-blobs.ts` has copied the blob),
11
+ * and `page_templates` (`template_key` is a plain string column, not a
12
+ * dictionary FK — see `copy-page-template-clusters.ts` for its paired
13
+ * cluster-evidence table).
14
+ *
15
+ * Shared between {@link import('./copy-simple-page-scoped-tables.js').copySimplePageScopedTables}
16
+ * (what to copy verbatim) and
17
+ * {@link import('./clear-replaced-page-rows.js').clearReplacedPageRows}
18
+ * (a subset of what to delete for a `replace`d page) — a single list here
19
+ * means a future page-scoped table only needs adding in one place to stay
20
+ * consistent between the two operations.
21
+ */
22
+ export const SIMPLE_PAGE_SCOPED_TABLES = [
23
+ { table: 'page_main_content_headings', pageColumn: 'pageId' },
24
+ { table: 'page_main_content_images', pageColumn: 'pageId' },
25
+ { table: 'page_main_content_tables', pageColumn: 'pageId' },
26
+ { table: 'page_main_content_buttons', pageColumn: 'pageId' },
27
+ { table: 'page_main_content_iframes', pageColumn: 'pageId' },
28
+ { table: 'page_main_content_videos', pageColumn: 'pageId' },
29
+ { table: 'page_main_content_audios', pageColumn: 'pageId' },
30
+ { table: 'page_main_content_canvases', pageColumn: 'pageId' },
31
+ { table: 'page_main_content_custom_elements', pageColumn: 'pageId' },
32
+ { table: 'technology_signals', pageColumn: 'pageId' },
33
+ { table: 'page_technologies', pageColumn: 'pageId' },
34
+ { table: 'page_jsonld', pageColumn: 'pageId' },
35
+ { table: 'page_errors', pageColumn: 'pageId' },
36
+ { table: 'page_html_ref', pageColumn: 'page_id' },
37
+ { table: 'page_templates', pageColumn: 'page_id' },
38
+ ];
@@ -0,0 +1,55 @@
1
+ import type { ArchiveAccessor } from '../archive-accessor.js';
2
+ import type Archive from '../archive.js';
3
+ import type { SplitArchiveResult, TransferCallbacks } from './types.js';
4
+ /**
5
+ * Extracts the subset of one read-only-opened source archive within the
6
+ * given scope URLs into an already `Archive.create`d, empty destination —
7
+ * the crawler-side half of the `split` CLI command. Does not open/close/
8
+ * write anything itself; see `concat-archives.ts`'s docs for the same
9
+ * lifecycle-ownership split (the CLI's `commands/split.ts` owns open →
10
+ * transfer → rebuild-read-model → write).
11
+ *
12
+ * Rejects a `fromList` source up front — see `build-split-config.ts`'s
13
+ * docs for why "roots = the given scope" has no coherent meaning for an
14
+ * archive whose `roots` is a URL list rather than a scope.
15
+ *
16
+ * `flattenRedirectChains` still runs even though a single, not-yet-merged
17
+ * source is already flat by construction — a cheap no-op, kept for the
18
+ * same reason `reclassifyResourceExternality` is written mode-agnostic
19
+ * rather than split having its own near-duplicate of each.
20
+ * @param options - See individual properties.
21
+ * @param options.source - The source, read-only opened
22
+ * (`Archive.openCached`).
23
+ * @param options.source.path
24
+ * @param options.source.accessor
25
+ * @param options.scopeUrls - The scope URLs the operator gave (raw
26
+ * strings; normalised to `withoutHash` form by
27
+ * {@link import('./build-split-config.js').buildSplitConfig}).
28
+ * @param options.destination - The empty destination, already
29
+ * `Archive.create`d by the caller.
30
+ * @param options.name - The output archive's `name` config field.
31
+ * @param options.callbacks - Progress callbacks; see `types.ts`.
32
+ * @returns The derived config and the transfer outcome.
33
+ * @throws {Error} If the source is a `fromList` archive, or `scopeUrls` is empty.
34
+ * @example
35
+ * ```ts
36
+ * const destination = await Archive.create({ filePath: outputPath, cwd });
37
+ * const accessor = await Archive.openCached(archivePath);
38
+ * const result = await splitArchive({
39
+ * source: { path: archivePath, accessor },
40
+ * scopeUrls: ['https://example.com/blog/'],
41
+ * destination,
42
+ * name: 'blog',
43
+ * });
44
+ * ```
45
+ */
46
+ export declare function splitArchive(options: {
47
+ readonly source: {
48
+ readonly accessor: ArchiveAccessor;
49
+ readonly path: string;
50
+ };
51
+ readonly scopeUrls: readonly string[];
52
+ readonly destination: Archive;
53
+ readonly name: string;
54
+ readonly callbacks?: TransferCallbacks;
55
+ }): Promise<SplitArchiveResult>;
@@ -0,0 +1,98 @@
1
+ import path from 'node:path';
2
+ import ArchiveDefault from '../archive.js';
3
+ import { buildScopeMap } from '../scope/build-scope-map.js';
4
+ import { buildSplitConfig } from './build-split-config.js';
5
+ import { copyInventorySourceLists } from './copy-inventory-source-lists.js';
6
+ import { countExternalPagesInScope } from './count-external-pages-in-scope.js';
7
+ import { flattenRedirectChains } from './flatten-redirect-chains.js';
8
+ import { reclassifyResourceExternality } from './reclassify-resource-externality.js';
9
+ import { transferArchiveRows } from './transfer-archive-rows.js';
10
+ /**
11
+ * Extracts the subset of one read-only-opened source archive within the
12
+ * given scope URLs into an already `Archive.create`d, empty destination —
13
+ * the crawler-side half of the `split` CLI command. Does not open/close/
14
+ * write anything itself; see `concat-archives.ts`'s docs for the same
15
+ * lifecycle-ownership split (the CLI's `commands/split.ts` owns open →
16
+ * transfer → rebuild-read-model → write).
17
+ *
18
+ * Rejects a `fromList` source up front — see `build-split-config.ts`'s
19
+ * docs for why "roots = the given scope" has no coherent meaning for an
20
+ * archive whose `roots` is a URL list rather than a scope.
21
+ *
22
+ * `flattenRedirectChains` still runs even though a single, not-yet-merged
23
+ * source is already flat by construction — a cheap no-op, kept for the
24
+ * same reason `reclassifyResourceExternality` is written mode-agnostic
25
+ * rather than split having its own near-duplicate of each.
26
+ * @param options - See individual properties.
27
+ * @param options.source - The source, read-only opened
28
+ * (`Archive.openCached`).
29
+ * @param options.source.path
30
+ * @param options.source.accessor
31
+ * @param options.scopeUrls - The scope URLs the operator gave (raw
32
+ * strings; normalised to `withoutHash` form by
33
+ * {@link import('./build-split-config.js').buildSplitConfig}).
34
+ * @param options.destination - The empty destination, already
35
+ * `Archive.create`d by the caller.
36
+ * @param options.name - The output archive's `name` config field.
37
+ * @param options.callbacks - Progress callbacks; see `types.ts`.
38
+ * @returns The derived config and the transfer outcome.
39
+ * @throws {Error} If the source is a `fromList` archive, or `scopeUrls` is empty.
40
+ * @example
41
+ * ```ts
42
+ * const destination = await Archive.create({ filePath: outputPath, cwd });
43
+ * const accessor = await Archive.openCached(archivePath);
44
+ * const result = await splitArchive({
45
+ * source: { path: archivePath, accessor },
46
+ * scopeUrls: ['https://example.com/blog/'],
47
+ * destination,
48
+ * name: 'blog',
49
+ * });
50
+ * ```
51
+ */
52
+ export async function splitArchive(options) {
53
+ const { source, scopeUrls, destination, name, callbacks } = options;
54
+ const sourceConfig = await source.accessor.getConfig();
55
+ if (sourceConfig.fromList) {
56
+ throw new Error('split: cannot split a --list/--list-file archive — its roots are a URL list, ' +
57
+ 'not a scope, so "roots = the given scope" has no coherent meaning for it.');
58
+ }
59
+ const config = buildSplitConfig(sourceConfig, scopeUrls, name);
60
+ await destination.setConfig(config);
61
+ const knex = destination.getKnex();
62
+ const scope = buildScopeMap(config.roots, config);
63
+ callbacks?.onSourceStart?.(0, source.path);
64
+ const sourceDbPath = path.join(source.accessor.tmpDir, ArchiveDefault.SQLITE_DB_FILE_NAME);
65
+ const result = await transferArchiveRows({
66
+ knex,
67
+ sourceDbPath,
68
+ mode: { kind: 'split', scopeMap: scope, parseOptions: config },
69
+ crawlOrderOffset: 0,
70
+ sourceIndex: 0,
71
+ callbacks,
72
+ });
73
+ if (result.inserted === 0) {
74
+ throw new Error('split: no page inside the given scope was found in the source archive — nothing to extract.');
75
+ }
76
+ callbacks?.onPhase?.(1, 'flatteningRedirects');
77
+ await flattenRedirectChains(knex);
78
+ callbacks?.onPhase?.(1, 'reclassifyingResources');
79
+ await reclassifyResourceExternality(knex, scope, config);
80
+ callbacks?.onPhase?.(1, 'countingExternalInScope');
81
+ // Not always 0: the operator's scope URLs are not required to be a
82
+ // SUBSET of the source's original roots. A split scope broader than (or
83
+ // merely different from) the original roots can bring a page that was
84
+ // only ever recorded as an external link (never crawled under the
85
+ // source's narrower original scope) inside the new scope — the same
86
+ // "still external, never fabricate a scrape" rule concat's own
87
+ // `externalInScopeCount` documents.
88
+ const externalInScopeCount = await countExternalPagesInScope(knex, scope, config);
89
+ const inventoryListsCopied = await copyInventorySourceLists(destination, [
90
+ source.accessor.tmpDir,
91
+ ]);
92
+ return {
93
+ config,
94
+ source: result,
95
+ externalInScopeCount,
96
+ inventoryListsCopied,
97
+ };
98
+ }
@@ -0,0 +1,11 @@
1
+ import type { TransferPhase } from './types.js';
2
+ /**
3
+ * Ordered phase sequence {@link import('./transfer-archive-rows.js').transferArchiveRows}
4
+ * announces via `onPhase` for split's single source — identical to
5
+ * {@link import('./concat-source-transfer-phases.js').CONCAT_SOURCE_TRANSFER_PHASES}
6
+ * (the phase sequence inside `transferArchiveRows` does not branch on
7
+ * mode, only what each phase DOES differs), kept as its own named export
8
+ * so a CLI caller building split's `TaskList` rows never has to reason
9
+ * about why it is importing something named "concat".
10
+ */
11
+ export declare const SPLIT_SOURCE_TRANSFER_PHASES: readonly TransferPhase[];
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Ordered phase sequence {@link import('./transfer-archive-rows.js').transferArchiveRows}
3
+ * announces via `onPhase` for split's single source — identical to
4
+ * {@link import('./concat-source-transfer-phases.js').CONCAT_SOURCE_TRANSFER_PHASES}
5
+ * (the phase sequence inside `transferArchiveRows` does not branch on
6
+ * mode, only what each phase DOES differs), kept as its own named export
7
+ * so a CLI caller building split's `TaskList` rows never has to reason
8
+ * about why it is importing something named "concat".
9
+ */
10
+ export const SPLIT_SOURCE_TRANSFER_PHASES = [
11
+ 'planningContentItems',
12
+ 'copyingDictionaries',
13
+ 'copyingContentItems',
14
+ 'copyingPageRows',
15
+ 'copyingResources',
16
+ 'copyingJournals',
17
+ 'committing',
18
+ ];
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The action a `content_items` transfer plan (`temp.xfer_ci_plan`) assigns
3
+ * to each source row, stored as a small integer so the plan table can be
4
+ * queried/joined without a TEXT comparison.
5
+ *
6
+ * - `full` — insert the source row (and its page-scoped data) as a
7
+ * brand-new destination row. Used by both concat (no existing dest row
8
+ * for this URL yet) and split (in-scope, kept in full).
9
+ * - `stub` — insert only the `content_items` row itself, forced to
10
+ * `is_external = 1` / `is_target = 0`; no `page_meta` or any other
11
+ * page-scoped row is copied. Split-only — an out-of-scope page that a
12
+ * kept page still references (an anchor target or a redirect
13
+ * destination).
14
+ * - `replace` — an existing destination row for this URL is overwritten
15
+ * because this source's observation outranks it (see
16
+ * `content-item-rank-sql.ts`). Concat-only.
17
+ * - `skip` — the source row is not copied at all; the destination already
18
+ * holds an equal-or-better observation for this URL. Concat-only.
19
+ *
20
+ * `full` and `stub` are the only actions {@link
21
+ * import('./plan-content-items-for-split.js').planContentItemsForSplit}
22
+ * ever assigns; `full`, `replace`, and `skip` are the only actions {@link
23
+ * import('./plan-content-items-for-concat.js').planContentItemsForConcat}
24
+ * ever assigns — a row not present in the plan at all means "dropped"
25
+ * (split-only: out of scope and unreferenced by anything kept).
26
+ */
27
+ export declare const TRANSFER_ACTION: {
28
+ readonly full: 1;
29
+ readonly stub: 2;
30
+ readonly replace: 3;
31
+ readonly skip: 4;
32
+ };
33
+ /** Union of {@link TRANSFER_ACTION}'s values. */
34
+ export type TransferAction = (typeof TRANSFER_ACTION)[keyof typeof TRANSFER_ACTION];
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The action a `content_items` transfer plan (`temp.xfer_ci_plan`) assigns
3
+ * to each source row, stored as a small integer so the plan table can be
4
+ * queried/joined without a TEXT comparison.
5
+ *
6
+ * - `full` — insert the source row (and its page-scoped data) as a
7
+ * brand-new destination row. Used by both concat (no existing dest row
8
+ * for this URL yet) and split (in-scope, kept in full).
9
+ * - `stub` — insert only the `content_items` row itself, forced to
10
+ * `is_external = 1` / `is_target = 0`; no `page_meta` or any other
11
+ * page-scoped row is copied. Split-only — an out-of-scope page that a
12
+ * kept page still references (an anchor target or a redirect
13
+ * destination).
14
+ * - `replace` — an existing destination row for this URL is overwritten
15
+ * because this source's observation outranks it (see
16
+ * `content-item-rank-sql.ts`). Concat-only.
17
+ * - `skip` — the source row is not copied at all; the destination already
18
+ * holds an equal-or-better observation for this URL. Concat-only.
19
+ *
20
+ * `full` and `stub` are the only actions {@link
21
+ * import('./plan-content-items-for-split.js').planContentItemsForSplit}
22
+ * ever assigns; `full`, `replace`, and `skip` are the only actions {@link
23
+ * import('./plan-content-items-for-concat.js').planContentItemsForConcat}
24
+ * ever assigns — a row not present in the plan at all means "dropped"
25
+ * (split-only: out of scope and unreferenced by anything kept).
26
+ */
27
+ export const TRANSFER_ACTION = {
28
+ full: 1,
29
+ stub: 2,
30
+ replace: 3,
31
+ skip: 4,
32
+ };
@@ -0,0 +1,65 @@
1
+ import type { TransferCallbacks, TransferSourceResult } from './types.js';
2
+ import type { ExURL, ParseURLOptions } from '@d-zero/shared/parse-url';
3
+ import type { Knex } from 'knex';
4
+ /** One source's transfer mode and (for split) scope-check inputs. */
5
+ export type TransferSourceMode = {
6
+ readonly kind: 'concat';
7
+ } | {
8
+ readonly kind: 'split';
9
+ readonly scopeMap: ReadonlyMap<string, readonly ExURL[]>;
10
+ readonly parseOptions?: ParseURLOptions;
11
+ };
12
+ /**
13
+ * Transfers ONE source archive's rows into the destination — the shared
14
+ * engine {@link import('./concat-archives.js').concatArchives} and
15
+ * {@link import('./split-archive.js').splitArchive} both drive, once per
16
+ * source. Attaches the source, plans, copies every table in dependency
17
+ * order, and detaches — always, even on failure (`finally`).
18
+ *
19
+ * Order within the transaction (see each step's own docs for why this
20
+ * exact order, not a different one):
21
+ * 1. Plan `content_items` (mode-specific) and `resource_items`.
22
+ * 2. Copy every dictionary (mode-specific), then their `header_sets`
23
+ * children and `page_html_blobs` (both depend on the dictionary maps
24
+ * dictionaries step just built).
25
+ * 3. Concat only: clear the old page-scoped rows of every `replace`
26
+ * destination, then overwrite its `content_items` row. Both modes:
27
+ * insert every `full`/`stub` row, backfilling `dest_id`; remap
28
+ * `redirect_dest_id` now that every row has one.
29
+ * 4. Copy every page-scoped table.
30
+ * 5. Copy `resource_items` (and its js-scan cache), then
31
+ * `resource_ref_edges` (needs the resource plan's `dest_id`, just
32
+ * resolved).
33
+ * 6. Copy the append-only journal tables.
34
+ * @param options - See individual properties.
35
+ * @param options.knex - Knex connected to the destination archive DB (the
36
+ * connection ATTACH/temp-tables/transaction all operate against).
37
+ * @param options.sourceDbPath - Absolute path to the source's `db.sqlite`
38
+ * (e.g. `path.join(accessor.tmpDir, Archive.SQLITE_DB_FILE_NAME)`).
39
+ * @param options.mode - `{ kind: 'concat' }`, or `{ kind: 'split',
40
+ * scopeMap, parseOptions? }` for the narrower-scope pass.
41
+ * @param options.crawlOrderOffset - Forwarded to
42
+ * `insertContentItems`/`replaceContentItems` — see their docs.
43
+ * @param options.sourceIndex - This source's 0-based position, forwarded
44
+ * verbatim to `callbacks` — purely for display, not used in any query.
45
+ * @param options.callbacks - Progress callbacks; see `types.ts`.
46
+ * @returns Per-action row counts — see {@link TransferSourceResult}.
47
+ * @example
48
+ * ```ts
49
+ * const result = await transferArchiveRows({
50
+ * knex: destination.getKnex(),
51
+ * sourceDbPath: path.join(accessor.tmpDir, Archive.SQLITE_DB_FILE_NAME),
52
+ * mode: { kind: 'concat' },
53
+ * crawlOrderOffset: 0,
54
+ * sourceIndex: 0,
55
+ * });
56
+ * ```
57
+ */
58
+ export declare function transferArchiveRows(options: {
59
+ readonly knex: Knex;
60
+ readonly sourceDbPath: string;
61
+ readonly mode: TransferSourceMode;
62
+ readonly crawlOrderOffset: number;
63
+ readonly sourceIndex: number;
64
+ readonly callbacks?: TransferCallbacks;
65
+ }): Promise<TransferSourceResult>;