@nitpicker/archive 0.0.0 → 0.25.1

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 (739) 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 +1055 -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 +803 -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 +45 -0
  315. package/lib/filesystem/parse-tar-size-field.d.ts +13 -0
  316. package/lib/filesystem/parse-tar-size-field.js +37 -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 +132 -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/compare-strings.d.ts +12 -0
  576. package/lib/test-utils/compare-strings.js +14 -0
  577. package/lib/test-utils/create-legacy-analysis-tables.d.ts +13 -0
  578. package/lib/test-utils/create-legacy-analysis-tables.js +37 -0
  579. package/lib/test-utils/fk-parent-tables.d.ts +15 -0
  580. package/lib/test-utils/fk-parent-tables.js +19 -0
  581. package/lib/test-utils/seed-content-item.d.ts +35 -0
  582. package/lib/test-utils/seed-content-item.js +42 -0
  583. package/lib/test-utils/setup-legacy-fk-db.d.ts +34 -0
  584. package/lib/test-utils/setup-legacy-fk-db.js +271 -0
  585. package/lib/transfer/attach-source-database.d.ts +31 -0
  586. package/lib/transfer/attach-source-database.js +40 -0
  587. package/lib/transfer/build-split-config.d.ts +30 -0
  588. package/lib/transfer/build-split-config.js +42 -0
  589. package/lib/transfer/clear-replaced-page-rows.d.ts +23 -0
  590. package/lib/transfer/clear-replaced-page-rows.js +61 -0
  591. package/lib/transfer/concat-archives.d.ts +55 -0
  592. package/lib/transfer/concat-archives.js +95 -0
  593. package/lib/transfer/concat-source-transfer-phases.d.ts +10 -0
  594. package/lib/transfer/concat-source-transfer-phases.js +17 -0
  595. package/lib/transfer/content-item-rank-sql.d.ts +21 -0
  596. package/lib/transfer/content-item-rank-sql.js +23 -0
  597. package/lib/transfer/copy-anchor-edges.d.ts +28 -0
  598. package/lib/transfer/copy-anchor-edges.js +42 -0
  599. package/lib/transfer/copy-dictionaries-for-concat.d.ts +39 -0
  600. package/lib/transfer/copy-dictionaries-for-concat.js +81 -0
  601. package/lib/transfer/copy-dictionaries-for-split.d.ts +29 -0
  602. package/lib/transfer/copy-dictionaries-for-split.js +224 -0
  603. package/lib/transfer/copy-header-set-children.d.ts +27 -0
  604. package/lib/transfer/copy-header-set-children.js +51 -0
  605. package/lib/transfer/copy-image-items.d.ts +21 -0
  606. package/lib/transfer/copy-image-items.js +62 -0
  607. package/lib/transfer/copy-inventory-source-lists.d.ts +30 -0
  608. package/lib/transfer/copy-inventory-source-lists.js +61 -0
  609. package/lib/transfer/copy-journal-tables.d.ts +30 -0
  610. package/lib/transfer/copy-journal-tables.js +56 -0
  611. package/lib/transfer/copy-page-console-logs.d.ts +16 -0
  612. package/lib/transfer/copy-page-console-logs.js +27 -0
  613. package/lib/transfer/copy-page-html-blobs.d.ts +31 -0
  614. package/lib/transfer/copy-page-html-blobs.js +43 -0
  615. package/lib/transfer/copy-page-meta.d.ts +27 -0
  616. package/lib/transfer/copy-page-meta.js +68 -0
  617. package/lib/transfer/copy-page-template-clusters.d.ts +31 -0
  618. package/lib/transfer/copy-page-template-clusters.js +56 -0
  619. package/lib/transfer/copy-page-template-labels.d.ts +34 -0
  620. package/lib/transfer/copy-page-template-labels.js +88 -0
  621. package/lib/transfer/copy-resource-items.d.ts +29 -0
  622. package/lib/transfer/copy-resource-items.js +89 -0
  623. package/lib/transfer/copy-resource-ref-edges.d.ts +20 -0
  624. package/lib/transfer/copy-resource-ref-edges.js +33 -0
  625. package/lib/transfer/copy-simple-page-scoped-tables.d.ts +15 -0
  626. package/lib/transfer/copy-simple-page-scoped-tables.js +34 -0
  627. package/lib/transfer/count-external-pages-in-scope.d.ts +26 -0
  628. package/lib/transfer/count-external-pages-in-scope.js +40 -0
  629. package/lib/transfer/create-transfer-temp-tables.d.ts +30 -0
  630. package/lib/transfer/create-transfer-temp-tables.js +59 -0
  631. package/lib/transfer/dictionary-copy-specs.d.ts +32 -0
  632. package/lib/transfer/dictionary-copy-specs.js +28 -0
  633. package/lib/transfer/drop-transfer-temp-tables.d.ts +9 -0
  634. package/lib/transfer/drop-transfer-temp-tables.js +18 -0
  635. package/lib/transfer/flatten-redirect-chains.d.ts +44 -0
  636. package/lib/transfer/flatten-redirect-chains.js +74 -0
  637. package/lib/transfer/insert-content-items.d.ts +35 -0
  638. package/lib/transfer/insert-content-items.js +116 -0
  639. package/lib/transfer/list-transfer-columns.d.ts +35 -0
  640. package/lib/transfer/list-transfer-columns.js +45 -0
  641. package/lib/transfer/mark-in-scope-content-items.d.ts +31 -0
  642. package/lib/transfer/mark-in-scope-content-items.js +54 -0
  643. package/lib/transfer/merge-archive-configs.d.ts +51 -0
  644. package/lib/transfer/merge-archive-configs.js +85 -0
  645. package/lib/transfer/plan-content-items-for-concat.d.ts +33 -0
  646. package/lib/transfer/plan-content-items-for-concat.js +51 -0
  647. package/lib/transfer/plan-content-items-for-split.d.ts +42 -0
  648. package/lib/transfer/plan-content-items-for-split.js +83 -0
  649. package/lib/transfer/plan-resource-items.d.ts +40 -0
  650. package/lib/transfer/plan-resource-items.js +69 -0
  651. package/lib/transfer/quote-transfer-identifier.d.ts +18 -0
  652. package/lib/transfer/quote-transfer-identifier.js +20 -0
  653. package/lib/transfer/reclassify-resource-externality.d.ts +37 -0
  654. package/lib/transfer/reclassify-resource-externality.js +66 -0
  655. package/lib/transfer/remap-redirect-dest-ids.d.ts +34 -0
  656. package/lib/transfer/remap-redirect-dest-ids.js +51 -0
  657. package/lib/transfer/replace-content-items.d.ts +39 -0
  658. package/lib/transfer/replace-content-items.js +83 -0
  659. package/lib/transfer/simple-page-scoped-tables.d.ts +25 -0
  660. package/lib/transfer/simple-page-scoped-tables.js +38 -0
  661. package/lib/transfer/split-archive.d.ts +55 -0
  662. package/lib/transfer/split-archive.js +98 -0
  663. package/lib/transfer/split-source-transfer-phases.d.ts +11 -0
  664. package/lib/transfer/split-source-transfer-phases.js +18 -0
  665. package/lib/transfer/transfer-action.d.ts +34 -0
  666. package/lib/transfer/transfer-action.js +32 -0
  667. package/lib/transfer/transfer-archive-rows.d.ts +65 -0
  668. package/lib/transfer/transfer-archive-rows.js +156 -0
  669. package/lib/transfer/transfer-dictionary-tables.d.ts +12 -0
  670. package/lib/transfer/transfer-dictionary-tables.js +22 -0
  671. package/lib/transfer/transfer-post-phases.d.ts +10 -0
  672. package/lib/transfer/transfer-post-phases.js +13 -0
  673. package/lib/transfer/transfer-source-alias.d.ts +9 -0
  674. package/lib/transfer/transfer-source-alias.js +9 -0
  675. package/lib/transfer/types.d.ts +111 -0
  676. package/lib/transfer/types.js +35 -0
  677. package/lib/types.d.ts +772 -0
  678. package/lib/types.js +1 -0
  679. package/lib/url-alias/compute-tier-a-alias-key.d.ts +44 -0
  680. package/lib/url-alias/compute-tier-a-alias-key.js +47 -0
  681. package/lib/url-alias/compute-tier-b-alias-key.d.ts +23 -0
  682. package/lib/url-alias/compute-tier-b-alias-key.js +26 -0
  683. package/lib/url-alias/group-alias-candidates.d.ts +27 -0
  684. package/lib/url-alias/group-alias-candidates.js +29 -0
  685. package/lib/url-alias/types.d.ts +12 -0
  686. package/lib/url-alias/types.js +1 -0
  687. package/lib/url-pattern/compute-shape-key.d.ts +58 -0
  688. package/lib/url-pattern/compute-shape-key.js +129 -0
  689. package/lib/url-pattern/decompose-url.d.ts +33 -0
  690. package/lib/url-pattern/decompose-url.js +79 -0
  691. package/lib/url-pattern/reconstruct-url.d.ts +15 -0
  692. package/lib/url-pattern/reconstruct-url.js +33 -0
  693. package/lib/url-sort/compute-url-sort-ranks.d.ts +30 -0
  694. package/lib/url-sort/compute-url-sort-ranks.js +33 -0
  695. package/lib/utils/array/each-splitted.d.ts +10 -0
  696. package/lib/utils/array/each-splitted.js +14 -0
  697. package/lib/utils/debug.d.ts +8 -0
  698. package/lib/utils/debug.js +8 -0
  699. package/lib/utils/error/emit-error-with-retry.d.ts +40 -0
  700. package/lib/utils/error/emit-error-with-retry.js +44 -0
  701. package/lib/utils/error/emit-error.d.ts +39 -0
  702. package/lib/utils/error/emit-error.js +41 -0
  703. package/lib/utils/object/parse-response-headers.d.ts +12 -0
  704. package/lib/utils/object/parse-response-headers.js +26 -0
  705. package/lib/utils/object/redact-request-headers.d.ts +15 -0
  706. package/lib/utils/object/redact-request-headers.js +27 -0
  707. package/lib/utils/types/types.d.ts +383 -0
  708. package/lib/utils/types/types.js +1 -0
  709. package/lib/verify-migration/capture-rejection.d.ts +24 -0
  710. package/lib/verify-migration/capture-rejection.js +31 -0
  711. package/lib/verify-migration/check-anchor-edges-count.d.ts +34 -0
  712. package/lib/verify-migration/check-anchor-edges-count.js +72 -0
  713. package/lib/verify-migration/check-anchor-edges-sum.d.ts +13 -0
  714. package/lib/verify-migration/check-anchor-edges-sum.js +27 -0
  715. package/lib/verify-migration/check-content-items-count.d.ts +16 -0
  716. package/lib/verify-migration/check-content-items-count.js +30 -0
  717. package/lib/verify-migration/check-content-type-preservation.d.ts +22 -0
  718. package/lib/verify-migration/check-content-type-preservation.js +40 -0
  719. package/lib/verify-migration/check-foreign-key-integrity.d.ts +31 -0
  720. package/lib/verify-migration/check-foreign-key-integrity.js +47 -0
  721. package/lib/verify-migration/check-image-items-count.d.ts +12 -0
  722. package/lib/verify-migration/check-image-items-count.js +26 -0
  723. package/lib/verify-migration/check-page-meta-count.d.ts +15 -0
  724. package/lib/verify-migration/check-page-meta-count.js +31 -0
  725. package/lib/verify-migration/check-reader-parity.d.ts +23 -0
  726. package/lib/verify-migration/check-reader-parity.js +182 -0
  727. package/lib/verify-migration/check-resource-items-count.d.ts +17 -0
  728. package/lib/verify-migration/check-resource-items-count.js +33 -0
  729. package/lib/verify-migration/check-url-round-trip.d.ts +43 -0
  730. package/lib/verify-migration/check-url-round-trip.js +112 -0
  731. package/lib/verify-migration/types.d.ts +70 -0
  732. package/lib/verify-migration/types.js +63 -0
  733. package/lib/verify-migration/verify-migration.d.ts +41 -0
  734. package/lib/verify-migration/verify-migration.js +120 -0
  735. package/lib/with-bulk-write-pragmas.d.ts +51 -0
  736. package/lib/with-bulk-write-pragmas.js +132 -0
  737. package/lib/write-queue.d.ts +32 -0
  738. package/lib/write-queue.js +55 -0
  739. package/package.json +350 -3
package/lib/types.d.ts ADDED
@@ -0,0 +1,772 @@
1
+ import type { DomPathCandidate } from './populate-entity-tables/types.js';
2
+ import type { PageData } from './utils/types/types.js';
3
+ import type { ParseURLOptions } from '@d-zero/shared/parse-url';
4
+ /**
5
+ * A scraped page payload optionally enriched with the in-browser
6
+ * dom-path capture (`@nitpicker/crawler`'s `crawler/capture-image-dom-paths.ts`): every `<img>`
7
+ * of the rendered document as `{ outerHTML, path }` pairs in document
8
+ * order. The write path matches these against `imageList[].sourceCode`
9
+ * to resolve `image_items.dom_path_text_id`; when absent (capture
10
+ * failed, metadata-only scrape, or a caller that never renders), every
11
+ * image falls back to the synthetic `unknown/<n>` marker.
12
+ */
13
+ export type PageDataWithDomPaths = PageData & {
14
+ /** In-browser dom-path capture for the rendered document's images. */
15
+ imageDomPaths?: readonly DomPathCandidate[];
16
+ /**
17
+ * In-browser Web Component (custom element) capture for the rendered
18
+ * document's main-content region (`@nitpicker/crawler`'s `crawler/capture-custom-elements.ts`).
19
+ * `undefined` means capture was not attempted or failed — a distinct
20
+ * state from "capture succeeded, zero elements found" (empty array).
21
+ */
22
+ mainContentCustomElements?: readonly MainContentCustomElementCandidate[];
23
+ };
24
+ /**
25
+ * Event map for database-related events emitted by the Database and ArchiveAccessor classes.
26
+ * @example
27
+ * archive.on('error', (error) => {
28
+ * console.error('database failure:', error.message);
29
+ * });
30
+ */
31
+ export interface DatabaseEvent {
32
+ /** An error that occurred during a database operation. */
33
+ error: Error;
34
+ }
35
+ /**
36
+ * Configuration stored in the archive database's `info` table.
37
+ * Represents all crawling options that were used for the crawl session.
38
+ * @example
39
+ * const config = await archive.getConfig();
40
+ * console.log(config.roots, config.userAgent, config.parallels);
41
+ */
42
+ export interface Config extends Required<Pick<ParseURLOptions, 'disableQueries'>> {
43
+ /** The starting URL for the crawl. Stored as a denormalised mirror of `roots[0]` so summary consumers can read a single URL without parsing the array. */
44
+ baseUrl: string;
45
+ /** The user-provided root URLs that seeded the crawl. Each root is both a recursive starting point and a scope entry. Always non-empty. */
46
+ roots: string[];
47
+ /** Maximum directory depth for excluded paths. */
48
+ maxExcludedDepth: number;
49
+ /** Keywords used to exclude pages from crawling. */
50
+ excludeKeywords: string[];
51
+ /** URL patterns to exclude from crawling. */
52
+ excludes: string[];
53
+ /** URL prefixes to exclude from crawling. */
54
+ excludeUrls: string[];
55
+ /** Whether to fetch external (off-site) pages. */
56
+ fetchExternal: boolean;
57
+ /** Whether the crawl was initiated from a URL list rather than recursive discovery. */
58
+ fromList: boolean;
59
+ /** Whether to collect image data during crawling. */
60
+ image: boolean;
61
+ /** Interval in milliseconds between requests. */
62
+ interval: number;
63
+ /** The name identifier for this crawl session. */
64
+ name: string;
65
+ /** Number of parallel crawling processes. */
66
+ parallels: number;
67
+ /** Whether to recursively follow links. */
68
+ recursive: boolean;
69
+ /** Maximum number of retry attempts per URL on scrape failure. */
70
+ retry: number;
71
+ /** The version of Nitpicker that created this archive. */
72
+ version: string;
73
+ /** User-Agent string used for HTTP requests. */
74
+ userAgent: string;
75
+ /** Whether robots.txt restrictions were ignored during crawling. */
76
+ ignoreRobots: boolean;
77
+ /**
78
+ * CSS selector overriding beholder's automatic main-content-region
79
+ * detection, or `null`/omitted to use the automatic heuristic.
80
+ */
81
+ mainContentSelector?: string | null;
82
+ /**
83
+ * Names (never values) of the extra request headers the crawl was started
84
+ * with (`--header` / `--authorization` / `--header-file`). Header values
85
+ * are credentials and are deliberately NOT persisted — `.nitpicker` files
86
+ * are shared between users. The names exist only so a later
87
+ * `--resume` / `--append` / `--retry-failed` / `--recrawl` / `--inventory`
88
+ * run can warn that the operator did not re-supply them. Empty/omitted
89
+ * means no extra headers were used.
90
+ */
91
+ requestHeaderNames?: string[];
92
+ /**
93
+ * The `process.cwd()` recorded when this session's stub (tmpDir) was
94
+ * created by `CrawlerOrchestrator.crawling` / `.append` / `.inventory` /
95
+ * `.recrawl` / `.retryFailed` — NOT written by `.resume` itself, which
96
+ * only reads it. `Archive.resume` uses this (falling back to its own
97
+ * `process.cwd()` for a stub that predates this column) to reconstruct
98
+ * the completed archive's output path independent of the directory
99
+ * `crawl --resume` happens to be invoked from.
100
+ *
101
+ * `.nitpicker` files are routinely shared between users, and this local
102
+ * absolute path (which can embed a username / project layout) has no
103
+ * business surviving into a shared archive — `Archive.write` scrubs the
104
+ * column back to `null` immediately before packaging, so it only ever
105
+ * exists in an unpackaged stub.
106
+ *
107
+ * WHY (for future stub-limited fields): if you add another column meant
108
+ * to live only in the unpackaged stub, pair it with a matching scrub in
109
+ * `Archive.write` (`archive.ts`) — nothing enforces this automatically,
110
+ * and a forgotten scrub silently leaks the field into every shared
111
+ * `.nitpicker` from then on.
112
+ */
113
+ createdCwd?: string | null;
114
+ }
115
+ /**
116
+ * Provenance of a page or resource row — which crawler channel originally
117
+ * inserted it. Stored as `content_items.source` / `resource_items.source`
118
+ * in the SQLite schema (NOT NULL DEFAULT `'crawled'`).
119
+ *
120
+ * - `'crawled'` — discovered via the recursive crawl rooted at `info.roots`.
121
+ * Default for rows that predate the `--inventory` feature.
122
+ * - `'inventory-seed'` — supplied directly by a `crawl --inventory` URL
123
+ * list. For pages this is the HTML URL that was rendered; for resources
124
+ * this is a non-HTML URL handed in by the list (HEAD-fetched without
125
+ * rendering).
126
+ * - `'inventory-discovered'` — found by following links from an
127
+ * `inventory-seed` page, OR (for resources) loaded by puppeteer while
128
+ * rendering one of those pages.
129
+ *
130
+ * Used by the viewer as a badge and to indicate why a row was added.
131
+ * Isolation queries (`listIsolatedPages` / `listUnusedResources`) judge
132
+ * orphans by `referrer = 0`, NOT by this value — `source` only labels
133
+ * the row.
134
+ * @example
135
+ * if (page.source !== 'crawled') {
136
+ * // Row was introduced by a `crawl --inventory` pass.
137
+ * }
138
+ */
139
+ export type PageSource = 'crawled' | 'inventory-seed' | 'inventory-discovered';
140
+ /**
141
+ * One row written to the `list_reconcile_runs` audit table on each
142
+ * successful `--inventory <list>` or `--recrawl <list>` invocation.
143
+ *
144
+ * Schema-mirror interface: every column on `list_reconcile_runs` is
145
+ * represented here. Only `ran_at` is required — every other field is
146
+ * nullable so a raw-SQL backfill (a one-off `sqlite3 INSERT` recording a
147
+ * reconcile pass that predates this table) can omit summary
148
+ * stats it cannot reconstruct.
149
+ *
150
+ * The audit log is append-only: there is intentionally no UPDATE path,
151
+ * no UNIQUE constraint on `source_file_sha256`, and no FK to pages /
152
+ * resources — re-applying the same list yields a second row. Duplicate
153
+ * detection is a read-side concern; `source_file_sha256` is recorded as
154
+ * the content-identity key it would use.
155
+ * @example
156
+ * await archive.recordListReconcileRun({
157
+ * ran_at: new Date().toISOString(),
158
+ * list_label: 'prod-2026-06',
159
+ * total_lines: 113_268,
160
+ * new_pages: 1234,
161
+ * new_resources: 56,
162
+ * scope_skipped: 7,
163
+ * exclude_skipped: 3,
164
+ * });
165
+ */
166
+ export interface ListReconcileRunMeta {
167
+ /** ISO 8601 timestamp at which the run completed (e.g. `'2026-06-21T11:30:00+09:00'`). */
168
+ ran_at: string;
169
+ /** Human-readable identifier (e.g. `'prod-2026-06-21'`). `null` when the caller did not supply one. */
170
+ list_label?: string | null;
171
+ /** SHA-256 hex digest of the source file. `null` for programmatic callers that built the URL list in-memory (no source file to hash). */
172
+ source_file_sha256?: string | null;
173
+ /** Number of valid URLs in the input list, after the CLI has warned-and-dropped unparseable-URL lines but before scope filtering. */
174
+ total_lines?: number | null;
175
+ /** Number of new HTML seeds inserted as `content_items` rows by this run. */
176
+ new_pages?: number | null;
177
+ /** Number of new non-HTML URLs inserted as `resource_items` rows by this run. */
178
+ new_resources?: number | null;
179
+ /** Number of input URLs dropped because they fell outside the archived scope. */
180
+ scope_skipped?: number | null;
181
+ /** Number of novel in-scope input URLs recorded as terminal skipped pages (`is_skipped=1`, `skip_reason='excluded'`) instead of being imported, because they matched the effective `excludes` / `excludeUrls` config. Pure audit output like every other count on this row — written once per run, read back only by `listReconcileRuns` display surfaces, never consumed by any runtime decision. `null` on rows written before the column existed (those runs predate ingestion-side exclusion — their excluded URLs were imported as real pages/resources, not counted). */
182
+ exclude_skipped?: number | null;
183
+ /** Number of source-file lines dropped by the CLI for failing URL validation, before this row's `total_lines` was counted. `null` for programmatic callers that built the URL list in-memory (no source file to have invalid lines). */
184
+ invalid_skipped?: number | null;
185
+ /** Free-form text for backfill annotations or operator notes. */
186
+ notes?: string | null;
187
+ }
188
+ /**
189
+ * Result of {@link Database.resetPagesByUrls}: the URLs actually reset back
190
+ * to pending, plus the URLs excluded from reset grouped by why — a caller
191
+ * (`CrawlerOrchestrator.recrawl`) reports each exclusion category to the
192
+ * operator separately rather than lumping them into one opaque count.
193
+ *
194
+ * A URL can appear in at most one of these four arrays: `resetUrls` when it
195
+ * matched the reset candidate criteria, or exactly one exclusion array when
196
+ * it matched an existing page row but failed one of the conservative guards.
197
+ * A URL with no matching row in the archive at all (not yet known) appears in
198
+ * none of them — that case is the caller's "novel URL" handling, not this
199
+ * function's concern.
200
+ */
201
+ export interface ResetPagesByUrlsResult {
202
+ /** URLs whose row was reset to `scraped = 0` and had its derived data cleared. */
203
+ resetUrls: string[];
204
+ /** URLs excluded because the matching row is a redirect source (`redirect_dest_id` is set) — resetting it would discard a real 3xx observation. */
205
+ excludedRedirects: string[];
206
+ /** URLs excluded because the matching row was intentionally skipped (`is_skipped = 1`, e.g. `excludes`/`excludeUrls`) — the exclusion still applies. */
207
+ excludedSkipped: string[];
208
+ /** URLs excluded because the matching row is external (`is_external = 1`) — bringing a scope-external URL back into scope is `--append`'s job, not a URL-list re-fetch. */
209
+ excludedExternal: string[];
210
+ }
211
+ /**
212
+ * A row in `network_outages` — one detected operator-network outage.
213
+ *
214
+ * Append-only except `ended_at`: it is written once, `NULL`, when the
215
+ * outage is first detected, and updated exactly once when a recovery probe
216
+ * succeeds. A row can also be left `ended_at = NULL` forever if the crawl
217
+ * process is killed mid-outage — readers must resolve this via a clamp
218
+ * (see `is-within-outage-window.ts` and the `db-ops/outages/` writer that
219
+ * closes stale-open rows on the next writer session), never by treating
220
+ * `NULL` as an unbounded window.
221
+ */
222
+ export interface NetworkOutageRow {
223
+ id: number;
224
+ /** Epoch ms, backdated to the earliest error still inside the detector's sliding window at trigger time. */
225
+ started_at: number;
226
+ /** Epoch ms the sliding window actually crossed both thresholds. */
227
+ detected_at: number;
228
+ /** Epoch ms the recovery probe first succeeded, or `null` while still open / if the session crashed before recovery. */
229
+ ended_at: number | null;
230
+ /** Hostname the recovery probe targeted, or `null` if none was available (see `choose-probe-host.ts`). */
231
+ probe_host: string | null;
232
+ /** Error count in the detector's window at trigger time. */
233
+ trigger_error_count: number;
234
+ /** Distinct host count in the detector's window at trigger time. */
235
+ trigger_host_count: number;
236
+ }
237
+ /**
238
+ * Fields required to record a newly-detected outage via
239
+ * `Database.insertNetworkOutage`. camelCase (unlike {@link NetworkOutageRow}
240
+ * / {@link ListReconcileRunMeta}) because callers build this directly from
241
+ * `NetworkOutageDetector`'s camelCase `OutageSuspect` plus a probe host —
242
+ * the db-op does the camelCase → snake_case column mapping on write.
243
+ */
244
+ export interface InsertNetworkOutageParams {
245
+ /** Backdated to the earliest error still inside the detector's window at trigger time. */
246
+ startedAt: number;
247
+ /** When the sliding window actually crossed both thresholds. */
248
+ detectedAt: number;
249
+ /** Hostname the recovery probe will target, or `null` if none was available. */
250
+ probeHost: string | null;
251
+ triggerErrorCount: number;
252
+ triggerHostCount: number;
253
+ }
254
+ /**
255
+ * Fields required to record a newly-capped URL shape via
256
+ * `Database.insertDedupeCapEvent`. camelCase, mapped to snake_case columns
257
+ * on write — same convention as {@link InsertNetworkOutageParams}.
258
+ */
259
+ export interface InsertDedupeCapEventParams {
260
+ shapeKey: string;
261
+ sampleUrl: string;
262
+ bodyHash: Buffer;
263
+ effectiveThreshold: number;
264
+ observedCount: number;
265
+ detectedAt: number;
266
+ }
267
+ /**
268
+ * One previously-scraped internal page's raw fields, read back from
269
+ * `content_items` / `page_meta` / `url_refs` / `text_refs`, in the exact
270
+ * shape `buildDedupeCapObservation` needs to reconstruct the
271
+ * `DedupeCapObservation` that page would have produced during a live crawl.
272
+ * Produced by `listDedupeCapObservations` — see that function for the row
273
+ * selection criteria (which pages qualify, and why).
274
+ *
275
+ * Nullable fields mirror the LEFT JOINed `text_refs` / `url_refs` columns
276
+ * they come from (a page with no `<title>`, no meta description, or no
277
+ * `og:title`/`og:url` leaves the corresponding ref column NULL).
278
+ */
279
+ export interface DedupeCapObservationRow {
280
+ /**
281
+ * `url_refs.url`, in `withoutHashAndAuth` form — matches how
282
+ * `computeShapeKey`'s live callers key their gate lookups. No hash
283
+ * fragment survives here even if the original page URL had one (the
284
+ * archive never stores it) — see `buildDedupeCapObservation`'s JSDoc
285
+ * for why this makes its `ogUrlMismatch` reconstruction an
286
+ * approximation for hash-carrying URLs.
287
+ */
288
+ url: string;
289
+ /** `page_meta.title_text_id` → `text_refs.text`. Never NULL in practice (beholder always returns at least `''`), but read as nullable since the join can't guarantee it. */
290
+ title: string | null;
291
+ /** `page_meta.description_text_id` → `text_refs.text`. */
292
+ description: string | null;
293
+ /** `page_meta.og_title_text_id` → `text_refs.text`. */
294
+ ogTitle: string | null;
295
+ /**
296
+ * `page_meta.og_url_id` → `url_refs.url` — already absolutised at write
297
+ * time (`derive-flat-from-meta.ts`), not the raw `og:url` attribute
298
+ * value. See `buildDedupeCapObservation`'s JSDoc for why this makes its
299
+ * `metaSig` component an approximation for relative-`og:url` templates.
300
+ */
301
+ ogUrl: string | null;
302
+ /** `page_meta.body_hash`. Rows with a NULL body hash are excluded by `listDedupeCapObservations` itself, so this is always present by the time a row reaches this type — kept non-nullable here for that reason. */
303
+ bodyHash: Buffer;
304
+ }
305
+ /**
306
+ * Filter type for querying pages from the database.
307
+ *
308
+ * - `'page'` - HTML pages that are crawl targets
309
+ * - `'page-included-no-target'` - All HTML pages, including non-target pages
310
+ * - `'external-page'` - HTML pages on external domains
311
+ * - `'internal-page'` - HTML pages on the crawled domain
312
+ * - `'no-page'` - Non-HTML resources (e.g., images, PDFs)
313
+ * - `'external-no-page'` - External non-HTML resources
314
+ * - `'internal-no-page'` - Internal non-HTML resources
315
+ * @example
316
+ * const internalHtmlPages = await accessor.getPages('internal-page');
317
+ */
318
+ export type PageFilter = 'page' | 'page-included-no-target' | 'external-page' | 'internal-page' | 'no-page' | 'external-no-page' | 'internal-no-page';
319
+ /**
320
+ * Flat page-row shape.
321
+ *
322
+ * Serves two roles: (1) the read shape that
323
+ * `db-ops/pages/read/reconstruct-page-rows.ts` rebuilds by joining the
324
+ * entity / ref tables (`content_items` / `page_meta` / `url_refs` …), and
325
+ * (2) the raw row shape of the pre-0.13 legacy `pages` table, which only
326
+ * exists inside pre-0.13 input archives and is read by the 0.13 migration
327
+ * populate code. Most meta fields are derived from beholder 3.0.0's nested
328
+ * {@link import('./meta/types.js').Meta} via
329
+ * `archive/meta/derive-flat-from-meta.ts` and are stored as plain scalars
330
+ * for SQL-level filter / projection. The catch-all `meta_extras` JSON
331
+ * column preserves nested sub-objects not flattened above.
332
+ * @example
333
+ * const pages = await accessor.getPages('page');
334
+ * for (const page of pages) {
335
+ * console.log(page.url, page.status, page.title);
336
+ * }
337
+ */
338
+ export interface DB_Page {
339
+ /** Auto-incremented primary key. */
340
+ id: number;
341
+ /** The canonical URL of the page. */
342
+ url: string;
343
+ /** Foreign key to the redirect destination page, or null if not redirected. */
344
+ redirectDestId: number | null;
345
+ /** Whether the page has been scraped (1) or is still pending (0). */
346
+ scraped: 0 | 1;
347
+ /** Whether the page is a crawl target (1) or discovered incidentally (0). */
348
+ isTarget: 0 | 1;
349
+ /** Whether the page is on an external domain (1) or internal (0). */
350
+ isExternal: 0 | 1;
351
+ /** HTTP response status code, or null if not yet fetched. */
352
+ status: number | null;
353
+ /** HTTP response status text (e.g., "OK", "Not Found"), or null if not yet fetched. */
354
+ statusText: string | null;
355
+ /** MIME content type of the response (e.g., "text/html"), or null if unknown. */
356
+ contentType: string | null;
357
+ /** Content length in bytes, or null if unknown. */
358
+ contentLength: number | null;
359
+ /** JSON-serialized HTTP response headers. */
360
+ responseHeaders: string;
361
+ /** The `lang` attribute value from the HTML element, or null. */
362
+ lang: string | null;
363
+ /** The `dir` attribute value, or null. */
364
+ dir: string | null;
365
+ /** The `<meta charset>` value, or null. */
366
+ charset: string | null;
367
+ /** Absolutised `<base href>`, or null. */
368
+ baseHref: string | null;
369
+ /** The raw `<meta name="viewport">` content, or null. */
370
+ viewport_raw: string | null;
371
+ /** The primary `<meta name="theme-color">` (no media), or null. */
372
+ themeColor: string | null;
373
+ /** `<meta name="application-name">`, or null. */
374
+ applicationName: string | null;
375
+ /** `<meta name="author">`, or null. */
376
+ author: string | null;
377
+ /** `<meta name="generator">`, or null. */
378
+ generator: string | null;
379
+ /** `<meta name="publisher">`, or null. */
380
+ publisher: string | null;
381
+ /** The page title from the `<title>` element, or null. */
382
+ title: string | null;
383
+ /** The meta description content, or null. */
384
+ description: string | null;
385
+ /** The meta keywords content, or null. */
386
+ keywords: string | null;
387
+ /** The raw `<meta name="robots">` content, or null. */
388
+ robots_raw: string | null;
389
+ /** Whether the noindex directive is set (SQLite INTEGER 0/1). */
390
+ robots_noindex: number | null;
391
+ /** Whether the nofollow directive is set (SQLite INTEGER 0/1). */
392
+ robots_nofollow: number | null;
393
+ /** Whether the noarchive directive is set (SQLite INTEGER 0/1). */
394
+ robots_noarchive: number | null;
395
+ /** Whether the noimageindex directive is set (SQLite INTEGER 0/1). */
396
+ robots_noimageindex: number | null;
397
+ /** `<meta name="googlebot">` content, or null. */
398
+ googlebot: string | null;
399
+ /** Absolutised `<link rel="canonical">` href, or null. */
400
+ canonical: string | null;
401
+ /** Absolutised `<link rel="amphtml">` href, or null. */
402
+ amphtml: string | null;
403
+ /** Absolutised `<link rel="manifest">` href, or null. */
404
+ manifest: string | null;
405
+ /** Absolutised `<link rel="icon">` href, or null. */
406
+ icon_href: string | null;
407
+ /** Absolutised `<link rel="apple-touch-icon">` href, or null. */
408
+ appleTouchIcon_href: string | null;
409
+ /** og:type, or null. */
410
+ og_type: string | null;
411
+ /** og:title, or null. */
412
+ og_title: string | null;
413
+ /** Absolutised og:url, or null. */
414
+ og_url: string | null;
415
+ /** og:site_name, or null. */
416
+ og_site_name: string | null;
417
+ /** og:description, or null. */
418
+ og_description: string | null;
419
+ /** Absolutised og:image (first if multiple), or null. */
420
+ og_image: string | null;
421
+ /** og:image:alt, or null. */
422
+ og_image_alt: string | null;
423
+ /** og:image:width as a string (per spec), or null. */
424
+ og_image_width: string | null;
425
+ /** og:image:height as a string (per spec), or null. */
426
+ og_image_height: string | null;
427
+ /** og:locale, or null. */
428
+ og_locale: string | null;
429
+ /** og:article:published_time, or null. */
430
+ og_article_published_time: string | null;
431
+ /** og:article:modified_time, or null. */
432
+ og_article_modified_time: string | null;
433
+ /** twitter:card, or null. */
434
+ twitter_card: string | null;
435
+ /** twitter:site, or null. */
436
+ twitter_site: string | null;
437
+ /** twitter:creator, or null. */
438
+ twitter_creator: string | null;
439
+ /** twitter:title, or null. */
440
+ twitter_title: string | null;
441
+ /** twitter:description, or null. */
442
+ twitter_description: string | null;
443
+ /** Absolutised twitter:image (or twitter:image:src fallback), or null. */
444
+ twitter_image: string | null;
445
+ /** Facebook app id (`fb:app_id`), or null. */
446
+ fb_app_id: string | null;
447
+ /** Google site verification token, or null. */
448
+ verification_google: string | null;
449
+ /** `format-detection` telephone (SQLite INTEGER 0/1), or null. */
450
+ formatDetection_telephone: number | null;
451
+ /** First time this page row was inserted (UNIX ms), or null on legacy rows. */
452
+ firstCrawledAt: number | null;
453
+ /** Last successful re-scrape time (UNIX ms), or null on legacy rows. */
454
+ lastCrawledAt: number | null;
455
+ /** Number of `page_tags` rows belonging to this page. */
456
+ tag_count: number | null;
457
+ /** `meta.jsonLd.length + meta.speculationRules.length` at scrape time. */
458
+ jsonld_count: number | null;
459
+ /** Sorted unique provider names, comma-separated (empty string when none). */
460
+ tags_providers_csv: string | null;
461
+ /** Detected main-content element's `nodeName` (e.g. `'MAIN'`), or null. */
462
+ main_content_node_name: string | null;
463
+ /** Detected main-content element's `id`, or null. */
464
+ main_content_id: string | null;
465
+ /** Detected main-content element's `role` attribute, or null. */
466
+ main_content_role: string | null;
467
+ /** Diagnostic tag+id+class selector for the detected element, or null. */
468
+ main_content_selector: string | null;
469
+ /** JSON-encoded array of the detected element's CSS classes, or null. */
470
+ main_content_class_list: string | null;
471
+ /** Character count of the main region's text content, or null. */
472
+ main_content_word_count: number | null;
473
+ /** Character count of `document.body`'s text content, or null. */
474
+ main_content_body_word_count: number | null;
475
+ /** Number of headings within the main region, or null. */
476
+ main_content_heading_count: number | null;
477
+ /** Number of images within the main region, or null. */
478
+ main_content_image_count: number | null;
479
+ /** Number of tables within the main region, or null. */
480
+ main_content_table_count: number | null;
481
+ /** Number of button-like elements within the main region, or null. */
482
+ main_content_button_count: number | null;
483
+ /** Number of iframes within the main region, or null. */
484
+ main_content_iframe_count: number | null;
485
+ /** Number of videos within the main region, or null. */
486
+ main_content_video_count: number | null;
487
+ /** Number of audios within the main region, or null. */
488
+ main_content_audio_count: number | null;
489
+ /** Number of canvases within the main region, or null. */
490
+ main_content_canvas_count: number | null;
491
+ /** Number of Web Components (custom elements) within the main region, or null. */
492
+ main_content_custom_element_count: number | null;
493
+ /** `document.body.scrollHeight` at the desktop-compact preset, or null. */
494
+ scroll_height_desktop: number | null;
495
+ /** `document.body.scrollHeight` at the mobile-small preset, or null. */
496
+ scroll_height_mobile: number | null;
497
+ /** `@d-zero/beholder`'s `IMAGE_SCAN_CODE` outcome for the desktop-compact `<img>` scan, or null when not attempted. */
498
+ image_scan_desktop: number | null;
499
+ /** `@d-zero/beholder`'s `IMAGE_SCAN_CODE` outcome for the mobile-small `<img>` scan, or null when not attempted. */
500
+ image_scan_mobile: number | null;
501
+ /** JSON-serialised nested Meta sub-objects not flattened above. */
502
+ meta_extras: string | null;
503
+ /** JSON-serialized network logs captured during scraping, or null if not collected. */
504
+ networkLogs: string | null;
505
+ /** Whether the page was skipped during crawling (1) or processed normally (0). */
506
+ isSkipped: 0 | 1;
507
+ /** The reason the page was skipped, or null if it was not skipped. */
508
+ skipReason: string | null;
509
+ /** The natural URL sort order index, or null if not yet assigned. */
510
+ order: number | null;
511
+ /** Provenance of the row — see {@link PageSource}. */
512
+ source: PageSource;
513
+ }
514
+ /**
515
+ * Raw database row representing a redirect relationship.
516
+ * Maps a source page to its redirect destination.
517
+ * @example
518
+ * const redirect: DB_Redirect = {
519
+ * pageId: 9, // destination page id
520
+ * from: 'http://example.com/old',
521
+ * fromId: 3,
522
+ * };
523
+ */
524
+ export interface DB_Redirect {
525
+ /** The ID of the destination page after redirect. */
526
+ pageId: number;
527
+ /** The URL that was redirected from. */
528
+ from: string;
529
+ /** The page ID of the source URL that was redirected. */
530
+ fromId: number;
531
+ }
532
+ /**
533
+ * Flat anchor-row shape reconstructed by joining `anchor_edges` with the
534
+ * destination's `content_items` row and the ref tables. Also mirrors the
535
+ * pre-0.13 legacy `anchors` join shape read by the migration populate code.
536
+ * @example
537
+ * const anchors = await accessor.getAnchorsOnPage(pageId);
538
+ * const brokenLinks = anchors.filter((a) => a.status === 404);
539
+ */
540
+ export interface DB_Anchor {
541
+ /** The ID of the page that contains this anchor. */
542
+ pageId: number;
543
+ /** The resolved destination URL of the anchor. */
544
+ url: string;
545
+ /** The original href attribute value of the anchor element. */
546
+ href: string;
547
+ /** Whether the anchor points to an external domain (1) or internal (0). */
548
+ isExternal: 0 | 1;
549
+ /** The title attribute of the anchor element, or null if not present. */
550
+ title: string | null;
551
+ /** The HTTP status code of the linked page, or null if not yet fetched. */
552
+ status: number | null;
553
+ /** The HTTP status text of the linked page, or null if not yet fetched. */
554
+ statusText: string | null;
555
+ /** The content type of the linked page, or null if not yet fetched. */
556
+ contentType: string | null;
557
+ /** The URL fragment (hash) portion of the link, or null if not present. */
558
+ hash: string | null;
559
+ /** The text content of the anchor element, or null if empty. */
560
+ textContent: string | null;
561
+ }
562
+ /**
563
+ * Raw database row representing a referrer relationship.
564
+ * Indicates which page links to which other page, potentially through redirects.
565
+ * @example
566
+ * const referrers = await accessor.getReferrersOfPage(pageId);
567
+ * // `through` differs from the destination URL when the link passed
568
+ * // through a redirect source.
569
+ */
570
+ export interface DB_Referrer {
571
+ /** The ID of the page being referred to. */
572
+ pageId: number;
573
+ /** The URL of the referring page. */
574
+ url: string;
575
+ /** The URL through which the referral passes (may differ from url due to redirects). */
576
+ through: string;
577
+ /** The page ID of the through URL. */
578
+ throughId: number;
579
+ /** The URL fragment (hash) of the referring link, or null if not present. */
580
+ hash: string | null;
581
+ /** The text content of the referring anchor element, or null if empty. */
582
+ textContent: string | null;
583
+ }
584
+ /**
585
+ * Raw database row of the pre-0.13 legacy `images` table. The table only
586
+ * exists inside pre-0.13 input archives; current archives store images in
587
+ * `image_items`. This type is read exclusively by the 0.13 migration
588
+ * populate code (`populate-image-items.ts`), which converts these rows
589
+ * into `image_items` before the legacy table is dropped.
590
+ * @example
591
+ * // Inside migration populate code reading a pre-0.13 input archive:
592
+ * const images: DB_Image[] = await trx('images').where('pageId', pageId);
593
+ * const missingAlt = images.filter((img) => img.alt === null);
594
+ */
595
+ export interface DB_Image {
596
+ /** Auto-incremented primary key. */
597
+ id: number;
598
+ /** Foreign key to the page that contains this image. */
599
+ pageId: number;
600
+ /** The `src` attribute value of the image element. */
601
+ src: string | null;
602
+ /** The actual loaded source URL of the image (after srcset/picture resolution). */
603
+ currentSrc: string | null;
604
+ /** The `alt` attribute value, or null if not present. */
605
+ alt: string | null;
606
+ /** The rendered width of the image in CSS pixels. */
607
+ width: number;
608
+ /** The rendered height of the image in CSS pixels. */
609
+ height: number;
610
+ /** The intrinsic width of the image in pixels. */
611
+ naturalWidth: number;
612
+ /** The intrinsic height of the image in pixels. */
613
+ naturalHeight: number;
614
+ /** Whether the image uses lazy loading. */
615
+ isLazy: number | null;
616
+ /** The viewport width at the time of capture. */
617
+ viewportWidth: number;
618
+ /** The raw HTML source code of the image element. */
619
+ sourceCode: string | null;
620
+ }
621
+ /**
622
+ * Represents a page that links to another page (an incoming link).
623
+ * @example
624
+ * const referrer: Referrer = {
625
+ * url: 'https://example.com/from',
626
+ * through: 'https://example.com/old',
627
+ * throughId: 3,
628
+ * hash: null,
629
+ * textContent: 'Link text',
630
+ * };
631
+ */
632
+ export interface Referrer {
633
+ /** The URL of the referring page. */
634
+ url: string;
635
+ /** The URL through which the referral passes (may differ due to redirects). */
636
+ through: string;
637
+ /** The page ID corresponding to the through URL. */
638
+ throughId: number;
639
+ /** The URL fragment (hash) of the referring link, or null if not present. */
640
+ hash: string | null;
641
+ /** The text content of the referring anchor element. */
642
+ textContent: string;
643
+ }
644
+ /**
645
+ * Represents an outgoing link (anchor element) found on a page.
646
+ * @example
647
+ * const anchor: Anchor = {
648
+ * url: 'https://example.com/about',
649
+ * href: '/about',
650
+ * isExternal: false,
651
+ * title: null,
652
+ * status: 200,
653
+ * statusText: 'OK',
654
+ * contentType: 'text/html',
655
+ * hash: null,
656
+ * textContent: 'About us',
657
+ * };
658
+ */
659
+ export interface Anchor {
660
+ /** The resolved destination URL of the anchor. */
661
+ url: string;
662
+ /** The original href attribute value of the anchor element. */
663
+ href: string;
664
+ /** Whether the anchor points to an external domain. */
665
+ isExternal: boolean;
666
+ /** The title attribute of the anchor element, or null if not present. */
667
+ title: string | null;
668
+ /** The HTTP status code of the linked page, or null if not yet fetched. */
669
+ status: number | null;
670
+ /** The HTTP status text of the linked page, or null if not yet fetched. */
671
+ statusText: string | null;
672
+ /** The content type of the linked page, or null if not yet fetched. */
673
+ contentType: string | null;
674
+ /** The URL fragment (hash) portion of the link, or null if not present. */
675
+ hash: string | null;
676
+ /** The text content of the anchor element, or null if empty. */
677
+ textContent: string | null;
678
+ }
679
+ /**
680
+ * Represents a page that redirects to this page.
681
+ * @example
682
+ * const redirect: Redirect = { url: 'http://example.com/old', pageId: 3 };
683
+ */
684
+ export interface Redirect {
685
+ /** The URL of the redirect source page. */
686
+ url: string;
687
+ /** The database ID of the redirect source page. */
688
+ pageId: number;
689
+ }
690
+ /**
691
+ * Raw database row representing a sub-resource (CSS, JS, image, etc.) in the `resources` table.
692
+ * @example
693
+ * const resources = await accessor.getResources();
694
+ * const notFound = resources.filter((r) => r.status === 404);
695
+ */
696
+ export interface DB_Resource {
697
+ /** Auto-incremented primary key. */
698
+ id: number;
699
+ /**
700
+ * The URL of the resource, or `null` when its identity URL is a large
701
+ * `data:` URI routed to `blob_refs` instead of `url_refs` (mirrors
702
+ * `image_items`' src/blob convention — see `build-resource-query.ts`).
703
+ */
704
+ url: string | null;
705
+ /** Whether the resource is hosted on an external domain (1) or internal (0). */
706
+ isExternal: 0 | 1;
707
+ /** HTTP response status code, or null if not yet fetched. */
708
+ status: number | null;
709
+ /** HTTP response status text, or null if not yet fetched. */
710
+ statusText: string | null;
711
+ /** MIME content type of the resource, or null if unknown. */
712
+ contentType: string | null;
713
+ /** Content length in bytes, or null if unknown. */
714
+ contentLength: number | null;
715
+ /** Compression encoding (e.g., "gzip", "br"), or 0 if not compressed. */
716
+ compress: string | 0;
717
+ /** CDN provider identifier, or 0 if not served from a CDN. */
718
+ cdn: string | 0;
719
+ /** JSON-serialized HTTP response headers, or null if not available. */
720
+ responseHeaders: string | null;
721
+ /** Provenance of the row — see {@link PageSource}. */
722
+ source: PageSource;
723
+ }
724
+ /**
725
+ * Connection options for the archive's libsql-backed database.
726
+ * @example
727
+ * const db = await Database.connect({
728
+ * filename: '/path/to/._nitpicker-site/db.sqlite',
729
+ * readOnly: true,
730
+ * });
731
+ */
732
+ export interface DatabaseOption {
733
+ /** The absolute file path to the SQLite database file. */
734
+ filename: string;
735
+ /**
736
+ * When `true`, open the database for read-only inspection:
737
+ *
738
+ * - Skip schema migrations (no `ALTER TABLE` / `UPDATE` on the user's file).
739
+ * - Refuse to mkdir/create the parent dir or the db file — fail loudly if
740
+ * either is missing instead of resurrecting them.
741
+ *
742
+ * Used by the viewer / MCP server when attaching to an in-progress crawl's
743
+ * tmpDir, where any write would race the live crawler.
744
+ */
745
+ readOnly?: boolean;
746
+ /**
747
+ * Called instead of `console.error` for self-healing schema migration
748
+ * notices (issue #294) — see
749
+ * {@link import('./db-ops/lifecycle/init.js').init}'s `onLog` param for
750
+ * why a bare `console.error` at this point is unsafe. Ignored when
751
+ * `readOnly` is `true` (migrations never run there).
752
+ */
753
+ onLog?: (message: string) => void;
754
+ }
755
+ /**
756
+ * One Web Component (custom element) found inside a page's main-content
757
+ * region by `@nitpicker/crawler`'s `crawler/collect-custom-elements.ts`.
758
+ * Unlike beholder's eight `MainContentsData` categories (headings/images/
759
+ * tables/buttons/iframes/videos/audios/canvases), this is captured
760
+ * independently by nitpicker itself — see the crawler's
761
+ * `crawler/capture-custom-elements.ts` for why. Declared here because the
762
+ * archive layer persists it (`page_main_content_custom_elements`) and the
763
+ * archive must not depend on the crawler.
764
+ */
765
+ export interface MainContentCustomElementCandidate {
766
+ /** The element's `nodeName` (always upper-cased in an HTML document, e.g. `MY-WIDGET`). */
767
+ nodeName: string;
768
+ /** The element's `id` attribute, or `null` when absent. */
769
+ elementId: string | null;
770
+ /** The element's class list, in DOM order. */
771
+ classList: string[];
772
+ }