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.
Files changed (272) hide show
  1. package/.agents/skills/update-ard-port/SKILL.md +171 -0
  2. package/.agents/skills/update-trace-engine/SKILL.md +154 -0
  3. package/cli/bin.d.ts +2 -2
  4. package/cli/bin.js +5 -4
  5. package/cli/cli-flags.d.ts +16 -1
  6. package/cli/cli-flags.js +53 -2
  7. package/cli/printer.js +5 -8
  8. package/cli/run.d.ts +5 -5
  9. package/cli/run.js +97 -47
  10. package/cli/sentry-prompt.js +3 -4
  11. package/cli/test/smokehouse/__snapshots__/report-assert-test.js.snap +1 -1
  12. package/cli/test/smokehouse/config/exclusions.js +3 -1
  13. package/cli/test/smokehouse/frontends/smokehouse-bin.js +5 -3
  14. package/cli/test/smokehouse/report-assert-test.js +65 -0
  15. package/cli/test/smokehouse/report-assert.js +24 -39
  16. package/cli/test/smokehouse/smokehouse-test.d.ts +2 -0
  17. package/cli/test/smokehouse/smokehouse-test.js +120 -0
  18. package/cli/test/smokehouse/smokehouse.js +37 -15
  19. package/cli/test/smokehouse/version-check-test.js +5 -0
  20. package/cli/test/smokehouse/version-check.d.ts +1 -1
  21. package/cli/test/smokehouse/version-check.js +1 -1
  22. package/commitlint.config.js +1 -1
  23. package/core/audits/accessibility/accesskeys.js +1 -1
  24. package/core/audits/accessibility/aria-allowed-attr.js +1 -1
  25. package/core/audits/accessibility/aria-allowed-role.js +1 -1
  26. package/core/audits/accessibility/aria-command-name.js +1 -1
  27. package/core/audits/accessibility/aria-conditional-attr.js +1 -1
  28. package/core/audits/accessibility/aria-deprecated-role.js +1 -1
  29. package/core/audits/accessibility/aria-dialog-name.js +1 -1
  30. package/core/audits/accessibility/aria-hidden-body.js +1 -1
  31. package/core/audits/accessibility/aria-hidden-focus.js +1 -1
  32. package/core/audits/accessibility/aria-input-field-name.js +1 -1
  33. package/core/audits/accessibility/aria-meter-name.js +1 -1
  34. package/core/audits/accessibility/aria-progressbar-name.js +1 -1
  35. package/core/audits/accessibility/aria-prohibited-attr.js +1 -1
  36. package/core/audits/accessibility/aria-required-attr.js +1 -1
  37. package/core/audits/accessibility/aria-required-children.js +1 -1
  38. package/core/audits/accessibility/aria-required-parent.js +1 -1
  39. package/core/audits/accessibility/aria-roles.js +1 -1
  40. package/core/audits/accessibility/aria-text.js +1 -1
  41. package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
  42. package/core/audits/accessibility/aria-tooltip-name.js +1 -1
  43. package/core/audits/accessibility/aria-treeitem-name.js +1 -1
  44. package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
  45. package/core/audits/accessibility/aria-valid-attr.js +1 -1
  46. package/core/audits/accessibility/autocomplete-valid.js +1 -1
  47. package/core/audits/accessibility/button-name.js +1 -1
  48. package/core/audits/accessibility/bypass.js +1 -1
  49. package/core/audits/accessibility/color-contrast.js +1 -1
  50. package/core/audits/accessibility/definition-list.js +1 -1
  51. package/core/audits/accessibility/dlitem.js +1 -1
  52. package/core/audits/accessibility/document-title.js +1 -1
  53. package/core/audits/accessibility/duplicate-id-aria.js +1 -1
  54. package/core/audits/accessibility/empty-heading.js +1 -1
  55. package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
  56. package/core/audits/accessibility/frame-title.js +1 -1
  57. package/core/audits/accessibility/heading-order.js +1 -1
  58. package/core/audits/accessibility/html-has-lang.js +1 -1
  59. package/core/audits/accessibility/html-lang-valid.js +1 -1
  60. package/core/audits/accessibility/html-xml-lang-mismatch.js +1 -1
  61. package/core/audits/accessibility/identical-links-same-purpose.js +1 -1
  62. package/core/audits/accessibility/image-alt.js +1 -1
  63. package/core/audits/accessibility/image-redundant-alt.js +1 -1
  64. package/core/audits/accessibility/input-button-name.js +1 -1
  65. package/core/audits/accessibility/input-image-alt.js +1 -1
  66. package/core/audits/accessibility/label-content-name-mismatch.js +1 -1
  67. package/core/audits/accessibility/label.js +1 -1
  68. package/core/audits/accessibility/landmark-one-main.js +1 -1
  69. package/core/audits/accessibility/link-in-text-block.js +1 -1
  70. package/core/audits/accessibility/link-name.js +1 -1
  71. package/core/audits/accessibility/list.js +1 -1
  72. package/core/audits/accessibility/listitem.js +1 -1
  73. package/core/audits/accessibility/meta-refresh.js +1 -1
  74. package/core/audits/accessibility/meta-viewport.js +1 -1
  75. package/core/audits/accessibility/object-alt.js +1 -1
  76. package/core/audits/accessibility/presentation-role-conflict.js +1 -1
  77. package/core/audits/accessibility/select-name.js +1 -1
  78. package/core/audits/accessibility/skip-link.js +1 -1
  79. package/core/audits/accessibility/svg-img-alt.js +1 -1
  80. package/core/audits/accessibility/tabindex.js +1 -1
  81. package/core/audits/accessibility/table-duplicate-name.js +1 -1
  82. package/core/audits/accessibility/table-fake-caption.js +1 -1
  83. package/core/audits/accessibility/target-size.js +1 -1
  84. package/core/audits/accessibility/td-has-header.js +1 -1
  85. package/core/audits/accessibility/td-headers-attr.js +1 -1
  86. package/core/audits/accessibility/th-has-data-cells.js +1 -1
  87. package/core/audits/accessibility/valid-lang.js +1 -1
  88. package/core/audits/accessibility/video-caption.js +1 -1
  89. package/core/audits/agentic/ard-schema.d.ts +13 -0
  90. package/core/audits/agentic/ard-schema.js +81 -33
  91. package/core/audits/agentic/llms-txt.js +5 -2
  92. package/core/audits/baseline.d.ts +29 -7
  93. package/core/audits/baseline.js +19 -6
  94. package/core/audits/byte-efficiency/byte-efficiency-audit.js +2 -2
  95. package/core/audits/insights/insight-audit.d.ts +9 -0
  96. package/core/audits/insights/insight-audit.js +35 -28
  97. package/core/audits/long-tasks.js +2 -1
  98. package/core/audits/predictive-perf.js +2 -2
  99. package/core/audits/screenshot-thumbnails.d.ts +0 -13
  100. package/core/audits/screenshot-thumbnails.js +0 -45
  101. package/core/audits/script-treemap-data.js +26 -6
  102. package/core/audits/seo/robots-txt.js +3 -8
  103. package/core/audits/unsized-images.d.ts +0 -7
  104. package/core/audits/unsized-images.js +7 -26
  105. package/core/computed/lcp-image-record.d.ts +2 -23
  106. package/core/computed/lcp-image-record.js +3 -67
  107. package/core/computed/lcp-network-record.d.ts +24 -0
  108. package/core/computed/lcp-network-record.js +74 -0
  109. package/core/computed/metrics/lantern-metric.js +1 -1
  110. package/core/computed/metrics/lcp-breakdown.js +6 -6
  111. package/core/computed/metrics/time-to-first-byte.js +5 -3
  112. package/core/computed/navigation-insights.js +3 -2
  113. package/core/computed/page-dependency-graph.js +55 -5
  114. package/core/computed/speedline.js +20 -5
  115. package/core/computed/trace-engine-result.js +25 -5
  116. package/core/computed/unused-css.js +15 -2
  117. package/core/config/config-helpers.d.ts +5 -0
  118. package/core/config/config-helpers.js +17 -28
  119. package/core/config/config-plugin.d.ts +7 -0
  120. package/core/config/config-plugin.js +49 -0
  121. package/core/config/config.js +10 -2
  122. package/core/config/constants.d.ts +2 -28
  123. package/core/config/filters.js +1 -0
  124. package/core/config/lr-desktop-config.js +13 -0
  125. package/core/config/lr-mobile-config.js +13 -0
  126. package/core/gather/base-artifacts.js +7 -1
  127. package/core/gather/driver/storage.js +3 -2
  128. package/core/gather/gatherers/agentic/ard.d.ts +59 -4
  129. package/core/gather/gatherers/agentic/ard.js +218 -56
  130. package/core/gather/gatherers/full-page-screenshot.js +2 -2
  131. package/core/gather/gatherers/image-elements.d.ts +7 -0
  132. package/core/gather/gatherers/image-elements.js +75 -24
  133. package/core/gather/gatherers/inspector-issues.js +2 -0
  134. package/core/gather/gatherers/js-usage.js +2 -0
  135. package/core/gather/gatherers/scripts.d.ts +16 -3
  136. package/core/gather/gatherers/scripts.js +157 -14
  137. package/core/gather/gatherers/stylesheets.js +2 -0
  138. package/core/gather/gatherers/trace-elements.js +2 -1
  139. package/core/gather/gatherers/trace.d.ts +6 -0
  140. package/core/gather/gatherers/trace.js +56 -16
  141. package/core/index.d.ts +2 -0
  142. package/core/index.js +2 -0
  143. package/core/lib/arbitrary-equality-map.d.ts +14 -3
  144. package/core/lib/arbitrary-equality-map.js +113 -6
  145. package/core/lib/baseline/web-features-data.json +32 -11
  146. package/core/lib/baseline/web-features-metadata.json +1 -1
  147. package/core/lib/bf-cache-strings.js +237 -254
  148. package/core/lib/cdt/Common.d.ts +1 -1
  149. package/core/lib/cdt/Common.js +2 -2
  150. package/core/lib/cdt/Platform.d.ts +7 -7
  151. package/core/lib/cdt/Platform.js +11 -8
  152. package/core/lib/cdt/SDK.d.ts +5 -1
  153. package/core/lib/cdt/SDK.js +4 -2
  154. package/core/lib/cdt/generated/ParsedURL.d.ts +0 -1
  155. package/core/lib/cdt/generated/ParsedURL.js +3 -9
  156. package/core/lib/cdt/generated/SourceMap.d.ts +24 -25
  157. package/core/lib/cdt/generated/SourceMap.js +7 -15
  158. package/core/lib/deprecations-strings.d.ts +93 -88
  159. package/core/lib/deprecations-strings.js +20 -14
  160. package/core/lib/i18n/i18n.d.ts +2 -1
  161. package/core/lib/i18n/i18n.js +25 -13
  162. package/core/lib/legacy-javascript/legacy-javascript.d.ts +3 -2
  163. package/core/lib/legacy-javascript/legacy-javascript.js +235 -111
  164. package/core/lib/legacy-javascript/polyfill-graph-data.json +94 -89
  165. package/core/lib/legacy-javascript/polyfill-module-data.json +48 -7
  166. package/core/lib/minification-estimator.js +10 -10
  167. package/core/lib/network-request.d.ts +2 -0
  168. package/core/lib/network-request.js +21 -0
  169. package/core/lib/page-functions.js +2 -5
  170. package/core/lib/sentry.d.ts +1 -0
  171. package/core/lib/sentry.js +3 -0
  172. package/core/lib/trace-engine.d.ts +1 -0
  173. package/core/lib/trace-engine.js +2 -0
  174. package/core/runner.js +9 -3
  175. package/dist/report/bundle.esm.js +10 -10
  176. package/dist/report/flow.js +13 -13
  177. package/dist/report/standalone.js +5 -5
  178. package/flow-report/src/common.tsx +5 -2
  179. package/flow-report/src/i18n/i18n.d.ts +2 -0
  180. package/flow-report/src/summary/summary.tsx +9 -1
  181. package/flow-report/src/util.d.ts +1 -1
  182. package/package.json +62 -98
  183. package/readme.md +13 -18
  184. package/report/generator/file-namer.d.ts +1 -1
  185. package/report/generator/file-namer.js +5 -4
  186. package/report/generator/flow-report-assets.js +1 -3
  187. package/report/generator/report-assets.js +1 -2
  188. package/report/renderer/category-renderer.js +2 -2
  189. package/report/renderer/details-renderer.js +3 -2
  190. package/report/renderer/dom.d.ts +8 -2
  191. package/report/renderer/dom.js +29 -1
  192. package/report/renderer/element-screenshot-renderer.js +3 -0
  193. package/report/renderer/performance-category-renderer.js +3 -1
  194. package/report/renderer/report-renderer.js +4 -0
  195. package/report/renderer/report-utils.d.ts +1 -0
  196. package/report/renderer/report-utils.js +2 -0
  197. package/report/renderer/text-encoding.js +2 -2
  198. package/report/types/augment-dom.d.ts +4 -0
  199. package/shared/esm-utils.d.ts +0 -8
  200. package/shared/esm-utils.js +0 -18
  201. package/shared/localization/format.js +5 -3
  202. package/shared/localization/locales/ar-XB.json +157 -142
  203. package/shared/localization/locales/ar.json +157 -142
  204. package/shared/localization/locales/bg.json +154 -139
  205. package/shared/localization/locales/ca.json +157 -142
  206. package/shared/localization/locales/cs.json +148 -133
  207. package/shared/localization/locales/da.json +153 -138
  208. package/shared/localization/locales/de.json +152 -137
  209. package/shared/localization/locales/el.json +153 -138
  210. package/shared/localization/locales/en-GB.json +160 -145
  211. package/shared/localization/locales/en-US.json +239 -218
  212. package/shared/localization/locales/en-XL.json +239 -218
  213. package/shared/localization/locales/es-419.json +150 -135
  214. package/shared/localization/locales/es.json +149 -134
  215. package/shared/localization/locales/fi.json +151 -136
  216. package/shared/localization/locales/fil.json +154 -139
  217. package/shared/localization/locales/fr.json +150 -135
  218. package/shared/localization/locales/he.json +160 -145
  219. package/shared/localization/locales/hi.json +156 -141
  220. package/shared/localization/locales/hr.json +154 -139
  221. package/shared/localization/locales/hu.json +111 -96
  222. package/shared/localization/locales/id.json +153 -138
  223. package/shared/localization/locales/it.json +153 -138
  224. package/shared/localization/locales/ja.json +150 -135
  225. package/shared/localization/locales/ko.json +42 -27
  226. package/shared/localization/locales/lt.json +152 -137
  227. package/shared/localization/locales/lv.json +93 -78
  228. package/shared/localization/locales/nl.json +149 -134
  229. package/shared/localization/locales/no.json +152 -137
  230. package/shared/localization/locales/pl.json +153 -138
  231. package/shared/localization/locales/pt-PT.json +152 -137
  232. package/shared/localization/locales/pt.json +157 -142
  233. package/shared/localization/locales/ro.json +149 -134
  234. package/shared/localization/locales/ru.json +76 -61
  235. package/shared/localization/locales/sk.json +153 -138
  236. package/shared/localization/locales/sl.json +149 -134
  237. package/shared/localization/locales/sr-Latn.json +151 -136
  238. package/shared/localization/locales/sr.json +151 -136
  239. package/shared/localization/locales/sv.json +152 -137
  240. package/shared/localization/locales/ta.json +156 -141
  241. package/shared/localization/locales/te.json +157 -142
  242. package/shared/localization/locales/th.json +111 -96
  243. package/shared/localization/locales/tr.json +153 -138
  244. package/shared/localization/locales/uk.json +149 -134
  245. package/shared/localization/locales/vi.json +162 -147
  246. package/shared/localization/locales/zh-HK.json +150 -135
  247. package/shared/localization/locales/zh-TW.json +154 -139
  248. package/shared/localization/locales/zh.json +152 -137
  249. package/shared/localization/swap-locale.js +10 -5
  250. package/shared/root.js +1 -3
  251. package/third-party/ard/README.md +19 -10
  252. package/third-party/ard/ard-test.js +189 -266
  253. package/third-party/ard/ard.d.ts +18 -1
  254. package/third-party/ard/ard.js +282 -45
  255. package/third-party/ard/schema-validator.d.ts +14 -5
  256. package/third-party/ard/schema-validator.js +921 -1177
  257. package/third-party/ard/spec/schemas/ard-entry.schema.json +176 -0
  258. package/tsconfig.json +0 -2
  259. package/types/artifacts.d.ts +43 -7
  260. package/types/config.d.ts +6 -1
  261. package/types/externs.d.ts +4 -0
  262. package/types/internal/test.d.ts +1 -0
  263. package/build-tracker.config.js +0 -16
  264. package/core/lib/cdt/package.json +0 -4
  265. package/eslint-local-rules.d.cts +0 -9
  266. package/eslint.config.mjs +0 -242
  267. package/third-party/ard/spec/schemas/ai-catalog.schema.json +0 -292
  268. package/third-party/esbuild-plugins-polyfills/LICENSE +0 -3
  269. package/third-party/esbuild-plugins-polyfills/README.md +0 -7
  270. package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.d.ts +0 -9
  271. package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.js +0 -129
  272. package/types/internal/lookup-closest-locale.d.ts +0 -13
@@ -4,7 +4,116 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import {isEqual} from 'lodash-es';
7
+ /**
8
+ * @param {*} a
9
+ * @param {*} b
10
+ * @param {WeakMap<object, WeakSet<object>>=} seen
11
+ * @return {boolean}
12
+ */
13
+ function deepEquals(a, b, seen) {
14
+ if (a === b || (Number.isNaN(a) && Number.isNaN(b))) return true;
15
+ if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {
16
+ return false;
17
+ }
18
+ if (a.constructor !== b.constructor) return false;
19
+
20
+ if (a instanceof Date && b instanceof Date) {
21
+ return a.getTime() === b.getTime() || (Number.isNaN(a.getTime()) && Number.isNaN(b.getTime()));
22
+ }
23
+ if (a instanceof RegExp && b instanceof RegExp) {
24
+ return a.source === b.source && a.flags === b.flags;
25
+ }
26
+ if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
27
+ if (a.byteLength !== b.byteLength) return false;
28
+ const viewA = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
29
+ const viewB = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
30
+ for (let i = 0; i < viewA.length; i++) {
31
+ if (viewA[i] !== viewB[i]) return false;
32
+ }
33
+ return true;
34
+ }
35
+ if (a instanceof ArrayBuffer && b instanceof ArrayBuffer) {
36
+ if (a.byteLength !== b.byteLength) return false;
37
+ const viewA = new Uint8Array(a);
38
+ const viewB = new Uint8Array(b);
39
+ for (let i = 0; i < viewA.length; i++) {
40
+ if (viewA[i] !== viewB[i]) return false;
41
+ }
42
+ return true;
43
+ }
44
+
45
+ if (!seen) {
46
+ seen = new WeakMap();
47
+ }
48
+ let seenB = seen.get(a);
49
+ if (seenB) {
50
+ if (seenB.has(b)) return true;
51
+ } else {
52
+ seenB = new WeakSet();
53
+ seen.set(a, seenB);
54
+ }
55
+ seenB.add(b);
56
+
57
+ if (Array.isArray(a)) {
58
+ const arrB = /** @type {unknown[]} */ (b);
59
+ if (a.length !== arrB.length) return false;
60
+ for (let i = 0; i < a.length; i++) {
61
+ if (!deepEquals(a[i], arrB[i], seen)) return false;
62
+ }
63
+ return true;
64
+ }
65
+
66
+ if (a instanceof Map && b instanceof Map) {
67
+ if (a.size !== b.size) return false;
68
+ for (const [k, v] of a) {
69
+ if (!b.has(k) || !deepEquals(v, b.get(k), seen)) return false;
70
+ }
71
+ return true;
72
+ }
73
+
74
+ if (a instanceof Set && b instanceof Set) {
75
+ if (a.size !== b.size) return false;
76
+ /** @type {unknown[]} */
77
+ const unmatchedA = [];
78
+ for (const v of a) {
79
+ if (!b.has(v)) {
80
+ if (typeof v !== 'object' || v === null) return false;
81
+ unmatchedA.push(v);
82
+ }
83
+ }
84
+ if (unmatchedA.length === 0) return true;
85
+ /** @type {unknown[]} */
86
+ const unmatchedB = [];
87
+ for (const v of b) {
88
+ if (!a.has(v)) {
89
+ if (typeof v !== 'object' || v === null) return false;
90
+ unmatchedB.push(v);
91
+ }
92
+ }
93
+ if (unmatchedA.length !== unmatchedB.length) return false;
94
+ for (const itemA of unmatchedA) {
95
+ const matchIndex = unmatchedB.findIndex(itemB => deepEquals(itemA, itemB, seen));
96
+ if (matchIndex === -1) return false;
97
+ unmatchedB.splice(matchIndex, 1);
98
+ }
99
+ return true;
100
+ }
101
+
102
+ if (a instanceof Error && b instanceof Error) {
103
+ if (a.name !== b.name || a.message !== b.message || !deepEquals(a.cause, b.cause, seen)) {
104
+ return false;
105
+ }
106
+ }
107
+
108
+ const keysA = Object.keys(a);
109
+ const keysB = Object.keys(b);
110
+ if (keysA.length !== keysB.length) return false;
111
+ for (let i = 0; i < keysA.length; i++) {
112
+ const key = keysA[i];
113
+ if (!Object.hasOwn(b, key) || !deepEquals(a[key], b[key], seen)) return false;
114
+ }
115
+ return true;
116
+ }
8
117
 
9
118
  /**
10
119
  * @fileoverview This class is designed to allow maps with arbitrary equality functions.
@@ -65,16 +174,14 @@ class ArbitraryEqualityMap {
65
174
  }
66
175
 
67
176
  /**
68
- * Determines whether two objects are deeply equal. Defers to lodash isEqual, but is kept here for
69
- * easy usage by consumers.
70
- * See https://lodash.com/docs/4.17.5#isEqual.
177
+ * Determines whether two objects are deeply equal.
71
178
  * @param {*} objA
72
179
  * @param {*} objB
73
180
  * @return {boolean}
74
181
  */
75
182
  static deepEquals(objA, objB) {
76
- return isEqual(objA, objB);
183
+ return deepEquals(objA, objB);
77
184
  }
78
185
  }
79
186
 
80
- export {ArbitraryEqualityMap};
187
+ export {ArbitraryEqualityMap, deepEquals as isEqual};
@@ -4,10 +4,13 @@
4
4
  "abbr": "2015-07-29",
5
5
  "abortable-fetch": "2019-03-25",
6
6
  "aborting": "2019-03-25",
7
+ "abortsignal-any": "2024-03-19",
8
+ "abortsignal-timeout": "2024-04-18",
7
9
  "absolute-positioning": "2015-07-29",
8
10
  "accesskey": "2015-07-29",
9
11
  "address": "2015-07-29",
10
12
  "alerts": "2015-07-29",
13
+ "align-content-block": "2024-04-16",
11
14
  "all": "2020-01-15",
12
15
  "angle-instanced-arrays": "2016-06-07",
13
16
  "animation-composition": "2023-07-04",
@@ -151,6 +154,7 @@
151
154
  "device-orientation-events": "2023-09-18",
152
155
  "dfn": "2015-07-29",
153
156
  "dialog": "2022-03-14",
157
+ "dir": "2015-07-29",
154
158
  "dir-pseudo": "2023-12-07",
155
159
  "dirname": "2023-08-01",
156
160
  "display": "2015-07-29",
@@ -203,7 +207,7 @@
203
207
  "font-face": "2016-09-20",
204
208
  "font-family": "2015-07-29",
205
209
  "font-family-system": "2021-09-07",
206
- "font-feature-settings": "2017-04-05",
210
+ "font-feature-settings": "2016-03-21",
207
211
  "font-kerning": "2020-01-15",
208
212
  "font-loading": "2020-01-15",
209
213
  "font-optical-sizing": "2020-03-24",
@@ -304,6 +308,7 @@
304
308
  "intl-locale": "2020-09-16",
305
309
  "intl-plural-rules": "2019-09-19",
306
310
  "intl-relative-time-format": "2020-09-16",
311
+ "intl-segmenter": "2024-04-16",
307
312
  "is": "2021-01-21",
308
313
  "is-secure-context": "2018-04-12",
309
314
  "isolation": "2020-01-15",
@@ -400,12 +405,12 @@
400
405
  "oklab": "2023-05-09",
401
406
  "online": "2015-07-29",
402
407
  "opacity": "2015-07-29",
403
- "opacity-svg": "≤2020-03-24",
408
+ "opacity-svg": "2020-03-24",
404
409
  "optional-catch-binding": "2020-01-15",
405
410
  "origin-private-file-system": "2023-03-27",
406
411
  "outline": "2023-03-27",
407
412
  "outlines": "2017-04-05",
408
- "output": "≤2018-10-02",
413
+ "output": "2018-10-02",
409
414
  "overflow": "2023-09-18",
410
415
  "overflow-clip": "2022-09-12",
411
416
  "overflow-shorthand": "2020-03-24",
@@ -415,6 +420,7 @@
415
420
  "page-breaks": "2019-01-29",
416
421
  "page-transition-events": "2015-07-29",
417
422
  "page-visibility": "2015-07-29",
423
+ "paint-order": "2024-03-22",
418
424
  "paint-timing": "2021-04-26",
419
425
  "pdf-viewer": "2023-03-27",
420
426
  "performance": "2015-09-16",
@@ -567,6 +573,7 @@
567
573
  "title-attr": "2015-07-29",
568
574
  "touch-action": "2019-09-19",
569
575
  "transferable-arraybuffer": "2024-03-05",
576
+ "transform-box": "2024-04-16",
570
577
  "transforms2d": "2015-09-30",
571
578
  "transforms3d": "2022-03-14",
572
579
  "transitions": "2015-09-30",
@@ -636,25 +643,26 @@
636
643
  "webvtt-cue-settings": "2020-01-15",
637
644
  "where": "2021-01-21",
638
645
  "white-space": "2015-07-29",
646
+ "white-space-collapse": "2024-03-19",
639
647
  "width-height": "2015-07-29",
640
648
  "will-change": "2020-01-15",
641
649
  "window": "2015-07-29",
642
650
  "word-break": "2015-09-30",
643
651
  "word-spacing": "2015-07-29",
644
652
  "writing-mode": "2017-03-27",
653
+ "x-frame-options": "2015-07-29",
645
654
  "xhr": "2015-07-29",
646
655
  "xml-serializer": "2015-07-29",
647
656
  "xpath": "2015-07-29",
648
657
  "z-index": "2015-07-29"
649
658
  },
650
659
  "low": {
651
- "abortsignal-any": "2024-03-19",
652
- "abortsignal-timeout": "2024-04-18",
653
660
  "abs-sign": "2025-06-26",
654
661
  "active-view-transition": "2026-01-13",
655
- "align-content-block": "2024-04-16",
656
662
  "alpha": "2026-09-14",
657
663
  "alt-text-generated-content": "2024-07-09",
664
+ "animations-css-animation-accessors": "2026-09-14",
665
+ "arianotify": "2026-09-14",
658
666
  "async-clipboard": "2024-06-11",
659
667
  "async-iterable-streams": "2026-09-14",
660
668
  "atomics-pause": "2025-04-01",
@@ -665,6 +673,7 @@
665
673
  "canvas-2d-willreadfrequently": "2024-09-16",
666
674
  "clipboard-supports": "2025-03-31",
667
675
  "composed-ranges": "2025-08-19",
676
+ "container-name-queries": "2026-05-07",
668
677
  "container-style-queries": "2026-05-19",
669
678
  "content-visibility": "2025-09-15",
670
679
  "contenteditable-plaintextonly": "2025-03-04",
@@ -689,7 +698,6 @@
689
698
  "input-file-webkitdirectory": "2025-08-19",
690
699
  "intl-duration-format": "2025-03-04",
691
700
  "intl-locale-info": "2026-07-21",
692
- "intl-segmenter": "2024-04-16",
693
701
  "invoker-commands": "2025-12-12",
694
702
  "iterator-concat": "2026-03-24",
695
703
  "iterator-methods": "2025-03-31",
@@ -706,7 +714,6 @@
706
714
  "open-pseudo": "2026-05-11",
707
715
  "overflow-anchor": "2026-09-14",
708
716
  "page-setup": "2024-12-11",
709
- "paint-order": "2024-03-22",
710
717
  "parse-html-unsafe": "2025-09-15",
711
718
  "popover": "2025-01-27",
712
719
  "print-color-adjust": "2025-05-01",
@@ -723,6 +730,7 @@
723
730
  "request-video-frame-callback": "2024-10-29",
724
731
  "requestclose": "2025-05-27",
725
732
  "resizable-buffers": "2024-07-09",
733
+ "revert-rule": "2026-09-14",
726
734
  "rex": "2026-01-13",
727
735
  "ric": "2026-01-13",
728
736
  "round-mod-rem": "2024-05-17",
@@ -750,7 +758,6 @@
750
758
  "text-wrap-balance": "2024-05-13",
751
759
  "toggleevent-source": "2026-05-11",
752
760
  "top-level-await": "2026-09-14",
753
- "transform-box": "2024-04-16",
754
761
  "transition-behavior": "2024-08-06",
755
762
  "trusted-types": "2026-02-24",
756
763
  "uint8array-base64-hex": "2025-09-05",
@@ -768,7 +775,6 @@
768
775
  "webgl2-color-management": "2024-10-29",
769
776
  "webrtc-encoded-transform": "2025-10-03",
770
777
  "webtransport": "2026-03-24",
771
- "white-space-collapse": "2024-03-19",
772
778
  "zoom": "2024-05-14",
773
779
  "zstd": "2026-02-11"
774
780
  },
@@ -791,7 +797,6 @@
791
797
  "app-share-targets",
792
798
  "app-shortcuts",
793
799
  "arguments-callee",
794
- "arianotify",
795
800
  "attr",
796
801
  "attribution-reporting",
797
802
  "audio-session",
@@ -838,6 +843,7 @@
838
843
  "colrv1",
839
844
  "column-breaks",
840
845
  "column-pseudo",
846
+ "column-wrap",
841
847
  "compression-dictionary-transport",
842
848
  "compute-pressure",
843
849
  "connection-allowlists",
@@ -855,6 +861,7 @@
855
861
  "cross-document-view-transitions",
856
862
  "cross-fade",
857
863
  "css-modules",
864
+ "css-object-model-csspseudoelement",
858
865
  "css-object-model-discouraged",
859
866
  "css-typed-om",
860
867
  "cursor",
@@ -927,6 +934,7 @@
927
934
  "gamepad-haptics",
928
935
  "gamepad-touch",
929
936
  "gamepad-vr",
937
+ "gamut-mapping",
930
938
  "gap-decorations",
931
939
  "geolocation-element",
932
940
  "geolocation-element-initialpermissionstatus",
@@ -973,6 +981,9 @@
973
981
  "inverted-colors",
974
982
  "is-error",
975
983
  "is-input-pending",
984
+ "iterator-includes",
985
+ "iterator-join",
986
+ "iterator-zip-zipkeyed",
976
987
  "jpegxl",
977
988
  "justify-self-block",
978
989
  "keyboard-lock",
@@ -1073,6 +1084,7 @@
1073
1084
  "reporting-permissions-policy-violations",
1074
1085
  "requestidlecallback",
1075
1086
  "resize",
1087
+ "retriable-module-loading",
1076
1088
  "rhythmic-sizing",
1077
1089
  "ruby-overhang",
1078
1090
  "sanitizer",
@@ -1081,6 +1093,7 @@
1081
1093
  "scoped-custom-element-registries",
1082
1094
  "screen-capture",
1083
1095
  "screen-orientation-lock",
1096
+ "scroll-axis-lock",
1084
1097
  "scroll-buttons",
1085
1098
  "scroll-driven-animations",
1086
1099
  "scroll-initial-target",
@@ -1090,6 +1103,7 @@
1090
1103
  "scroll-promises",
1091
1104
  "scroll-snap-events",
1092
1105
  "scroll-target-group",
1106
+ "scroll-triggered-animations",
1093
1107
  "secure-payment-confirmation",
1094
1108
  "selection",
1095
1109
  "serial",
@@ -1113,11 +1127,16 @@
1113
1127
  "spelling-grammar-error",
1114
1128
  "storage-buckets",
1115
1129
  "stretch",
1130
+ "string-substr",
1131
+ "string-trim-leftright",
1116
1132
  "style-query-range-syntax",
1117
1133
  "summarizer",
1118
1134
  "supports-at-rule",
1135
+ "supports-named-feature",
1119
1136
  "svg-discouraged",
1120
1137
  "switch-control",
1138
+ "symbols-function",
1139
+ "system-color-accentcolor",
1121
1140
  "table-discouraged",
1122
1141
  "target-within",
1123
1142
  "template-for",
@@ -1126,6 +1145,7 @@
1126
1145
  "text-box",
1127
1146
  "text-decoration-line-blink",
1128
1147
  "text-decoration-selection",
1148
+ "text-decoration-skip-spaces",
1129
1149
  "text-fit",
1130
1150
  "text-justify",
1131
1151
  "text-modules",
@@ -1192,6 +1212,7 @@
1192
1212
  "webxr-layers",
1193
1213
  "webxr-lighting-estimation",
1194
1214
  "wheel-events",
1215
+ "wheel-events-momentum",
1195
1216
  "widows-orphans",
1196
1217
  "window-controls-overlay",
1197
1218
  "window-drag",
@@ -1,3 +1,3 @@
1
1
  {
2
- "date": "2026-09-17"
2
+ "date": "2026-10-22"
3
3
  }