@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,133 @@
1
+ import { createProgressReporter } from '../create-progress-reporter.js';
2
+ import { computeContentHash } from './compute-content-hash.js';
3
+ /**
4
+ * Number of `text_refs` rows sent per `INSERT ... VALUES (...)` statement.
5
+ * Each row binds 2 params (hash + text), so 500 rows = 1000 params — well
6
+ * under SQLite's default `SQLITE_MAX_VARIABLE_NUMBER`.
7
+ */
8
+ const INSERT_CHUNK_SIZE = 500;
9
+ /**
10
+ * Rows scanned per keyset-paginated `SELECT` chunk. One SELECT reads all
11
+ * text columns for the source table's chunk simultaneously so the pages
12
+ * table is scanned exactly once per populate call, not N-times-once-per-
13
+ * text-column.
14
+ */
15
+ const READ_CHUNK_SIZE = 5000;
16
+ /**
17
+ * Source table + its text-shaped columns. Groups by table so each table
18
+ * is scanned exactly once with a single SELECT that covers every
19
+ * relevant column — a per-column scan would run 8 separate `pages`
20
+ * scans and multiply migration wall-clock accordingly.
21
+ *
22
+ * `dom_path` is intentionally absent: dom_path strings are derived from
23
+ * the stored HTML blob, not from any column of the current write-model,
24
+ * so this scan has nothing to read. Upserting dom_path strings into
25
+ * `text_refs` is the job of the image-items populate
26
+ * (`populate-entity-tables/populate-image-items.ts`), not this pass.
27
+ */
28
+ const TEXT_SOURCES = [
29
+ { table: 'anchors', columns: ['textContent'] },
30
+ { table: 'images', columns: ['alt'] },
31
+ {
32
+ table: 'pages',
33
+ columns: [
34
+ 'title',
35
+ 'description',
36
+ 'keywords',
37
+ 'robots_raw',
38
+ 'og_title',
39
+ 'og_description',
40
+ 'twitter_title',
41
+ 'twitter_description',
42
+ ],
43
+ },
44
+ ];
45
+ /**
46
+ * Populates `text_refs` from every text-shaped column across `anchors`,
47
+ * `images`, and `pages` (issue #191).
48
+ *
49
+ * Rules:
50
+ *
51
+ * - **Content-hash dedup contract**: identical text produces one row. The
52
+ * hash is derived by {@link computeContentHash} (currently SHA-256,
53
+ * matching `page_html_blobs.hash`; see that function's docs for the
54
+ * algorithm-choice rationale).
55
+ * - **Empty and null are skipped** — an empty `<a>` tag adds no text to
56
+ * the dictionary. Anchors with no text still get an `anchor_edges` row
57
+ * in 0.13, just with `first_text_id = NULL`.
58
+ * - **INSERT OR IGNORE on (hash, text)** — the composite UNIQUE from the
59
+ * 0.13 DDL — makes the step idempotent across partial-failure
60
+ * restarts.
61
+ *
62
+ * Peak memory is bounded by the count of distinct texts (all texts are
63
+ * held in a Map before insert). On the reference archive this Map is
64
+ * about 5 MB of anchor textContent + a few MB of page meta text — well
65
+ * within the migration process budget.
66
+ * @param trx - Knex instance or transaction connected to the archive DB.
67
+ * @param onProgress - Optional sink for periodic progress lines (one per
68
+ * ~5% of each source table scanned); see {@link ../create-progress-reporter.ts}.
69
+ * @example
70
+ * await knex.transaction(async (trx) => {
71
+ * await populateTextRefs(trx);
72
+ * });
73
+ */
74
+ export async function populateTextRefs(trx, onProgress) {
75
+ const seen = new Map();
76
+ for (const source of TEXT_SOURCES) {
77
+ const hasTable = await trx.schema.hasTable(source.table);
78
+ if (!hasTable) {
79
+ continue;
80
+ }
81
+ const presentColumns = [];
82
+ for (const column of source.columns) {
83
+ if (await trx.schema.hasColumn(source.table, column)) {
84
+ presentColumns.push(column);
85
+ }
86
+ }
87
+ if (presentColumns.length === 0) {
88
+ continue;
89
+ }
90
+ const countRows = await trx(source.table).count({ n: '*' });
91
+ const total = Number(countRows[0]?.n ?? 0);
92
+ const report = createProgressReporter(`text_refs (${source.table})`, total, onProgress);
93
+ let processed = 0;
94
+ let cursor = 0;
95
+ while (true) {
96
+ const rows = await trx(source.table)
97
+ .select('id', ...presentColumns)
98
+ .where('id', '>', cursor)
99
+ .orderBy('id', 'asc')
100
+ .limit(READ_CHUNK_SIZE);
101
+ if (rows.length === 0) {
102
+ break;
103
+ }
104
+ cursor = rows.at(-1).id;
105
+ processed += rows.length;
106
+ report(processed);
107
+ for (const row of rows) {
108
+ for (const column of presentColumns) {
109
+ const value = row[column];
110
+ if (typeof value !== 'string' || value === '') {
111
+ continue;
112
+ }
113
+ const hash = computeContentHash(value);
114
+ const key = hash.toString('hex');
115
+ if (!seen.has(key)) {
116
+ seen.set(key, value);
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ if (seen.size === 0) {
123
+ return;
124
+ }
125
+ const inserts = [];
126
+ for (const [hex, text] of seen) {
127
+ inserts.push({ hash: Buffer.from(hex, 'hex'), text });
128
+ }
129
+ for (let index = 0; index < inserts.length; index += INSERT_CHUNK_SIZE) {
130
+ const chunk = inserts.slice(index, index + INSERT_CHUNK_SIZE);
131
+ await trx('text_refs').insert(chunk).onConflict(['hash', 'text']).ignore();
132
+ }
133
+ }
@@ -0,0 +1,28 @@
1
+ import type { ProgressCallback } from '../create-progress-reporter.js';
2
+ import type { Knex } from 'knex';
3
+ /**
4
+ * Populates `url_refs` from every URL-shaped column across `pages`,
5
+ * `resources`, and `images` (issue #191).
6
+ *
7
+ * Runs two passes per source table:
8
+ *
9
+ * 1. **Collect distinct URLs** into an in-process `Set<string>`, streaming
10
+ * rows from each source table by keyset pagination on `id`. All the
11
+ * table's URL columns are read in a single SELECT so the pages scan
12
+ * is O(rows), not O(rows × columns). Peak memory is bounded by the
13
+ * count of distinct URLs, not the row count.
14
+ * 2. **Bulk-insert** into `url_refs` in chunks of {@link INSERT_CHUNK_SIZE},
15
+ * with the decomposed columns (`scheme` / `host` / `port` / `path` /
16
+ * `query_hash` / `fragment`) derived in JS by {@link decomposeUrl}.
17
+ *
18
+ * `INSERT OR IGNORE` on `url_refs.url` makes the step idempotent —
19
+ * repeated invocations after partial failure only add new URLs.
20
+ * @param trx - Knex instance or transaction connected to the archive DB.
21
+ * @param onProgress - Optional sink for periodic progress lines (one per
22
+ * ~5% of each source table scanned); see {@link ../create-progress-reporter.ts}.
23
+ * @example
24
+ * await knex.transaction(async (trx) => {
25
+ * await populateUrlRefs(trx);
26
+ * });
27
+ */
28
+ export declare function populateUrlRefs(trx: Knex, onProgress?: ProgressCallback): Promise<void>;
@@ -0,0 +1,148 @@
1
+ import { createProgressReporter } from '../create-progress-reporter.js';
2
+ import { DATA_URI_URL_REFS_LIMIT } from './data-uri-url-refs-limit.js';
3
+ import { decomposeUrl } from './decompose-url.js';
4
+ /**
5
+ * Rows inserted per `INSERT INTO url_refs ... VALUES (...)` statement. Kept
6
+ * well under SQLite's `SQLITE_MAX_VARIABLE_NUMBER` (default 32766 on
7
+ * modern builds) — each row binds 7 parameters (url + scheme + host +
8
+ * port + path + query_hash + fragment), so 500 rows = 3500 params.
9
+ */
10
+ const INSERT_CHUNK_SIZE = 500;
11
+ /**
12
+ * Rows scanned per keyset-paginated `SELECT` chunk. One SELECT reads all
13
+ * URL columns for the source table's chunk simultaneously so the pages
14
+ * table is scanned exactly once per populate call, not N-times-once-
15
+ * per-URL-column — a per-column scan would multiply migration wall-clock
16
+ * by the count of URL-shaped columns.
17
+ */
18
+ const READ_CHUNK_SIZE = 5000;
19
+ /**
20
+ * Source table + its URL-shaped columns. Each column is scanned in
21
+ * lock-step per row, then filtered through
22
+ * {@link routeDataUriAwayFromUrlRefs} so large data URIs skip `url_refs`
23
+ * and route to `blob_refs` instead (handled by
24
+ * {@link ./populate-blob-refs.ts}).
25
+ *
26
+ * The filter is applied to EVERY URL column (not just image columns):
27
+ * `og:image`, `icon_href`, `apple-touch-icon`, `twitter:image`, and even
28
+ * `og:url` / `canonical` can legally hold data URIs in the wild, and a
29
+ * >512-byte data URI in any of those must land in `blob_refs`, not
30
+ * pollute the URL dictionary.
31
+ */
32
+ const URL_SOURCES = [
33
+ {
34
+ table: 'pages',
35
+ columns: [
36
+ 'url',
37
+ 'canonical',
38
+ 'og_url',
39
+ 'og_image',
40
+ 'icon_href',
41
+ 'appleTouchIcon_href',
42
+ 'amphtml',
43
+ 'manifest',
44
+ 'twitter_image',
45
+ ],
46
+ },
47
+ { table: 'resources', columns: ['url'] },
48
+ { table: 'images', columns: ['src', 'currentSrc'] },
49
+ ];
50
+ /**
51
+ * Predicate applied to every URL column value: keep the value in the
52
+ * `url_refs` stream unless it is a data URI larger than
53
+ * {@link DATA_URI_URL_REFS_LIMIT}. Large data URIs route to `blob_refs`
54
+ * instead (via {@link ./populate-blob-refs.ts}).
55
+ * @param value - Raw column value (non-null, non-empty by contract).
56
+ * @returns `true` if the value belongs in `url_refs`.
57
+ */
58
+ function routeDataUriAwayFromUrlRefs(value) {
59
+ if (!value.startsWith('data:')) {
60
+ return true;
61
+ }
62
+ return value.length <= DATA_URI_URL_REFS_LIMIT;
63
+ }
64
+ /**
65
+ * Populates `url_refs` from every URL-shaped column across `pages`,
66
+ * `resources`, and `images` (issue #191).
67
+ *
68
+ * Runs two passes per source table:
69
+ *
70
+ * 1. **Collect distinct URLs** into an in-process `Set<string>`, streaming
71
+ * rows from each source table by keyset pagination on `id`. All the
72
+ * table's URL columns are read in a single SELECT so the pages scan
73
+ * is O(rows), not O(rows × columns). Peak memory is bounded by the
74
+ * count of distinct URLs, not the row count.
75
+ * 2. **Bulk-insert** into `url_refs` in chunks of {@link INSERT_CHUNK_SIZE},
76
+ * with the decomposed columns (`scheme` / `host` / `port` / `path` /
77
+ * `query_hash` / `fragment`) derived in JS by {@link decomposeUrl}.
78
+ *
79
+ * `INSERT OR IGNORE` on `url_refs.url` makes the step idempotent —
80
+ * repeated invocations after partial failure only add new URLs.
81
+ * @param trx - Knex instance or transaction connected to the archive DB.
82
+ * @param onProgress - Optional sink for periodic progress lines (one per
83
+ * ~5% of each source table scanned); see {@link ../create-progress-reporter.ts}.
84
+ * @example
85
+ * await knex.transaction(async (trx) => {
86
+ * await populateUrlRefs(trx);
87
+ * });
88
+ */
89
+ export async function populateUrlRefs(trx, onProgress) {
90
+ const seen = new Set();
91
+ for (const source of URL_SOURCES) {
92
+ const hasTable = await trx.schema.hasTable(source.table);
93
+ if (!hasTable) {
94
+ continue;
95
+ }
96
+ const presentColumns = [];
97
+ for (const column of source.columns) {
98
+ if (await trx.schema.hasColumn(source.table, column)) {
99
+ presentColumns.push(column);
100
+ }
101
+ }
102
+ if (presentColumns.length === 0) {
103
+ continue;
104
+ }
105
+ const countRows = await trx(source.table).count({ n: '*' });
106
+ const total = Number(countRows[0]?.n ?? 0);
107
+ const report = createProgressReporter(`url_refs (${source.table})`, total, onProgress);
108
+ let processed = 0;
109
+ let cursor = 0;
110
+ while (true) {
111
+ const rows = await trx(source.table)
112
+ .select('id', ...presentColumns)
113
+ .where('id', '>', cursor)
114
+ .orderBy('id', 'asc')
115
+ .limit(READ_CHUNK_SIZE);
116
+ if (rows.length === 0) {
117
+ break;
118
+ }
119
+ cursor = rows.at(-1).id;
120
+ processed += rows.length;
121
+ report(processed);
122
+ for (const row of rows) {
123
+ for (const column of presentColumns) {
124
+ const value = row[column];
125
+ if (typeof value !== 'string' || value === '') {
126
+ continue;
127
+ }
128
+ if (!routeDataUriAwayFromUrlRefs(value)) {
129
+ continue;
130
+ }
131
+ seen.add(value);
132
+ }
133
+ }
134
+ }
135
+ }
136
+ if (seen.size === 0) {
137
+ return;
138
+ }
139
+ const inserts = [];
140
+ for (const url of seen) {
141
+ const decomposed = decomposeUrl(url);
142
+ inserts.push({ url, ...decomposed });
143
+ }
144
+ for (let index = 0; index < inserts.length; index += INSERT_CHUNK_SIZE) {
145
+ const chunk = inserts.slice(index, index + INSERT_CHUNK_SIZE);
146
+ await trx('url_refs').insert(chunk).onConflict('url').ignore();
147
+ }
148
+ }
@@ -0,0 +1,15 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Runs `SELECT count(?) FROM <table>` and returns the count as a plain
4
+ * JS number. Exists purely to keep spec files inside populate-ref-tables/ compliant
5
+ * with `unicorn/no-await-expression-member` — inlining
6
+ * `Number((await db(t).count(...))[0]!.n)` reads fine but violates the
7
+ * rule at every callsite.
8
+ * @param db - Knex instance (typically a spec-local in-memory DB).
9
+ * @param table - Table name.
10
+ * @param countColumn - Column to count; defaults to `'id'` because every
11
+ * populate-refs table except `header_set_entries` / `header_flags` uses
12
+ * that PK name. Pass `'header_set_id'` for the two exceptions.
13
+ * @returns Row count.
14
+ */
15
+ export declare function countRows(db: Knex, table: string, countColumn?: string): Promise<number>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Runs `SELECT count(?) FROM <table>` and returns the count as a plain
3
+ * JS number. Exists purely to keep spec files inside populate-ref-tables/ compliant
4
+ * with `unicorn/no-await-expression-member` — inlining
5
+ * `Number((await db(t).count(...))[0]!.n)` reads fine but violates the
6
+ * rule at every callsite.
7
+ * @param db - Knex instance (typically a spec-local in-memory DB).
8
+ * @param table - Table name.
9
+ * @param countColumn - Column to count; defaults to `'id'` because every
10
+ * populate-refs table except `header_set_entries` / `header_flags` uses
11
+ * that PK name. Pass `'header_set_id'` for the two exceptions.
12
+ * @returns Row count.
13
+ */
14
+ export async function countRows(db, table, countColumn = 'id') {
15
+ const rows = await db(table).count({ n: countColumn });
16
+ return Number(rows[0].n);
17
+ }
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Domain types for the 0.13 population step (issue #191). Every
3
+ * shared interface / type alias lives here per the repo-wide
4
+ * `型は types.ts に集約` rule; implementation modules export functions
5
+ * only.
6
+ */
7
+ /**
8
+ * Decomposed URL components that populate `url_refs.{scheme,host,port,path,
9
+ * query_hash,fragment}`. All slots are populated in a single pass over the
10
+ * `url` string so callers do not have to re-parse per column.
11
+ */
12
+ export interface DecomposedUrl {
13
+ /**
14
+ * URL scheme without the trailing colon (`https`, `http`, `mailto`, ...).
15
+ * `null` for URLs that fail `new URL(...)` parsing.
16
+ */
17
+ scheme: string | null;
18
+ /**
19
+ * Host lower-cased (`www.example.com`). `null` when the URL has no
20
+ * `authority` component (e.g. `mailto:`, `data:`, `javascript:`), and
21
+ * `null` on parse failure.
22
+ */
23
+ host: string | null;
24
+ /**
25
+ * TCP port when explicit in the URL; `null` when the URL uses the
26
+ * scheme default (WHATWG URL normalises default ports away — we do NOT
27
+ * synthesise a default here because two rows differing only by explicit
28
+ * vs implicit `:443` should hash to the same URL, and `url_refs.url` is
29
+ * the natural key, not this column).
30
+ */
31
+ port: number | null;
32
+ /**
33
+ * Path portion (`/foo/bar`). `null` when the URL has no path or the
34
+ * URL uses an opaque scheme whose "pathname" is really an in-band
35
+ * payload (`data:`, `blob:`, `javascript:`) — see
36
+ * {@link ./decompose-url.ts} for the opaque-scheme handling.
37
+ */
38
+ path: string | null;
39
+ /**
40
+ * 32-byte content hash of the raw query string exactly as it appears in
41
+ * the URL (`?a=1&b=2` — the leading `?` is stripped before hashing).
42
+ * `null` when the URL has no query string, when the query string is
43
+ * empty, or on parse failure.
44
+ *
45
+ * Storing the raw query would defeat dedup on tracker URLs whose
46
+ * per-request query keys blow up dictionary size; the hash retains the
47
+ * same-URL-⇒-same-row property without the payload.
48
+ */
49
+ query_hash: Buffer | null;
50
+ /**
51
+ * Fragment (`#section-2`) with the leading `#` stripped. `null` when
52
+ * the URL has no fragment or on parse failure.
53
+ */
54
+ fragment: string | null;
55
+ }
56
+ /**
57
+ * Successful decode of a `data:` URI: the raw payload bytes.
58
+ */
59
+ export interface DecodedDataUri {
60
+ /** Payload bytes after base64 or percent-decoding. */
61
+ bytes: Buffer;
62
+ }
63
+ /**
64
+ * One header entry after decomposition — flattened out of the parsed JSON
65
+ * `Record<name, string | string[]>` so that:
66
+ *
67
+ * - Multiple values for the same name (e.g. two `Set-Cookie` lines) each
68
+ * get their own entry with a distinct `occurrence` ordinal starting at 1.
69
+ * - `isVolatile` is pre-computed once per entry (rather than re-looked-up
70
+ * at hash time) so both `stableHash` and the `header_set_entries`
71
+ * inserts see identical classification.
72
+ */
73
+ export interface HeaderEntry {
74
+ /** Lower-cased header name; comparison and dedup keys always use this form. */
75
+ name: string;
76
+ /** Raw header value (each element of `string[]` inputs becomes one entry). */
77
+ value: string;
78
+ /**
79
+ * 1-based ordinal among entries sharing the same `name` within one
80
+ * response. Always `1` for single-value headers; ≥ 2 when a name
81
+ * repeats (e.g. multiple `Set-Cookie` lines).
82
+ */
83
+ occurrence: number;
84
+ /** Pre-computed volatility. */
85
+ isVolatile: boolean;
86
+ }
87
+ /**
88
+ * Result of decomposing one raw `responseHeaders` JSON string into the
89
+ * shape required for `header_sets`, `header_set_entries`, and
90
+ * `header_flags` inserts. `null` results from the decompose helper
91
+ * indicate "no header set to insert" (null / `{}` / parse failure);
92
+ * callers write `header_set_id = null` to the referring row.
93
+ */
94
+ export interface DecomposedHeaderSet {
95
+ /**
96
+ * 32-byte hash of the raw JSON string exactly as stored on the source
97
+ * row. Populates `header_sets.raw_json_hash` — a temporary column used
98
+ * by the 0.13 lookup to map an old `pages.responseHeaders` /
99
+ * `resources.responseHeaders` value back to its `header_sets.id`
100
+ * without any SQL function call.
101
+ */
102
+ rawJsonHash: Buffer;
103
+ /**
104
+ * 32-byte hash of the sorted `name=value` pairs of **all** entries
105
+ * (stable + volatile). Populates `header_sets.raw_hash` — a UNIQUE
106
+ * column so a JS-side upsert can dedup on identical decoded sets.
107
+ */
108
+ rawHash: Buffer;
109
+ /**
110
+ * 32-byte hash of the sorted `name=value` pairs of stable entries
111
+ * only. Populates `header_sets.stable_hash` — indexed so 0.13
112
+ * readers can answer "how many responses share this stable header
113
+ * profile" without scanning every entry.
114
+ */
115
+ stableHash: Buffer;
116
+ /**
117
+ * 32-byte hash of the sorted `name=value` pairs of volatile entries
118
+ * only, or `null` when the set has no volatile entries. Populates
119
+ * `header_sets.volatile_hash`.
120
+ */
121
+ volatileHash: Buffer | null;
122
+ /** Every decomposed entry, ordered by (name, occurrence). */
123
+ entries: readonly HeaderEntry[];
124
+ /** Total entry count — matches `header_sets.entry_count`. */
125
+ entryCount: number;
126
+ /**
127
+ * Number of stable entries — matches `header_sets.stable_entry_count`.
128
+ * `volatile_entry_count` is derived as `entry_count - stable_entry_count`
129
+ * and not stored separately.
130
+ */
131
+ stableEntryCount: number;
132
+ }
133
+ /**
134
+ * Shape written into `header_flags` for one `header_set_id`. `has_*`
135
+ * columns are `INTEGER NOT NULL` (0/1) per the 0.13 DDL;
136
+ * `cache_policy` is nullable and holds a compact summary of the
137
+ * `Cache-Control` value (or `null` when absent).
138
+ */
139
+ export interface HeaderFlagsRow {
140
+ /** `1` when at least one entry's name equals `content-security-policy`. */
141
+ has_csp: 0 | 1;
142
+ /** `1` when at least one entry's name equals `x-frame-options`. */
143
+ has_x_frame_options: 0 | 1;
144
+ /** `1` when at least one entry's name equals `x-content-type-options`. */
145
+ has_x_content_type_options: 0 | 1;
146
+ /** `1` when at least one entry's name equals `strict-transport-security`. */
147
+ has_hsts: 0 | 1;
148
+ /** `1` when at least one entry's name equals `referrer-policy`. */
149
+ has_referrer_policy: 0 | 1;
150
+ /** `1` when at least one entry's name equals `permissions-policy`. */
151
+ has_permissions_policy: 0 | 1;
152
+ /** `1` when at least one entry's name equals `set-cookie`. */
153
+ has_set_cookie: 0 | 1;
154
+ /**
155
+ * The `cache-control` value, verbatim, when present; `null` when
156
+ * absent. Multi-value `Cache-Control` headers are joined with `, ` so
157
+ * the summary captures every directive without losing per-occurrence
158
+ * context.
159
+ */
160
+ cache_policy: string | null;
161
+ }
162
+ /**
163
+ * In-process caches shared by every header-table upsert against one
164
+ * archive connection. The three id-maps resolve `header_name_refs.id` /
165
+ * `header_value_refs.id` / `header_sets.id` without hitting the DB once
166
+ * a value has been seen (or preloaded from existing rows).
167
+ *
168
+ * `setIdsProcessedThisRun` tracks the subset of `setIdByRawJsonHash` /
169
+ * `setIdByRawHash` that the current process has already written
170
+ * entries + flags for. A preloaded id from a prior run is present in the
171
+ * id caches but NOT in this set — so the entries + flags inserts still
172
+ * run once (safe under `INSERT OR IGNORE`) to repair any missing rows
173
+ * left by a crashed writer. Once entries + flags for a given setId have
174
+ * been written this run, the shortcut skips redundant no-op inserts.
175
+ */
176
+ export interface HeaderTableCaches {
177
+ /** `lower-cased name → header_name_refs.id`. */
178
+ readonly nameIdCache: Map<string, number>;
179
+ /** `hexHash|value → header_value_refs.id`. */
180
+ readonly valueIdCache: Map<string, number>;
181
+ /** `hex(raw_json_hash) → header_sets.id`. */
182
+ readonly setIdByRawJsonHash: Map<string, number>;
183
+ /** `hex(raw_hash) → header_sets.id`. */
184
+ readonly setIdByRawHash: Map<string, number>;
185
+ /** `header_sets.id` values already fully processed by this process. */
186
+ readonly setIdsProcessedThisRun: Set<number>;
187
+ }
188
+ /**
189
+ * Category label attached to each content-type rule. Mirrors the union
190
+ * `ContentTypeCategory` in `@nitpicker/query/src/types.ts` — kept as a
191
+ * plain string literal here so `@nitpicker/archive`'s 0.13 step
192
+ * does not need to depend on `@nitpicker/query` (which itself depends
193
+ * on this package). If the two copies drift, `classify-content-type.spec.ts`
194
+ * here and `content-type-rules.spec.ts` on the query side will disagree
195
+ * on the same fixture.
196
+ */
197
+ export type ContentTypeCategory = 'html' | 'pdf' | 'csv' | 'word' | 'excel' | 'powerpoint' | 'image' | 'audio' | 'video' | 'font' | 'css' | 'javascript' | 'json' | 'xml' | 'archive' | 'text' | 'other' | 'unknown';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Domain types for the 0.13 population step (issue #191). Every
3
+ * shared interface / type alias lives here per the repo-wide
4
+ * `型は types.ts に集約` rule; implementation modules export functions
5
+ * only.
6
+ */
7
+ export {};
@@ -0,0 +1,34 @@
1
+ import type { DecomposedHeaderSet, HeaderTableCaches } from './types.js';
2
+ import type { Knex } from 'knex';
3
+ /**
4
+ * Upserts one decomposed header set and its entries + flags, returning
5
+ * the `header_sets.id`. Shared by the bulk archive populate
6
+ * ({@link ./populate-header-tables.ts}) and the crawler's per-response
7
+ * write path, so both produce byte-identical header rows for the same
8
+ * raw `responseHeaders` value.
9
+ *
10
+ * Set-id resolution order:
11
+ *
12
+ * 1. `raw_json_hash` cache — same JSON key ordering as a previous row.
13
+ * 2. `raw_hash` cache — same sorted-entries identity, different JSON key
14
+ * ordering. This branch links the new `raw_json_hash` to the existing
15
+ * setId in the in-process map so subsequent same-JSON hits fast-path.
16
+ * 3. Otherwise INSERT a new `header_sets` row.
17
+ *
18
+ * Entries + flags are inserted once per `setId` per process (guarded by
19
+ * `setIdsProcessedThisRun`); already-inserted rows short-circuit
20
+ * cheaply, and preloaded-but-unprocessed setIds (partial prior run) get
21
+ * their entries / flags repaired via `INSERT OR IGNORE`.
22
+ * @param trx - Knex instance or transaction connected to the archive DB.
23
+ * @param decomposed - Result of `decomposeHeaderSet` (never `null` — the
24
+ * caller short-circuits null decompositions to `header_set_id = null`).
25
+ * @param caches - The in-process caches, mutated in place. Create via
26
+ * {@link ./create-header-table-caches.ts}.
27
+ * @returns The `header_sets.id` for this set.
28
+ * @example
29
+ * const decomposed = decomposeHeaderSet(rawJson);
30
+ * if (decomposed !== null) {
31
+ * const setId = await upsertOneHeaderSet(knex, decomposed, caches);
32
+ * }
33
+ */
34
+ export declare function upsertOneHeaderSet(trx: Knex, decomposed: DecomposedHeaderSet, caches: HeaderTableCaches): Promise<number>;