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,39 +0,0 @@
1
- import getRole from './get-role';
2
- import standards from '../../standards';
3
- import { getNodeFromTree } from '../../core/utils';
4
- import AbstractVirtuaNode from '../../core/base/virtual-node/abstract-virtual-node';
5
-
6
- /**
7
- * Check if an element is named from contents
8
- *
9
- * @param {Node|VirtualNode} element
10
- * @param {Object} options
11
- * @property {Bool} strict Whether or not to follow the spects strictly
12
- * @return {Bool}
13
- */
14
- function namedFromContents(vNode, { strict } = {}) {
15
- vNode = vNode instanceof AbstractVirtuaNode ? vNode : getNodeFromTree(vNode);
16
- if (vNode.props.nodeType !== 1) {
17
- return false;
18
- }
19
-
20
- const role = getRole(vNode);
21
- const roleDef = standards.ariaRoles[role];
22
-
23
- if (roleDef && roleDef.nameFromContent) {
24
- return true;
25
- }
26
-
27
- /**
28
- * Note: Strictly speaking if the role is null, presentation, or none, the element
29
- * isn't named from contents. Axe-core often needs to know if an element
30
- * has content anyway, so we're allowing it here.
31
- * Use { strict: true } to disable this behavior.
32
- */
33
- if (strict) {
34
- return false;
35
- }
36
- return !roleDef || ['presentation', 'none'].includes(role);
37
- }
38
-
39
- export default namedFromContents;
@@ -1,21 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Get required attributes for a given role
5
- * @method requiredAttr
6
- * @memberof axe.commons.aria
7
- * @instance
8
- * @param {String} role The role to check
9
- * @return {Array}
10
- */
11
- function requiredAttr(role) {
12
- const roleDef = standards.ariaRoles[role];
13
-
14
- if (!roleDef || !Array.isArray(roleDef.requiredAttrs)) {
15
- return [];
16
- }
17
-
18
- return [...roleDef.requiredAttrs];
19
- }
20
-
21
- export default requiredAttr;
@@ -1,21 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Get the required context (parent) roles for a given role
5
- * @method requiredContext
6
- * @memberof axe.commons.aria
7
- * @instance
8
- * @param {String} role The role to check
9
- * @return {Mixed} Either an Array of required context elements or `null` if there are none
10
- */
11
- function requiredContext(role) {
12
- const roleDef = standards.ariaRoles[role];
13
-
14
- if (!roleDef || !Array.isArray(roleDef.requiredContext)) {
15
- return null;
16
- }
17
-
18
- return [...roleDef.requiredContext];
19
- }
20
-
21
- export default requiredContext;
@@ -1,21 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Get the required owned (children) roles for a given role
5
- * @method requiredOwned
6
- * @memberof axe.commons.aria
7
- * @instance
8
- * @param {String} role The role to check
9
- * @return {Mixed} Either an Array of required owned elements or `null` if there are none
10
- */
11
- function requiredOwned(role) {
12
- const roleDef = standards.ariaRoles[role];
13
-
14
- if (!roleDef || !Array.isArray(roleDef.requiredOwned)) {
15
- return null;
16
- }
17
-
18
- return [...roleDef.requiredOwned];
19
- }
20
-
21
- export default requiredOwned;
@@ -1,70 +0,0 @@
1
- import standards from '../../standards';
2
- import getRootNode from '../dom/get-root-node';
3
- import { tokenList } from '../../core/utils';
4
-
5
- /**
6
- * Validate the value of an ARIA attribute
7
- * @method validateAttrValue
8
- * @memberof axe.commons.aria
9
- * @instance
10
- * @param {HTMLElement} node The element to check
11
- * @param {String} attr The name of the attribute
12
- * @return {Boolean}
13
- */
14
- function validateAttrValue(node, attr) {
15
- let matches;
16
- let list;
17
- const value = node.getAttribute(attr);
18
- const attrInfo = standards.ariaAttrs[attr];
19
- const doc = getRootNode(node);
20
-
21
- if (!attrInfo) {
22
- return true;
23
- }
24
- if (attrInfo.allowEmpty && (!value || value.trim() === '')) {
25
- return true;
26
- }
27
-
28
- switch (attrInfo.type) {
29
- case 'boolean':
30
- return ['true', 'false'].includes(value.toLowerCase());
31
-
32
- case 'nmtoken':
33
- return (
34
- typeof value === 'string' &&
35
- attrInfo.values.includes(value.toLowerCase())
36
- );
37
-
38
- case 'nmtokens':
39
- list = tokenList(value);
40
- // Check if any value isn't in the list of values
41
- return list.reduce((result, token) => {
42
- return result && attrInfo.values.includes(token);
43
- // Initial state, fail if the list is empty
44
- }, list.length !== 0);
45
-
46
- case 'idref':
47
- return !!(value && doc.getElementById(value));
48
-
49
- case 'idrefs':
50
- list = tokenList(value);
51
- return list.some(token => doc.getElementById(token));
52
-
53
- case 'string':
54
- // Not allowed empty except with allowEmpty: true
55
- return value.trim() !== '';
56
-
57
- case 'decimal':
58
- matches = value.match(/^[-+]?([0-9]*)\.?([0-9]*)$/);
59
- return !!(matches && (matches[1] || matches[2]));
60
-
61
- case 'int':
62
- const minValue =
63
- typeof attrInfo.minValue !== 'undefined'
64
- ? attrInfo.minValue
65
- : -Infinity;
66
- return /^[-+]?[0-9]+$/.test(value) && parseInt(value) >= minValue;
67
- }
68
- }
69
-
70
- export default validateAttrValue;
@@ -1,16 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Check if an aria- attribute name is valid
5
- * @method validateAttr
6
- * @memberof axe.commons.aria
7
- * @instance
8
- * @param {String} att The attribute name
9
- * @return {Boolean}
10
- */
11
- function validateAttr(att) {
12
- const attrDefinition = standards.ariaAttrs[att];
13
- return !!attrDefinition;
14
- }
15
-
16
- export default validateAttr;
@@ -1,31 +0,0 @@
1
- /**
2
- * Get coordinates for an element's client rects or bounding client rect
3
- *
4
- * @method centerPointOfRect
5
- * @memberof axe.commons.color
6
- * @param {DOMRect} rect
7
- * @deprecated
8
- * @returns {Object | undefined}
9
- */
10
- function centerPointOfRect(rect) {
11
- if (rect.left > window.innerWidth) {
12
- return undefined;
13
- }
14
-
15
- if (rect.top > window.innerHeight) {
16
- return undefined;
17
- }
18
-
19
- const x = Math.min(
20
- Math.ceil(rect.left + rect.width / 2),
21
- window.innerWidth - 1
22
- );
23
- const y = Math.min(
24
- Math.ceil(rect.top + rect.height / 2),
25
- window.innerHeight - 1
26
- );
27
-
28
- return { x, y };
29
- }
30
-
31
- export default centerPointOfRect;
@@ -1,250 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Convert a CSS color value into a number
5
- */
6
- function convertColorVal(colorFunc, value, index) {
7
- if (/%$/.test(value)) {
8
- //<percentage>
9
- if (index === 3) {
10
- // alpha
11
- return parseFloat(value) / 100;
12
- }
13
- return (parseFloat(value) * 255) / 100;
14
- }
15
- if (colorFunc[index] === 'h') {
16
- // hue
17
- if (/turn$/.test(value)) {
18
- return parseFloat(value) * 360;
19
- }
20
- if (/rad$/.test(value)) {
21
- return parseFloat(value) * 57.3;
22
- }
23
- }
24
- return parseFloat(value);
25
- }
26
-
27
- /**
28
- * Convert HSL to RGB
29
- */
30
- function hslToRgb([hue, saturation, lightness, alpha]) {
31
- // Must be fractions of 1
32
- saturation /= 255;
33
- lightness /= 255;
34
-
35
- const high = (1 - Math.abs(2 * lightness - 1)) * saturation;
36
- const low = high * (1 - Math.abs(((hue / 60) % 2) - 1));
37
- const base = lightness - high / 2;
38
-
39
- let colors;
40
- if (hue < 60) {
41
- // red - yellow
42
- colors = [high, low, 0];
43
- } else if (hue < 120) {
44
- // yellow - green
45
- colors = [low, high, 0];
46
- } else if (hue < 180) {
47
- // green - cyan
48
- colors = [0, high, low];
49
- } else if (hue < 240) {
50
- // cyan - blue
51
- colors = [0, low, high];
52
- } else if (hue < 300) {
53
- // blue - purple
54
- colors = [low, 0, high];
55
- } else {
56
- // purple - red
57
- colors = [high, 0, low];
58
- }
59
-
60
- return colors
61
- .map(color => {
62
- return Math.round((color + base) * 255);
63
- })
64
- .concat(alpha);
65
- }
66
-
67
- /**
68
- * @class Color
69
- * @memberof axe.commons.color
70
- * @param {number} red
71
- * @param {number} green
72
- * @param {number} blue
73
- * @param {number} alpha
74
- */
75
- function Color(red, green, blue, alpha) {
76
- /** @type {number} */
77
- this.red = red;
78
-
79
- /** @type {number} */
80
- this.green = green;
81
-
82
- /** @type {number} */
83
- this.blue = blue;
84
-
85
- /** @type {number} */
86
- this.alpha = alpha;
87
-
88
- /**
89
- * Provide the hex string value for the color
90
- * @method toHexString
91
- * @memberof axe.commons.color.Color
92
- * @instance
93
- * @return {string}
94
- */
95
- this.toHexString = function toHexString() {
96
- var redString = Math.round(this.red).toString(16);
97
- var greenString = Math.round(this.green).toString(16);
98
- var blueString = Math.round(this.blue).toString(16);
99
- return (
100
- '#' +
101
- (this.red > 15.5 ? redString : '0' + redString) +
102
- (this.green > 15.5 ? greenString : '0' + greenString) +
103
- (this.blue > 15.5 ? blueString : '0' + blueString)
104
- );
105
- };
106
-
107
- const hexRegex = /^#[0-9a-f]{3,8}$/i;
108
- const colorFnRegex = /^((?:rgb|hsl)a?)\s*\(([^\)]*)\)/i;
109
-
110
- /**
111
- * Parse any valid color string and assign its values to "this"
112
- * @method parseString
113
- * @memberof axe.commons.color.Color
114
- * @instance
115
- */
116
- this.parseString = function parseString(colorString) {
117
- // IE occasionally returns named colors instead of RGB(A) values
118
- if (standards.cssColors[colorString] || colorString === 'transparent') {
119
- const [red, green, blue] = standards.cssColors[colorString] || [0, 0, 0];
120
- this.red = red;
121
- this.green = green;
122
- this.blue = blue;
123
- this.alpha = colorString === 'transparent' ? 0 : 1;
124
- return;
125
- }
126
-
127
- if (colorString.match(colorFnRegex)) {
128
- this.parseColorFnString(colorString);
129
- return;
130
- }
131
-
132
- if (colorString.match(hexRegex)) {
133
- this.parseHexString(colorString);
134
- return;
135
- }
136
- throw new Error(`Unable to parse color "${colorString}"`);
137
- };
138
-
139
- /**
140
- * Set the color value based on a CSS RGB/RGBA string
141
- * @method parseRgbString
142
- * @deprecated
143
- * @memberof axe.commons.color.Color
144
- * @instance
145
- * @param {string} rgb The string value
146
- */
147
- this.parseRgbString = function parseRgbString(colorString) {
148
- // IE can pass transparent as value instead of rgba
149
- if (colorString === 'transparent') {
150
- this.red = 0;
151
- this.green = 0;
152
- this.blue = 0;
153
- this.alpha = 0;
154
- return;
155
- }
156
- this.parseColorFnString(colorString);
157
- };
158
-
159
- /**
160
- * Set the color value based on a CSS RGB/RGBA string
161
- * @method parseHexString
162
- * @deprecated
163
- * @memberof axe.commons.color.Color
164
- * @instance
165
- * @param {string} rgb The string value
166
- */
167
- this.parseHexString = function parseHexString(colorString) {
168
- if (!colorString.match(hexRegex) || [6, 8].includes(colorString.length)) {
169
- return;
170
- }
171
- colorString = colorString.replace('#', '');
172
- if (colorString.length < 6) {
173
- const [r, g, b, a] = colorString;
174
- colorString = r + r + g + g + b + b;
175
- if (a) {
176
- colorString += a + a;
177
- }
178
- }
179
-
180
- var aRgbHex = colorString.match(/.{1,2}/g);
181
- this.red = parseInt(aRgbHex[0], 16);
182
- this.green = parseInt(aRgbHex[1], 16);
183
- this.blue = parseInt(aRgbHex[2], 16);
184
- if (aRgbHex[3]) {
185
- this.alpha = parseInt(aRgbHex[3], 16) / 255;
186
- } else {
187
- this.alpha = 1;
188
- }
189
- };
190
-
191
- /**
192
- * Set the color value based on a CSS RGB/RGBA string
193
- * @method parseColorFnString
194
- * @deprecated
195
- * @memberof axe.commons.color.Color
196
- * @instance
197
- * @param {string} rgb The string value
198
- */
199
- this.parseColorFnString = function parseColorFnString(colorString) {
200
- const [, colorFunc, colorValStr] = colorString.match(colorFnRegex) || [];
201
- if (!colorFunc || !colorValStr) {
202
- return;
203
- }
204
-
205
- // Get array of color number strings from the string:
206
- const colorVals = colorValStr
207
- .split(/\s*[,\/\s]\s*/)
208
- .map(str => str.replace(',', '').trim())
209
- .filter(str => str !== '');
210
-
211
- // Convert to numbers
212
- let colorNums = colorVals.map((val, index) => {
213
- return convertColorVal(colorFunc, val, index);
214
- });
215
-
216
- if (colorFunc.substr(0, 3) === 'hsl') {
217
- colorNums = hslToRgb(colorNums);
218
- }
219
-
220
- this.red = colorNums[0];
221
- this.green = colorNums[1];
222
- this.blue = colorNums[2];
223
- this.alpha = typeof colorNums[3] === 'number' ? colorNums[3] : 1;
224
- };
225
-
226
- /**
227
- * Get the relative luminance value
228
- * using algorithm from http://www.w3.org/WAI/GL/wiki/Relative_luminance
229
- * @method getRelativeLuminance
230
- * @memberof axe.commons.color.Color
231
- * @instance
232
- * @return {number} The luminance value, ranges from 0 to 1
233
- */
234
- this.getRelativeLuminance = function getRelativeLuminance() {
235
- var rSRGB = this.red / 255;
236
- var gSRGB = this.green / 255;
237
- var bSRGB = this.blue / 255;
238
-
239
- var r =
240
- rSRGB <= 0.03928 ? rSRGB / 12.92 : Math.pow((rSRGB + 0.055) / 1.055, 2.4);
241
- var g =
242
- gSRGB <= 0.03928 ? gSRGB / 12.92 : Math.pow((gSRGB + 0.055) / 1.055, 2.4);
243
- var b =
244
- bSRGB <= 0.03928 ? bSRGB / 12.92 : Math.pow((bSRGB + 0.055) / 1.055, 2.4);
245
-
246
- return 0.2126 * r + 0.7152 * g + 0.0722 * b;
247
- };
248
- }
249
-
250
- export default Color;
@@ -1,35 +0,0 @@
1
- import incompleteData from './incomplete-data';
2
-
3
- /**
4
- * Reports if an element has a background image or gradient
5
- *
6
- * @method elementHasImage
7
- * @memberof axe.commons.color
8
- * @private
9
- * @param {Element} elm
10
- * @param {Object|null} style
11
- * @return {Boolean}
12
- */
13
- function elementHasImage(elm, style) {
14
- const graphicNodes = ['IMG', 'CANVAS', 'OBJECT', 'IFRAME', 'VIDEO', 'SVG'];
15
- const nodeName = elm.nodeName.toUpperCase();
16
-
17
- if (graphicNodes.includes(nodeName)) {
18
- incompleteData.set('bgColor', 'imgNode');
19
- return true;
20
- }
21
-
22
- style = style || window.getComputedStyle(elm);
23
-
24
- const bgImageStyle = style.getPropertyValue('background-image');
25
- const hasBgImage = bgImageStyle !== 'none';
26
-
27
- if (hasBgImage) {
28
- const hasGradient = /gradient/.test(bgImageStyle);
29
- incompleteData.set('bgColor', hasGradient ? 'bgGradient' : 'bgImage');
30
- }
31
-
32
- return hasBgImage;
33
- }
34
-
35
- export default elementHasImage;
@@ -1,87 +0,0 @@
1
- import Color from './color';
2
-
3
- /**
4
- * Creates a string array of fonts for given CSSStyleDeclaration object
5
- * @private
6
- * @param {Object} style CSSStyleDeclaration object
7
- * @return {Array}
8
- */
9
- function _getFonts(style) {
10
- return style
11
- .getPropertyValue('font-family')
12
- .split(/[,;]/g)
13
- .map(font => {
14
- return font.trim().toLowerCase();
15
- });
16
- }
17
-
18
- /**
19
- * Determine if the text content of two nodes is styled in a way that they can be distinguished without relying on color
20
- * @method elementIsDistinct
21
- * @memberof axe.commons.color
22
- * @instance
23
- * @param {HTMLElement} node The element to check
24
- * @param {HTMLElement} ancestorNode The ancestor node element to check
25
- * @return {Boolean}
26
- */
27
- function elementIsDistinct(node, ancestorNode) {
28
- var nodeStyle = window.getComputedStyle(node);
29
-
30
- // Check if the link has a background
31
- if (nodeStyle.getPropertyValue('background-image') !== 'none') {
32
- return true;
33
- }
34
-
35
- // Check if the link has a border or outline
36
- var hasBorder = ['border-bottom', 'border-top', 'outline'].reduce(
37
- (result, edge) => {
38
- var borderClr = new Color();
39
- borderClr.parseString(nodeStyle.getPropertyValue(edge + '-color'));
40
-
41
- // Check if a border/outline was specified
42
- return (
43
- result ||
44
- // or if the current border edge / outline
45
- (nodeStyle.getPropertyValue(edge + '-style') !== 'none' &&
46
- parseFloat(nodeStyle.getPropertyValue(edge + '-width')) > 0 &&
47
- borderClr.alpha !== 0)
48
- );
49
- },
50
- false
51
- );
52
-
53
- if (hasBorder) {
54
- return true;
55
- }
56
-
57
- var parentStyle = window.getComputedStyle(ancestorNode);
58
- // Compare fonts
59
- if (_getFonts(nodeStyle)[0] !== _getFonts(parentStyle)[0]) {
60
- return true;
61
- }
62
-
63
- var hasStyle = [
64
- 'text-decoration-line',
65
- 'text-decoration-style',
66
- 'font-weight',
67
- 'font-style',
68
- 'font-size'
69
- ].reduce((result, cssProp) => {
70
- return (
71
- result ||
72
- nodeStyle.getPropertyValue(cssProp) !==
73
- parentStyle.getPropertyValue(cssProp)
74
- );
75
- }, false);
76
-
77
- var tDec = nodeStyle.getPropertyValue('text-decoration');
78
- if (tDec.split(' ').length < 3) {
79
- // old style CSS text decoration
80
- hasStyle =
81
- hasStyle || tDec !== parentStyle.getPropertyValue('text-decoration');
82
- }
83
-
84
- return hasStyle;
85
- }
86
-
87
- export default elementIsDistinct;
@@ -1,51 +0,0 @@
1
- import getRectStack from './get-rect-stack';
2
- import incompleteData from './incomplete-data';
3
-
4
- /**
5
- * Get filtered stack of block and inline elements, excluding line breaks
6
- * @method filteredRectStack
7
- * @memberof axe.commons.color
8
- * @param {Element} elm
9
- * @return {Array}
10
- */
11
- function filteredRectStack(elm) {
12
- const rectStack = getRectStack(elm);
13
-
14
- if (rectStack && rectStack.length === 1) {
15
- return rectStack[0];
16
- }
17
-
18
- if (rectStack && rectStack.length > 1) {
19
- const boundingStack = rectStack.shift();
20
- let isSame;
21
-
22
- // iterating over arrays of DOMRects
23
- rectStack.forEach((rectList, index) => {
24
- if (index === 0) {
25
- return;
26
- }
27
- // if the stacks are the same, use the first one. otherwise, return null.
28
- const rectA = rectStack[index - 1],
29
- rectB = rectStack[index];
30
-
31
- // if elements in clientRects are the same
32
- // or the boundingClientRect contains the differing element, pass it
33
- isSame =
34
- rectA.every(
35
- (element, elementIndex) => element === rectB[elementIndex]
36
- ) || boundingStack.includes(elm);
37
- });
38
- if (!isSame) {
39
- incompleteData.set('bgColor', 'elmPartiallyObscuring');
40
- return null;
41
- }
42
- // pass the first stack if it wasn't partially covered
43
- return rectStack[0];
44
- }
45
-
46
- // rect outside of viewport
47
- incompleteData.set('bgColor', 'outsideViewport');
48
- return null;
49
- }
50
-
51
- export default filteredRectStack;
@@ -1,22 +0,0 @@
1
- import Color from './color';
2
-
3
- /**
4
- * Combine the two given color according to alpha blending.
5
- * @method flattenColors
6
- * @memberof axe.commons.color.Color
7
- * @instance
8
- * @param {Color} fgColor Foreground color
9
- * @param {Color} bgColor Background color
10
- * @return {Color} Blended color
11
- */
12
- function flattenColors(fgColor, bgColor) {
13
- var alpha = fgColor.alpha;
14
- var r = (1 - alpha) * bgColor.red + alpha * fgColor.red;
15
- var g = (1 - alpha) * bgColor.green + alpha * fgColor.green;
16
- var b = (1 - alpha) * bgColor.blue + alpha * fgColor.blue;
17
- var a = fgColor.alpha + bgColor.alpha * (1 - fgColor.alpha);
18
-
19
- return new Color(r, g, b, a);
20
- }
21
-
22
- export default flattenColors;