@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.
- package/LICENSE +191 -0
- package/README.md +106 -0
- package/lib/apply-connection-pragmas.d.ts +18 -0
- package/lib/apply-connection-pragmas.js +40 -0
- package/lib/archive-accessor.d.ts +265 -0
- package/lib/archive-accessor.js +477 -0
- package/lib/archive-lock.d.ts +45 -0
- package/lib/archive-lock.js +154 -0
- package/lib/archive.d.ts +736 -0
- package/lib/archive.js +1055 -0
- package/lib/body-hash/compute-body-hash.d.ts +32 -0
- package/lib/body-hash/compute-body-hash.js +35 -0
- package/lib/cache/clear-archive-cache-entry.d.ts +18 -0
- package/lib/cache/clear-archive-cache-entry.js +24 -0
- package/lib/cache/clear-archive-cache-root.d.ts +26 -0
- package/lib/cache/clear-archive-cache-root.js +32 -0
- package/lib/cache/compute-archive-cache-key.d.ts +39 -0
- package/lib/cache/compute-archive-cache-key.js +95 -0
- package/lib/cache/extract-archive-to-cache.d.ts +57 -0
- package/lib/cache/extract-archive-to-cache.js +326 -0
- package/lib/cache/get-archive-cache-root.d.ts +20 -0
- package/lib/cache/get-archive-cache-root.js +53 -0
- package/lib/cache/is-archive-cache-disabled.d.ts +24 -0
- package/lib/cache/is-archive-cache-disabled.js +34 -0
- package/lib/cache/list-archive-cache-entries.d.ts +23 -0
- package/lib/cache/list-archive-cache-entries.js +130 -0
- package/lib/cache/path-exists.d.ts +9 -0
- package/lib/cache/path-exists.js +18 -0
- package/lib/cache/resolve-archive-cache-dir.d.ts +26 -0
- package/lib/cache/resolve-archive-cache-dir.js +32 -0
- package/lib/cache/types.d.ts +33 -0
- package/lib/cache/types.js +1 -0
- package/lib/content-type/is-html-content-type.d.ts +17 -0
- package/lib/content-type/is-html-content-type.js +19 -0
- package/lib/content-type/normalize-content-type.d.ts +14 -0
- package/lib/content-type/normalize-content-type.js +20 -0
- package/lib/create-adjunct-tables.d.ts +66 -0
- package/lib/create-adjunct-tables.js +510 -0
- package/lib/create-entity-tables.d.ts +191 -0
- package/lib/create-entity-tables.js +387 -0
- package/lib/create-progress-reporter.d.ts +30 -0
- package/lib/create-progress-reporter.js +38 -0
- package/lib/create-ref-tables.d.ts +35 -0
- package/lib/create-ref-tables.js +185 -0
- package/lib/create-template-tables.d.ts +28 -0
- package/lib/create-template-tables.js +92 -0
- package/lib/database.d.ts +549 -0
- package/lib/database.js +803 -0
- package/lib/db-ops/_shared/clear-write-ref-caches.d.ts +27 -0
- package/lib/db-ops/_shared/clear-write-ref-caches.js +35 -0
- package/lib/db-ops/_shared/compress-payload.d.ts +26 -0
- package/lib/db-ops/_shared/compress-payload.js +30 -0
- package/lib/db-ops/_shared/create-write-ref-caches.d.ts +17 -0
- package/lib/db-ops/_shared/create-write-ref-caches.js +27 -0
- package/lib/db-ops/_shared/decode-json-ref.d.ts +17 -0
- package/lib/db-ops/_shared/decode-json-ref.js +31 -0
- package/lib/db-ops/_shared/keyset-paginate-by-id.d.ts +49 -0
- package/lib/db-ops/_shared/keyset-paginate-by-id.js +69 -0
- package/lib/db-ops/_shared/load-response-headers-by-set-ids.d.ts +20 -0
- package/lib/db-ops/_shared/load-response-headers-by-set-ids.js +53 -0
- package/lib/db-ops/_shared/resolve-content-item-id.d.ts +62 -0
- package/lib/db-ops/_shared/resolve-content-item-id.js +143 -0
- package/lib/db-ops/_shared/resolve-url-or-blob.d.ts +23 -0
- package/lib/db-ops/_shared/resolve-url-or-blob.js +29 -0
- package/lib/db-ops/_shared/retry-setting.d.ts +16 -0
- package/lib/db-ops/_shared/retry-setting.js +18 -0
- package/lib/db-ops/_shared/safe-parse-json.d.ts +11 -0
- package/lib/db-ops/_shared/safe-parse-json.js +18 -0
- package/lib/db-ops/_shared/types.d.ts +94 -0
- package/lib/db-ops/_shared/types.js +1 -0
- package/lib/db-ops/_shared/upsert-blob-ref.d.ts +25 -0
- package/lib/db-ops/_shared/upsert-blob-ref.js +48 -0
- package/lib/db-ops/_shared/upsert-content-type-ref.d.ts +30 -0
- package/lib/db-ops/_shared/upsert-content-type-ref.js +45 -0
- package/lib/db-ops/_shared/upsert-json-ref.d.ts +22 -0
- package/lib/db-ops/_shared/upsert-json-ref.js +41 -0
- package/lib/db-ops/_shared/upsert-response-headers.d.ts +35 -0
- package/lib/db-ops/_shared/upsert-response-headers.js +49 -0
- package/lib/db-ops/_shared/upsert-url-ref.d.ts +39 -0
- package/lib/db-ops/_shared/upsert-url-ref.js +62 -0
- package/lib/db-ops/anchors/get-anchors-on-page.d.ts +10 -0
- package/lib/db-ops/anchors/get-anchors-on-page.js +21 -0
- package/lib/db-ops/config/get-base-url.d.ts +8 -0
- package/lib/db-ops/config/get-base-url.js +14 -0
- package/lib/db-ops/config/get-config.d.ts +10 -0
- package/lib/db-ops/config/get-config.js +29 -0
- package/lib/db-ops/config/get-created-cwd.d.ts +11 -0
- package/lib/db-ops/config/get-created-cwd.js +13 -0
- package/lib/db-ops/config/get-name.d.ts +8 -0
- package/lib/db-ops/config/get-name.js +14 -0
- package/lib/db-ops/config/info-column-allowlist.d.ts +7 -0
- package/lib/db-ops/config/info-column-allowlist.js +29 -0
- package/lib/db-ops/config/info-json-columns.d.ts +5 -0
- package/lib/db-ops/config/info-json-columns.js +11 -0
- package/lib/db-ops/config/set-config.d.ts +12 -0
- package/lib/db-ops/config/set-config.js +21 -0
- package/lib/db-ops/config/update-config.d.ts +17 -0
- package/lib/db-ops/config/update-config.js +36 -0
- package/lib/db-ops/console-logs/compute-console-log-hash.d.ts +19 -0
- package/lib/db-ops/console-logs/compute-console-log-hash.js +30 -0
- package/lib/db-ops/console-logs/replace-console-logs.d.ts +34 -0
- package/lib/db-ops/console-logs/replace-console-logs.js +123 -0
- package/lib/db-ops/console-logs/stringify-console-log-args.d.ts +16 -0
- package/lib/db-ops/console-logs/stringify-console-log-args.js +26 -0
- package/lib/db-ops/console-logs/types.d.ts +38 -0
- package/lib/db-ops/console-logs/types.js +1 -0
- package/lib/db-ops/console-logs/upsert-console-log-item.d.ts +29 -0
- package/lib/db-ops/console-logs/upsert-console-log-item.js +52 -0
- package/lib/db-ops/dedupe-cap/accumulate-dedupe-cap-rejected-count.d.ts +18 -0
- package/lib/db-ops/dedupe-cap/accumulate-dedupe-cap-rejected-count.js +23 -0
- package/lib/db-ops/dedupe-cap/finalize-dedupe-cap-event.d.ts +12 -0
- package/lib/db-ops/dedupe-cap/finalize-dedupe-cap-event.js +15 -0
- package/lib/db-ops/dedupe-cap/insert-dedupe-cap-event.d.ts +14 -0
- package/lib/db-ops/dedupe-cap/insert-dedupe-cap-event.js +30 -0
- package/lib/db-ops/dedupe-cap/list-dedupe-cap-observations.d.ts +57 -0
- package/lib/db-ops/dedupe-cap/list-dedupe-cap-observations.js +87 -0
- package/lib/db-ops/dedupe-cap/list-dedupe-cap-shape-keys.d.ts +21 -0
- package/lib/db-ops/dedupe-cap/list-dedupe-cap-shape-keys.js +27 -0
- package/lib/db-ops/errors/insert-crawl-error.d.ts +15 -0
- package/lib/db-ops/errors/insert-crawl-error.js +21 -0
- package/lib/db-ops/errors/insert-page-error.d.ts +21 -0
- package/lib/db-ops/errors/insert-page-error.js +30 -0
- package/lib/db-ops/errors/list-dns-burned-host-candidates.d.ts +33 -0
- package/lib/db-ops/errors/list-dns-burned-host-candidates.js +158 -0
- package/lib/db-ops/html/read-page-html-blob.d.ts +17 -0
- package/lib/db-ops/html/read-page-html-blob.js +20 -0
- package/lib/db-ops/lifecycle/checkpoint.d.ts +8 -0
- package/lib/db-ops/lifecycle/checkpoint.js +9 -0
- package/lib/db-ops/lifecycle/destroy.d.ts +6 -0
- package/lib/db-ops/lifecycle/destroy.js +7 -0
- package/lib/db-ops/lifecycle/init.d.ts +58 -0
- package/lib/db-ops/lifecycle/init.js +122 -0
- package/lib/db-ops/list-reconcile/record-list-reconcile-run.d.ts +22 -0
- package/lib/db-ops/list-reconcile/record-list-reconcile-run.js +41 -0
- package/lib/db-ops/meta/get-audios-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-audios-of-page.js +15 -0
- package/lib/db-ops/meta/get-buttons-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-buttons-of-page.js +15 -0
- package/lib/db-ops/meta/get-canvases-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-canvases-of-page.js +15 -0
- package/lib/db-ops/meta/get-custom-elements-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-custom-elements-of-page.js +15 -0
- package/lib/db-ops/meta/get-headings-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-headings-of-page.js +15 -0
- package/lib/db-ops/meta/get-iframes-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-iframes-of-page.js +15 -0
- package/lib/db-ops/meta/get-jsonld-of-page.d.ts +13 -0
- package/lib/db-ops/meta/get-jsonld-of-page.js +27 -0
- package/lib/db-ops/meta/get-main-content-images-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-main-content-images-of-page.js +15 -0
- package/lib/db-ops/meta/get-main-content-tables-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-main-content-tables-of-page.js +15 -0
- package/lib/db-ops/meta/get-page-technologies-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-page-technologies-of-page.js +15 -0
- package/lib/db-ops/meta/get-technology-signals-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-technology-signals-of-page.js +15 -0
- package/lib/db-ops/meta/get-videos-of-page.d.ts +11 -0
- package/lib/db-ops/meta/get-videos-of-page.js +15 -0
- package/lib/db-ops/outages/close-network-outage.d.ts +12 -0
- package/lib/db-ops/outages/close-network-outage.js +15 -0
- package/lib/db-ops/outages/close-stale-open-network-outages.d.ts +26 -0
- package/lib/db-ops/outages/close-stale-open-network-outages.js +42 -0
- package/lib/db-ops/outages/compute-outage-clamp-timestamp.d.ts +26 -0
- package/lib/db-ops/outages/compute-outage-clamp-timestamp.js +31 -0
- package/lib/db-ops/outages/insert-network-outage.d.ts +14 -0
- package/lib/db-ops/outages/insert-network-outage.js +29 -0
- package/lib/db-ops/outages/list-network-outages.d.ts +28 -0
- package/lib/db-ops/outages/list-network-outages.js +42 -0
- package/lib/db-ops/pages/order/set-url-order.d.ts +13 -0
- package/lib/db-ops/pages/order/set-url-order.js +38 -0
- package/lib/db-ops/pages/read/build-page-query.d.ts +18 -0
- package/lib/db-ops/pages/read/build-page-query.js +40 -0
- package/lib/db-ops/pages/read/get-crawling-state.d.ts +117 -0
- package/lib/db-ops/pages/read/get-crawling-state.js +161 -0
- package/lib/db-ops/pages/read/get-existing-page-urls.d.ts +15 -0
- package/lib/db-ops/pages/read/get-existing-page-urls.js +30 -0
- package/lib/db-ops/pages/read/get-page-count.d.ts +12 -0
- package/lib/db-ops/pages/read/get-page-count.js +21 -0
- package/lib/db-ops/pages/read/get-page-source-by-url.d.ts +24 -0
- package/lib/db-ops/pages/read/get-page-source-by-url.js +28 -0
- package/lib/db-ops/pages/read/get-pages-with-rels.d.ts +38 -0
- package/lib/db-ops/pages/read/get-pages-with-rels.js +107 -0
- package/lib/db-ops/pages/read/get-pages.d.ts +11 -0
- package/lib/db-ops/pages/read/get-pages.js +51 -0
- package/lib/db-ops/pages/read/get-scraped-html-page-count.d.ts +18 -0
- package/lib/db-ops/pages/read/get-scraped-html-page-count.js +25 -0
- package/lib/db-ops/pages/read/reconstruct-page-rows.d.ts +31 -0
- package/lib/db-ops/pages/read/reconstruct-page-rows.js +32 -0
- package/lib/db-ops/pages/reset/clear-page-derived-rows.d.ts +20 -0
- package/lib/db-ops/pages/reset/clear-page-derived-rows.js +37 -0
- package/lib/db-ops/pages/reset/repromote-external-pages.d.ts +30 -0
- package/lib/db-ops/pages/reset/repromote-external-pages.js +91 -0
- package/lib/db-ops/pages/reset/reset-failed-pages.d.ts +88 -0
- package/lib/db-ops/pages/reset/reset-failed-pages.js +216 -0
- package/lib/db-ops/pages/reset/reset-pages-by-urls.d.ts +80 -0
- package/lib/db-ops/pages/reset/reset-pages-by-urls.js +151 -0
- package/lib/db-ops/pages/reset/retryable-image-scan-codes.d.ts +24 -0
- package/lib/db-ops/pages/reset/retryable-image-scan-codes.js +24 -0
- package/lib/db-ops/pages/write/insert-audios.d.ts +14 -0
- package/lib/db-ops/pages/write/insert-audios.js +25 -0
- package/lib/db-ops/pages/write/insert-buttons.d.ts +14 -0
- package/lib/db-ops/pages/write/insert-buttons.js +29 -0
- package/lib/db-ops/pages/write/insert-canvases.d.ts +14 -0
- package/lib/db-ops/pages/write/insert-canvases.js +26 -0
- package/lib/db-ops/pages/write/insert-custom-elements.d.ts +27 -0
- package/lib/db-ops/pages/write/insert-custom-elements.js +40 -0
- package/lib/db-ops/pages/write/insert-headings.d.ts +15 -0
- package/lib/db-ops/pages/write/insert-headings.js +27 -0
- package/lib/db-ops/pages/write/insert-iframes.d.ts +14 -0
- package/lib/db-ops/pages/write/insert-iframes.js +28 -0
- package/lib/db-ops/pages/write/insert-inventory-content-items.d.ts +38 -0
- package/lib/db-ops/pages/write/insert-inventory-content-items.js +60 -0
- package/lib/db-ops/pages/write/insert-inventory-seeds.d.ts +36 -0
- package/lib/db-ops/pages/write/insert-inventory-seeds.js +48 -0
- package/lib/db-ops/pages/write/insert-inventory-skipped-pages.d.ts +42 -0
- package/lib/db-ops/pages/write/insert-inventory-skipped-pages.js +56 -0
- package/lib/db-ops/pages/write/insert-jsonld.d.ts +17 -0
- package/lib/db-ops/pages/write/insert-jsonld.js +49 -0
- package/lib/db-ops/pages/write/insert-main-content-images.d.ts +20 -0
- package/lib/db-ops/pages/write/insert-main-content-images.js +32 -0
- package/lib/db-ops/pages/write/insert-main-content-tables.d.ts +14 -0
- package/lib/db-ops/pages/write/insert-main-content-tables.js +29 -0
- package/lib/db-ops/pages/write/insert-page.d.ts +56 -0
- package/lib/db-ops/pages/write/insert-page.js +259 -0
- package/lib/db-ops/pages/write/insert-technologies.d.ts +25 -0
- package/lib/db-ops/pages/write/insert-technologies.js +45 -0
- package/lib/db-ops/pages/write/insert-videos.d.ts +14 -0
- package/lib/db-ops/pages/write/insert-videos.js +28 -0
- package/lib/db-ops/pages/write/link-redirect-sources.d.ts +42 -0
- package/lib/db-ops/pages/write/link-redirect-sources.js +101 -0
- package/lib/db-ops/pages/write/record-redirect.d.ts +35 -0
- package/lib/db-ops/pages/write/record-redirect.js +100 -0
- package/lib/db-ops/pages/write/set-skipped-page.d.ts +13 -0
- package/lib/db-ops/pages/write/set-skipped-page.js +24 -0
- package/lib/db-ops/pages/write/update-page.d.ts +40 -0
- package/lib/db-ops/pages/write/update-page.js +419 -0
- package/lib/db-ops/pages/write/write-page-html-blob.d.ts +19 -0
- package/lib/db-ops/pages/write/write-page-html-blob.js +41 -0
- package/lib/db-ops/referrers/get-redirects-for-pages.d.ts +9 -0
- package/lib/db-ops/referrers/get-redirects-for-pages.js +15 -0
- package/lib/db-ops/referrers/get-referrers-of-page.d.ts +17 -0
- package/lib/db-ops/referrers/get-referrers-of-page.js +32 -0
- package/lib/db-ops/referrers/get-referrers-of-resource.d.ts +8 -0
- package/lib/db-ops/referrers/get-referrers-of-resource.js +15 -0
- package/lib/db-ops/resources/build-resource-query.d.ts +25 -0
- package/lib/db-ops/resources/build-resource-query.js +29 -0
- package/lib/db-ops/resources/get-existing-resource-urls.d.ts +9 -0
- package/lib/db-ops/resources/get-existing-resource-urls.js +24 -0
- package/lib/db-ops/resources/get-resource-by-url.d.ts +13 -0
- package/lib/db-ops/resources/get-resource-by-url.js +22 -0
- package/lib/db-ops/resources/get-resource-url-list.d.ts +17 -0
- package/lib/db-ops/resources/get-resource-url-list.js +26 -0
- package/lib/db-ops/resources/get-resources.d.ts +8 -0
- package/lib/db-ops/resources/get-resources.js +11 -0
- package/lib/db-ops/resources/insert-inventory-resources.d.ts +24 -0
- package/lib/db-ops/resources/insert-inventory-resources.js +64 -0
- package/lib/db-ops/resources/insert-resource-referrers.d.ts +15 -0
- package/lib/db-ops/resources/insert-resource-referrers.js +54 -0
- package/lib/db-ops/resources/insert-resource.d.ts +34 -0
- package/lib/db-ops/resources/insert-resource.js +73 -0
- package/lib/db-ops/resources/reconstruct-resource-rows.d.ts +26 -0
- package/lib/db-ops/resources/reconstruct-resource-rows.js +30 -0
- package/lib/db-ops/templates/assign-template-labels.d.ts +60 -0
- package/lib/db-ops/templates/assign-template-labels.js +187 -0
- package/lib/db-ops/templates/replace-page-templates.d.ts +44 -0
- package/lib/db-ops/templates/replace-page-templates.js +174 -0
- package/lib/db-ops/templates/serialize-template-cluster-reason.d.ts +16 -0
- package/lib/db-ops/templates/serialize-template-cluster-reason.js +17 -0
- package/lib/db-ops/templates/types.d.ts +103 -0
- package/lib/db-ops/templates/types.js +1 -0
- package/lib/debug.d.ts +8 -0
- package/lib/debug.js +9 -0
- package/lib/decode-html-blob.d.ts +20 -0
- package/lib/decode-html-blob.js +23 -0
- package/lib/decode-page-html-blob-bytes.d.ts +25 -0
- package/lib/decode-page-html-blob-bytes.js +29 -0
- package/lib/decode-stored-blob-bytes.d.ts +25 -0
- package/lib/decode-stored-blob-bytes.js +47 -0
- package/lib/derive-lineage-from-parent.d.ts +37 -0
- package/lib/derive-lineage-from-parent.js +42 -0
- package/lib/drop-legacy-tables.d.ts +45 -0
- package/lib/drop-legacy-tables.js +56 -0
- package/lib/error-kind/classify-error-kind.d.ts +20 -0
- package/lib/error-kind/classify-error-kind.js +136 -0
- package/lib/error-kind/network-related-error-kinds.d.ts +23 -0
- package/lib/error-kind/network-related-error-kinds.js +28 -0
- package/lib/error-kind/permanent-error-kinds.d.ts +48 -0
- package/lib/error-kind/permanent-error-kinds.js +54 -0
- package/lib/error-kind/types.d.ts +54 -0
- package/lib/error-kind/types.js +1 -0
- package/lib/filesystem/append-text.d.ts +9 -0
- package/lib/filesystem/append-text.js +14 -0
- package/lib/filesystem/copy-dir-sync.d.ts +6 -0
- package/lib/filesystem/copy-dir-sync.js +9 -0
- package/lib/filesystem/copy-dir.d.ts +7 -0
- package/lib/filesystem/copy-dir.js +13 -0
- package/lib/filesystem/copy-file-with-progress.d.ts +20 -0
- package/lib/filesystem/copy-file-with-progress.js +34 -0
- package/lib/filesystem/exists.d.ts +6 -0
- package/lib/filesystem/exists.js +9 -0
- package/lib/filesystem/get-file-list.d.ts +8 -0
- package/lib/filesystem/get-file-list.js +12 -0
- package/lib/filesystem/is-dir.d.ts +6 -0
- package/lib/filesystem/is-dir.js +10 -0
- package/lib/filesystem/mkdir.d.ts +8 -0
- package/lib/filesystem/mkdir.js +15 -0
- package/lib/filesystem/output-binary.d.ts +12 -0
- package/lib/filesystem/output-binary.js +17 -0
- package/lib/filesystem/output-json.d.ts +9 -0
- package/lib/filesystem/output-json.js +14 -0
- package/lib/filesystem/output-text.d.ts +11 -0
- package/lib/filesystem/output-text.js +32 -0
- package/lib/filesystem/parse-pax-path.d.ts +18 -0
- package/lib/filesystem/parse-pax-path.js +45 -0
- package/lib/filesystem/parse-tar-size-field.d.ts +13 -0
- package/lib/filesystem/parse-tar-size-field.js +37 -0
- package/lib/filesystem/peek-tar-top-dir.d.ts +35 -0
- package/lib/filesystem/peek-tar-top-dir.js +215 -0
- package/lib/filesystem/read-json.d.ts +7 -0
- package/lib/filesystem/read-json.js +11 -0
- package/lib/filesystem/read-text.d.ts +6 -0
- package/lib/filesystem/read-text.js +10 -0
- package/lib/filesystem/readline.d.ts +11 -0
- package/lib/filesystem/readline.js +26 -0
- package/lib/filesystem/remove.d.ts +5 -0
- package/lib/filesystem/remove.js +10 -0
- package/lib/filesystem/rename.d.ts +16 -0
- package/lib/filesystem/rename.js +48 -0
- package/lib/filesystem/tar.d.ts +23 -0
- package/lib/filesystem/tar.js +78 -0
- package/lib/filesystem/untar.d.ts +33 -0
- package/lib/filesystem/untar.js +84 -0
- package/lib/get-failed-page-messages.d.ts +56 -0
- package/lib/get-failed-page-messages.js +146 -0
- package/lib/get-json.d.ts +10 -0
- package/lib/get-json.js +25 -0
- package/lib/html-snapshot/match-selector-html.d.ts +25 -0
- package/lib/html-snapshot/match-selector-html.js +28 -0
- package/lib/html-snapshot/match-selector-snapshots.d.ts +33 -0
- package/lib/html-snapshot/match-selector-snapshots.js +33 -0
- package/lib/html-snapshot/search-html-document.d.ts +29 -0
- package/lib/html-snapshot/search-html-document.js +27 -0
- package/lib/html-snapshot/search-html-snapshots.d.ts +36 -0
- package/lib/html-snapshot/search-html-snapshots.js +35 -0
- package/lib/html-snapshot/types.d.ts +111 -0
- package/lib/html-snapshot/types.js +7 -0
- package/lib/html-snapshot/validate-search-pattern.d.ts +15 -0
- package/lib/html-snapshot/validate-search-pattern.js +17 -0
- package/lib/init-schema.d.ts +48 -0
- package/lib/init-schema.js +124 -0
- package/lib/is-inventory-source.d.ts +21 -0
- package/lib/is-inventory-source.js +22 -0
- package/lib/is-within-outage-window.d.ts +49 -0
- package/lib/is-within-outage-window.js +33 -0
- package/lib/isolated-cluster/create-isolated-cluster-run.d.ts +24 -0
- package/lib/isolated-cluster/create-isolated-cluster-run.js +26 -0
- package/lib/libsql-dialect.d.ts +115 -0
- package/lib/libsql-dialect.js +116 -0
- package/lib/limited-page-ids.d.ts +9 -0
- package/lib/limited-page-ids.js +18 -0
- package/lib/meta/assert-compatible-version.d.ts +60 -0
- package/lib/meta/assert-compatible-version.js +93 -0
- package/lib/meta/classify-jsonld-type.d.ts +23 -0
- package/lib/meta/classify-jsonld-type.js +43 -0
- package/lib/meta/compare-semver.d.ts +23 -0
- package/lib/meta/compare-semver.js +51 -0
- package/lib/meta/compute-main-contents-denormalized.d.ts +41 -0
- package/lib/meta/compute-main-contents-denormalized.js +88 -0
- package/lib/meta/compute-page-denormalized.d.ts +20 -0
- package/lib/meta/compute-page-denormalized.js +35 -0
- package/lib/meta/derive-flat-from-meta.d.ts +34 -0
- package/lib/meta/derive-flat-from-meta.js +158 -0
- package/lib/meta/derive-meta-extras.d.ts +20 -0
- package/lib/meta/derive-meta-extras.js +23 -0
- package/lib/meta/extract-tags-for-archive.d.ts +17 -0
- package/lib/meta/extract-tags-for-archive.js +36 -0
- package/lib/meta/parse-main-content-class-list.d.ts +19 -0
- package/lib/meta/parse-main-content-class-list.js +34 -0
- package/lib/meta/summarize-jsonld.d.ts +17 -0
- package/lib/meta/summarize-jsonld.js +29 -0
- package/lib/meta/technologies/combine-technology-confidence.d.ts +46 -0
- package/lib/meta/technologies/combine-technology-confidence.js +93 -0
- package/lib/meta/technologies/convert-legacy-page-tags-to-inserts.d.ts +45 -0
- package/lib/meta/technologies/convert-legacy-page-tags-to-inserts.js +53 -0
- package/lib/meta/technologies/convert-tag-row-to-wappalyzer-signal.d.ts +33 -0
- package/lib/meta/technologies/convert-tag-row-to-wappalyzer-signal.js +46 -0
- package/lib/meta/technologies/extract-technologies-for-archive.d.ts +33 -0
- package/lib/meta/technologies/extract-technologies-for-archive.js +30 -0
- package/lib/meta/technologies/match-js-license-comment-signal.d.ts +21 -0
- package/lib/meta/technologies/match-js-license-comment-signal.js +23 -0
- package/lib/meta/technologies/match-structural-technology-signals.d.ts +26 -0
- package/lib/meta/technologies/match-structural-technology-signals.js +48 -0
- package/lib/meta/technologies/normalize-wappalyzer-entries.d.ts +25 -0
- package/lib/meta/technologies/normalize-wappalyzer-entries.js +35 -0
- package/lib/meta/technologies/technology-signal-definitions.d.ts +44 -0
- package/lib/meta/technologies/technology-signal-definitions.js +60 -0
- package/lib/meta/technologies/types.d.ts +70 -0
- package/lib/meta/technologies/types.js +13 -0
- package/lib/meta/types.d.ts +1490 -0
- package/lib/meta/types.js +65 -0
- package/lib/migrate-content-items-alias-of-id.d.ts +52 -0
- package/lib/migrate-content-items-alias-of-id.js +69 -0
- package/lib/migrate-content-items-dedupe-cap-event-id.d.ts +46 -0
- package/lib/migrate-content-items-dedupe-cap-event-id.js +62 -0
- package/lib/migrate-content-items-is-metadata-only.d.ts +44 -0
- package/lib/migrate-content-items-is-metadata-only.js +60 -0
- package/lib/migrate-entity-tables.d.ts +55 -0
- package/lib/migrate-entity-tables.js +66 -0
- package/lib/migrate-info-created-cwd.d.ts +17 -0
- package/lib/migrate-info-created-cwd.js +36 -0
- package/lib/migrate-info-main-content-selector.d.ts +16 -0
- package/lib/migrate-info-main-content-selector.js +35 -0
- package/lib/migrate-info-request-header-names.d.ts +16 -0
- package/lib/migrate-info-request-header-names.js +35 -0
- package/lib/migrate-info-roots.d.ts +20 -0
- package/lib/migrate-info-roots.js +52 -0
- package/lib/migrate-inventory-runs-to-list-reconcile-runs.d.ts +34 -0
- package/lib/migrate-inventory-runs-to-list-reconcile-runs.js +51 -0
- package/lib/migrate-list-reconcile-runs-exclude-skipped.d.ts +25 -0
- package/lib/migrate-list-reconcile-runs-exclude-skipped.js +44 -0
- package/lib/migrate-list-reconcile-runs-invalid-skipped.d.ts +16 -0
- package/lib/migrate-list-reconcile-runs-invalid-skipped.js +35 -0
- package/lib/migrate-main-contents-columns.d.ts +26 -0
- package/lib/migrate-main-contents-columns.js +61 -0
- package/lib/migrate-page-meta-body-hash.d.ts +44 -0
- package/lib/migrate-page-meta-body-hash.js +63 -0
- package/lib/migrate-page-meta-console-error-count.d.ts +27 -0
- package/lib/migrate-page-meta-console-error-count.js +45 -0
- package/lib/migrate-page-meta-custom-element-count.d.ts +33 -0
- package/lib/migrate-page-meta-custom-element-count.js +51 -0
- package/lib/migrate-page-meta-image-scan.d.ts +27 -0
- package/lib/migrate-page-meta-image-scan.js +52 -0
- package/lib/migrate-page-tags-to-page-technologies.d.ts +39 -0
- package/lib/migrate-page-tags-to-page-technologies.js +79 -0
- package/lib/migrate-ref-tables.d.ts +25 -0
- package/lib/migrate-ref-tables.js +38 -0
- package/lib/native-executor/check-native-executor-config.d.ts +17 -0
- package/lib/native-executor/check-native-executor-config.js +20 -0
- package/lib/page-meta-column-maps.d.ts +32 -0
- package/lib/page-meta-column-maps.js +43 -0
- package/lib/page.d.ts +546 -0
- package/lib/page.js +764 -0
- package/lib/peek-archive-lock.d.ts +40 -0
- package/lib/peek-archive-lock.js +62 -0
- package/lib/populate-entity-tables/collapse-anchor-rows.d.ts +41 -0
- package/lib/populate-entity-tables/collapse-anchor-rows.js +87 -0
- package/lib/populate-entity-tables/derive-dom-path.d.ts +35 -0
- package/lib/populate-entity-tables/derive-dom-path.js +72 -0
- package/lib/populate-entity-tables/is-blob-ref-value.d.ts +16 -0
- package/lib/populate-entity-tables/is-blob-ref-value.js +19 -0
- package/lib/populate-entity-tables/match-images-to-dom-paths.d.ts +66 -0
- package/lib/populate-entity-tables/match-images-to-dom-paths.js +96 -0
- package/lib/populate-entity-tables/populate-anchor-edges.d.ts +33 -0
- package/lib/populate-entity-tables/populate-anchor-edges.js +153 -0
- package/lib/populate-entity-tables/populate-content-items.d.ts +40 -0
- package/lib/populate-entity-tables/populate-content-items.js +141 -0
- package/lib/populate-entity-tables/populate-entities.d.ts +81 -0
- package/lib/populate-entity-tables/populate-entities.js +110 -0
- package/lib/populate-entity-tables/populate-image-items.d.ts +91 -0
- package/lib/populate-entity-tables/populate-image-items.js +226 -0
- package/lib/populate-entity-tables/populate-page-meta.d.ts +33 -0
- package/lib/populate-entity-tables/populate-page-meta.js +267 -0
- package/lib/populate-entity-tables/populate-resource-items.d.ts +22 -0
- package/lib/populate-entity-tables/populate-resource-items.js +114 -0
- package/lib/populate-entity-tables/populate-resource-ref-edges.d.ts +31 -0
- package/lib/populate-entity-tables/populate-resource-ref-edges.js +33 -0
- package/lib/populate-entity-tables/resolve-blob-refs.d.ts +31 -0
- package/lib/populate-entity-tables/resolve-blob-refs.js +100 -0
- package/lib/populate-entity-tables/resolve-content-type-refs.d.ts +22 -0
- package/lib/populate-entity-tables/resolve-content-type-refs.js +27 -0
- package/lib/populate-entity-tables/resolve-header-sets.d.ts +49 -0
- package/lib/populate-entity-tables/resolve-header-sets.js +122 -0
- package/lib/populate-entity-tables/resolve-json-refs.d.ts +25 -0
- package/lib/populate-entity-tables/resolve-json-refs.js +67 -0
- package/lib/populate-entity-tables/resolve-text-refs.d.ts +30 -0
- package/lib/populate-entity-tables/resolve-text-refs.js +61 -0
- package/lib/populate-entity-tables/resolve-url-or-blob-from-maps.d.ts +21 -0
- package/lib/populate-entity-tables/resolve-url-or-blob-from-maps.js +27 -0
- package/lib/populate-entity-tables/resolve-url-refs.d.ts +33 -0
- package/lib/populate-entity-tables/resolve-url-refs.js +60 -0
- package/lib/populate-entity-tables/test-utils/count-rows.d.ts +17 -0
- package/lib/populate-entity-tables/test-utils/count-rows.js +20 -0
- package/lib/populate-entity-tables/test-utils/seed-content-items.d.ts +25 -0
- package/lib/populate-entity-tables/test-utils/seed-content-items.js +42 -0
- package/lib/populate-entity-tables/test-utils/setup-entities-db.d.ts +30 -0
- package/lib/populate-entity-tables/test-utils/setup-entities-db.js +175 -0
- package/lib/populate-entity-tables/types.d.ts +157 -0
- package/lib/populate-entity-tables/types.js +12 -0
- package/lib/populate-entity-tables/upsert-text-refs.d.ts +38 -0
- package/lib/populate-entity-tables/upsert-text-refs.js +78 -0
- package/lib/populate-ref-tables/classify-content-type.d.ts +16 -0
- package/lib/populate-ref-tables/classify-content-type.js +52 -0
- package/lib/populate-ref-tables/compute-content-hash.d.ts +22 -0
- package/lib/populate-ref-tables/compute-content-hash.js +26 -0
- package/lib/populate-ref-tables/compute-header-flags.d.ts +16 -0
- package/lib/populate-ref-tables/compute-header-flags.js +70 -0
- package/lib/populate-ref-tables/content-type-rules.d.ts +38 -0
- package/lib/populate-ref-tables/content-type-rules.js +133 -0
- package/lib/populate-ref-tables/create-header-table-caches.d.ts +25 -0
- package/lib/populate-ref-tables/create-header-table-caches.js +49 -0
- package/lib/populate-ref-tables/data-uri-url-refs-limit.d.ts +15 -0
- package/lib/populate-ref-tables/data-uri-url-refs-limit.js +15 -0
- package/lib/populate-ref-tables/decode-data-uri.d.ts +21 -0
- package/lib/populate-ref-tables/decode-data-uri.js +126 -0
- package/lib/populate-ref-tables/decompose-header-set.d.ts +29 -0
- package/lib/populate-ref-tables/decompose-header-set.js +157 -0
- package/lib/populate-ref-tables/decompose-url.d.ts +25 -0
- package/lib/populate-ref-tables/decompose-url.js +70 -0
- package/lib/populate-ref-tables/header-stability.d.ts +19 -0
- package/lib/populate-ref-tables/header-stability.js +22 -0
- package/lib/populate-ref-tables/header-value-cache-key.d.ts +17 -0
- package/lib/populate-ref-tables/header-value-cache-key.js +19 -0
- package/lib/populate-ref-tables/normalize-mime.d.ts +24 -0
- package/lib/populate-ref-tables/normalize-mime.js +36 -0
- package/lib/populate-ref-tables/populate-blob-refs.d.ts +38 -0
- package/lib/populate-ref-tables/populate-blob-refs.js +134 -0
- package/lib/populate-ref-tables/populate-content-type-refs.d.ts +27 -0
- package/lib/populate-ref-tables/populate-content-type-refs.js +70 -0
- package/lib/populate-ref-tables/populate-header-tables.d.ts +35 -0
- package/lib/populate-ref-tables/populate-header-tables.js +80 -0
- package/lib/populate-ref-tables/populate-json-refs.d.ts +29 -0
- package/lib/populate-ref-tables/populate-json-refs.js +101 -0
- package/lib/populate-ref-tables/populate-refs.d.ts +51 -0
- package/lib/populate-ref-tables/populate-refs.js +62 -0
- package/lib/populate-ref-tables/populate-text-refs.d.ts +32 -0
- package/lib/populate-ref-tables/populate-text-refs.js +133 -0
- package/lib/populate-ref-tables/populate-url-refs.d.ts +28 -0
- package/lib/populate-ref-tables/populate-url-refs.js +148 -0
- package/lib/populate-ref-tables/test-utils/count-rows.d.ts +15 -0
- package/lib/populate-ref-tables/test-utils/count-rows.js +17 -0
- package/lib/populate-ref-tables/types.d.ts +197 -0
- package/lib/populate-ref-tables/types.js +7 -0
- package/lib/populate-ref-tables/upsert-one-header-set.d.ts +34 -0
- package/lib/populate-ref-tables/upsert-one-header-set.js +208 -0
- package/lib/populate-ref-tables/volatile-header-names.d.ts +20 -0
- package/lib/populate-ref-tables/volatile-header-names.js +33 -0
- package/lib/redirect-table.d.ts +9 -0
- package/lib/redirect-table.js +28 -0
- package/lib/release-finished-statements.d.ts +42 -0
- package/lib/release-finished-statements.js +45 -0
- package/lib/resolve-redirect-chain.d.ts +33 -0
- package/lib/resolve-redirect-chain.js +27 -0
- package/lib/resource.d.ts +46 -0
- package/lib/resource.js +62 -0
- package/lib/retarget-legacy-fk-tables.d.ts +61 -0
- package/lib/retarget-legacy-fk-tables.js +137 -0
- package/lib/safe-path.d.ts +9 -0
- package/lib/safe-path.js +17 -0
- package/lib/scope/build-scope-map.d.ts +21 -0
- package/lib/scope/build-scope-map.js +32 -0
- package/lib/scope/find-scope-entry.d.ts +25 -0
- package/lib/scope/find-scope-entry.js +45 -0
- package/lib/template-classification/classify-archive-page-templates.d.ts +42 -0
- package/lib/template-classification/classify-archive-page-templates.js +70 -0
- package/lib/template-classification/classify-page-templates.d.ts +33 -0
- package/lib/template-classification/classify-page-templates.js +60 -0
- package/lib/template-classification/collect-page-ids-with-html.d.ts +24 -0
- package/lib/template-classification/collect-page-ids-with-html.js +30 -0
- package/lib/template-classification/collect-page-stylesheet-urls.d.ts +32 -0
- package/lib/template-classification/collect-page-stylesheet-urls.js +132 -0
- package/lib/template-classification/create-content-root-hint.d.ts +41 -0
- package/lib/template-classification/create-content-root-hint.js +51 -0
- package/lib/template-classification/create-page-cluster-factory.d.ts +36 -0
- package/lib/template-classification/create-page-cluster-factory.js +52 -0
- package/lib/template-classification/load-page-cluster-candidates.d.ts +32 -0
- package/lib/template-classification/load-page-cluster-candidates.js +93 -0
- package/lib/template-classification/page-cluster/resolve-page-cluster-keys.d.ts +34 -0
- package/lib/template-classification/page-cluster/resolve-page-cluster-keys.js +236 -0
- package/lib/template-classification/page-cluster/types.d.ts +123 -0
- package/lib/template-classification/page-cluster/types.js +1 -0
- package/lib/template-classification/types.d.ts +234 -0
- package/lib/template-classification/types.js +1 -0
- package/lib/test-utils/build-full-schema-test-db.d.ts +34 -0
- package/lib/test-utils/build-full-schema-test-db.js +74 -0
- package/lib/test-utils/compare-strings.d.ts +12 -0
- package/lib/test-utils/compare-strings.js +14 -0
- package/lib/test-utils/create-legacy-analysis-tables.d.ts +13 -0
- package/lib/test-utils/create-legacy-analysis-tables.js +37 -0
- package/lib/test-utils/fk-parent-tables.d.ts +15 -0
- package/lib/test-utils/fk-parent-tables.js +19 -0
- package/lib/test-utils/seed-content-item.d.ts +35 -0
- package/lib/test-utils/seed-content-item.js +42 -0
- package/lib/test-utils/setup-legacy-fk-db.d.ts +34 -0
- package/lib/test-utils/setup-legacy-fk-db.js +271 -0
- package/lib/transfer/attach-source-database.d.ts +31 -0
- package/lib/transfer/attach-source-database.js +40 -0
- package/lib/transfer/build-split-config.d.ts +30 -0
- package/lib/transfer/build-split-config.js +42 -0
- package/lib/transfer/clear-replaced-page-rows.d.ts +23 -0
- package/lib/transfer/clear-replaced-page-rows.js +61 -0
- package/lib/transfer/concat-archives.d.ts +55 -0
- package/lib/transfer/concat-archives.js +95 -0
- package/lib/transfer/concat-source-transfer-phases.d.ts +10 -0
- package/lib/transfer/concat-source-transfer-phases.js +17 -0
- package/lib/transfer/content-item-rank-sql.d.ts +21 -0
- package/lib/transfer/content-item-rank-sql.js +23 -0
- package/lib/transfer/copy-anchor-edges.d.ts +28 -0
- package/lib/transfer/copy-anchor-edges.js +42 -0
- package/lib/transfer/copy-dictionaries-for-concat.d.ts +39 -0
- package/lib/transfer/copy-dictionaries-for-concat.js +81 -0
- package/lib/transfer/copy-dictionaries-for-split.d.ts +29 -0
- package/lib/transfer/copy-dictionaries-for-split.js +224 -0
- package/lib/transfer/copy-header-set-children.d.ts +27 -0
- package/lib/transfer/copy-header-set-children.js +51 -0
- package/lib/transfer/copy-image-items.d.ts +21 -0
- package/lib/transfer/copy-image-items.js +62 -0
- package/lib/transfer/copy-inventory-source-lists.d.ts +30 -0
- package/lib/transfer/copy-inventory-source-lists.js +61 -0
- package/lib/transfer/copy-journal-tables.d.ts +30 -0
- package/lib/transfer/copy-journal-tables.js +56 -0
- package/lib/transfer/copy-page-console-logs.d.ts +16 -0
- package/lib/transfer/copy-page-console-logs.js +27 -0
- package/lib/transfer/copy-page-html-blobs.d.ts +31 -0
- package/lib/transfer/copy-page-html-blobs.js +43 -0
- package/lib/transfer/copy-page-meta.d.ts +27 -0
- package/lib/transfer/copy-page-meta.js +68 -0
- package/lib/transfer/copy-page-template-clusters.d.ts +31 -0
- package/lib/transfer/copy-page-template-clusters.js +56 -0
- package/lib/transfer/copy-page-template-labels.d.ts +34 -0
- package/lib/transfer/copy-page-template-labels.js +88 -0
- package/lib/transfer/copy-resource-items.d.ts +29 -0
- package/lib/transfer/copy-resource-items.js +89 -0
- package/lib/transfer/copy-resource-ref-edges.d.ts +20 -0
- package/lib/transfer/copy-resource-ref-edges.js +33 -0
- package/lib/transfer/copy-simple-page-scoped-tables.d.ts +15 -0
- package/lib/transfer/copy-simple-page-scoped-tables.js +34 -0
- package/lib/transfer/count-external-pages-in-scope.d.ts +26 -0
- package/lib/transfer/count-external-pages-in-scope.js +40 -0
- package/lib/transfer/create-transfer-temp-tables.d.ts +30 -0
- package/lib/transfer/create-transfer-temp-tables.js +59 -0
- package/lib/transfer/dictionary-copy-specs.d.ts +32 -0
- package/lib/transfer/dictionary-copy-specs.js +28 -0
- package/lib/transfer/drop-transfer-temp-tables.d.ts +9 -0
- package/lib/transfer/drop-transfer-temp-tables.js +18 -0
- package/lib/transfer/flatten-redirect-chains.d.ts +44 -0
- package/lib/transfer/flatten-redirect-chains.js +74 -0
- package/lib/transfer/insert-content-items.d.ts +35 -0
- package/lib/transfer/insert-content-items.js +116 -0
- package/lib/transfer/list-transfer-columns.d.ts +35 -0
- package/lib/transfer/list-transfer-columns.js +45 -0
- package/lib/transfer/mark-in-scope-content-items.d.ts +31 -0
- package/lib/transfer/mark-in-scope-content-items.js +54 -0
- package/lib/transfer/merge-archive-configs.d.ts +51 -0
- package/lib/transfer/merge-archive-configs.js +85 -0
- package/lib/transfer/plan-content-items-for-concat.d.ts +33 -0
- package/lib/transfer/plan-content-items-for-concat.js +51 -0
- package/lib/transfer/plan-content-items-for-split.d.ts +42 -0
- package/lib/transfer/plan-content-items-for-split.js +83 -0
- package/lib/transfer/plan-resource-items.d.ts +40 -0
- package/lib/transfer/plan-resource-items.js +69 -0
- package/lib/transfer/quote-transfer-identifier.d.ts +18 -0
- package/lib/transfer/quote-transfer-identifier.js +20 -0
- package/lib/transfer/reclassify-resource-externality.d.ts +37 -0
- package/lib/transfer/reclassify-resource-externality.js +66 -0
- package/lib/transfer/remap-redirect-dest-ids.d.ts +34 -0
- package/lib/transfer/remap-redirect-dest-ids.js +51 -0
- package/lib/transfer/replace-content-items.d.ts +39 -0
- package/lib/transfer/replace-content-items.js +83 -0
- package/lib/transfer/simple-page-scoped-tables.d.ts +25 -0
- package/lib/transfer/simple-page-scoped-tables.js +38 -0
- package/lib/transfer/split-archive.d.ts +55 -0
- package/lib/transfer/split-archive.js +98 -0
- package/lib/transfer/split-source-transfer-phases.d.ts +11 -0
- package/lib/transfer/split-source-transfer-phases.js +18 -0
- package/lib/transfer/transfer-action.d.ts +34 -0
- package/lib/transfer/transfer-action.js +32 -0
- package/lib/transfer/transfer-archive-rows.d.ts +65 -0
- package/lib/transfer/transfer-archive-rows.js +156 -0
- package/lib/transfer/transfer-dictionary-tables.d.ts +12 -0
- package/lib/transfer/transfer-dictionary-tables.js +22 -0
- package/lib/transfer/transfer-post-phases.d.ts +10 -0
- package/lib/transfer/transfer-post-phases.js +13 -0
- package/lib/transfer/transfer-source-alias.d.ts +9 -0
- package/lib/transfer/transfer-source-alias.js +9 -0
- package/lib/transfer/types.d.ts +111 -0
- package/lib/transfer/types.js +35 -0
- package/lib/types.d.ts +772 -0
- package/lib/types.js +1 -0
- package/lib/url-alias/compute-tier-a-alias-key.d.ts +44 -0
- package/lib/url-alias/compute-tier-a-alias-key.js +47 -0
- package/lib/url-alias/compute-tier-b-alias-key.d.ts +23 -0
- package/lib/url-alias/compute-tier-b-alias-key.js +26 -0
- package/lib/url-alias/group-alias-candidates.d.ts +27 -0
- package/lib/url-alias/group-alias-candidates.js +29 -0
- package/lib/url-alias/types.d.ts +12 -0
- package/lib/url-alias/types.js +1 -0
- package/lib/url-pattern/compute-shape-key.d.ts +58 -0
- package/lib/url-pattern/compute-shape-key.js +129 -0
- package/lib/url-pattern/decompose-url.d.ts +33 -0
- package/lib/url-pattern/decompose-url.js +79 -0
- package/lib/url-pattern/reconstruct-url.d.ts +15 -0
- package/lib/url-pattern/reconstruct-url.js +33 -0
- package/lib/url-sort/compute-url-sort-ranks.d.ts +30 -0
- package/lib/url-sort/compute-url-sort-ranks.js +33 -0
- package/lib/utils/array/each-splitted.d.ts +10 -0
- package/lib/utils/array/each-splitted.js +14 -0
- package/lib/utils/debug.d.ts +8 -0
- package/lib/utils/debug.js +8 -0
- package/lib/utils/error/emit-error-with-retry.d.ts +40 -0
- package/lib/utils/error/emit-error-with-retry.js +44 -0
- package/lib/utils/error/emit-error.d.ts +39 -0
- package/lib/utils/error/emit-error.js +41 -0
- package/lib/utils/object/parse-response-headers.d.ts +12 -0
- package/lib/utils/object/parse-response-headers.js +26 -0
- package/lib/utils/object/redact-request-headers.d.ts +15 -0
- package/lib/utils/object/redact-request-headers.js +27 -0
- package/lib/utils/types/types.d.ts +383 -0
- package/lib/utils/types/types.js +1 -0
- package/lib/verify-migration/capture-rejection.d.ts +24 -0
- package/lib/verify-migration/capture-rejection.js +31 -0
- package/lib/verify-migration/check-anchor-edges-count.d.ts +34 -0
- package/lib/verify-migration/check-anchor-edges-count.js +72 -0
- package/lib/verify-migration/check-anchor-edges-sum.d.ts +13 -0
- package/lib/verify-migration/check-anchor-edges-sum.js +27 -0
- package/lib/verify-migration/check-content-items-count.d.ts +16 -0
- package/lib/verify-migration/check-content-items-count.js +30 -0
- package/lib/verify-migration/check-content-type-preservation.d.ts +22 -0
- package/lib/verify-migration/check-content-type-preservation.js +40 -0
- package/lib/verify-migration/check-foreign-key-integrity.d.ts +31 -0
- package/lib/verify-migration/check-foreign-key-integrity.js +47 -0
- package/lib/verify-migration/check-image-items-count.d.ts +12 -0
- package/lib/verify-migration/check-image-items-count.js +26 -0
- package/lib/verify-migration/check-page-meta-count.d.ts +15 -0
- package/lib/verify-migration/check-page-meta-count.js +31 -0
- package/lib/verify-migration/check-reader-parity.d.ts +23 -0
- package/lib/verify-migration/check-reader-parity.js +182 -0
- package/lib/verify-migration/check-resource-items-count.d.ts +17 -0
- package/lib/verify-migration/check-resource-items-count.js +33 -0
- package/lib/verify-migration/check-url-round-trip.d.ts +43 -0
- package/lib/verify-migration/check-url-round-trip.js +112 -0
- package/lib/verify-migration/types.d.ts +70 -0
- package/lib/verify-migration/types.js +63 -0
- package/lib/verify-migration/verify-migration.d.ts +41 -0
- package/lib/verify-migration/verify-migration.js +120 -0
- package/lib/with-bulk-write-pragmas.d.ts +51 -0
- package/lib/with-bulk-write-pragmas.js +132 -0
- package/lib/write-queue.d.ts +32 -0
- package/lib/write-queue.js +55 -0
- package/package.json +350 -3
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `info.requestHeaderNames` column to archives created before it
|
|
3
|
+
* existed. `CREATE TABLE IF NOT EXISTS` (used for `info` itself) cannot
|
|
4
|
+
* retrofit a new column onto an already-existing table, so this lightweight,
|
|
5
|
+
* `hasColumn`-guarded `ALTER TABLE` runs on every `initSchema` call —
|
|
6
|
+
* idempotent, and self-healing for archives whose provisioning crashed
|
|
7
|
+
* partway through.
|
|
8
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
9
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
10
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
11
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
12
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
13
|
+
* `console.error` when omitted (direct/test callers).
|
|
14
|
+
*/
|
|
15
|
+
export async function migrateInfoRequestHeaderNames(instance, onLog) {
|
|
16
|
+
const hasInfo = await instance.schema.hasTable('info');
|
|
17
|
+
if (!hasInfo) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const hasColumn = await instance.schema.hasColumn('info', 'requestHeaderNames');
|
|
21
|
+
if (hasColumn) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await instance.schema.table('info', (t) => {
|
|
25
|
+
t.json('requestHeaderNames');
|
|
26
|
+
});
|
|
27
|
+
const message = '[migrate] info.requestHeaderNames column added';
|
|
28
|
+
if (onLog) {
|
|
29
|
+
onLog(message);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// oxlint-disable-next-line no-console
|
|
33
|
+
console.error(message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Bring an archive's `info` table to the current shape: add `roots` (seeded
|
|
4
|
+
* from `baseUrl`) and drop the obsolete `scope` column.
|
|
5
|
+
*
|
|
6
|
+
* Idempotent: calling this multiple times on an up-to-date schema is a no-op.
|
|
7
|
+
* Archives where `baseUrl` is NULL receive an empty `roots` array rather than
|
|
8
|
+
* throwing.
|
|
9
|
+
*
|
|
10
|
+
* When the migration actually runs (i.e. either column transition was
|
|
11
|
+
* performed), a single notice is written to stderr so the user knows the
|
|
12
|
+
* file was upgraded.
|
|
13
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
14
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
15
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
16
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
17
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
18
|
+
* `console.error` when omitted (direct/test callers).
|
|
19
|
+
*/
|
|
20
|
+
export declare function migrateInfoRoots(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bring an archive's `info` table to the current shape: add `roots` (seeded
|
|
3
|
+
* from `baseUrl`) and drop the obsolete `scope` column.
|
|
4
|
+
*
|
|
5
|
+
* Idempotent: calling this multiple times on an up-to-date schema is a no-op.
|
|
6
|
+
* Archives where `baseUrl` is NULL receive an empty `roots` array rather than
|
|
7
|
+
* throwing.
|
|
8
|
+
*
|
|
9
|
+
* When the migration actually runs (i.e. either column transition was
|
|
10
|
+
* performed), a single notice is written to stderr so the user knows the
|
|
11
|
+
* file was upgraded.
|
|
12
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
13
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
14
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
15
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
16
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
17
|
+
* `console.error` when omitted (direct/test callers).
|
|
18
|
+
*/
|
|
19
|
+
export async function migrateInfoRoots(instance, onLog) {
|
|
20
|
+
const hasInfo = await instance.schema.hasTable('info');
|
|
21
|
+
if (!hasInfo) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const hasRoots = await instance.schema.hasColumn('info', 'roots');
|
|
25
|
+
const hasScope = await instance.schema.hasColumn('info', 'scope');
|
|
26
|
+
if (hasRoots && !hasScope) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const changes = [];
|
|
30
|
+
if (!hasRoots) {
|
|
31
|
+
await instance.schema.table('info', (t) => {
|
|
32
|
+
t.json('roots');
|
|
33
|
+
});
|
|
34
|
+
await instance.raw(`UPDATE info SET roots = json_array(baseUrl) WHERE roots IS NULL AND baseUrl IS NOT NULL`);
|
|
35
|
+
await instance.raw(`UPDATE info SET roots = '[]' WHERE roots IS NULL`);
|
|
36
|
+
changes.push('roots seeded');
|
|
37
|
+
}
|
|
38
|
+
if (hasScope) {
|
|
39
|
+
await instance.schema.table('info', (t) => {
|
|
40
|
+
t.dropColumn('scope');
|
|
41
|
+
});
|
|
42
|
+
changes.push('scope dropped');
|
|
43
|
+
}
|
|
44
|
+
const message = `[migrate] info table upgraded (${changes.join(', ')})`;
|
|
45
|
+
if (onLog) {
|
|
46
|
+
onLog(message);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// oxlint-disable-next-line no-console
|
|
50
|
+
console.error(message);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Renames the legacy `inventory_runs` table to `list_reconcile_runs` for
|
|
4
|
+
* archives created before the rename (issue #354: the old name implied
|
|
5
|
+
* `--inventory`-only despite `--recrawl` writing to the same table via the
|
|
6
|
+
* same {@link import('./db-ops/list-reconcile/record-list-reconcile-run.js').recordListReconcileRun}
|
|
7
|
+
* path).
|
|
8
|
+
*
|
|
9
|
+
* Must run BEFORE {@link import('./init-schema.js').initSchema} in the boot
|
|
10
|
+
* sequence, not alongside the other column-adding `migrate*` functions
|
|
11
|
+
* that run after it. `initSchema` unconditionally re-runs
|
|
12
|
+
* `createAdjunctTables`, which creates `list_reconcile_runs` fresh
|
|
13
|
+
* (`CREATE TABLE IF NOT EXISTS`) if it doesn't see the new name yet — so if
|
|
14
|
+
* this rename ran after `initSchema`, it would find `list_reconcile_runs`
|
|
15
|
+
* already present (empty) and skip, silently orphaning the old table's
|
|
16
|
+
* rows. Running first guarantees `initSchema` sees the already-renamed
|
|
17
|
+
* table and its `IF NOT EXISTS` guard is a no-op.
|
|
18
|
+
*
|
|
19
|
+
* A straight `renameTable` (not the convert-then-drop pattern used for
|
|
20
|
+
* `page_tags` → `technology_signals`/`page_technologies`) because this is a
|
|
21
|
+
* pure name change with no data-shape change — the row shape is identical
|
|
22
|
+
* before and after.
|
|
23
|
+
*
|
|
24
|
+
* Idempotent: a no-op once `inventory_runs` is gone (either because this
|
|
25
|
+
* function already ran, or the archive was created after the rename
|
|
26
|
+
* shipped and never had the old name).
|
|
27
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
28
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
29
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
30
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
31
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
32
|
+
* `console.error` when omitted (direct/test callers).
|
|
33
|
+
*/
|
|
34
|
+
export declare function migrateInventoryRunsToListReconcileRuns(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renames the legacy `inventory_runs` table to `list_reconcile_runs` for
|
|
3
|
+
* archives created before the rename (issue #354: the old name implied
|
|
4
|
+
* `--inventory`-only despite `--recrawl` writing to the same table via the
|
|
5
|
+
* same {@link import('./db-ops/list-reconcile/record-list-reconcile-run.js').recordListReconcileRun}
|
|
6
|
+
* path).
|
|
7
|
+
*
|
|
8
|
+
* Must run BEFORE {@link import('./init-schema.js').initSchema} in the boot
|
|
9
|
+
* sequence, not alongside the other column-adding `migrate*` functions
|
|
10
|
+
* that run after it. `initSchema` unconditionally re-runs
|
|
11
|
+
* `createAdjunctTables`, which creates `list_reconcile_runs` fresh
|
|
12
|
+
* (`CREATE TABLE IF NOT EXISTS`) if it doesn't see the new name yet — so if
|
|
13
|
+
* this rename ran after `initSchema`, it would find `list_reconcile_runs`
|
|
14
|
+
* already present (empty) and skip, silently orphaning the old table's
|
|
15
|
+
* rows. Running first guarantees `initSchema` sees the already-renamed
|
|
16
|
+
* table and its `IF NOT EXISTS` guard is a no-op.
|
|
17
|
+
*
|
|
18
|
+
* A straight `renameTable` (not the convert-then-drop pattern used for
|
|
19
|
+
* `page_tags` → `technology_signals`/`page_technologies`) because this is a
|
|
20
|
+
* pure name change with no data-shape change — the row shape is identical
|
|
21
|
+
* before and after.
|
|
22
|
+
*
|
|
23
|
+
* Idempotent: a no-op once `inventory_runs` is gone (either because this
|
|
24
|
+
* function already ran, or the archive was created after the rename
|
|
25
|
+
* shipped and never had the old name).
|
|
26
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
27
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
28
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
29
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
30
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
31
|
+
* `console.error` when omitted (direct/test callers).
|
|
32
|
+
*/
|
|
33
|
+
export async function migrateInventoryRunsToListReconcileRuns(instance, onLog) {
|
|
34
|
+
const hasOldTable = await instance.schema.hasTable('inventory_runs');
|
|
35
|
+
if (!hasOldTable) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const hasNewTable = await instance.schema.hasTable('list_reconcile_runs');
|
|
39
|
+
if (hasNewTable) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
await instance.schema.renameTable('inventory_runs', 'list_reconcile_runs');
|
|
43
|
+
const message = '[migrate] inventory_runs renamed to list_reconcile_runs';
|
|
44
|
+
if (onLog) {
|
|
45
|
+
onLog(message);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// oxlint-disable-next-line no-console
|
|
49
|
+
console.error(message);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `list_reconcile_runs.exclude_skipped` column to archives created
|
|
4
|
+
* before it existed. `CREATE TABLE IF NOT EXISTS` (used for
|
|
5
|
+
* `list_reconcile_runs` itself) cannot retrofit a new column onto an
|
|
6
|
+
* already-existing table, so this lightweight, `hasColumn`-guarded
|
|
7
|
+
* `ALTER TABLE` runs on every `initSchema` call — idempotent, and
|
|
8
|
+
* self-healing for archives whose provisioning crashed partway through.
|
|
9
|
+
*
|
|
10
|
+
* Pre-migration rows stay `NULL`: those runs predate ingestion-side
|
|
11
|
+
* exclusion (issue #260), so their excluded URLs were imported as real
|
|
12
|
+
* pages/resources rather than recorded as skipped — `NULL` means "not
|
|
13
|
+
* measured", not `0`.
|
|
14
|
+
*
|
|
15
|
+
* The column is pure audit output: written once per run and read back
|
|
16
|
+
* only by `listReconcileRuns` display surfaces, never consumed by any
|
|
17
|
+
* runtime decision — matching `scope_skipped` / `invalid_skipped`.
|
|
18
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
19
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
20
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
21
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
22
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
23
|
+
* `console.error` when omitted (direct/test callers).
|
|
24
|
+
*/
|
|
25
|
+
export declare function migrateListReconcileRunsExcludeSkipped(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `list_reconcile_runs.exclude_skipped` column to archives created
|
|
3
|
+
* before it existed. `CREATE TABLE IF NOT EXISTS` (used for
|
|
4
|
+
* `list_reconcile_runs` itself) cannot retrofit a new column onto an
|
|
5
|
+
* already-existing table, so this lightweight, `hasColumn`-guarded
|
|
6
|
+
* `ALTER TABLE` runs on every `initSchema` call — idempotent, and
|
|
7
|
+
* self-healing for archives whose provisioning crashed partway through.
|
|
8
|
+
*
|
|
9
|
+
* Pre-migration rows stay `NULL`: those runs predate ingestion-side
|
|
10
|
+
* exclusion (issue #260), so their excluded URLs were imported as real
|
|
11
|
+
* pages/resources rather than recorded as skipped — `NULL` means "not
|
|
12
|
+
* measured", not `0`.
|
|
13
|
+
*
|
|
14
|
+
* The column is pure audit output: written once per run and read back
|
|
15
|
+
* only by `listReconcileRuns` display surfaces, never consumed by any
|
|
16
|
+
* runtime decision — matching `scope_skipped` / `invalid_skipped`.
|
|
17
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
18
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
19
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
20
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
21
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
22
|
+
* `console.error` when omitted (direct/test callers).
|
|
23
|
+
*/
|
|
24
|
+
export async function migrateListReconcileRunsExcludeSkipped(instance, onLog) {
|
|
25
|
+
const hasTable = await instance.schema.hasTable('list_reconcile_runs');
|
|
26
|
+
if (!hasTable) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const hasColumn = await instance.schema.hasColumn('list_reconcile_runs', 'exclude_skipped');
|
|
30
|
+
if (hasColumn) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
await instance.schema.table('list_reconcile_runs', (t) => {
|
|
34
|
+
t.integer('exclude_skipped');
|
|
35
|
+
});
|
|
36
|
+
const message = '[migrate] list_reconcile_runs.exclude_skipped column added';
|
|
37
|
+
if (onLog) {
|
|
38
|
+
onLog(message);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// oxlint-disable-next-line no-console
|
|
42
|
+
console.error(message);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `list_reconcile_runs.invalid_skipped` column to archives created
|
|
4
|
+
* before it existed. `CREATE TABLE IF NOT EXISTS` (used for
|
|
5
|
+
* `list_reconcile_runs` itself) cannot retrofit a new column onto an
|
|
6
|
+
* already-existing table, so this lightweight, `hasColumn`-guarded
|
|
7
|
+
* `ALTER TABLE` runs on every `initSchema` call — idempotent, and
|
|
8
|
+
* self-healing for archives whose provisioning crashed partway through.
|
|
9
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
10
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
11
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
12
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
13
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
14
|
+
* `console.error` when omitted (direct/test callers).
|
|
15
|
+
*/
|
|
16
|
+
export declare function migrateListReconcileRunsInvalidSkipped(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `list_reconcile_runs.invalid_skipped` column to archives created
|
|
3
|
+
* before it existed. `CREATE TABLE IF NOT EXISTS` (used for
|
|
4
|
+
* `list_reconcile_runs` itself) cannot retrofit a new column onto an
|
|
5
|
+
* already-existing table, so this lightweight, `hasColumn`-guarded
|
|
6
|
+
* `ALTER TABLE` runs on every `initSchema` call — idempotent, and
|
|
7
|
+
* self-healing for archives whose provisioning crashed partway through.
|
|
8
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
9
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
10
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
11
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
12
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
13
|
+
* `console.error` when omitted (direct/test callers).
|
|
14
|
+
*/
|
|
15
|
+
export async function migrateListReconcileRunsInvalidSkipped(instance, onLog) {
|
|
16
|
+
const hasTable = await instance.schema.hasTable('list_reconcile_runs');
|
|
17
|
+
if (!hasTable) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const hasColumn = await instance.schema.hasColumn('list_reconcile_runs', 'invalid_skipped');
|
|
21
|
+
if (hasColumn) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await instance.schema.table('list_reconcile_runs', (t) => {
|
|
25
|
+
t.integer('invalid_skipped');
|
|
26
|
+
});
|
|
27
|
+
const message = '[migrate] list_reconcile_runs.invalid_skipped column added';
|
|
28
|
+
if (onLog) {
|
|
29
|
+
onLog(message);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// oxlint-disable-next-line no-console
|
|
33
|
+
console.error(message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Add the beholder `MainContentsData` / `ScrollHeightData` denormalised
|
|
4
|
+
* aggregate columns to `page_meta` on archives created before this feature.
|
|
5
|
+
*
|
|
6
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
7
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
8
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
9
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
10
|
+
* reaches an archive whose `page_meta` predates this change. This mirrors
|
|
11
|
+
* {@link import('./migrate-info-roots.js').migrateInfoRoots}'s `info.roots`
|
|
12
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column set that
|
|
13
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
14
|
+
*
|
|
15
|
+
* Idempotent: a no-op once the columns exist. Guards on `page_meta`'s
|
|
16
|
+
* existence defensively, though by the time this runs (after `initSchema`,
|
|
17
|
+
* itself after `assertCompatibleVersion` rejects pre-0.13 archives) the
|
|
18
|
+
* table is always present.
|
|
19
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
20
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
21
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
22
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
23
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
24
|
+
* `console.error` when omitted (direct/test callers).
|
|
25
|
+
*/
|
|
26
|
+
export declare function migrateMainContentsColumns(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add the beholder `MainContentsData` / `ScrollHeightData` denormalised
|
|
3
|
+
* aggregate columns to `page_meta` on archives created before this feature.
|
|
4
|
+
*
|
|
5
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
6
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
7
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
8
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
9
|
+
* reaches an archive whose `page_meta` predates this change. This mirrors
|
|
10
|
+
* {@link import('./migrate-info-roots.js').migrateInfoRoots}'s `info.roots`
|
|
11
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column set that
|
|
12
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent: a no-op once the columns exist. Guards on `page_meta`'s
|
|
15
|
+
* existence defensively, though by the time this runs (after `initSchema`,
|
|
16
|
+
* itself after `assertCompatibleVersion` rejects pre-0.13 archives) the
|
|
17
|
+
* table is always present.
|
|
18
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
19
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
20
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
21
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
22
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
23
|
+
* `console.error` when omitted (direct/test callers).
|
|
24
|
+
*/
|
|
25
|
+
export async function migrateMainContentsColumns(instance, onLog) {
|
|
26
|
+
const hasPageMeta = await instance.schema.hasTable('page_meta');
|
|
27
|
+
if (!hasPageMeta) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const hasColumn = await instance.schema.hasColumn('page_meta', 'main_content_word_count');
|
|
31
|
+
if (hasColumn) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
await instance.schema.table('page_meta', (t) => {
|
|
35
|
+
t.string('main_content_node_name');
|
|
36
|
+
t.string('main_content_id');
|
|
37
|
+
t.string('main_content_role');
|
|
38
|
+
t.string('main_content_selector');
|
|
39
|
+
t.text('main_content_class_list');
|
|
40
|
+
t.integer('main_content_word_count');
|
|
41
|
+
t.integer('main_content_body_word_count');
|
|
42
|
+
t.integer('main_content_heading_count');
|
|
43
|
+
t.integer('main_content_image_count');
|
|
44
|
+
t.integer('main_content_table_count');
|
|
45
|
+
t.integer('main_content_button_count');
|
|
46
|
+
t.integer('main_content_iframe_count');
|
|
47
|
+
t.integer('main_content_video_count');
|
|
48
|
+
t.integer('main_content_audio_count');
|
|
49
|
+
t.integer('main_content_canvas_count');
|
|
50
|
+
t.integer('scroll_height_desktop');
|
|
51
|
+
t.integer('scroll_height_mobile');
|
|
52
|
+
});
|
|
53
|
+
const message = '[migrate] page_meta.main_content_* / scroll_height_* columns added';
|
|
54
|
+
if (onLog) {
|
|
55
|
+
onLog(message);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// oxlint-disable-next-line no-console
|
|
59
|
+
console.error(message);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `page_meta.body_hash` column to archives created before this
|
|
4
|
+
* feature, then ensures its index exists.
|
|
5
|
+
*
|
|
6
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
7
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
8
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
9
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
10
|
+
* reaches an archive whose `page_meta` predates this change. This mirrors
|
|
11
|
+
* {@link import('./migrate-main-contents-columns.js').migrateMainContentsColumns}'s
|
|
12
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
13
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
14
|
+
*
|
|
15
|
+
* The index is created here — unconditionally, after the column-add guard,
|
|
16
|
+
* not inside `createEntityTables`'s DDL — for both a fresh archive (where
|
|
17
|
+
* `body_hash` already exists from the DDL, so only the index still needs
|
|
18
|
+
* creating) and a legacy archive (where the column is added just above,
|
|
19
|
+
* then the index follows in the same call). `createEntityTables` runs
|
|
20
|
+
* unconditionally on every archive open, including legacy archives that
|
|
21
|
+
* still lack `body_hash` at that point; an unconditional
|
|
22
|
+
* `CREATE INDEX ... body_hash` there would fail with `no such column` before
|
|
23
|
+
* this migration ever runs. This function is the one place guaranteed to
|
|
24
|
+
* run only after the column is confirmed present, for both archive kinds.
|
|
25
|
+
*
|
|
26
|
+
* Only adds the column and its index — it does not backfill values for
|
|
27
|
+
* existing rows (they stay `NULL`). That backfill runs separately, from
|
|
28
|
+
* `backfillBodyHashFromHtmlBlobs` during a viewer-read-model build, since it
|
|
29
|
+
* requires decompressing every page's stored HTML and is too heavy to run on
|
|
30
|
+
* every archive open.
|
|
31
|
+
*
|
|
32
|
+
* Idempotent: adding the column is a no-op once it exists (the index
|
|
33
|
+
* creation always runs, but `IF NOT EXISTS` makes repeat runs a no-op too).
|
|
34
|
+
* Guards on `page_meta`'s existence defensively, though by the time this
|
|
35
|
+
* runs (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
36
|
+
* pre-0.13 archives) the table is always present.
|
|
37
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
38
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
39
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
40
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
41
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
42
|
+
* `console.error` when omitted (direct/test callers).
|
|
43
|
+
*/
|
|
44
|
+
export declare function migratePageMetaBodyHash(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `page_meta.body_hash` column to archives created before this
|
|
3
|
+
* feature, then ensures its index exists.
|
|
4
|
+
*
|
|
5
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
6
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
7
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
8
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
9
|
+
* reaches an archive whose `page_meta` predates this change. This mirrors
|
|
10
|
+
* {@link import('./migrate-main-contents-columns.js').migrateMainContentsColumns}'s
|
|
11
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
12
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
13
|
+
*
|
|
14
|
+
* The index is created here — unconditionally, after the column-add guard,
|
|
15
|
+
* not inside `createEntityTables`'s DDL — for both a fresh archive (where
|
|
16
|
+
* `body_hash` already exists from the DDL, so only the index still needs
|
|
17
|
+
* creating) and a legacy archive (where the column is added just above,
|
|
18
|
+
* then the index follows in the same call). `createEntityTables` runs
|
|
19
|
+
* unconditionally on every archive open, including legacy archives that
|
|
20
|
+
* still lack `body_hash` at that point; an unconditional
|
|
21
|
+
* `CREATE INDEX ... body_hash` there would fail with `no such column` before
|
|
22
|
+
* this migration ever runs. This function is the one place guaranteed to
|
|
23
|
+
* run only after the column is confirmed present, for both archive kinds.
|
|
24
|
+
*
|
|
25
|
+
* Only adds the column and its index — it does not backfill values for
|
|
26
|
+
* existing rows (they stay `NULL`). That backfill runs separately, from
|
|
27
|
+
* `backfillBodyHashFromHtmlBlobs` during a viewer-read-model build, since it
|
|
28
|
+
* requires decompressing every page's stored HTML and is too heavy to run on
|
|
29
|
+
* every archive open.
|
|
30
|
+
*
|
|
31
|
+
* Idempotent: adding the column is a no-op once it exists (the index
|
|
32
|
+
* creation always runs, but `IF NOT EXISTS` makes repeat runs a no-op too).
|
|
33
|
+
* Guards on `page_meta`'s existence defensively, though by the time this
|
|
34
|
+
* runs (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
35
|
+
* pre-0.13 archives) the table is always present.
|
|
36
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
37
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
38
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
39
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
40
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
41
|
+
* `console.error` when omitted (direct/test callers).
|
|
42
|
+
*/
|
|
43
|
+
export async function migratePageMetaBodyHash(instance, onLog) {
|
|
44
|
+
const hasPageMeta = await instance.schema.hasTable('page_meta');
|
|
45
|
+
if (!hasPageMeta) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const hasColumn = await instance.schema.hasColumn('page_meta', 'body_hash');
|
|
49
|
+
if (!hasColumn) {
|
|
50
|
+
await instance.schema.table('page_meta', (t) => {
|
|
51
|
+
t.binary('body_hash');
|
|
52
|
+
});
|
|
53
|
+
const message = '[migrate] page_meta.body_hash column added';
|
|
54
|
+
if (onLog) {
|
|
55
|
+
onLog(message);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// oxlint-disable-next-line no-console
|
|
59
|
+
console.error(message);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
await instance.raw('CREATE INDEX IF NOT EXISTS idx_page_meta_body_hash ON page_meta(body_hash)');
|
|
63
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `page_meta.console_error_count` column to archives created
|
|
4
|
+
* before this feature (issue #228).
|
|
5
|
+
*
|
|
6
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
7
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
8
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
9
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
10
|
+
* reaches an archive whose `page_meta` predates this change. Same
|
|
11
|
+
* catch-up shape as {@link import('./migrate-page-meta-body-hash.js').migratePageMetaBodyHash}.
|
|
12
|
+
*
|
|
13
|
+
* Unlike `body_hash`, there is no separate backfill step: a page that has
|
|
14
|
+
* never been re-scraped since this feature shipped has no
|
|
15
|
+
* `page_console_logs` rows either, so `0` (the value `replaceConsoleLogs`
|
|
16
|
+
* writes for a page with no error/pageerror entries) is already the
|
|
17
|
+
* correct value, not a placeholder pending backfill.
|
|
18
|
+
*
|
|
19
|
+
* Idempotent: adding the column is a no-op once it exists.
|
|
20
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
21
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
22
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
23
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
24
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
25
|
+
* `console.error` when omitted (direct/test callers).
|
|
26
|
+
*/
|
|
27
|
+
export declare function migratePageMetaConsoleErrorCount(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `page_meta.console_error_count` column to archives created
|
|
3
|
+
* before this feature (issue #228).
|
|
4
|
+
*
|
|
5
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
6
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
7
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
8
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
9
|
+
* reaches an archive whose `page_meta` predates this change. Same
|
|
10
|
+
* catch-up shape as {@link import('./migrate-page-meta-body-hash.js').migratePageMetaBodyHash}.
|
|
11
|
+
*
|
|
12
|
+
* Unlike `body_hash`, there is no separate backfill step: a page that has
|
|
13
|
+
* never been re-scraped since this feature shipped has no
|
|
14
|
+
* `page_console_logs` rows either, so `0` (the value `replaceConsoleLogs`
|
|
15
|
+
* writes for a page with no error/pageerror entries) is already the
|
|
16
|
+
* correct value, not a placeholder pending backfill.
|
|
17
|
+
*
|
|
18
|
+
* Idempotent: adding the column is a no-op once it exists.
|
|
19
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
20
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
21
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
22
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
23
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
24
|
+
* `console.error` when omitted (direct/test callers).
|
|
25
|
+
*/
|
|
26
|
+
export async function migratePageMetaConsoleErrorCount(instance, onLog) {
|
|
27
|
+
const hasPageMeta = await instance.schema.hasTable('page_meta');
|
|
28
|
+
if (!hasPageMeta) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const hasColumn = await instance.schema.hasColumn('page_meta', 'console_error_count');
|
|
32
|
+
if (!hasColumn) {
|
|
33
|
+
await instance.schema.table('page_meta', (t) => {
|
|
34
|
+
t.integer('console_error_count');
|
|
35
|
+
});
|
|
36
|
+
const message = '[migrate] page_meta.console_error_count column added';
|
|
37
|
+
if (onLog) {
|
|
38
|
+
onLog(message);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// oxlint-disable-next-line no-console
|
|
42
|
+
console.error(message);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `page_meta.main_content_custom_element_count` column to archives
|
|
4
|
+
* created before this feature.
|
|
5
|
+
*
|
|
6
|
+
* `page_meta` is provisioned via a bare `CREATE TABLE IF NOT EXISTS` in
|
|
7
|
+
* {@link import('./create-entity-tables.js').createEntityTables}, which
|
|
8
|
+
* self-heals a *missing table* on every `initSchema` call but is a no-op
|
|
9
|
+
* against an *existing* table — adding a column to the DDL string never
|
|
10
|
+
* reaches an archive whose `page_meta` predates this change. Same catch-up
|
|
11
|
+
* shape as {@link import('./migrate-page-meta-console-error-count.js').migratePageMetaConsoleErrorCount}.
|
|
12
|
+
*
|
|
13
|
+
* Deliberately its own file rather than an addition to
|
|
14
|
+
* {@link import('./migrate-main-contents-columns.js').migrateMainContentsColumns}:
|
|
15
|
+
* that migration early-returns once its sentinel column
|
|
16
|
+
* (`main_content_word_count`) already exists, so an archive that predates
|
|
17
|
+
* only this one column (but already has the other sixteen main-content
|
|
18
|
+
* columns) would never reach an appended `ALTER TABLE` inside it.
|
|
19
|
+
*
|
|
20
|
+
* No separate backfill: a page that has never been re-scraped since this
|
|
21
|
+
* feature shipped stays `NULL` (unknown), which is correct — it is not
|
|
22
|
+
* conflated with `0` (capture succeeded, zero custom elements found). See
|
|
23
|
+
* {@link import('./meta/compute-main-contents-denormalized.js').computeMainContentsDenormalized}.
|
|
24
|
+
*
|
|
25
|
+
* Idempotent: adding the column is a no-op once it exists.
|
|
26
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
27
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
28
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
29
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
30
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
31
|
+
* `console.error` when omitted (direct/test callers).
|
|
32
|
+
*/
|
|
33
|
+
export declare function migratePageMetaCustomElementCount(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|