@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
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Adds the `info.requestHeaderNames` column to archives created before it
3
+ * existed. `CREATE TABLE IF NOT EXISTS` (used for `info` itself) cannot
4
+ * retrofit a new column onto an already-existing table, so this lightweight,
5
+ * `hasColumn`-guarded `ALTER TABLE` runs on every `initSchema` call —
6
+ * idempotent, and self-healing for archives whose provisioning crashed
7
+ * partway through.
8
+ * @param instance - The Knex query builder instance connected to the database.
9
+ * @param onLog - Called instead of `console.error` when this migration
10
+ * actually applies (issue #294: a bare `console.error` here can fire
11
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
12
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
13
+ * `console.error` when omitted (direct/test callers).
14
+ */
15
+ export async function migrateInfoRequestHeaderNames(instance, onLog) {
16
+ const hasInfo = await instance.schema.hasTable('info');
17
+ if (!hasInfo) {
18
+ return;
19
+ }
20
+ const hasColumn = await instance.schema.hasColumn('info', 'requestHeaderNames');
21
+ if (hasColumn) {
22
+ return;
23
+ }
24
+ await instance.schema.table('info', (t) => {
25
+ t.json('requestHeaderNames');
26
+ });
27
+ const message = '[migrate] info.requestHeaderNames column added';
28
+ if (onLog) {
29
+ onLog(message);
30
+ }
31
+ else {
32
+ // oxlint-disable-next-line no-console
33
+ console.error(message);
34
+ }
35
+ }
@@ -0,0 +1,20 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Bring an archive's `info` table to the current shape: add `roots` (seeded
4
+ * from `baseUrl`) and drop the obsolete `scope` column.
5
+ *
6
+ * Idempotent: calling this multiple times on an up-to-date schema is a no-op.
7
+ * Archives where `baseUrl` is NULL receive an empty `roots` array rather than
8
+ * throwing.
9
+ *
10
+ * When the migration actually runs (i.e. either column transition was
11
+ * performed), a single notice is written to stderr so the user knows the
12
+ * file was upgraded.
13
+ * @param instance - The Knex query builder instance connected to the database.
14
+ * @param onLog - Called instead of `console.error` when this migration
15
+ * actually applies (issue #294: a bare `console.error` here can fire
16
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
17
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
18
+ * `console.error` when omitted (direct/test callers).
19
+ */
20
+ export declare function migrateInfoRoots(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Bring an archive's `info` table to the current shape: add `roots` (seeded
3
+ * from `baseUrl`) and drop the obsolete `scope` column.
4
+ *
5
+ * Idempotent: calling this multiple times on an up-to-date schema is a no-op.
6
+ * Archives where `baseUrl` is NULL receive an empty `roots` array rather than
7
+ * throwing.
8
+ *
9
+ * When the migration actually runs (i.e. either column transition was
10
+ * performed), a single notice is written to stderr so the user knows the
11
+ * file was upgraded.
12
+ * @param instance - The Knex query builder instance connected to the database.
13
+ * @param onLog - Called instead of `console.error` when this migration
14
+ * actually applies (issue #294: a bare `console.error` here can fire
15
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
16
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
17
+ * `console.error` when omitted (direct/test callers).
18
+ */
19
+ export async function migrateInfoRoots(instance, onLog) {
20
+ const hasInfo = await instance.schema.hasTable('info');
21
+ if (!hasInfo) {
22
+ return;
23
+ }
24
+ const hasRoots = await instance.schema.hasColumn('info', 'roots');
25
+ const hasScope = await instance.schema.hasColumn('info', 'scope');
26
+ if (hasRoots && !hasScope) {
27
+ return;
28
+ }
29
+ const changes = [];
30
+ if (!hasRoots) {
31
+ await instance.schema.table('info', (t) => {
32
+ t.json('roots');
33
+ });
34
+ await instance.raw(`UPDATE info SET roots = json_array(baseUrl) WHERE roots IS NULL AND baseUrl IS NOT NULL`);
35
+ await instance.raw(`UPDATE info SET roots = '[]' WHERE roots IS NULL`);
36
+ changes.push('roots seeded');
37
+ }
38
+ if (hasScope) {
39
+ await instance.schema.table('info', (t) => {
40
+ t.dropColumn('scope');
41
+ });
42
+ changes.push('scope dropped');
43
+ }
44
+ const message = `[migrate] info table upgraded (${changes.join(', ')})`;
45
+ if (onLog) {
46
+ onLog(message);
47
+ }
48
+ else {
49
+ // oxlint-disable-next-line no-console
50
+ console.error(message);
51
+ }
52
+ }
@@ -0,0 +1,34 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Renames the legacy `inventory_runs` table to `list_reconcile_runs` for
4
+ * archives created before the rename (issue #354: the old name implied
5
+ * `--inventory`-only despite `--recrawl` writing to the same table via the
6
+ * same {@link import('./db-ops/list-reconcile/record-list-reconcile-run.js').recordListReconcileRun}
7
+ * path).
8
+ *
9
+ * Must run BEFORE {@link import('./init-schema.js').initSchema} in the boot
10
+ * sequence, not alongside the other column-adding `migrate*` functions
11
+ * that run after it. `initSchema` unconditionally re-runs
12
+ * `createAdjunctTables`, which creates `list_reconcile_runs` fresh
13
+ * (`CREATE TABLE IF NOT EXISTS`) if it doesn't see the new name yet — so if
14
+ * this rename ran after `initSchema`, it would find `list_reconcile_runs`
15
+ * already present (empty) and skip, silently orphaning the old table's
16
+ * rows. Running first guarantees `initSchema` sees the already-renamed
17
+ * table and its `IF NOT EXISTS` guard is a no-op.
18
+ *
19
+ * A straight `renameTable` (not the convert-then-drop pattern used for
20
+ * `page_tags` → `technology_signals`/`page_technologies`) because this is a
21
+ * pure name change with no data-shape change — the row shape is identical
22
+ * before and after.
23
+ *
24
+ * Idempotent: a no-op once `inventory_runs` is gone (either because this
25
+ * function already ran, or the archive was created after the rename
26
+ * shipped and never had the old name).
27
+ * @param instance - The Knex query builder instance connected to the database.
28
+ * @param onLog - Called instead of `console.error` when this migration
29
+ * actually applies (issue #294: a bare `console.error` here can fire
30
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
31
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
32
+ * `console.error` when omitted (direct/test callers).
33
+ */
34
+ export declare function migrateInventoryRunsToListReconcileRuns(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Renames the legacy `inventory_runs` table to `list_reconcile_runs` for
3
+ * archives created before the rename (issue #354: the old name implied
4
+ * `--inventory`-only despite `--recrawl` writing to the same table via the
5
+ * same {@link import('./db-ops/list-reconcile/record-list-reconcile-run.js').recordListReconcileRun}
6
+ * path).
7
+ *
8
+ * Must run BEFORE {@link import('./init-schema.js').initSchema} in the boot
9
+ * sequence, not alongside the other column-adding `migrate*` functions
10
+ * that run after it. `initSchema` unconditionally re-runs
11
+ * `createAdjunctTables`, which creates `list_reconcile_runs` fresh
12
+ * (`CREATE TABLE IF NOT EXISTS`) if it doesn't see the new name yet — so if
13
+ * this rename ran after `initSchema`, it would find `list_reconcile_runs`
14
+ * already present (empty) and skip, silently orphaning the old table's
15
+ * rows. Running first guarantees `initSchema` sees the already-renamed
16
+ * table and its `IF NOT EXISTS` guard is a no-op.
17
+ *
18
+ * A straight `renameTable` (not the convert-then-drop pattern used for
19
+ * `page_tags` → `technology_signals`/`page_technologies`) because this is a
20
+ * pure name change with no data-shape change — the row shape is identical
21
+ * before and after.
22
+ *
23
+ * Idempotent: a no-op once `inventory_runs` is gone (either because this
24
+ * function already ran, or the archive was created after the rename
25
+ * shipped and never had the old name).
26
+ * @param instance - The Knex query builder instance connected to the database.
27
+ * @param onLog - Called instead of `console.error` when this migration
28
+ * actually applies (issue #294: a bare `console.error` here can fire
29
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
30
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
31
+ * `console.error` when omitted (direct/test callers).
32
+ */
33
+ export async function migrateInventoryRunsToListReconcileRuns(instance, onLog) {
34
+ const hasOldTable = await instance.schema.hasTable('inventory_runs');
35
+ if (!hasOldTable) {
36
+ return;
37
+ }
38
+ const hasNewTable = await instance.schema.hasTable('list_reconcile_runs');
39
+ if (hasNewTable) {
40
+ return;
41
+ }
42
+ await instance.schema.renameTable('inventory_runs', 'list_reconcile_runs');
43
+ const message = '[migrate] inventory_runs renamed to list_reconcile_runs';
44
+ if (onLog) {
45
+ onLog(message);
46
+ }
47
+ else {
48
+ // oxlint-disable-next-line no-console
49
+ console.error(message);
50
+ }
51
+ }
@@ -0,0 +1,25 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Adds the `list_reconcile_runs.exclude_skipped` column to archives created
4
+ * before it existed. `CREATE TABLE IF NOT EXISTS` (used for
5
+ * `list_reconcile_runs` itself) cannot retrofit a new column onto an
6
+ * already-existing table, so this lightweight, `hasColumn`-guarded
7
+ * `ALTER TABLE` runs on every `initSchema` call — idempotent, and
8
+ * self-healing for archives whose provisioning crashed partway through.
9
+ *
10
+ * Pre-migration rows stay `NULL`: those runs predate ingestion-side
11
+ * exclusion (issue #260), so their excluded URLs were imported as real
12
+ * pages/resources rather than recorded as skipped — `NULL` means "not
13
+ * measured", not `0`.
14
+ *
15
+ * The column is pure audit output: written once per run and read back
16
+ * only by `listReconcileRuns` display surfaces, never consumed by any
17
+ * runtime decision — matching `scope_skipped` / `invalid_skipped`.
18
+ * @param instance - The Knex query builder instance connected to the database.
19
+ * @param onLog - Called instead of `console.error` when this migration
20
+ * actually applies (issue #294: a bare `console.error` here can fire
21
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
22
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
23
+ * `console.error` when omitted (direct/test callers).
24
+ */
25
+ export declare function migrateListReconcileRunsExcludeSkipped(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Adds the `list_reconcile_runs.exclude_skipped` column to archives created
3
+ * before it existed. `CREATE TABLE IF NOT EXISTS` (used for
4
+ * `list_reconcile_runs` itself) cannot retrofit a new column onto an
5
+ * already-existing table, so this lightweight, `hasColumn`-guarded
6
+ * `ALTER TABLE` runs on every `initSchema` call — idempotent, and
7
+ * self-healing for archives whose provisioning crashed partway through.
8
+ *
9
+ * Pre-migration rows stay `NULL`: those runs predate ingestion-side
10
+ * exclusion (issue #260), so their excluded URLs were imported as real
11
+ * pages/resources rather than recorded as skipped — `NULL` means "not
12
+ * measured", not `0`.
13
+ *
14
+ * The column is pure audit output: written once per run and read back
15
+ * only by `listReconcileRuns` display surfaces, never consumed by any
16
+ * runtime decision — matching `scope_skipped` / `invalid_skipped`.
17
+ * @param instance - The Knex query builder instance connected to the database.
18
+ * @param onLog - Called instead of `console.error` when this migration
19
+ * actually applies (issue #294: a bare `console.error` here can fire
20
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
21
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
22
+ * `console.error` when omitted (direct/test callers).
23
+ */
24
+ export async function migrateListReconcileRunsExcludeSkipped(instance, onLog) {
25
+ const hasTable = await instance.schema.hasTable('list_reconcile_runs');
26
+ if (!hasTable) {
27
+ return;
28
+ }
29
+ const hasColumn = await instance.schema.hasColumn('list_reconcile_runs', 'exclude_skipped');
30
+ if (hasColumn) {
31
+ return;
32
+ }
33
+ await instance.schema.table('list_reconcile_runs', (t) => {
34
+ t.integer('exclude_skipped');
35
+ });
36
+ const message = '[migrate] list_reconcile_runs.exclude_skipped column added';
37
+ if (onLog) {
38
+ onLog(message);
39
+ }
40
+ else {
41
+ // oxlint-disable-next-line no-console
42
+ console.error(message);
43
+ }
44
+ }
@@ -0,0 +1,16 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Adds the `list_reconcile_runs.invalid_skipped` column to archives created
4
+ * before it existed. `CREATE TABLE IF NOT EXISTS` (used for
5
+ * `list_reconcile_runs` itself) cannot retrofit a new column onto an
6
+ * already-existing table, so this lightweight, `hasColumn`-guarded
7
+ * `ALTER TABLE` runs on every `initSchema` call — idempotent, and
8
+ * self-healing for archives whose provisioning crashed partway through.
9
+ * @param instance - The Knex query builder instance connected to the database.
10
+ * @param onLog - Called instead of `console.error` when this migration
11
+ * actually applies (issue #294: a bare `console.error` here can fire
12
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
13
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
14
+ * `console.error` when omitted (direct/test callers).
15
+ */
16
+ export declare function migrateListReconcileRunsInvalidSkipped(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Adds the `list_reconcile_runs.invalid_skipped` column to archives created
3
+ * before it existed. `CREATE TABLE IF NOT EXISTS` (used for
4
+ * `list_reconcile_runs` itself) cannot retrofit a new column onto an
5
+ * already-existing table, so this lightweight, `hasColumn`-guarded
6
+ * `ALTER TABLE` runs on every `initSchema` call — idempotent, and
7
+ * self-healing for archives whose provisioning crashed partway through.
8
+ * @param instance - The Knex query builder instance connected to the database.
9
+ * @param onLog - Called instead of `console.error` when this migration
10
+ * actually applies (issue #294: a bare `console.error` here can fire
11
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
12
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
13
+ * `console.error` when omitted (direct/test callers).
14
+ */
15
+ export async function migrateListReconcileRunsInvalidSkipped(instance, onLog) {
16
+ const hasTable = await instance.schema.hasTable('list_reconcile_runs');
17
+ if (!hasTable) {
18
+ return;
19
+ }
20
+ const hasColumn = await instance.schema.hasColumn('list_reconcile_runs', 'invalid_skipped');
21
+ if (hasColumn) {
22
+ return;
23
+ }
24
+ await instance.schema.table('list_reconcile_runs', (t) => {
25
+ t.integer('invalid_skipped');
26
+ });
27
+ const message = '[migrate] list_reconcile_runs.invalid_skipped column added';
28
+ if (onLog) {
29
+ onLog(message);
30
+ }
31
+ else {
32
+ // oxlint-disable-next-line no-console
33
+ console.error(message);
34
+ }
35
+ }
@@ -0,0 +1,26 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Add the beholder `MainContentsData` / `ScrollHeightData` denormalised
4
+ * aggregate columns to `page_meta` on archives created before this feature.
5
+ *
6
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
7
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
8
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
9
+ * against an *existing* table — adding a column to the DDL string never
10
+ * reaches an archive whose `page_meta` predates this change. This mirrors
11
+ * {@link import('./migrate-info-roots.js').migrateInfoRoots}'s `info.roots`
12
+ * catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column set that
13
+ * `CREATE TABLE IF NOT EXISTS` cannot retrofit.
14
+ *
15
+ * Idempotent: a no-op once the columns exist. Guards on `page_meta`'s
16
+ * existence defensively, though by the time this runs (after `initSchema`,
17
+ * itself after `assertCompatibleVersion` rejects pre-0.13 archives) the
18
+ * table is always present.
19
+ * @param instance - The Knex query builder instance connected to the database.
20
+ * @param onLog - Called instead of `console.error` when this migration
21
+ * actually applies (issue #294: a bare `console.error` here can fire
22
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
23
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
24
+ * `console.error` when omitted (direct/test callers).
25
+ */
26
+ export declare function migrateMainContentsColumns(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Add the beholder `MainContentsData` / `ScrollHeightData` denormalised
3
+ * aggregate columns to `page_meta` on archives created before this feature.
4
+ *
5
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
6
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
7
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
8
+ * against an *existing* table — adding a column to the DDL string never
9
+ * reaches an archive whose `page_meta` predates this change. This mirrors
10
+ * {@link import('./migrate-info-roots.js').migrateInfoRoots}'s `info.roots`
11
+ * catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column set that
12
+ * `CREATE TABLE IF NOT EXISTS` cannot retrofit.
13
+ *
14
+ * Idempotent: a no-op once the columns exist. Guards on `page_meta`'s
15
+ * existence defensively, though by the time this runs (after `initSchema`,
16
+ * itself after `assertCompatibleVersion` rejects pre-0.13 archives) the
17
+ * table is always present.
18
+ * @param instance - The Knex query builder instance connected to the database.
19
+ * @param onLog - Called instead of `console.error` when this migration
20
+ * actually applies (issue #294: a bare `console.error` here can fire
21
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
22
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
23
+ * `console.error` when omitted (direct/test callers).
24
+ */
25
+ export async function migrateMainContentsColumns(instance, onLog) {
26
+ const hasPageMeta = await instance.schema.hasTable('page_meta');
27
+ if (!hasPageMeta) {
28
+ return;
29
+ }
30
+ const hasColumn = await instance.schema.hasColumn('page_meta', 'main_content_word_count');
31
+ if (hasColumn) {
32
+ return;
33
+ }
34
+ await instance.schema.table('page_meta', (t) => {
35
+ t.string('main_content_node_name');
36
+ t.string('main_content_id');
37
+ t.string('main_content_role');
38
+ t.string('main_content_selector');
39
+ t.text('main_content_class_list');
40
+ t.integer('main_content_word_count');
41
+ t.integer('main_content_body_word_count');
42
+ t.integer('main_content_heading_count');
43
+ t.integer('main_content_image_count');
44
+ t.integer('main_content_table_count');
45
+ t.integer('main_content_button_count');
46
+ t.integer('main_content_iframe_count');
47
+ t.integer('main_content_video_count');
48
+ t.integer('main_content_audio_count');
49
+ t.integer('main_content_canvas_count');
50
+ t.integer('scroll_height_desktop');
51
+ t.integer('scroll_height_mobile');
52
+ });
53
+ const message = '[migrate] page_meta.main_content_* / scroll_height_* columns added';
54
+ if (onLog) {
55
+ onLog(message);
56
+ }
57
+ else {
58
+ // oxlint-disable-next-line no-console
59
+ console.error(message);
60
+ }
61
+ }
@@ -0,0 +1,44 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Adds the `page_meta.body_hash` column to archives created before this
4
+ * feature, then ensures its index exists.
5
+ *
6
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
7
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
8
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
9
+ * against an *existing* table — adding a column to the DDL string never
10
+ * reaches an archive whose `page_meta` predates this change. This mirrors
11
+ * {@link import('./migrate-main-contents-columns.js').migrateMainContentsColumns}'s
12
+ * catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
13
+ * `CREATE TABLE IF NOT EXISTS` cannot retrofit.
14
+ *
15
+ * The index is created here — unconditionally, after the column-add guard,
16
+ * not inside `createEntityTables`'s DDL — for both a fresh archive (where
17
+ * `body_hash` already exists from the DDL, so only the index still needs
18
+ * creating) and a legacy archive (where the column is added just above,
19
+ * then the index follows in the same call). `createEntityTables` runs
20
+ * unconditionally on every archive open, including legacy archives that
21
+ * still lack `body_hash` at that point; an unconditional
22
+ * `CREATE INDEX ... body_hash` there would fail with `no such column` before
23
+ * this migration ever runs. This function is the one place guaranteed to
24
+ * run only after the column is confirmed present, for both archive kinds.
25
+ *
26
+ * Only adds the column and its index — it does not backfill values for
27
+ * existing rows (they stay `NULL`). That backfill runs separately, from
28
+ * `backfillBodyHashFromHtmlBlobs` during a viewer-read-model build, since it
29
+ * requires decompressing every page's stored HTML and is too heavy to run on
30
+ * every archive open.
31
+ *
32
+ * Idempotent: adding the column is a no-op once it exists (the index
33
+ * creation always runs, but `IF NOT EXISTS` makes repeat runs a no-op too).
34
+ * Guards on `page_meta`'s existence defensively, though by the time this
35
+ * runs (after `initSchema`, itself after `assertCompatibleVersion` rejects
36
+ * pre-0.13 archives) the table is always present.
37
+ * @param instance - The Knex query builder instance connected to the database.
38
+ * @param onLog - Called instead of `console.error` when this migration
39
+ * actually applies (issue #294: a bare `console.error` here can fire
40
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
41
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
42
+ * `console.error` when omitted (direct/test callers).
43
+ */
44
+ export declare function migratePageMetaBodyHash(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Adds the `page_meta.body_hash` column to archives created before this
3
+ * feature, then ensures its index exists.
4
+ *
5
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
6
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
7
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
8
+ * against an *existing* table — adding a column to the DDL string never
9
+ * reaches an archive whose `page_meta` predates this change. This mirrors
10
+ * {@link import('./migrate-main-contents-columns.js').migrateMainContentsColumns}'s
11
+ * catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
12
+ * `CREATE TABLE IF NOT EXISTS` cannot retrofit.
13
+ *
14
+ * The index is created here — unconditionally, after the column-add guard,
15
+ * not inside `createEntityTables`'s DDL — for both a fresh archive (where
16
+ * `body_hash` already exists from the DDL, so only the index still needs
17
+ * creating) and a legacy archive (where the column is added just above,
18
+ * then the index follows in the same call). `createEntityTables` runs
19
+ * unconditionally on every archive open, including legacy archives that
20
+ * still lack `body_hash` at that point; an unconditional
21
+ * `CREATE INDEX ... body_hash` there would fail with `no such column` before
22
+ * this migration ever runs. This function is the one place guaranteed to
23
+ * run only after the column is confirmed present, for both archive kinds.
24
+ *
25
+ * Only adds the column and its index — it does not backfill values for
26
+ * existing rows (they stay `NULL`). That backfill runs separately, from
27
+ * `backfillBodyHashFromHtmlBlobs` during a viewer-read-model build, since it
28
+ * requires decompressing every page's stored HTML and is too heavy to run on
29
+ * every archive open.
30
+ *
31
+ * Idempotent: adding the column is a no-op once it exists (the index
32
+ * creation always runs, but `IF NOT EXISTS` makes repeat runs a no-op too).
33
+ * Guards on `page_meta`'s existence defensively, though by the time this
34
+ * runs (after `initSchema`, itself after `assertCompatibleVersion` rejects
35
+ * pre-0.13 archives) the table is always present.
36
+ * @param instance - The Knex query builder instance connected to the database.
37
+ * @param onLog - Called instead of `console.error` when this migration
38
+ * actually applies (issue #294: a bare `console.error` here can fire
39
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
40
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
41
+ * `console.error` when omitted (direct/test callers).
42
+ */
43
+ export async function migratePageMetaBodyHash(instance, onLog) {
44
+ const hasPageMeta = await instance.schema.hasTable('page_meta');
45
+ if (!hasPageMeta) {
46
+ return;
47
+ }
48
+ const hasColumn = await instance.schema.hasColumn('page_meta', 'body_hash');
49
+ if (!hasColumn) {
50
+ await instance.schema.table('page_meta', (t) => {
51
+ t.binary('body_hash');
52
+ });
53
+ const message = '[migrate] page_meta.body_hash column added';
54
+ if (onLog) {
55
+ onLog(message);
56
+ }
57
+ else {
58
+ // oxlint-disable-next-line no-console
59
+ console.error(message);
60
+ }
61
+ }
62
+ await instance.raw('CREATE INDEX IF NOT EXISTS idx_page_meta_body_hash ON page_meta(body_hash)');
63
+ }
@@ -0,0 +1,27 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Adds the `page_meta.console_error_count` column to archives created
4
+ * before this feature (issue #228).
5
+ *
6
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
7
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
8
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
9
+ * against an *existing* table — adding a column to the DDL string never
10
+ * reaches an archive whose `page_meta` predates this change. Same
11
+ * catch-up shape as {@link import('./migrate-page-meta-body-hash.js').migratePageMetaBodyHash}.
12
+ *
13
+ * Unlike `body_hash`, there is no separate backfill step: a page that has
14
+ * never been re-scraped since this feature shipped has no
15
+ * `page_console_logs` rows either, so `0` (the value `replaceConsoleLogs`
16
+ * writes for a page with no error/pageerror entries) is already the
17
+ * correct value, not a placeholder pending backfill.
18
+ *
19
+ * Idempotent: adding the column is a no-op once it exists.
20
+ * @param instance - The Knex query builder instance connected to the database.
21
+ * @param onLog - Called instead of `console.error` when this migration
22
+ * actually applies (issue #294: a bare `console.error` here can fire
23
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
24
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
25
+ * `console.error` when omitted (direct/test callers).
26
+ */
27
+ export declare function migratePageMetaConsoleErrorCount(instance: Knex, onLog?: (message: string) => void): Promise<void>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Adds the `page_meta.console_error_count` column to archives created
3
+ * before this feature (issue #228).
4
+ *
5
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
6
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
7
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
8
+ * against an *existing* table — adding a column to the DDL string never
9
+ * reaches an archive whose `page_meta` predates this change. Same
10
+ * catch-up shape as {@link import('./migrate-page-meta-body-hash.js').migratePageMetaBodyHash}.
11
+ *
12
+ * Unlike `body_hash`, there is no separate backfill step: a page that has
13
+ * never been re-scraped since this feature shipped has no
14
+ * `page_console_logs` rows either, so `0` (the value `replaceConsoleLogs`
15
+ * writes for a page with no error/pageerror entries) is already the
16
+ * correct value, not a placeholder pending backfill.
17
+ *
18
+ * Idempotent: adding the column is a no-op once it exists.
19
+ * @param instance - The Knex query builder instance connected to the database.
20
+ * @param onLog - Called instead of `console.error` when this migration
21
+ * actually applies (issue #294: a bare `console.error` here can fire
22
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
23
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
24
+ * `console.error` when omitted (direct/test callers).
25
+ */
26
+ export async function migratePageMetaConsoleErrorCount(instance, onLog) {
27
+ const hasPageMeta = await instance.schema.hasTable('page_meta');
28
+ if (!hasPageMeta) {
29
+ return;
30
+ }
31
+ const hasColumn = await instance.schema.hasColumn('page_meta', 'console_error_count');
32
+ if (!hasColumn) {
33
+ await instance.schema.table('page_meta', (t) => {
34
+ t.integer('console_error_count');
35
+ });
36
+ const message = '[migrate] page_meta.console_error_count column added';
37
+ if (onLog) {
38
+ onLog(message);
39
+ }
40
+ else {
41
+ // oxlint-disable-next-line no-console
42
+ console.error(message);
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,33 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Adds the `page_meta.main_content_custom_element_count` column to archives
4
+ * created before this feature.
5
+ *
6
+ * `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
7
+ * {@link import('./create-entity-tables.js').createEntityTables}, which
8
+ * self-heals a *missing table* on every `initSchema` call but is a no-op
9
+ * against an *existing* table — adding a column to the DDL string never
10
+ * reaches an archive whose `page_meta` predates this change. Same catch-up
11
+ * shape as {@link import('./migrate-page-meta-console-error-count.js').migratePageMetaConsoleErrorCount}.
12
+ *
13
+ * Deliberately its own file rather than an addition to
14
+ * {@link import('./migrate-main-contents-columns.js').migrateMainContentsColumns}:
15
+ * that migration early-returns once its sentinel column
16
+ * (`main_content_word_count`) already exists, so an archive that predates
17
+ * only this one column (but already has the other sixteen main-content
18
+ * columns) would never reach an appended `ALTER TABLE` inside it.
19
+ *
20
+ * No separate backfill: a page that has never been re-scraped since this
21
+ * feature shipped stays `NULL` (unknown), which is correct — it is not
22
+ * conflated with `0` (capture succeeded, zero custom elements found). See
23
+ * {@link import('./meta/compute-main-contents-denormalized.js').computeMainContentsDenormalized}.
24
+ *
25
+ * Idempotent: adding the column is a no-op once it exists.
26
+ * @param instance - The Knex query builder instance connected to the database.
27
+ * @param onLog - Called instead of `console.error` when this migration
28
+ * actually applies (issue #294: a bare `console.error` here can fire
29
+ * while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
30
+ * `Archive.open`, corrupting its cursor tracking). Falls back to
31
+ * `console.error` when omitted (direct/test callers).
32
+ */
33
+ export declare function migratePageMetaCustomElementCount(instance: Knex, onLog?: (message: string) => void): Promise<void>;