@nitpicker/archive 0.0.0-stage → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (737) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +105 -2
  3. package/lib/apply-connection-pragmas.d.ts +18 -0
  4. package/lib/apply-connection-pragmas.js +40 -0
  5. package/lib/archive-accessor.d.ts +265 -0
  6. package/lib/archive-accessor.js +477 -0
  7. package/lib/archive-lock.d.ts +45 -0
  8. package/lib/archive-lock.js +154 -0
  9. package/lib/archive.d.ts +736 -0
  10. package/lib/archive.js +1056 -0
  11. package/lib/body-hash/compute-body-hash.d.ts +32 -0
  12. package/lib/body-hash/compute-body-hash.js +35 -0
  13. package/lib/cache/clear-archive-cache-entry.d.ts +18 -0
  14. package/lib/cache/clear-archive-cache-entry.js +24 -0
  15. package/lib/cache/clear-archive-cache-root.d.ts +26 -0
  16. package/lib/cache/clear-archive-cache-root.js +32 -0
  17. package/lib/cache/compute-archive-cache-key.d.ts +39 -0
  18. package/lib/cache/compute-archive-cache-key.js +95 -0
  19. package/lib/cache/extract-archive-to-cache.d.ts +57 -0
  20. package/lib/cache/extract-archive-to-cache.js +326 -0
  21. package/lib/cache/get-archive-cache-root.d.ts +20 -0
  22. package/lib/cache/get-archive-cache-root.js +53 -0
  23. package/lib/cache/is-archive-cache-disabled.d.ts +24 -0
  24. package/lib/cache/is-archive-cache-disabled.js +34 -0
  25. package/lib/cache/list-archive-cache-entries.d.ts +23 -0
  26. package/lib/cache/list-archive-cache-entries.js +130 -0
  27. package/lib/cache/path-exists.d.ts +9 -0
  28. package/lib/cache/path-exists.js +18 -0
  29. package/lib/cache/resolve-archive-cache-dir.d.ts +26 -0
  30. package/lib/cache/resolve-archive-cache-dir.js +32 -0
  31. package/lib/cache/types.d.ts +33 -0
  32. package/lib/cache/types.js +1 -0
  33. package/lib/content-type/is-html-content-type.d.ts +17 -0
  34. package/lib/content-type/is-html-content-type.js +19 -0
  35. package/lib/content-type/normalize-content-type.d.ts +14 -0
  36. package/lib/content-type/normalize-content-type.js +20 -0
  37. package/lib/create-adjunct-tables.d.ts +66 -0
  38. package/lib/create-adjunct-tables.js +510 -0
  39. package/lib/create-entity-tables.d.ts +191 -0
  40. package/lib/create-entity-tables.js +387 -0
  41. package/lib/create-progress-reporter.d.ts +30 -0
  42. package/lib/create-progress-reporter.js +38 -0
  43. package/lib/create-ref-tables.d.ts +35 -0
  44. package/lib/create-ref-tables.js +185 -0
  45. package/lib/create-template-tables.d.ts +28 -0
  46. package/lib/create-template-tables.js +92 -0
  47. package/lib/database.d.ts +549 -0
  48. package/lib/database.js +804 -0
  49. package/lib/db-ops/_shared/clear-write-ref-caches.d.ts +27 -0
  50. package/lib/db-ops/_shared/clear-write-ref-caches.js +35 -0
  51. package/lib/db-ops/_shared/compress-payload.d.ts +26 -0
  52. package/lib/db-ops/_shared/compress-payload.js +30 -0
  53. package/lib/db-ops/_shared/create-write-ref-caches.d.ts +17 -0
  54. package/lib/db-ops/_shared/create-write-ref-caches.js +27 -0
  55. package/lib/db-ops/_shared/decode-json-ref.d.ts +17 -0
  56. package/lib/db-ops/_shared/decode-json-ref.js +31 -0
  57. package/lib/db-ops/_shared/keyset-paginate-by-id.d.ts +49 -0
  58. package/lib/db-ops/_shared/keyset-paginate-by-id.js +69 -0
  59. package/lib/db-ops/_shared/load-response-headers-by-set-ids.d.ts +20 -0
  60. package/lib/db-ops/_shared/load-response-headers-by-set-ids.js +53 -0
  61. package/lib/db-ops/_shared/resolve-content-item-id.d.ts +62 -0
  62. package/lib/db-ops/_shared/resolve-content-item-id.js +143 -0
  63. package/lib/db-ops/_shared/resolve-url-or-blob.d.ts +23 -0
  64. package/lib/db-ops/_shared/resolve-url-or-blob.js +29 -0
  65. package/lib/db-ops/_shared/retry-setting.d.ts +16 -0
  66. package/lib/db-ops/_shared/retry-setting.js +18 -0
  67. package/lib/db-ops/_shared/safe-parse-json.d.ts +11 -0
  68. package/lib/db-ops/_shared/safe-parse-json.js +18 -0
  69. package/lib/db-ops/_shared/types.d.ts +94 -0
  70. package/lib/db-ops/_shared/types.js +1 -0
  71. package/lib/db-ops/_shared/upsert-blob-ref.d.ts +25 -0
  72. package/lib/db-ops/_shared/upsert-blob-ref.js +48 -0
  73. package/lib/db-ops/_shared/upsert-content-type-ref.d.ts +30 -0
  74. package/lib/db-ops/_shared/upsert-content-type-ref.js +45 -0
  75. package/lib/db-ops/_shared/upsert-json-ref.d.ts +22 -0
  76. package/lib/db-ops/_shared/upsert-json-ref.js +41 -0
  77. package/lib/db-ops/_shared/upsert-response-headers.d.ts +35 -0
  78. package/lib/db-ops/_shared/upsert-response-headers.js +49 -0
  79. package/lib/db-ops/_shared/upsert-url-ref.d.ts +39 -0
  80. package/lib/db-ops/_shared/upsert-url-ref.js +62 -0
  81. package/lib/db-ops/anchors/get-anchors-on-page.d.ts +10 -0
  82. package/lib/db-ops/anchors/get-anchors-on-page.js +21 -0
  83. package/lib/db-ops/config/get-base-url.d.ts +8 -0
  84. package/lib/db-ops/config/get-base-url.js +14 -0
  85. package/lib/db-ops/config/get-config.d.ts +10 -0
  86. package/lib/db-ops/config/get-config.js +29 -0
  87. package/lib/db-ops/config/get-created-cwd.d.ts +11 -0
  88. package/lib/db-ops/config/get-created-cwd.js +13 -0
  89. package/lib/db-ops/config/get-name.d.ts +8 -0
  90. package/lib/db-ops/config/get-name.js +14 -0
  91. package/lib/db-ops/config/info-column-allowlist.d.ts +7 -0
  92. package/lib/db-ops/config/info-column-allowlist.js +29 -0
  93. package/lib/db-ops/config/info-json-columns.d.ts +5 -0
  94. package/lib/db-ops/config/info-json-columns.js +11 -0
  95. package/lib/db-ops/config/set-config.d.ts +12 -0
  96. package/lib/db-ops/config/set-config.js +21 -0
  97. package/lib/db-ops/config/update-config.d.ts +17 -0
  98. package/lib/db-ops/config/update-config.js +36 -0
  99. package/lib/db-ops/console-logs/compute-console-log-hash.d.ts +19 -0
  100. package/lib/db-ops/console-logs/compute-console-log-hash.js +30 -0
  101. package/lib/db-ops/console-logs/replace-console-logs.d.ts +34 -0
  102. package/lib/db-ops/console-logs/replace-console-logs.js +123 -0
  103. package/lib/db-ops/console-logs/stringify-console-log-args.d.ts +16 -0
  104. package/lib/db-ops/console-logs/stringify-console-log-args.js +26 -0
  105. package/lib/db-ops/console-logs/types.d.ts +38 -0
  106. package/lib/db-ops/console-logs/types.js +1 -0
  107. package/lib/db-ops/console-logs/upsert-console-log-item.d.ts +29 -0
  108. package/lib/db-ops/console-logs/upsert-console-log-item.js +52 -0
  109. package/lib/db-ops/dedupe-cap/accumulate-dedupe-cap-rejected-count.d.ts +18 -0
  110. package/lib/db-ops/dedupe-cap/accumulate-dedupe-cap-rejected-count.js +23 -0
  111. package/lib/db-ops/dedupe-cap/finalize-dedupe-cap-event.d.ts +12 -0
  112. package/lib/db-ops/dedupe-cap/finalize-dedupe-cap-event.js +15 -0
  113. package/lib/db-ops/dedupe-cap/insert-dedupe-cap-event.d.ts +14 -0
  114. package/lib/db-ops/dedupe-cap/insert-dedupe-cap-event.js +30 -0
  115. package/lib/db-ops/dedupe-cap/list-dedupe-cap-observations.d.ts +57 -0
  116. package/lib/db-ops/dedupe-cap/list-dedupe-cap-observations.js +87 -0
  117. package/lib/db-ops/dedupe-cap/list-dedupe-cap-shape-keys.d.ts +21 -0
  118. package/lib/db-ops/dedupe-cap/list-dedupe-cap-shape-keys.js +27 -0
  119. package/lib/db-ops/errors/insert-crawl-error.d.ts +15 -0
  120. package/lib/db-ops/errors/insert-crawl-error.js +21 -0
  121. package/lib/db-ops/errors/insert-page-error.d.ts +21 -0
  122. package/lib/db-ops/errors/insert-page-error.js +30 -0
  123. package/lib/db-ops/errors/list-dns-burned-host-candidates.d.ts +33 -0
  124. package/lib/db-ops/errors/list-dns-burned-host-candidates.js +158 -0
  125. package/lib/db-ops/html/read-page-html-blob.d.ts +17 -0
  126. package/lib/db-ops/html/read-page-html-blob.js +20 -0
  127. package/lib/db-ops/lifecycle/checkpoint.d.ts +8 -0
  128. package/lib/db-ops/lifecycle/checkpoint.js +9 -0
  129. package/lib/db-ops/lifecycle/destroy.d.ts +6 -0
  130. package/lib/db-ops/lifecycle/destroy.js +7 -0
  131. package/lib/db-ops/lifecycle/init.d.ts +58 -0
  132. package/lib/db-ops/lifecycle/init.js +122 -0
  133. package/lib/db-ops/list-reconcile/record-list-reconcile-run.d.ts +22 -0
  134. package/lib/db-ops/list-reconcile/record-list-reconcile-run.js +41 -0
  135. package/lib/db-ops/meta/get-audios-of-page.d.ts +11 -0
  136. package/lib/db-ops/meta/get-audios-of-page.js +15 -0
  137. package/lib/db-ops/meta/get-buttons-of-page.d.ts +11 -0
  138. package/lib/db-ops/meta/get-buttons-of-page.js +15 -0
  139. package/lib/db-ops/meta/get-canvases-of-page.d.ts +11 -0
  140. package/lib/db-ops/meta/get-canvases-of-page.js +15 -0
  141. package/lib/db-ops/meta/get-custom-elements-of-page.d.ts +11 -0
  142. package/lib/db-ops/meta/get-custom-elements-of-page.js +15 -0
  143. package/lib/db-ops/meta/get-headings-of-page.d.ts +11 -0
  144. package/lib/db-ops/meta/get-headings-of-page.js +15 -0
  145. package/lib/db-ops/meta/get-iframes-of-page.d.ts +11 -0
  146. package/lib/db-ops/meta/get-iframes-of-page.js +15 -0
  147. package/lib/db-ops/meta/get-jsonld-of-page.d.ts +13 -0
  148. package/lib/db-ops/meta/get-jsonld-of-page.js +27 -0
  149. package/lib/db-ops/meta/get-main-content-images-of-page.d.ts +11 -0
  150. package/lib/db-ops/meta/get-main-content-images-of-page.js +15 -0
  151. package/lib/db-ops/meta/get-main-content-tables-of-page.d.ts +11 -0
  152. package/lib/db-ops/meta/get-main-content-tables-of-page.js +15 -0
  153. package/lib/db-ops/meta/get-page-technologies-of-page.d.ts +11 -0
  154. package/lib/db-ops/meta/get-page-technologies-of-page.js +15 -0
  155. package/lib/db-ops/meta/get-technology-signals-of-page.d.ts +11 -0
  156. package/lib/db-ops/meta/get-technology-signals-of-page.js +15 -0
  157. package/lib/db-ops/meta/get-videos-of-page.d.ts +11 -0
  158. package/lib/db-ops/meta/get-videos-of-page.js +15 -0
  159. package/lib/db-ops/outages/close-network-outage.d.ts +12 -0
  160. package/lib/db-ops/outages/close-network-outage.js +15 -0
  161. package/lib/db-ops/outages/close-stale-open-network-outages.d.ts +26 -0
  162. package/lib/db-ops/outages/close-stale-open-network-outages.js +42 -0
  163. package/lib/db-ops/outages/compute-outage-clamp-timestamp.d.ts +26 -0
  164. package/lib/db-ops/outages/compute-outage-clamp-timestamp.js +31 -0
  165. package/lib/db-ops/outages/insert-network-outage.d.ts +14 -0
  166. package/lib/db-ops/outages/insert-network-outage.js +29 -0
  167. package/lib/db-ops/outages/list-network-outages.d.ts +28 -0
  168. package/lib/db-ops/outages/list-network-outages.js +42 -0
  169. package/lib/db-ops/pages/order/set-url-order.d.ts +13 -0
  170. package/lib/db-ops/pages/order/set-url-order.js +38 -0
  171. package/lib/db-ops/pages/read/build-page-query.d.ts +18 -0
  172. package/lib/db-ops/pages/read/build-page-query.js +40 -0
  173. package/lib/db-ops/pages/read/get-crawling-state.d.ts +117 -0
  174. package/lib/db-ops/pages/read/get-crawling-state.js +161 -0
  175. package/lib/db-ops/pages/read/get-existing-page-urls.d.ts +15 -0
  176. package/lib/db-ops/pages/read/get-existing-page-urls.js +30 -0
  177. package/lib/db-ops/pages/read/get-page-count.d.ts +12 -0
  178. package/lib/db-ops/pages/read/get-page-count.js +21 -0
  179. package/lib/db-ops/pages/read/get-page-source-by-url.d.ts +24 -0
  180. package/lib/db-ops/pages/read/get-page-source-by-url.js +28 -0
  181. package/lib/db-ops/pages/read/get-pages-with-rels.d.ts +38 -0
  182. package/lib/db-ops/pages/read/get-pages-with-rels.js +107 -0
  183. package/lib/db-ops/pages/read/get-pages.d.ts +11 -0
  184. package/lib/db-ops/pages/read/get-pages.js +51 -0
  185. package/lib/db-ops/pages/read/get-scraped-html-page-count.d.ts +18 -0
  186. package/lib/db-ops/pages/read/get-scraped-html-page-count.js +25 -0
  187. package/lib/db-ops/pages/read/reconstruct-page-rows.d.ts +31 -0
  188. package/lib/db-ops/pages/read/reconstruct-page-rows.js +32 -0
  189. package/lib/db-ops/pages/reset/clear-page-derived-rows.d.ts +20 -0
  190. package/lib/db-ops/pages/reset/clear-page-derived-rows.js +37 -0
  191. package/lib/db-ops/pages/reset/repromote-external-pages.d.ts +30 -0
  192. package/lib/db-ops/pages/reset/repromote-external-pages.js +91 -0
  193. package/lib/db-ops/pages/reset/reset-failed-pages.d.ts +88 -0
  194. package/lib/db-ops/pages/reset/reset-failed-pages.js +216 -0
  195. package/lib/db-ops/pages/reset/reset-pages-by-urls.d.ts +80 -0
  196. package/lib/db-ops/pages/reset/reset-pages-by-urls.js +151 -0
  197. package/lib/db-ops/pages/reset/retryable-image-scan-codes.d.ts +24 -0
  198. package/lib/db-ops/pages/reset/retryable-image-scan-codes.js +24 -0
  199. package/lib/db-ops/pages/write/insert-audios.d.ts +14 -0
  200. package/lib/db-ops/pages/write/insert-audios.js +25 -0
  201. package/lib/db-ops/pages/write/insert-buttons.d.ts +14 -0
  202. package/lib/db-ops/pages/write/insert-buttons.js +29 -0
  203. package/lib/db-ops/pages/write/insert-canvases.d.ts +14 -0
  204. package/lib/db-ops/pages/write/insert-canvases.js +26 -0
  205. package/lib/db-ops/pages/write/insert-custom-elements.d.ts +27 -0
  206. package/lib/db-ops/pages/write/insert-custom-elements.js +40 -0
  207. package/lib/db-ops/pages/write/insert-headings.d.ts +15 -0
  208. package/lib/db-ops/pages/write/insert-headings.js +27 -0
  209. package/lib/db-ops/pages/write/insert-iframes.d.ts +14 -0
  210. package/lib/db-ops/pages/write/insert-iframes.js +28 -0
  211. package/lib/db-ops/pages/write/insert-inventory-content-items.d.ts +38 -0
  212. package/lib/db-ops/pages/write/insert-inventory-content-items.js +60 -0
  213. package/lib/db-ops/pages/write/insert-inventory-seeds.d.ts +36 -0
  214. package/lib/db-ops/pages/write/insert-inventory-seeds.js +48 -0
  215. package/lib/db-ops/pages/write/insert-inventory-skipped-pages.d.ts +42 -0
  216. package/lib/db-ops/pages/write/insert-inventory-skipped-pages.js +56 -0
  217. package/lib/db-ops/pages/write/insert-jsonld.d.ts +17 -0
  218. package/lib/db-ops/pages/write/insert-jsonld.js +49 -0
  219. package/lib/db-ops/pages/write/insert-main-content-images.d.ts +20 -0
  220. package/lib/db-ops/pages/write/insert-main-content-images.js +32 -0
  221. package/lib/db-ops/pages/write/insert-main-content-tables.d.ts +14 -0
  222. package/lib/db-ops/pages/write/insert-main-content-tables.js +29 -0
  223. package/lib/db-ops/pages/write/insert-page.d.ts +56 -0
  224. package/lib/db-ops/pages/write/insert-page.js +259 -0
  225. package/lib/db-ops/pages/write/insert-technologies.d.ts +25 -0
  226. package/lib/db-ops/pages/write/insert-technologies.js +45 -0
  227. package/lib/db-ops/pages/write/insert-videos.d.ts +14 -0
  228. package/lib/db-ops/pages/write/insert-videos.js +28 -0
  229. package/lib/db-ops/pages/write/link-redirect-sources.d.ts +42 -0
  230. package/lib/db-ops/pages/write/link-redirect-sources.js +101 -0
  231. package/lib/db-ops/pages/write/record-redirect.d.ts +35 -0
  232. package/lib/db-ops/pages/write/record-redirect.js +100 -0
  233. package/lib/db-ops/pages/write/set-skipped-page.d.ts +13 -0
  234. package/lib/db-ops/pages/write/set-skipped-page.js +24 -0
  235. package/lib/db-ops/pages/write/update-page.d.ts +40 -0
  236. package/lib/db-ops/pages/write/update-page.js +419 -0
  237. package/lib/db-ops/pages/write/write-page-html-blob.d.ts +19 -0
  238. package/lib/db-ops/pages/write/write-page-html-blob.js +41 -0
  239. package/lib/db-ops/referrers/get-redirects-for-pages.d.ts +9 -0
  240. package/lib/db-ops/referrers/get-redirects-for-pages.js +15 -0
  241. package/lib/db-ops/referrers/get-referrers-of-page.d.ts +17 -0
  242. package/lib/db-ops/referrers/get-referrers-of-page.js +32 -0
  243. package/lib/db-ops/referrers/get-referrers-of-resource.d.ts +8 -0
  244. package/lib/db-ops/referrers/get-referrers-of-resource.js +15 -0
  245. package/lib/db-ops/resources/build-resource-query.d.ts +25 -0
  246. package/lib/db-ops/resources/build-resource-query.js +29 -0
  247. package/lib/db-ops/resources/get-existing-resource-urls.d.ts +9 -0
  248. package/lib/db-ops/resources/get-existing-resource-urls.js +24 -0
  249. package/lib/db-ops/resources/get-resource-by-url.d.ts +13 -0
  250. package/lib/db-ops/resources/get-resource-by-url.js +22 -0
  251. package/lib/db-ops/resources/get-resource-url-list.d.ts +17 -0
  252. package/lib/db-ops/resources/get-resource-url-list.js +26 -0
  253. package/lib/db-ops/resources/get-resources.d.ts +8 -0
  254. package/lib/db-ops/resources/get-resources.js +11 -0
  255. package/lib/db-ops/resources/insert-inventory-resources.d.ts +24 -0
  256. package/lib/db-ops/resources/insert-inventory-resources.js +64 -0
  257. package/lib/db-ops/resources/insert-resource-referrers.d.ts +15 -0
  258. package/lib/db-ops/resources/insert-resource-referrers.js +54 -0
  259. package/lib/db-ops/resources/insert-resource.d.ts +34 -0
  260. package/lib/db-ops/resources/insert-resource.js +73 -0
  261. package/lib/db-ops/resources/reconstruct-resource-rows.d.ts +26 -0
  262. package/lib/db-ops/resources/reconstruct-resource-rows.js +30 -0
  263. package/lib/db-ops/templates/assign-template-labels.d.ts +60 -0
  264. package/lib/db-ops/templates/assign-template-labels.js +187 -0
  265. package/lib/db-ops/templates/replace-page-templates.d.ts +44 -0
  266. package/lib/db-ops/templates/replace-page-templates.js +174 -0
  267. package/lib/db-ops/templates/serialize-template-cluster-reason.d.ts +16 -0
  268. package/lib/db-ops/templates/serialize-template-cluster-reason.js +17 -0
  269. package/lib/db-ops/templates/types.d.ts +103 -0
  270. package/lib/db-ops/templates/types.js +1 -0
  271. package/lib/debug.d.ts +8 -0
  272. package/lib/debug.js +9 -0
  273. package/lib/decode-html-blob.d.ts +20 -0
  274. package/lib/decode-html-blob.js +23 -0
  275. package/lib/decode-page-html-blob-bytes.d.ts +25 -0
  276. package/lib/decode-page-html-blob-bytes.js +29 -0
  277. package/lib/decode-stored-blob-bytes.d.ts +25 -0
  278. package/lib/decode-stored-blob-bytes.js +47 -0
  279. package/lib/derive-lineage-from-parent.d.ts +37 -0
  280. package/lib/derive-lineage-from-parent.js +42 -0
  281. package/lib/drop-legacy-tables.d.ts +45 -0
  282. package/lib/drop-legacy-tables.js +56 -0
  283. package/lib/error-kind/classify-error-kind.d.ts +20 -0
  284. package/lib/error-kind/classify-error-kind.js +136 -0
  285. package/lib/error-kind/network-related-error-kinds.d.ts +23 -0
  286. package/lib/error-kind/network-related-error-kinds.js +28 -0
  287. package/lib/error-kind/permanent-error-kinds.d.ts +48 -0
  288. package/lib/error-kind/permanent-error-kinds.js +54 -0
  289. package/lib/error-kind/types.d.ts +54 -0
  290. package/lib/error-kind/types.js +1 -0
  291. package/lib/filesystem/append-text.d.ts +9 -0
  292. package/lib/filesystem/append-text.js +14 -0
  293. package/lib/filesystem/copy-dir-sync.d.ts +6 -0
  294. package/lib/filesystem/copy-dir-sync.js +9 -0
  295. package/lib/filesystem/copy-dir.d.ts +7 -0
  296. package/lib/filesystem/copy-dir.js +13 -0
  297. package/lib/filesystem/copy-file-with-progress.d.ts +20 -0
  298. package/lib/filesystem/copy-file-with-progress.js +34 -0
  299. package/lib/filesystem/exists.d.ts +6 -0
  300. package/lib/filesystem/exists.js +9 -0
  301. package/lib/filesystem/get-file-list.d.ts +8 -0
  302. package/lib/filesystem/get-file-list.js +12 -0
  303. package/lib/filesystem/is-dir.d.ts +6 -0
  304. package/lib/filesystem/is-dir.js +10 -0
  305. package/lib/filesystem/mkdir.d.ts +8 -0
  306. package/lib/filesystem/mkdir.js +15 -0
  307. package/lib/filesystem/output-binary.d.ts +12 -0
  308. package/lib/filesystem/output-binary.js +17 -0
  309. package/lib/filesystem/output-json.d.ts +9 -0
  310. package/lib/filesystem/output-json.js +14 -0
  311. package/lib/filesystem/output-text.d.ts +11 -0
  312. package/lib/filesystem/output-text.js +32 -0
  313. package/lib/filesystem/parse-pax-path.d.ts +18 -0
  314. package/lib/filesystem/parse-pax-path.js +47 -0
  315. package/lib/filesystem/parse-tar-size-field.d.ts +13 -0
  316. package/lib/filesystem/parse-tar-size-field.js +40 -0
  317. package/lib/filesystem/peek-tar-top-dir.d.ts +35 -0
  318. package/lib/filesystem/peek-tar-top-dir.js +215 -0
  319. package/lib/filesystem/read-json.d.ts +7 -0
  320. package/lib/filesystem/read-json.js +11 -0
  321. package/lib/filesystem/read-text.d.ts +6 -0
  322. package/lib/filesystem/read-text.js +10 -0
  323. package/lib/filesystem/readline.d.ts +11 -0
  324. package/lib/filesystem/readline.js +26 -0
  325. package/lib/filesystem/remove.d.ts +5 -0
  326. package/lib/filesystem/remove.js +10 -0
  327. package/lib/filesystem/rename.d.ts +16 -0
  328. package/lib/filesystem/rename.js +48 -0
  329. package/lib/filesystem/tar.d.ts +23 -0
  330. package/lib/filesystem/tar.js +78 -0
  331. package/lib/filesystem/untar.d.ts +33 -0
  332. package/lib/filesystem/untar.js +84 -0
  333. package/lib/get-failed-page-messages.d.ts +56 -0
  334. package/lib/get-failed-page-messages.js +146 -0
  335. package/lib/get-json.d.ts +10 -0
  336. package/lib/get-json.js +25 -0
  337. package/lib/html-snapshot/match-selector-html.d.ts +25 -0
  338. package/lib/html-snapshot/match-selector-html.js +28 -0
  339. package/lib/html-snapshot/match-selector-snapshots.d.ts +33 -0
  340. package/lib/html-snapshot/match-selector-snapshots.js +33 -0
  341. package/lib/html-snapshot/search-html-document.d.ts +29 -0
  342. package/lib/html-snapshot/search-html-document.js +27 -0
  343. package/lib/html-snapshot/search-html-snapshots.d.ts +36 -0
  344. package/lib/html-snapshot/search-html-snapshots.js +35 -0
  345. package/lib/html-snapshot/types.d.ts +111 -0
  346. package/lib/html-snapshot/types.js +7 -0
  347. package/lib/html-snapshot/validate-search-pattern.d.ts +15 -0
  348. package/lib/html-snapshot/validate-search-pattern.js +17 -0
  349. package/lib/init-schema.d.ts +48 -0
  350. package/lib/init-schema.js +124 -0
  351. package/lib/is-inventory-source.d.ts +21 -0
  352. package/lib/is-inventory-source.js +22 -0
  353. package/lib/is-within-outage-window.d.ts +49 -0
  354. package/lib/is-within-outage-window.js +33 -0
  355. package/lib/isolated-cluster/create-isolated-cluster-run.d.ts +24 -0
  356. package/lib/isolated-cluster/create-isolated-cluster-run.js +26 -0
  357. package/lib/libsql-dialect.d.ts +115 -0
  358. package/lib/libsql-dialect.js +116 -0
  359. package/lib/limited-page-ids.d.ts +9 -0
  360. package/lib/limited-page-ids.js +18 -0
  361. package/lib/meta/assert-compatible-version.d.ts +60 -0
  362. package/lib/meta/assert-compatible-version.js +93 -0
  363. package/lib/meta/classify-jsonld-type.d.ts +23 -0
  364. package/lib/meta/classify-jsonld-type.js +43 -0
  365. package/lib/meta/compare-semver.d.ts +23 -0
  366. package/lib/meta/compare-semver.js +51 -0
  367. package/lib/meta/compute-main-contents-denormalized.d.ts +41 -0
  368. package/lib/meta/compute-main-contents-denormalized.js +88 -0
  369. package/lib/meta/compute-page-denormalized.d.ts +20 -0
  370. package/lib/meta/compute-page-denormalized.js +35 -0
  371. package/lib/meta/derive-flat-from-meta.d.ts +34 -0
  372. package/lib/meta/derive-flat-from-meta.js +158 -0
  373. package/lib/meta/derive-meta-extras.d.ts +20 -0
  374. package/lib/meta/derive-meta-extras.js +23 -0
  375. package/lib/meta/extract-tags-for-archive.d.ts +17 -0
  376. package/lib/meta/extract-tags-for-archive.js +36 -0
  377. package/lib/meta/parse-main-content-class-list.d.ts +19 -0
  378. package/lib/meta/parse-main-content-class-list.js +34 -0
  379. package/lib/meta/summarize-jsonld.d.ts +17 -0
  380. package/lib/meta/summarize-jsonld.js +29 -0
  381. package/lib/meta/technologies/combine-technology-confidence.d.ts +46 -0
  382. package/lib/meta/technologies/combine-technology-confidence.js +93 -0
  383. package/lib/meta/technologies/convert-legacy-page-tags-to-inserts.d.ts +45 -0
  384. package/lib/meta/technologies/convert-legacy-page-tags-to-inserts.js +53 -0
  385. package/lib/meta/technologies/convert-tag-row-to-wappalyzer-signal.d.ts +33 -0
  386. package/lib/meta/technologies/convert-tag-row-to-wappalyzer-signal.js +46 -0
  387. package/lib/meta/technologies/extract-technologies-for-archive.d.ts +33 -0
  388. package/lib/meta/technologies/extract-technologies-for-archive.js +30 -0
  389. package/lib/meta/technologies/match-js-license-comment-signal.d.ts +21 -0
  390. package/lib/meta/technologies/match-js-license-comment-signal.js +23 -0
  391. package/lib/meta/technologies/match-structural-technology-signals.d.ts +26 -0
  392. package/lib/meta/technologies/match-structural-technology-signals.js +48 -0
  393. package/lib/meta/technologies/normalize-wappalyzer-entries.d.ts +25 -0
  394. package/lib/meta/technologies/normalize-wappalyzer-entries.js +35 -0
  395. package/lib/meta/technologies/technology-signal-definitions.d.ts +44 -0
  396. package/lib/meta/technologies/technology-signal-definitions.js +60 -0
  397. package/lib/meta/technologies/types.d.ts +70 -0
  398. package/lib/meta/technologies/types.js +13 -0
  399. package/lib/meta/types.d.ts +1490 -0
  400. package/lib/meta/types.js +65 -0
  401. package/lib/migrate-content-items-alias-of-id.d.ts +52 -0
  402. package/lib/migrate-content-items-alias-of-id.js +69 -0
  403. package/lib/migrate-content-items-dedupe-cap-event-id.d.ts +46 -0
  404. package/lib/migrate-content-items-dedupe-cap-event-id.js +62 -0
  405. package/lib/migrate-content-items-is-metadata-only.d.ts +44 -0
  406. package/lib/migrate-content-items-is-metadata-only.js +60 -0
  407. package/lib/migrate-entity-tables.d.ts +55 -0
  408. package/lib/migrate-entity-tables.js +66 -0
  409. package/lib/migrate-info-created-cwd.d.ts +17 -0
  410. package/lib/migrate-info-created-cwd.js +36 -0
  411. package/lib/migrate-info-main-content-selector.d.ts +16 -0
  412. package/lib/migrate-info-main-content-selector.js +35 -0
  413. package/lib/migrate-info-request-header-names.d.ts +16 -0
  414. package/lib/migrate-info-request-header-names.js +35 -0
  415. package/lib/migrate-info-roots.d.ts +20 -0
  416. package/lib/migrate-info-roots.js +52 -0
  417. package/lib/migrate-inventory-runs-to-list-reconcile-runs.d.ts +34 -0
  418. package/lib/migrate-inventory-runs-to-list-reconcile-runs.js +51 -0
  419. package/lib/migrate-list-reconcile-runs-exclude-skipped.d.ts +25 -0
  420. package/lib/migrate-list-reconcile-runs-exclude-skipped.js +44 -0
  421. package/lib/migrate-list-reconcile-runs-invalid-skipped.d.ts +16 -0
  422. package/lib/migrate-list-reconcile-runs-invalid-skipped.js +35 -0
  423. package/lib/migrate-main-contents-columns.d.ts +26 -0
  424. package/lib/migrate-main-contents-columns.js +61 -0
  425. package/lib/migrate-page-meta-body-hash.d.ts +44 -0
  426. package/lib/migrate-page-meta-body-hash.js +63 -0
  427. package/lib/migrate-page-meta-console-error-count.d.ts +27 -0
  428. package/lib/migrate-page-meta-console-error-count.js +45 -0
  429. package/lib/migrate-page-meta-custom-element-count.d.ts +33 -0
  430. package/lib/migrate-page-meta-custom-element-count.js +51 -0
  431. package/lib/migrate-page-meta-image-scan.d.ts +27 -0
  432. package/lib/migrate-page-meta-image-scan.js +52 -0
  433. package/lib/migrate-page-tags-to-page-technologies.d.ts +39 -0
  434. package/lib/migrate-page-tags-to-page-technologies.js +79 -0
  435. package/lib/migrate-ref-tables.d.ts +25 -0
  436. package/lib/migrate-ref-tables.js +38 -0
  437. package/lib/native-executor/check-native-executor-config.d.ts +17 -0
  438. package/lib/native-executor/check-native-executor-config.js +20 -0
  439. package/lib/page-meta-column-maps.d.ts +32 -0
  440. package/lib/page-meta-column-maps.js +43 -0
  441. package/lib/page.d.ts +546 -0
  442. package/lib/page.js +764 -0
  443. package/lib/peek-archive-lock.d.ts +40 -0
  444. package/lib/peek-archive-lock.js +62 -0
  445. package/lib/populate-entity-tables/collapse-anchor-rows.d.ts +41 -0
  446. package/lib/populate-entity-tables/collapse-anchor-rows.js +87 -0
  447. package/lib/populate-entity-tables/derive-dom-path.d.ts +35 -0
  448. package/lib/populate-entity-tables/derive-dom-path.js +72 -0
  449. package/lib/populate-entity-tables/is-blob-ref-value.d.ts +16 -0
  450. package/lib/populate-entity-tables/is-blob-ref-value.js +19 -0
  451. package/lib/populate-entity-tables/match-images-to-dom-paths.d.ts +66 -0
  452. package/lib/populate-entity-tables/match-images-to-dom-paths.js +96 -0
  453. package/lib/populate-entity-tables/populate-anchor-edges.d.ts +33 -0
  454. package/lib/populate-entity-tables/populate-anchor-edges.js +153 -0
  455. package/lib/populate-entity-tables/populate-content-items.d.ts +40 -0
  456. package/lib/populate-entity-tables/populate-content-items.js +141 -0
  457. package/lib/populate-entity-tables/populate-entities.d.ts +81 -0
  458. package/lib/populate-entity-tables/populate-entities.js +110 -0
  459. package/lib/populate-entity-tables/populate-image-items.d.ts +91 -0
  460. package/lib/populate-entity-tables/populate-image-items.js +226 -0
  461. package/lib/populate-entity-tables/populate-page-meta.d.ts +33 -0
  462. package/lib/populate-entity-tables/populate-page-meta.js +267 -0
  463. package/lib/populate-entity-tables/populate-resource-items.d.ts +22 -0
  464. package/lib/populate-entity-tables/populate-resource-items.js +114 -0
  465. package/lib/populate-entity-tables/populate-resource-ref-edges.d.ts +31 -0
  466. package/lib/populate-entity-tables/populate-resource-ref-edges.js +33 -0
  467. package/lib/populate-entity-tables/resolve-blob-refs.d.ts +31 -0
  468. package/lib/populate-entity-tables/resolve-blob-refs.js +100 -0
  469. package/lib/populate-entity-tables/resolve-content-type-refs.d.ts +22 -0
  470. package/lib/populate-entity-tables/resolve-content-type-refs.js +27 -0
  471. package/lib/populate-entity-tables/resolve-header-sets.d.ts +49 -0
  472. package/lib/populate-entity-tables/resolve-header-sets.js +122 -0
  473. package/lib/populate-entity-tables/resolve-json-refs.d.ts +25 -0
  474. package/lib/populate-entity-tables/resolve-json-refs.js +67 -0
  475. package/lib/populate-entity-tables/resolve-text-refs.d.ts +30 -0
  476. package/lib/populate-entity-tables/resolve-text-refs.js +61 -0
  477. package/lib/populate-entity-tables/resolve-url-or-blob-from-maps.d.ts +21 -0
  478. package/lib/populate-entity-tables/resolve-url-or-blob-from-maps.js +27 -0
  479. package/lib/populate-entity-tables/resolve-url-refs.d.ts +33 -0
  480. package/lib/populate-entity-tables/resolve-url-refs.js +60 -0
  481. package/lib/populate-entity-tables/test-utils/count-rows.d.ts +17 -0
  482. package/lib/populate-entity-tables/test-utils/count-rows.js +20 -0
  483. package/lib/populate-entity-tables/test-utils/seed-content-items.d.ts +25 -0
  484. package/lib/populate-entity-tables/test-utils/seed-content-items.js +42 -0
  485. package/lib/populate-entity-tables/test-utils/setup-entities-db.d.ts +30 -0
  486. package/lib/populate-entity-tables/test-utils/setup-entities-db.js +175 -0
  487. package/lib/populate-entity-tables/types.d.ts +157 -0
  488. package/lib/populate-entity-tables/types.js +12 -0
  489. package/lib/populate-entity-tables/upsert-text-refs.d.ts +38 -0
  490. package/lib/populate-entity-tables/upsert-text-refs.js +78 -0
  491. package/lib/populate-ref-tables/classify-content-type.d.ts +16 -0
  492. package/lib/populate-ref-tables/classify-content-type.js +52 -0
  493. package/lib/populate-ref-tables/compute-content-hash.d.ts +22 -0
  494. package/lib/populate-ref-tables/compute-content-hash.js +26 -0
  495. package/lib/populate-ref-tables/compute-header-flags.d.ts +16 -0
  496. package/lib/populate-ref-tables/compute-header-flags.js +70 -0
  497. package/lib/populate-ref-tables/content-type-rules.d.ts +38 -0
  498. package/lib/populate-ref-tables/content-type-rules.js +133 -0
  499. package/lib/populate-ref-tables/create-header-table-caches.d.ts +25 -0
  500. package/lib/populate-ref-tables/create-header-table-caches.js +49 -0
  501. package/lib/populate-ref-tables/data-uri-url-refs-limit.d.ts +15 -0
  502. package/lib/populate-ref-tables/data-uri-url-refs-limit.js +15 -0
  503. package/lib/populate-ref-tables/decode-data-uri.d.ts +21 -0
  504. package/lib/populate-ref-tables/decode-data-uri.js +126 -0
  505. package/lib/populate-ref-tables/decompose-header-set.d.ts +29 -0
  506. package/lib/populate-ref-tables/decompose-header-set.js +157 -0
  507. package/lib/populate-ref-tables/decompose-url.d.ts +25 -0
  508. package/lib/populate-ref-tables/decompose-url.js +70 -0
  509. package/lib/populate-ref-tables/header-stability.d.ts +19 -0
  510. package/lib/populate-ref-tables/header-stability.js +22 -0
  511. package/lib/populate-ref-tables/header-value-cache-key.d.ts +17 -0
  512. package/lib/populate-ref-tables/header-value-cache-key.js +19 -0
  513. package/lib/populate-ref-tables/normalize-mime.d.ts +24 -0
  514. package/lib/populate-ref-tables/normalize-mime.js +36 -0
  515. package/lib/populate-ref-tables/populate-blob-refs.d.ts +38 -0
  516. package/lib/populate-ref-tables/populate-blob-refs.js +134 -0
  517. package/lib/populate-ref-tables/populate-content-type-refs.d.ts +27 -0
  518. package/lib/populate-ref-tables/populate-content-type-refs.js +70 -0
  519. package/lib/populate-ref-tables/populate-header-tables.d.ts +35 -0
  520. package/lib/populate-ref-tables/populate-header-tables.js +80 -0
  521. package/lib/populate-ref-tables/populate-json-refs.d.ts +29 -0
  522. package/lib/populate-ref-tables/populate-json-refs.js +101 -0
  523. package/lib/populate-ref-tables/populate-refs.d.ts +51 -0
  524. package/lib/populate-ref-tables/populate-refs.js +62 -0
  525. package/lib/populate-ref-tables/populate-text-refs.d.ts +32 -0
  526. package/lib/populate-ref-tables/populate-text-refs.js +133 -0
  527. package/lib/populate-ref-tables/populate-url-refs.d.ts +28 -0
  528. package/lib/populate-ref-tables/populate-url-refs.js +148 -0
  529. package/lib/populate-ref-tables/test-utils/count-rows.d.ts +15 -0
  530. package/lib/populate-ref-tables/test-utils/count-rows.js +17 -0
  531. package/lib/populate-ref-tables/types.d.ts +197 -0
  532. package/lib/populate-ref-tables/types.js +7 -0
  533. package/lib/populate-ref-tables/upsert-one-header-set.d.ts +34 -0
  534. package/lib/populate-ref-tables/upsert-one-header-set.js +208 -0
  535. package/lib/populate-ref-tables/volatile-header-names.d.ts +20 -0
  536. package/lib/populate-ref-tables/volatile-header-names.js +33 -0
  537. package/lib/redirect-table.d.ts +9 -0
  538. package/lib/redirect-table.js +28 -0
  539. package/lib/release-finished-statements.d.ts +42 -0
  540. package/lib/release-finished-statements.js +45 -0
  541. package/lib/resolve-redirect-chain.d.ts +33 -0
  542. package/lib/resolve-redirect-chain.js +27 -0
  543. package/lib/resource.d.ts +46 -0
  544. package/lib/resource.js +62 -0
  545. package/lib/retarget-legacy-fk-tables.d.ts +61 -0
  546. package/lib/retarget-legacy-fk-tables.js +137 -0
  547. package/lib/safe-path.d.ts +9 -0
  548. package/lib/safe-path.js +17 -0
  549. package/lib/scope/build-scope-map.d.ts +21 -0
  550. package/lib/scope/build-scope-map.js +32 -0
  551. package/lib/scope/find-scope-entry.d.ts +25 -0
  552. package/lib/scope/find-scope-entry.js +45 -0
  553. package/lib/template-classification/classify-archive-page-templates.d.ts +42 -0
  554. package/lib/template-classification/classify-archive-page-templates.js +70 -0
  555. package/lib/template-classification/classify-page-templates.d.ts +33 -0
  556. package/lib/template-classification/classify-page-templates.js +60 -0
  557. package/lib/template-classification/collect-page-ids-with-html.d.ts +24 -0
  558. package/lib/template-classification/collect-page-ids-with-html.js +30 -0
  559. package/lib/template-classification/collect-page-stylesheet-urls.d.ts +32 -0
  560. package/lib/template-classification/collect-page-stylesheet-urls.js +130 -0
  561. package/lib/template-classification/create-content-root-hint.d.ts +41 -0
  562. package/lib/template-classification/create-content-root-hint.js +51 -0
  563. package/lib/template-classification/create-page-cluster-factory.d.ts +36 -0
  564. package/lib/template-classification/create-page-cluster-factory.js +52 -0
  565. package/lib/template-classification/load-page-cluster-candidates.d.ts +32 -0
  566. package/lib/template-classification/load-page-cluster-candidates.js +93 -0
  567. package/lib/template-classification/page-cluster/resolve-page-cluster-keys.d.ts +34 -0
  568. package/lib/template-classification/page-cluster/resolve-page-cluster-keys.js +236 -0
  569. package/lib/template-classification/page-cluster/types.d.ts +123 -0
  570. package/lib/template-classification/page-cluster/types.js +1 -0
  571. package/lib/template-classification/types.d.ts +234 -0
  572. package/lib/template-classification/types.js +1 -0
  573. package/lib/test-utils/build-full-schema-test-db.d.ts +34 -0
  574. package/lib/test-utils/build-full-schema-test-db.js +74 -0
  575. package/lib/test-utils/create-legacy-analysis-tables.d.ts +13 -0
  576. package/lib/test-utils/create-legacy-analysis-tables.js +37 -0
  577. package/lib/test-utils/fk-parent-tables.d.ts +15 -0
  578. package/lib/test-utils/fk-parent-tables.js +19 -0
  579. package/lib/test-utils/seed-content-item.d.ts +35 -0
  580. package/lib/test-utils/seed-content-item.js +42 -0
  581. package/lib/test-utils/setup-legacy-fk-db.d.ts +34 -0
  582. package/lib/test-utils/setup-legacy-fk-db.js +271 -0
  583. package/lib/transfer/attach-source-database.d.ts +31 -0
  584. package/lib/transfer/attach-source-database.js +40 -0
  585. package/lib/transfer/build-split-config.d.ts +30 -0
  586. package/lib/transfer/build-split-config.js +42 -0
  587. package/lib/transfer/clear-replaced-page-rows.d.ts +23 -0
  588. package/lib/transfer/clear-replaced-page-rows.js +61 -0
  589. package/lib/transfer/concat-archives.d.ts +55 -0
  590. package/lib/transfer/concat-archives.js +95 -0
  591. package/lib/transfer/concat-source-transfer-phases.d.ts +10 -0
  592. package/lib/transfer/concat-source-transfer-phases.js +17 -0
  593. package/lib/transfer/content-item-rank-sql.d.ts +21 -0
  594. package/lib/transfer/content-item-rank-sql.js +23 -0
  595. package/lib/transfer/copy-anchor-edges.d.ts +28 -0
  596. package/lib/transfer/copy-anchor-edges.js +42 -0
  597. package/lib/transfer/copy-dictionaries-for-concat.d.ts +39 -0
  598. package/lib/transfer/copy-dictionaries-for-concat.js +81 -0
  599. package/lib/transfer/copy-dictionaries-for-split.d.ts +29 -0
  600. package/lib/transfer/copy-dictionaries-for-split.js +224 -0
  601. package/lib/transfer/copy-header-set-children.d.ts +27 -0
  602. package/lib/transfer/copy-header-set-children.js +51 -0
  603. package/lib/transfer/copy-image-items.d.ts +21 -0
  604. package/lib/transfer/copy-image-items.js +62 -0
  605. package/lib/transfer/copy-inventory-source-lists.d.ts +30 -0
  606. package/lib/transfer/copy-inventory-source-lists.js +61 -0
  607. package/lib/transfer/copy-journal-tables.d.ts +30 -0
  608. package/lib/transfer/copy-journal-tables.js +56 -0
  609. package/lib/transfer/copy-page-console-logs.d.ts +16 -0
  610. package/lib/transfer/copy-page-console-logs.js +27 -0
  611. package/lib/transfer/copy-page-html-blobs.d.ts +31 -0
  612. package/lib/transfer/copy-page-html-blobs.js +43 -0
  613. package/lib/transfer/copy-page-meta.d.ts +27 -0
  614. package/lib/transfer/copy-page-meta.js +68 -0
  615. package/lib/transfer/copy-page-template-clusters.d.ts +31 -0
  616. package/lib/transfer/copy-page-template-clusters.js +56 -0
  617. package/lib/transfer/copy-page-template-labels.d.ts +34 -0
  618. package/lib/transfer/copy-page-template-labels.js +88 -0
  619. package/lib/transfer/copy-resource-items.d.ts +29 -0
  620. package/lib/transfer/copy-resource-items.js +89 -0
  621. package/lib/transfer/copy-resource-ref-edges.d.ts +20 -0
  622. package/lib/transfer/copy-resource-ref-edges.js +33 -0
  623. package/lib/transfer/copy-simple-page-scoped-tables.d.ts +15 -0
  624. package/lib/transfer/copy-simple-page-scoped-tables.js +34 -0
  625. package/lib/transfer/count-external-pages-in-scope.d.ts +26 -0
  626. package/lib/transfer/count-external-pages-in-scope.js +40 -0
  627. package/lib/transfer/create-transfer-temp-tables.d.ts +30 -0
  628. package/lib/transfer/create-transfer-temp-tables.js +59 -0
  629. package/lib/transfer/dictionary-copy-specs.d.ts +32 -0
  630. package/lib/transfer/dictionary-copy-specs.js +28 -0
  631. package/lib/transfer/drop-transfer-temp-tables.d.ts +9 -0
  632. package/lib/transfer/drop-transfer-temp-tables.js +18 -0
  633. package/lib/transfer/flatten-redirect-chains.d.ts +44 -0
  634. package/lib/transfer/flatten-redirect-chains.js +74 -0
  635. package/lib/transfer/insert-content-items.d.ts +35 -0
  636. package/lib/transfer/insert-content-items.js +116 -0
  637. package/lib/transfer/list-transfer-columns.d.ts +35 -0
  638. package/lib/transfer/list-transfer-columns.js +45 -0
  639. package/lib/transfer/mark-in-scope-content-items.d.ts +31 -0
  640. package/lib/transfer/mark-in-scope-content-items.js +54 -0
  641. package/lib/transfer/merge-archive-configs.d.ts +51 -0
  642. package/lib/transfer/merge-archive-configs.js +85 -0
  643. package/lib/transfer/plan-content-items-for-concat.d.ts +33 -0
  644. package/lib/transfer/plan-content-items-for-concat.js +51 -0
  645. package/lib/transfer/plan-content-items-for-split.d.ts +42 -0
  646. package/lib/transfer/plan-content-items-for-split.js +83 -0
  647. package/lib/transfer/plan-resource-items.d.ts +40 -0
  648. package/lib/transfer/plan-resource-items.js +69 -0
  649. package/lib/transfer/quote-transfer-identifier.d.ts +18 -0
  650. package/lib/transfer/quote-transfer-identifier.js +20 -0
  651. package/lib/transfer/reclassify-resource-externality.d.ts +37 -0
  652. package/lib/transfer/reclassify-resource-externality.js +66 -0
  653. package/lib/transfer/remap-redirect-dest-ids.d.ts +34 -0
  654. package/lib/transfer/remap-redirect-dest-ids.js +51 -0
  655. package/lib/transfer/replace-content-items.d.ts +39 -0
  656. package/lib/transfer/replace-content-items.js +83 -0
  657. package/lib/transfer/simple-page-scoped-tables.d.ts +25 -0
  658. package/lib/transfer/simple-page-scoped-tables.js +38 -0
  659. package/lib/transfer/split-archive.d.ts +55 -0
  660. package/lib/transfer/split-archive.js +98 -0
  661. package/lib/transfer/split-source-transfer-phases.d.ts +11 -0
  662. package/lib/transfer/split-source-transfer-phases.js +18 -0
  663. package/lib/transfer/transfer-action.d.ts +34 -0
  664. package/lib/transfer/transfer-action.js +32 -0
  665. package/lib/transfer/transfer-archive-rows.d.ts +65 -0
  666. package/lib/transfer/transfer-archive-rows.js +156 -0
  667. package/lib/transfer/transfer-dictionary-tables.d.ts +12 -0
  668. package/lib/transfer/transfer-dictionary-tables.js +22 -0
  669. package/lib/transfer/transfer-post-phases.d.ts +10 -0
  670. package/lib/transfer/transfer-post-phases.js +13 -0
  671. package/lib/transfer/transfer-source-alias.d.ts +9 -0
  672. package/lib/transfer/transfer-source-alias.js +9 -0
  673. package/lib/transfer/types.d.ts +111 -0
  674. package/lib/transfer/types.js +35 -0
  675. package/lib/types.d.ts +772 -0
  676. package/lib/types.js +1 -0
  677. package/lib/url-alias/compute-tier-a-alias-key.d.ts +44 -0
  678. package/lib/url-alias/compute-tier-a-alias-key.js +47 -0
  679. package/lib/url-alias/compute-tier-b-alias-key.d.ts +23 -0
  680. package/lib/url-alias/compute-tier-b-alias-key.js +26 -0
  681. package/lib/url-alias/group-alias-candidates.d.ts +27 -0
  682. package/lib/url-alias/group-alias-candidates.js +29 -0
  683. package/lib/url-alias/types.d.ts +12 -0
  684. package/lib/url-alias/types.js +1 -0
  685. package/lib/url-pattern/compute-shape-key.d.ts +58 -0
  686. package/lib/url-pattern/compute-shape-key.js +129 -0
  687. package/lib/url-pattern/decompose-url.d.ts +33 -0
  688. package/lib/url-pattern/decompose-url.js +79 -0
  689. package/lib/url-pattern/reconstruct-url.d.ts +15 -0
  690. package/lib/url-pattern/reconstruct-url.js +33 -0
  691. package/lib/url-sort/compute-url-sort-ranks.d.ts +30 -0
  692. package/lib/url-sort/compute-url-sort-ranks.js +33 -0
  693. package/lib/utils/array/each-splitted.d.ts +10 -0
  694. package/lib/utils/array/each-splitted.js +14 -0
  695. package/lib/utils/debug.d.ts +8 -0
  696. package/lib/utils/debug.js +8 -0
  697. package/lib/utils/error/emit-error-with-retry.d.ts +40 -0
  698. package/lib/utils/error/emit-error-with-retry.js +44 -0
  699. package/lib/utils/error/emit-error.d.ts +39 -0
  700. package/lib/utils/error/emit-error.js +41 -0
  701. package/lib/utils/object/parse-response-headers.d.ts +12 -0
  702. package/lib/utils/object/parse-response-headers.js +26 -0
  703. package/lib/utils/object/redact-request-headers.d.ts +15 -0
  704. package/lib/utils/object/redact-request-headers.js +27 -0
  705. package/lib/utils/types/types.d.ts +383 -0
  706. package/lib/utils/types/types.js +1 -0
  707. package/lib/verify-migration/capture-rejection.d.ts +24 -0
  708. package/lib/verify-migration/capture-rejection.js +31 -0
  709. package/lib/verify-migration/check-anchor-edges-count.d.ts +34 -0
  710. package/lib/verify-migration/check-anchor-edges-count.js +72 -0
  711. package/lib/verify-migration/check-anchor-edges-sum.d.ts +13 -0
  712. package/lib/verify-migration/check-anchor-edges-sum.js +27 -0
  713. package/lib/verify-migration/check-content-items-count.d.ts +16 -0
  714. package/lib/verify-migration/check-content-items-count.js +30 -0
  715. package/lib/verify-migration/check-content-type-preservation.d.ts +22 -0
  716. package/lib/verify-migration/check-content-type-preservation.js +40 -0
  717. package/lib/verify-migration/check-foreign-key-integrity.d.ts +31 -0
  718. package/lib/verify-migration/check-foreign-key-integrity.js +47 -0
  719. package/lib/verify-migration/check-image-items-count.d.ts +12 -0
  720. package/lib/verify-migration/check-image-items-count.js +26 -0
  721. package/lib/verify-migration/check-page-meta-count.d.ts +15 -0
  722. package/lib/verify-migration/check-page-meta-count.js +31 -0
  723. package/lib/verify-migration/check-reader-parity.d.ts +23 -0
  724. package/lib/verify-migration/check-reader-parity.js +182 -0
  725. package/lib/verify-migration/check-resource-items-count.d.ts +17 -0
  726. package/lib/verify-migration/check-resource-items-count.js +33 -0
  727. package/lib/verify-migration/check-url-round-trip.d.ts +43 -0
  728. package/lib/verify-migration/check-url-round-trip.js +112 -0
  729. package/lib/verify-migration/types.d.ts +70 -0
  730. package/lib/verify-migration/types.js +63 -0
  731. package/lib/verify-migration/verify-migration.d.ts +41 -0
  732. package/lib/verify-migration/verify-migration.js +120 -0
  733. package/lib/with-bulk-write-pragmas.d.ts +51 -0
  734. package/lib/with-bulk-write-pragmas.js +132 -0
  735. package/lib/write-queue.d.ts +32 -0
  736. package/lib/write-queue.js +55 -0
  737. package/package.json +360 -5
@@ -0,0 +1,78 @@
1
+ import { computeContentHash } from '../populate-ref-tables/compute-content-hash.js';
2
+ /**
3
+ * Rows sent per `INSERT INTO text_refs ... VALUES (...)` statement. Each
4
+ * row binds 2 params (hash + text) so 500 rows = 1 000 params — well
5
+ * under the SQLite variable limit.
6
+ */
7
+ const INSERT_CHUNK_SIZE = 500;
8
+ /**
9
+ * Rows sent per `SELECT ... WHERE hash IN (?, ...)` chunk on the
10
+ * post-insert read-back. Same reasoning as {@link ./resolve-text-refs.ts}.
11
+ */
12
+ const LOOKUP_CHUNK_SIZE = 800;
13
+ /**
14
+ * Upserts a set of text strings into `text_refs` and returns their ids
15
+ * (issue #193).
16
+ *
17
+ * Unlike {@link ./resolve-text-refs.ts}, which only reads, this helper
18
+ * inserts every missing string first. It exists specifically for
19
+ * `dom_path` strings, which are synthesised by the image-items populate
20
+ * ({@link ./populate-image-items.ts}) and are not among the columns the
21
+ * `text_refs` populate scans
22
+ * ({@link ../populate-ref-tables/populate-text-refs.ts}) — the caller
23
+ * cannot rely on the dictionary already containing them.
24
+ *
25
+ * Strategy:
26
+ *
27
+ * 1. **Hash and INSERT OR IGNORE** every input string in bulk. New rows
28
+ * materialise; conflicts are silently skipped.
29
+ * 2. **Read back** by hash + text (the `(hash, text)` UNIQUE composite)
30
+ * to pick up both freshly-inserted and pre-existing ids.
31
+ *
32
+ * The read-back narrows on both hash and text (same defensive shape as
33
+ * {@link ../populate-ref-tables/populate-header-tables.ts}'s `resolveValueIds`) so
34
+ * an astronomically improbable hash collision cannot leak the wrong
35
+ * id back to the caller.
36
+ *
37
+ * Empty / null strings are ignored; duplicates in `texts` are deduped
38
+ * internally.
39
+ * @param trx - Knex instance or transaction connected to the archive DB.
40
+ * @param texts - Iterable of text strings to upsert.
41
+ * @returns Map keyed by the raw text string.
42
+ * @example
43
+ * const idMap = await upsertTextRefs(trx, [
44
+ * 'html/body[1]/img[1]',
45
+ * 'unknown/42',
46
+ * ]);
47
+ */
48
+ export async function upsertTextRefs(trx, texts) {
49
+ const distinct = new Set();
50
+ for (const text of texts) {
51
+ if (typeof text === 'string' && text !== '') {
52
+ distinct.add(text);
53
+ }
54
+ }
55
+ if (distinct.size === 0) {
56
+ return new Map();
57
+ }
58
+ const values = [...distinct];
59
+ const hashes = values.map((text) => computeContentHash(text));
60
+ const inserts = values.map((text, index) => ({ hash: hashes[index], text }));
61
+ for (let index = 0; index < inserts.length; index += INSERT_CHUNK_SIZE) {
62
+ const chunk = inserts.slice(index, index + INSERT_CHUNK_SIZE);
63
+ await trx('text_refs').insert(chunk).onConflict(['hash', 'text']).ignore();
64
+ }
65
+ const result = new Map();
66
+ for (let index = 0; index < values.length; index += LOOKUP_CHUNK_SIZE) {
67
+ const chunkValues = values.slice(index, index + LOOKUP_CHUNK_SIZE);
68
+ const chunkHashes = hashes.slice(index, index + LOOKUP_CHUNK_SIZE);
69
+ const rows = await trx('text_refs')
70
+ .select('id', 'hash', 'text')
71
+ .whereIn('hash', chunkHashes)
72
+ .whereIn('text', chunkValues);
73
+ for (const row of rows) {
74
+ result.set(row.text, row.id);
75
+ }
76
+ }
77
+ return result;
78
+ }
@@ -0,0 +1,16 @@
1
+ import type { ContentTypeCategory } from './types.js';
2
+ /**
3
+ * Classifies a raw HTTP `Content-Type` header value into the same coarse
4
+ * categories used by the viewer read-model. The rule table in
5
+ * `content-type-rules.ts` is evaluated in declared order and the first
6
+ * matching rule wins (so `application/xhtml+xml` → `html` and
7
+ * `image/svg+xml` → `image`).
8
+ *
9
+ * `null` / empty / whitespace-only inputs map to `'unknown'`; MIMEs that
10
+ * fail every rule map to `'other'`. Behaviour mirrors
11
+ * `@nitpicker/query`'s `classifyContentType`; see the type header of
12
+ * `content-type-rules.ts` for the drift-warning contract.
13
+ * @param contentType - The raw `Content-Type` header value, or `null`.
14
+ * @returns The canonical category label.
15
+ */
16
+ export declare function classifyContentType(contentType: string | null): ContentTypeCategory;
@@ -0,0 +1,52 @@
1
+ import { CONTENT_TYPE_RULES } from './content-type-rules.js';
2
+ /**
3
+ * Classifies a raw HTTP `Content-Type` header value into the same coarse
4
+ * categories used by the viewer read-model. The rule table in
5
+ * `content-type-rules.ts` is evaluated in declared order and the first
6
+ * matching rule wins (so `application/xhtml+xml` → `html` and
7
+ * `image/svg+xml` → `image`).
8
+ *
9
+ * `null` / empty / whitespace-only inputs map to `'unknown'`; MIMEs that
10
+ * fail every rule map to `'other'`. Behaviour mirrors
11
+ * `@nitpicker/query`'s `classifyContentType`; see the type header of
12
+ * `content-type-rules.ts` for the drift-warning contract.
13
+ * @param contentType - The raw `Content-Type` header value, or `null`.
14
+ * @returns The canonical category label.
15
+ */
16
+ export function classifyContentType(contentType) {
17
+ if (contentType == null) {
18
+ return 'unknown';
19
+ }
20
+ const semi = contentType.indexOf(';');
21
+ const head = (semi === -1 ? contentType : contentType.slice(0, semi))
22
+ .trim()
23
+ .toLowerCase();
24
+ if (head === '') {
25
+ return 'unknown';
26
+ }
27
+ for (const rule of CONTENT_TYPE_RULES) {
28
+ for (const matcher of rule.matchers) {
29
+ switch (matcher.kind) {
30
+ case 'exact': {
31
+ if (head === matcher.value) {
32
+ return rule.category;
33
+ }
34
+ break;
35
+ }
36
+ case 'prefix': {
37
+ if (head.startsWith(matcher.value)) {
38
+ return rule.category;
39
+ }
40
+ break;
41
+ }
42
+ case 'suffix': {
43
+ if (head.endsWith(matcher.value)) {
44
+ return rule.category;
45
+ }
46
+ break;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ return 'other';
52
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Computes a 32-byte content hash for a UTF-8 string or raw byte buffer.
3
+ *
4
+ * The hash columns on `text_refs`, `json_refs`, `blob_refs`,
5
+ * `header_value_refs`, and `header_sets` use **SHA-256** rather than a
6
+ * faster candidate such as BLAKE3, for three reasons:
7
+ *
8
+ * 1. **No new dependency**. `@nitpicker/archive`'s dependency list is small
9
+ * and CLAUDE.md's supply-chain rules discourage adding a hash-only lib.
10
+ * 2. **Consistency**. `page_html_blobs.hash` — the existing content-addressable
11
+ * dictionary — is SHA-256 (see `Database.#writePageHtmlBlob`). Using the
12
+ * same algorithm keeps every content-hash column in the archive on one
13
+ * scheme.
14
+ * 3. **Column contract is length-only**. Every 0.13 hash column is typed
15
+ * `BLOB` (32 bytes when populated). SHA-256 satisfies that contract.
16
+ *
17
+ * If BLAKE3 is later required for throughput, this single function is the only
18
+ * edit point — every callsite in 0.13 routes through here.
19
+ * @param value - Value to hash. `string` inputs are encoded as UTF-8.
20
+ * @returns 32-byte hash as a `Buffer`, ready to insert into a `BLOB` column.
21
+ */
22
+ export declare function computeContentHash(value: string | Uint8Array): Buffer;
@@ -0,0 +1,26 @@
1
+ import { createHash } from 'node:crypto';
2
+ /**
3
+ * Computes a 32-byte content hash for a UTF-8 string or raw byte buffer.
4
+ *
5
+ * The hash columns on `text_refs`, `json_refs`, `blob_refs`,
6
+ * `header_value_refs`, and `header_sets` use **SHA-256** rather than a
7
+ * faster candidate such as BLAKE3, for three reasons:
8
+ *
9
+ * 1. **No new dependency**. `@nitpicker/archive`'s dependency list is small
10
+ * and CLAUDE.md's supply-chain rules discourage adding a hash-only lib.
11
+ * 2. **Consistency**. `page_html_blobs.hash` — the existing content-addressable
12
+ * dictionary — is SHA-256 (see `Database.#writePageHtmlBlob`). Using the
13
+ * same algorithm keeps every content-hash column in the archive on one
14
+ * scheme.
15
+ * 3. **Column contract is length-only**. Every 0.13 hash column is typed
16
+ * `BLOB` (32 bytes when populated). SHA-256 satisfies that contract.
17
+ *
18
+ * If BLAKE3 is later required for throughput, this single function is the only
19
+ * edit point — every callsite in 0.13 routes through here.
20
+ * @param value - Value to hash. `string` inputs are encoded as UTF-8.
21
+ * @returns 32-byte hash as a `Buffer`, ready to insert into a `BLOB` column.
22
+ */
23
+ export function computeContentHash(value) {
24
+ const bytes = typeof value === 'string' ? Buffer.from(value, 'utf8') : value;
25
+ return createHash('sha256').update(bytes).digest();
26
+ }
@@ -0,0 +1,16 @@
1
+ import type { HeaderEntry, HeaderFlagsRow } from './types.js';
2
+ /**
3
+ * Computes the {@link HeaderFlagsRow} for one decomposed header set.
4
+ *
5
+ * Each `has_*` boolean is a straight "is this name present" check on the
6
+ * decomposed entries — semantically equivalent to `checkHeaders` /
7
+ * `headerPresenceExpression` in `@nitpicker/query`, but expressed in JS
8
+ * over the already-normalized `HeaderEntry.name` (lower-cased) so no
9
+ * `LIKE` pattern is needed. This drops the JSON-key-shape false-positive
10
+ * risk that `headerPresenceExpression`'s SQL guard against (a value that
11
+ * happens to mention another header's name won't fire here because names
12
+ * come from the parsed JSON's KEYS, not from a substring scan).
13
+ * @param entries - Every decomposed entry for one `header_sets` row.
14
+ * @returns The row-shaped flags to insert into `header_flags`.
15
+ */
16
+ export declare function computeHeaderFlags(entries: readonly HeaderEntry[]): HeaderFlagsRow;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Computes the {@link HeaderFlagsRow} for one decomposed header set.
3
+ *
4
+ * Each `has_*` boolean is a straight "is this name present" check on the
5
+ * decomposed entries — semantically equivalent to `checkHeaders` /
6
+ * `headerPresenceExpression` in `@nitpicker/query`, but expressed in JS
7
+ * over the already-normalized `HeaderEntry.name` (lower-cased) so no
8
+ * `LIKE` pattern is needed. This drops the JSON-key-shape false-positive
9
+ * risk that `headerPresenceExpression`'s SQL guard against (a value that
10
+ * happens to mention another header's name won't fire here because names
11
+ * come from the parsed JSON's KEYS, not from a substring scan).
12
+ * @param entries - Every decomposed entry for one `header_sets` row.
13
+ * @returns The row-shaped flags to insert into `header_flags`.
14
+ */
15
+ export function computeHeaderFlags(entries) {
16
+ const cachePolicies = [];
17
+ let hasCsp = false;
18
+ let hasXFrameOptions = false;
19
+ let hasXContentTypeOptions = false;
20
+ let hasHsts = false;
21
+ let hasReferrerPolicy = false;
22
+ let hasPermissionsPolicy = false;
23
+ let hasSetCookie = false;
24
+ for (const entry of entries) {
25
+ switch (entry.name) {
26
+ case 'content-security-policy': {
27
+ hasCsp = true;
28
+ break;
29
+ }
30
+ case 'x-frame-options': {
31
+ hasXFrameOptions = true;
32
+ break;
33
+ }
34
+ case 'x-content-type-options': {
35
+ hasXContentTypeOptions = true;
36
+ break;
37
+ }
38
+ case 'strict-transport-security': {
39
+ hasHsts = true;
40
+ break;
41
+ }
42
+ case 'referrer-policy': {
43
+ hasReferrerPolicy = true;
44
+ break;
45
+ }
46
+ case 'permissions-policy': {
47
+ hasPermissionsPolicy = true;
48
+ break;
49
+ }
50
+ case 'set-cookie': {
51
+ hasSetCookie = true;
52
+ break;
53
+ }
54
+ case 'cache-control': {
55
+ cachePolicies.push(entry.value);
56
+ break;
57
+ }
58
+ }
59
+ }
60
+ return {
61
+ has_csp: hasCsp ? 1 : 0,
62
+ has_x_frame_options: hasXFrameOptions ? 1 : 0,
63
+ has_x_content_type_options: hasXContentTypeOptions ? 1 : 0,
64
+ has_hsts: hasHsts ? 1 : 0,
65
+ has_referrer_policy: hasReferrerPolicy ? 1 : 0,
66
+ has_permissions_policy: hasPermissionsPolicy ? 1 : 0,
67
+ has_set_cookie: hasSetCookie ? 1 : 0,
68
+ cache_policy: cachePolicies.length === 0 ? null : cachePolicies.join(', '),
69
+ };
70
+ }
@@ -0,0 +1,38 @@
1
+ import type { ContentTypeCategory } from './types.js';
2
+ /**
3
+ * Single matcher slot for a Content-Type rule. See `@nitpicker/query`'s
4
+ * `content-type-rules.ts` for the wider design discussion — this file only
5
+ * carries the subset required for JS-side classification (no SQL builders,
6
+ * which live in `@nitpicker/query`).
7
+ */
8
+ type Matcher = {
9
+ readonly kind: 'exact';
10
+ readonly value: string;
11
+ } | {
12
+ readonly kind: 'prefix';
13
+ readonly value: string;
14
+ } | {
15
+ readonly kind: 'suffix';
16
+ readonly value: string;
17
+ };
18
+ /**
19
+ * One row of the classification table: attach a category to a set of
20
+ * matchers, all of which OR together.
21
+ */
22
+ interface Rule {
23
+ readonly category: Exclude<ContentTypeCategory, 'other' | 'unknown'>;
24
+ readonly matchers: readonly Matcher[];
25
+ }
26
+ /**
27
+ * Content-Type classification rules, evaluated in array order — first match
28
+ * wins. Kept in lock-step with the source-of-truth table in
29
+ * `packages/@nitpicker/query/src/content-type-rules.ts`. Do not reorder
30
+ * without also editing the query-side copy (a drift would misroute
31
+ * `image/svg+xml` between `image` and `xml`, etc.).
32
+ *
33
+ * A future cleanup can lift the rule table into `@d-zero/shared` so both
34
+ * `@nitpicker/archive` and `@nitpicker/query` import a single source of
35
+ * truth; that migration is out of 0.13's scope.
36
+ */
37
+ export declare const CONTENT_TYPE_RULES: readonly Rule[];
38
+ export {};
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Content-Type classification rules, evaluated in array order — first match
3
+ * wins. Kept in lock-step with the source-of-truth table in
4
+ * `packages/@nitpicker/query/src/content-type-rules.ts`. Do not reorder
5
+ * without also editing the query-side copy (a drift would misroute
6
+ * `image/svg+xml` between `image` and `xml`, etc.).
7
+ *
8
+ * A future cleanup can lift the rule table into `@d-zero/shared` so both
9
+ * `@nitpicker/archive` and `@nitpicker/query` import a single source of
10
+ * truth; that migration is out of 0.13's scope.
11
+ */
12
+ export const CONTENT_TYPE_RULES = [
13
+ {
14
+ category: 'html',
15
+ matchers: [
16
+ { kind: 'exact', value: 'text/html' },
17
+ { kind: 'exact', value: 'application/xhtml+xml' },
18
+ ],
19
+ },
20
+ {
21
+ category: 'pdf',
22
+ matchers: [{ kind: 'exact', value: 'application/pdf' }],
23
+ },
24
+ {
25
+ category: 'csv',
26
+ matchers: [
27
+ { kind: 'exact', value: 'text/csv' },
28
+ { kind: 'exact', value: 'application/csv' },
29
+ { kind: 'exact', value: 'application/x-csv' },
30
+ { kind: 'exact', value: 'text/tab-separated-values' },
31
+ { kind: 'exact', value: 'text/tsv' },
32
+ ],
33
+ },
34
+ {
35
+ category: 'word',
36
+ matchers: [
37
+ { kind: 'exact', value: 'application/msword' },
38
+ {
39
+ kind: 'exact',
40
+ value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
41
+ },
42
+ ],
43
+ },
44
+ {
45
+ category: 'excel',
46
+ matchers: [
47
+ { kind: 'exact', value: 'application/vnd.ms-excel' },
48
+ {
49
+ kind: 'exact',
50
+ value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
51
+ },
52
+ ],
53
+ },
54
+ {
55
+ category: 'powerpoint',
56
+ matchers: [
57
+ { kind: 'exact', value: 'application/vnd.ms-powerpoint' },
58
+ {
59
+ kind: 'exact',
60
+ value: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
61
+ },
62
+ ],
63
+ },
64
+ {
65
+ category: 'image',
66
+ matchers: [{ kind: 'prefix', value: 'image/' }],
67
+ },
68
+ {
69
+ category: 'audio',
70
+ matchers: [{ kind: 'prefix', value: 'audio/' }],
71
+ },
72
+ {
73
+ category: 'video',
74
+ matchers: [{ kind: 'prefix', value: 'video/' }],
75
+ },
76
+ {
77
+ category: 'font',
78
+ matchers: [
79
+ { kind: 'prefix', value: 'font/' },
80
+ { kind: 'prefix', value: 'application/font-' },
81
+ { kind: 'exact', value: 'application/vnd.ms-fontobject' },
82
+ ],
83
+ },
84
+ {
85
+ category: 'css',
86
+ matchers: [{ kind: 'exact', value: 'text/css' }],
87
+ },
88
+ {
89
+ category: 'javascript',
90
+ matchers: [
91
+ { kind: 'exact', value: 'text/javascript' },
92
+ { kind: 'exact', value: 'application/javascript' },
93
+ { kind: 'exact', value: 'application/x-javascript' },
94
+ { kind: 'exact', value: 'application/ecmascript' },
95
+ ],
96
+ },
97
+ {
98
+ category: 'json',
99
+ matchers: [
100
+ { kind: 'exact', value: 'application/json' },
101
+ { kind: 'exact', value: 'application/yaml' },
102
+ { kind: 'exact', value: 'application/x-yaml' },
103
+ { kind: 'exact', value: 'text/yaml' },
104
+ { kind: 'exact', value: 'text/x-yaml' },
105
+ { kind: 'suffix', value: '+json' },
106
+ { kind: 'suffix', value: '+yaml' },
107
+ ],
108
+ },
109
+ {
110
+ category: 'xml',
111
+ matchers: [
112
+ { kind: 'exact', value: 'application/xml' },
113
+ { kind: 'exact', value: 'text/xml' },
114
+ { kind: 'suffix', value: '+xml' },
115
+ ],
116
+ },
117
+ {
118
+ category: 'archive',
119
+ matchers: [
120
+ { kind: 'exact', value: 'application/zip' },
121
+ { kind: 'exact', value: 'application/gzip' },
122
+ { kind: 'exact', value: 'application/x-gzip' },
123
+ { kind: 'exact', value: 'application/x-tar' },
124
+ { kind: 'exact', value: 'application/x-7z-compressed' },
125
+ { kind: 'exact', value: 'application/x-rar-compressed' },
126
+ { kind: 'exact', value: 'application/octet-stream' },
127
+ ],
128
+ },
129
+ {
130
+ category: 'text',
131
+ matchers: [{ kind: 'prefix', value: 'text/' }],
132
+ },
133
+ ];
@@ -0,0 +1,25 @@
1
+ import type { HeaderTableCaches } from './types.js';
2
+ import type { Knex } from 'knex';
3
+ /**
4
+ * Creates a {@link HeaderTableCaches} bundle warmed from the DB's current
5
+ * `header_name_refs` / `header_value_refs` / `header_sets` rows.
6
+ *
7
+ * Warming lets idempotent re-runs (and resumed / appended crawls against
8
+ * an archive that already holds header rows) reuse existing ids instead
9
+ * of re-issuing an upsert per entry. On a fresh archive all three tables
10
+ * are empty and the warm-up is three cheap SELECTs.
11
+ *
12
+ * The bundle is only valid for the connection (or transaction lineage)
13
+ * it was warmed against — ids observed here are stable because the
14
+ * header dictionaries are append-only, but a cache warmed on connection
15
+ * A does not see rows a concurrent writer B added. The crawler holds a
16
+ * single writer connection per archive, so this cannot occur in
17
+ * practice.
18
+ * @param trx - Knex instance or transaction connected to the archive DB.
19
+ * @returns Warmed cache bundle ready for
20
+ * {@link ./upsert-one-header-set.ts}.
21
+ * @example
22
+ * const caches = await createHeaderTableCaches(knex);
23
+ * const setId = await upsertOneHeaderSet(knex, decomposed, caches);
24
+ */
25
+ export declare function createHeaderTableCaches(trx: Knex): Promise<HeaderTableCaches>;
@@ -0,0 +1,49 @@
1
+ import { headerValueCacheKey } from './header-value-cache-key.js';
2
+ /**
3
+ * Creates a {@link HeaderTableCaches} bundle warmed from the DB's current
4
+ * `header_name_refs` / `header_value_refs` / `header_sets` rows.
5
+ *
6
+ * Warming lets idempotent re-runs (and resumed / appended crawls against
7
+ * an archive that already holds header rows) reuse existing ids instead
8
+ * of re-issuing an upsert per entry. On a fresh archive all three tables
9
+ * are empty and the warm-up is three cheap SELECTs.
10
+ *
11
+ * The bundle is only valid for the connection (or transaction lineage)
12
+ * it was warmed against — ids observed here are stable because the
13
+ * header dictionaries are append-only, but a cache warmed on connection
14
+ * A does not see rows a concurrent writer B added. The crawler holds a
15
+ * single writer connection per archive, so this cannot occur in
16
+ * practice.
17
+ * @param trx - Knex instance or transaction connected to the archive DB.
18
+ * @returns Warmed cache bundle ready for
19
+ * {@link ./upsert-one-header-set.ts}.
20
+ * @example
21
+ * const caches = await createHeaderTableCaches(knex);
22
+ * const setId = await upsertOneHeaderSet(knex, decomposed, caches);
23
+ */
24
+ export async function createHeaderTableCaches(trx) {
25
+ const nameIdCache = new Map();
26
+ const nameRows = await trx('header_name_refs').select();
27
+ for (const row of nameRows) {
28
+ nameIdCache.set(row.name, row.id);
29
+ }
30
+ const valueIdCache = new Map();
31
+ const valueRows = await trx('header_value_refs').select();
32
+ for (const row of valueRows) {
33
+ valueIdCache.set(headerValueCacheKey(Buffer.from(row.hash), row.value), row.id);
34
+ }
35
+ const setIdByRawJsonHash = new Map();
36
+ const setIdByRawHash = new Map();
37
+ const setRows = await trx('header_sets').select('id', 'raw_json_hash', 'raw_hash');
38
+ for (const row of setRows) {
39
+ setIdByRawJsonHash.set(Buffer.from(row.raw_json_hash).toString('hex'), row.id);
40
+ setIdByRawHash.set(Buffer.from(row.raw_hash).toString('hex'), row.id);
41
+ }
42
+ return {
43
+ nameIdCache,
44
+ valueIdCache,
45
+ setIdByRawJsonHash,
46
+ setIdByRawHash,
47
+ setIdsProcessedThisRun: new Set(),
48
+ };
49
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Threshold above which a `data:` URI is treated as a `blob_refs` payload
3
+ * rather than a `url_refs` URL. Shared between {@link ./populate-url-refs.ts}
4
+ * (which excludes `> LIMIT` data URIs from `url_refs`) and
5
+ * {@link ./populate-blob-refs.ts} (which routes them to `blob_refs`).
6
+ *
7
+ * The two populators MUST agree on this constant — a mismatch creates a
8
+ * routing hole where URIs of the disputed length land in neither table.
9
+ * Keeping the value here as a single-file export makes drift impossible.
10
+ *
11
+ * 512 was chosen because well-formed http(s) URLs virtually never exceed
12
+ * 512 characters in practice, while the smallest observed data URIs are
13
+ * ~600 bytes.
14
+ */
15
+ export declare const DATA_URI_URL_REFS_LIMIT = 512;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Threshold above which a `data:` URI is treated as a `blob_refs` payload
3
+ * rather than a `url_refs` URL. Shared between {@link ./populate-url-refs.ts}
4
+ * (which excludes `> LIMIT` data URIs from `url_refs`) and
5
+ * {@link ./populate-blob-refs.ts} (which routes them to `blob_refs`).
6
+ *
7
+ * The two populators MUST agree on this constant — a mismatch creates a
8
+ * routing hole where URIs of the disputed length land in neither table.
9
+ * Keeping the value here as a single-file export makes drift impossible.
10
+ *
11
+ * 512 was chosen because well-formed http(s) URLs virtually never exceed
12
+ * 512 characters in practice, while the smallest observed data URIs are
13
+ * ~600 bytes.
14
+ */
15
+ export const DATA_URI_URL_REFS_LIMIT = 512;
@@ -0,0 +1,21 @@
1
+ import type { DecodedDataUri } from './types.js';
2
+ /**
3
+ * Attempts to decode a `data:...` URI into its raw payload bytes.
4
+ *
5
+ * Supports the two encoding forms in RFC 2397:
6
+ *
7
+ * - `data:<mime>;base64,<base64-bytes>` — the base64 tail is decoded via
8
+ * `Buffer.from(..., 'base64')`.
9
+ * - `data:<mime>,<percent-encoded-bytes>` — the tail is percent-decoded
10
+ * via `decodeURIComponent(...)`, then re-encoded as UTF-8. This form is
11
+ * commonly used for SVG data URIs.
12
+ *
13
+ * Returns `null` on any parse / decode failure so the caller can skip the
14
+ * value without aborting the whole `blob_refs` population step. A single
15
+ * malformed data URI in a 470 K-row archive should not halt the migration
16
+ * — the raw `url` string is still preserved in the source `images` row.
17
+ * @param value - Raw column value; may or may not start with `data:`.
18
+ * @returns Decoded bytes, or `null` when the value isn't a data URI or
19
+ * can't be decoded.
20
+ */
21
+ export declare function decodeDataUri(value: string): DecodedDataUri | null;