@nitpicker/archive 0.0.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1056 -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 +804 -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 +47 -0
- package/lib/filesystem/parse-tar-size-field.d.ts +13 -0
- package/lib/filesystem/parse-tar-size-field.js +40 -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 +130 -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/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,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared type definitions for archive-side meta processing helpers under {@link ./}.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the shape of {@link Meta} after archive-side
|
|
5
|
+
* derivation: flat columns persisted to the `pages` table, denormalised
|
|
6
|
+
* aggregates, per-row shapes for `page_jsonld` / `page_tags`, and the summary
|
|
7
|
+
* objects returned by `get-page-detail` consumers.
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { compareSemver } from './compare-semver.js';
|
|
11
|
+
/**
|
|
12
|
+
* Error thrown by `assert-compatible-version` when the archive's
|
|
13
|
+
* `info.version` is older than the format version this build accepts.
|
|
14
|
+
*
|
|
15
|
+
* Catch this at CLI / viewer boundaries to print a friendly message; do not
|
|
16
|
+
* confuse with generic `Error` thrown by `Database.connect` (lockfile / I/O).
|
|
17
|
+
* @example
|
|
18
|
+
* try {
|
|
19
|
+
* const accessor = await Archive.openCached(filePath);
|
|
20
|
+
* } catch (error) {
|
|
21
|
+
* if (error instanceof IncompatibleArchiveError) {
|
|
22
|
+
* // Message names the migration script(s) to run.
|
|
23
|
+
* console.error(error.message);
|
|
24
|
+
* } else {
|
|
25
|
+
* throw error;
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
*/
|
|
29
|
+
export class IncompatibleArchiveError extends Error {
|
|
30
|
+
archiveVersion;
|
|
31
|
+
requiredVersion;
|
|
32
|
+
/**
|
|
33
|
+
* @param archiveVersion - The `info.version` value read from the archive
|
|
34
|
+
* (or `'unknown'` when the column is missing / null).
|
|
35
|
+
* @param requiredVersion - The minimum format version this build accepts
|
|
36
|
+
* (semver string, e.g. `'0.13.0'`).
|
|
37
|
+
*/
|
|
38
|
+
constructor(archiveVersion, requiredVersion) {
|
|
39
|
+
super(`Archive uses Nitpicker ${archiveVersion}; this build requires ${requiredVersion} or newer. ` +
|
|
40
|
+
`Run ${suggestMigrationScript(archiveVersion)} to produce an upgraded copy next to it.`);
|
|
41
|
+
this.archiveVersion = archiveVersion;
|
|
42
|
+
this.requiredVersion = requiredVersion;
|
|
43
|
+
this.name = 'IncompatibleArchiveError';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Selects the migration script an operator should run to bring
|
|
48
|
+
* `archiveVersion` up to the current {@link IncompatibleArchiveError.requiredVersion}.
|
|
49
|
+
* Chained: pre-0.10 archives run migrate-to-0.10 first, then
|
|
50
|
+
* migrate-to-0.13 — so the message points at BOTH steps in order.
|
|
51
|
+
* 0.10.0-through-0.12.x archives only need migrate-to-0.13.
|
|
52
|
+
*
|
|
53
|
+
* Uses {@link compareSemver} instead of `<` string comparison: `'0.9.0'`
|
|
54
|
+
* lexicographically compares GREATER than `'0.10.0'` (because `'9' > '1'`),
|
|
55
|
+
* which would misroute pre-0.10 archives into the single-step hint and
|
|
56
|
+
* make the resulting migrator invocation fail with a confusing error.
|
|
57
|
+
* @param archiveVersion - Semver read from `info.version`, or `'unknown'`.
|
|
58
|
+
* @returns Bracketed command string for embedding into the error message.
|
|
59
|
+
*/
|
|
60
|
+
function suggestMigrationScript(archiveVersion) {
|
|
61
|
+
if (archiveVersion === 'unknown' || compareSemver(archiveVersion, '0.10.0') < 0) {
|
|
62
|
+
return '`node scripts/migrate-to-0.10.mjs <path>` (then `node scripts/migrate-to-0.13.mjs <path>`)';
|
|
63
|
+
}
|
|
64
|
+
return '`node scripts/migrate-to-0.13.mjs <path>`';
|
|
65
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `content_items.alias_of_id` column to archives created before
|
|
4
|
+
* this feature, then ensures its index exists.
|
|
5
|
+
*
|
|
6
|
+
* `content_items` 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 `content_items` predates this change. This
|
|
11
|
+
* mirrors {@link import('./migrate-page-meta-body-hash.js').migratePageMetaBodyHash}'s
|
|
12
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
13
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
14
|
+
*
|
|
15
|
+
* Uses a raw `ALTER TABLE` (not the knex schema builder) so the retrofitted
|
|
16
|
+
* column's `REFERENCES content_items(id) DEFERRABLE INITIALLY DEFERRED`
|
|
17
|
+
* constraint matches the fresh-archive DDL bit-for-bit — the same
|
|
18
|
+
* self-referencing shape as `redirect_dest_id` (see
|
|
19
|
+
* `create-entity-tables.ts`'s JSDoc on why that FK must be deferred: a
|
|
20
|
+
* lower-id row can reference a higher-id row within the same write).
|
|
21
|
+
*
|
|
22
|
+
* The index is created here — unconditionally, after the column-add guard,
|
|
23
|
+
* not inside `createEntityTables`'s DDL — for both a fresh archive (where
|
|
24
|
+
* `alias_of_id` already exists from the DDL, so only the index still needs
|
|
25
|
+
* creating) and a legacy archive (where the column is added just above,
|
|
26
|
+
* then the index follows in the same call). `createEntityTables` runs
|
|
27
|
+
* unconditionally on every archive open, including legacy archives that
|
|
28
|
+
* still lack `alias_of_id` at that point; an unconditional
|
|
29
|
+
* `CREATE INDEX ... alias_of_id` there would fail with `no such column`
|
|
30
|
+
* before this migration ever runs. This function is the one place
|
|
31
|
+
* guaranteed to run only after the column is confirmed present, for both
|
|
32
|
+
* archive kinds.
|
|
33
|
+
*
|
|
34
|
+
* Only adds the column and its index — it does not compute values for
|
|
35
|
+
* existing rows (they stay `NULL`). That computation runs separately, from
|
|
36
|
+
* `backfillAliasOfId` during a viewer-read-model build, since it requires
|
|
37
|
+
* comparing every page's title and (for the trailing-slash tier) its
|
|
38
|
+
* `body_hash` against every other page.
|
|
39
|
+
*
|
|
40
|
+
* Idempotent: adding the column is a no-op once it exists (the index
|
|
41
|
+
* creation always runs, but `IF NOT EXISTS` makes repeat runs a no-op too).
|
|
42
|
+
* Guards on `content_items`'s existence defensively, though by the time this
|
|
43
|
+
* runs (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
44
|
+
* pre-0.13 archives) the table is always present.
|
|
45
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
46
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
47
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
48
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
49
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
50
|
+
* `console.error` when omitted (direct/test callers).
|
|
51
|
+
*/
|
|
52
|
+
export declare function migrateContentItemsAliasOfId(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `content_items.alias_of_id` column to archives created before
|
|
3
|
+
* this feature, then ensures its index exists.
|
|
4
|
+
*
|
|
5
|
+
* `content_items` 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 `content_items` predates this change. This
|
|
10
|
+
* mirrors {@link import('./migrate-page-meta-body-hash.js').migratePageMetaBodyHash}'s
|
|
11
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
12
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
13
|
+
*
|
|
14
|
+
* Uses a raw `ALTER TABLE` (not the knex schema builder) so the retrofitted
|
|
15
|
+
* column's `REFERENCES content_items(id) DEFERRABLE INITIALLY DEFERRED`
|
|
16
|
+
* constraint matches the fresh-archive DDL bit-for-bit — the same
|
|
17
|
+
* self-referencing shape as `redirect_dest_id` (see
|
|
18
|
+
* `create-entity-tables.ts`'s JSDoc on why that FK must be deferred: a
|
|
19
|
+
* lower-id row can reference a higher-id row within the same write).
|
|
20
|
+
*
|
|
21
|
+
* The index is created here — unconditionally, after the column-add guard,
|
|
22
|
+
* not inside `createEntityTables`'s DDL — for both a fresh archive (where
|
|
23
|
+
* `alias_of_id` already exists from the DDL, so only the index still needs
|
|
24
|
+
* creating) and a legacy archive (where the column is added just above,
|
|
25
|
+
* then the index follows in the same call). `createEntityTables` runs
|
|
26
|
+
* unconditionally on every archive open, including legacy archives that
|
|
27
|
+
* still lack `alias_of_id` at that point; an unconditional
|
|
28
|
+
* `CREATE INDEX ... alias_of_id` there would fail with `no such column`
|
|
29
|
+
* before this migration ever runs. This function is the one place
|
|
30
|
+
* guaranteed to run only after the column is confirmed present, for both
|
|
31
|
+
* archive kinds.
|
|
32
|
+
*
|
|
33
|
+
* Only adds the column and its index — it does not compute values for
|
|
34
|
+
* existing rows (they stay `NULL`). That computation runs separately, from
|
|
35
|
+
* `backfillAliasOfId` during a viewer-read-model build, since it requires
|
|
36
|
+
* comparing every page's title and (for the trailing-slash tier) its
|
|
37
|
+
* `body_hash` against every other page.
|
|
38
|
+
*
|
|
39
|
+
* Idempotent: adding the column is a no-op once it exists (the index
|
|
40
|
+
* creation always runs, but `IF NOT EXISTS` makes repeat runs a no-op too).
|
|
41
|
+
* Guards on `content_items`'s existence defensively, though by the time this
|
|
42
|
+
* runs (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
43
|
+
* pre-0.13 archives) the table is always present.
|
|
44
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
45
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
46
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
47
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
48
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
49
|
+
* `console.error` when omitted (direct/test callers).
|
|
50
|
+
*/
|
|
51
|
+
export async function migrateContentItemsAliasOfId(instance, onLog) {
|
|
52
|
+
const hasContentItems = await instance.schema.hasTable('content_items');
|
|
53
|
+
if (!hasContentItems) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const hasColumn = await instance.schema.hasColumn('content_items', 'alias_of_id');
|
|
57
|
+
if (!hasColumn) {
|
|
58
|
+
await instance.raw('ALTER TABLE content_items ADD COLUMN alias_of_id INTEGER REFERENCES content_items(id) DEFERRABLE INITIALLY DEFERRED');
|
|
59
|
+
const message = '[migrate] content_items.alias_of_id column added';
|
|
60
|
+
if (onLog) {
|
|
61
|
+
onLog(message);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// eslint-disable-next-line no-console
|
|
65
|
+
console.error(message);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
await instance.raw('CREATE INDEX IF NOT EXISTS idx_content_items_alias_of_id ON content_items(alias_of_id)');
|
|
69
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `content_items.dedupe_cap_event_id` column to archives created
|
|
4
|
+
* before this feature.
|
|
5
|
+
*
|
|
6
|
+
* `content_items` 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 `content_items` predates this change. This
|
|
11
|
+
* mirrors {@link import('./migrate-content-items-alias-of-id.js').migrateContentItemsAliasOfId}'s
|
|
12
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
13
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
14
|
+
*
|
|
15
|
+
* Uses a raw `ALTER TABLE` (not the knex schema builder) so the retrofitted
|
|
16
|
+
* column's `REFERENCES dedupe_cap_events(id) DEFERRABLE INITIALLY DEFERRED`
|
|
17
|
+
* constraint matches the fresh-archive DDL bit-for-bit.
|
|
18
|
+
*
|
|
19
|
+
* Unlike `migrateContentItemsAliasOfId`, this migration never creates an
|
|
20
|
+
* index for the column — `--dedupe-cap` is opt-in and the number of rows a
|
|
21
|
+
* cap event ever marks is small (capped shapes × matching URLs), so there is
|
|
22
|
+
* no measured hot path to justify one. See `createEntityTables`'s DDL
|
|
23
|
+
* comment for the same reasoning.
|
|
24
|
+
*
|
|
25
|
+
* Only adds the column — it does not compute values for existing rows (they
|
|
26
|
+
* stay `NULL`). That computation runs separately, from
|
|
27
|
+
* `backfillDedupeCapEventId` during a viewer-read-model build, since it
|
|
28
|
+
* requires recomputing `computeShapeKey` against every internal page's URL
|
|
29
|
+
* and matching it against `dedupe_cap_events.shape_key`.
|
|
30
|
+
*
|
|
31
|
+
* Idempotent: adding the column is a no-op once it exists. Guards on
|
|
32
|
+
* `content_items`'s existence defensively, though by the time this runs
|
|
33
|
+
* (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
34
|
+
* pre-0.13 archives) the table is always present.
|
|
35
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
36
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
37
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
38
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
39
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
40
|
+
* `console.error` when omitted (direct/test callers).
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* await migrateContentItemsDedupeCapEventId(knex);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function migrateContentItemsDedupeCapEventId(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `content_items.dedupe_cap_event_id` column to archives created
|
|
3
|
+
* before this feature.
|
|
4
|
+
*
|
|
5
|
+
* `content_items` 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 `content_items` predates this change. This
|
|
10
|
+
* mirrors {@link import('./migrate-content-items-alias-of-id.js').migrateContentItemsAliasOfId}'s
|
|
11
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
12
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
13
|
+
*
|
|
14
|
+
* Uses a raw `ALTER TABLE` (not the knex schema builder) so the retrofitted
|
|
15
|
+
* column's `REFERENCES dedupe_cap_events(id) DEFERRABLE INITIALLY DEFERRED`
|
|
16
|
+
* constraint matches the fresh-archive DDL bit-for-bit.
|
|
17
|
+
*
|
|
18
|
+
* Unlike `migrateContentItemsAliasOfId`, this migration never creates an
|
|
19
|
+
* index for the column — `--dedupe-cap` is opt-in and the number of rows a
|
|
20
|
+
* cap event ever marks is small (capped shapes × matching URLs), so there is
|
|
21
|
+
* no measured hot path to justify one. See `createEntityTables`'s DDL
|
|
22
|
+
* comment for the same reasoning.
|
|
23
|
+
*
|
|
24
|
+
* Only adds the column — it does not compute values for existing rows (they
|
|
25
|
+
* stay `NULL`). That computation runs separately, from
|
|
26
|
+
* `backfillDedupeCapEventId` during a viewer-read-model build, since it
|
|
27
|
+
* requires recomputing `computeShapeKey` against every internal page's URL
|
|
28
|
+
* and matching it against `dedupe_cap_events.shape_key`.
|
|
29
|
+
*
|
|
30
|
+
* Idempotent: adding the column is a no-op once it exists. Guards on
|
|
31
|
+
* `content_items`'s existence defensively, though by the time this runs
|
|
32
|
+
* (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
33
|
+
* pre-0.13 archives) the table is always present.
|
|
34
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
35
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
36
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
37
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
38
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
39
|
+
* `console.error` when omitted (direct/test callers).
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* await migrateContentItemsDedupeCapEventId(knex);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export async function migrateContentItemsDedupeCapEventId(instance, onLog) {
|
|
46
|
+
const hasContentItems = await instance.schema.hasTable('content_items');
|
|
47
|
+
if (!hasContentItems) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const hasColumn = await instance.schema.hasColumn('content_items', 'dedupe_cap_event_id');
|
|
51
|
+
if (!hasColumn) {
|
|
52
|
+
await instance.raw('ALTER TABLE content_items ADD COLUMN dedupe_cap_event_id INTEGER REFERENCES dedupe_cap_events(id) DEFERRABLE INITIALLY DEFERRED');
|
|
53
|
+
const message = '[migrate] content_items.dedupe_cap_event_id column added';
|
|
54
|
+
if (onLog) {
|
|
55
|
+
onLog(message);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.error(message);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `content_items.is_metadata_only` column to archives created
|
|
4
|
+
* before this feature.
|
|
5
|
+
*
|
|
6
|
+
* `content_items` 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 `content_items` predates this change. This
|
|
11
|
+
* mirrors {@link import('./migrate-content-items-dedupe-cap-event-id.js').migrateContentItemsDedupeCapEventId}'s
|
|
12
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
13
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
14
|
+
*
|
|
15
|
+
* Unlike that migration, this column is `NOT NULL DEFAULT 0` (not nullable):
|
|
16
|
+
* SQLite requires a `DEFAULT` on `ALTER TABLE ... ADD COLUMN ... NOT NULL`,
|
|
17
|
+
* and the fresh-archive DDL carries the same `DEFAULT 0` so both paths stay
|
|
18
|
+
* bit-for-bit identical (see `createEntityTables`'s DDL comment). Existing
|
|
19
|
+
* rows backfill to `0` (not metadata-only) — a strict-pending row from
|
|
20
|
+
* before this migration was always resumed as a full-scrape target anyway
|
|
21
|
+
* (the bug this column fixes), so `0` preserves that prior behaviour rather
|
|
22
|
+
* than silently reclassifying already-crawled archives.
|
|
23
|
+
*
|
|
24
|
+
* No index: the only reader (`getCrawlingState`) already filters to
|
|
25
|
+
* `scraped = 0 AND is_external = 0` first, a small set. See
|
|
26
|
+
* `createEntityTables`'s DDL comment for the same "no speculative index"
|
|
27
|
+
* reasoning applied to `dedupe_cap_event_id`.
|
|
28
|
+
*
|
|
29
|
+
* Idempotent: adding the column is a no-op once it exists. Guards on
|
|
30
|
+
* `content_items`'s existence defensively, though by the time this runs
|
|
31
|
+
* (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
32
|
+
* pre-0.13 archives) the table is always present.
|
|
33
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
34
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
35
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
36
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
37
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
38
|
+
* `console.error` when omitted (direct/test callers).
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* await migrateContentItemsIsMetadataOnly(knex);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function migrateContentItemsIsMetadataOnly(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `content_items.is_metadata_only` column to archives created
|
|
3
|
+
* before this feature.
|
|
4
|
+
*
|
|
5
|
+
* `content_items` 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 `content_items` predates this change. This
|
|
10
|
+
* mirrors {@link import('./migrate-content-items-dedupe-cap-event-id.js').migrateContentItemsDedupeCapEventId}'s
|
|
11
|
+
* catch-up: a `hasColumn`-guarded `ALTER TABLE` for the one column
|
|
12
|
+
* `CREATE TABLE IF NOT EXISTS` cannot retrofit.
|
|
13
|
+
*
|
|
14
|
+
* Unlike that migration, this column is `NOT NULL DEFAULT 0` (not nullable):
|
|
15
|
+
* SQLite requires a `DEFAULT` on `ALTER TABLE ... ADD COLUMN ... NOT NULL`,
|
|
16
|
+
* and the fresh-archive DDL carries the same `DEFAULT 0` so both paths stay
|
|
17
|
+
* bit-for-bit identical (see `createEntityTables`'s DDL comment). Existing
|
|
18
|
+
* rows backfill to `0` (not metadata-only) — a strict-pending row from
|
|
19
|
+
* before this migration was always resumed as a full-scrape target anyway
|
|
20
|
+
* (the bug this column fixes), so `0` preserves that prior behaviour rather
|
|
21
|
+
* than silently reclassifying already-crawled archives.
|
|
22
|
+
*
|
|
23
|
+
* No index: the only reader (`getCrawlingState`) already filters to
|
|
24
|
+
* `scraped = 0 AND is_external = 0` first, a small set. See
|
|
25
|
+
* `createEntityTables`'s DDL comment for the same "no speculative index"
|
|
26
|
+
* reasoning applied to `dedupe_cap_event_id`.
|
|
27
|
+
*
|
|
28
|
+
* Idempotent: adding the column is a no-op once it exists. Guards on
|
|
29
|
+
* `content_items`'s existence defensively, though by the time this runs
|
|
30
|
+
* (after `initSchema`, itself after `assertCompatibleVersion` rejects
|
|
31
|
+
* pre-0.13 archives) the table is always present.
|
|
32
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
33
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
34
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
35
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
36
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
37
|
+
* `console.error` when omitted (direct/test callers).
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* await migrateContentItemsIsMetadataOnly(knex);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export async function migrateContentItemsIsMetadataOnly(instance, onLog) {
|
|
44
|
+
const hasContentItems = await instance.schema.hasTable('content_items');
|
|
45
|
+
if (!hasContentItems) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const hasColumn = await instance.schema.hasColumn('content_items', 'is_metadata_only');
|
|
49
|
+
if (!hasColumn) {
|
|
50
|
+
await instance.raw('ALTER TABLE content_items ADD COLUMN is_metadata_only INTEGER NOT NULL DEFAULT 0');
|
|
51
|
+
const message = '[migrate] content_items.is_metadata_only column added';
|
|
52
|
+
if (onLog) {
|
|
53
|
+
onLog(message);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// eslint-disable-next-line no-console
|
|
57
|
+
console.error(message);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the 0.13 entity / edge tables (issue #192) to archives created
|
|
4
|
+
* before the 0.13 format.
|
|
5
|
+
*
|
|
6
|
+
* These are the 6 core normalised tables (`content_items`, `page_meta`,
|
|
7
|
+
* `resource_items`, `anchor_edges`, `resource_ref_edges`, `image_items`) that
|
|
8
|
+
* replace the legacy write model in the 0.13 format. Fresh archives get
|
|
9
|
+
* them via `initSchema`; this migration is called only by
|
|
10
|
+
* `scripts/migrate-to-0.13.mjs` as its schema catch-up step for pre-0.13
|
|
11
|
+
* input archives. The archive-open path (`db-ops/lifecycle/init.ts`) does
|
|
12
|
+
* not run it — `assertCompatibleVersion` guarantees every openable
|
|
13
|
+
* archive already has the full table set.
|
|
14
|
+
*
|
|
15
|
+
* The migration is intentionally table-only. It does not back-fill any data
|
|
16
|
+
* from `pages` / `resources` / `anchors` / `images` — that is the job of the
|
|
17
|
+
* population steps (`populateRefTables` + `populateEntityTables`), which
|
|
18
|
+
* read from the legacy tables and write
|
|
19
|
+
* the entity rows in a single WAL transaction with `.bak` protection. This
|
|
20
|
+
* migration only guarantees the empty tables exist so the populate step can
|
|
21
|
+
* INSERT into them without hitting `SQLITE_ERROR: no such table:
|
|
22
|
+
* content_items`.
|
|
23
|
+
*
|
|
24
|
+
* **Blocked-by contract**: `createEntityTables` references the
|
|
25
|
+
* 0.13 ref tables (`url_refs`, `content_type_refs`, `text_refs`,
|
|
26
|
+
* `json_refs`, `blob_refs`, `header_sets`) via `REFERENCES`. On an
|
|
27
|
+
* existing archive, `migrateRefTables` MUST have run first so the
|
|
28
|
+
* ref tables exist by the time this migration is applied.
|
|
29
|
+
* `scripts/migrate-to-0.13.mjs` orders the two calls statically so this
|
|
30
|
+
* ordering is enforced there, not here.
|
|
31
|
+
*
|
|
32
|
+
* `content_items` also declares `dedupe_cap_event_id REFERENCES
|
|
33
|
+
* dedupe_cap_events(id)` — an adjunct table (`createAdjunctTables`), not a
|
|
34
|
+
* ref table. This function only creates the empty tables (schema-only, see
|
|
35
|
+
* above), so it does not itself need `dedupe_cap_events` to exist. Callers
|
|
36
|
+
* that write data into `content_items` afterward do: under `PRAGMA
|
|
37
|
+
* foreign_keys = ON`, SQLite refuses to even prepare an INSERT/UPDATE
|
|
38
|
+
* against a table with an unresolvable `REFERENCES` target, so
|
|
39
|
+
* `scripts/migrate-to-0.13.mjs` creates adjunct tables immediately after
|
|
40
|
+
* this migration and before any entity-table data write.
|
|
41
|
+
*
|
|
42
|
+
* **Idempotency**: `createEntityTables` itself uses
|
|
43
|
+
* `CREATE TABLE IF NOT EXISTS` / `CREATE INDEX IF NOT EXISTS` for every
|
|
44
|
+
* statement, so calling it multiple times against any DB state is safe.
|
|
45
|
+
* That means this wrapper does not need a defensive sentinel — the
|
|
46
|
+
* "content_items exists but page_meta was dropped externally" partial-
|
|
47
|
+
* corruption case is fully repaired on next open because every CREATE
|
|
48
|
+
* statement individually checks its own existence. The one thing the
|
|
49
|
+
* wrapper adds beyond the primitive is a log line, which we still want
|
|
50
|
+
* to emit only when creation actually happened, so we probe
|
|
51
|
+
* `content_items` first and short-circuit when the schema is already
|
|
52
|
+
* fully installed.
|
|
53
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
54
|
+
*/
|
|
55
|
+
export declare function migrateEntityTables(instance: Knex): Promise<void>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createEntityTables } from './create-entity-tables.js';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the 0.13 entity / edge tables (issue #192) to archives created
|
|
4
|
+
* before the 0.13 format.
|
|
5
|
+
*
|
|
6
|
+
* These are the 6 core normalised tables (`content_items`, `page_meta`,
|
|
7
|
+
* `resource_items`, `anchor_edges`, `resource_ref_edges`, `image_items`) that
|
|
8
|
+
* replace the legacy write model in the 0.13 format. Fresh archives get
|
|
9
|
+
* them via `initSchema`; this migration is called only by
|
|
10
|
+
* `scripts/migrate-to-0.13.mjs` as its schema catch-up step for pre-0.13
|
|
11
|
+
* input archives. The archive-open path (`db-ops/lifecycle/init.ts`) does
|
|
12
|
+
* not run it — `assertCompatibleVersion` guarantees every openable
|
|
13
|
+
* archive already has the full table set.
|
|
14
|
+
*
|
|
15
|
+
* The migration is intentionally table-only. It does not back-fill any data
|
|
16
|
+
* from `pages` / `resources` / `anchors` / `images` — that is the job of the
|
|
17
|
+
* population steps (`populateRefTables` + `populateEntityTables`), which
|
|
18
|
+
* read from the legacy tables and write
|
|
19
|
+
* the entity rows in a single WAL transaction with `.bak` protection. This
|
|
20
|
+
* migration only guarantees the empty tables exist so the populate step can
|
|
21
|
+
* INSERT into them without hitting `SQLITE_ERROR: no such table:
|
|
22
|
+
* content_items`.
|
|
23
|
+
*
|
|
24
|
+
* **Blocked-by contract**: `createEntityTables` references the
|
|
25
|
+
* 0.13 ref tables (`url_refs`, `content_type_refs`, `text_refs`,
|
|
26
|
+
* `json_refs`, `blob_refs`, `header_sets`) via `REFERENCES`. On an
|
|
27
|
+
* existing archive, `migrateRefTables` MUST have run first so the
|
|
28
|
+
* ref tables exist by the time this migration is applied.
|
|
29
|
+
* `scripts/migrate-to-0.13.mjs` orders the two calls statically so this
|
|
30
|
+
* ordering is enforced there, not here.
|
|
31
|
+
*
|
|
32
|
+
* `content_items` also declares `dedupe_cap_event_id REFERENCES
|
|
33
|
+
* dedupe_cap_events(id)` — an adjunct table (`createAdjunctTables`), not a
|
|
34
|
+
* ref table. This function only creates the empty tables (schema-only, see
|
|
35
|
+
* above), so it does not itself need `dedupe_cap_events` to exist. Callers
|
|
36
|
+
* that write data into `content_items` afterward do: under `PRAGMA
|
|
37
|
+
* foreign_keys = ON`, SQLite refuses to even prepare an INSERT/UPDATE
|
|
38
|
+
* against a table with an unresolvable `REFERENCES` target, so
|
|
39
|
+
* `scripts/migrate-to-0.13.mjs` creates adjunct tables immediately after
|
|
40
|
+
* this migration and before any entity-table data write.
|
|
41
|
+
*
|
|
42
|
+
* **Idempotency**: `createEntityTables` itself uses
|
|
43
|
+
* `CREATE TABLE IF NOT EXISTS` / `CREATE INDEX IF NOT EXISTS` for every
|
|
44
|
+
* statement, so calling it multiple times against any DB state is safe.
|
|
45
|
+
* That means this wrapper does not need a defensive sentinel — the
|
|
46
|
+
* "content_items exists but page_meta was dropped externally" partial-
|
|
47
|
+
* corruption case is fully repaired on next open because every CREATE
|
|
48
|
+
* statement individually checks its own existence. The one thing the
|
|
49
|
+
* wrapper adds beyond the primitive is a log line, which we still want
|
|
50
|
+
* to emit only when creation actually happened, so we probe
|
|
51
|
+
* `content_items` first and short-circuit when the schema is already
|
|
52
|
+
* fully installed.
|
|
53
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
54
|
+
*/
|
|
55
|
+
export async function migrateEntityTables(instance) {
|
|
56
|
+
const hasContentItems = await instance.schema.hasTable('content_items');
|
|
57
|
+
if (hasContentItems) {
|
|
58
|
+
// Fast path: fully installed. `createEntityTables` would
|
|
59
|
+
// still be a safe no-op, but re-running it just to be defensive
|
|
60
|
+
// wastes 15 IF NOT EXISTS round-trips on every archive open.
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
await createEntityTables(instance);
|
|
64
|
+
// eslint-disable-next-line no-console
|
|
65
|
+
console.error('[migrate] 0.13 entity/edge tables created');
|
|
66
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `info.createdCwd` column to archives created before it existed.
|
|
4
|
+
* `CREATE TABLE IF NOT EXISTS` (used for `info` itself) cannot retrofit a new
|
|
5
|
+
* column onto an already-existing table, so this lightweight,
|
|
6
|
+
* `hasColumn`-guarded `ALTER TABLE` runs on every `initSchema` call —
|
|
7
|
+
* idempotent, and self-healing for archives whose provisioning crashed
|
|
8
|
+
* partway through. A stub missing this column simply falls back to
|
|
9
|
+
* `Archive.resume`'s own `process.cwd()`, same as before this column existed.
|
|
10
|
+
* @param instance - The Knex query builder instance connected to the database.
|
|
11
|
+
* @param onLog - Called instead of `console.error` when this migration
|
|
12
|
+
* actually applies (issue #294: a bare `console.error` here can fire
|
|
13
|
+
* while a `@d-zero/dealer` `Lanes`/`TaskList` display is mid-redraw during
|
|
14
|
+
* `Archive.open`, corrupting its cursor tracking). Falls back to
|
|
15
|
+
* `console.error` when omitted (direct/test callers).
|
|
16
|
+
*/
|
|
17
|
+
export declare function migrateInfoCreatedCwd(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `info.createdCwd` column to archives created before it existed.
|
|
3
|
+
* `CREATE TABLE IF NOT EXISTS` (used for `info` itself) cannot retrofit a new
|
|
4
|
+
* 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. A stub missing this column simply falls back to
|
|
8
|
+
* `Archive.resume`'s own `process.cwd()`, same as before this column existed.
|
|
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 async function migrateInfoCreatedCwd(instance, onLog) {
|
|
17
|
+
const hasInfo = await instance.schema.hasTable('info');
|
|
18
|
+
if (!hasInfo) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const hasColumn = await instance.schema.hasColumn('info', 'createdCwd');
|
|
22
|
+
if (hasColumn) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
await instance.schema.table('info', (t) => {
|
|
26
|
+
t.string('createdCwd');
|
|
27
|
+
});
|
|
28
|
+
const message = '[migrate] info.createdCwd column added';
|
|
29
|
+
if (onLog) {
|
|
30
|
+
onLog(message);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
console.error(message);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `info.mainContentSelector` column to archives created before it
|
|
4
|
+
* existed. `CREATE TABLE IF NOT EXISTS` (used for `info` itself) cannot
|
|
5
|
+
* retrofit a new column onto an already-existing table, so this lightweight,
|
|
6
|
+
* `hasColumn`-guarded `ALTER TABLE` runs on every `initSchema` call —
|
|
7
|
+
* idempotent, and self-healing for archives whose provisioning crashed
|
|
8
|
+
* 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 migrateInfoMainContentSelector(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the `info.mainContentSelector` 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 migrateInfoMainContentSelector(instance, onLog) {
|
|
16
|
+
const hasInfo = await instance.schema.hasTable('info');
|
|
17
|
+
if (!hasInfo) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const hasColumn = await instance.schema.hasColumn('info', 'mainContentSelector');
|
|
21
|
+
if (hasColumn) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await instance.schema.table('info', (t) => {
|
|
25
|
+
t.string('mainContentSelector');
|
|
26
|
+
});
|
|
27
|
+
const message = '[migrate] info.mainContentSelector column added';
|
|
28
|
+
if (onLog) {
|
|
29
|
+
onLog(message);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// eslint-disable-next-line no-console
|
|
33
|
+
console.error(message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the `info.requestHeaderNames` column to archives created before it
|
|
4
|
+
* existed. `CREATE TABLE IF NOT EXISTS` (used for `info` itself) cannot
|
|
5
|
+
* retrofit a new column onto an already-existing table, so this lightweight,
|
|
6
|
+
* `hasColumn`-guarded `ALTER TABLE` runs on every `initSchema` call —
|
|
7
|
+
* idempotent, and self-healing for archives whose provisioning crashed
|
|
8
|
+
* 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 migrateInfoRequestHeaderNames(instance: Knex, onLog?: (message: string) => void): Promise<void>;
|