@nitpicker/archive 0.0.0-stage → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +105 -2
- 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 +360 -5
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
import type { DomPathCandidate } from './populate-entity-tables/types.js';
|
|
2
|
+
import type { PageData } from './utils/types/types.js';
|
|
3
|
+
import type { ParseURLOptions } from '@d-zero/shared/parse-url';
|
|
4
|
+
/**
|
|
5
|
+
* A scraped page payload optionally enriched with the in-browser
|
|
6
|
+
* dom-path capture (`@nitpicker/crawler`'s `crawler/capture-image-dom-paths.ts`): every `<img>`
|
|
7
|
+
* of the rendered document as `{ outerHTML, path }` pairs in document
|
|
8
|
+
* order. The write path matches these against `imageList[].sourceCode`
|
|
9
|
+
* to resolve `image_items.dom_path_text_id`; when absent (capture
|
|
10
|
+
* failed, metadata-only scrape, or a caller that never renders), every
|
|
11
|
+
* image falls back to the synthetic `unknown/<n>` marker.
|
|
12
|
+
*/
|
|
13
|
+
export type PageDataWithDomPaths = PageData & {
|
|
14
|
+
/** In-browser dom-path capture for the rendered document's images. */
|
|
15
|
+
imageDomPaths?: readonly DomPathCandidate[];
|
|
16
|
+
/**
|
|
17
|
+
* In-browser Web Component (custom element) capture for the rendered
|
|
18
|
+
* document's main-content region (`@nitpicker/crawler`'s `crawler/capture-custom-elements.ts`).
|
|
19
|
+
* `undefined` means capture was not attempted or failed — a distinct
|
|
20
|
+
* state from "capture succeeded, zero elements found" (empty array).
|
|
21
|
+
*/
|
|
22
|
+
mainContentCustomElements?: readonly MainContentCustomElementCandidate[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Event map for database-related events emitted by the Database and ArchiveAccessor classes.
|
|
26
|
+
* @example
|
|
27
|
+
* archive.on('error', (error) => {
|
|
28
|
+
* console.error('database failure:', error.message);
|
|
29
|
+
* });
|
|
30
|
+
*/
|
|
31
|
+
export interface DatabaseEvent {
|
|
32
|
+
/** An error that occurred during a database operation. */
|
|
33
|
+
error: Error;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Configuration stored in the archive database's `info` table.
|
|
37
|
+
* Represents all crawling options that were used for the crawl session.
|
|
38
|
+
* @example
|
|
39
|
+
* const config = await archive.getConfig();
|
|
40
|
+
* console.log(config.roots, config.userAgent, config.parallels);
|
|
41
|
+
*/
|
|
42
|
+
export interface Config extends Required<Pick<ParseURLOptions, 'disableQueries'>> {
|
|
43
|
+
/** The starting URL for the crawl. Stored as a denormalised mirror of `roots[0]` so summary consumers can read a single URL without parsing the array. */
|
|
44
|
+
baseUrl: string;
|
|
45
|
+
/** The user-provided root URLs that seeded the crawl. Each root is both a recursive starting point and a scope entry. Always non-empty. */
|
|
46
|
+
roots: string[];
|
|
47
|
+
/** Maximum directory depth for excluded paths. */
|
|
48
|
+
maxExcludedDepth: number;
|
|
49
|
+
/** Keywords used to exclude pages from crawling. */
|
|
50
|
+
excludeKeywords: string[];
|
|
51
|
+
/** URL patterns to exclude from crawling. */
|
|
52
|
+
excludes: string[];
|
|
53
|
+
/** URL prefixes to exclude from crawling. */
|
|
54
|
+
excludeUrls: string[];
|
|
55
|
+
/** Whether to fetch external (off-site) pages. */
|
|
56
|
+
fetchExternal: boolean;
|
|
57
|
+
/** Whether the crawl was initiated from a URL list rather than recursive discovery. */
|
|
58
|
+
fromList: boolean;
|
|
59
|
+
/** Whether to collect image data during crawling. */
|
|
60
|
+
image: boolean;
|
|
61
|
+
/** Interval in milliseconds between requests. */
|
|
62
|
+
interval: number;
|
|
63
|
+
/** The name identifier for this crawl session. */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Number of parallel crawling processes. */
|
|
66
|
+
parallels: number;
|
|
67
|
+
/** Whether to recursively follow links. */
|
|
68
|
+
recursive: boolean;
|
|
69
|
+
/** Maximum number of retry attempts per URL on scrape failure. */
|
|
70
|
+
retry: number;
|
|
71
|
+
/** The version of Nitpicker that created this archive. */
|
|
72
|
+
version: string;
|
|
73
|
+
/** User-Agent string used for HTTP requests. */
|
|
74
|
+
userAgent: string;
|
|
75
|
+
/** Whether robots.txt restrictions were ignored during crawling. */
|
|
76
|
+
ignoreRobots: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* CSS selector overriding beholder's automatic main-content-region
|
|
79
|
+
* detection, or `null`/omitted to use the automatic heuristic.
|
|
80
|
+
*/
|
|
81
|
+
mainContentSelector?: string | null;
|
|
82
|
+
/**
|
|
83
|
+
* Names (never values) of the extra request headers the crawl was started
|
|
84
|
+
* with (`--header` / `--authorization` / `--header-file`). Header values
|
|
85
|
+
* are credentials and are deliberately NOT persisted — `.nitpicker` files
|
|
86
|
+
* are shared between users. The names exist only so a later
|
|
87
|
+
* `--resume` / `--append` / `--retry-failed` / `--recrawl` / `--inventory`
|
|
88
|
+
* run can warn that the operator did not re-supply them. Empty/omitted
|
|
89
|
+
* means no extra headers were used.
|
|
90
|
+
*/
|
|
91
|
+
requestHeaderNames?: string[];
|
|
92
|
+
/**
|
|
93
|
+
* The `process.cwd()` recorded when this session's stub (tmpDir) was
|
|
94
|
+
* created by `CrawlerOrchestrator.crawling` / `.append` / `.inventory` /
|
|
95
|
+
* `.recrawl` / `.retryFailed` — NOT written by `.resume` itself, which
|
|
96
|
+
* only reads it. `Archive.resume` uses this (falling back to its own
|
|
97
|
+
* `process.cwd()` for a stub that predates this column) to reconstruct
|
|
98
|
+
* the completed archive's output path independent of the directory
|
|
99
|
+
* `crawl --resume` happens to be invoked from.
|
|
100
|
+
*
|
|
101
|
+
* `.nitpicker` files are routinely shared between users, and this local
|
|
102
|
+
* absolute path (which can embed a username / project layout) has no
|
|
103
|
+
* business surviving into a shared archive — `Archive.write` scrubs the
|
|
104
|
+
* column back to `null` immediately before packaging, so it only ever
|
|
105
|
+
* exists in an unpackaged stub.
|
|
106
|
+
*
|
|
107
|
+
* WHY (for future stub-limited fields): if you add another column meant
|
|
108
|
+
* to live only in the unpackaged stub, pair it with a matching scrub in
|
|
109
|
+
* `Archive.write` (`archive.ts`) — nothing enforces this automatically,
|
|
110
|
+
* and a forgotten scrub silently leaks the field into every shared
|
|
111
|
+
* `.nitpicker` from then on.
|
|
112
|
+
*/
|
|
113
|
+
createdCwd?: string | null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Provenance of a page or resource row — which crawler channel originally
|
|
117
|
+
* inserted it. Stored as `content_items.source` / `resource_items.source`
|
|
118
|
+
* in the SQLite schema (NOT NULL DEFAULT `'crawled'`).
|
|
119
|
+
*
|
|
120
|
+
* - `'crawled'` — discovered via the recursive crawl rooted at `info.roots`.
|
|
121
|
+
* Default for rows that predate the `--inventory` feature.
|
|
122
|
+
* - `'inventory-seed'` — supplied directly by a `crawl --inventory` URL
|
|
123
|
+
* list. For pages this is the HTML URL that was rendered; for resources
|
|
124
|
+
* this is a non-HTML URL handed in by the list (HEAD-fetched without
|
|
125
|
+
* rendering).
|
|
126
|
+
* - `'inventory-discovered'` — found by following links from an
|
|
127
|
+
* `inventory-seed` page, OR (for resources) loaded by puppeteer while
|
|
128
|
+
* rendering one of those pages.
|
|
129
|
+
*
|
|
130
|
+
* Used by the viewer as a badge and to indicate why a row was added.
|
|
131
|
+
* Isolation queries (`listIsolatedPages` / `listUnusedResources`) judge
|
|
132
|
+
* orphans by `referrer = 0`, NOT by this value — `source` only labels
|
|
133
|
+
* the row.
|
|
134
|
+
* @example
|
|
135
|
+
* if (page.source !== 'crawled') {
|
|
136
|
+
* // Row was introduced by a `crawl --inventory` pass.
|
|
137
|
+
* }
|
|
138
|
+
*/
|
|
139
|
+
export type PageSource = 'crawled' | 'inventory-seed' | 'inventory-discovered';
|
|
140
|
+
/**
|
|
141
|
+
* One row written to the `list_reconcile_runs` audit table on each
|
|
142
|
+
* successful `--inventory <list>` or `--recrawl <list>` invocation.
|
|
143
|
+
*
|
|
144
|
+
* Schema-mirror interface: every column on `list_reconcile_runs` is
|
|
145
|
+
* represented here. Only `ran_at` is required — every other field is
|
|
146
|
+
* nullable so a raw-SQL backfill (a one-off `sqlite3 INSERT` recording a
|
|
147
|
+
* reconcile pass that predates this table) can omit summary
|
|
148
|
+
* stats it cannot reconstruct.
|
|
149
|
+
*
|
|
150
|
+
* The audit log is append-only: there is intentionally no UPDATE path,
|
|
151
|
+
* no UNIQUE constraint on `source_file_sha256`, and no FK to pages /
|
|
152
|
+
* resources — re-applying the same list yields a second row. Duplicate
|
|
153
|
+
* detection is a read-side concern; `source_file_sha256` is recorded as
|
|
154
|
+
* the content-identity key it would use.
|
|
155
|
+
* @example
|
|
156
|
+
* await archive.recordListReconcileRun({
|
|
157
|
+
* ran_at: new Date().toISOString(),
|
|
158
|
+
* list_label: 'prod-2026-06',
|
|
159
|
+
* total_lines: 113_268,
|
|
160
|
+
* new_pages: 1234,
|
|
161
|
+
* new_resources: 56,
|
|
162
|
+
* scope_skipped: 7,
|
|
163
|
+
* exclude_skipped: 3,
|
|
164
|
+
* });
|
|
165
|
+
*/
|
|
166
|
+
export interface ListReconcileRunMeta {
|
|
167
|
+
/** ISO 8601 timestamp at which the run completed (e.g. `'2026-06-21T11:30:00+09:00'`). */
|
|
168
|
+
ran_at: string;
|
|
169
|
+
/** Human-readable identifier (e.g. `'prod-2026-06-21'`). `null` when the caller did not supply one. */
|
|
170
|
+
list_label?: string | null;
|
|
171
|
+
/** SHA-256 hex digest of the source file. `null` for programmatic callers that built the URL list in-memory (no source file to hash). */
|
|
172
|
+
source_file_sha256?: string | null;
|
|
173
|
+
/** Number of valid URLs in the input list, after the CLI has warned-and-dropped unparseable-URL lines but before scope filtering. */
|
|
174
|
+
total_lines?: number | null;
|
|
175
|
+
/** Number of new HTML seeds inserted as `content_items` rows by this run. */
|
|
176
|
+
new_pages?: number | null;
|
|
177
|
+
/** Number of new non-HTML URLs inserted as `resource_items` rows by this run. */
|
|
178
|
+
new_resources?: number | null;
|
|
179
|
+
/** Number of input URLs dropped because they fell outside the archived scope. */
|
|
180
|
+
scope_skipped?: number | null;
|
|
181
|
+
/** Number of novel in-scope input URLs recorded as terminal skipped pages (`is_skipped=1`, `skip_reason='excluded'`) instead of being imported, because they matched the effective `excludes` / `excludeUrls` config. Pure audit output like every other count on this row — written once per run, read back only by `listReconcileRuns` display surfaces, never consumed by any runtime decision. `null` on rows written before the column existed (those runs predate ingestion-side exclusion — their excluded URLs were imported as real pages/resources, not counted). */
|
|
182
|
+
exclude_skipped?: number | null;
|
|
183
|
+
/** Number of source-file lines dropped by the CLI for failing URL validation, before this row's `total_lines` was counted. `null` for programmatic callers that built the URL list in-memory (no source file to have invalid lines). */
|
|
184
|
+
invalid_skipped?: number | null;
|
|
185
|
+
/** Free-form text for backfill annotations or operator notes. */
|
|
186
|
+
notes?: string | null;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Result of {@link Database.resetPagesByUrls}: the URLs actually reset back
|
|
190
|
+
* to pending, plus the URLs excluded from reset grouped by why — a caller
|
|
191
|
+
* (`CrawlerOrchestrator.recrawl`) reports each exclusion category to the
|
|
192
|
+
* operator separately rather than lumping them into one opaque count.
|
|
193
|
+
*
|
|
194
|
+
* A URL can appear in at most one of these four arrays: `resetUrls` when it
|
|
195
|
+
* matched the reset candidate criteria, or exactly one exclusion array when
|
|
196
|
+
* it matched an existing page row but failed one of the conservative guards.
|
|
197
|
+
* A URL with no matching row in the archive at all (not yet known) appears in
|
|
198
|
+
* none of them — that case is the caller's "novel URL" handling, not this
|
|
199
|
+
* function's concern.
|
|
200
|
+
*/
|
|
201
|
+
export interface ResetPagesByUrlsResult {
|
|
202
|
+
/** URLs whose row was reset to `scraped = 0` and had its derived data cleared. */
|
|
203
|
+
resetUrls: string[];
|
|
204
|
+
/** URLs excluded because the matching row is a redirect source (`redirect_dest_id` is set) — resetting it would discard a real 3xx observation. */
|
|
205
|
+
excludedRedirects: string[];
|
|
206
|
+
/** URLs excluded because the matching row was intentionally skipped (`is_skipped = 1`, e.g. `excludes`/`excludeUrls`) — the exclusion still applies. */
|
|
207
|
+
excludedSkipped: string[];
|
|
208
|
+
/** URLs excluded because the matching row is external (`is_external = 1`) — bringing a scope-external URL back into scope is `--append`'s job, not a URL-list re-fetch. */
|
|
209
|
+
excludedExternal: string[];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* A row in `network_outages` — one detected operator-network outage.
|
|
213
|
+
*
|
|
214
|
+
* Append-only except `ended_at`: it is written once, `NULL`, when the
|
|
215
|
+
* outage is first detected, and updated exactly once when a recovery probe
|
|
216
|
+
* succeeds. A row can also be left `ended_at = NULL` forever if the crawl
|
|
217
|
+
* process is killed mid-outage — readers must resolve this via a clamp
|
|
218
|
+
* (see `is-within-outage-window.ts` and the `db-ops/outages/` writer that
|
|
219
|
+
* closes stale-open rows on the next writer session), never by treating
|
|
220
|
+
* `NULL` as an unbounded window.
|
|
221
|
+
*/
|
|
222
|
+
export interface NetworkOutageRow {
|
|
223
|
+
id: number;
|
|
224
|
+
/** Epoch ms, backdated to the earliest error still inside the detector's sliding window at trigger time. */
|
|
225
|
+
started_at: number;
|
|
226
|
+
/** Epoch ms the sliding window actually crossed both thresholds. */
|
|
227
|
+
detected_at: number;
|
|
228
|
+
/** Epoch ms the recovery probe first succeeded, or `null` while still open / if the session crashed before recovery. */
|
|
229
|
+
ended_at: number | null;
|
|
230
|
+
/** Hostname the recovery probe targeted, or `null` if none was available (see `choose-probe-host.ts`). */
|
|
231
|
+
probe_host: string | null;
|
|
232
|
+
/** Error count in the detector's window at trigger time. */
|
|
233
|
+
trigger_error_count: number;
|
|
234
|
+
/** Distinct host count in the detector's window at trigger time. */
|
|
235
|
+
trigger_host_count: number;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Fields required to record a newly-detected outage via
|
|
239
|
+
* `Database.insertNetworkOutage`. camelCase (unlike {@link NetworkOutageRow}
|
|
240
|
+
* / {@link ListReconcileRunMeta}) because callers build this directly from
|
|
241
|
+
* `NetworkOutageDetector`'s camelCase `OutageSuspect` plus a probe host —
|
|
242
|
+
* the db-op does the camelCase → snake_case column mapping on write.
|
|
243
|
+
*/
|
|
244
|
+
export interface InsertNetworkOutageParams {
|
|
245
|
+
/** Backdated to the earliest error still inside the detector's window at trigger time. */
|
|
246
|
+
startedAt: number;
|
|
247
|
+
/** When the sliding window actually crossed both thresholds. */
|
|
248
|
+
detectedAt: number;
|
|
249
|
+
/** Hostname the recovery probe will target, or `null` if none was available. */
|
|
250
|
+
probeHost: string | null;
|
|
251
|
+
triggerErrorCount: number;
|
|
252
|
+
triggerHostCount: number;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Fields required to record a newly-capped URL shape via
|
|
256
|
+
* `Database.insertDedupeCapEvent`. camelCase, mapped to snake_case columns
|
|
257
|
+
* on write — same convention as {@link InsertNetworkOutageParams}.
|
|
258
|
+
*/
|
|
259
|
+
export interface InsertDedupeCapEventParams {
|
|
260
|
+
shapeKey: string;
|
|
261
|
+
sampleUrl: string;
|
|
262
|
+
bodyHash: Buffer;
|
|
263
|
+
effectiveThreshold: number;
|
|
264
|
+
observedCount: number;
|
|
265
|
+
detectedAt: number;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* One previously-scraped internal page's raw fields, read back from
|
|
269
|
+
* `content_items` / `page_meta` / `url_refs` / `text_refs`, in the exact
|
|
270
|
+
* shape `buildDedupeCapObservation` needs to reconstruct the
|
|
271
|
+
* `DedupeCapObservation` that page would have produced during a live crawl.
|
|
272
|
+
* Produced by `listDedupeCapObservations` — see that function for the row
|
|
273
|
+
* selection criteria (which pages qualify, and why).
|
|
274
|
+
*
|
|
275
|
+
* Nullable fields mirror the LEFT JOINed `text_refs` / `url_refs` columns
|
|
276
|
+
* they come from (a page with no `<title>`, no meta description, or no
|
|
277
|
+
* `og:title`/`og:url` leaves the corresponding ref column NULL).
|
|
278
|
+
*/
|
|
279
|
+
export interface DedupeCapObservationRow {
|
|
280
|
+
/**
|
|
281
|
+
* `url_refs.url`, in `withoutHashAndAuth` form — matches how
|
|
282
|
+
* `computeShapeKey`'s live callers key their gate lookups. No hash
|
|
283
|
+
* fragment survives here even if the original page URL had one (the
|
|
284
|
+
* archive never stores it) — see `buildDedupeCapObservation`'s JSDoc
|
|
285
|
+
* for why this makes its `ogUrlMismatch` reconstruction an
|
|
286
|
+
* approximation for hash-carrying URLs.
|
|
287
|
+
*/
|
|
288
|
+
url: string;
|
|
289
|
+
/** `page_meta.title_text_id` → `text_refs.text`. Never NULL in practice (beholder always returns at least `''`), but read as nullable since the join can't guarantee it. */
|
|
290
|
+
title: string | null;
|
|
291
|
+
/** `page_meta.description_text_id` → `text_refs.text`. */
|
|
292
|
+
description: string | null;
|
|
293
|
+
/** `page_meta.og_title_text_id` → `text_refs.text`. */
|
|
294
|
+
ogTitle: string | null;
|
|
295
|
+
/**
|
|
296
|
+
* `page_meta.og_url_id` → `url_refs.url` — already absolutised at write
|
|
297
|
+
* time (`derive-flat-from-meta.ts`), not the raw `og:url` attribute
|
|
298
|
+
* value. See `buildDedupeCapObservation`'s JSDoc for why this makes its
|
|
299
|
+
* `metaSig` component an approximation for relative-`og:url` templates.
|
|
300
|
+
*/
|
|
301
|
+
ogUrl: string | null;
|
|
302
|
+
/** `page_meta.body_hash`. Rows with a NULL body hash are excluded by `listDedupeCapObservations` itself, so this is always present by the time a row reaches this type — kept non-nullable here for that reason. */
|
|
303
|
+
bodyHash: Buffer;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Filter type for querying pages from the database.
|
|
307
|
+
*
|
|
308
|
+
* - `'page'` - HTML pages that are crawl targets
|
|
309
|
+
* - `'page-included-no-target'` - All HTML pages, including non-target pages
|
|
310
|
+
* - `'external-page'` - HTML pages on external domains
|
|
311
|
+
* - `'internal-page'` - HTML pages on the crawled domain
|
|
312
|
+
* - `'no-page'` - Non-HTML resources (e.g., images, PDFs)
|
|
313
|
+
* - `'external-no-page'` - External non-HTML resources
|
|
314
|
+
* - `'internal-no-page'` - Internal non-HTML resources
|
|
315
|
+
* @example
|
|
316
|
+
* const internalHtmlPages = await accessor.getPages('internal-page');
|
|
317
|
+
*/
|
|
318
|
+
export type PageFilter = 'page' | 'page-included-no-target' | 'external-page' | 'internal-page' | 'no-page' | 'external-no-page' | 'internal-no-page';
|
|
319
|
+
/**
|
|
320
|
+
* Flat page-row shape.
|
|
321
|
+
*
|
|
322
|
+
* Serves two roles: (1) the read shape that
|
|
323
|
+
* `db-ops/pages/read/reconstruct-page-rows.ts` rebuilds by joining the
|
|
324
|
+
* entity / ref tables (`content_items` / `page_meta` / `url_refs` …), and
|
|
325
|
+
* (2) the raw row shape of the pre-0.13 legacy `pages` table, which only
|
|
326
|
+
* exists inside pre-0.13 input archives and is read by the 0.13 migration
|
|
327
|
+
* populate code. Most meta fields are derived from beholder 3.0.0's nested
|
|
328
|
+
* {@link import('./meta/types.js').Meta} via
|
|
329
|
+
* `archive/meta/derive-flat-from-meta.ts` and are stored as plain scalars
|
|
330
|
+
* for SQL-level filter / projection. The catch-all `meta_extras` JSON
|
|
331
|
+
* column preserves nested sub-objects not flattened above.
|
|
332
|
+
* @example
|
|
333
|
+
* const pages = await accessor.getPages('page');
|
|
334
|
+
* for (const page of pages) {
|
|
335
|
+
* console.log(page.url, page.status, page.title);
|
|
336
|
+
* }
|
|
337
|
+
*/
|
|
338
|
+
export interface DB_Page {
|
|
339
|
+
/** Auto-incremented primary key. */
|
|
340
|
+
id: number;
|
|
341
|
+
/** The canonical URL of the page. */
|
|
342
|
+
url: string;
|
|
343
|
+
/** Foreign key to the redirect destination page, or null if not redirected. */
|
|
344
|
+
redirectDestId: number | null;
|
|
345
|
+
/** Whether the page has been scraped (1) or is still pending (0). */
|
|
346
|
+
scraped: 0 | 1;
|
|
347
|
+
/** Whether the page is a crawl target (1) or discovered incidentally (0). */
|
|
348
|
+
isTarget: 0 | 1;
|
|
349
|
+
/** Whether the page is on an external domain (1) or internal (0). */
|
|
350
|
+
isExternal: 0 | 1;
|
|
351
|
+
/** HTTP response status code, or null if not yet fetched. */
|
|
352
|
+
status: number | null;
|
|
353
|
+
/** HTTP response status text (e.g., "OK", "Not Found"), or null if not yet fetched. */
|
|
354
|
+
statusText: string | null;
|
|
355
|
+
/** MIME content type of the response (e.g., "text/html"), or null if unknown. */
|
|
356
|
+
contentType: string | null;
|
|
357
|
+
/** Content length in bytes, or null if unknown. */
|
|
358
|
+
contentLength: number | null;
|
|
359
|
+
/** JSON-serialized HTTP response headers. */
|
|
360
|
+
responseHeaders: string;
|
|
361
|
+
/** The `lang` attribute value from the HTML element, or null. */
|
|
362
|
+
lang: string | null;
|
|
363
|
+
/** The `dir` attribute value, or null. */
|
|
364
|
+
dir: string | null;
|
|
365
|
+
/** The `<meta charset>` value, or null. */
|
|
366
|
+
charset: string | null;
|
|
367
|
+
/** Absolutised `<base href>`, or null. */
|
|
368
|
+
baseHref: string | null;
|
|
369
|
+
/** The raw `<meta name="viewport">` content, or null. */
|
|
370
|
+
viewport_raw: string | null;
|
|
371
|
+
/** The primary `<meta name="theme-color">` (no media), or null. */
|
|
372
|
+
themeColor: string | null;
|
|
373
|
+
/** `<meta name="application-name">`, or null. */
|
|
374
|
+
applicationName: string | null;
|
|
375
|
+
/** `<meta name="author">`, or null. */
|
|
376
|
+
author: string | null;
|
|
377
|
+
/** `<meta name="generator">`, or null. */
|
|
378
|
+
generator: string | null;
|
|
379
|
+
/** `<meta name="publisher">`, or null. */
|
|
380
|
+
publisher: string | null;
|
|
381
|
+
/** The page title from the `<title>` element, or null. */
|
|
382
|
+
title: string | null;
|
|
383
|
+
/** The meta description content, or null. */
|
|
384
|
+
description: string | null;
|
|
385
|
+
/** The meta keywords content, or null. */
|
|
386
|
+
keywords: string | null;
|
|
387
|
+
/** The raw `<meta name="robots">` content, or null. */
|
|
388
|
+
robots_raw: string | null;
|
|
389
|
+
/** Whether the noindex directive is set (SQLite INTEGER 0/1). */
|
|
390
|
+
robots_noindex: number | null;
|
|
391
|
+
/** Whether the nofollow directive is set (SQLite INTEGER 0/1). */
|
|
392
|
+
robots_nofollow: number | null;
|
|
393
|
+
/** Whether the noarchive directive is set (SQLite INTEGER 0/1). */
|
|
394
|
+
robots_noarchive: number | null;
|
|
395
|
+
/** Whether the noimageindex directive is set (SQLite INTEGER 0/1). */
|
|
396
|
+
robots_noimageindex: number | null;
|
|
397
|
+
/** `<meta name="googlebot">` content, or null. */
|
|
398
|
+
googlebot: string | null;
|
|
399
|
+
/** Absolutised `<link rel="canonical">` href, or null. */
|
|
400
|
+
canonical: string | null;
|
|
401
|
+
/** Absolutised `<link rel="amphtml">` href, or null. */
|
|
402
|
+
amphtml: string | null;
|
|
403
|
+
/** Absolutised `<link rel="manifest">` href, or null. */
|
|
404
|
+
manifest: string | null;
|
|
405
|
+
/** Absolutised `<link rel="icon">` href, or null. */
|
|
406
|
+
icon_href: string | null;
|
|
407
|
+
/** Absolutised `<link rel="apple-touch-icon">` href, or null. */
|
|
408
|
+
appleTouchIcon_href: string | null;
|
|
409
|
+
/** og:type, or null. */
|
|
410
|
+
og_type: string | null;
|
|
411
|
+
/** og:title, or null. */
|
|
412
|
+
og_title: string | null;
|
|
413
|
+
/** Absolutised og:url, or null. */
|
|
414
|
+
og_url: string | null;
|
|
415
|
+
/** og:site_name, or null. */
|
|
416
|
+
og_site_name: string | null;
|
|
417
|
+
/** og:description, or null. */
|
|
418
|
+
og_description: string | null;
|
|
419
|
+
/** Absolutised og:image (first if multiple), or null. */
|
|
420
|
+
og_image: string | null;
|
|
421
|
+
/** og:image:alt, or null. */
|
|
422
|
+
og_image_alt: string | null;
|
|
423
|
+
/** og:image:width as a string (per spec), or null. */
|
|
424
|
+
og_image_width: string | null;
|
|
425
|
+
/** og:image:height as a string (per spec), or null. */
|
|
426
|
+
og_image_height: string | null;
|
|
427
|
+
/** og:locale, or null. */
|
|
428
|
+
og_locale: string | null;
|
|
429
|
+
/** og:article:published_time, or null. */
|
|
430
|
+
og_article_published_time: string | null;
|
|
431
|
+
/** og:article:modified_time, or null. */
|
|
432
|
+
og_article_modified_time: string | null;
|
|
433
|
+
/** twitter:card, or null. */
|
|
434
|
+
twitter_card: string | null;
|
|
435
|
+
/** twitter:site, or null. */
|
|
436
|
+
twitter_site: string | null;
|
|
437
|
+
/** twitter:creator, or null. */
|
|
438
|
+
twitter_creator: string | null;
|
|
439
|
+
/** twitter:title, or null. */
|
|
440
|
+
twitter_title: string | null;
|
|
441
|
+
/** twitter:description, or null. */
|
|
442
|
+
twitter_description: string | null;
|
|
443
|
+
/** Absolutised twitter:image (or twitter:image:src fallback), or null. */
|
|
444
|
+
twitter_image: string | null;
|
|
445
|
+
/** Facebook app id (`fb:app_id`), or null. */
|
|
446
|
+
fb_app_id: string | null;
|
|
447
|
+
/** Google site verification token, or null. */
|
|
448
|
+
verification_google: string | null;
|
|
449
|
+
/** `format-detection` telephone (SQLite INTEGER 0/1), or null. */
|
|
450
|
+
formatDetection_telephone: number | null;
|
|
451
|
+
/** First time this page row was inserted (UNIX ms), or null on legacy rows. */
|
|
452
|
+
firstCrawledAt: number | null;
|
|
453
|
+
/** Last successful re-scrape time (UNIX ms), or null on legacy rows. */
|
|
454
|
+
lastCrawledAt: number | null;
|
|
455
|
+
/** Number of `page_tags` rows belonging to this page. */
|
|
456
|
+
tag_count: number | null;
|
|
457
|
+
/** `meta.jsonLd.length + meta.speculationRules.length` at scrape time. */
|
|
458
|
+
jsonld_count: number | null;
|
|
459
|
+
/** Sorted unique provider names, comma-separated (empty string when none). */
|
|
460
|
+
tags_providers_csv: string | null;
|
|
461
|
+
/** Detected main-content element's `nodeName` (e.g. `'MAIN'`), or null. */
|
|
462
|
+
main_content_node_name: string | null;
|
|
463
|
+
/** Detected main-content element's `id`, or null. */
|
|
464
|
+
main_content_id: string | null;
|
|
465
|
+
/** Detected main-content element's `role` attribute, or null. */
|
|
466
|
+
main_content_role: string | null;
|
|
467
|
+
/** Diagnostic tag+id+class selector for the detected element, or null. */
|
|
468
|
+
main_content_selector: string | null;
|
|
469
|
+
/** JSON-encoded array of the detected element's CSS classes, or null. */
|
|
470
|
+
main_content_class_list: string | null;
|
|
471
|
+
/** Character count of the main region's text content, or null. */
|
|
472
|
+
main_content_word_count: number | null;
|
|
473
|
+
/** Character count of `document.body`'s text content, or null. */
|
|
474
|
+
main_content_body_word_count: number | null;
|
|
475
|
+
/** Number of headings within the main region, or null. */
|
|
476
|
+
main_content_heading_count: number | null;
|
|
477
|
+
/** Number of images within the main region, or null. */
|
|
478
|
+
main_content_image_count: number | null;
|
|
479
|
+
/** Number of tables within the main region, or null. */
|
|
480
|
+
main_content_table_count: number | null;
|
|
481
|
+
/** Number of button-like elements within the main region, or null. */
|
|
482
|
+
main_content_button_count: number | null;
|
|
483
|
+
/** Number of iframes within the main region, or null. */
|
|
484
|
+
main_content_iframe_count: number | null;
|
|
485
|
+
/** Number of videos within the main region, or null. */
|
|
486
|
+
main_content_video_count: number | null;
|
|
487
|
+
/** Number of audios within the main region, or null. */
|
|
488
|
+
main_content_audio_count: number | null;
|
|
489
|
+
/** Number of canvases within the main region, or null. */
|
|
490
|
+
main_content_canvas_count: number | null;
|
|
491
|
+
/** Number of Web Components (custom elements) within the main region, or null. */
|
|
492
|
+
main_content_custom_element_count: number | null;
|
|
493
|
+
/** `document.body.scrollHeight` at the desktop-compact preset, or null. */
|
|
494
|
+
scroll_height_desktop: number | null;
|
|
495
|
+
/** `document.body.scrollHeight` at the mobile-small preset, or null. */
|
|
496
|
+
scroll_height_mobile: number | null;
|
|
497
|
+
/** `@d-zero/beholder`'s `IMAGE_SCAN_CODE` outcome for the desktop-compact `<img>` scan, or null when not attempted. */
|
|
498
|
+
image_scan_desktop: number | null;
|
|
499
|
+
/** `@d-zero/beholder`'s `IMAGE_SCAN_CODE` outcome for the mobile-small `<img>` scan, or null when not attempted. */
|
|
500
|
+
image_scan_mobile: number | null;
|
|
501
|
+
/** JSON-serialised nested Meta sub-objects not flattened above. */
|
|
502
|
+
meta_extras: string | null;
|
|
503
|
+
/** JSON-serialized network logs captured during scraping, or null if not collected. */
|
|
504
|
+
networkLogs: string | null;
|
|
505
|
+
/** Whether the page was skipped during crawling (1) or processed normally (0). */
|
|
506
|
+
isSkipped: 0 | 1;
|
|
507
|
+
/** The reason the page was skipped, or null if it was not skipped. */
|
|
508
|
+
skipReason: string | null;
|
|
509
|
+
/** The natural URL sort order index, or null if not yet assigned. */
|
|
510
|
+
order: number | null;
|
|
511
|
+
/** Provenance of the row — see {@link PageSource}. */
|
|
512
|
+
source: PageSource;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Raw database row representing a redirect relationship.
|
|
516
|
+
* Maps a source page to its redirect destination.
|
|
517
|
+
* @example
|
|
518
|
+
* const redirect: DB_Redirect = {
|
|
519
|
+
* pageId: 9, // destination page id
|
|
520
|
+
* from: 'http://example.com/old',
|
|
521
|
+
* fromId: 3,
|
|
522
|
+
* };
|
|
523
|
+
*/
|
|
524
|
+
export interface DB_Redirect {
|
|
525
|
+
/** The ID of the destination page after redirect. */
|
|
526
|
+
pageId: number;
|
|
527
|
+
/** The URL that was redirected from. */
|
|
528
|
+
from: string;
|
|
529
|
+
/** The page ID of the source URL that was redirected. */
|
|
530
|
+
fromId: number;
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Flat anchor-row shape reconstructed by joining `anchor_edges` with the
|
|
534
|
+
* destination's `content_items` row and the ref tables. Also mirrors the
|
|
535
|
+
* pre-0.13 legacy `anchors` join shape read by the migration populate code.
|
|
536
|
+
* @example
|
|
537
|
+
* const anchors = await accessor.getAnchorsOnPage(pageId);
|
|
538
|
+
* const brokenLinks = anchors.filter((a) => a.status === 404);
|
|
539
|
+
*/
|
|
540
|
+
export interface DB_Anchor {
|
|
541
|
+
/** The ID of the page that contains this anchor. */
|
|
542
|
+
pageId: number;
|
|
543
|
+
/** The resolved destination URL of the anchor. */
|
|
544
|
+
url: string;
|
|
545
|
+
/** The original href attribute value of the anchor element. */
|
|
546
|
+
href: string;
|
|
547
|
+
/** Whether the anchor points to an external domain (1) or internal (0). */
|
|
548
|
+
isExternal: 0 | 1;
|
|
549
|
+
/** The title attribute of the anchor element, or null if not present. */
|
|
550
|
+
title: string | null;
|
|
551
|
+
/** The HTTP status code of the linked page, or null if not yet fetched. */
|
|
552
|
+
status: number | null;
|
|
553
|
+
/** The HTTP status text of the linked page, or null if not yet fetched. */
|
|
554
|
+
statusText: string | null;
|
|
555
|
+
/** The content type of the linked page, or null if not yet fetched. */
|
|
556
|
+
contentType: string | null;
|
|
557
|
+
/** The URL fragment (hash) portion of the link, or null if not present. */
|
|
558
|
+
hash: string | null;
|
|
559
|
+
/** The text content of the anchor element, or null if empty. */
|
|
560
|
+
textContent: string | null;
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Raw database row representing a referrer relationship.
|
|
564
|
+
* Indicates which page links to which other page, potentially through redirects.
|
|
565
|
+
* @example
|
|
566
|
+
* const referrers = await accessor.getReferrersOfPage(pageId);
|
|
567
|
+
* // `through` differs from the destination URL when the link passed
|
|
568
|
+
* // through a redirect source.
|
|
569
|
+
*/
|
|
570
|
+
export interface DB_Referrer {
|
|
571
|
+
/** The ID of the page being referred to. */
|
|
572
|
+
pageId: number;
|
|
573
|
+
/** The URL of the referring page. */
|
|
574
|
+
url: string;
|
|
575
|
+
/** The URL through which the referral passes (may differ from url due to redirects). */
|
|
576
|
+
through: string;
|
|
577
|
+
/** The page ID of the through URL. */
|
|
578
|
+
throughId: number;
|
|
579
|
+
/** The URL fragment (hash) of the referring link, or null if not present. */
|
|
580
|
+
hash: string | null;
|
|
581
|
+
/** The text content of the referring anchor element, or null if empty. */
|
|
582
|
+
textContent: string | null;
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* Raw database row of the pre-0.13 legacy `images` table. The table only
|
|
586
|
+
* exists inside pre-0.13 input archives; current archives store images in
|
|
587
|
+
* `image_items`. This type is read exclusively by the 0.13 migration
|
|
588
|
+
* populate code (`populate-image-items.ts`), which converts these rows
|
|
589
|
+
* into `image_items` before the legacy table is dropped.
|
|
590
|
+
* @example
|
|
591
|
+
* // Inside migration populate code reading a pre-0.13 input archive:
|
|
592
|
+
* const images: DB_Image[] = await trx('images').where('pageId', pageId);
|
|
593
|
+
* const missingAlt = images.filter((img) => img.alt === null);
|
|
594
|
+
*/
|
|
595
|
+
export interface DB_Image {
|
|
596
|
+
/** Auto-incremented primary key. */
|
|
597
|
+
id: number;
|
|
598
|
+
/** Foreign key to the page that contains this image. */
|
|
599
|
+
pageId: number;
|
|
600
|
+
/** The `src` attribute value of the image element. */
|
|
601
|
+
src: string | null;
|
|
602
|
+
/** The actual loaded source URL of the image (after srcset/picture resolution). */
|
|
603
|
+
currentSrc: string | null;
|
|
604
|
+
/** The `alt` attribute value, or null if not present. */
|
|
605
|
+
alt: string | null;
|
|
606
|
+
/** The rendered width of the image in CSS pixels. */
|
|
607
|
+
width: number;
|
|
608
|
+
/** The rendered height of the image in CSS pixels. */
|
|
609
|
+
height: number;
|
|
610
|
+
/** The intrinsic width of the image in pixels. */
|
|
611
|
+
naturalWidth: number;
|
|
612
|
+
/** The intrinsic height of the image in pixels. */
|
|
613
|
+
naturalHeight: number;
|
|
614
|
+
/** Whether the image uses lazy loading. */
|
|
615
|
+
isLazy: number | null;
|
|
616
|
+
/** The viewport width at the time of capture. */
|
|
617
|
+
viewportWidth: number;
|
|
618
|
+
/** The raw HTML source code of the image element. */
|
|
619
|
+
sourceCode: string | null;
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* Represents a page that links to another page (an incoming link).
|
|
623
|
+
* @example
|
|
624
|
+
* const referrer: Referrer = {
|
|
625
|
+
* url: 'https://example.com/from',
|
|
626
|
+
* through: 'https://example.com/old',
|
|
627
|
+
* throughId: 3,
|
|
628
|
+
* hash: null,
|
|
629
|
+
* textContent: 'Link text',
|
|
630
|
+
* };
|
|
631
|
+
*/
|
|
632
|
+
export interface Referrer {
|
|
633
|
+
/** The URL of the referring page. */
|
|
634
|
+
url: string;
|
|
635
|
+
/** The URL through which the referral passes (may differ due to redirects). */
|
|
636
|
+
through: string;
|
|
637
|
+
/** The page ID corresponding to the through URL. */
|
|
638
|
+
throughId: number;
|
|
639
|
+
/** The URL fragment (hash) of the referring link, or null if not present. */
|
|
640
|
+
hash: string | null;
|
|
641
|
+
/** The text content of the referring anchor element. */
|
|
642
|
+
textContent: string;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Represents an outgoing link (anchor element) found on a page.
|
|
646
|
+
* @example
|
|
647
|
+
* const anchor: Anchor = {
|
|
648
|
+
* url: 'https://example.com/about',
|
|
649
|
+
* href: '/about',
|
|
650
|
+
* isExternal: false,
|
|
651
|
+
* title: null,
|
|
652
|
+
* status: 200,
|
|
653
|
+
* statusText: 'OK',
|
|
654
|
+
* contentType: 'text/html',
|
|
655
|
+
* hash: null,
|
|
656
|
+
* textContent: 'About us',
|
|
657
|
+
* };
|
|
658
|
+
*/
|
|
659
|
+
export interface Anchor {
|
|
660
|
+
/** The resolved destination URL of the anchor. */
|
|
661
|
+
url: string;
|
|
662
|
+
/** The original href attribute value of the anchor element. */
|
|
663
|
+
href: string;
|
|
664
|
+
/** Whether the anchor points to an external domain. */
|
|
665
|
+
isExternal: boolean;
|
|
666
|
+
/** The title attribute of the anchor element, or null if not present. */
|
|
667
|
+
title: string | null;
|
|
668
|
+
/** The HTTP status code of the linked page, or null if not yet fetched. */
|
|
669
|
+
status: number | null;
|
|
670
|
+
/** The HTTP status text of the linked page, or null if not yet fetched. */
|
|
671
|
+
statusText: string | null;
|
|
672
|
+
/** The content type of the linked page, or null if not yet fetched. */
|
|
673
|
+
contentType: string | null;
|
|
674
|
+
/** The URL fragment (hash) portion of the link, or null if not present. */
|
|
675
|
+
hash: string | null;
|
|
676
|
+
/** The text content of the anchor element, or null if empty. */
|
|
677
|
+
textContent: string | null;
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Represents a page that redirects to this page.
|
|
681
|
+
* @example
|
|
682
|
+
* const redirect: Redirect = { url: 'http://example.com/old', pageId: 3 };
|
|
683
|
+
*/
|
|
684
|
+
export interface Redirect {
|
|
685
|
+
/** The URL of the redirect source page. */
|
|
686
|
+
url: string;
|
|
687
|
+
/** The database ID of the redirect source page. */
|
|
688
|
+
pageId: number;
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Raw database row representing a sub-resource (CSS, JS, image, etc.) in the `resources` table.
|
|
692
|
+
* @example
|
|
693
|
+
* const resources = await accessor.getResources();
|
|
694
|
+
* const notFound = resources.filter((r) => r.status === 404);
|
|
695
|
+
*/
|
|
696
|
+
export interface DB_Resource {
|
|
697
|
+
/** Auto-incremented primary key. */
|
|
698
|
+
id: number;
|
|
699
|
+
/**
|
|
700
|
+
* The URL of the resource, or `null` when its identity URL is a large
|
|
701
|
+
* `data:` URI routed to `blob_refs` instead of `url_refs` (mirrors
|
|
702
|
+
* `image_items`' src/blob convention — see `build-resource-query.ts`).
|
|
703
|
+
*/
|
|
704
|
+
url: string | null;
|
|
705
|
+
/** Whether the resource is hosted on an external domain (1) or internal (0). */
|
|
706
|
+
isExternal: 0 | 1;
|
|
707
|
+
/** HTTP response status code, or null if not yet fetched. */
|
|
708
|
+
status: number | null;
|
|
709
|
+
/** HTTP response status text, or null if not yet fetched. */
|
|
710
|
+
statusText: string | null;
|
|
711
|
+
/** MIME content type of the resource, or null if unknown. */
|
|
712
|
+
contentType: string | null;
|
|
713
|
+
/** Content length in bytes, or null if unknown. */
|
|
714
|
+
contentLength: number | null;
|
|
715
|
+
/** Compression encoding (e.g., "gzip", "br"), or 0 if not compressed. */
|
|
716
|
+
compress: string | 0;
|
|
717
|
+
/** CDN provider identifier, or 0 if not served from a CDN. */
|
|
718
|
+
cdn: string | 0;
|
|
719
|
+
/** JSON-serialized HTTP response headers, or null if not available. */
|
|
720
|
+
responseHeaders: string | null;
|
|
721
|
+
/** Provenance of the row — see {@link PageSource}. */
|
|
722
|
+
source: PageSource;
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* Connection options for the archive's libsql-backed database.
|
|
726
|
+
* @example
|
|
727
|
+
* const db = await Database.connect({
|
|
728
|
+
* filename: '/path/to/._nitpicker-site/db.sqlite',
|
|
729
|
+
* readOnly: true,
|
|
730
|
+
* });
|
|
731
|
+
*/
|
|
732
|
+
export interface DatabaseOption {
|
|
733
|
+
/** The absolute file path to the SQLite database file. */
|
|
734
|
+
filename: string;
|
|
735
|
+
/**
|
|
736
|
+
* When `true`, open the database for read-only inspection:
|
|
737
|
+
*
|
|
738
|
+
* - Skip schema migrations (no `ALTER TABLE` / `UPDATE` on the user's file).
|
|
739
|
+
* - Refuse to mkdir/create the parent dir or the db file — fail loudly if
|
|
740
|
+
* either is missing instead of resurrecting them.
|
|
741
|
+
*
|
|
742
|
+
* Used by the viewer / MCP server when attaching to an in-progress crawl's
|
|
743
|
+
* tmpDir, where any write would race the live crawler.
|
|
744
|
+
*/
|
|
745
|
+
readOnly?: boolean;
|
|
746
|
+
/**
|
|
747
|
+
* Called instead of `console.error` for self-healing schema migration
|
|
748
|
+
* notices (issue #294) — see
|
|
749
|
+
* {@link import('./db-ops/lifecycle/init.js').init}'s `onLog` param for
|
|
750
|
+
* why a bare `console.error` at this point is unsafe. Ignored when
|
|
751
|
+
* `readOnly` is `true` (migrations never run there).
|
|
752
|
+
*/
|
|
753
|
+
onLog?: (message: string) => void;
|
|
754
|
+
}
|
|
755
|
+
/**
|
|
756
|
+
* One Web Component (custom element) found inside a page's main-content
|
|
757
|
+
* region by `@nitpicker/crawler`'s `crawler/collect-custom-elements.ts`.
|
|
758
|
+
* Unlike beholder's eight `MainContentsData` categories (headings/images/
|
|
759
|
+
* tables/buttons/iframes/videos/audios/canvases), this is captured
|
|
760
|
+
* independently by nitpicker itself — see the crawler's
|
|
761
|
+
* `crawler/capture-custom-elements.ts` for why. Declared here because the
|
|
762
|
+
* archive layer persists it (`page_main_content_custom_elements`) and the
|
|
763
|
+
* archive must not depend on the crawler.
|
|
764
|
+
*/
|
|
765
|
+
export interface MainContentCustomElementCandidate {
|
|
766
|
+
/** The element's `nodeName` (always upper-cased in an HTML document, e.g. `MY-WIDGET`). */
|
|
767
|
+
nodeName: string;
|
|
768
|
+
/** The element's `id` attribute, or `null` when absent. */
|
|
769
|
+
elementId: string | null;
|
|
770
|
+
/** The element's class list, in DOM order. */
|
|
771
|
+
classList: string[];
|
|
772
|
+
}
|