axe-core 4.2.4 → 4.3.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.
Files changed (681) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/README.md +24 -2
  3. package/axe.d.ts +60 -4
  4. package/axe.js +1198 -830
  5. package/axe.min.js +2 -2
  6. package/locales/de.json +1 -1
  7. package/locales/pt_BR.json +163 -44
  8. package/package.json +7 -1
  9. package/.eslintrc.js +0 -112
  10. package/.prettierrc.json +0 -10
  11. package/CONTRIBUTING.md +0 -242
  12. package/bower.json +0 -40
  13. package/doc/API.md +0 -963
  14. package/doc/accessibility-supported.md +0 -37
  15. package/doc/act-rules-format.md +0 -37
  16. package/doc/aria-supported.md +0 -13
  17. package/doc/backwards-compatibility-doc.md +0 -94
  18. package/doc/check-message-template.md +0 -124
  19. package/doc/check-options.md +0 -437
  20. package/doc/code-submission-guidelines.md +0 -171
  21. package/doc/developer-guide.md +0 -515
  22. package/doc/examples/chrome-debugging-protocol/README.md +0 -13
  23. package/doc/examples/chrome-debugging-protocol/axe-cdp.js +0 -81
  24. package/doc/examples/chrome-debugging-protocol/package.json +0 -11
  25. package/doc/examples/html-handlebars.md +0 -164
  26. package/doc/examples/jasmine/README.md +0 -35
  27. package/doc/examples/jasmine/karma.conf.js +0 -29
  28. package/doc/examples/jasmine/package-lock.json +0 -1489
  29. package/doc/examples/jasmine/package.json +0 -21
  30. package/doc/examples/jasmine/spec/a11y.js +0 -36
  31. package/doc/examples/jest_react/README.md +0 -41
  32. package/doc/examples/jest_react/link.js +0 -7
  33. package/doc/examples/jest_react/link.test.js +0 -24
  34. package/doc/examples/jest_react/package-lock.json +0 -7525
  35. package/doc/examples/jest_react/package.json +0 -28
  36. package/doc/examples/jest_react/test-helpers.js +0 -21
  37. package/doc/examples/jsdom/package.json +0 -15
  38. package/doc/examples/mocha/README.md +0 -35
  39. package/doc/examples/mocha/karma.conf.js +0 -29
  40. package/doc/examples/mocha/package-lock.json +0 -1671
  41. package/doc/examples/mocha/package.json +0 -22
  42. package/doc/examples/phantomjs/README.md +0 -17
  43. package/doc/examples/phantomjs/axe-phantom.js +0 -53
  44. package/doc/examples/phantomjs/package-lock.json +0 -862
  45. package/doc/examples/phantomjs/package.json +0 -19
  46. package/doc/examples/puppeteer/README.md +0 -12
  47. package/doc/examples/puppeteer/axe-puppeteer.js +0 -60
  48. package/doc/examples/puppeteer/package.json +0 -13
  49. package/doc/examples/qunit/README.md +0 -37
  50. package/doc/examples/qunit/package-lock.json +0 -2951
  51. package/doc/examples/qunit/package.json +0 -21
  52. package/doc/examples/test-examples.js +0 -40
  53. package/doc/frame-messenger.md +0 -107
  54. package/doc/plugins.md +0 -123
  55. package/doc/projects.md +0 -56
  56. package/doc/rule-descriptions.md +0 -135
  57. package/doc/rule-development.md +0 -123
  58. package/doc/rule-proposal.md +0 -106
  59. package/doc/standards-object.md +0 -147
  60. package/lib/checks/aria/abstractrole-evaluate.js +0 -40
  61. package/lib/checks/aria/abstractrole.json +0 -14
  62. package/lib/checks/aria/aria-allowed-attr-evaluate.js +0 -58
  63. package/lib/checks/aria/aria-allowed-attr.json +0 -14
  64. package/lib/checks/aria/aria-allowed-role-evaluate.js +0 -42
  65. package/lib/checks/aria/aria-allowed-role.json +0 -22
  66. package/lib/checks/aria/aria-errormessage-evaluate.js +0 -68
  67. package/lib/checks/aria/aria-errormessage.json +0 -18
  68. package/lib/checks/aria/aria-hidden-body-evaluate.js +0 -11
  69. package/lib/checks/aria/aria-hidden-body.json +0 -11
  70. package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -68
  71. package/lib/checks/aria/aria-prohibited-attr.json +0 -15
  72. package/lib/checks/aria/aria-required-attr-evaluate.js +0 -67
  73. package/lib/checks/aria/aria-required-attr.json +0 -14
  74. package/lib/checks/aria/aria-required-children-evaluate.js +0 -137
  75. package/lib/checks/aria/aria-required-children.json +0 -32
  76. package/lib/checks/aria/aria-required-parent-evaluate.js +0 -120
  77. package/lib/checks/aria/aria-required-parent.json +0 -17
  78. package/lib/checks/aria/aria-roledescription-evaluate.js +0 -25
  79. package/lib/checks/aria/aria-roledescription.json +0 -23
  80. package/lib/checks/aria/aria-unsupported-attr-evaluate.js +0 -53
  81. package/lib/checks/aria/aria-unsupported-attr.json +0 -11
  82. package/lib/checks/aria/aria-valid-attr-evaluate.js +0 -51
  83. package/lib/checks/aria/aria-valid-attr-value-evaluate.js +0 -122
  84. package/lib/checks/aria/aria-valid-attr-value.json +0 -19
  85. package/lib/checks/aria/aria-valid-attr.json +0 -15
  86. package/lib/checks/aria/fallbackrole-evaluate.js +0 -13
  87. package/lib/checks/aria/fallbackrole.json +0 -11
  88. package/lib/checks/aria/has-global-aria-attribute-evaluate.js +0 -11
  89. package/lib/checks/aria/has-global-aria-attribute.json +0 -14
  90. package/lib/checks/aria/has-widget-role-evaluate.js +0 -20
  91. package/lib/checks/aria/has-widget-role.json +0 -12
  92. package/lib/checks/aria/invalidrole-evaluate.js +0 -45
  93. package/lib/checks/aria/invalidrole.json +0 -14
  94. package/lib/checks/aria/is-element-focusable-evaluate.js +0 -7
  95. package/lib/checks/aria/is-element-focusable.json +0 -11
  96. package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +0 -54
  97. package/lib/checks/aria/no-implicit-explicit-label.json +0 -11
  98. package/lib/checks/aria/unsupportedrole-evaluate.js +0 -15
  99. package/lib/checks/aria/unsupportedrole.json +0 -11
  100. package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +0 -70
  101. package/lib/checks/aria/valid-scrollable-semantics.json +0 -14
  102. package/lib/checks/color/color-contrast-evaluate.js +0 -178
  103. package/lib/checks/color/color-contrast.json +0 -42
  104. package/lib/checks/color/link-in-text-block-evaluate.js +0 -94
  105. package/lib/checks/color/link-in-text-block.json +0 -19
  106. package/lib/checks/forms/autocomplete-appropriate-evaluate.js +0 -84
  107. package/lib/checks/forms/autocomplete-appropriate.json +0 -11
  108. package/lib/checks/forms/autocomplete-valid-evaluate.js +0 -8
  109. package/lib/checks/forms/autocomplete-valid.json +0 -11
  110. package/lib/checks/generic/README.md +0 -13
  111. package/lib/checks/generic/attr-non-space-content-evaluate.js +0 -28
  112. package/lib/checks/generic/has-descendant-after.js +0 -15
  113. package/lib/checks/generic/has-descendant-evaluate.js +0 -20
  114. package/lib/checks/generic/has-text-content-evaluate.js +0 -11
  115. package/lib/checks/generic/matches-definition-evaluate.js +0 -7
  116. package/lib/checks/generic/page-no-duplicate-after.js +0 -6
  117. package/lib/checks/generic/page-no-duplicate-evaluate.js +0 -42
  118. package/lib/checks/index.js +0 -11
  119. package/lib/checks/keyboard/accesskeys-after.js +0 -23
  120. package/lib/checks/keyboard/accesskeys-evaluate.js +0 -11
  121. package/lib/checks/keyboard/accesskeys.json +0 -12
  122. package/lib/checks/keyboard/focusable-content-evaluate.js +0 -20
  123. package/lib/checks/keyboard/focusable-content.json +0 -11
  124. package/lib/checks/keyboard/focusable-disabled-evaluate.js +0 -36
  125. package/lib/checks/keyboard/focusable-disabled.json +0 -11
  126. package/lib/checks/keyboard/focusable-element-evaluate.js +0 -47
  127. package/lib/checks/keyboard/focusable-element.json +0 -11
  128. package/lib/checks/keyboard/focusable-modal-open-evaluate.js +0 -20
  129. package/lib/checks/keyboard/focusable-modal-open.json +0 -11
  130. package/lib/checks/keyboard/focusable-no-name-evaluate.js +0 -18
  131. package/lib/checks/keyboard/focusable-no-name.json +0 -12
  132. package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +0 -36
  133. package/lib/checks/keyboard/focusable-not-tabbable.json +0 -11
  134. package/lib/checks/keyboard/frame-focusable-content.json +0 -12
  135. package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +0 -31
  136. package/lib/checks/keyboard/landmark-is-top-level.json +0 -11
  137. package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
  138. package/lib/checks/keyboard/no-focusable-content.json +0 -12
  139. package/lib/checks/keyboard/page-has-heading-one.json +0 -15
  140. package/lib/checks/keyboard/page-has-main.json +0 -15
  141. package/lib/checks/keyboard/page-no-duplicate-banner.json +0 -16
  142. package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +0 -16
  143. package/lib/checks/keyboard/page-no-duplicate-main.json +0 -15
  144. package/lib/checks/keyboard/tabindex-evaluate.js +0 -10
  145. package/lib/checks/keyboard/tabindex.json +0 -11
  146. package/lib/checks/label/alt-space-value-evaluate.js +0 -7
  147. package/lib/checks/label/alt-space-value.json +0 -11
  148. package/lib/checks/label/duplicate-img-label-evaluate.js +0 -23
  149. package/lib/checks/label/duplicate-img-label.json +0 -14
  150. package/lib/checks/label/explicit-evaluate.js +0 -34
  151. package/lib/checks/label/explicit.json +0 -12
  152. package/lib/checks/label/help-same-as-label-evaluate.js +0 -28
  153. package/lib/checks/label/help-same-as-label.json +0 -12
  154. package/lib/checks/label/hidden-explicit-label-evaluate.js +0 -30
  155. package/lib/checks/label/hidden-explicit-label.json +0 -12
  156. package/lib/checks/label/implicit-evaluate.js +0 -16
  157. package/lib/checks/label/implicit.json +0 -12
  158. package/lib/checks/label/label-content-name-mismatch-evaluate.js +0 -71
  159. package/lib/checks/label/label-content-name-mismatch.json +0 -15
  160. package/lib/checks/label/multiple-label-evaluate.js +0 -44
  161. package/lib/checks/label/multiple-label.json +0 -11
  162. package/lib/checks/label/title-only-evaluate.js +0 -11
  163. package/lib/checks/label/title-only.json +0 -11
  164. package/lib/checks/landmarks/landmark-is-unique-after.js +0 -27
  165. package/lib/checks/landmarks/landmark-is-unique-evaluate.js +0 -14
  166. package/lib/checks/landmarks/landmark-is-unique.json +0 -12
  167. package/lib/checks/language/has-lang-evaluate.js +0 -39
  168. package/lib/checks/language/has-lang.json +0 -17
  169. package/lib/checks/language/valid-lang-evaluate.js +0 -36
  170. package/lib/checks/language/valid-lang.json +0 -14
  171. package/lib/checks/language/xml-lang-mismatch-evaluate.js +0 -10
  172. package/lib/checks/language/xml-lang-mismatch.json +0 -11
  173. package/lib/checks/lists/dlitem-evaluate.js +0 -30
  174. package/lib/checks/lists/dlitem.json +0 -11
  175. package/lib/checks/lists/listitem-evaluate.js +0 -28
  176. package/lib/checks/lists/listitem.json +0 -14
  177. package/lib/checks/lists/only-dlitems-evaluate.js +0 -51
  178. package/lib/checks/lists/only-dlitems.json +0 -11
  179. package/lib/checks/lists/only-listitems-evaluate.js +0 -63
  180. package/lib/checks/lists/only-listitems.json +0 -14
  181. package/lib/checks/lists/structured-dlitems-evaluate.js +0 -26
  182. package/lib/checks/lists/structured-dlitems.json +0 -11
  183. package/lib/checks/media/caption-evaluate.js +0 -13
  184. package/lib/checks/media/caption.json +0 -11
  185. package/lib/checks/media/frame-tested-after.js +0 -31
  186. package/lib/checks/media/frame-tested-evaluate.js +0 -6
  187. package/lib/checks/media/frame-tested.json +0 -16
  188. package/lib/checks/media/no-autoplay-audio-evaluate.js +0 -97
  189. package/lib/checks/media/no-autoplay-audio.json +0 -15
  190. package/lib/checks/mobile/css-orientation-lock-evaluate.js +0 -254
  191. package/lib/checks/mobile/css-orientation-lock.json +0 -15
  192. package/lib/checks/mobile/meta-viewport-large.json +0 -15
  193. package/lib/checks/mobile/meta-viewport-scale-evaluate.js +0 -71
  194. package/lib/checks/mobile/meta-viewport.json +0 -14
  195. package/lib/checks/navigation/header-present.json +0 -15
  196. package/lib/checks/navigation/heading-order-after.js +0 -132
  197. package/lib/checks/navigation/heading-order-evaluate.js +0 -58
  198. package/lib/checks/navigation/heading-order.json +0 -13
  199. package/lib/checks/navigation/identical-links-same-purpose-after.js +0 -106
  200. package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +0 -35
  201. package/lib/checks/navigation/identical-links-same-purpose.json +0 -12
  202. package/lib/checks/navigation/internal-link-present-evaluate.js +0 -10
  203. package/lib/checks/navigation/internal-link-present.json +0 -11
  204. package/lib/checks/navigation/landmark.json +0 -14
  205. package/lib/checks/navigation/meta-refresh-evaluate.js +0 -8
  206. package/lib/checks/navigation/meta-refresh.json +0 -11
  207. package/lib/checks/navigation/p-as-heading-evaluate.js +0 -98
  208. package/lib/checks/navigation/p-as-heading.json +0 -30
  209. package/lib/checks/navigation/region-evaluate.js +0 -106
  210. package/lib/checks/navigation/region.json +0 -14
  211. package/lib/checks/navigation/skip-link-evaluate.js +0 -11
  212. package/lib/checks/navigation/skip-link.json +0 -12
  213. package/lib/checks/navigation/unique-frame-title-after.js +0 -13
  214. package/lib/checks/navigation/unique-frame-title-evaluate.js +0 -9
  215. package/lib/checks/navigation/unique-frame-title.json +0 -12
  216. package/lib/checks/parsing/duplicate-id-active.json +0 -12
  217. package/lib/checks/parsing/duplicate-id-after.js +0 -12
  218. package/lib/checks/parsing/duplicate-id-aria.json +0 -12
  219. package/lib/checks/parsing/duplicate-id-evaluate.js +0 -24
  220. package/lib/checks/parsing/duplicate-id.json +0 -12
  221. package/lib/checks/shared/aria-label-evaluate.js +0 -8
  222. package/lib/checks/shared/aria-label.json +0 -11
  223. package/lib/checks/shared/aria-labelledby-evaluate.js +0 -12
  224. package/lib/checks/shared/aria-labelledby.json +0 -12
  225. package/lib/checks/shared/avoid-inline-spacing-evaluate.js +0 -16
  226. package/lib/checks/shared/avoid-inline-spacing.json +0 -17
  227. package/lib/checks/shared/button-has-visible-text.json +0 -12
  228. package/lib/checks/shared/doc-has-title-evaluate.js +0 -8
  229. package/lib/checks/shared/doc-has-title.json +0 -11
  230. package/lib/checks/shared/exists-evaluate.js +0 -5
  231. package/lib/checks/shared/exists.json +0 -11
  232. package/lib/checks/shared/has-alt-evaluate.js +0 -10
  233. package/lib/checks/shared/has-alt.json +0 -11
  234. package/lib/checks/shared/has-visible-text.json +0 -12
  235. package/lib/checks/shared/is-on-screen-evaluate.js +0 -8
  236. package/lib/checks/shared/is-on-screen.json +0 -11
  237. package/lib/checks/shared/non-empty-alt.json +0 -17
  238. package/lib/checks/shared/non-empty-if-present-evaluate.js +0 -19
  239. package/lib/checks/shared/non-empty-if-present.json +0 -14
  240. package/lib/checks/shared/non-empty-placeholder.json +0 -17
  241. package/lib/checks/shared/non-empty-title.json +0 -17
  242. package/lib/checks/shared/non-empty-value.json +0 -17
  243. package/lib/checks/shared/presentational-role-evaluate.js +0 -42
  244. package/lib/checks/shared/presentational-role.json +0 -16
  245. package/lib/checks/shared/role-none.json +0 -19
  246. package/lib/checks/shared/role-presentation.json +0 -19
  247. package/lib/checks/shared/svg-non-empty-title-evaluate.js +0 -33
  248. package/lib/checks/shared/svg-non-empty-title.json +0 -15
  249. package/lib/checks/tables/caption-faked-evaluate.js +0 -16
  250. package/lib/checks/tables/caption-faked.json +0 -11
  251. package/lib/checks/tables/html5-scope-evaluate.js +0 -11
  252. package/lib/checks/tables/html5-scope.json +0 -11
  253. package/lib/checks/tables/same-caption-summary-evaluate.js +0 -12
  254. package/lib/checks/tables/same-caption-summary.json +0 -11
  255. package/lib/checks/tables/scope-value-evaluate.js +0 -7
  256. package/lib/checks/tables/scope-value.json +0 -14
  257. package/lib/checks/tables/td-has-header-evaluate.js +0 -33
  258. package/lib/checks/tables/td-has-header.json +0 -11
  259. package/lib/checks/tables/td-headers-attr-evaluate.js +0 -67
  260. package/lib/checks/tables/td-headers-attr.json +0 -12
  261. package/lib/checks/tables/th-has-data-cells-evaluate.js +0 -82
  262. package/lib/checks/tables/th-has-data-cells.json +0 -12
  263. package/lib/checks/visibility/hidden-content-evaluate.js +0 -34
  264. package/lib/checks/visibility/hidden-content.json +0 -12
  265. package/lib/commons/aria/allowed-attr.js +0 -31
  266. package/lib/commons/aria/arialabel-text.js +0 -21
  267. package/lib/commons/aria/arialabelledby-text.js +0 -65
  268. package/lib/commons/aria/get-accessible-refs.js +0 -73
  269. package/lib/commons/aria/get-element-unallowed-roles.js +0 -110
  270. package/lib/commons/aria/get-explicit-role.js +0 -26
  271. package/lib/commons/aria/get-owned-virtual.js +0 -27
  272. package/lib/commons/aria/get-role-type.js +0 -21
  273. package/lib/commons/aria/get-role.js +0 -178
  274. package/lib/commons/aria/get-roles-by-type.js +0 -16
  275. package/lib/commons/aria/get-roles-with-name-from-contents.js +0 -15
  276. package/lib/commons/aria/implicit-nodes.js +0 -23
  277. package/lib/commons/aria/implicit-role.js +0 -44
  278. package/lib/commons/aria/index.js +0 -32
  279. package/lib/commons/aria/is-accessible-ref.js +0 -12
  280. package/lib/commons/aria/is-aria-role-allowed-on-element.js +0 -32
  281. package/lib/commons/aria/is-unsupported-role.js +0 -16
  282. package/lib/commons/aria/is-valid-role.js +0 -22
  283. package/lib/commons/aria/label-virtual.js +0 -46
  284. package/lib/commons/aria/label.js +0 -17
  285. package/lib/commons/aria/lookup-table.js +0 -2435
  286. package/lib/commons/aria/named-from-contents.js +0 -39
  287. package/lib/commons/aria/required-attr.js +0 -21
  288. package/lib/commons/aria/required-context.js +0 -21
  289. package/lib/commons/aria/required-owned.js +0 -21
  290. package/lib/commons/aria/validate-attr-value.js +0 -70
  291. package/lib/commons/aria/validate-attr.js +0 -16
  292. package/lib/commons/color/center-point-of-rect.js +0 -31
  293. package/lib/commons/color/color.js +0 -250
  294. package/lib/commons/color/element-has-image.js +0 -35
  295. package/lib/commons/color/element-is-distinct.js +0 -87
  296. package/lib/commons/color/filtered-rect-stack.js +0 -51
  297. package/lib/commons/color/flatten-colors.js +0 -22
  298. package/lib/commons/color/get-background-color.js +0 -84
  299. package/lib/commons/color/get-background-stack.js +0 -130
  300. package/lib/commons/color/get-contrast.js +0 -27
  301. package/lib/commons/color/get-foreground-color.js +0 -69
  302. package/lib/commons/color/get-own-background-color.js +0 -24
  303. package/lib/commons/color/get-rect-stack.js +0 -32
  304. package/lib/commons/color/get-text-shadow-colors.js +0 -121
  305. package/lib/commons/color/has-valid-contrast-ratio.js +0 -30
  306. package/lib/commons/color/incomplete-data.js +0 -47
  307. package/lib/commons/color/index.js +0 -20
  308. package/lib/commons/dom/find-elms-in-context.js +0 -31
  309. package/lib/commons/dom/find-up-virtual.js +0 -52
  310. package/lib/commons/dom/find-up.js +0 -20
  311. package/lib/commons/dom/focus-disabled.js +0 -30
  312. package/lib/commons/dom/get-composed-parent.js +0 -26
  313. package/lib/commons/dom/get-element-by-reference.js +0 -34
  314. package/lib/commons/dom/get-element-coordinates.js +0 -38
  315. package/lib/commons/dom/get-element-stack.js +0 -28
  316. package/lib/commons/dom/get-rect-stack.js +0 -514
  317. package/lib/commons/dom/get-root-node.js +0 -12
  318. package/lib/commons/dom/get-scroll-offset.js +0 -32
  319. package/lib/commons/dom/get-tabbable-elements.js +0 -26
  320. package/lib/commons/dom/get-text-element-stack.js +0 -89
  321. package/lib/commons/dom/get-viewport-size.js +0 -35
  322. package/lib/commons/dom/has-content-virtual.js +0 -53
  323. package/lib/commons/dom/has-content.js +0 -21
  324. package/lib/commons/dom/idrefs.js +0 -41
  325. package/lib/commons/dom/index.js +0 -38
  326. package/lib/commons/dom/inserted-into-focus-order.js +0 -24
  327. package/lib/commons/dom/is-focusable.js +0 -36
  328. package/lib/commons/dom/is-hidden-with-css.js +0 -76
  329. package/lib/commons/dom/is-html5.js +0 -17
  330. package/lib/commons/dom/is-in-text-block.js +0 -107
  331. package/lib/commons/dom/is-modal-open.js +0 -104
  332. package/lib/commons/dom/is-natively-focusable.js +0 -41
  333. package/lib/commons/dom/is-node.js +0 -14
  334. package/lib/commons/dom/is-offscreen.js +0 -66
  335. package/lib/commons/dom/is-opaque.js +0 -16
  336. package/lib/commons/dom/is-skip-link.js +0 -49
  337. package/lib/commons/dom/is-visible.js +0 -201
  338. package/lib/commons/dom/is-visual-content.js +0 -49
  339. package/lib/commons/dom/reduce-to-elements-below-floating.js +0 -36
  340. package/lib/commons/dom/shadow-elements-from-point.js +0 -47
  341. package/lib/commons/dom/url-props-from-attribute.js +0 -152
  342. package/lib/commons/dom/visually-contains.js +0 -113
  343. package/lib/commons/dom/visually-overlaps.js +0 -46
  344. package/lib/commons/forms/index.js +0 -12
  345. package/lib/commons/forms/is-aria-combobox.js +0 -15
  346. package/lib/commons/forms/is-aria-listbox.js +0 -15
  347. package/lib/commons/forms/is-aria-range.js +0 -17
  348. package/lib/commons/forms/is-aria-textbox.js +0 -15
  349. package/lib/commons/forms/is-disabled.js +0 -40
  350. package/lib/commons/forms/is-native-select.js +0 -17
  351. package/lib/commons/forms/is-native-textbox.js +0 -34
  352. package/lib/commons/index.js +0 -31
  353. package/lib/commons/matches/attributes.js +0 -32
  354. package/lib/commons/matches/condition.js +0 -20
  355. package/lib/commons/matches/explicit-role.js +0 -24
  356. package/lib/commons/matches/from-definition.js +0 -73
  357. package/lib/commons/matches/from-function.js +0 -40
  358. package/lib/commons/matches/from-primative.js +0 -44
  359. package/lib/commons/matches/implicit-role.js +0 -24
  360. package/lib/commons/matches/index.js +0 -29
  361. package/lib/commons/matches/matches.js +0 -39
  362. package/lib/commons/matches/node-name.js +0 -29
  363. package/lib/commons/matches/properties.js +0 -32
  364. package/lib/commons/matches/semantic-role.js +0 -24
  365. package/lib/commons/standards/get-aria-roles-by-type.js +0 -14
  366. package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +0 -22
  367. package/lib/commons/standards/get-element-spec.js +0 -54
  368. package/lib/commons/standards/get-elements-by-content-type.js +0 -30
  369. package/lib/commons/standards/get-global-aria-attrs.js +0 -22
  370. package/lib/commons/standards/implicit-html-roles.js +0 -186
  371. package/lib/commons/standards/index.js +0 -11
  372. package/lib/commons/table/get-all-cells.js +0 -28
  373. package/lib/commons/table/get-cell-position.js +0 -32
  374. package/lib/commons/table/get-headers.js +0 -102
  375. package/lib/commons/table/get-scope.js +0 -58
  376. package/lib/commons/table/index.js +0 -19
  377. package/lib/commons/table/is-column-header.js +0 -15
  378. package/lib/commons/table/is-data-cell.js +0 -24
  379. package/lib/commons/table/is-data-table.js +0 -195
  380. package/lib/commons/table/is-header.js +0 -26
  381. package/lib/commons/table/is-row-header.js +0 -15
  382. package/lib/commons/table/to-grid.js +0 -48
  383. package/lib/commons/table/traverse.js +0 -76
  384. package/lib/commons/text/accessible-text-virtual.js +0 -152
  385. package/lib/commons/text/accessible-text.js +0 -19
  386. package/lib/commons/text/form-control-value.js +0 -216
  387. package/lib/commons/text/has-unicode.js +0 -38
  388. package/lib/commons/text/index.js +0 -32
  389. package/lib/commons/text/is-human-interpretable.js +0 -54
  390. package/lib/commons/text/is-icon-ligature.js +0 -214
  391. package/lib/commons/text/is-valid-autocomplete.js +0 -118
  392. package/lib/commons/text/label-text.js +0 -70
  393. package/lib/commons/text/label-virtual.js +0 -50
  394. package/lib/commons/text/label.js +0 -19
  395. package/lib/commons/text/native-element-type.js +0 -101
  396. package/lib/commons/text/native-text-alternative.js +0 -46
  397. package/lib/commons/text/native-text-methods.js +0 -136
  398. package/lib/commons/text/remove-unicode.js +0 -38
  399. package/lib/commons/text/sanitize.js +0 -21
  400. package/lib/commons/text/subtree-text.js +0 -74
  401. package/lib/commons/text/title-text.js +0 -33
  402. package/lib/commons/text/unicode.js +0 -85
  403. package/lib/commons/text/unsupported.js +0 -5
  404. package/lib/commons/text/visible-text-nodes.js +0 -27
  405. package/lib/commons/text/visible-virtual.js +0 -46
  406. package/lib/commons/text/visible.js +0 -18
  407. package/lib/core/base/audit.js +0 -767
  408. package/lib/core/base/cache.js +0 -30
  409. package/lib/core/base/check-result.js +0 -31
  410. package/lib/core/base/check.js +0 -215
  411. package/lib/core/base/context.js +0 -280
  412. package/lib/core/base/metadata-function-map.js +0 -353
  413. package/lib/core/base/rule-result.js +0 -39
  414. package/lib/core/base/rule.js +0 -611
  415. package/lib/core/base/virtual-node/abstract-virtual-node.js +0 -43
  416. package/lib/core/base/virtual-node/serial-virtual-node.js +0 -117
  417. package/lib/core/base/virtual-node/virtual-node.js +0 -194
  418. package/lib/core/constants.js +0 -70
  419. package/lib/core/core.js +0 -91
  420. package/lib/core/imports/index.js +0 -39
  421. package/lib/core/index.js +0 -40
  422. package/lib/core/log.js +0 -13
  423. package/lib/core/public/cleanup.js +0 -51
  424. package/lib/core/public/configure.js +0 -134
  425. package/lib/core/public/frame-messenger.js +0 -5
  426. package/lib/core/public/get-rules.js +0 -29
  427. package/lib/core/public/load.js +0 -65
  428. package/lib/core/public/plugins.js +0 -39
  429. package/lib/core/public/reporter.js +0 -25
  430. package/lib/core/public/reset.js +0 -13
  431. package/lib/core/public/run-rules.js +0 -83
  432. package/lib/core/public/run-virtual-rule.js +0 -63
  433. package/lib/core/public/run.js +0 -186
  434. package/lib/core/public/setup.js +0 -20
  435. package/lib/core/public/teardown.js +0 -21
  436. package/lib/core/reporters/helpers/failure-summary.js +0 -33
  437. package/lib/core/reporters/helpers/get-environment-data.js +0 -39
  438. package/lib/core/reporters/helpers/incomplete-fallback-msg.js +0 -12
  439. package/lib/core/reporters/helpers/index.js +0 -21
  440. package/lib/core/reporters/helpers/process-aggregate.js +0 -110
  441. package/lib/core/reporters/na.js +0 -24
  442. package/lib/core/reporters/no-passes.js +0 -20
  443. package/lib/core/reporters/raw-env.js +0 -17
  444. package/lib/core/reporters/raw.js +0 -32
  445. package/lib/core/reporters/v1.js +0 -33
  446. package/lib/core/reporters/v2.js +0 -19
  447. package/lib/core/utils/aggregate-checks.js +0 -90
  448. package/lib/core/utils/aggregate-node-results.js +0 -65
  449. package/lib/core/utils/aggregate-result.js +0 -39
  450. package/lib/core/utils/aggregate.js +0 -21
  451. package/lib/core/utils/are-styles-set.js +0 -18
  452. package/lib/core/utils/assert.js +0 -12
  453. package/lib/core/utils/check-helper.js +0 -36
  454. package/lib/core/utils/clone.js +0 -28
  455. package/lib/core/utils/closest.js +0 -30
  456. package/lib/core/utils/collect-results-from-frames.js +0 -84
  457. package/lib/core/utils/contains.js +0 -46
  458. package/lib/core/utils/css-parser.js +0 -9
  459. package/lib/core/utils/deep-merge.js +0 -31
  460. package/lib/core/utils/dq-element.js +0 -131
  461. package/lib/core/utils/element-matches.js +0 -43
  462. package/lib/core/utils/escape-selector.js +0 -79
  463. package/lib/core/utils/extend-meta-data.js +0 -20
  464. package/lib/core/utils/filter-html-attrs.js +0 -75
  465. package/lib/core/utils/finalize-result.js +0 -28
  466. package/lib/core/utils/find-by.js +0 -16
  467. package/lib/core/utils/frame-messenger/assert-window.js +0 -21
  468. package/lib/core/utils/frame-messenger/channel-store.js +0 -23
  469. package/lib/core/utils/frame-messenger/create-responder.js +0 -15
  470. package/lib/core/utils/frame-messenger/message-handler.js +0 -72
  471. package/lib/core/utils/frame-messenger/message-id.js +0 -22
  472. package/lib/core/utils/frame-messenger/message-parser.js +0 -109
  473. package/lib/core/utils/frame-messenger/post-message.js +0 -54
  474. package/lib/core/utils/frame-messenger/process-error.js +0 -30
  475. package/lib/core/utils/frame-messenger.js +0 -40
  476. package/lib/core/utils/get-all-checks.js +0 -13
  477. package/lib/core/utils/get-ancestry.js +0 -31
  478. package/lib/core/utils/get-base-lang.js +0 -18
  479. package/lib/core/utils/get-check-message.js +0 -24
  480. package/lib/core/utils/get-check-option.js +0 -41
  481. package/lib/core/utils/get-flattened-tree.js +0 -151
  482. package/lib/core/utils/get-friendly-uri-end.js +0 -143
  483. package/lib/core/utils/get-node-attributes.js +0 -22
  484. package/lib/core/utils/get-node-from-tree.js +0 -14
  485. package/lib/core/utils/get-root-node.js +0 -17
  486. package/lib/core/utils/get-rule.js +0 -17
  487. package/lib/core/utils/get-scroll-state.js +0 -43
  488. package/lib/core/utils/get-scroll.js +0 -41
  489. package/lib/core/utils/get-selector.js +0 -395
  490. package/lib/core/utils/get-shadow-selector.js +0 -31
  491. package/lib/core/utils/get-standards.js +0 -6
  492. package/lib/core/utils/get-stylesheet-factory.js +0 -53
  493. package/lib/core/utils/get-xpath.js +0 -84
  494. package/lib/core/utils/index.js +0 -90
  495. package/lib/core/utils/inject-style.js +0 -33
  496. package/lib/core/utils/is-hidden.js +0 -55
  497. package/lib/core/utils/is-html-element.js +0 -137
  498. package/lib/core/utils/is-node-in-context.js +0 -46
  499. package/lib/core/utils/is-shadow-root.js +0 -40
  500. package/lib/core/utils/is-xhtml.js +0 -15
  501. package/lib/core/utils/matches.js +0 -263
  502. package/lib/core/utils/memoize.js +0 -22
  503. package/lib/core/utils/merge-results.js +0 -134
  504. package/lib/core/utils/node-sorter.js +0 -23
  505. package/lib/core/utils/parse-crossorigin-stylesheet.js +0 -66
  506. package/lib/core/utils/parse-sameorigin-stylesheet.js +0 -100
  507. package/lib/core/utils/parse-stylesheet.js +0 -75
  508. package/lib/core/utils/performance-timer.js +0 -126
  509. package/lib/core/utils/pollyfills.js +0 -347
  510. package/lib/core/utils/preload-cssom.js +0 -249
  511. package/lib/core/utils/preload-media.js +0 -70
  512. package/lib/core/utils/preload.js +0 -150
  513. package/lib/core/utils/process-message.js +0 -77
  514. package/lib/core/utils/publish-metadata.js +0 -109
  515. package/lib/core/utils/query-selector-all-filter.js +0 -104
  516. package/lib/core/utils/query-selector-all.js +0 -15
  517. package/lib/core/utils/queue.js +0 -137
  518. package/lib/core/utils/respondable.js +0 -108
  519. package/lib/core/utils/rule-should-run.js +0 -83
  520. package/lib/core/utils/select.js +0 -87
  521. package/lib/core/utils/send-command-to-frame.js +0 -65
  522. package/lib/core/utils/set-scroll-state.js +0 -21
  523. package/lib/core/utils/to-array.js +0 -10
  524. package/lib/core/utils/token-list.js +0 -15
  525. package/lib/core/utils/unique-array.js +0 -13
  526. package/lib/core/utils/uuid.js +0 -253
  527. package/lib/core/utils/valid-input-type.js +0 -35
  528. package/lib/core/utils/valid-langs.js +0 -105
  529. package/lib/intro.stub +0 -15
  530. package/lib/misc/any-failure-summary.json +0 -6
  531. package/lib/misc/incomplete-fallback.json +0 -3
  532. package/lib/misc/none-failure-summary.json +0 -6
  533. package/lib/outro.stub +0 -2
  534. package/lib/rules/accesskeys.json +0 -13
  535. package/lib/rules/area-alt.json +0 -22
  536. package/lib/rules/aria-allowed-attr-matches.js +0 -15
  537. package/lib/rules/aria-allowed-attr.json +0 -12
  538. package/lib/rules/aria-allowed-role-matches.js +0 -12
  539. package/lib/rules/aria-allowed-role.json +0 -14
  540. package/lib/rules/aria-command-name.json +0 -18
  541. package/lib/rules/aria-dialog-name.json +0 -13
  542. package/lib/rules/aria-has-attr-matches.js +0 -9
  543. package/lib/rules/aria-hidden-body.json +0 -14
  544. package/lib/rules/aria-hidden-focus-matches.js +0 -22
  545. package/lib/rules/aria-hidden-focus.json +0 -18
  546. package/lib/rules/aria-input-field-name.json +0 -13
  547. package/lib/rules/aria-meter-name.json +0 -13
  548. package/lib/rules/aria-progressbar-name.json +0 -13
  549. package/lib/rules/aria-required-attr.json +0 -12
  550. package/lib/rules/aria-required-children-matches.js +0 -8
  551. package/lib/rules/aria-required-children.json +0 -13
  552. package/lib/rules/aria-required-parent-matches.js +0 -8
  553. package/lib/rules/aria-required-parent.json +0 -13
  554. package/lib/rules/aria-roledescription.json +0 -12
  555. package/lib/rules/aria-roles.json +0 -13
  556. package/lib/rules/aria-text.json +0 -12
  557. package/lib/rules/aria-toggle-field-name.json +0 -18
  558. package/lib/rules/aria-tooltip-name.json +0 -18
  559. package/lib/rules/aria-treeitem-name.json +0 -18
  560. package/lib/rules/aria-valid-attr-value.json +0 -12
  561. package/lib/rules/aria-valid-attr.json +0 -12
  562. package/lib/rules/audio-caption.json +0 -20
  563. package/lib/rules/autocomplete-matches.js +0 -58
  564. package/lib/rules/autocomplete-valid.json +0 -12
  565. package/lib/rules/avoid-inline-spacing.json +0 -12
  566. package/lib/rules/blink.json +0 -19
  567. package/lib/rules/button-name.json +0 -26
  568. package/lib/rules/bypass-matches.js +0 -14
  569. package/lib/rules/bypass.json +0 -21
  570. package/lib/rules/color-contrast-matches.js +0 -156
  571. package/lib/rules/color-contrast.json +0 -13
  572. package/lib/rules/css-orientation-lock.json +0 -13
  573. package/lib/rules/data-table-large-matches.js +0 -17
  574. package/lib/rules/data-table-matches.js +0 -7
  575. package/lib/rules/definition-list.json +0 -13
  576. package/lib/rules/dlitem.json +0 -13
  577. package/lib/rules/document-title.json +0 -13
  578. package/lib/rules/duplicate-id-active-matches.js +0 -15
  579. package/lib/rules/duplicate-id-active.json +0 -14
  580. package/lib/rules/duplicate-id-aria-matches.js +0 -7
  581. package/lib/rules/duplicate-id-aria.json +0 -14
  582. package/lib/rules/duplicate-id-misc-matches.js +0 -17
  583. package/lib/rules/duplicate-id.json +0 -14
  584. package/lib/rules/empty-heading.json +0 -19
  585. package/lib/rules/empty-table-header.json +0 -13
  586. package/lib/rules/focus-order-semantics.json +0 -13
  587. package/lib/rules/form-field-multiple-labels.json +0 -13
  588. package/lib/rules/frame-focusable-content-matches.js +0 -9
  589. package/lib/rules/frame-focusable-content.json +0 -13
  590. package/lib/rules/frame-tested.json +0 -12
  591. package/lib/rules/frame-title-has-text-matches.js +0 -8
  592. package/lib/rules/frame-title-unique.json +0 -13
  593. package/lib/rules/frame-title.json +0 -24
  594. package/lib/rules/has-implicit-chromium-role-matches.js +0 -7
  595. package/lib/rules/heading-matches.js +0 -19
  596. package/lib/rules/heading-order.json +0 -13
  597. package/lib/rules/hidden-content.json +0 -13
  598. package/lib/rules/html-has-lang.json +0 -13
  599. package/lib/rules/html-lang-valid.json +0 -12
  600. package/lib/rules/html-namespace-matches.js +0 -7
  601. package/lib/rules/html-xml-lang-mismatch.json +0 -13
  602. package/lib/rules/identical-links-same-purpose-matches.js +0 -18
  603. package/lib/rules/identical-links-same-purpose.json +0 -14
  604. package/lib/rules/image-alt.json +0 -26
  605. package/lib/rules/img-redundant-alt.json +0 -12
  606. package/lib/rules/input-button-name.json +0 -26
  607. package/lib/rules/input-image-alt.json +0 -20
  608. package/lib/rules/inserted-into-focus-order-matches.js +0 -7
  609. package/lib/rules/is-initiator-matches.js +0 -5
  610. package/lib/rules/label-content-name-mismatch-matches.js +0 -52
  611. package/lib/rules/label-content-name-mismatch.json +0 -12
  612. package/lib/rules/label-matches.js +0 -15
  613. package/lib/rules/label-title-only.json +0 -13
  614. package/lib/rules/label.json +0 -29
  615. package/lib/rules/landmark-banner-is-top-level.json +0 -13
  616. package/lib/rules/landmark-complementary-is-top-level.json +0 -12
  617. package/lib/rules/landmark-contentinfo-is-top-level.json +0 -13
  618. package/lib/rules/landmark-has-body-context-matches.js +0 -13
  619. package/lib/rules/landmark-main-is-top-level.json +0 -12
  620. package/lib/rules/landmark-no-duplicate-banner.json +0 -12
  621. package/lib/rules/landmark-no-duplicate-contentinfo.json +0 -12
  622. package/lib/rules/landmark-no-duplicate-main.json +0 -12
  623. package/lib/rules/landmark-one-main.json +0 -12
  624. package/lib/rules/landmark-unique-matches.js +0 -50
  625. package/lib/rules/landmark-unique.json +0 -13
  626. package/lib/rules/layout-table-matches.js +0 -8
  627. package/lib/rules/link-in-text-block-matches.js +0 -21
  628. package/lib/rules/link-in-text-block.json +0 -14
  629. package/lib/rules/link-name.json +0 -25
  630. package/lib/rules/list.json +0 -13
  631. package/lib/rules/listitem.json +0 -13
  632. package/lib/rules/marquee.json +0 -13
  633. package/lib/rules/meta-refresh.json +0 -20
  634. package/lib/rules/meta-viewport-large.json +0 -14
  635. package/lib/rules/meta-viewport.json +0 -14
  636. package/lib/rules/nested-interactive-matches.js +0 -13
  637. package/lib/rules/nested-interactive.json +0 -12
  638. package/lib/rules/no-autoplay-audio-matches.js +0 -22
  639. package/lib/rules/no-autoplay-audio.json +0 -15
  640. package/lib/rules/no-empty-role-matches.js +0 -13
  641. package/lib/rules/no-explicit-name-required-matches.js +0 -22
  642. package/lib/rules/no-naming-method-matches.js +0 -24
  643. package/lib/rules/no-role-matches.js +0 -5
  644. package/lib/rules/not-html-matches.js +0 -5
  645. package/lib/rules/object-alt.json +0 -24
  646. package/lib/rules/p-as-heading-matches.js +0 -21
  647. package/lib/rules/p-as-heading.json +0 -13
  648. package/lib/rules/page-has-heading-one.json +0 -12
  649. package/lib/rules/presentation-role-conflict-matches.js +0 -7
  650. package/lib/rules/presentation-role-conflict.json +0 -13
  651. package/lib/rules/region.json +0 -12
  652. package/lib/rules/role-img-alt.json +0 -20
  653. package/lib/rules/scope-attr-valid.json +0 -12
  654. package/lib/rules/scrollable-region-focusable-matches.js +0 -75
  655. package/lib/rules/scrollable-region-focusable.json +0 -12
  656. package/lib/rules/select-name.json +0 -27
  657. package/lib/rules/server-side-image-map.json +0 -18
  658. package/lib/rules/skip-link-matches.js +0 -7
  659. package/lib/rules/skip-link.json +0 -13
  660. package/lib/rules/svg-img-alt.json +0 -25
  661. package/lib/rules/svg-namespace-matches.js +0 -18
  662. package/lib/rules/tabindex.json +0 -12
  663. package/lib/rules/table-duplicate-name.json +0 -12
  664. package/lib/rules/table-fake-caption.json +0 -20
  665. package/lib/rules/td-has-header.json +0 -20
  666. package/lib/rules/td-headers-attr.json +0 -12
  667. package/lib/rules/th-has-data-cells.json +0 -13
  668. package/lib/rules/valid-lang.json +0 -13
  669. package/lib/rules/video-caption.json +0 -19
  670. package/lib/rules/window-is-top-matches.js +0 -8
  671. package/lib/rules/xml-lang-mismatch-matches.js +0 -14
  672. package/lib/standards/aria-attrs.js +0 -209
  673. package/lib/standards/aria-roles.js +0 -835
  674. package/lib/standards/css-colors.js +0 -153
  675. package/lib/standards/dpub-roles.js +0 -219
  676. package/lib/standards/graphics-roles.js +0 -22
  677. package/lib/standards/html-elms.js +0 -933
  678. package/lib/standards/index.js +0 -37
  679. package/sri-history.json +0 -274
  680. package/typings/axe-core/axe-core-tests.js +0 -203
  681. package/typings/axe-core/axe-core-tests.ts +0 -233
@@ -1,263 +0,0 @@
1
- import cssParser from './css-parser';
2
-
3
- function matchesTag(vNode, exp) {
4
- return (
5
- vNode.props.nodeType === 1 &&
6
- (exp.tag === '*' || vNode.props.nodeName === exp.tag)
7
- );
8
- }
9
-
10
- function matchesClasses(vNode, exp) {
11
- return !exp.classes || exp.classes.every(cl => vNode.hasClass(cl.value));
12
- }
13
-
14
- function matchesAttributes(vNode, exp) {
15
- return (
16
- !exp.attributes ||
17
- exp.attributes.every(att => {
18
- var nodeAtt = vNode.attr(att.key);
19
- return nodeAtt !== null && (!att.value || att.test(nodeAtt));
20
- })
21
- );
22
- }
23
-
24
- function matchesId(vNode, exp) {
25
- return !exp.id || vNode.props.id === exp.id;
26
- }
27
-
28
- function matchesPseudos(target, exp) {
29
- if (
30
- !exp.pseudos ||
31
- exp.pseudos.every(pseudo => {
32
- if (pseudo.name === 'not') {
33
- return !pseudo.expressions.some(expression => {
34
- return matchesExpression(target, expression);
35
- });
36
- } else if (pseudo.name === 'is') {
37
- return pseudo.expressions.some(expression => {
38
- return matchesExpression(target, expression);
39
- });
40
- }
41
- throw new Error(
42
- 'the pseudo selector ' + pseudo.name + ' has not yet been implemented'
43
- );
44
- })
45
- ) {
46
- return true;
47
- }
48
- return false;
49
- }
50
-
51
- function matchExpression(vNode, expression) {
52
- return (
53
- matchesTag(vNode, expression) &&
54
- matchesClasses(vNode, expression) &&
55
- matchesAttributes(vNode, expression) &&
56
- matchesId(vNode, expression) &&
57
- matchesPseudos(vNode, expression)
58
- );
59
- }
60
-
61
- var escapeRegExp = (() => {
62
- /*! Credit: XRegExp 0.6.1 (c) 2007-2008 Steven Levithan <http://stevenlevithan.com/regex/xregexp/> MIT License */
63
- var from = /(?=[\-\[\]{}()*+?.\\\^$|,#\s])/g;
64
- var to = '\\';
65
- return string => {
66
- return string.replace(from, to);
67
- };
68
- })();
69
-
70
- const reUnescape = /\\/g;
71
- function convertAttributes(atts) {
72
- /*! Credit Mootools Copyright Mootools, MIT License */
73
- if (!atts) {
74
- return;
75
- }
76
- return atts.map(att => {
77
- const attributeKey = att.name.replace(reUnescape, '');
78
- const attributeValue = (att.value || '').replace(reUnescape, '');
79
- let test, regexp;
80
-
81
- switch (att.operator) {
82
- case '^=':
83
- regexp = new RegExp('^' + escapeRegExp(attributeValue));
84
- break;
85
- case '$=':
86
- regexp = new RegExp(escapeRegExp(attributeValue) + '$');
87
- break;
88
- case '~=':
89
- regexp = new RegExp(
90
- '(^|\\s)' + escapeRegExp(attributeValue) + '(\\s|$)'
91
- );
92
- break;
93
- case '|=':
94
- regexp = new RegExp('^' + escapeRegExp(attributeValue) + '(-|$)');
95
- break;
96
- case '=':
97
- test = value => {
98
- return attributeValue === value;
99
- };
100
- break;
101
- case '*=':
102
- test = value => {
103
- return value && value.includes(attributeValue);
104
- };
105
- break;
106
- case '!=':
107
- test = value => {
108
- return attributeValue !== value;
109
- };
110
- break;
111
- default:
112
- test = value => {
113
- return !!value;
114
- };
115
- }
116
-
117
- if (attributeValue === '' && /^[*$^]=$/.test(att.operator)) {
118
- test = () => {
119
- return false;
120
- };
121
- }
122
-
123
- if (!test) {
124
- test = value => {
125
- return value && regexp.test(value);
126
- };
127
- }
128
- return {
129
- key: attributeKey,
130
- value: attributeValue,
131
- test: test
132
- };
133
- });
134
- }
135
-
136
- function convertClasses(classes) {
137
- if (!classes) {
138
- return;
139
- }
140
- return classes.map(className => {
141
- className = className.replace(reUnescape, '');
142
-
143
- return {
144
- value: className,
145
- regexp: new RegExp('(^|\\s)' + escapeRegExp(className) + '(\\s|$)')
146
- };
147
- });
148
- }
149
-
150
- function convertPseudos(pseudos) {
151
- if (!pseudos) {
152
- return;
153
- }
154
- return pseudos.map(p => {
155
- var expressions;
156
-
157
- if (['is', 'not'].includes(p.name)) {
158
- expressions = p.value;
159
- expressions = expressions.selectors
160
- ? expressions.selectors
161
- : [expressions];
162
- expressions = convertExpressions(expressions);
163
- }
164
- return {
165
- name: p.name,
166
- expressions: expressions,
167
- value: p.value
168
- };
169
- });
170
- }
171
-
172
- /**
173
- * convert the css-selector-parser format into the Slick format
174
- * @private
175
- * @param Array {Object} expressions
176
- * @return Array {Object}
177
- *
178
- */
179
- function convertExpressions(expressions) {
180
- return expressions.map(exp => {
181
- var newExp = [];
182
- var rule = exp.rule;
183
- while (rule) {
184
- /* eslint no-restricted-syntax: 0 */
185
- // `.tagName` is a property coming from the `CSSSelectorParser` library
186
- newExp.push({
187
- tag: rule.tagName ? rule.tagName.toLowerCase() : '*',
188
- combinator: rule.nestingOperator ? rule.nestingOperator : ' ',
189
- id: rule.id,
190
- attributes: convertAttributes(rule.attrs),
191
- classes: convertClasses(rule.classNames),
192
- pseudos: convertPseudos(rule.pseudos)
193
- });
194
- rule = rule.rule;
195
- }
196
- return newExp;
197
- });
198
- }
199
-
200
- /**
201
- * Convert a CSS selector to the Slick format expression
202
- *
203
- * @private
204
- * @param {String} selector CSS selector to convert
205
- * @returns {Object[]} Array of Slick format expressions
206
- */
207
- export function convertSelector(selector) {
208
- var expressions = cssParser.parse(selector);
209
- expressions = expressions.selectors ? expressions.selectors : [expressions];
210
- return convertExpressions(expressions);
211
- }
212
-
213
- /**
214
- * Determine if a virtual node matches a Slick format CSS expression
215
- *
216
- * @private
217
- * @method matchesExpression
218
- * @memberof axe.utils
219
- * @param {VirtualNode} vNode VirtualNode to match
220
- * @param {Object|Object[]} expressions CSS selector expression or array of expressions
221
- * @returns {Boolean}
222
- */
223
- export function matchesExpression(vNode, expressions, matchAnyParent) {
224
- const exps = [].concat(expressions);
225
- const expression = exps.pop();
226
- let matches = matchExpression(vNode, expression);
227
-
228
- while (!matches && matchAnyParent && vNode.parent) {
229
- vNode = vNode.parent;
230
- matches = matchExpression(vNode, expression);
231
- }
232
-
233
- if (exps.length) {
234
- if ([' ', '>'].includes(expression.combinator) === false) {
235
- throw new Error(
236
- 'axe.utils.matchesExpression does not support the combinator: ' +
237
- expression.combinator
238
- );
239
- }
240
-
241
- matches =
242
- matches &&
243
- matchesExpression(vNode.parent, exps, expression.combinator === ' ');
244
- }
245
-
246
- return matches;
247
- }
248
-
249
- /**
250
- * matches implementation that operates on a VirtualNode
251
- *
252
- * @method matches
253
- * @memberof axe.utils
254
- * @param {VirtualNode} vNode VirtualNode to match
255
- * @param {String} selector CSS selector string
256
- * @return {Boolean}
257
- */
258
- function matches(vNode, selector) {
259
- const expressions = convertSelector(selector);
260
- return expressions.some(expression => matchesExpression(vNode, expression));
261
- }
262
-
263
- export default matches;
@@ -1,22 +0,0 @@
1
- import memoize from 'memoizee';
2
-
3
- /**
4
- * Memoize a function.
5
- * @method memoize
6
- * @memberof axe.utils
7
- * @param {Function} fn Function to memoize
8
- * @return {Function}
9
- */
10
- // TODO: es-modules._memoziedFns
11
- axe._memoizedFns = [];
12
- function memoizeImplementation(fn) {
13
- // keep track of each function that is memoized so it can be cleared at
14
- // the end of a run. each memoized function has its own cache, so there is
15
- // no method to clear all memoized caches. instead, we have to clear each
16
- // individual memoized function ourselves.
17
- const memoized = memoize(fn);
18
- axe._memoizedFns.push(memoized);
19
- return memoized;
20
- }
21
-
22
- export default memoizeImplementation;
@@ -1,134 +0,0 @@
1
- import DqElement from './dq-element';
2
- import getAllChecks from './get-all-checks';
3
- import findBy from './find-by';
4
-
5
- /**
6
- * Adds the owning frame's CSS selector onto each instance of DqElement
7
- * @private
8
- * @param {Array} resultSet `nodes` array on a `RuleResult`
9
- * @param {HTMLElement} frameElement The frame element
10
- * @param {String} frameSelector Unique CSS selector for the frame
11
- */
12
- function pushFrame(resultSet, dqFrame, options) {
13
- resultSet.forEach(res => {
14
- res.node = DqElement.fromFrame(res.node, options, dqFrame);
15
- const checks = getAllChecks(res);
16
-
17
- checks.forEach(check => {
18
- check.relatedNodes = check.relatedNodes.map(node =>
19
- DqElement.fromFrame(node, options, dqFrame)
20
- );
21
- });
22
- });
23
- }
24
-
25
- /**
26
- * Adds `to` to `from` and then re-sorts by DOM order
27
- * @private
28
- * @param {Array} target `nodes` array on a `RuleResult`
29
- * @param {Array} to `nodes` array on a `RuleResult`
30
- * @return {Array} The merged and sorted result
31
- */
32
- function spliceNodes(target, to) {
33
- const firstFromFrame = to[0].node;
34
- for (let i = 0; i < target.length; i++) {
35
- const node = target[i].node;
36
- const resultSort = nodeIndexSort(
37
- node.nodeIndexes,
38
- firstFromFrame.nodeIndexes
39
- );
40
- if (
41
- resultSort > 0 ||
42
- (resultSort === 0 &&
43
- firstFromFrame.selector.length < node.selector.length)
44
- ) {
45
- target.splice(i, 0, ...to);
46
- return;
47
- }
48
- }
49
- target.push(...to);
50
- }
51
-
52
- function normalizeResult(result) {
53
- if (!result || !result.results) {
54
- return null;
55
- }
56
-
57
- if (!Array.isArray(result.results)) {
58
- return [result.results];
59
- }
60
-
61
- if (!result.results.length) {
62
- return null;
63
- }
64
-
65
- return result.results;
66
- }
67
-
68
- /**
69
- * Merges one or more RuleResults (possibly from different frames) into one RuleResult
70
- * @private
71
- * @param {Array} frameResults Array of objects including the RuleResults as `results` and frame as `frame`
72
- * @return {Array} The merged RuleResults; should only have one result per rule
73
- */
74
- function mergeResults(frameResults, options) {
75
- const mergedResult = [];
76
- frameResults.forEach(frameResult => {
77
- const results = normalizeResult(frameResult);
78
- if (!results || !results.length) {
79
- return;
80
- }
81
-
82
- let dqFrame;
83
- if (frameResult.frameElement) {
84
- const spec = { selector: [frameResult.frame] };
85
- dqFrame = new DqElement(frameResult.frameElement, options, spec);
86
- }
87
-
88
- results.forEach(ruleResult => {
89
- if (ruleResult.nodes && dqFrame) {
90
- pushFrame(ruleResult.nodes, dqFrame, options);
91
- }
92
-
93
- var res = findBy(mergedResult, 'id', ruleResult.id);
94
- if (!res) {
95
- mergedResult.push(ruleResult);
96
- } else {
97
- if (ruleResult.nodes.length) {
98
- spliceNodes(res.nodes, ruleResult.nodes);
99
- }
100
- }
101
- });
102
- });
103
-
104
- // Sort results in DOM order
105
- mergedResult.forEach(result => {
106
- if (result.nodes) {
107
- result.nodes.sort((nodeA, nodeB) => {
108
- return nodeIndexSort(nodeA.node.nodeIndexes, nodeB.node.nodeIndexes);
109
- });
110
- }
111
- });
112
- return mergedResult;
113
- }
114
-
115
- function nodeIndexSort(nodeIndexesA = [], nodeIndexesB = []) {
116
- const length = Math.max(nodeIndexesA?.length, nodeIndexesB?.length);
117
- for (let i = 0; i < length; i++) {
118
- const indexA = nodeIndexesA?.[i];
119
- const indexB = nodeIndexesB?.[i];
120
- if (typeof indexA !== 'number' || isNaN(indexA)) {
121
- // Empty arrays go at the end, otherwise shortest array first
122
- return i === 0 ? 1 : -1;
123
- }
124
- if (typeof indexB !== 'number' || isNaN(indexB)) {
125
- return i === 0 ? -1 : 1;
126
- }
127
- if (indexA !== indexB) {
128
- return indexA - indexB;
129
- }
130
- }
131
- return 0;
132
- }
133
-
134
- export default mergeResults;
@@ -1,23 +0,0 @@
1
- /**
2
- * Array#sort callback to sort nodes by DOM order
3
- * @private
4
- * @param {Node} nodeA
5
- * @param {Node} nodeB
6
- * @return {Integer} @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Sort
7
- */
8
- function nodeSorter(nodeA, nodeB) {
9
- /*eslint no-bitwise: 0 */
10
- nodeA = nodeA.actualNode || nodeA;
11
- nodeB = nodeB.actualNode || nodeB;
12
- if (nodeA === nodeB) {
13
- return 0;
14
- }
15
-
16
- if (nodeA.compareDocumentPosition(nodeB) & 4) {
17
- return -1; // a before b
18
- } else {
19
- return 1; // b before a
20
- }
21
- }
22
-
23
- export default nodeSorter;
@@ -1,66 +0,0 @@
1
- import parseStylesheet from './parse-stylesheet';
2
- import constants from '../constants';
3
-
4
- /**
5
- * Parse cross-origin stylesheets
6
- *
7
- * @method parseCrossOriginStylesheet
8
- * @memberof axe.utils
9
- * @param {String} url url from which to fetch stylesheet
10
- * @param {Object} options options object from `axe.utils.parseStylesheet`
11
- * @param {Array<Number>} priority sheet priority
12
- * @param {Array<String>} importedUrls urls of already imported stylesheets
13
- * @param {Boolean} isCrossOrigin boolean denoting if a stylesheet is `cross-origin`
14
- * @returns {Promise}
15
- */
16
- function parseCrossOriginStylesheet(
17
- url,
18
- options,
19
- priority,
20
- importedUrls,
21
- isCrossOrigin
22
- ) {
23
- /**
24
- * Add `url` to `importedUrls`
25
- */
26
- importedUrls.push(url);
27
-
28
- return new Promise((resolve, reject) => {
29
- const request = new XMLHttpRequest();
30
- request.open('GET', url);
31
-
32
- request.timeout = constants.preload.timeout;
33
- request.addEventListener('error', reject);
34
- request.addEventListener('timeout', reject);
35
- request.addEventListener('loadend', event => {
36
- if (event.loaded && request.responseText) {
37
- return resolve(request.responseText);
38
- }
39
-
40
- reject(request.responseText);
41
- });
42
-
43
- request.send();
44
- }).then(data => {
45
- const result = options.convertDataToStylesheet({
46
- data,
47
- isCrossOrigin,
48
- priority,
49
- root: options.rootNode,
50
- shadowId: options.shadowId
51
- });
52
-
53
- /**
54
- * Parse resolved stylesheet further for any `@import` styles
55
- */
56
- return parseStylesheet(
57
- result.sheet,
58
- options,
59
- priority,
60
- importedUrls,
61
- result.isCrossOrigin
62
- );
63
- });
64
- }
65
-
66
- export default parseCrossOriginStylesheet;
@@ -1,100 +0,0 @@
1
- import parseCrossOriginStylesheet from './parse-crossorigin-stylesheet';
2
-
3
- /**
4
- * Parse non cross-origin stylesheets
5
- *
6
- * @method parseSameOriginStylesheet
7
- * @memberof axe.utils
8
- * @param {Object} sheet CSSStylesheet object
9
- * @param {Object} options options object from `axe.utils.parseStylesheet`
10
- * @param {Array<Number>} priority sheet priority
11
- * @param {Array<String>} importedUrls urls of already imported stylesheets
12
- * @param {Boolean} isCrossOrigin boolean denoting if a stylesheet is `cross-origin`
13
- * @returns {Promise}
14
- */
15
- function parseSameOriginStylesheet(
16
- sheet,
17
- options,
18
- priority,
19
- importedUrls,
20
- isCrossOrigin = false
21
- ) {
22
- const rules = Array.from(sheet.cssRules);
23
-
24
- if (!rules) {
25
- return Promise.resolve();
26
- }
27
-
28
- /**
29
- * reference -> https://developer.mozilla.org/en-US/docs/Web/API/CSSRule#Type_constants
30
- */
31
- const cssImportRules = rules.filter(r => r.type === 3); // type === 3 -> CSSRule.IMPORT_RULE
32
-
33
- /**
34
- * when no `@import` rules in given sheet -> resolve the current `sheet` & exit
35
- */
36
- if (!cssImportRules.length) {
37
- // exit
38
- return Promise.resolve({
39
- isCrossOrigin,
40
- priority,
41
- root: options.rootNode,
42
- shadowId: options.shadowId,
43
- sheet
44
- });
45
- }
46
-
47
- /**
48
- * filter rules that are not already fetched
49
- */
50
- const cssImportUrlsNotAlreadyImported = cssImportRules
51
- // ensure rule has a href
52
- .filter(rule => rule.href)
53
- // extract href from object
54
- .map(rule => rule.href)
55
- // only href that are not already imported
56
- .filter(url => !importedUrls.includes(url));
57
-
58
- /**
59
- * iterate `@import` rules and fetch styles
60
- */
61
- const promises = cssImportUrlsNotAlreadyImported.map(
62
- (importUrl, cssRuleIndex) => {
63
- const newPriority = [...priority, cssRuleIndex];
64
- const isCrossOriginRequest = /^https?:\/\/|^\/\//i.test(importUrl);
65
-
66
- return parseCrossOriginStylesheet(
67
- importUrl,
68
- options,
69
- newPriority,
70
- importedUrls,
71
- isCrossOriginRequest
72
- );
73
- }
74
- );
75
-
76
- const nonImportCSSRules = rules.filter(r => r.type !== 3);
77
-
78
- // no further rules to process in this sheet
79
- if (!nonImportCSSRules.length) {
80
- return Promise.all(promises);
81
- }
82
-
83
- // convert all `nonImportCSSRules` style rules into `text` and chain
84
-
85
- promises.push(
86
- Promise.resolve(
87
- options.convertDataToStylesheet({
88
- data: nonImportCSSRules.map(rule => rule.cssText).join(),
89
- isCrossOrigin,
90
- priority,
91
- root: options.rootNode,
92
- shadowId: options.shadowId
93
- })
94
- )
95
- );
96
-
97
- return Promise.all(promises);
98
- }
99
-
100
- export default parseSameOriginStylesheet;
@@ -1,75 +0,0 @@
1
- import parseSameOriginStylesheet from './parse-sameorigin-stylesheet';
2
- import parseCrossOriginStylesheet from './parse-crossorigin-stylesheet';
3
-
4
- /**
5
- * Parse a given stylesheet
6
- *
7
- * @method parseStylesheet
8
- * @memberof axe.utils
9
- * @param {Object} sheet stylesheet to parse
10
- * @param {Object} options configuration options object from `parseStylesheets`
11
- * @param {Array<Number>} priority priority of stylesheet
12
- * @param {Array<String>} importedUrls list of resolved `@import` urls
13
- * @param {Boolean} isCrossOrigin boolean denoting if a stylesheet is `cross-origin`, passed for re-parsing `cross-origin` sheets
14
- * @returns {Promise}
15
- */
16
- function parseStylesheet(
17
- sheet,
18
- options,
19
- priority,
20
- importedUrls,
21
- isCrossOrigin = false
22
- ) {
23
- const isSameOrigin = isSameOriginStylesheet(sheet);
24
- if (isSameOrigin) {
25
- /**
26
- * resolve `same-origin` stylesheet
27
- */
28
- return parseSameOriginStylesheet(
29
- sheet,
30
- options,
31
- priority,
32
- importedUrls,
33
- isCrossOrigin
34
- );
35
- }
36
-
37
- /**
38
- * resolve `cross-origin` stylesheet
39
- */
40
- return parseCrossOriginStylesheet(
41
- sheet.href,
42
- options,
43
- priority,
44
- importedUrls,
45
- true // -> isCrossOrigin
46
- );
47
- }
48
-
49
- /**
50
- * Check if a given stylesheet is from the `same-origin`
51
- * Note:
52
- * `sheet.cssRules` throws an error on `cross-origin` stylesheets
53
- *
54
- * @param {Object} sheet CSS stylesheet
55
- * @returns {Boolean}
56
- */
57
- function isSameOriginStylesheet(sheet) {
58
- try {
59
- /*eslint no-unused-vars: 0*/
60
- const rules = sheet.cssRules;
61
-
62
- /**
63
- * Safari, does not throw an error when accessing cssRules property,
64
- */
65
- if (!rules && sheet.href) {
66
- return false;
67
- }
68
-
69
- return true;
70
- } catch (e) {
71
- return false;
72
- }
73
- }
74
-
75
- export default parseStylesheet;