@forkpoint/agent-lighthouse-core 3.0.0 → 3.1.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/dist/index.d.mts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Dispatcher } from 'undici';
1
2
  import { CheerioAPI } from 'cheerio';
2
3
  import { z } from 'zod';
3
4
 
@@ -61,7 +62,44 @@ interface FetchResult {
61
62
  * Use before fetching any URL extracted from scanned site content.
62
63
  */
63
64
  declare function isSafeUrl(url: string): Promise<boolean>;
64
- declare function createFetcher(): {
65
+ interface FetcherOptions {
66
+ /**
67
+ * undici dispatcher for every request this fetcher makes.
68
+ *
69
+ * Omitted, requests go through a shared `new Agent()` whose per-origin
70
+ * connection count is unlimited — right for a site owner scanning their own
71
+ * site, who wants the scan over quickly. A caller scanning origins that did
72
+ * not invite it passes a bounded agent (`new Agent({ connections: 2 })`) so
73
+ * one scan cannot open 28 sockets at once against a stranger's WAF.
74
+ */
75
+ dispatcher?: Dispatcher;
76
+ /**
77
+ * How many requests this fetcher may have in flight at once.
78
+ *
79
+ * Omitted, there is no ceiling and every request is issued as it arrives.
80
+ *
81
+ * A bounded dispatcher alone is not enough for a caller that wants one, and
82
+ * the difference is what the clocks measure. `Agent({ connections: 2 })`
83
+ * accepts all 26 root-file requests the scan fires in one `Promise.all` and
84
+ * queues 24 of them inside undici — but the per-request deadline and the
85
+ * `ttfbMs` clock both start when `fetch()` is called, so an origin averaging
86
+ * 800 ms per file would have its tail requests time out on the scanner's own
87
+ * queue and be reported as unreachable. Waiting here instead holds a request
88
+ * outside both clocks until it can actually be issued, so what they measure
89
+ * is the origin.
90
+ */
91
+ maxConcurrent?: number;
92
+ }
93
+ /**
94
+ * A dispatcher that opens at most `connections` sockets per origin.
95
+ *
96
+ * The scanner's own default has no such ceiling, and for a site owner scanning
97
+ * their own site that is the right trade. A caller scanning origins that did
98
+ * not invite it wants the ceiling, and this saves it from taking a direct
99
+ * dependency on undici to express one line of politeness.
100
+ */
101
+ declare function boundedDispatcher(connections: number): Dispatcher;
102
+ declare function createFetcher(fetcherOptions?: FetcherOptions): {
65
103
  fetch: (options: FetchOptions) => Promise<FetchResult>;
66
104
  };
67
105
 
@@ -593,9 +631,12 @@ interface PlanOptions {
593
631
  /**
594
632
  * Skip audits whose `requires` the scan did not obtain.
595
633
  *
596
- * Off by default while the gate is calibrated: turning it on changes what
597
- * every blocked or client-rendered scan reports, and that lands as one
598
- * deliberate change rather than as a side effect of this one.
634
+ * The orchestrator turns this on for every scan
635
+ * (`enforceEvidenceGate ?? true`), so an audit's `requires` decides what a
636
+ * blocked or client-rendered scan reports. It defaults to off in this option
637
+ * bag only so a caller planning audits directly gets the unfiltered set;
638
+ * passing `false` is the measurement escape hatch for comparing a gated run
639
+ * against an ungated one.
599
640
  */
600
641
  enforceEvidence?: boolean;
601
642
  }
@@ -720,6 +761,39 @@ interface ScanOptions {
720
761
  * useful when measuring what the gate removes.
721
762
  */
722
763
  enforceEvidenceGate?: boolean;
764
+ /**
765
+ * undici dispatcher for every request this scan makes.
766
+ *
767
+ * Omitted, the scan uses the fetcher's shared agent, which opens as many
768
+ * connections per origin as the scan asks for. A caller scanning origins that
769
+ * did not invite it — the nightly corpus job — passes a bounded agent so the
770
+ * ~28 root-file requests the scan issues at once do not arrive at a stranger's
771
+ * WAF as a burst.
772
+ */
773
+ dispatcher?: Dispatcher;
774
+ /**
775
+ * How many requests this scan may have in flight at once.
776
+ *
777
+ * Omitted, the scan issues every request as it reaches the fetcher. A caller
778
+ * scanning origins that did not invite it sets this alongside `dispatcher`:
779
+ * the dispatcher bounds the sockets, and this bounds what is issued, so the
780
+ * requests the scan holds back wait outside the per-request deadline and
781
+ * outside `ttfbMs` instead of inside undici's queue. Without it a bounded
782
+ * scan reports its own queueing as the origin being slow or unreachable.
783
+ */
784
+ maxConcurrent?: number;
785
+ /**
786
+ * A `robots.txt` response the caller already has, used instead of fetching
787
+ * it again.
788
+ *
789
+ * For a caller that must read `robots.txt` before it decides to scan at all.
790
+ * The nightly corpus job is one: it asks permission first, and without this
791
+ * every site it visits gets two requests for the one file its owner watches.
792
+ * It must be the response to `<baseUrl>/robots.txt` fetched with this
793
+ * scanner's own user agent — anything else and the scan judges a file it was
794
+ * not served.
795
+ */
796
+ robotsTxt?: FetchResult;
723
797
  }
724
798
  declare function runScan(url: string, options?: ScanOptions): Promise<ScanReport>;
725
799
 
@@ -1516,4 +1590,4 @@ type AcpLinkType = (typeof ACP_LINK_TYPES)[number];
1516
1590
  */
1517
1591
  declare function resolvePolicyLinks(ctx: CheckContext): Map<AcpLinkType, string>;
1518
1592
 
1519
- export { ACP_LINK_TYPES, AI_CRAWLER_UAS, AUDIT_ID_PATTERN, type AcpLinkType, type AgentLighthouseConfig, Audit, type AuditGuidance, AuditGuidanceSchema, type AuditMeta, AuditMetaSchema, type AuditPlan, type AuditProgressEvent, type AuditRegistration, type AuditResult, AuditResultSchema, type AuditRunResult, type AuditTier, AuditTierSchema, type AuditTrace, type AuditTraceHandler, BASELINE_UA, type BlockClass, CATEGORY_IDS, CATEGORY_MASS, CATEGORY_NAMES, type CategoryConfig, type CategoryResult, type CheckContext, type CheckFn, type CheckPriority, CheckPrioritySchema, type CheckRecommendation, type CheckResult, CheckResultSchema, type CheckStatus, CheckStatusSchema, type CssRule, DEFAULT_SCAN_LIMIT, type DeprecationNotice, DeprecationNoticeSchema, type EvidenceGrade, EvidenceGradeSchema, type EvidenceKey, EvidenceKeySchema, type ExpectedKind, type FetchClass, type FetchOptions, type FetchResult, type FieldStatus, type FixEffort, FixEffortSchema, MAX_CONCURRENT_REQUESTS, MAX_PAGES_PER_SCAN, MAX_RESPONSE_BODY_BYTES, PAGE_TYPE_LABELS, PHASE_WEIGHTS, PRESETS, type PageContext, type PageCss, type PageJudgement, type PageOverride, type PageType, type PhaseId, type PresetName, type PresetOptions, type ProductFieldVerification, ProgressTracker, READINESS_WEIGHTS, REQUEST_TIMEOUT_MS, type ReadinessVitals, type RobotsFile, type RobotsGroup, type RobotsRule, SCANNER_USER_AGENT, SCAN_TIMEOUT_MS, SCORE_TIER_LABELS, type ScanConfig, type ScanEvent, type ScanEvidence, type ScanOptions, type ScanReport, type ScanValidity, type ScoreDisplayMode, ScoreDisplayModeSchema, type ScoreTier, type SitemapEntry, type SitemapTree, TAG_SCAN_ERROR, TAG_SKIPPED_NO_EVIDENCE, TAG_SKIPPED_PAGE_TYPE, type UaProbe, type WafProtection, allEvidenceMet, allJsonLdNodes, buildCategoryResult, buildScanEvidence, calculateCategoryScore, calculateOverallScore, classifyFetch, classifyResponse, collectPageCss, collectSitemapEntries, createFetcher, defaultConfig, defineConfig, detectPageType, detectWafProtection, evidenceUrl, extractDomain, extractForms, extractHeadLinks, extractHeadings, extractImages, extractInternalLinks, extractJsonLd, extractMarkdownLinks, extractMetaTags, extractNavLinks, extractProductFieldVerification, extractScripts, extractStylesheetUrls, filterConfig, flattenJsonLd, formatTrace, getMainContentText, getPreset, getRenderedText, getScoreTier, getTierColor, getTierLabel, getWordCount, groupsForBot, hasNamedGroup, isBlanketBlocked, isInformative, isPathAllowed, isPrivateIp, isRealFile, isSafeUrl, isW3CDateTime, joinUrl, judgePages, loadConfigFile, logger, matchesUserAgent, normalizeNewlines, normalizeUrl, outcomeOf, pagesOfType, parseCssRules, parseHtml, parseRobots, parseRobotsFile, planAudits, probeUaParity, resolvePolicyLinks, runAudits, runScan, sampleEntries, stripBom, topLevelJsonLd, traceFromCheck, weightForGrade };
1593
+ export { ACP_LINK_TYPES, AI_CRAWLER_UAS, AUDIT_ID_PATTERN, type AcpLinkType, type AgentLighthouseConfig, Audit, type AuditGuidance, AuditGuidanceSchema, type AuditMeta, AuditMetaSchema, type AuditPlan, type AuditProgressEvent, type AuditRegistration, type AuditResult, AuditResultSchema, type AuditRunResult, type AuditTier, AuditTierSchema, type AuditTrace, type AuditTraceHandler, BASELINE_UA, type BlockClass, CATEGORY_IDS, CATEGORY_MASS, CATEGORY_NAMES, type CategoryConfig, type CategoryResult, type CheckContext, type CheckFn, type CheckPriority, CheckPrioritySchema, type CheckRecommendation, type CheckResult, CheckResultSchema, type CheckStatus, CheckStatusSchema, type CssRule, DEFAULT_SCAN_LIMIT, type DeprecationNotice, DeprecationNoticeSchema, type EvidenceGrade, EvidenceGradeSchema, type EvidenceKey, EvidenceKeySchema, type ExpectedKind, type FetchClass, type FetchOptions, type FetchResult, type FetcherOptions, type FieldStatus, type FixEffort, FixEffortSchema, MAX_CONCURRENT_REQUESTS, MAX_PAGES_PER_SCAN, MAX_RESPONSE_BODY_BYTES, PAGE_TYPE_LABELS, PHASE_WEIGHTS, PRESETS, type PageContext, type PageCss, type PageJudgement, type PageOverride, type PageType, type PhaseId, type PresetName, type PresetOptions, type ProductFieldVerification, ProgressTracker, READINESS_WEIGHTS, REQUEST_TIMEOUT_MS, type ReadinessVitals, type RobotsFile, type RobotsGroup, type RobotsRule, SCANNER_USER_AGENT, SCAN_TIMEOUT_MS, SCORE_TIER_LABELS, type ScanConfig, type ScanEvent, type ScanEvidence, type ScanOptions, type ScanReport, type ScanValidity, type ScoreDisplayMode, ScoreDisplayModeSchema, type ScoreTier, type SitemapEntry, type SitemapTree, TAG_SCAN_ERROR, TAG_SKIPPED_NO_EVIDENCE, TAG_SKIPPED_PAGE_TYPE, type UaProbe, type WafProtection, allEvidenceMet, allJsonLdNodes, boundedDispatcher, buildCategoryResult, buildScanEvidence, calculateCategoryScore, calculateOverallScore, classifyFetch, classifyResponse, collectPageCss, collectSitemapEntries, createFetcher, defaultConfig, defineConfig, detectPageType, detectWafProtection, evidenceUrl, extractDomain, extractForms, extractHeadLinks, extractHeadings, extractImages, extractInternalLinks, extractJsonLd, extractMarkdownLinks, extractMetaTags, extractNavLinks, extractProductFieldVerification, extractScripts, extractStylesheetUrls, filterConfig, flattenJsonLd, formatTrace, getMainContentText, getPreset, getRenderedText, getScoreTier, getTierColor, getTierLabel, getWordCount, groupsForBot, hasNamedGroup, isBlanketBlocked, isInformative, isPathAllowed, isPrivateIp, isRealFile, isSafeUrl, isW3CDateTime, joinUrl, judgePages, loadConfigFile, logger, matchesUserAgent, normalizeNewlines, normalizeUrl, outcomeOf, pagesOfType, parseCssRules, parseHtml, parseRobots, parseRobotsFile, planAudits, probeUaParity, resolvePolicyLinks, runAudits, runScan, sampleEntries, stripBom, topLevelJsonLd, traceFromCheck, weightForGrade };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Dispatcher } from 'undici';
1
2
  import { CheerioAPI } from 'cheerio';
2
3
  import { z } from 'zod';
3
4
 
@@ -61,7 +62,44 @@ interface FetchResult {
61
62
  * Use before fetching any URL extracted from scanned site content.
62
63
  */
63
64
  declare function isSafeUrl(url: string): Promise<boolean>;
64
- declare function createFetcher(): {
65
+ interface FetcherOptions {
66
+ /**
67
+ * undici dispatcher for every request this fetcher makes.
68
+ *
69
+ * Omitted, requests go through a shared `new Agent()` whose per-origin
70
+ * connection count is unlimited — right for a site owner scanning their own
71
+ * site, who wants the scan over quickly. A caller scanning origins that did
72
+ * not invite it passes a bounded agent (`new Agent({ connections: 2 })`) so
73
+ * one scan cannot open 28 sockets at once against a stranger's WAF.
74
+ */
75
+ dispatcher?: Dispatcher;
76
+ /**
77
+ * How many requests this fetcher may have in flight at once.
78
+ *
79
+ * Omitted, there is no ceiling and every request is issued as it arrives.
80
+ *
81
+ * A bounded dispatcher alone is not enough for a caller that wants one, and
82
+ * the difference is what the clocks measure. `Agent({ connections: 2 })`
83
+ * accepts all 26 root-file requests the scan fires in one `Promise.all` and
84
+ * queues 24 of them inside undici — but the per-request deadline and the
85
+ * `ttfbMs` clock both start when `fetch()` is called, so an origin averaging
86
+ * 800 ms per file would have its tail requests time out on the scanner's own
87
+ * queue and be reported as unreachable. Waiting here instead holds a request
88
+ * outside both clocks until it can actually be issued, so what they measure
89
+ * is the origin.
90
+ */
91
+ maxConcurrent?: number;
92
+ }
93
+ /**
94
+ * A dispatcher that opens at most `connections` sockets per origin.
95
+ *
96
+ * The scanner's own default has no such ceiling, and for a site owner scanning
97
+ * their own site that is the right trade. A caller scanning origins that did
98
+ * not invite it wants the ceiling, and this saves it from taking a direct
99
+ * dependency on undici to express one line of politeness.
100
+ */
101
+ declare function boundedDispatcher(connections: number): Dispatcher;
102
+ declare function createFetcher(fetcherOptions?: FetcherOptions): {
65
103
  fetch: (options: FetchOptions) => Promise<FetchResult>;
66
104
  };
67
105
 
@@ -593,9 +631,12 @@ interface PlanOptions {
593
631
  /**
594
632
  * Skip audits whose `requires` the scan did not obtain.
595
633
  *
596
- * Off by default while the gate is calibrated: turning it on changes what
597
- * every blocked or client-rendered scan reports, and that lands as one
598
- * deliberate change rather than as a side effect of this one.
634
+ * The orchestrator turns this on for every scan
635
+ * (`enforceEvidenceGate ?? true`), so an audit's `requires` decides what a
636
+ * blocked or client-rendered scan reports. It defaults to off in this option
637
+ * bag only so a caller planning audits directly gets the unfiltered set;
638
+ * passing `false` is the measurement escape hatch for comparing a gated run
639
+ * against an ungated one.
599
640
  */
600
641
  enforceEvidence?: boolean;
601
642
  }
@@ -720,6 +761,39 @@ interface ScanOptions {
720
761
  * useful when measuring what the gate removes.
721
762
  */
722
763
  enforceEvidenceGate?: boolean;
764
+ /**
765
+ * undici dispatcher for every request this scan makes.
766
+ *
767
+ * Omitted, the scan uses the fetcher's shared agent, which opens as many
768
+ * connections per origin as the scan asks for. A caller scanning origins that
769
+ * did not invite it — the nightly corpus job — passes a bounded agent so the
770
+ * ~28 root-file requests the scan issues at once do not arrive at a stranger's
771
+ * WAF as a burst.
772
+ */
773
+ dispatcher?: Dispatcher;
774
+ /**
775
+ * How many requests this scan may have in flight at once.
776
+ *
777
+ * Omitted, the scan issues every request as it reaches the fetcher. A caller
778
+ * scanning origins that did not invite it sets this alongside `dispatcher`:
779
+ * the dispatcher bounds the sockets, and this bounds what is issued, so the
780
+ * requests the scan holds back wait outside the per-request deadline and
781
+ * outside `ttfbMs` instead of inside undici's queue. Without it a bounded
782
+ * scan reports its own queueing as the origin being slow or unreachable.
783
+ */
784
+ maxConcurrent?: number;
785
+ /**
786
+ * A `robots.txt` response the caller already has, used instead of fetching
787
+ * it again.
788
+ *
789
+ * For a caller that must read `robots.txt` before it decides to scan at all.
790
+ * The nightly corpus job is one: it asks permission first, and without this
791
+ * every site it visits gets two requests for the one file its owner watches.
792
+ * It must be the response to `<baseUrl>/robots.txt` fetched with this
793
+ * scanner's own user agent — anything else and the scan judges a file it was
794
+ * not served.
795
+ */
796
+ robotsTxt?: FetchResult;
723
797
  }
724
798
  declare function runScan(url: string, options?: ScanOptions): Promise<ScanReport>;
725
799
 
@@ -1516,4 +1590,4 @@ type AcpLinkType = (typeof ACP_LINK_TYPES)[number];
1516
1590
  */
1517
1591
  declare function resolvePolicyLinks(ctx: CheckContext): Map<AcpLinkType, string>;
1518
1592
 
1519
- export { ACP_LINK_TYPES, AI_CRAWLER_UAS, AUDIT_ID_PATTERN, type AcpLinkType, type AgentLighthouseConfig, Audit, type AuditGuidance, AuditGuidanceSchema, type AuditMeta, AuditMetaSchema, type AuditPlan, type AuditProgressEvent, type AuditRegistration, type AuditResult, AuditResultSchema, type AuditRunResult, type AuditTier, AuditTierSchema, type AuditTrace, type AuditTraceHandler, BASELINE_UA, type BlockClass, CATEGORY_IDS, CATEGORY_MASS, CATEGORY_NAMES, type CategoryConfig, type CategoryResult, type CheckContext, type CheckFn, type CheckPriority, CheckPrioritySchema, type CheckRecommendation, type CheckResult, CheckResultSchema, type CheckStatus, CheckStatusSchema, type CssRule, DEFAULT_SCAN_LIMIT, type DeprecationNotice, DeprecationNoticeSchema, type EvidenceGrade, EvidenceGradeSchema, type EvidenceKey, EvidenceKeySchema, type ExpectedKind, type FetchClass, type FetchOptions, type FetchResult, type FieldStatus, type FixEffort, FixEffortSchema, MAX_CONCURRENT_REQUESTS, MAX_PAGES_PER_SCAN, MAX_RESPONSE_BODY_BYTES, PAGE_TYPE_LABELS, PHASE_WEIGHTS, PRESETS, type PageContext, type PageCss, type PageJudgement, type PageOverride, type PageType, type PhaseId, type PresetName, type PresetOptions, type ProductFieldVerification, ProgressTracker, READINESS_WEIGHTS, REQUEST_TIMEOUT_MS, type ReadinessVitals, type RobotsFile, type RobotsGroup, type RobotsRule, SCANNER_USER_AGENT, SCAN_TIMEOUT_MS, SCORE_TIER_LABELS, type ScanConfig, type ScanEvent, type ScanEvidence, type ScanOptions, type ScanReport, type ScanValidity, type ScoreDisplayMode, ScoreDisplayModeSchema, type ScoreTier, type SitemapEntry, type SitemapTree, TAG_SCAN_ERROR, TAG_SKIPPED_NO_EVIDENCE, TAG_SKIPPED_PAGE_TYPE, type UaProbe, type WafProtection, allEvidenceMet, allJsonLdNodes, buildCategoryResult, buildScanEvidence, calculateCategoryScore, calculateOverallScore, classifyFetch, classifyResponse, collectPageCss, collectSitemapEntries, createFetcher, defaultConfig, defineConfig, detectPageType, detectWafProtection, evidenceUrl, extractDomain, extractForms, extractHeadLinks, extractHeadings, extractImages, extractInternalLinks, extractJsonLd, extractMarkdownLinks, extractMetaTags, extractNavLinks, extractProductFieldVerification, extractScripts, extractStylesheetUrls, filterConfig, flattenJsonLd, formatTrace, getMainContentText, getPreset, getRenderedText, getScoreTier, getTierColor, getTierLabel, getWordCount, groupsForBot, hasNamedGroup, isBlanketBlocked, isInformative, isPathAllowed, isPrivateIp, isRealFile, isSafeUrl, isW3CDateTime, joinUrl, judgePages, loadConfigFile, logger, matchesUserAgent, normalizeNewlines, normalizeUrl, outcomeOf, pagesOfType, parseCssRules, parseHtml, parseRobots, parseRobotsFile, planAudits, probeUaParity, resolvePolicyLinks, runAudits, runScan, sampleEntries, stripBom, topLevelJsonLd, traceFromCheck, weightForGrade };
1593
+ export { ACP_LINK_TYPES, AI_CRAWLER_UAS, AUDIT_ID_PATTERN, type AcpLinkType, type AgentLighthouseConfig, Audit, type AuditGuidance, AuditGuidanceSchema, type AuditMeta, AuditMetaSchema, type AuditPlan, type AuditProgressEvent, type AuditRegistration, type AuditResult, AuditResultSchema, type AuditRunResult, type AuditTier, AuditTierSchema, type AuditTrace, type AuditTraceHandler, BASELINE_UA, type BlockClass, CATEGORY_IDS, CATEGORY_MASS, CATEGORY_NAMES, type CategoryConfig, type CategoryResult, type CheckContext, type CheckFn, type CheckPriority, CheckPrioritySchema, type CheckRecommendation, type CheckResult, CheckResultSchema, type CheckStatus, CheckStatusSchema, type CssRule, DEFAULT_SCAN_LIMIT, type DeprecationNotice, DeprecationNoticeSchema, type EvidenceGrade, EvidenceGradeSchema, type EvidenceKey, EvidenceKeySchema, type ExpectedKind, type FetchClass, type FetchOptions, type FetchResult, type FetcherOptions, type FieldStatus, type FixEffort, FixEffortSchema, MAX_CONCURRENT_REQUESTS, MAX_PAGES_PER_SCAN, MAX_RESPONSE_BODY_BYTES, PAGE_TYPE_LABELS, PHASE_WEIGHTS, PRESETS, type PageContext, type PageCss, type PageJudgement, type PageOverride, type PageType, type PhaseId, type PresetName, type PresetOptions, type ProductFieldVerification, ProgressTracker, READINESS_WEIGHTS, REQUEST_TIMEOUT_MS, type ReadinessVitals, type RobotsFile, type RobotsGroup, type RobotsRule, SCANNER_USER_AGENT, SCAN_TIMEOUT_MS, SCORE_TIER_LABELS, type ScanConfig, type ScanEvent, type ScanEvidence, type ScanOptions, type ScanReport, type ScanValidity, type ScoreDisplayMode, ScoreDisplayModeSchema, type ScoreTier, type SitemapEntry, type SitemapTree, TAG_SCAN_ERROR, TAG_SKIPPED_NO_EVIDENCE, TAG_SKIPPED_PAGE_TYPE, type UaProbe, type WafProtection, allEvidenceMet, allJsonLdNodes, boundedDispatcher, buildCategoryResult, buildScanEvidence, calculateCategoryScore, calculateOverallScore, classifyFetch, classifyResponse, collectPageCss, collectSitemapEntries, createFetcher, defaultConfig, defineConfig, detectPageType, detectWafProtection, evidenceUrl, extractDomain, extractForms, extractHeadLinks, extractHeadings, extractImages, extractInternalLinks, extractJsonLd, extractMarkdownLinks, extractMetaTags, extractNavLinks, extractProductFieldVerification, extractScripts, extractStylesheetUrls, filterConfig, flattenJsonLd, formatTrace, getMainContentText, getPreset, getRenderedText, getScoreTier, getTierColor, getTierLabel, getWordCount, groupsForBot, hasNamedGroup, isBlanketBlocked, isInformative, isPathAllowed, isPrivateIp, isRealFile, isSafeUrl, isW3CDateTime, joinUrl, judgePages, loadConfigFile, logger, matchesUserAgent, normalizeNewlines, normalizeUrl, outcomeOf, pagesOfType, parseCssRules, parseHtml, parseRobots, parseRobotsFile, planAudits, probeUaParity, resolvePolicyLinks, runAudits, runScan, sampleEntries, stripBom, topLevelJsonLd, traceFromCheck, weightForGrade };