@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,74 @@
1
+ import knex from 'knex';
2
+ import { setConfig } from '../db-ops/config/set-config.js';
3
+ import { init } from '../db-ops/lifecycle/init.js';
4
+ import { LibsqlDialect } from '../libsql-dialect.js';
5
+ /**
6
+ * Default {@link Config} fields for {@link buildFullSchemaTestDb} — a
7
+ * single-root, recursive, non-list crawl of `https://example.com/`, no
8
+ * excludes. Overridable per-call for scope/`fromList`/`disableQueries`
9
+ * tests.
10
+ */
11
+ const DEFAULT_TEST_CONFIG = {
12
+ version: '0.13.0',
13
+ name: 'test',
14
+ baseUrl: 'https://example.com/',
15
+ roots: ['https://example.com/'],
16
+ recursive: true,
17
+ interval: 0,
18
+ image: false,
19
+ fetchExternal: false,
20
+ parallels: 1,
21
+ excludes: [],
22
+ excludeKeywords: [],
23
+ excludeUrls: [],
24
+ maxExcludedDepth: 0,
25
+ retry: 3,
26
+ fromList: false,
27
+ disableQueries: false,
28
+ userAgent: 'test',
29
+ ignoreRobots: false,
30
+ mainContentSelector: null,
31
+ };
32
+ /**
33
+ * Builds a file-backed knex connection against the FULL current archive
34
+ * schema (every ref/entity/adjunct table, including columns only a
35
+ * migration adds to a legacy archive — `alias_of_id`, `dedupe_cap_event_id`,
36
+ * `body_hash`, …) by running the exact same {@link init} boot sequence a
37
+ * real `Archive.create`/`Archive.open` uses. Shared by every
38
+ * `archive/transfer/` spec that needs a realistic source or destination
39
+ * database — hand-rolling `createRefTables`/`createEntityTables`/
40
+ * `createAdjunctTables` directly would produce the schema `initSchema`
41
+ * creates but skip the migrations that add columns for archives created
42
+ * before those features existed (which happen to be a no-op on a fresh
43
+ * DB today, but drift is exactly the risk this helper avoids).
44
+ *
45
+ * A DB file must be used (not `:memory:`) because `ATTACH DATABASE` in
46
+ * the transfer primitives needs a real path — see `attach-source-database.ts`.
47
+ * @param filename - Absolute path to the SQLite file. The caller is
48
+ * responsible for removing it (`afterEach`) — see existing specs for the
49
+ * convention.
50
+ * @param config - Overrides merged over {@link DEFAULT_TEST_CONFIG} and
51
+ * written via `setConfig` once the schema exists. Pass `null` to skip
52
+ * writing an `info` row entirely (some specs seed `content_items`
53
+ * directly and never read `getConfig()`).
54
+ * @returns The connected knex instance, on the current schema, with an
55
+ * `info` row unless `config` is `null`.
56
+ * @example
57
+ * ```ts
58
+ * const db = await buildFullSchemaTestDb(path.resolve(workingDir, 'source.sqlite'), {
59
+ * roots: ['https://a.example.com/'],
60
+ * });
61
+ * ```
62
+ */
63
+ export async function buildFullSchemaTestDb(filename, config = {}) {
64
+ const instance = knex({
65
+ client: LibsqlDialect,
66
+ connection: { filename },
67
+ useNullAsDefault: true,
68
+ });
69
+ await init(instance, false);
70
+ if (config !== null) {
71
+ await setConfig(instance, { ...DEFAULT_TEST_CONFIG, ...config });
72
+ }
73
+ return instance;
74
+ }
@@ -0,0 +1,13 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Creates the `analysis_text_refs` / `analysis_violations` tables in the shape
4
+ * an archive written by an earlier version carries (FK → `content_items(id)`).
5
+ * Current archives do not create these tables, so specs that exercise the
6
+ * guarded cleanup of legacy archives provision them through this helper.
7
+ * @param db - Knex connected to the test DB (or a transaction).
8
+ * @example
9
+ * await createAdjunctTables(db);
10
+ * await createLegacyAnalysisTables(db);
11
+ * await db('analysis_text_refs').insert({ text: 'msg', sha256: 'abc' });
12
+ */
13
+ export declare function createLegacyAnalysisTables(db: Knex): Promise<void>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Creates the `analysis_text_refs` / `analysis_violations` tables in the shape
3
+ * an archive written by an earlier version carries (FK → `content_items(id)`).
4
+ * Current archives do not create these tables, so specs that exercise the
5
+ * guarded cleanup of legacy archives provision them through this helper.
6
+ * @param db - Knex connected to the test DB (or a transaction).
7
+ * @example
8
+ * await createAdjunctTables(db);
9
+ * await createLegacyAnalysisTables(db);
10
+ * await db('analysis_text_refs').insert({ text: 'msg', sha256: 'abc' });
11
+ */
12
+ export async function createLegacyAnalysisTables(db) {
13
+ await db.raw(`
14
+ CREATE TABLE analysis_text_refs (
15
+ id integer primary key,
16
+ text text not null,
17
+ sha256 text not null,
18
+ unique(sha256, text)
19
+ )
20
+ `);
21
+ await db.raw(`
22
+ CREATE TABLE analysis_violations (
23
+ id integer primary key,
24
+ page_id integer not null references content_items(id),
25
+ validator text not null,
26
+ severity text not null,
27
+ rule text not null,
28
+ message_text_id integer not null references analysis_text_refs(id),
29
+ code_text_id integer references analysis_text_refs(id),
30
+ page_url_sort_key text not null,
31
+ message_sort_key text not null,
32
+ code_sort_key text not null,
33
+ line integer,
34
+ col integer
35
+ )
36
+ `);
37
+ }
@@ -0,0 +1,15 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Returns the set of parent table names referenced by `table`'s FK
4
+ * clauses, read via SQLite's `pragma_foreign_key_list` table-valued
5
+ * function. Shared by the specs that assert FK declarations were
6
+ * retargeted from the legacy `pages(id)` to `content_items(id)`.
7
+ * @param db - Knex connected to the test DB.
8
+ * @param table - Table whose FK declarations to inspect.
9
+ * @returns Parent table names, deduplicated.
10
+ * @example
11
+ * const parents = await fkParentTables(db, 'page_errors');
12
+ * expect(parents.has('content_items')).toBe(true);
13
+ * expect(parents.has('pages')).toBe(false);
14
+ */
15
+ export declare function fkParentTables(db: Knex, table: string): Promise<Set<string>>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Returns the set of parent table names referenced by `table`'s FK
3
+ * clauses, read via SQLite's `pragma_foreign_key_list` table-valued
4
+ * function. Shared by the specs that assert FK declarations were
5
+ * retargeted from the legacy `pages(id)` to `content_items(id)`.
6
+ * @param db - Knex connected to the test DB.
7
+ * @param table - Table whose FK declarations to inspect.
8
+ * @returns Parent table names, deduplicated.
9
+ * @example
10
+ * const parents = await fkParentTables(db, 'page_errors');
11
+ * expect(parents.has('content_items')).toBe(true);
12
+ * expect(parents.has('pages')).toBe(false);
13
+ */
14
+ export async function fkParentTables(db, table) {
15
+ const rows = await db
16
+ .select('table')
17
+ .from(db.raw('pragma_foreign_key_list(?)', [table]));
18
+ return new Set(rows.map((row) => row.table));
19
+ }
@@ -0,0 +1,35 @@
1
+ import type { PageSource } from '../types.js';
2
+ import type { Knex } from 'knex';
3
+ /**
4
+ * Optional column overrides for {@link seedContentItem}. Defaults model a
5
+ * scraped, internal, targeted page with no content type.
6
+ */
7
+ interface SeedContentItemOptions {
8
+ /** `content_items.scraped` (default 1). */
9
+ scraped?: 0 | 1;
10
+ /** `content_items.is_target` (default 1). */
11
+ isTarget?: 0 | 1;
12
+ /** `content_items.is_external` (default 0). */
13
+ isExternal?: 0 | 1;
14
+ /** `content_items.source` (default: schema default `'crawled'`). */
15
+ source?: PageSource;
16
+ /** Registers the value in `content_type_refs` and links it (default: none). */
17
+ contentType?: string;
18
+ }
19
+ /**
20
+ * Inserts one `url_refs` + `content_items` pair — the minimal seeding
21
+ * contract for specs that exercise entity-table readers. Shared so a
22
+ * schema change to the pair (e.g. a new NOT NULL column) is fixed in one
23
+ * place instead of drifting across per-spec copies.
24
+ * @param db - Knex connected to the test DB.
25
+ * @param url - URL string to register in `url_refs`.
26
+ * @param options - Column overrides; see {@link SeedContentItemOptions}.
27
+ * @returns The inserted `content_items.id`.
28
+ * @example
29
+ * const pageId = await seedContentItem(db, 'https://example.com/');
30
+ * const pdfId = await seedContentItem(db, 'https://example.com/doc.pdf', {
31
+ * contentType: 'application/pdf',
32
+ * });
33
+ */
34
+ export declare function seedContentItem(db: Knex, url: string, options?: SeedContentItemOptions): Promise<number>;
35
+ export {};
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Inserts one `url_refs` + `content_items` pair — the minimal seeding
3
+ * contract for specs that exercise entity-table readers. Shared so a
4
+ * schema change to the pair (e.g. a new NOT NULL column) is fixed in one
5
+ * place instead of drifting across per-spec copies.
6
+ * @param db - Knex connected to the test DB.
7
+ * @param url - URL string to register in `url_refs`.
8
+ * @param options - Column overrides; see {@link SeedContentItemOptions}.
9
+ * @returns The inserted `content_items.id`.
10
+ * @example
11
+ * const pageId = await seedContentItem(db, 'https://example.com/');
12
+ * const pdfId = await seedContentItem(db, 'https://example.com/doc.pdf', {
13
+ * contentType: 'application/pdf',
14
+ * });
15
+ */
16
+ export async function seedContentItem(db, url, options = {}) {
17
+ const [urlRef] = await db('url_refs').insert({ url }).returning('id');
18
+ let contentTypeId = null;
19
+ if (options.contentType !== undefined) {
20
+ const [ctRef] = await db('content_type_refs')
21
+ .insert({
22
+ raw: options.contentType,
23
+ normalized: options.contentType,
24
+ category: 'other',
25
+ })
26
+ .onConflict('raw')
27
+ .merge({ raw: options.contentType })
28
+ .returning('id');
29
+ contentTypeId = ctRef.id;
30
+ }
31
+ const [item] = await db('content_items')
32
+ .insert({
33
+ url_id: urlRef.id,
34
+ scraped: options.scraped ?? 1,
35
+ is_target: options.isTarget ?? 1,
36
+ is_external: options.isExternal ?? 0,
37
+ content_type_id: contentTypeId,
38
+ ...(options.source === undefined ? {} : { source: options.source }),
39
+ })
40
+ .returning('id');
41
+ return item.id;
42
+ }
@@ -0,0 +1,34 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Provisions the pre-0.13 legacy table shape on a test database:
4
+ * the five legacy write-model tables (`pages` / `anchors` / `images` /
5
+ * `resources` / `resources-referrers`) plus the five adjunct tables in
6
+ * their old form whose FK columns still point at `pages(id)`
7
+ * (`page_html_ref` / `page_tags` / `page_jsonld` / `page_errors` /
8
+ * `analysis_violations`, with their companion tables `page_html_blobs` /
9
+ * `analysis_text_refs`). The two `analysis_*` tables are the input of the
10
+ * 0.13 migration's drop path (no current-schema counterpart).
11
+ *
12
+ * `initSchema` no longer creates any of these shapes — fresh archives get
13
+ * neither the legacy write-model tables nor `pages(id)`-referencing
14
+ * adjunct tables — so specs that exercise the migration input format
15
+ * (`scripts/migrate-to-0.13.mjs` integration, `retargetLegacyFkTables`,
16
+ * `dropLegacyTables`) build it through this helper instead. The DDL is a
17
+ * verbatim copy of what pre-0.13 archives actually contain: the legacy
18
+ * write-model tables match the pre-0.13 `initSchema`, and the adjunct
19
+ * tables match the `scripts/migrate-to-0.10.mjs` / lazy-runtime-migration
20
+ * output of that era.
21
+ *
22
+ * Any current-form adjunct tables already present (e.g. created by
23
+ * `Archive.create()` on the current schema) are dropped first so the
24
+ * old-FK versions can take their place — callers get a deterministic
25
+ * "genuine pre-0.13 archive" shape regardless of how the underlying DB
26
+ * was provisioned.
27
+ * @param db - Knex connected to the test DB (or a transaction).
28
+ * @example
29
+ * await createRefTables(db);
30
+ * await createEntityTables(db);
31
+ * await setupLegacyFkDb(db);
32
+ * await db('pages').insert({ url: 'https://example.com/', scraped: 1, isTarget: 1 });
33
+ */
34
+ export declare function setupLegacyFkDb(db: Knex): Promise<void>;
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Provisions the pre-0.13 legacy table shape on a test database:
3
+ * the five legacy write-model tables (`pages` / `anchors` / `images` /
4
+ * `resources` / `resources-referrers`) plus the five adjunct tables in
5
+ * their old form whose FK columns still point at `pages(id)`
6
+ * (`page_html_ref` / `page_tags` / `page_jsonld` / `page_errors` /
7
+ * `analysis_violations`, with their companion tables `page_html_blobs` /
8
+ * `analysis_text_refs`). The two `analysis_*` tables are the input of the
9
+ * 0.13 migration's drop path (no current-schema counterpart).
10
+ *
11
+ * `initSchema` no longer creates any of these shapes — fresh archives get
12
+ * neither the legacy write-model tables nor `pages(id)`-referencing
13
+ * adjunct tables — so specs that exercise the migration input format
14
+ * (`scripts/migrate-to-0.13.mjs` integration, `retargetLegacyFkTables`,
15
+ * `dropLegacyTables`) build it through this helper instead. The DDL is a
16
+ * verbatim copy of what pre-0.13 archives actually contain: the legacy
17
+ * write-model tables match the pre-0.13 `initSchema`, and the adjunct
18
+ * tables match the `scripts/migrate-to-0.10.mjs` / lazy-runtime-migration
19
+ * output of that era.
20
+ *
21
+ * Any current-form adjunct tables already present (e.g. created by
22
+ * `Archive.create()` on the current schema) are dropped first so the
23
+ * old-FK versions can take their place — callers get a deterministic
24
+ * "genuine pre-0.13 archive" shape regardless of how the underlying DB
25
+ * was provisioned.
26
+ * @param db - Knex connected to the test DB (or a transaction).
27
+ * @example
28
+ * await createRefTables(db);
29
+ * await createEntityTables(db);
30
+ * await setupLegacyFkDb(db);
31
+ * await db('pages').insert({ url: 'https://example.com/', scraped: 1, isTarget: 1 });
32
+ */
33
+ export async function setupLegacyFkDb(db) {
34
+ // Children before parents so the drops never trip FK enforcement
35
+ // when the caller has `PRAGMA foreign_keys = ON`.
36
+ await db.raw('DROP TABLE IF EXISTS "page_html_ref"');
37
+ await db.raw('DROP TABLE IF EXISTS "page_html_blobs"');
38
+ await db.raw('DROP TABLE IF EXISTS "analysis_violations"');
39
+ await db.raw('DROP TABLE IF EXISTS "analysis_text_refs"');
40
+ await db.raw('DROP TABLE IF EXISTS "page_tags"');
41
+ await db.raw('DROP TABLE IF EXISTS "page_jsonld"');
42
+ await db.raw('DROP TABLE IF EXISTS "page_errors"');
43
+ await db.schema
44
+ .createTable('pages', (t) => {
45
+ t.increments('id');
46
+ t.string('url', 8190).notNullable().unique();
47
+ t.integer('redirectDestId').unsigned().references('pages.id').defaultTo(null);
48
+ t.boolean('scraped').notNullable();
49
+ t.boolean('isTarget').notNullable();
50
+ t.boolean('isExternal');
51
+ t.integer('status');
52
+ t.string('statusText');
53
+ t.string('contentType').nullable();
54
+ t.integer('contentLength').unsigned().nullable();
55
+ t.json('responseHeaders').nullable();
56
+ // Document basics
57
+ t.string('lang');
58
+ t.string('dir');
59
+ t.string('charset');
60
+ t.string('baseHref');
61
+ t.text('viewport_raw');
62
+ t.string('themeColor');
63
+ t.string('applicationName');
64
+ t.string('author');
65
+ t.string('generator');
66
+ t.string('publisher');
67
+ // Title / description / keywords (top-level Meta fields)
68
+ t.string('title');
69
+ t.text('description');
70
+ t.text('keywords');
71
+ // Robots
72
+ t.text('robots_raw');
73
+ t.integer('robots_noindex');
74
+ t.integer('robots_nofollow');
75
+ t.integer('robots_noarchive');
76
+ t.integer('robots_noimageindex');
77
+ t.string('googlebot');
78
+ // Link (1:1 only — array shapes live in meta_extras)
79
+ t.string('canonical', 8190);
80
+ t.string('amphtml', 8190);
81
+ t.string('manifest', 8190);
82
+ t.string('icon_href', 8190);
83
+ t.string('appleTouchIcon_href', 8190);
84
+ // Open Graph
85
+ t.string('og_type');
86
+ t.string('og_title');
87
+ t.string('og_url', 8190);
88
+ t.string('og_site_name');
89
+ t.text('og_description');
90
+ t.string('og_image', 8190);
91
+ t.string('og_image_alt');
92
+ t.string('og_image_width');
93
+ t.string('og_image_height');
94
+ t.string('og_locale');
95
+ t.string('og_article_published_time');
96
+ t.string('og_article_modified_time');
97
+ // Twitter
98
+ t.string('twitter_card');
99
+ t.string('twitter_site');
100
+ t.string('twitter_creator');
101
+ t.string('twitter_title');
102
+ t.text('twitter_description');
103
+ t.string('twitter_image', 8190);
104
+ // One-offs
105
+ t.string('fb_app_id');
106
+ t.string('verification_google');
107
+ t.integer('formatDetection_telephone');
108
+ // Within-archive observation timestamps (UNIX ms)
109
+ t.integer('firstCrawledAt');
110
+ t.integer('lastCrawledAt');
111
+ // Denormalised aggregates
112
+ t.integer('tag_count');
113
+ t.integer('jsonld_count');
114
+ t.text('tags_providers_csv');
115
+ // Catch-all JSON for nested Meta sub-objects not flattened above
116
+ t.json('meta_extras');
117
+ // Crawl lifecycle
118
+ t.boolean('isSkipped');
119
+ t.string('skipReason');
120
+ t.integer('order').unsigned().nullable();
121
+ t.string('source').notNullable().defaultTo('crawled');
122
+ t.index('isExternal');
123
+ t.index('contentType');
124
+ t.index('scraped');
125
+ t.index('redirectDestId');
126
+ t.index('order');
127
+ t.index('robots_noindex');
128
+ t.index('og_type');
129
+ t.index('source');
130
+ })
131
+ .createTable('anchors', (t) => {
132
+ t.increments('id');
133
+ t.integer('pageId').notNullable().unsigned().references('pages.id');
134
+ t.integer('hrefId').notNullable().unsigned().references('pages.id');
135
+ t.string('hash');
136
+ t.string('textContent').nullable();
137
+ t.index('pageId');
138
+ t.index('hrefId');
139
+ })
140
+ .createTable('images', (t) => {
141
+ t.increments('id');
142
+ t.integer('pageId').notNullable().unsigned().references('pages.id');
143
+ t.string('src', 8190);
144
+ t.string('currentSrc', 8190);
145
+ t.string('alt');
146
+ t.float('width').unsigned().notNullable();
147
+ t.float('height').unsigned().notNullable();
148
+ t.integer('naturalWidth').unsigned().notNullable();
149
+ t.integer('naturalHeight').unsigned().notNullable();
150
+ t.boolean('isLazy');
151
+ t.integer('viewportWidth').unsigned().notNullable();
152
+ t.string('sourceCode');
153
+ t.index('pageId');
154
+ })
155
+ .createTable('resources', (t) => {
156
+ t.increments('id');
157
+ t.string('url', 8190).notNullable().unique();
158
+ t.boolean('isExternal');
159
+ t.integer('status');
160
+ t.string('statusText');
161
+ t.string('contentType').nullable();
162
+ t.integer('contentLength').unsigned().nullable();
163
+ t.string('compress').nullable();
164
+ t.string('cdn').nullable();
165
+ t.json('responseHeaders').nullable();
166
+ t.string('source').notNullable().defaultTo('crawled');
167
+ t.index('source');
168
+ })
169
+ .createTable('resources-referrers', (t) => {
170
+ t.increments('id');
171
+ t.integer('resourceId').notNullable().unsigned().references('resources.id');
172
+ t.integer('pageId').notNullable().unsigned().references('pages.id');
173
+ t.unique(['resourceId', 'pageId']);
174
+ t.index('resourceId');
175
+ t.index('pageId');
176
+ });
177
+ // Adjunct tables in their pre-0.13 shape: FK columns point at
178
+ // `pages(id)` — the exact declarations that
179
+ // `scripts/migrate-to-0.10.mjs` and the runtime lazy migrations of
180
+ // that era produced.
181
+ await db.schema.createTable('page_errors', (t) => {
182
+ t.increments('id');
183
+ t.integer('pageId').notNullable().unsigned().references('pages.id');
184
+ t.string('phase').notNullable();
185
+ t.text('message').notNullable();
186
+ t.integer('createdAt').notNullable();
187
+ t.index('pageId');
188
+ });
189
+ await db.schema.createTable('page_tags', (t) => {
190
+ t.increments('id');
191
+ t.integer('pageId')
192
+ .notNullable()
193
+ .unsigned()
194
+ .references('pages.id')
195
+ .onDelete('CASCADE');
196
+ t.string('provider').notNullable();
197
+ t.string('category');
198
+ t.string('externalId');
199
+ t.string('version');
200
+ t.integer('confidence');
201
+ t.json('categories');
202
+ t.json('sources');
203
+ t.index('pageId');
204
+ t.index('provider');
205
+ t.index('externalId');
206
+ });
207
+ await db.raw('CREATE INDEX page_tags_provider_extId ON page_tags(provider, externalId)');
208
+ await db.raw('CREATE INDEX page_tags_provider_pageId ON page_tags(provider, pageId)');
209
+ await db.schema.createTable('page_jsonld', (t) => {
210
+ t.increments('id');
211
+ t.integer('pageId')
212
+ .notNullable()
213
+ .unsigned()
214
+ .references('pages.id')
215
+ .onDelete('CASCADE');
216
+ t.string('kind').notNullable();
217
+ t.string('type');
218
+ t.text('raw').notNullable();
219
+ t.json('parsed');
220
+ t.text('parseError');
221
+ t.index('pageId');
222
+ t.index('type');
223
+ });
224
+ await db.raw('CREATE INDEX page_jsonld_type_pageId ON page_jsonld(type, pageId)');
225
+ await db.raw(`
226
+ CREATE TABLE analysis_text_refs (
227
+ id integer primary key,
228
+ text text not null,
229
+ sha256 text not null,
230
+ unique(sha256, text)
231
+ )
232
+ `);
233
+ await db.raw(`
234
+ CREATE TABLE analysis_violations (
235
+ id integer primary key,
236
+ page_id integer not null references pages(id),
237
+ validator text not null,
238
+ severity text not null,
239
+ rule text not null,
240
+ message_text_id integer not null references analysis_text_refs(id),
241
+ code_text_id integer references analysis_text_refs(id),
242
+ page_url_sort_key text not null,
243
+ message_sort_key text not null,
244
+ code_sort_key text not null
245
+ )
246
+ `);
247
+ await db.raw('CREATE INDEX av_url_order ON analysis_violations(page_url_sort_key, id)');
248
+ await db.raw('CREATE INDEX av_filter_url ON analysis_violations(validator, severity, rule, page_url_sort_key, id)');
249
+ await db.raw('CREATE INDEX av_validator_url ON analysis_violations(validator, page_url_sort_key, id)');
250
+ await db.raw('CREATE INDEX av_severity_url ON analysis_violations(severity, page_url_sort_key, id)');
251
+ await db.raw('CREATE INDEX av_rule_url ON analysis_violations(rule, page_url_sort_key, id)');
252
+ await db.raw('CREATE INDEX av_message_order ON analysis_violations(message_sort_key, id)');
253
+ await db.raw('CREATE INDEX av_code_order ON analysis_violations(code_sort_key, id)');
254
+ await db.raw('CREATE INDEX av_page ON analysis_violations(page_id, id)');
255
+ await db.raw(`
256
+ CREATE TABLE page_html_blobs (
257
+ hash BLOB PRIMARY KEY,
258
+ body BLOB NOT NULL,
259
+ codec TEXT NOT NULL CHECK(codec IN ('zstd', 'none')),
260
+ size_raw INTEGER NOT NULL,
261
+ size_stored INTEGER NOT NULL
262
+ ) WITHOUT ROWID
263
+ `);
264
+ await db.raw(`
265
+ CREATE TABLE page_html_ref (
266
+ page_id INTEGER PRIMARY KEY REFERENCES pages(id) ON DELETE CASCADE,
267
+ hash BLOB NOT NULL REFERENCES page_html_blobs(hash)
268
+ ) WITHOUT ROWID
269
+ `);
270
+ await db.raw('CREATE INDEX idx_page_html_ref_hash ON page_html_ref(hash)');
271
+ }
@@ -0,0 +1,31 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Attaches a source archive's `db.sqlite` file to the destination
4
+ * connection under the {@link TRANSFER_SOURCE_ALIAS} schema alias, so a
5
+ * transfer can read the source and write the destination in the same SQL
6
+ * statement (`INSERT INTO main.content_items SELECT ... FROM xfer_src.content_items`).
7
+ *
8
+ * `ATTACH DATABASE` must run OUTSIDE any transaction — SQLite rejects it
9
+ * with "cannot ATTACH database within transaction" otherwise — so this is
10
+ * always called before `knex.transaction(...)` opens, never inside it. The
11
+ * returned function detaches and must be called after the transaction
12
+ * commits or rolls back, in a `finally`.
13
+ * @param knex - Knex query builder connected to the destination archive DB
14
+ * (the connection whose schema this attaches to — not a transaction).
15
+ * @param sourceDbPath - Absolute path to the source's `db.sqlite` file
16
+ * (typically `path.join(accessor.tmpDir, Archive.SQLITE_DB_FILE_NAME)`).
17
+ * @returns An async function that detaches the source. Idempotent-safe to
18
+ * call even if the attach itself failed partway (best-effort).
19
+ * @throws {Error} If `ATTACH DATABASE` fails (e.g. the path does not exist,
20
+ * or a transaction is already open on this connection).
21
+ * @example
22
+ * ```ts
23
+ * const detach = await attachSourceDatabase(knex, sourceDbPath);
24
+ * try {
25
+ * await knex.transaction(async (trx) => { ... trx.raw('SELECT * FROM xfer_src.content_items') ... });
26
+ * } finally {
27
+ * await detach();
28
+ * }
29
+ * ```
30
+ */
31
+ export declare function attachSourceDatabase(knex: Knex, sourceDbPath: string): Promise<() => Promise<void>>;
@@ -0,0 +1,40 @@
1
+ import { TRANSFER_SOURCE_ALIAS } from './transfer-source-alias.js';
2
+ /**
3
+ * Attaches a source archive's `db.sqlite` file to the destination
4
+ * connection under the {@link TRANSFER_SOURCE_ALIAS} schema alias, so a
5
+ * transfer can read the source and write the destination in the same SQL
6
+ * statement (`INSERT INTO main.content_items SELECT ... FROM xfer_src.content_items`).
7
+ *
8
+ * `ATTACH DATABASE` must run OUTSIDE any transaction — SQLite rejects it
9
+ * with "cannot ATTACH database within transaction" otherwise — so this is
10
+ * always called before `knex.transaction(...)` opens, never inside it. The
11
+ * returned function detaches and must be called after the transaction
12
+ * commits or rolls back, in a `finally`.
13
+ * @param knex - Knex query builder connected to the destination archive DB
14
+ * (the connection whose schema this attaches to — not a transaction).
15
+ * @param sourceDbPath - Absolute path to the source's `db.sqlite` file
16
+ * (typically `path.join(accessor.tmpDir, Archive.SQLITE_DB_FILE_NAME)`).
17
+ * @returns An async function that detaches the source. Idempotent-safe to
18
+ * call even if the attach itself failed partway (best-effort).
19
+ * @throws {Error} If `ATTACH DATABASE` fails (e.g. the path does not exist,
20
+ * or a transaction is already open on this connection).
21
+ * @example
22
+ * ```ts
23
+ * const detach = await attachSourceDatabase(knex, sourceDbPath);
24
+ * try {
25
+ * await knex.transaction(async (trx) => { ... trx.raw('SELECT * FROM xfer_src.content_items') ... });
26
+ * } finally {
27
+ * await detach();
28
+ * }
29
+ * ```
30
+ */
31
+ export async function attachSourceDatabase(knex, sourceDbPath) {
32
+ await knex.raw('ATTACH DATABASE ? AS ' + TRANSFER_SOURCE_ALIAS, [sourceDbPath]);
33
+ const attached = await knex.raw('PRAGMA database_list');
34
+ if (!attached.some((row) => row.name === TRANSFER_SOURCE_ALIAS)) {
35
+ throw new Error(`Failed to attach source database at ${sourceDbPath} — PRAGMA database_list does not list "${TRANSFER_SOURCE_ALIAS}" after ATTACH.`);
36
+ }
37
+ return async () => {
38
+ await knex.raw('DETACH DATABASE ' + TRANSFER_SOURCE_ALIAS).catch(() => { });
39
+ };
40
+ }
@@ -0,0 +1,30 @@
1
+ import type { Config } from '../types.js';
2
+ /**
3
+ * Derives the output {@link Config} for a `split`, from the source's own
4
+ * config plus the scope URLs the operator gave on the command line.
5
+ *
6
+ * `roots` becomes exactly the given URLs (their `withoutHash` form,
7
+ * matching how `crawl`'s own roots are recorded); `baseUrl` is the first
8
+ * one. Every other scalar field is carried over verbatim from the
9
+ * source — a split narrows WHICH pages are kept, it does not change HOW
10
+ * they were crawled (`recursive`/`interval`/`userAgent`/etc. all still
11
+ * describe the original session honestly). `excludes`/`excludeKeywords`/
12
+ * `excludeUrls` are likewise carried over unchanged (they described the
13
+ * source's own crawl-time exclusions, still true of the subset that
14
+ * survives). `version` is pinned to {@link REQUIRED_FORMAT_VERSION} and
15
+ * `createdCwd` is always `null`, matching `mergeArchiveConfigs`'s same
16
+ * two fields for the same reasons.
17
+ *
18
+ * Callers must reject a `fromList` source BEFORE calling this — `roots`
19
+ * for such an archive is a URL LIST, not a scope, so "roots = the given
20
+ * scope URLs" has no coherent meaning for it (see `docs/split.md`).
21
+ * @param source - The source archive's `getConfig()` result.
22
+ * @param scopeUrls - The scope URLs the operator gave (`withoutHash` form).
23
+ * @param name - The output archive's `name` (typically its basename).
24
+ * @returns The derived {@link Config} to write via `Archive#setConfig`.
25
+ * @example
26
+ * ```ts
27
+ * const config = buildSplitConfig(await source.getConfig(), ['https://example.com/blog/'], 'blog');
28
+ * ```
29
+ */
30
+ export declare function buildSplitConfig(source: Config, scopeUrls: readonly string[], name: string): Config;