lighthouse 13.5.0 → 13.6.0-dev.20261028
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/.agents/skills/update-ard-port/SKILL.md +171 -0
- package/.agents/skills/update-trace-engine/SKILL.md +154 -0
- package/cli/bin.d.ts +2 -2
- package/cli/bin.js +5 -4
- package/cli/cli-flags.d.ts +16 -1
- package/cli/cli-flags.js +53 -2
- package/cli/printer.js +5 -8
- package/cli/run.d.ts +5 -5
- package/cli/run.js +97 -47
- package/cli/sentry-prompt.js +3 -4
- package/cli/test/smokehouse/__snapshots__/report-assert-test.js.snap +1 -1
- package/cli/test/smokehouse/config/exclusions.js +3 -1
- package/cli/test/smokehouse/frontends/smokehouse-bin.js +5 -3
- package/cli/test/smokehouse/report-assert-test.js +65 -0
- package/cli/test/smokehouse/report-assert.js +24 -39
- package/cli/test/smokehouse/smokehouse-test.d.ts +2 -0
- package/cli/test/smokehouse/smokehouse-test.js +120 -0
- package/cli/test/smokehouse/smokehouse.js +37 -15
- package/cli/test/smokehouse/version-check-test.js +5 -0
- package/cli/test/smokehouse/version-check.d.ts +1 -1
- package/cli/test/smokehouse/version-check.js +1 -1
- package/commitlint.config.js +1 -1
- package/core/audits/accessibility/accesskeys.js +1 -1
- package/core/audits/accessibility/aria-allowed-attr.js +1 -1
- package/core/audits/accessibility/aria-allowed-role.js +1 -1
- package/core/audits/accessibility/aria-command-name.js +1 -1
- package/core/audits/accessibility/aria-conditional-attr.js +1 -1
- package/core/audits/accessibility/aria-deprecated-role.js +1 -1
- package/core/audits/accessibility/aria-dialog-name.js +1 -1
- package/core/audits/accessibility/aria-hidden-body.js +1 -1
- package/core/audits/accessibility/aria-hidden-focus.js +1 -1
- package/core/audits/accessibility/aria-input-field-name.js +1 -1
- package/core/audits/accessibility/aria-meter-name.js +1 -1
- package/core/audits/accessibility/aria-progressbar-name.js +1 -1
- package/core/audits/accessibility/aria-prohibited-attr.js +1 -1
- package/core/audits/accessibility/aria-required-attr.js +1 -1
- package/core/audits/accessibility/aria-required-children.js +1 -1
- package/core/audits/accessibility/aria-required-parent.js +1 -1
- package/core/audits/accessibility/aria-roles.js +1 -1
- package/core/audits/accessibility/aria-text.js +1 -1
- package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
- package/core/audits/accessibility/aria-tooltip-name.js +1 -1
- package/core/audits/accessibility/aria-treeitem-name.js +1 -1
- package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
- package/core/audits/accessibility/aria-valid-attr.js +1 -1
- package/core/audits/accessibility/autocomplete-valid.js +1 -1
- package/core/audits/accessibility/button-name.js +1 -1
- package/core/audits/accessibility/bypass.js +1 -1
- package/core/audits/accessibility/color-contrast.js +1 -1
- package/core/audits/accessibility/definition-list.js +1 -1
- package/core/audits/accessibility/dlitem.js +1 -1
- package/core/audits/accessibility/document-title.js +1 -1
- package/core/audits/accessibility/duplicate-id-aria.js +1 -1
- package/core/audits/accessibility/empty-heading.js +1 -1
- package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
- package/core/audits/accessibility/frame-title.js +1 -1
- package/core/audits/accessibility/heading-order.js +1 -1
- package/core/audits/accessibility/html-has-lang.js +1 -1
- package/core/audits/accessibility/html-lang-valid.js +1 -1
- package/core/audits/accessibility/html-xml-lang-mismatch.js +1 -1
- package/core/audits/accessibility/identical-links-same-purpose.js +1 -1
- package/core/audits/accessibility/image-alt.js +1 -1
- package/core/audits/accessibility/image-redundant-alt.js +1 -1
- package/core/audits/accessibility/input-button-name.js +1 -1
- package/core/audits/accessibility/input-image-alt.js +1 -1
- package/core/audits/accessibility/label-content-name-mismatch.js +1 -1
- package/core/audits/accessibility/label.js +1 -1
- package/core/audits/accessibility/landmark-one-main.js +1 -1
- package/core/audits/accessibility/link-in-text-block.js +1 -1
- package/core/audits/accessibility/link-name.js +1 -1
- package/core/audits/accessibility/list.js +1 -1
- package/core/audits/accessibility/listitem.js +1 -1
- package/core/audits/accessibility/meta-refresh.js +1 -1
- package/core/audits/accessibility/meta-viewport.js +1 -1
- package/core/audits/accessibility/object-alt.js +1 -1
- package/core/audits/accessibility/presentation-role-conflict.js +1 -1
- package/core/audits/accessibility/select-name.js +1 -1
- package/core/audits/accessibility/skip-link.js +1 -1
- package/core/audits/accessibility/svg-img-alt.js +1 -1
- package/core/audits/accessibility/tabindex.js +1 -1
- package/core/audits/accessibility/table-duplicate-name.js +1 -1
- package/core/audits/accessibility/table-fake-caption.js +1 -1
- package/core/audits/accessibility/target-size.js +1 -1
- package/core/audits/accessibility/td-has-header.js +1 -1
- package/core/audits/accessibility/td-headers-attr.js +1 -1
- package/core/audits/accessibility/th-has-data-cells.js +1 -1
- package/core/audits/accessibility/valid-lang.js +1 -1
- package/core/audits/accessibility/video-caption.js +1 -1
- package/core/audits/agentic/ard-schema.d.ts +13 -0
- package/core/audits/agentic/ard-schema.js +81 -33
- package/core/audits/agentic/llms-txt.js +5 -2
- package/core/audits/baseline.d.ts +29 -7
- package/core/audits/baseline.js +19 -6
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +2 -2
- package/core/audits/insights/insight-audit.d.ts +9 -0
- package/core/audits/insights/insight-audit.js +35 -28
- package/core/audits/long-tasks.js +2 -1
- package/core/audits/predictive-perf.js +2 -2
- package/core/audits/screenshot-thumbnails.d.ts +0 -13
- package/core/audits/screenshot-thumbnails.js +0 -45
- package/core/audits/script-treemap-data.js +26 -6
- package/core/audits/seo/robots-txt.js +3 -8
- package/core/audits/unsized-images.d.ts +0 -7
- package/core/audits/unsized-images.js +7 -26
- package/core/computed/lcp-image-record.d.ts +2 -23
- package/core/computed/lcp-image-record.js +3 -67
- package/core/computed/lcp-network-record.d.ts +24 -0
- package/core/computed/lcp-network-record.js +74 -0
- package/core/computed/metrics/lantern-metric.js +1 -1
- package/core/computed/metrics/lcp-breakdown.js +6 -6
- package/core/computed/metrics/time-to-first-byte.js +5 -3
- package/core/computed/navigation-insights.js +3 -2
- package/core/computed/page-dependency-graph.js +55 -5
- package/core/computed/speedline.js +20 -5
- package/core/computed/trace-engine-result.js +25 -5
- package/core/computed/unused-css.js +15 -2
- package/core/config/config-helpers.d.ts +5 -0
- package/core/config/config-helpers.js +17 -28
- package/core/config/config-plugin.d.ts +7 -0
- package/core/config/config-plugin.js +49 -0
- package/core/config/config.js +10 -2
- package/core/config/constants.d.ts +2 -28
- package/core/config/filters.js +1 -0
- package/core/config/lr-desktop-config.js +13 -0
- package/core/config/lr-mobile-config.js +13 -0
- package/core/gather/base-artifacts.js +7 -1
- package/core/gather/driver/storage.js +3 -2
- package/core/gather/gatherers/agentic/ard.d.ts +59 -4
- package/core/gather/gatherers/agentic/ard.js +218 -56
- package/core/gather/gatherers/full-page-screenshot.js +2 -2
- package/core/gather/gatherers/image-elements.d.ts +7 -0
- package/core/gather/gatherers/image-elements.js +75 -24
- package/core/gather/gatherers/inspector-issues.js +2 -0
- package/core/gather/gatherers/js-usage.js +2 -0
- package/core/gather/gatherers/scripts.d.ts +16 -3
- package/core/gather/gatherers/scripts.js +157 -14
- package/core/gather/gatherers/stylesheets.js +2 -0
- package/core/gather/gatherers/trace-elements.js +2 -1
- package/core/gather/gatherers/trace.d.ts +6 -0
- package/core/gather/gatherers/trace.js +56 -16
- package/core/index.d.ts +2 -0
- package/core/index.js +2 -0
- package/core/lib/arbitrary-equality-map.d.ts +14 -3
- package/core/lib/arbitrary-equality-map.js +113 -6
- package/core/lib/baseline/web-features-data.json +32 -11
- package/core/lib/baseline/web-features-metadata.json +1 -1
- package/core/lib/bf-cache-strings.js +237 -254
- package/core/lib/cdt/Common.d.ts +1 -1
- package/core/lib/cdt/Common.js +2 -2
- package/core/lib/cdt/Platform.d.ts +7 -7
- package/core/lib/cdt/Platform.js +11 -8
- package/core/lib/cdt/SDK.d.ts +5 -1
- package/core/lib/cdt/SDK.js +4 -2
- package/core/lib/cdt/generated/ParsedURL.d.ts +0 -1
- package/core/lib/cdt/generated/ParsedURL.js +3 -9
- package/core/lib/cdt/generated/SourceMap.d.ts +24 -25
- package/core/lib/cdt/generated/SourceMap.js +7 -15
- package/core/lib/deprecations-strings.d.ts +93 -88
- package/core/lib/deprecations-strings.js +20 -14
- package/core/lib/i18n/i18n.d.ts +2 -1
- package/core/lib/i18n/i18n.js +25 -13
- package/core/lib/legacy-javascript/legacy-javascript.d.ts +3 -2
- package/core/lib/legacy-javascript/legacy-javascript.js +235 -111
- package/core/lib/legacy-javascript/polyfill-graph-data.json +94 -89
- package/core/lib/legacy-javascript/polyfill-module-data.json +48 -7
- package/core/lib/minification-estimator.js +10 -10
- package/core/lib/network-request.d.ts +2 -0
- package/core/lib/network-request.js +21 -0
- package/core/lib/page-functions.js +2 -5
- package/core/lib/sentry.d.ts +1 -0
- package/core/lib/sentry.js +3 -0
- package/core/lib/trace-engine.d.ts +1 -0
- package/core/lib/trace-engine.js +2 -0
- package/core/runner.js +9 -3
- package/dist/report/bundle.esm.js +10 -10
- package/dist/report/flow.js +13 -13
- package/dist/report/standalone.js +5 -5
- package/flow-report/src/common.tsx +5 -2
- package/flow-report/src/i18n/i18n.d.ts +2 -0
- package/flow-report/src/summary/summary.tsx +9 -1
- package/flow-report/src/util.d.ts +1 -1
- package/package.json +62 -98
- package/readme.md +13 -18
- package/report/generator/file-namer.d.ts +1 -1
- package/report/generator/file-namer.js +5 -4
- package/report/generator/flow-report-assets.js +1 -3
- package/report/generator/report-assets.js +1 -2
- package/report/renderer/category-renderer.js +2 -2
- package/report/renderer/details-renderer.js +3 -2
- package/report/renderer/dom.d.ts +8 -2
- package/report/renderer/dom.js +29 -1
- package/report/renderer/element-screenshot-renderer.js +3 -0
- package/report/renderer/performance-category-renderer.js +3 -1
- package/report/renderer/report-renderer.js +4 -0
- package/report/renderer/report-utils.d.ts +1 -0
- package/report/renderer/report-utils.js +2 -0
- package/report/renderer/text-encoding.js +2 -2
- package/report/types/augment-dom.d.ts +4 -0
- package/shared/esm-utils.d.ts +0 -8
- package/shared/esm-utils.js +0 -18
- package/shared/localization/format.js +5 -3
- package/shared/localization/locales/ar-XB.json +157 -142
- package/shared/localization/locales/ar.json +157 -142
- package/shared/localization/locales/bg.json +154 -139
- package/shared/localization/locales/ca.json +157 -142
- package/shared/localization/locales/cs.json +148 -133
- package/shared/localization/locales/da.json +153 -138
- package/shared/localization/locales/de.json +152 -137
- package/shared/localization/locales/el.json +153 -138
- package/shared/localization/locales/en-GB.json +160 -145
- package/shared/localization/locales/en-US.json +239 -218
- package/shared/localization/locales/en-XL.json +239 -218
- package/shared/localization/locales/es-419.json +150 -135
- package/shared/localization/locales/es.json +149 -134
- package/shared/localization/locales/fi.json +151 -136
- package/shared/localization/locales/fil.json +154 -139
- package/shared/localization/locales/fr.json +150 -135
- package/shared/localization/locales/he.json +160 -145
- package/shared/localization/locales/hi.json +156 -141
- package/shared/localization/locales/hr.json +154 -139
- package/shared/localization/locales/hu.json +111 -96
- package/shared/localization/locales/id.json +153 -138
- package/shared/localization/locales/it.json +153 -138
- package/shared/localization/locales/ja.json +150 -135
- package/shared/localization/locales/ko.json +42 -27
- package/shared/localization/locales/lt.json +152 -137
- package/shared/localization/locales/lv.json +93 -78
- package/shared/localization/locales/nl.json +149 -134
- package/shared/localization/locales/no.json +152 -137
- package/shared/localization/locales/pl.json +153 -138
- package/shared/localization/locales/pt-PT.json +152 -137
- package/shared/localization/locales/pt.json +157 -142
- package/shared/localization/locales/ro.json +149 -134
- package/shared/localization/locales/ru.json +76 -61
- package/shared/localization/locales/sk.json +153 -138
- package/shared/localization/locales/sl.json +149 -134
- package/shared/localization/locales/sr-Latn.json +151 -136
- package/shared/localization/locales/sr.json +151 -136
- package/shared/localization/locales/sv.json +152 -137
- package/shared/localization/locales/ta.json +156 -141
- package/shared/localization/locales/te.json +157 -142
- package/shared/localization/locales/th.json +111 -96
- package/shared/localization/locales/tr.json +153 -138
- package/shared/localization/locales/uk.json +149 -134
- package/shared/localization/locales/vi.json +162 -147
- package/shared/localization/locales/zh-HK.json +150 -135
- package/shared/localization/locales/zh-TW.json +154 -139
- package/shared/localization/locales/zh.json +152 -137
- package/shared/localization/swap-locale.js +10 -5
- package/shared/root.js +1 -3
- package/third-party/ard/README.md +19 -10
- package/third-party/ard/ard-test.js +189 -266
- package/third-party/ard/ard.d.ts +18 -1
- package/third-party/ard/ard.js +282 -45
- package/third-party/ard/schema-validator.d.ts +14 -5
- package/third-party/ard/schema-validator.js +921 -1177
- package/third-party/ard/spec/schemas/ard-entry.schema.json +176 -0
- package/tsconfig.json +0 -2
- package/types/artifacts.d.ts +43 -7
- package/types/config.d.ts +6 -1
- package/types/externs.d.ts +4 -0
- package/types/internal/test.d.ts +1 -0
- package/build-tracker.config.js +0 -16
- package/core/lib/cdt/package.json +0 -4
- package/eslint-local-rules.d.cts +0 -9
- package/eslint.config.mjs +0 -242
- package/third-party/ard/spec/schemas/ai-catalog.schema.json +0 -292
- package/third-party/esbuild-plugins-polyfills/LICENSE +0 -3
- package/third-party/esbuild-plugins-polyfills/README.md +0 -7
- package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.d.ts +0 -9
- package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.js +0 -129
- package/types/internal/lookup-closest-locale.d.ts +0 -13
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/ards-project/ard-spec/main/spec/schemas/ard-entry.schema.json",
|
|
4
|
+
"title": "ArdEntry",
|
|
5
|
+
"description": "JSON Schema for an ARD entry — the description of a single agentic resource in a form that can be found by search. An ARD entry is defined by the ARD specification. It adopts the core descriptive terms of the default namespace and additionally requires the terms discovery depends on. Every ARD entry is a well-formed catalog entry; not every catalog entry is an ARD entry.",
|
|
6
|
+
"$ref": "#/$defs/ArdEntry",
|
|
7
|
+
"$defs": {
|
|
8
|
+
"EntryFields": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"description": "The terms an ARD entry may carry. This definition imposes no required terms; ArdEntry layers its own requirements on top.",
|
|
11
|
+
"properties": {
|
|
12
|
+
"@context": {
|
|
13
|
+
"description": "Optional JSON-LD context. Absent, the entry's unprefixed terms resolve to the default namespace. Present, it MAY declare additional namespaces whose prefixed terms describe the resource and become available as filter dimensions.",
|
|
14
|
+
"oneOf": [
|
|
15
|
+
{ "type": "string", "format": "uri" },
|
|
16
|
+
{ "type": "object" },
|
|
17
|
+
{ "type": "array" }
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"@id": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "Optional JSON-LD node identifier. When present alongside `identifier`, both MUST denote the same resource."
|
|
23
|
+
},
|
|
24
|
+
"identifier": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"pattern": "^urn:air:[a-zA-Z0-9.-]+(:[a-zA-Z0-9._-]+)+$",
|
|
27
|
+
"description": "Globally unique discovery handle. Domain-anchored URN: urn:air:<publisher>:<namespace>:<agent-name>. The <publisher> segment is the authority anchor used for publisher-authority binding."
|
|
28
|
+
},
|
|
29
|
+
"displayName": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Human-readable name."
|
|
32
|
+
},
|
|
33
|
+
"type": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Artifact type as an IANA Media Type (e.g. application/mcp-server-card+json). Names what the artifact is without constraining its internal schema."
|
|
36
|
+
},
|
|
37
|
+
"url": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"format": "uri",
|
|
40
|
+
"description": "Reference to the full artifact document. Mutually exclusive with `data`."
|
|
41
|
+
},
|
|
42
|
+
"data": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"description": "The complete artifact document, inline. Mutually exclusive with `url`."
|
|
45
|
+
},
|
|
46
|
+
"representativeQueries": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": { "type": "string" },
|
|
49
|
+
"description": "Sample natural-language queries this resource can serve — the signal a registry builds its semantic index from. RECOMMENDED on every entry; SHOULD contain 2-5 examples. Neither presence nor count is enforced here so that emitted entries validate; the conformance tester flags absence, or a count outside 2-5, as a warning (§D.2)."
|
|
50
|
+
},
|
|
51
|
+
"capabilities": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"items": { "type": "string" },
|
|
54
|
+
"description": "Short skill or tool tokens (e.g. [\"WeatherTool\"]) enabling structured filtering without fetching the full artifact."
|
|
55
|
+
},
|
|
56
|
+
"description": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Short natural-language description. Contributes to the semantic index."
|
|
59
|
+
},
|
|
60
|
+
"tags": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"items": { "type": "string" },
|
|
63
|
+
"description": "Keywords for filtering and faceting."
|
|
64
|
+
},
|
|
65
|
+
"version": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "Version of the artifact."
|
|
68
|
+
},
|
|
69
|
+
"updatedAt": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"format": "date-time",
|
|
72
|
+
"description": "ISO 8601 timestamp of the last modification."
|
|
73
|
+
},
|
|
74
|
+
"metadata": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"description": "Custom key-value pairs, available as metadata.* filter keys.",
|
|
77
|
+
"additionalProperties": {
|
|
78
|
+
"type": ["string", "number", "boolean", "null"]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"TrustManifest": {
|
|
82
|
+
"$ref": "#/$defs/TrustManifest"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"additionalProperties": true,
|
|
86
|
+
"$comment": "additionalProperties is intentionally true. Terms drawn from namespaces declared in the entry's @context (e.g. okf:taxonomy) are valid and become filter dimensions. Constraining this to false would defeat the namespace extension mechanism."
|
|
87
|
+
},
|
|
88
|
+
"ArdEntry": {
|
|
89
|
+
"description": "A complete ARD entry, as published. Requires the discovery-critical terms and exactly one of url/data.",
|
|
90
|
+
"allOf": [{ "$ref": "#/$defs/EntryFields" }],
|
|
91
|
+
"required": ["identifier", "displayName", "type"],
|
|
92
|
+
"oneOf": [
|
|
93
|
+
{
|
|
94
|
+
"required": ["url"],
|
|
95
|
+
"not": { "required": ["data"] }
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"required": ["data"],
|
|
99
|
+
"not": { "required": ["url"] }
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"ArdManifest": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"description": "The document published at /.well-known/ard.json (or any entry source). ARD requires only an `entries` array of ARD entries; any other top-level members are transport-defined and ignored by ARD, so additionalProperties is open.",
|
|
106
|
+
"required": ["entries"],
|
|
107
|
+
"properties": {
|
|
108
|
+
"entries": {
|
|
109
|
+
"type": "array",
|
|
110
|
+
"items": { "$ref": "#/$defs/ArdEntry" }
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"additionalProperties": true
|
|
114
|
+
},
|
|
115
|
+
"TrustManifest": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"description": "Identity, compliance, and provenance envelope. ARD requires only `identity` (for publisher-authority binding) and does not constrain the internal schema; validation is intentionally permissive (additionalProperties: true) so a trust manifest defined by any framework is structurally valid, including members ARD does not enumerate such as trustSchema. This does not mean consumers ignore it: a federated registry is expected to inspect the manifest and verify it per the framework named in trustSchema (attestations, provenance, signature). Signing and verification procedures are defined by that framework, not by ARD.",
|
|
118
|
+
"required": ["identity"],
|
|
119
|
+
"properties": {
|
|
120
|
+
"identity": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"description": "Globally unique cryptographic workload identifier (SPIFFE ID, DID, or HTTPS FQDN URI). Its trust domain MUST align with the <publisher> segment of the entry's identifier."
|
|
123
|
+
},
|
|
124
|
+
"identityType": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"description": "Hint for the cryptographic format of the identity (e.g. spiffe, did, https)."
|
|
127
|
+
},
|
|
128
|
+
"trustSchema": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"description": "The trust framework the manifest conforms to, and the source of its verification procedure.",
|
|
131
|
+
"properties": {
|
|
132
|
+
"identifier": { "type": "string" },
|
|
133
|
+
"version": { "type": "string" },
|
|
134
|
+
"governanceUri": { "type": "string", "format": "uri" },
|
|
135
|
+
"verificationMethods": { "type": "array", "items": { "type": "string" } }
|
|
136
|
+
},
|
|
137
|
+
"additionalProperties": true
|
|
138
|
+
},
|
|
139
|
+
"attestations": {
|
|
140
|
+
"type": "array",
|
|
141
|
+
"description": "Verifiable claims (e.g., organizational compliance audits, artifact security scans, build provenance, transparency-log receipts, or runtime evaluations).",
|
|
142
|
+
"items": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"required": ["type", "uri"],
|
|
145
|
+
"properties": {
|
|
146
|
+
"type": { "type": "string" },
|
|
147
|
+
"uri": { "type": "string", "format": "uri" },
|
|
148
|
+
"mediaType": { "type": "string" },
|
|
149
|
+
"digest": { "type": "string" }
|
|
150
|
+
},
|
|
151
|
+
"additionalProperties": true
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"provenance": {
|
|
155
|
+
"type": "array",
|
|
156
|
+
"description": "Lineage trail of the artifact.",
|
|
157
|
+
"items": {
|
|
158
|
+
"type": "object",
|
|
159
|
+
"required": ["relation", "sourceId"],
|
|
160
|
+
"properties": {
|
|
161
|
+
"relation": { "type": "string" },
|
|
162
|
+
"sourceId": { "type": "string" },
|
|
163
|
+
"sourceDigest": { "type": "string" }
|
|
164
|
+
},
|
|
165
|
+
"additionalProperties": true
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"signature": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"description": "Detached signature over the trust manifest content, per the framework named in trustSchema."
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"additionalProperties": true
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
"build/**/*.js",
|
|
19
19
|
"types.js",
|
|
20
20
|
"./types/**/*.d.ts",
|
|
21
|
-
"eslint-local-rules.cjs",
|
|
22
21
|
"third-party/axe/valid-langs.js",
|
|
23
|
-
"third-party/esbuild-plugins-polyfills/esbuild-polyfills.js",
|
|
24
22
|
"third-party/ard/**/*.js",
|
|
25
23
|
|
|
26
24
|
"core/test/results/sample_v2.json",
|
package/types/artifacts.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { parseManifest } from '../core/lib/manifest-parser.js';
|
|
|
12
12
|
import { LighthouseError } from '../core/lib/lh-error.js';
|
|
13
13
|
import { NetworkRequest as _NetworkRequest } from '../core/lib/network-request.js';
|
|
14
14
|
import speedline from 'speedline-core';
|
|
15
|
-
import
|
|
15
|
+
import CDTSourceMap from '../core/lib/cdt/generated/SourceMap.js';
|
|
16
16
|
import { ArbitraryEqualityMap } from '../core/lib/arbitrary-equality-map.js';
|
|
17
17
|
import type { TaskNode as _TaskNode } from '../core/lib/tracehouse/main-thread-tasks.js';
|
|
18
18
|
import AuditDetails from './lhr/audit-details.js'
|
|
@@ -124,9 +124,9 @@ export interface GathererArtifacts extends PublicGathererArtifacts {
|
|
|
124
124
|
InspectorIssues: Artifacts.InspectorIssues;
|
|
125
125
|
/** The status and tools registered via WebMCP. */
|
|
126
126
|
WebMCP: {isSupported: boolean, tools: Artifacts.WebMCPTool[]};
|
|
127
|
-
/**
|
|
128
|
-
* The WebMCP schema validation issues.
|
|
129
|
-
* TODO: fold this into the WebMCP artifact.
|
|
127
|
+
/**
|
|
128
|
+
* The WebMCP schema validation issues.
|
|
129
|
+
* TODO: fold this into the WebMCP artifact.
|
|
130
130
|
*/
|
|
131
131
|
WebMcpSchemaIssues: Artifacts.WebMcpSchemaIssue[];
|
|
132
132
|
/** JS coverage information for code used during audit. Keyed by script id. */
|
|
@@ -138,18 +138,38 @@ export interface GathererArtifacts extends PublicGathererArtifacts {
|
|
|
138
138
|
RobotsTxt: { status: number | null, content: string | null, errorMessage?: string };
|
|
139
139
|
/** Information on fetching and the content of the /llm.txt file. */
|
|
140
140
|
LlmsTxt: { status: number | null, content: string | null, errorMessage?: string };
|
|
141
|
-
/** Information on fetching and the content of the
|
|
141
|
+
/** Information on discovering, fetching, and the content of the Agentic Resource Discovery (ARD) manifest. */
|
|
142
142
|
AgentResourceDiscovery: {
|
|
143
143
|
status: number | null;
|
|
144
144
|
content: string | null;
|
|
145
145
|
headers: Record<string, string> | null;
|
|
146
|
-
|
|
146
|
+
/** The loaded manifest URL, or if none loaded, the first failed advertised URL (or `/.well-known/ard.json`). */
|
|
147
|
+
catalogUrl: string;
|
|
148
|
+
/** The discovery mechanism `catalogUrl` came from. `legacy*` sources are ARD's predecessor (`ai-catalog`) names. */
|
|
149
|
+
discoverySource: Artifacts.ArdDiscoverySource;
|
|
147
150
|
discoverySignals: {
|
|
148
151
|
robotsTxtAgentmap: string | null;
|
|
152
|
+
/** `<link rel="ard">` */
|
|
149
153
|
htmlLink: string | null;
|
|
154
|
+
/** `Link: <...>; rel="ard"` */
|
|
150
155
|
httpHeaderLink: string | null;
|
|
156
|
+
/** `<link rel="ai-catalog">` */
|
|
157
|
+
legacyHtmlLink: string | null;
|
|
158
|
+
/** `Link: <...>; rel="ai-catalog"` */
|
|
159
|
+
legacyHttpHeaderLink: string | null;
|
|
160
|
+
/** `/.well-known/ard.json` */
|
|
151
161
|
wellKnown: string;
|
|
162
|
+
/** `/.well-known/ai-catalog.json` */
|
|
163
|
+
legacyWellKnown: string;
|
|
152
164
|
};
|
|
165
|
+
/** Advertised locations (not the probed well-known paths) that were tried and failed to load, in discovery order. */
|
|
166
|
+
failedSources: Array<{
|
|
167
|
+
source: Artifacts.ArdDiscoverySource;
|
|
168
|
+
url: string;
|
|
169
|
+
status: number | null;
|
|
170
|
+
/** Set when the fetch itself failed (e.g. a timeout) rather than returning an HTTP error. */
|
|
171
|
+
errorMessage?: string;
|
|
172
|
+
}>;
|
|
153
173
|
errorMessage?: string;
|
|
154
174
|
};
|
|
155
175
|
/** Source maps of scripts executed in the page. */
|
|
@@ -165,6 +185,10 @@ export interface GathererArtifacts extends PublicGathererArtifacts {
|
|
|
165
185
|
}
|
|
166
186
|
|
|
167
187
|
declare namespace Artifacts {
|
|
188
|
+
/** Agentic Resource Discovery (ARD) manifest locations. `legacy*` sources are ARD's predecessor (`ai-catalog`) names. */
|
|
189
|
+
type ArdDiscoverySource = 'robotsTxtAgentmap' | 'htmlLink' | 'httpHeaderLink' | 'wellKnown' |
|
|
190
|
+
'legacyHtmlLink' | 'legacyHttpHeaderLink' | 'legacyWellKnown';
|
|
191
|
+
|
|
168
192
|
interface WebMcpSchemaIssue {
|
|
169
193
|
errorType: string;
|
|
170
194
|
violatingNodeId?: number;
|
|
@@ -543,7 +567,12 @@ declare namespace Artifacts {
|
|
|
543
567
|
|
|
544
568
|
type LanternMetric = Lantern.Metrics.MetricResult<Artifacts.NetworkRequest>;
|
|
545
569
|
|
|
546
|
-
type Speedline = speedline.Output<'speedIndex'
|
|
570
|
+
type Speedline = Omit<speedline.Output<'speedIndex'>, 'frames'> & {
|
|
571
|
+
frames: Array<Pick<
|
|
572
|
+
speedline.Output<'speedIndex'>['frames'][number],
|
|
573
|
+
'getImage' | 'getTimeStamp' | 'isProgressInterpolated'
|
|
574
|
+
>>;
|
|
575
|
+
};
|
|
547
576
|
|
|
548
577
|
interface TraceTimes {
|
|
549
578
|
timeOrigin: number;
|
|
@@ -902,6 +931,13 @@ export interface TraceEvent {
|
|
|
902
931
|
protocol?: string;
|
|
903
932
|
finishTime?: number;
|
|
904
933
|
headers?: Array<{ name: string, value: string }>;
|
|
934
|
+
scriptId?: number;
|
|
935
|
+
sourceText?: string;
|
|
936
|
+
isolate?: number | string;
|
|
937
|
+
executionContextId?: number;
|
|
938
|
+
sourceUrl?: string;
|
|
939
|
+
splitIndex?: number;
|
|
940
|
+
splitCount?: number;
|
|
905
941
|
};
|
|
906
942
|
frame?: string;
|
|
907
943
|
name?: string;
|
package/types/config.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {Audit} from '../core/audits/audit.js';
|
|
9
|
-
import {SharedFlagsSettings, ConfigSettings} from './lhr/settings.js';
|
|
9
|
+
import {SharedFlagsSettings, ConfigSettings, Locale} from './lhr/settings.js';
|
|
10
10
|
import Gatherer from './gatherer.js';
|
|
11
11
|
import {IcuMessage} from './lhr/i18n.js';
|
|
12
12
|
import Result from './lhr/lhr.js';
|
|
@@ -26,6 +26,7 @@ interface Config {
|
|
|
26
26
|
categories?: Record<string, Config.CategoryJson> | null;
|
|
27
27
|
groups?: Record<string, Config.GroupJson> | null;
|
|
28
28
|
plugins?: Array<string>;
|
|
29
|
+
locales?: Partial<Record<Locale, Record<string, {message: string}>>> | null;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
declare namespace Config {
|
|
@@ -43,6 +44,7 @@ declare namespace Config {
|
|
|
43
44
|
interface ArtifactJson {
|
|
44
45
|
id: string;
|
|
45
46
|
gatherer: GathererJson;
|
|
47
|
+
alwaysGather?: boolean;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
type GathererJson = {
|
|
@@ -94,6 +96,7 @@ declare namespace Config {
|
|
|
94
96
|
dependencies?: TDependencies extends Gatherer.DefaultDependenciesKey ?
|
|
95
97
|
undefined :
|
|
96
98
|
Record<Exclude<TDependencies, Gatherer.DefaultDependenciesKey>, {id: string}>;
|
|
99
|
+
alwaysGather?: boolean;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
102
|
type ArtifactDefnExpander<TDependencies extends Gatherer.DependencyKey> =
|
|
@@ -136,6 +139,8 @@ declare namespace Config {
|
|
|
136
139
|
category: Config.Category;
|
|
137
140
|
/** Optionally provide more groups in addition to those specified by the base config. */
|
|
138
141
|
groups?: Record<string, Config.GroupJson>;
|
|
142
|
+
/** Optionally provide locale messages for translating plugin strings. */
|
|
143
|
+
locales?: Partial<Record<Locale, Record<string, {message: string}>>>;
|
|
139
144
|
}
|
|
140
145
|
|
|
141
146
|
type Merge = {
|
package/types/externs.d.ts
CHANGED
|
@@ -57,6 +57,10 @@ export interface CliFlags extends Flags {
|
|
|
57
57
|
precomputedLanternDataPath?: string;
|
|
58
58
|
/** Path to the file where precomputed lantern data should be written to. */
|
|
59
59
|
lanternDataOutputPath?: string;
|
|
60
|
+
/** Path to a file containing newline-delimited URLs to audit. */
|
|
61
|
+
urlFile?: string[];
|
|
62
|
+
/** Flag to stop auditing remaining URLs immediately if a run fails. */
|
|
63
|
+
failFast?: boolean;
|
|
60
64
|
|
|
61
65
|
// The following are given defaults in cli-flags, so are not optional like in Flags or SharedFlagsSettings.
|
|
62
66
|
output: OutputMode[];
|
package/types/internal/test.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ declare module 'expect' {
|
|
|
29
29
|
*/
|
|
30
30
|
// tslint:disable-next-line: no-unnecessary-generics
|
|
31
31
|
toMatchInlineSnapshot<U extends { [P in keyof T]: any }>(propertyMatchers: Partial<U>, snapshot?: string): R;
|
|
32
|
+
toMatchInlineSnapshot(snapshot?: string): R;
|
|
32
33
|
|
|
33
34
|
// The following are custom matchers defined in expect-setup.js
|
|
34
35
|
|
package/build-tracker.config.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// https://buildtracker.dev/docs/installation/#upload-your-builds
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
module.exports = {
|
|
5
|
-
applicationUrl: 'https://lh-build-tracker.herokuapp.com',
|
|
6
|
-
artifacts: [
|
|
7
|
-
'dist/lightrider/lighthouse-lr-bundle.js',
|
|
8
|
-
'dist/extension/scripts/lighthouse-ext-bundle.js',
|
|
9
|
-
'dist/devtools/lighthouse-dt-bundle.js',
|
|
10
|
-
'dist/gh-pages/viewer/src/bundled.js',
|
|
11
|
-
'dist/gh-pages/treemap/src/bundled.js',
|
|
12
|
-
'dist/lightrider/report-generator-bundle.js',
|
|
13
|
-
'dist/dt-report-resources/report.js',
|
|
14
|
-
'dist/dt-report-resources/report-generator.js',
|
|
15
|
-
],
|
|
16
|
-
};
|
package/eslint-local-rules.d.cts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare namespace _exports {
|
|
2
|
-
export { RuleModule };
|
|
3
|
-
}
|
|
4
|
-
declare const _exports: {
|
|
5
|
-
'require-file-extension': import("eslint").Rule.RuleModule;
|
|
6
|
-
};
|
|
7
|
-
export = _exports;
|
|
8
|
-
type RuleModule = import("eslint").Rule.RuleModule;
|
|
9
|
-
//# sourceMappingURL=eslint-local-rules.d.cts.map
|
package/eslint.config.mjs
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import {fileURLToPath} from 'node:url';
|
|
3
|
-
|
|
4
|
-
import localRules from 'eslint-plugin-local-rules';
|
|
5
|
-
import _import from 'eslint-plugin-import';
|
|
6
|
-
import {fixupPluginRules} from '@eslint/compat';
|
|
7
|
-
import globals from 'globals';
|
|
8
|
-
import tsParser from '@typescript-eslint/parser';
|
|
9
|
-
import js from '@eslint/js';
|
|
10
|
-
import {FlatCompat} from '@eslint/eslintrc';
|
|
11
|
-
|
|
12
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
-
const __dirname = path.dirname(__filename);
|
|
14
|
-
const compat = new FlatCompat({
|
|
15
|
-
baseDirectory: __dirname,
|
|
16
|
-
recommendedConfig: js.configs.recommended,
|
|
17
|
-
allConfig: js.configs.all,
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
// See https://eslint.org/docs/latest/use/configure/configuration-files
|
|
21
|
-
export default [{
|
|
22
|
-
files: [
|
|
23
|
-
'**/*.cjs',
|
|
24
|
-
'**/*.js',
|
|
25
|
-
'**/*.mjs',
|
|
26
|
-
'**/*.ts',
|
|
27
|
-
'**/*.tsx',
|
|
28
|
-
],
|
|
29
|
-
}, {
|
|
30
|
-
// Global ignores.
|
|
31
|
-
ignores: [
|
|
32
|
-
'.cz-config.js',
|
|
33
|
-
'**/.tmp',
|
|
34
|
-
'**/*.d.cts', // ignore d.ts files until we can properly lint them
|
|
35
|
-
'**/*.d.ts',
|
|
36
|
-
'**/dist',
|
|
37
|
-
'**/fixtures/**',
|
|
38
|
-
'**/node_modules/**',
|
|
39
|
-
'**/source-maps/**',
|
|
40
|
-
'**/third_party/**',
|
|
41
|
-
'**/third-party/**',
|
|
42
|
-
'build/test/page-functions-test-case*out*.js',
|
|
43
|
-
'core/scripts/legacy-javascript/variants/**',
|
|
44
|
-
'coverage/**',
|
|
45
|
-
],
|
|
46
|
-
}, ...compat.extends('eslint:recommended', 'google'), {
|
|
47
|
-
plugins: {
|
|
48
|
-
'local-rules': localRules,
|
|
49
|
-
'import': fixupPluginRules(_import),
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
languageOptions: {
|
|
53
|
-
globals: {
|
|
54
|
-
...globals.node,
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
parser: tsParser,
|
|
58
|
-
ecmaVersion: 2020,
|
|
59
|
-
sourceType: 'module',
|
|
60
|
-
|
|
61
|
-
parserOptions: {
|
|
62
|
-
ecmaFeatures: {
|
|
63
|
-
globalReturn: true,
|
|
64
|
-
jsx: false,
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
rules: {
|
|
70
|
-
'import/order': [2, {
|
|
71
|
-
'groups': ['builtin', 'external', ['sibling', 'parent'], 'index', 'object', 'type'],
|
|
72
|
-
'newlines-between': 'always',
|
|
73
|
-
}],
|
|
74
|
-
|
|
75
|
-
'import/group-exports': 2,
|
|
76
|
-
'import/exports-last': 2,
|
|
77
|
-
'eqeqeq': 2,
|
|
78
|
-
'no-console': 2,
|
|
79
|
-
|
|
80
|
-
'indent': [2, 2, {
|
|
81
|
-
SwitchCase: 1,
|
|
82
|
-
VariableDeclarator: 2,
|
|
83
|
-
|
|
84
|
-
CallExpression: {
|
|
85
|
-
arguments: 'off',
|
|
86
|
-
},
|
|
87
|
-
|
|
88
|
-
MemberExpression: 'off',
|
|
89
|
-
|
|
90
|
-
FunctionExpression: {
|
|
91
|
-
body: 1,
|
|
92
|
-
parameters: 2,
|
|
93
|
-
},
|
|
94
|
-
|
|
95
|
-
ignoredNodes: [
|
|
96
|
-
'ConditionalExpression > :matches(.consequent, .alternate)',
|
|
97
|
-
'VariableDeclarator > ArrowFunctionExpression > :expression.body',
|
|
98
|
-
'CallExpression > ArrowFunctionExpression > :expression.body',
|
|
99
|
-
],
|
|
100
|
-
}],
|
|
101
|
-
|
|
102
|
-
'no-floating-decimal': 2,
|
|
103
|
-
|
|
104
|
-
'max-len': [2, 100, {
|
|
105
|
-
ignorePattern: 'readJson\\(|^import ',
|
|
106
|
-
ignoreComments: true,
|
|
107
|
-
ignoreUrls: true,
|
|
108
|
-
tabWidth: 2,
|
|
109
|
-
}],
|
|
110
|
-
|
|
111
|
-
'no-empty': [2, {
|
|
112
|
-
allowEmptyCatch: true,
|
|
113
|
-
}],
|
|
114
|
-
|
|
115
|
-
'no-implicit-coercion': [2, {
|
|
116
|
-
boolean: false,
|
|
117
|
-
number: true,
|
|
118
|
-
string: true,
|
|
119
|
-
}],
|
|
120
|
-
|
|
121
|
-
'no-unused-expressions': [2, {
|
|
122
|
-
allowShortCircuit: true,
|
|
123
|
-
allowTernary: false,
|
|
124
|
-
}],
|
|
125
|
-
|
|
126
|
-
'no-unused-vars': [2, {
|
|
127
|
-
vars: 'all',
|
|
128
|
-
args: 'after-used',
|
|
129
|
-
caughtErrors: 'none', // TODO: remove for new "all" default.
|
|
130
|
-
argsIgnorePattern: '(^reject$|^_+$)',
|
|
131
|
-
varsIgnorePattern: '(^_$|^LH$|^Lantern$|^TraceEngine$|^Protocol$)',
|
|
132
|
-
}],
|
|
133
|
-
|
|
134
|
-
'no-cond-assign': 2,
|
|
135
|
-
'space-infix-ops': 2,
|
|
136
|
-
'strict': [2, 'global'],
|
|
137
|
-
'prefer-const': 2,
|
|
138
|
-
'curly': [2, 'multi-line'],
|
|
139
|
-
|
|
140
|
-
'comma-dangle': [2, {
|
|
141
|
-
arrays: 'always-multiline',
|
|
142
|
-
objects: 'always-multiline',
|
|
143
|
-
imports: 'always-multiline',
|
|
144
|
-
exports: 'always-multiline',
|
|
145
|
-
functions: 'never',
|
|
146
|
-
}],
|
|
147
|
-
|
|
148
|
-
'operator-linebreak': ['error', 'after', {
|
|
149
|
-
overrides: {
|
|
150
|
-
'?': 'ignore',
|
|
151
|
-
':': 'ignore',
|
|
152
|
-
},
|
|
153
|
-
}],
|
|
154
|
-
|
|
155
|
-
'local-rules/require-file-extension': 2,
|
|
156
|
-
'require-jsdoc': 0,
|
|
157
|
-
'valid-jsdoc': 0,
|
|
158
|
-
'arrow-parens': 0,
|
|
159
|
-
},
|
|
160
|
-
}, {
|
|
161
|
-
files: ['cli/test/smokehouse/test-definitions/**'],
|
|
162
|
-
|
|
163
|
-
rules: {
|
|
164
|
-
'max-len': 0,
|
|
165
|
-
},
|
|
166
|
-
}, {
|
|
167
|
-
files: [
|
|
168
|
-
'**/build/**',
|
|
169
|
-
'**/scripts/**',
|
|
170
|
-
'**/test/**',
|
|
171
|
-
],
|
|
172
|
-
|
|
173
|
-
rules: {
|
|
174
|
-
'no-console': 0,
|
|
175
|
-
},
|
|
176
|
-
}, {
|
|
177
|
-
files: [
|
|
178
|
-
'docs/recipes/auth/**',
|
|
179
|
-
],
|
|
180
|
-
|
|
181
|
-
rules: {
|
|
182
|
-
'new-cap': 0,
|
|
183
|
-
'no-console': 0,
|
|
184
|
-
'no-unused-vars': 0,
|
|
185
|
-
},
|
|
186
|
-
}, {
|
|
187
|
-
files: [
|
|
188
|
-
'**/test/**',
|
|
189
|
-
'docs/recipes/**',
|
|
190
|
-
],
|
|
191
|
-
|
|
192
|
-
languageOptions: {
|
|
193
|
-
globals: {
|
|
194
|
-
...globals.jest,
|
|
195
|
-
...globals.mocha,
|
|
196
|
-
},
|
|
197
|
-
},
|
|
198
|
-
}, {
|
|
199
|
-
files: [
|
|
200
|
-
'clients/**',
|
|
201
|
-
'core/gather/gatherers/**',
|
|
202
|
-
'docs/recipes/auth/**',
|
|
203
|
-
'flow-report/**',
|
|
204
|
-
'report/**',
|
|
205
|
-
'treemap/**',
|
|
206
|
-
'viewer/**',
|
|
207
|
-
],
|
|
208
|
-
ignores: [
|
|
209
|
-
'report/generator/**',
|
|
210
|
-
'report/test/generator/**',
|
|
211
|
-
],
|
|
212
|
-
|
|
213
|
-
languageOptions: {
|
|
214
|
-
globals: {
|
|
215
|
-
...globals.browser,
|
|
216
|
-
},
|
|
217
|
-
},
|
|
218
|
-
}, {
|
|
219
|
-
files: [
|
|
220
|
-
'clients/**',
|
|
221
|
-
],
|
|
222
|
-
|
|
223
|
-
languageOptions: {
|
|
224
|
-
globals: {
|
|
225
|
-
chrome: true,
|
|
226
|
-
__lighthouse: true,
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
}, {
|
|
230
|
-
files: ['flow-report/**'],
|
|
231
|
-
|
|
232
|
-
languageOptions: {
|
|
233
|
-
globals: {
|
|
234
|
-
...globals.browser,
|
|
235
|
-
...globals.node,
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
|
|
239
|
-
rules: {
|
|
240
|
-
'no-undef': 'off',
|
|
241
|
-
},
|
|
242
|
-
}];
|