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,40 +0,0 @@
1
- import fromPrimative from './from-primative';
2
-
3
- /**
4
- * Check if the value from a function matches some condition
5
- *
6
- * Each key on the matcher object is passed to getValue, the returned value must match
7
- * with the value of that matcher
8
- *
9
- * Example:
10
- * ```js
11
- * matches.fromFunction(
12
- * (attr => node.getAttribute(attr),
13
- * {
14
- * 'aria-hidden': /^true|false$/i
15
- * }
16
- * )
17
- * ```
18
- *
19
- * @private
20
- * @param {Function} getValue
21
- * @param {Object} matcher matcher
22
- * @returns {Boolean}
23
- */
24
- function fromFunction(getValue, matcher) {
25
- const matcherType = typeof matcher;
26
- if (
27
- matcherType !== 'object' ||
28
- Array.isArray(matcher) ||
29
- matcher instanceof RegExp
30
- ) {
31
- throw new Error('Expect matcher to be an object');
32
- }
33
-
34
- // Check that the property has all the expected values
35
- return Object.keys(matcher).every(propName => {
36
- return fromPrimative(getValue(propName), matcher[propName]);
37
- });
38
- }
39
-
40
- export default fromFunction;
@@ -1,44 +0,0 @@
1
- /**
2
- * Check if some value matches
3
- *
4
- * ```js
5
- * match.fromPrimative('foo', 'foo') // true, string is the same
6
- * match.fromPrimative('foo', ['foo', 'bar']) // true, string is included
7
- * match.fromPrimative('foo', /foo/) // true, string matches regex
8
- * match.fromPrimative('foo', str => str.toUpperCase() === 'FOO') // true, function return is truthy
9
- * match.fromPrimative('foo', '/foo/') // true, string matches regex string
10
- * ```
11
- *
12
- * @private
13
- * @param {String|Boolean|Array|Number|Null|Undefined} someString
14
- * @param {String|RegExp|Function|Array<String>|Null|Undefined} matcher
15
- * @returns {Boolean}
16
- */
17
- function fromPrimative(someString, matcher) {
18
- const matcherType = typeof matcher;
19
- if (Array.isArray(matcher) && typeof someString !== 'undefined') {
20
- return matcher.includes(someString);
21
- }
22
-
23
- if (matcherType === 'function') {
24
- return !!matcher(someString);
25
- }
26
-
27
- // RegExp.test(str) typecasts the str to a String value so doing
28
- // `/.*/.test(null)` returns true as null is cast to "null"
29
- if (someString !== null && someString !== undefined) {
30
- if (matcher instanceof RegExp) {
31
- return matcher.test(someString);
32
- }
33
-
34
- // matcher starts and ends with "/"
35
- if (/^\/.*\/$/.test(matcher)) {
36
- const pattern = matcher.substring(1, matcher.length - 1);
37
- return new RegExp(pattern).test(someString);
38
- }
39
- }
40
-
41
- return matcher === someString;
42
- }
43
-
44
- export default fromPrimative;
@@ -1,24 +0,0 @@
1
- import fromPrimative from './from-primative';
2
- import getImplicitRole from '../aria/implicit-role';
3
-
4
- /**
5
- * Check if a virtual node matches an implicit role(s)
6
- *``
7
- * Note: matches.implicitRole(vNode, matcher) can be indirectly used through
8
- * matches(vNode, { implicitRole: matcher })
9
- *
10
- * Example:
11
- * ```js
12
- * matches.implicitRole(vNode, ['combobox', 'textbox']);
13
- * matches.implicitRole(vNode, 'combobox');
14
- * ```
15
- *
16
- * @param {VirtualNode} vNode
17
- * @param {Object} matcher
18
- * @returns {Boolean}
19
- */
20
- function implicitRole(vNode, matcher) {
21
- return fromPrimative(getImplicitRole(vNode), matcher);
22
- }
23
-
24
- export default implicitRole;
@@ -1,29 +0,0 @@
1
- /**
2
- * Namespace for matching utilities.
3
- * @namespace commons.matches
4
- * @memberof axe
5
- */
6
- import attributes from './attributes';
7
- import condition from './condition';
8
- import explicitRole from './explicit-role';
9
- import fromDefinition from './from-definition';
10
- import fromFunction from './from-function';
11
- import fromPrimative from './from-primative';
12
- import implicitRole from './implicit-role';
13
- import matches from './matches';
14
- import nodeName from './node-name';
15
- import properties from './properties';
16
- import semanticRole from './semantic-role';
17
-
18
- matches.attributes = attributes;
19
- matches.condition = condition;
20
- matches.explicitRole = explicitRole;
21
- matches.fromDefinition = fromDefinition;
22
- matches.fromFunction = fromFunction;
23
- matches.fromPrimative = fromPrimative;
24
- matches.implicitRole = implicitRole;
25
- matches.nodeName = nodeName;
26
- matches.properties = properties;
27
- matches.semanticRole = semanticRole;
28
-
29
- export default matches;
@@ -1,39 +0,0 @@
1
- import fromDefinition from './from-definition';
2
-
3
- /**
4
- * Check if a virtual node matches a definition
5
- *
6
- * Example:
7
- * ```js
8
- * // Match a single nodeName:
9
- * axe.commons.matches(vNode, 'div')
10
- *
11
- * // Match one of multiple nodeNames:
12
- * axe.commons.matches(vNode, ['ul', 'ol'])
13
- *
14
- * // Match a node with nodeName 'button' and with aria-hidden: true:
15
- * axe.commons.matches(vNode, {
16
- * nodeName: 'button',
17
- * attributes: { 'aria-hidden': 'true' }
18
- * })
19
- *
20
- * // Mixed input. Match button nodeName, input[type=button] and input[type=reset]
21
- * axe.commons.matches(vNode, ['button', {
22
- * nodeName: 'input', // nodeName match isn't case sensitive
23
- * properties: { type: ['button', 'reset'] }
24
- * }])
25
- * ```
26
- *
27
- * @deprecated HTMLElement is deprecated, use VirtualNode instead
28
- *
29
- * @namespace matches
30
- * @memberof axe.commons
31
- * @param {HTMLElement|VirtualNode} vNode virtual node to verify attributes against constraints
32
- * @param {Array<ElementDefinition>|String|Object|Function|Regex} definition
33
- * @return {Boolean} true/ false based on if vNode passes the constraints expected
34
- */
35
- function matches(vNode, definition) {
36
- return fromDefinition(vNode, definition);
37
- }
38
-
39
- export default matches;
@@ -1,29 +0,0 @@
1
- import fromPrimative from './from-primative';
2
- import AbstractVirtualNode from '../../core/base/virtual-node/abstract-virtual-node';
3
- import { getNodeFromTree } from '../../core/utils';
4
-
5
- /**
6
- * Check if the nodeName of a virtual node matches some value.
7
- *
8
- * Note: matches.nodeName(vNode, matcher) can be indirectly used through
9
- * matches(vNode, { nodeName: matcher })
10
- *
11
- * Example:
12
- * ```js
13
- * matches.nodeName(vNode, ['div', 'span'])
14
- * ```
15
- *
16
- * @deprecated HTMLElement is deprecated, use VirtualNode instead
17
- *
18
- * @param {HTMLElement|VirtualNode} vNode
19
- * @param {Object} Attribute matcher
20
- * @returns {Boolean}
21
- */
22
- function nodeName(vNode, matcher) {
23
- if (!(vNode instanceof AbstractVirtualNode)) {
24
- vNode = getNodeFromTree(vNode);
25
- }
26
- return fromPrimative(vNode.props.nodeName, matcher);
27
- }
28
-
29
- export default nodeName;
@@ -1,32 +0,0 @@
1
- import fromFunction from './from-function';
2
- import AbstractVirtualNode from '../../core/base/virtual-node/abstract-virtual-node';
3
- import { getNodeFromTree } from '../../core/utils';
4
-
5
- /**
6
- * Check if a virtual node matches some attribute(s)
7
- *
8
- * Note: matches.properties(vNode, matcher) can be indirectly used through
9
- * matches(vNode, { properties: matcher })
10
- *
11
- * Example:
12
- * ```js
13
- * matches.properties(vNode, {
14
- * type: 'text', // Simple string match
15
- * value: value => value.trim() !== '', // None-empty value, using a function matcher
16
- * })
17
- * ```
18
- *
19
- * @deprecated HTMLElement is deprecated, use VirtualNode instead
20
- *
21
- * @param {HTMLElement|VirtualNode} vNode
22
- * @param {Object} matcher
23
- * @returns {Boolean}
24
- */
25
- function properties(vNode, matcher) {
26
- if (!(vNode instanceof AbstractVirtualNode)) {
27
- vNode = getNodeFromTree(vNode);
28
- }
29
- return fromFunction(propName => vNode.props[propName], matcher);
30
- }
31
-
32
- export default properties;
@@ -1,24 +0,0 @@
1
- import fromPrimative from './from-primative';
2
- import getRole from '../aria/get-role';
3
-
4
- /**
5
- * Check if a virtual node matches an semantic role(s)
6
- *``
7
- * Note: matches.semanticRole(vNode, matcher) can be indirectly used through
8
- * matches(vNode, { semanticRole: matcher })
9
- *
10
- * Example:
11
- * ```js
12
- * matches.semanticRole(vNode, ['combobox', 'textbox']);
13
- * matches.semanticRole(vNode, 'combobox');
14
- * ```
15
- *
16
- * @param {VirtualNode} vNode
17
- * @param {Object} matcher
18
- * @returns {Boolean}
19
- */
20
- function semanticRole(vNode, matcher) {
21
- return fromPrimative(getRole(vNode), matcher);
22
- }
23
-
24
- export default semanticRole;
@@ -1,14 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Return a list of aria roles whose type matches the provided value.
5
- * @param {String} type The desired role type
6
- * @return {String[]} List of all roles matching the type
7
- */
8
- function getAriaRolesByType(type) {
9
- return Object.keys(standards.ariaRoles).filter(roleName => {
10
- return standards.ariaRoles[roleName].type === type;
11
- });
12
- }
13
-
14
- export default getAriaRolesByType;
@@ -1,22 +0,0 @@
1
- import cache from '../../core/base/cache';
2
- import standards from '../../standards';
3
-
4
- /**
5
- * Return a list of aria roles which are name from content.
6
- * @return {String[]} List of all roles with name from content
7
- */
8
- function getAriaRolesSupportingNameFromContent() {
9
- if (cache.get('ariaRolesNameFromContent')) {
10
- return cache.get('ariaRolesNameFromContent');
11
- }
12
-
13
- const contentRoles = Object.keys(standards.ariaRoles).filter(roleName => {
14
- return standards.ariaRoles[roleName].nameFromContent;
15
- });
16
-
17
- cache.set('ariaRolesNameFromContent', contentRoles);
18
-
19
- return contentRoles;
20
- }
21
-
22
- export default getAriaRolesSupportingNameFromContent;
@@ -1,54 +0,0 @@
1
- import standards from '../../standards';
2
- import matchesFn from '../../commons/matches';
3
-
4
- /**
5
- * Return the spec for an HTML element from the standards object. Since the spec is determined by the node and what attributes it has, a node is required.
6
- * @param {VirtualNode} vNode The VirtualNode to get the spec for.
7
- * @return {Object} The standard spec object
8
- */
9
- function getElementSpec(vNode) {
10
- const standard = standards.htmlElms[vNode.props.nodeName];
11
-
12
- // invalid element name (could be an svg or custom element name)
13
- if (!standard) {
14
- return {};
15
- }
16
-
17
- if (!standard.variant) {
18
- return standard;
19
- }
20
-
21
- // start with the information at the top level
22
- const { variant, ...spec } = standard;
23
-
24
- // loop through all variants (excluding default) finding anything
25
- // that matches
26
- for (const variantName in variant) {
27
- if (!variant.hasOwnProperty(variantName) || variantName === 'default') {
28
- continue;
29
- }
30
-
31
- const { matches, ...props } = variant[variantName];
32
- if (matchesFn(vNode, matches)) {
33
- for (const propName in props) {
34
- if (props.hasOwnProperty(propName)) {
35
- spec[propName] = props[propName];
36
- }
37
- }
38
- }
39
- }
40
-
41
- // apply defaults if properties were not found
42
- for (const propName in variant.default) {
43
- if (
44
- variant.default.hasOwnProperty(propName) &&
45
- typeof spec[propName] === 'undefined'
46
- ) {
47
- spec[propName] = variant.default[propName];
48
- }
49
- }
50
-
51
- return spec;
52
- }
53
-
54
- export default getElementSpec;
@@ -1,30 +0,0 @@
1
- import standards from '../../standards';
2
-
3
- /**
4
- * Return a list of html elements whose content type matches the provided value. Note: this will not work for 'interactive' content types as those depend on the element.
5
- * @param {String} type The desired content type
6
- * @return {String[]} List of all elements matching the type
7
- */
8
- function getElementsByContentType(type) {
9
- return Object.keys(standards.htmlElms).filter(nodeName => {
10
- const elm = standards.htmlElms[nodeName];
11
-
12
- if (elm.contentTypes) {
13
- return elm.contentTypes.includes(type);
14
- }
15
-
16
- // some elements do not have content types
17
- if (!elm.variant) {
18
- return false;
19
- }
20
-
21
- if (elm.variant.default && elm.variant.default.contentTypes) {
22
- return elm.variant.default.contentTypes.includes(type);
23
- }
24
-
25
- // content type depends on a virtual node
26
- return false;
27
- });
28
- }
29
-
30
- export default getElementsByContentType;
@@ -1,22 +0,0 @@
1
- import cache from '../../core/base/cache';
2
- import standards from '../../standards';
3
-
4
- /**
5
- * Return a list of global aria attributes.
6
- * @return {String[]} List of all global aria attributes
7
- */
8
- function getGlobalAriaAttrs() {
9
- if (cache.get('globalAriaAttrs')) {
10
- return cache.get('globalAriaAttrs');
11
- }
12
-
13
- const globalAttrs = Object.keys(standards.ariaAttrs).filter(attrName => {
14
- return standards.ariaAttrs[attrName].global;
15
- });
16
-
17
- cache.set('globalAriaAttrs', globalAttrs);
18
-
19
- return globalAttrs;
20
- }
21
-
22
- export default getGlobalAriaAttrs;
@@ -1,186 +0,0 @@
1
- // Source: https://www.w3.org/TR/html-aam-1.0/#element-mapping-table
2
- // Source: https://www.w3.org/TR/html-aria/
3
- import getElementsByContentType from './get-elements-by-content-type';
4
- import getGlobalAriaAttrs from './get-global-aria-attrs';
5
- import arialabelledbyText from '../aria/arialabelledby-text';
6
- import arialabelText from '../aria/arialabel-text';
7
- import idrefs from '../dom/idrefs';
8
- import isColumnHeader from '../table/is-column-header';
9
- import isRowHeader from '../table/is-row-header';
10
- import sanitize from '../text/sanitize';
11
- import isFocusable from '../dom/is-focusable';
12
- import { closest } from '../../core/utils';
13
- import getExplicitRole from '../aria/get-explicit-role';
14
-
15
- const sectioningElementSelector =
16
- getElementsByContentType('sectioning')
17
- .map(nodeName => `${nodeName}:not([role])`)
18
- .join(', ') +
19
- ' , main:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]';
20
-
21
- // sectioning elements only have an accessible name if the
22
- // aria-label, aria-labelledby, or title attribute has valid
23
- // content.
24
- // can't go through the normal accessible name computation
25
- // as it leads into an infinite loop of asking for the role
26
- // of the element while the implicit role needs the name.
27
- // Source: https://www.w3.org/TR/html-aam-1.0/#section-and-grouping-element-accessible-name-computation
28
- //
29
- // form elements also follow this same pattern although not
30
- // specifically called out in the spec like section elements
31
- // (per Scott O'Hara)
32
- // Source: https://web-a11y.slack.com/archives/C042TSFGN/p1590607895241100?thread_ts=1590602189.217800&cid=C042TSFGN
33
- function hasAccessibleName(vNode) {
34
- // testing for when browsers give a <section> a region role:
35
- // chrome - always a region role
36
- // firefox - if non-empty aria-labelledby, aria-label, or title
37
- // safari - if non-empty aria-lablledby or aria-label
38
- //
39
- // we will go with safaris implantation as it is the least common
40
- // denominator
41
- const ariaLabelledby = sanitize(arialabelledbyText(vNode));
42
- const ariaLabel = sanitize(arialabelText(vNode));
43
-
44
- return !!(ariaLabelledby || ariaLabel);
45
- }
46
-
47
- const implicitHtmlRoles = {
48
- a: vNode => {
49
- return vNode.hasAttr('href') ? 'link' : null;
50
- },
51
- area: vNode => {
52
- return vNode.hasAttr('href') ? 'link' : null;
53
- },
54
- article: 'article',
55
- aside: 'complementary',
56
- body: 'document',
57
- button: 'button',
58
- datalist: 'listbox',
59
- dd: 'definition',
60
- dfn: 'term',
61
- details: 'group',
62
- dialog: 'dialog',
63
- dt: 'term',
64
- fieldset: 'group',
65
- figure: 'figure',
66
- footer: vNode => {
67
- const sectioningElement = closest(vNode, sectioningElementSelector);
68
-
69
- return !sectioningElement ? 'contentinfo' : null;
70
- },
71
- form: vNode => {
72
- return hasAccessibleName(vNode) ? 'form' : null;
73
- },
74
- h1: 'heading',
75
- h2: 'heading',
76
- h3: 'heading',
77
- h4: 'heading',
78
- h5: 'heading',
79
- h6: 'heading',
80
- header: vNode => {
81
- const sectioningElement = closest(vNode, sectioningElementSelector);
82
-
83
- return !sectioningElement ? 'banner' : null;
84
- },
85
- hr: 'separator',
86
- img: vNode => {
87
- // an images role is considered implicitly presentation if the
88
- // alt attribute is empty. But that shouldn't be the case if it
89
- // has global aria attributes or is focusable, so we need to
90
- // override the role back to `img`
91
- // e.g. <img alt="" aria-label="foo"></img>
92
- const emptyAlt = vNode.hasAttr('alt') && !vNode.attr('alt');
93
- const hasGlobalAria = getGlobalAriaAttrs().find(attr =>
94
- vNode.hasAttr(attr)
95
- );
96
-
97
- return emptyAlt && !hasGlobalAria && !isFocusable(vNode)
98
- ? 'presentation'
99
- : 'img';
100
- },
101
- input: vNode => {
102
- // Source: https://www.w3.org/TR/html52/sec-forms.html#suggestions-source-element
103
- let suggestionsSourceElement;
104
- if (vNode.hasAttr('list')) {
105
- const listElement = idrefs(vNode.actualNode, 'list').filter(
106
- node => !!node
107
- )[0];
108
- suggestionsSourceElement =
109
- listElement && listElement.nodeName.toLowerCase() === 'datalist';
110
- }
111
-
112
- switch (vNode.props.type) {
113
- case 'checkbox':
114
- return 'checkbox';
115
- case 'number':
116
- return 'spinbutton';
117
- case 'radio':
118
- return 'radio';
119
- case 'range':
120
- return 'slider';
121
- case 'search':
122
- return !suggestionsSourceElement ? 'searchbox' : 'combobox';
123
-
124
- case 'button':
125
- case 'image':
126
- case 'reset':
127
- case 'submit':
128
- return 'button';
129
-
130
- case 'text':
131
- case 'tel':
132
- case 'url':
133
- case 'email':
134
- case '':
135
- return !suggestionsSourceElement ? 'textbox' : 'combobox';
136
-
137
- default:
138
- return 'textbox';
139
- }
140
- },
141
- // Note: if an li (or some other elms) do not have a required
142
- // parent, Firefox ignores the implicit semantic role and treats
143
- // it as a generic text.
144
- li: 'listitem',
145
- main: 'main',
146
- math: 'math',
147
- menu: 'list',
148
- nav: 'navigation',
149
- ol: 'list',
150
- optgroup: 'group',
151
- option: 'option',
152
- output: 'status',
153
- progress: 'progressbar',
154
- section: vNode => {
155
- return hasAccessibleName(vNode) ? 'region' : null;
156
- },
157
- select: vNode => {
158
- return vNode.hasAttr('multiple') || parseInt(vNode.attr('size')) > 1
159
- ? 'listbox'
160
- : 'combobox';
161
- },
162
- summary: 'button',
163
- table: 'table',
164
- tbody: 'rowgroup',
165
- td: vNode => {
166
- const table = closest(vNode, 'table');
167
- const role = getExplicitRole(table);
168
-
169
- return ['grid', 'treegrid'].includes(role) ? 'gridcell' : 'cell';
170
- },
171
- textarea: 'textbox',
172
- tfoot: 'rowgroup',
173
- th: vNode => {
174
- if (isColumnHeader(vNode.actualNode)) {
175
- return 'columnheader';
176
- }
177
- if (isRowHeader(vNode.actualNode)) {
178
- return 'rowheader';
179
- }
180
- },
181
- thead: 'rowgroup',
182
- tr: 'row',
183
- ul: 'list'
184
- };
185
-
186
- export default implicitHtmlRoles;
@@ -1,11 +0,0 @@
1
- /**
2
- * Namespace for standards-related utilities.
3
- * @namespace commons.standards
4
- * @memberof axe
5
- */
6
- export { default as getAriaRolesByType } from './get-aria-roles-by-type';
7
- export { default as getAriaRolesSupportingNameFromContent } from './get-aria-roles-supporting-name-from-content';
8
- export { default as getGlobalAriaAttrs } from './get-global-aria-attrs';
9
- export { default as getElementSpec } from './get-element-spec';
10
- export { default as getElementsByContentType } from './get-elements-by-content-type';
11
- export { default as implicitHtmlRoles } from './implicit-html-roles';
@@ -1,28 +0,0 @@
1
- /**
2
- * Returns all cells contained in given HTMLTableElement
3
- * @method getAllCells
4
- * @memberof axe.commons.table
5
- * @instance
6
- * @param {HTMLTableElement} tableElm Table Element to get cells from
7
- * @return {Array<HTMLTableCellElement>}
8
- */
9
- function getAllCells(tableElm) {
10
- var rowIndex, cellIndex, rowLength, cellLength;
11
- var cells = [];
12
- for (
13
- rowIndex = 0, rowLength = tableElm.rows.length;
14
- rowIndex < rowLength;
15
- rowIndex++
16
- ) {
17
- for (
18
- cellIndex = 0, cellLength = tableElm.rows[rowIndex].cells.length;
19
- cellIndex < cellLength;
20
- cellIndex++
21
- ) {
22
- cells.push(tableElm.rows[rowIndex].cells[cellIndex]);
23
- }
24
- }
25
- return cells;
26
- }
27
-
28
- export default getAllCells;
@@ -1,32 +0,0 @@
1
- import toGrid from './to-grid';
2
- import findUp from '../dom/find-up';
3
- import { memoize } from '../../core/utils';
4
-
5
- /**
6
- * Get the x, y coordinates of a table cell; normalized for rowspan and colspan
7
- * @method getCellPosition
8
- * @memberof axe.commons.table
9
- * @instance
10
- * @param {HTMLTableCellElement} cell The table cell of which to get the position
11
- * @return {Object} Object with `x` and `y` properties of the coordinates
12
- */
13
- function getCellPosition(cell, tableGrid) {
14
- var rowIndex, index;
15
- if (!tableGrid) {
16
- tableGrid = toGrid(findUp(cell, 'table'));
17
- }
18
-
19
- for (rowIndex = 0; rowIndex < tableGrid.length; rowIndex++) {
20
- if (tableGrid[rowIndex]) {
21
- index = tableGrid[rowIndex].indexOf(cell);
22
- if (index !== -1) {
23
- return {
24
- x: index,
25
- y: rowIndex
26
- };
27
- }
28
- }
29
- }
30
- }
31
-
32
- export default memoize(getCellPosition);