@slicedearth/whoisleuth-cli 2.4.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +2 -2
- package/cli/argument-values.mjs +55 -0
- package/cli/arguments.mjs +24 -470
- package/cli/artifact-validation/case-response.mjs +21 -6
- package/cli/artifact-validation/lookup-evidence.mjs +3 -3
- package/cli/artifact-validation/signed-review.mjs +59 -13
- package/cli/artifact-verify.mjs +2 -0
- package/cli/assurance-arguments.mjs +56 -0
- package/cli/assurance-command-definitions.mjs +179 -0
- package/cli/assurance-command-runner.mjs +1 -1
- package/cli/bounded-json.mjs +1 -1
- package/cli/bulk-checkpoint.mjs +1 -1
- package/cli/bulk-command-runner.mjs +2 -2
- package/cli/bulk.mjs +2 -3
- package/cli/case-command.mjs +20 -3
- package/cli/case-pack.mjs +12 -2
- package/cli/ci-report.mjs +6 -3
- package/cli/collection-arguments.mjs +123 -0
- package/cli/collection-command-definitions.mjs +330 -0
- package/cli/collection-preflight.mjs +8 -1
- package/cli/command-argument-grammar.mjs +8 -210
- package/cli/command-definition.mjs +329 -0
- package/cli/command-reference.mjs +55 -1388
- package/cli/command-seeds.mjs +18 -0
- package/cli/compare.mjs +1 -1
- package/cli/config-profile.mjs +1 -1
- package/cli/ct-event-intake.mjs +4 -4
- package/cli/discover.mjs +2 -2
- package/cli/discovery-observation-snapshot.mjs +2 -2
- package/cli/discovery-scan-command-runner.mjs +3 -3
- package/cli/discovery-scan.mjs +1 -1
- package/cli/discovery-snapshot.mjs +2 -2
- package/cli/discovery-workflow.mjs +4 -4
- package/cli/domain-control-monitor.mjs +6 -6
- package/cli/domain-control-observations.mjs +2 -1
- package/cli/errors.mjs +5 -6
- package/cli/evidence-arguments.mjs +46 -0
- package/cli/evidence-command-definitions.mjs +69 -0
- package/cli/evidence-command-runner.mjs +2 -3
- package/cli/evidence-signing.mjs +3 -2
- package/cli/external-observation-mapping.mjs +2 -2
- package/cli/formatters/terminal-command-formats.mjs +6 -0
- package/cli/formatters/terminal-lookup.mjs +6 -0
- package/cli/history-arguments.mjs +39 -0
- package/cli/history-command-definitions.mjs +88 -0
- package/cli/indicator-set-command.mjs +33 -0
- package/cli/inline-command-families.mjs +6 -47
- package/cli/inline-command-runner.mjs +4 -31
- package/cli/input.mjs +2 -2
- package/cli/intake-command.mjs +107 -0
- package/cli/interchange-report.mjs +4 -2
- package/cli/investigation-artifacts.mjs +1 -1
- package/cli/investigation-plan.mjs +32 -154
- package/cli/investigation-recipes.mjs +177 -0
- package/cli/investigation-run.mjs +78 -12
- package/cli/local-mmdb-review.mjs +197 -17
- package/cli/lookalike-calibration.mjs +1 -1
- package/cli/lookup-brief.mjs +2 -2
- package/cli/lookup-command-runner.mjs +18 -35
- package/cli/lookup-diff.mjs +10 -9
- package/cli/lookup-plan.mjs +10 -14
- package/cli/lookup-reconcile.mjs +6 -5
- package/cli/lookup-timeline.mjs +7 -6
- package/cli/mail-header-review.mjs +24 -247
- package/cli/mail-review.mjs +9 -7
- package/cli/network-arguments.mjs +51 -0
- package/cli/network-command-definitions.mjs +130 -0
- package/cli/network-command-runner.mjs +43 -31
- package/cli/offline-evidence-review.mjs +39 -6
- package/cli/posture.mjs +1 -1
- package/cli/registry-fixture-scaffold.mjs +1 -1
- package/cli/retained-artifact-diff.mjs +8 -7
- package/cli/review-arguments.mjs +131 -0
- package/cli/review-command-definitions.mjs +273 -0
- package/cli/review-command-runner.mjs +68 -158
- package/cli/risk-calibration.mjs +8 -8
- package/cli/runner.mjs +20 -32
- package/cli/saved-lookup.mjs +2 -2
- package/cli/selected-input-worker.mjs +63 -0
- package/cli/sharing-review.mjs +5 -64
- package/cli/source-reliability.mjs +2 -2
- package/cli/support-arguments.mjs +49 -0
- package/cli/support-command-definitions.mjs +209 -0
- package/cli/support-command-runner.mjs +2 -2
- package/cli/workflow-arguments.mjs +86 -0
- package/cli/workflow-command-definitions.mjs +78 -0
- package/cli/workflow-command-runner.mjs +8 -1
- package/docs/cli-reference.md +27 -0
- package/docs/cli.md +223 -2
- package/docs/contextual-reviews.md +155 -0
- package/lib/analyst-taxonomy.mjs +2 -40
- package/lib/application-version.mjs +1 -1
- package/lib/availability.mjs +13 -789
- package/lib/bounded-contract-normalizers.mjs +4 -0
- package/lib/bounded-json.mjs +2 -330
- package/lib/browser-library-profile.mjs +62 -84
- package/lib/candidate-provenance-bounds.mjs +2 -0
- package/lib/classify.mjs +1 -1
- package/lib/ct-query.mjs +2 -27
- package/lib/ct-response-bounds.mjs +2 -9
- package/lib/ct-search.mjs +83 -47
- package/lib/dmarc-discovery.mjs +62 -0
- package/lib/dns-convergence-review.mjs +21 -8
- package/lib/dns-delegation-health.mjs +12 -8
- package/lib/dns-inheritance-review.mjs +53 -63
- package/lib/dns-intelligence.mjs +9 -7
- package/lib/dns-query-coverage.mjs +40 -0
- package/lib/domain-assurance.mjs +1 -1
- package/lib/domain-change-packet.mjs +12 -13
- package/lib/domain-change-review.mjs +32 -14
- package/lib/domain-control-flight-recorder.mjs +103 -27
- package/lib/domain-control-manifest.mjs +25 -17
- package/lib/domain-posture-analysis.mjs +22 -5
- package/lib/domain-posture.mjs +16 -15
- package/lib/domain-registration.mjs +392 -0
- package/lib/evidence-export-privacy.mjs +22 -15
- package/lib/evidence-export.mjs +3 -3
- package/lib/evidence-report.mjs +4 -1
- package/lib/external-intelligence-risk.mjs +2 -124
- package/lib/generated/cisa-kev-catalog.mjs +41 -3
- package/lib/generated/registrar-standing-catalogue.mjs +18 -10
- package/lib/generated/retire-browser-catalog.mjs +332 -19
- package/lib/generated/{unicode-confusables-17.mjs → unicode-confusables.mjs} +33 -33
- package/lib/html-signals.mjs +7 -2
- package/lib/http-evidence-bounds.mjs +2 -8
- package/lib/http-intelligence.mjs +13 -1
- package/lib/idn-confusable-policy.mjs +6 -4
- package/lib/idn-confusables.mjs +1 -1
- package/lib/interchange-fidelity-registry.mjs +10 -0
- package/lib/lookup-contract-primitives.mjs +1 -1
- package/lib/lookup-diagnostics.mjs +1 -23
- package/lib/lookup-network-evidence-bounds.mjs +1 -10
- package/lib/lookup-progress.mjs +50 -1
- package/lib/lookup-response-contract.mjs +69 -40
- package/lib/lookup-response.mjs +5 -15
- package/lib/lookup-source-progress.mjs +8 -22
- package/lib/lookup.mjs +1 -1
- package/lib/opportunity-scoring.mjs +2 -107
- package/lib/outbound-identity.mjs +1 -1
- package/lib/page-fingerprints.mjs +18 -1
- package/lib/perceptual-hash-comparison.mjs +2 -34
- package/lib/perceptual-hash.mjs +36 -10
- package/lib/portable-generator.mjs +2 -29
- package/lib/project-metadata.mjs +2 -8
- package/lib/rdap-client.mjs +11 -7
- package/lib/registrable-domain.mjs +2 -56
- package/lib/registrar-standing-contract.mjs +1 -1
- package/lib/registrar-standing.mjs +9 -13
- package/lib/registry-capabilities.mjs +2 -2
- package/lib/registry-capability-catalogue.mjs +27 -19
- package/lib/risk-calibration-summary.mjs +2 -352
- package/lib/risk-scoring.mjs +2 -345
- package/lib/scoring-evidence-quality.mjs +2 -107
- package/lib/semantic-version.mjs +2 -54
- package/lib/service-binding-dns.mjs +27 -0
- package/lib/smtp-transport-review.mjs +48 -19
- package/lib/sslbl-certificates.generated.mjs +141 -139
- package/lib/static-html-analysis.mjs +1 -1
- package/lib/structured-data-identity.mjs +1 -1
- package/lib/threat-intelligence-manifests.mjs +1 -1
- package/lib/threat-intelligence-runtime.mjs +1 -1
- package/lib/threat-intelligence-targets.mjs +1 -1
- package/lib/threat-intelligence-types.mjs +2 -75
- package/lib/typosquat-generator.mjs +11 -2
- package/lib/website-enrichment.mjs +388 -0
- package/lib/whois-authority.mjs +43 -5
- package/lib/whois-normalization.mjs +3 -1
- package/lib/whois-parser.mjs +5 -3
- package/package.json +13 -14
- package/packages/analysis/analyst-taxonomy.mjs +40 -0
- package/packages/analysis/bounded-json.mjs +330 -0
- package/packages/analysis/candidate-provenance-bounds.mjs +4 -0
- package/packages/analysis/cli-argument-grammar.mjs +216 -0
- package/packages/analysis/ct-query.mjs +27 -0
- package/packages/analysis/ct-response-bounds.mjs +9 -0
- package/packages/analysis/external-intelligence-risk.mjs +124 -0
- package/packages/analysis/http-evidence-bounds.mjs +8 -0
- package/packages/analysis/lookup-network-evidence-bounds.mjs +10 -0
- package/packages/analysis/opportunity-scoring.mjs +107 -0
- package/packages/analysis/perceptual-hash-comparison.mjs +34 -0
- package/packages/analysis/portable-generator.mjs +29 -0
- package/packages/analysis/project-metadata.mjs +8 -0
- package/packages/analysis/registrable-domain.mjs +56 -0
- package/packages/analysis/risk-calibration-summary.mjs +352 -0
- package/packages/analysis/risk-scoring.mjs +345 -0
- package/packages/analysis/scoring-evidence-quality.mjs +107 -0
- package/packages/analysis/semantic-version.mjs +54 -0
- package/packages/analysis/threat-intelligence-types.mjs +75 -0
- package/packages/cases/case-evidence-links.mjs +135 -0
- package/packages/cases/case-evidence-model.mjs +78 -12
- package/packages/cases/case-evidence-quality.mjs +5 -0
- package/packages/cases/case-export-input.mjs +7 -5
- package/packages/cases/case-incident-context.mjs +52 -0
- package/packages/cases/case-markdown.mjs +11 -0
- package/packages/cases/case-migration-model.mjs +40 -24
- package/packages/cases/case-recheck-model.mjs +90 -32
- package/packages/cases/case-record-contracts.mjs +1 -1
- package/packages/cases/case-record-core.mjs +1 -1
- package/packages/cases/case-record-operations.mjs +40 -112
- package/packages/cases/case-record-projection.mjs +8 -1
- package/packages/cases/case-record-version-input.mjs +19 -0
- package/packages/cases/case-report.mjs +63 -27
- package/packages/cases/case-requested-evidence.mjs +146 -0
- package/packages/cases/case-response-actions.mjs +103 -1
- package/packages/cases/case-response-model.mjs +9 -1
- package/packages/cases/case-response-outcomes.mjs +29 -8
- package/packages/cases/case-response-packet-render.mjs +13 -9
- package/packages/cases/case-response-packet.mjs +25 -11
- package/packages/cases/case-response-records.mjs +0 -1
- package/packages/cases/case-response-review-inputs.mjs +14 -3
- package/packages/cases/case-storage-model.mjs +1 -1
- package/packages/cases/case-workflow-metadata.mjs +225 -0
- package/packages/cases/case-workflow-migration.mjs +43 -0
- package/packages/cases/http-summary.mjs +6 -1
- package/packages/comparison/favicon-similarity.mjs +1 -1
- package/packages/comparison/page-similarity.mjs +1 -1
- package/packages/comparison/relationship-evidence.mjs +21 -9
- package/packages/comparison/relationship-provenance.mjs +7 -1
- package/packages/contracts/analyst-interchange.mjs +28 -10
- package/packages/contracts/case-portability.mjs +118 -25
- package/packages/contracts/cli-command-semantics.mjs +2 -0
- package/packages/contracts/cli-grammar.mjs +6 -0
- package/packages/contracts/cli-lookup-brief.mjs +2 -0
- package/packages/contracts/context-review.mjs +24 -0
- package/packages/contracts/document-intake.mjs +11 -0
- package/packages/contracts/domain-control-flight-recorder.mjs +30 -14
- package/packages/contracts/domain-control-manifest.mjs +1 -1
- package/packages/contracts/domain-control-monitor.mjs +13 -2
- package/packages/contracts/domain-control-review.mjs +36 -15
- package/packages/contracts/har-review.mjs +2 -0
- package/packages/contracts/identity-events.mjs +4 -0
- package/packages/contracts/investigation-run.mjs +2 -0
- package/packages/contracts/ip-address.mjs +10 -0
- package/packages/contracts/mail-authentication.mjs +5 -0
- package/packages/contracts/message-intake.mjs +31 -0
- package/packages/contracts/offline-comparison.mjs +4 -1
- package/packages/contracts/passive-mail.mjs +10 -0
- package/packages/contracts/web-capture.mjs +2 -2
- package/packages/contracts/workspace-portability.mjs +63 -17
- package/packages/evidence/collection-quality.mjs +67 -0
- package/packages/evidence/dns-query-outcome.mjs +72 -0
- package/packages/evidence/email-recipient.mjs +18 -0
- package/packages/evidence/lookup-target.mjs +5 -1
- package/packages/evidence/observation.mjs +2 -0
- package/packages/evidence/png-pixels.mjs +117 -0
- package/packages/evidence/public-address-policy.mjs +83 -0
- package/packages/interchange/defensive-indicator-export.mjs +264 -0
- package/packages/interchange/external-findings-import.mjs +4 -12
- package/packages/interchange/managed-indicator-export.mjs +35 -0
- package/packages/interchange/managed-indicator-set.mjs +210 -0
- package/packages/interchange/misp-indicator-export.mjs +93 -0
- package/packages/interchange/sharing-policy.mjs +56 -0
- package/packages/interchange/stix-indicator-export.mjs +129 -0
- package/packages/interchange/web-capture-import.mjs +22 -15
- package/packages/investigation/acquisition-decision-packet.mjs +1 -1
- package/packages/investigation/bulk-mail-exposure.mjs +7 -13
- package/packages/investigation/capture-coverage.mjs +57 -0
- package/packages/investigation/connector-provenance-review.mjs +100 -0
- package/packages/investigation/context-review.mjs +35 -0
- package/packages/investigation/document-intake.mjs +81 -0
- package/packages/investigation/docx-intake.mjs +133 -0
- package/packages/investigation/domain-history-review.mjs +100 -0
- package/packages/investigation/domain-transition-review.mjs +47 -0
- package/packages/investigation/evidence-coverage-ledger.mjs +9 -1
- package/packages/investigation/har-intake.mjs +68 -0
- package/packages/investigation/identity-event-intake.mjs +131 -0
- package/packages/investigation/identity-incident-review.mjs +39 -0
- package/packages/investigation/incident-sequence-review.mjs +58 -0
- package/packages/investigation/intake-report.mjs +19 -0
- package/packages/investigation/investigation-manifest.mjs +2 -2
- package/packages/investigation/link-intake.mjs +179 -0
- package/packages/investigation/lookup-asset-graph.mjs +1 -1
- package/packages/investigation/mail-authentication-review.mjs +222 -0
- package/packages/investigation/mail-header-identity.mjs +209 -0
- package/packages/investigation/message-intake.mjs +195 -0
- package/packages/investigation/page-behaviour.mjs +113 -0
- package/packages/investigation/pdf-intake.mjs +155 -0
- package/packages/investigation/platform-continuity-review.mjs +60 -0
- package/packages/investigation/qr-intake.mjs +56 -0
- package/packages/investigation/requested-action-hints.mjs +11 -0
- package/packages/investigation/selected-input-review.mjs +17 -0
- package/packages/investigation/storefront-review.mjs +70 -0
- package/packages/workspace/brand-profile-model.mjs +2 -2
- package/packages/workspace/bulk-review-model.mjs +28 -26
- package/packages/workspace/bulk-session-model.mjs +23 -13
- package/packages/workspace/campaign-model.mjs +1 -1
- package/packages/workspace/detection-rule-model.mjs +1 -1
- package/packages/workspace/hostile-input.mjs +1 -1
- package/packages/workspace/investigation-guide.mjs +2 -2
- package/packages/workspace/investigation-template-model.mjs +26 -2
- package/packages/workspace/page-baseline.mjs +2 -2
- package/packages/workspace/relationship-observation-model.mjs +17 -13
- package/packages/workspace/shortlist-model.mjs +14 -5
- package/packages/workspace/watchlist-history.mjs +28 -12
- package/packages/workspace/watchlist-store.mjs +17 -5
- package/packages/workspace/website-snapshot-model.mjs +28 -3
- package/packages/workspace/workspace-archive-crypto.mjs +1 -1
- package/packages/workspace/workspace-archive.mjs +5 -4
- package/third-party-notices.txt +549 -16
- package/lib/hostname.mjs +0 -2
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// Generated by tools/retire-browser-catalog.mts from the pinned Retire.js
|
|
2
2
|
// browser-library catalogue. Apache-2.0 licensed source; do not edit by hand.
|
|
3
3
|
const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
4
|
-
catalogVersion: "retire.js-
|
|
5
|
-
sourceRevision: "
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
catalogVersion: "retire.js-2026.10.02",
|
|
5
|
+
sourceRevision: "305423aa277cd6aa55c75c37c51090eb98e72e62",
|
|
6
|
+
sourceUpdatedAt: "2026-10-02T11:46:05.000Z",
|
|
7
|
+
sourceSha256: "3b444e8cec14dfb4c77f519db559a6c03d626b4c5730cd062b07ca4395c96ad7",
|
|
8
|
+
sourceUrl: "https://github.com/RetireJS/retire.js/blob/305423aa277cd6aa55c75c37c51090eb98e72e62/repository/jsrepository.json",
|
|
8
9
|
components: {
|
|
9
10
|
"jquery": {
|
|
10
11
|
"extractors": {
|
|
@@ -3545,6 +3546,17 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
3545
3546
|
],
|
|
3546
3547
|
"githubID": "GHSA-55Q2-FJHQ-7XH7"
|
|
3547
3548
|
}
|
|
3549
|
+
},
|
|
3550
|
+
{
|
|
3551
|
+
"below": "3.4.16",
|
|
3552
|
+
"severity": "low",
|
|
3553
|
+
"atOrAbove": "3.4.13",
|
|
3554
|
+
"cwe": [
|
|
3555
|
+
"CWE-79"
|
|
3556
|
+
],
|
|
3557
|
+
"identifiers": {
|
|
3558
|
+
"githubID": "GHSA-P98J-92PF-MC4P"
|
|
3559
|
+
}
|
|
3548
3560
|
}
|
|
3549
3561
|
]
|
|
3550
3562
|
},
|
|
@@ -3911,6 +3923,20 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
3911
3923
|
],
|
|
3912
3924
|
"githubID": "GHSA-WC69-RHJR-HC9G"
|
|
3913
3925
|
}
|
|
3926
|
+
},
|
|
3927
|
+
{
|
|
3928
|
+
"below": "2.31.0",
|
|
3929
|
+
"severity": "medium",
|
|
3930
|
+
"atOrAbove": "2.29.2",
|
|
3931
|
+
"cwe": [
|
|
3932
|
+
"CWE-27"
|
|
3933
|
+
],
|
|
3934
|
+
"identifiers": {
|
|
3935
|
+
"CVE": [
|
|
3936
|
+
"CVE-2026-17495"
|
|
3937
|
+
],
|
|
3938
|
+
"githubID": "GHSA-4P3W-J4W9-5JQW"
|
|
3939
|
+
}
|
|
3914
3940
|
}
|
|
3915
3941
|
]
|
|
3916
3942
|
},
|
|
@@ -5222,21 +5248,6 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
5222
5248
|
"githubID": "GHSA-42H9-826W-CGV3"
|
|
5223
5249
|
}
|
|
5224
5250
|
},
|
|
5225
|
-
{
|
|
5226
|
-
"below": "0.33.0",
|
|
5227
|
-
"severity": "medium",
|
|
5228
|
-
"atOrAbove": "0.28.0",
|
|
5229
|
-
"cwe": [
|
|
5230
|
-
"CWE-400",
|
|
5231
|
-
"CWE-770"
|
|
5232
|
-
],
|
|
5233
|
-
"identifiers": {
|
|
5234
|
-
"CVE": [
|
|
5235
|
-
"CVE-2026-67312"
|
|
5236
|
-
],
|
|
5237
|
-
"githubID": "GHSA-PMV8-RQ9R-6J72"
|
|
5238
|
-
}
|
|
5239
|
-
},
|
|
5240
5251
|
{
|
|
5241
5252
|
"below": "0.33.0",
|
|
5242
5253
|
"severity": "medium",
|
|
@@ -5295,6 +5306,49 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
5295
5306
|
"githubID": "GHSA-MMX7-HFXF-JPPX"
|
|
5296
5307
|
}
|
|
5297
5308
|
},
|
|
5309
|
+
{
|
|
5310
|
+
"below": "0.33.0",
|
|
5311
|
+
"severity": "medium",
|
|
5312
|
+
"atOrAbove": "0.28.0",
|
|
5313
|
+
"cwe": [
|
|
5314
|
+
"CWE-400",
|
|
5315
|
+
"CWE-770"
|
|
5316
|
+
],
|
|
5317
|
+
"identifiers": {
|
|
5318
|
+
"CVE": [
|
|
5319
|
+
"CVE-2026-67312"
|
|
5320
|
+
],
|
|
5321
|
+
"githubID": "GHSA-PMV8-RQ9R-6J72"
|
|
5322
|
+
}
|
|
5323
|
+
},
|
|
5324
|
+
{
|
|
5325
|
+
"below": "0.34.0",
|
|
5326
|
+
"severity": "medium",
|
|
5327
|
+
"atOrAbove": "0.27.2",
|
|
5328
|
+
"cwe": [
|
|
5329
|
+
"CWE-1321"
|
|
5330
|
+
],
|
|
5331
|
+
"identifiers": {
|
|
5332
|
+
"CVE": [
|
|
5333
|
+
"CVE-2026-101902"
|
|
5334
|
+
],
|
|
5335
|
+
"githubID": "GHSA-9FR6-4GFG-395G"
|
|
5336
|
+
}
|
|
5337
|
+
},
|
|
5338
|
+
{
|
|
5339
|
+
"below": "0.34.0",
|
|
5340
|
+
"severity": "high",
|
|
5341
|
+
"atOrAbove": "0.28.0",
|
|
5342
|
+
"cwe": [
|
|
5343
|
+
"CWE-1321"
|
|
5344
|
+
],
|
|
5345
|
+
"identifiers": {
|
|
5346
|
+
"CVE": [
|
|
5347
|
+
"CVE-2026-101909"
|
|
5348
|
+
],
|
|
5349
|
+
"githubID": "GHSA-X97P-JQ2G-JP4F"
|
|
5350
|
+
}
|
|
5351
|
+
},
|
|
5298
5352
|
{
|
|
5299
5353
|
"below": "1.6.0",
|
|
5300
5354
|
"severity": "medium",
|
|
@@ -5881,6 +5935,180 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
5881
5935
|
],
|
|
5882
5936
|
"githubID": "GHSA-XJ6Q-8X83-JV6G"
|
|
5883
5937
|
}
|
|
5938
|
+
},
|
|
5939
|
+
{
|
|
5940
|
+
"below": "1.20.0",
|
|
5941
|
+
"severity": "medium",
|
|
5942
|
+
"atOrAbove": "1.0.0",
|
|
5943
|
+
"cwe": [
|
|
5944
|
+
"CWE-1321"
|
|
5945
|
+
],
|
|
5946
|
+
"identifiers": {
|
|
5947
|
+
"CVE": [
|
|
5948
|
+
"CVE-2026-101902"
|
|
5949
|
+
],
|
|
5950
|
+
"githubID": "GHSA-9FR6-4GFG-395G"
|
|
5951
|
+
}
|
|
5952
|
+
},
|
|
5953
|
+
{
|
|
5954
|
+
"below": "1.20.0",
|
|
5955
|
+
"severity": "medium",
|
|
5956
|
+
"atOrAbove": "1.0.0",
|
|
5957
|
+
"cwe": [
|
|
5958
|
+
"CWE-1321",
|
|
5959
|
+
"CWE-74"
|
|
5960
|
+
],
|
|
5961
|
+
"identifiers": {
|
|
5962
|
+
"CVE": [
|
|
5963
|
+
"CVE-2026-101904"
|
|
5964
|
+
],
|
|
5965
|
+
"githubID": "GHSA-J8RH-479H-CP32"
|
|
5966
|
+
}
|
|
5967
|
+
},
|
|
5968
|
+
{
|
|
5969
|
+
"below": "1.20.0",
|
|
5970
|
+
"severity": "medium",
|
|
5971
|
+
"atOrAbove": "1.7.0",
|
|
5972
|
+
"cwe": [
|
|
5973
|
+
"CWE-1321"
|
|
5974
|
+
],
|
|
5975
|
+
"identifiers": {
|
|
5976
|
+
"CVE": [
|
|
5977
|
+
"CVE-2026-101908"
|
|
5978
|
+
],
|
|
5979
|
+
"githubID": "GHSA-VH66-26GQ-Q6X8"
|
|
5980
|
+
}
|
|
5981
|
+
},
|
|
5982
|
+
{
|
|
5983
|
+
"below": "1.20.0",
|
|
5984
|
+
"severity": "medium",
|
|
5985
|
+
"atOrAbove": "1.12.0",
|
|
5986
|
+
"cwe": [
|
|
5987
|
+
"CWE-1321",
|
|
5988
|
+
"CWE-693",
|
|
5989
|
+
"CWE-74"
|
|
5990
|
+
],
|
|
5991
|
+
"identifiers": {
|
|
5992
|
+
"CVE": [
|
|
5993
|
+
"CVE-2026-101900"
|
|
5994
|
+
],
|
|
5995
|
+
"githubID": "GHSA-4HQW-QXG8-JXX2"
|
|
5996
|
+
}
|
|
5997
|
+
},
|
|
5998
|
+
{
|
|
5999
|
+
"below": "1.20.0",
|
|
6000
|
+
"severity": "high",
|
|
6001
|
+
"atOrAbove": "1.13.0",
|
|
6002
|
+
"cwe": [
|
|
6003
|
+
"CWE-918"
|
|
6004
|
+
],
|
|
6005
|
+
"identifiers": {
|
|
6006
|
+
"CVE": [
|
|
6007
|
+
"CVE-2026-101898"
|
|
6008
|
+
],
|
|
6009
|
+
"githubID": "GHSA-3PQ3-5FJ3-CG6V"
|
|
6010
|
+
}
|
|
6011
|
+
},
|
|
6012
|
+
{
|
|
6013
|
+
"below": "1.20.0",
|
|
6014
|
+
"severity": "high",
|
|
6015
|
+
"atOrAbove": "1.13.0",
|
|
6016
|
+
"cwe": [
|
|
6017
|
+
"CWE-400"
|
|
6018
|
+
],
|
|
6019
|
+
"identifiers": {
|
|
6020
|
+
"CVE": [
|
|
6021
|
+
"CVE-2026-101901"
|
|
6022
|
+
],
|
|
6023
|
+
"githubID": "GHSA-542G-H47M-68V8"
|
|
6024
|
+
}
|
|
6025
|
+
},
|
|
6026
|
+
{
|
|
6027
|
+
"below": "1.20.0",
|
|
6028
|
+
"severity": "medium",
|
|
6029
|
+
"atOrAbove": "1.15.0",
|
|
6030
|
+
"cwe": [
|
|
6031
|
+
"CWE-693"
|
|
6032
|
+
],
|
|
6033
|
+
"identifiers": {
|
|
6034
|
+
"CVE": [
|
|
6035
|
+
"CVE-2026-101899"
|
|
6036
|
+
],
|
|
6037
|
+
"githubID": "GHSA-44G4-M2MJ-WPVX"
|
|
6038
|
+
}
|
|
6039
|
+
},
|
|
6040
|
+
{
|
|
6041
|
+
"below": "1.20.0",
|
|
6042
|
+
"severity": "high",
|
|
6043
|
+
"atOrAbove": "1.15.0",
|
|
6044
|
+
"cwe": [
|
|
6045
|
+
"CWE-1333",
|
|
6046
|
+
"CWE-400"
|
|
6047
|
+
],
|
|
6048
|
+
"identifiers": {
|
|
6049
|
+
"CVE": [
|
|
6050
|
+
"CVE-2026-101906"
|
|
6051
|
+
],
|
|
6052
|
+
"githubID": "GHSA-MGHH-PGCX-3JJJ"
|
|
6053
|
+
}
|
|
6054
|
+
},
|
|
6055
|
+
{
|
|
6056
|
+
"below": "1.20.0",
|
|
6057
|
+
"severity": "high",
|
|
6058
|
+
"atOrAbove": "1.15.1",
|
|
6059
|
+
"cwe": [
|
|
6060
|
+
"CWE-1321"
|
|
6061
|
+
],
|
|
6062
|
+
"identifiers": {
|
|
6063
|
+
"CVE": [
|
|
6064
|
+
"CVE-2026-101909"
|
|
6065
|
+
],
|
|
6066
|
+
"githubID": "GHSA-X97P-JQ2G-JP4F"
|
|
6067
|
+
}
|
|
6068
|
+
},
|
|
6069
|
+
{
|
|
6070
|
+
"below": "1.20.0",
|
|
6071
|
+
"severity": "high",
|
|
6072
|
+
"atOrAbove": "1.15.2",
|
|
6073
|
+
"cwe": [
|
|
6074
|
+
"CWE-1321",
|
|
6075
|
+
"CWE-441"
|
|
6076
|
+
],
|
|
6077
|
+
"identifiers": {
|
|
6078
|
+
"CVE": [
|
|
6079
|
+
"CVE-2026-101905"
|
|
6080
|
+
],
|
|
6081
|
+
"githubID": "GHSA-M8M8-QJ5V-23W3"
|
|
6082
|
+
}
|
|
6083
|
+
},
|
|
6084
|
+
{
|
|
6085
|
+
"below": "1.20.0",
|
|
6086
|
+
"severity": "high",
|
|
6087
|
+
"atOrAbove": "1.16.1",
|
|
6088
|
+
"cwe": [
|
|
6089
|
+
"CWE-1333"
|
|
6090
|
+
],
|
|
6091
|
+
"identifiers": {
|
|
6092
|
+
"CVE": [
|
|
6093
|
+
"CVE-2026-101903"
|
|
6094
|
+
],
|
|
6095
|
+
"githubID": "GHSA-C29M-XWM3-CM6R"
|
|
6096
|
+
}
|
|
6097
|
+
},
|
|
6098
|
+
{
|
|
6099
|
+
"below": "1.20.0",
|
|
6100
|
+
"severity": "high",
|
|
6101
|
+
"atOrAbove": "1.17.0",
|
|
6102
|
+
"cwe": [
|
|
6103
|
+
"CWE-441",
|
|
6104
|
+
"CWE-601"
|
|
6105
|
+
],
|
|
6106
|
+
"identifiers": {
|
|
6107
|
+
"CVE": [
|
|
6108
|
+
"CVE-2026-101907"
|
|
6109
|
+
],
|
|
6110
|
+
"githubID": "GHSA-R4GJ-5M52-G5WH"
|
|
6111
|
+
}
|
|
5884
6112
|
}
|
|
5885
6113
|
]
|
|
5886
6114
|
},
|
|
@@ -5986,6 +6214,30 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
5986
6214
|
],
|
|
5987
6215
|
"githubID": "GHSA-6V5V-WF23-FMFQ"
|
|
5988
6216
|
}
|
|
6217
|
+
},
|
|
6218
|
+
{
|
|
6219
|
+
"below": "14.3.1",
|
|
6220
|
+
"severity": "medium",
|
|
6221
|
+
"atOrAbove": "0",
|
|
6222
|
+
"cwe": [
|
|
6223
|
+
"CWE-400",
|
|
6224
|
+
"CWE-407"
|
|
6225
|
+
],
|
|
6226
|
+
"identifiers": {
|
|
6227
|
+
"githubID": "GHSA-253C-MCHW-3W2R"
|
|
6228
|
+
}
|
|
6229
|
+
},
|
|
6230
|
+
{
|
|
6231
|
+
"below": "15.0.1",
|
|
6232
|
+
"severity": "medium",
|
|
6233
|
+
"atOrAbove": "15.0.0",
|
|
6234
|
+
"cwe": [
|
|
6235
|
+
"CWE-400",
|
|
6236
|
+
"CWE-407"
|
|
6237
|
+
],
|
|
6238
|
+
"identifiers": {
|
|
6239
|
+
"githubID": "GHSA-253C-MCHW-3W2R"
|
|
6240
|
+
}
|
|
5989
6241
|
}
|
|
5990
6242
|
]
|
|
5991
6243
|
},
|
|
@@ -7740,6 +7992,31 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
7740
7992
|
"githubID": "GHSA-Q8WF-6R8G-63CH"
|
|
7741
7993
|
}
|
|
7742
7994
|
},
|
|
7995
|
+
{
|
|
7996
|
+
"below": "15.5.24",
|
|
7997
|
+
"severity": "critical",
|
|
7998
|
+
"atOrAbove": "10.0.0",
|
|
7999
|
+
"cwe": [
|
|
8000
|
+
"CWE-1395"
|
|
8001
|
+
],
|
|
8002
|
+
"identifiers": {
|
|
8003
|
+
"githubID": "GHSA-2XP9-VWFH-VXW4"
|
|
8004
|
+
}
|
|
8005
|
+
},
|
|
8006
|
+
{
|
|
8007
|
+
"below": "15.5.24",
|
|
8008
|
+
"severity": "critical",
|
|
8009
|
+
"atOrAbove": "13.4.0",
|
|
8010
|
+
"cwe": [
|
|
8011
|
+
"CWE-22"
|
|
8012
|
+
],
|
|
8013
|
+
"identifiers": {
|
|
8014
|
+
"CVE": [
|
|
8015
|
+
"CVE-2026-75604"
|
|
8016
|
+
],
|
|
8017
|
+
"githubID": "GHSA-P293-QW3H-JR36"
|
|
8018
|
+
}
|
|
8019
|
+
},
|
|
7743
8020
|
{
|
|
7744
8021
|
"below": "15.6.0-canary.59",
|
|
7745
8022
|
"severity": "high",
|
|
@@ -8336,6 +8613,42 @@ const RETIRE_BROWSER_CATALOG = Object.freeze({
|
|
|
8336
8613
|
],
|
|
8337
8614
|
"githubID": "GHSA-Q8WF-6R8G-63CH"
|
|
8338
8615
|
}
|
|
8616
|
+
},
|
|
8617
|
+
{
|
|
8618
|
+
"below": "16.3.3",
|
|
8619
|
+
"severity": "critical",
|
|
8620
|
+
"atOrAbove": "16.0.0",
|
|
8621
|
+
"cwe": [
|
|
8622
|
+
"CWE-1395"
|
|
8623
|
+
],
|
|
8624
|
+
"identifiers": {
|
|
8625
|
+
"githubID": "GHSA-2XP9-VWFH-VXW4"
|
|
8626
|
+
}
|
|
8627
|
+
},
|
|
8628
|
+
{
|
|
8629
|
+
"below": "16.3.3",
|
|
8630
|
+
"severity": "critical",
|
|
8631
|
+
"atOrAbove": "16.0.0",
|
|
8632
|
+
"cwe": [
|
|
8633
|
+
"CWE-22"
|
|
8634
|
+
],
|
|
8635
|
+
"identifiers": {
|
|
8636
|
+
"CVE": [
|
|
8637
|
+
"CVE-2026-75604"
|
|
8638
|
+
],
|
|
8639
|
+
"githubID": "GHSA-P293-QW3H-JR36"
|
|
8640
|
+
}
|
|
8641
|
+
},
|
|
8642
|
+
{
|
|
8643
|
+
"below": "16.3.6",
|
|
8644
|
+
"severity": "critical",
|
|
8645
|
+
"atOrAbove": "16.2.0",
|
|
8646
|
+
"cwe": [
|
|
8647
|
+
"CWE-1395"
|
|
8648
|
+
],
|
|
8649
|
+
"identifiers": {
|
|
8650
|
+
"githubID": "GHSA-VCVR-R3JV-PC5J"
|
|
8651
|
+
}
|
|
8339
8652
|
}
|
|
8340
8653
|
]
|
|
8341
8654
|
},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// Generated by tools/unicode-confusable-audit.mts from the pinned Unicode
|
|
2
2
|
// UTS #39 data file. Do not edit this projection by hand.
|
|
3
|
-
export const GENERATED_CONFUSABLE_MAPPING_VERSION = "tr39-
|
|
3
|
+
export const GENERATED_CONFUSABLE_MAPPING_VERSION = "tr39-18.0.0-bounded-ascii-v3";
|
|
4
4
|
export const GENERATED_CONFUSABLE_SOURCE = Object.freeze({
|
|
5
5
|
"standard": "Unicode UTS #39",
|
|
6
|
-
"unicodeVersion": "
|
|
7
|
-
"url": "https://www.unicode.org/Public/
|
|
8
|
-
"sha256": "
|
|
6
|
+
"unicodeVersion": "18.0.0",
|
|
7
|
+
"url": "https://www.unicode.org/Public/18.0.0/security/confusables.txt",
|
|
8
|
+
"sha256": "6ed3ee967c9dfdf6677d563c9985182fbc50a2efb7d6059cd57b2e2ce18f5b92",
|
|
9
9
|
"license": "Unicode-3.0"
|
|
10
10
|
});
|
|
11
11
|
export const GENERATED_CONFUSABLE_POLICY = Object.freeze({
|
|
@@ -24,33 +24,33 @@ export const GENERATED_CONFUSABLE_POLICY = Object.freeze({
|
|
|
24
24
|
"totalMappings": 312
|
|
25
25
|
});
|
|
26
26
|
export const GENERATED_CONFUSABLE_STATS = Object.freeze({
|
|
27
|
-
"sourceBytes":
|
|
28
|
-
"sourceLines":
|
|
29
|
-
"parsedMappings":
|
|
30
|
-
"eligibleMappings":
|
|
31
|
-
"projectedMappings":
|
|
32
|
-
"generationMappings":
|
|
27
|
+
"sourceBytes": 763128,
|
|
28
|
+
"sourceLines": 9863,
|
|
29
|
+
"parsedMappings": 6712,
|
|
30
|
+
"eligibleMappings": 255,
|
|
31
|
+
"projectedMappings": 126,
|
|
32
|
+
"generationMappings": 115,
|
|
33
33
|
"rejectedMalformedLines": 0,
|
|
34
|
-
"rejectedOutsidePolicy":
|
|
34
|
+
"rejectedOutsidePolicy": 5780,
|
|
35
35
|
"skeletonCapHits": 0,
|
|
36
|
-
"generationCapHits":
|
|
36
|
+
"generationCapHits": 4
|
|
37
37
|
});
|
|
38
38
|
export const GENERATED_CONFUSABLE_GROUPS = Object.freeze({
|
|
39
|
-
a: "
|
|
40
|
-
b: "
|
|
41
|
-
c: "
|
|
42
|
-
d: "
|
|
39
|
+
a: "аαɑꭤ",
|
|
40
|
+
b: "ьƄ𝈇",
|
|
41
|
+
c: "сϲⅽᴄⲥ𐐽ᲃ",
|
|
42
|
+
d: "ԁⅾꓒ𐆋",
|
|
43
43
|
e: "еεҽꬲ",
|
|
44
|
-
f: "
|
|
44
|
+
f: "ϝꞙƒʄẝꬵ𐅾ք",
|
|
45
45
|
g: "ɡƍᶃց",
|
|
46
46
|
h: "һհ",
|
|
47
47
|
i: "іιıɪɩⲓꙇւ",
|
|
48
|
-
j: "
|
|
48
|
+
j: "јϳȷյ",
|
|
49
49
|
k: "κк",
|
|
50
|
-
l: "
|
|
51
|
-
m: "
|
|
50
|
+
l: "ӏⅼǀꓲꞁꟾ",
|
|
51
|
+
m: "мⅿՠ",
|
|
52
52
|
n: "ոռ",
|
|
53
|
-
o: "
|
|
53
|
+
o: "оοօᴏⲟᴑꬽᲂσϭ𐐬",
|
|
54
54
|
p: "рρϱⲣþƿϸⳏ",
|
|
55
55
|
q: "ԛգզ",
|
|
56
56
|
r: "гꭇꭈᴦⲅ",
|
|
@@ -58,25 +58,25 @@ export const GENERATED_CONFUSABLE_GROUPS = Object.freeze({
|
|
|
58
58
|
t: "тτ",
|
|
59
59
|
u: "υսᴜꭎʋꞟꭒ",
|
|
60
60
|
v: "ѵνᴠ",
|
|
61
|
-
w: "
|
|
61
|
+
w: "ԝաᴡшɯꟺѡⲽ",
|
|
62
62
|
x: "хχ",
|
|
63
63
|
y: "уүʏγⲩɣᶌỿꭚ",
|
|
64
|
-
z: "
|
|
64
|
+
z: "ᴢⱬⲍ",
|
|
65
65
|
});
|
|
66
66
|
export const GENERATED_GENERATION_CONFUSABLE_GROUPS = Object.freeze({
|
|
67
|
-
a: "
|
|
68
|
-
b: "
|
|
69
|
-
c: "
|
|
70
|
-
d: "
|
|
67
|
+
a: "аαɑꭤ",
|
|
68
|
+
b: "ь𝈇",
|
|
69
|
+
c: "сᴄⲥ𐐽ᲃ",
|
|
70
|
+
d: "ԁꓒ𐆋",
|
|
71
71
|
e: "еεҽꬲ",
|
|
72
|
-
f: "
|
|
72
|
+
f: "ϝꞙƒʄẝꬵ𐅾ք",
|
|
73
73
|
g: "ɡƍᶃց",
|
|
74
74
|
h: "һհ",
|
|
75
75
|
i: "іιıɪɩⲓꙇւ",
|
|
76
|
-
j: "
|
|
76
|
+
j: "јϳȷյ",
|
|
77
77
|
k: "κк",
|
|
78
|
-
l: "
|
|
79
|
-
m: "
|
|
78
|
+
l: "ӏǀꓲꞁꟾ",
|
|
79
|
+
m: "мՠ",
|
|
80
80
|
n: "ոռ",
|
|
81
81
|
o: "оοօᴏⲟᴑꬽσ",
|
|
82
82
|
p: "рρⲣþƿϸⳏ",
|
|
@@ -86,8 +86,8 @@ export const GENERATED_GENERATION_CONFUSABLE_GROUPS = Object.freeze({
|
|
|
86
86
|
t: "тτ",
|
|
87
87
|
u: "υսᴜꭎʋꞟꭒ",
|
|
88
88
|
v: "ѵνᴠ",
|
|
89
|
-
w: "
|
|
89
|
+
w: "ԝաᴡшɯꟺѡⲽ",
|
|
90
90
|
x: "хχ",
|
|
91
91
|
y: "уүʏγⲩɣᶌỿ",
|
|
92
|
-
z: "
|
|
92
|
+
z: "ᴢⱬⲍ",
|
|
93
93
|
});
|
package/lib/html-signals.mjs
CHANGED
|
@@ -280,6 +280,7 @@ function extractPageRelationships(analysis, domain, options = {}) {
|
|
|
280
280
|
let downloadFileTypeLimitReached = false;
|
|
281
281
|
let perTagLimitReached = false;
|
|
282
282
|
let resourceCountLimitReached = false;
|
|
283
|
+
let resourceIdentityTruncated = false;
|
|
283
284
|
for (const element of analysis.elements) {
|
|
284
285
|
if (!element.html || !RELATIONSHIP_TAGS.has(element.name))
|
|
285
286
|
continue;
|
|
@@ -337,6 +338,8 @@ function extractPageRelationships(analysis, domain, options = {}) {
|
|
|
337
338
|
discardedUrls += 1;
|
|
338
339
|
continue;
|
|
339
340
|
}
|
|
341
|
+
if (normalized.pathTruncated)
|
|
342
|
+
resourceIdentityTruncated = true;
|
|
340
343
|
const key = `${reference.type}:${normalized.url}`;
|
|
341
344
|
if (!resourceKeys.has(key)) {
|
|
342
345
|
if (resourceKeys.size >= MAX_RESOURCE_TAGS) {
|
|
@@ -362,7 +365,7 @@ function extractPageRelationships(analysis, domain, options = {}) {
|
|
|
362
365
|
tracking.truncated = true;
|
|
363
366
|
const truncated = tagLimitReached || resourceOriginLimitReached || embeddedOriginLimitReached
|
|
364
367
|
|| contactDomainLimitReached || downloadOriginLimitReached || downloadFileTypeLimitReached
|
|
365
|
-
|| perTagLimitReached || resourceCountLimitReached || tracking.truncated;
|
|
368
|
+
|| perTagLimitReached || resourceCountLimitReached || resourceIdentityTruncated || tracking.truncated;
|
|
366
369
|
const limitations = [];
|
|
367
370
|
if (tagLimitReached)
|
|
368
371
|
limitations.push(`Resource parsing reached the ${MAX_RESOURCE_TAGS}-tag or ${MAX_IDENTITY_TAG_LENGTH}-character tag limit.`);
|
|
@@ -380,6 +383,8 @@ function extractPageRelationships(analysis, domain, options = {}) {
|
|
|
380
383
|
limitations.push(`Some srcset URL candidates could not be safely enumerated within the ${MAX_URLS_PER_TAG}-candidate per-tag boundary.`);
|
|
381
384
|
if (resourceCountLimitReached)
|
|
382
385
|
limitations.push(`Only the first ${MAX_RESOURCE_TAGS} distinct resource references were examined.`);
|
|
386
|
+
if (resourceIdentityTruncated)
|
|
387
|
+
limitations.push('Overlong resource paths were reduced to origins; distinct resource counts may be incomplete.');
|
|
383
388
|
if (tracking.truncated)
|
|
384
389
|
limitations.push(`Only the first ${MAX_TRACKING_IDENTIFIERS} tracking identifiers were retained.`);
|
|
385
390
|
return {
|
|
@@ -387,7 +392,7 @@ function extractPageRelationships(analysis, domain, options = {}) {
|
|
|
387
392
|
count: resourceKeys.size,
|
|
388
393
|
byType,
|
|
389
394
|
externalOrigins: [...resourceOrigins].sort(),
|
|
390
|
-
truncated: tagLimitReached || resourceOriginLimitReached || perTagLimitReached || resourceCountLimitReached,
|
|
395
|
+
truncated: tagLimitReached || resourceOriginLimitReached || perTagLimitReached || resourceCountLimitReached || resourceIdentityTruncated,
|
|
391
396
|
},
|
|
392
397
|
embeddedOrigins: [...embeddedOrigins].sort(),
|
|
393
398
|
contactDomains: [...contactDomains].sort(),
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
// so valid retained evidence is not rejected by a stale projection.
|
|
4
|
-
import { MAX_OUTBOUND_HTTP_URL_CHARACTERS } from "../packages/contracts/http-url.mjs";
|
|
5
|
-
export const MAX_HTTP_EVIDENCE_REDIRECTS = 5;
|
|
6
|
-
export const MAX_HTTP_ATTEMPTS = 2;
|
|
7
|
-
export const MAX_HTTP_PROVENANCE_URL = MAX_OUTBOUND_HTTP_URL_CHARACTERS;
|
|
8
|
-
export const MAX_HTTP_ERROR_LENGTH = 180;
|
|
1
|
+
// Retained public import; the runtime-neutral implementation lives in the domain layer.
|
|
2
|
+
export * from "../packages/analysis/http-evidence-bounds.mjs";
|
|
@@ -4,8 +4,20 @@
|
|
|
4
4
|
// additive evidence object suitable for API responses and exports.
|
|
5
5
|
import { createObservation } from "../packages/evidence/observation.mjs";
|
|
6
6
|
import { MAX_OUTBOUND_HTTP_URL_CHARACTERS } from "../packages/contracts/http-url.mjs";
|
|
7
|
-
import { MAX_HTTP_ATTEMPTS, MAX_HTTP_ERROR_LENGTH, MAX_HTTP_EVIDENCE_REDIRECTS, MAX_HTTP_PROVENANCE_URL, } from "
|
|
7
|
+
import { MAX_HTTP_ATTEMPTS, MAX_HTTP_ERROR_LENGTH, MAX_HTTP_EVIDENCE_REDIRECTS, MAX_HTTP_PROVENANCE_URL, } from "../packages/analysis/http-evidence-bounds.mjs";
|
|
8
8
|
import { HTTP_DELIVERY_LIMITATIONS, HTTP_DELIVERY_METADATA_VERSION, MAX_HTTP_CACHE_SECONDS, MAX_HTTP_DELIVERY_HEADER_BYTES, MAX_HTTP_DELIVERY_TOKENS, } from "./homepage-metadata-contract.mjs";
|
|
9
|
+
/** Publish delivery metadata only at its owning response boundary. */
|
|
10
|
+
export function withoutHttpDeliveryMetadata(value) {
|
|
11
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
12
|
+
return value;
|
|
13
|
+
const output = { ...value };
|
|
14
|
+
if (output.response && typeof output.response === 'object' && !Array.isArray(output.response)) {
|
|
15
|
+
const response = { ...output.response };
|
|
16
|
+
delete response.deliveryMetadata;
|
|
17
|
+
output.response = response;
|
|
18
|
+
}
|
|
19
|
+
return output;
|
|
20
|
+
}
|
|
9
21
|
const MAX_HTTP_REDIRECTS = MAX_HTTP_EVIDENCE_REDIRECTS;
|
|
10
22
|
const MAX_HTTP_HEADER_LENGTH = 1024;
|
|
11
23
|
const MAX_HTTP_DELIVERY_HEADER_LENGTH = MAX_HTTP_DELIVERY_HEADER_BYTES;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Versioned policy for projecting the Unicode UTS #39 confusables data into
|
|
2
2
|
// WHOISleuth's intentionally small domain-label mapping. The full upstream
|
|
3
3
|
// table is never shipped to browsers or consulted at runtime.
|
|
4
|
-
export const UNICODE_CONFUSABLE_DATA_VERSION = '
|
|
5
|
-
export const UNICODE_CONFUSABLE_SOURCE_URL =
|
|
6
|
-
export const UNICODE_CONFUSABLE_SOURCE_SHA256 = '
|
|
4
|
+
export const UNICODE_CONFUSABLE_DATA_VERSION = '18.0.0';
|
|
5
|
+
export const UNICODE_CONFUSABLE_SOURCE_URL = `https://www.unicode.org/Public/${UNICODE_CONFUSABLE_DATA_VERSION}/security/confusables.txt`;
|
|
6
|
+
export const UNICODE_CONFUSABLE_SOURCE_SHA256 = '6ed3ee967c9dfdf6677d563c9985182fbc50a2efb7d6059cd57b2e2ce18f5b92';
|
|
7
7
|
export const UNICODE_CONFUSABLE_LICENSE = 'Unicode-3.0';
|
|
8
8
|
export const CONFUSABLE_PROJECTION_SCHEMA = 'whoisleuth.unicode-confusable-projection';
|
|
9
9
|
export const CONFUSABLE_PROJECTION_VERSION = 1;
|
|
@@ -71,7 +71,9 @@ export const REVIEWED_GENERATION_CONFUSABLES = Object.freeze({
|
|
|
71
71
|
l: 'ӏǀꓲ',
|
|
72
72
|
m: 'м',
|
|
73
73
|
n: 'ոռ',
|
|
74
|
-
o
|
|
74
|
+
// Keep the complete previously generated o-set when newer source mappings
|
|
75
|
+
// compete for the same bounded generation slots.
|
|
76
|
+
o: 'оοօᴏⲟᴑꬽσ',
|
|
75
77
|
p: 'рρⲣ',
|
|
76
78
|
q: 'ԛգզ',
|
|
77
79
|
r: 'гꭇ',
|
package/lib/idn-confusables.mjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// bounded projection of Unicode Technical Standard #39 data plus the existing
|
|
5
5
|
// reviewed compatibility set. It focuses on characters that visually collapse
|
|
6
6
|
// to common ASCII domain-label characters.
|
|
7
|
-
import { GENERATED_CONFUSABLE_GROUPS, GENERATED_CONFUSABLE_MAPPING_VERSION, GENERATED_GENERATION_CONFUSABLE_GROUPS, } from "./generated/unicode-confusables
|
|
7
|
+
import { GENERATED_CONFUSABLE_GROUPS, GENERATED_CONFUSABLE_MAPPING_VERSION, GENERATED_GENERATION_CONFUSABLE_GROUPS, } from "./generated/unicode-confusables.mjs";
|
|
8
8
|
import { MAX_GENERATION_CONFUSABLES_PER_ASCII, REVIEWED_GENERATION_CONFUSABLES, } from "./idn-confusable-policy.mjs";
|
|
9
9
|
export const IDN_ANALYSIS_VERSION = 1;
|
|
10
10
|
export const CONFUSABLE_MAPPING_VERSION = GENERATED_CONFUSABLE_MAPPING_VERSION;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DOMAIN_CONTROL_MANIFEST_COMPATIBILITY } from "../packages/contracts/domain-control-manifest.mjs";
|
|
2
|
+
import { MANAGED_INDICATOR_SET_COMPATIBILITY } from "../packages/contracts/analyst-interchange.mjs";
|
|
2
3
|
import { CLI_CASE_PACK_COMPATIBILITY, ENCRYPTED_WORKSPACE_ARCHIVE_COMPATIBILITY, WORKSPACE_ARCHIVE_COMPATIBILITY, } from "../packages/contracts/case-portability.mjs";
|
|
3
4
|
import { LOOKUP_CLAIM_PASSPORT_COMPATIBILITY } from "../packages/contracts/investigation-portability.mjs";
|
|
4
5
|
import { BRAND_PROFILE_EXPORT_COMPATIBILITY } from "../packages/contracts/workspace-portability.mjs";
|
|
@@ -16,6 +17,15 @@ function compatibilityReference(descriptor) {
|
|
|
16
17
|
});
|
|
17
18
|
}
|
|
18
19
|
export const INTERCHANGE_ARTIFACT_CONTRACTS = Object.freeze([
|
|
20
|
+
Object.freeze({
|
|
21
|
+
id: 'managed_indicators', ...compatibilityReference(MANAGED_INDICATOR_SET_COMPATIBILITY),
|
|
22
|
+
versionField: 'version', nestedSchemaPath: Object.freeze([]),
|
|
23
|
+
browser: Object.freeze({ import: 'supported', export: 'supported' }),
|
|
24
|
+
cli: Object.freeze({ read: 'supported', write: 'supported', verify: 'supported' }),
|
|
25
|
+
fidelity: 'semantic_exact_after_normalisation', requiredAssurance: 'whole_integrity',
|
|
26
|
+
preservedFieldGroups: Object.freeze(['stable_indicator_identities', 'original_observations', 'review_windows', 'withdrawal_records', 'preceding_revision_digest']),
|
|
27
|
+
excludedFieldGroups: Object.freeze(['raw_responses', 'browser_local_records', 'credentials', 'remote_publication', 'author_authentication', 'unavailable_revision_history']),
|
|
28
|
+
}),
|
|
19
29
|
Object.freeze({
|
|
20
30
|
id: 'lookup_claim_passport',
|
|
21
31
|
...compatibilityReference(LOOKUP_CLAIM_PASSPORT_COMPATIBILITY),
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// child-profile contracts. These checks validate without normalising or
|
|
3
3
|
// copying untrusted values.
|
|
4
4
|
import { MAX_OBSERVATION_DIAGNOSTICS } from "../packages/evidence/observation.mjs";
|
|
5
|
-
import { MAX_HTTP_PROVENANCE_URL } from "
|
|
5
|
+
import { MAX_HTTP_PROVENANCE_URL } from "../packages/analysis/http-evidence-bounds.mjs";
|
|
6
6
|
const LOOKUP_CONTROL_CHAR_RE = /[\u0000-\u001f\u007f-\u009f]|\p{Default_Ignorable_Code_Point}/u;
|
|
7
7
|
const MAX_LOOKUP_CONTRACT_HOST_LENGTH = 253;
|
|
8
8
|
function isJsonObject(value) {
|