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,214 +0,0 @@
1
- import sanitize from './sanitize';
2
- import hasUnicode from './has-unicode';
3
- import cache from '../../core/base/cache';
4
-
5
- /**
6
- * Determines if a given text node is an icon ligature
7
- *
8
- * @method isIconLigature
9
- * @memberof axe.commons.text
10
- * @instance
11
- * @param {VirtualNode} textVNode The virtual text node
12
- * @param {Number} occuranceThreshold Number of times the font is encountered before auto-assigning the font as a ligature or not
13
- * @param {Number} differenceThreshold Percent of differences in pixel data or pixel width needed to determine if a font is a ligature font
14
- * @return {Boolean}
15
- */
16
- function isIconLigature(
17
- textVNode,
18
- differenceThreshold = 0.15,
19
- occuranceThreshold = 3
20
- ) {
21
- /**
22
- * Determine if the visible text is a ligature by comparing the
23
- * first letters image data to the entire strings image data.
24
- * If the two images are significantly different (typical set to 5%
25
- * statistical significance, but we'll be using a slightly higher value
26
- * of 15% to help keep the size of the canvas down) then we know the text
27
- * has been replaced by a ligature.
28
- *
29
- * Example:
30
- * If a text node was the string "File", looking at just the first
31
- * letter "F" would produce the following image:
32
- *
33
- * ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
34
- * │ │ │█│█│█│█│█│█│█│█│█│█│█│ │ │
35
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
36
- * │ │ │█│█│█│█│█│█│█│█│█│█│█│ │ │
37
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
38
- * │ │ │█│█│ │ │ │ │ │ │ │ │ │ │ │
39
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
40
- * │ │ │█│█│ │ │ │ │ │ │ │ │ │ │ │
41
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
42
- * │ │ │█│█│█│█│█│█│█│ │ │ │ │ │ │
43
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
44
- * │ │ │█│█│█│█│█│█│█│ │ │ │ │ │ │
45
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
46
- * │ │ │█│█│ │ │ │ │ │ │ │ │ │ │ │
47
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
48
- * │ │ │█│█│ │ │ │ │ │ │ │ │ │ │ │
49
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
50
- * │ │ │█│█│ │ │ │ │ │ │ │ │ │ │ │
51
- * └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
52
- *
53
- * But if the entire string "File" produced an image which had at least
54
- * a 15% difference in pixels, we would know that the string was replaced
55
- * by a ligature:
56
- *
57
- * ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
58
- * │ │█│█│█│█│█│█│█│█│█│█│ │ │ │ │
59
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
60
- * │ │█│ │ │ │ │ │ │ │ │█│█│ │ │ │
61
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
62
- * │ │█│ │█│█│█│█│█│█│ │█│ │█│ │ │
63
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
64
- * │ │█│ │ │ │ │ │ │ │ │█│█│█│█│ │
65
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
66
- * │ │█│ │█│█│█│█│█│█│ │ │ │ │█│ │
67
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
68
- * │ │█│ │ │ │ │ │ │ │ │ │ │ │█│ │
69
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
70
- * │ │█│ │█│█│█│█│█│█│█│█│█│ │█│ │
71
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
72
- * │ │█│ │ │ │ │ │ │ │ │ │ │ │█│ │
73
- * ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
74
- * │ │█│█│█│█│█│█│█│█│█│█│█│█│█│ │
75
- * └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
76
- */
77
- const nodeValue = textVNode.actualNode.nodeValue.trim();
78
-
79
- // text with unicode or non-bmp letters cannot be ligature icons
80
- if (
81
- !sanitize(nodeValue) ||
82
- hasUnicode(nodeValue, { emoji: true, nonBmp: true })
83
- ) {
84
- return false;
85
- }
86
-
87
- if (!cache.get('canvasContext')) {
88
- cache.set(
89
- 'canvasContext',
90
- document.createElement('canvas').getContext('2d')
91
- );
92
- }
93
- const canvasContext = cache.get('canvasContext');
94
- const canvas = canvasContext.canvas;
95
-
96
- // keep track of each font encountered and the number of times it shows up
97
- // as a ligature.
98
- if (!cache.get('fonts')) {
99
- cache.set('fonts', {});
100
- }
101
- const fonts = cache.get('fonts');
102
-
103
- const style = window.getComputedStyle(textVNode.parent.actualNode);
104
- const fontFamily = style.getPropertyValue('font-family');
105
-
106
- if (!fonts[fontFamily]) {
107
- fonts[fontFamily] = {
108
- occurances: 0,
109
- numLigatures: 0
110
- };
111
- }
112
- const font = fonts[fontFamily];
113
-
114
- // improve the performance by only comparing the image data of a font
115
- // a certain number of times
116
- if (font.occurances >= occuranceThreshold) {
117
- // if the font has always been a ligature assume it's a ligature font
118
- if (font.numLigatures / font.occurances === 1) {
119
- return true;
120
- }
121
- // inversely, if it's never been a ligature assume it's not a ligature font
122
- else if (font.numLigatures === 0) {
123
- return false;
124
- }
125
-
126
- // we could theoretically get into an odd middle ground scenario in which
127
- // the font family is being used as normal text sometimes and as icons
128
- // other times. in these cases we would need to always check the text
129
- // to know if it's an icon or not
130
- }
131
- font.occurances++;
132
-
133
- // 30px was chosen to account for common ligatures in normal fonts
134
- // such as fi, ff, ffi. If a ligature would add a single column of
135
- // pixels to a 30x30 grid, it would not meet the statistical significance
136
- // threshold of 15% (30x30 = 900; 30/900 = 3.333%). this also allows for
137
- // more than 1 column differences (60/900 = 6.666%) and things like
138
- // extending the top of the f in the fi ligature.
139
- let fontSize = 30;
140
- let fontStyle = `${fontSize}px ${fontFamily}`;
141
-
142
- // set the size of the canvas to the width of the first letter
143
- canvasContext.font = fontStyle;
144
- const firstChar = nodeValue.charAt(0);
145
- let width = canvasContext.measureText(firstChar).width;
146
-
147
- // ensure font meets the 30px width requirement (30px font-size doesn't
148
- // necessarily mean its 30px wide when drawn)
149
- if (width < 30) {
150
- const diff = 30 / width;
151
- width *= diff;
152
- fontSize *= diff;
153
- fontStyle = `${fontSize}px ${fontFamily}`;
154
- }
155
- canvas.width = width;
156
- canvas.height = fontSize;
157
-
158
- // changing the dimensions of a canvas resets all properties (include font)
159
- // and clears it
160
- canvasContext.font = fontStyle;
161
- canvasContext.textAlign = 'left';
162
- canvasContext.textBaseline = 'top';
163
- canvasContext.fillText(firstChar, 0, 0);
164
- const compareData = new Uint32Array(
165
- canvasContext.getImageData(0, 0, width, fontSize).data.buffer
166
- );
167
-
168
- // if the font doesn't even have character data for a single char then
169
- // it has to be an icon ligature (e.g. Material Icon)
170
- if (!compareData.some(pixel => pixel)) {
171
- font.numLigatures++;
172
- return true;
173
- }
174
-
175
- canvasContext.clearRect(0, 0, width, fontSize);
176
- canvasContext.fillText(nodeValue, 0, 0);
177
- const compareWith = new Uint32Array(
178
- canvasContext.getImageData(0, 0, width, fontSize).data.buffer
179
- );
180
-
181
- // calculate the number of differences between the first letter and the
182
- // entire string, ignoring color differences
183
- const differences = compareData.reduce((diff, pixel, i) => {
184
- if (pixel === 0 && compareWith[i] === 0) {
185
- return diff;
186
- }
187
- if (pixel !== 0 && compareWith[i] !== 0) {
188
- return diff;
189
- }
190
- return ++diff;
191
- }, 0);
192
-
193
- // calculate the difference between the width of each character and the
194
- // combined with of all characters
195
- const expectedWidth = nodeValue.split('').reduce((width, char) => {
196
- return width + canvasContext.measureText(char).width;
197
- }, 0);
198
- const actualWidth = canvasContext.measureText(nodeValue).width;
199
-
200
- const pixelDifference = differences / compareData.length;
201
- const sizeDifference = 1 - actualWidth / expectedWidth;
202
-
203
- if (
204
- pixelDifference >= differenceThreshold &&
205
- sizeDifference >= differenceThreshold
206
- ) {
207
- font.numLigatures++;
208
- return true;
209
- }
210
-
211
- return false;
212
- }
213
-
214
- export default isIconLigature;
@@ -1,118 +0,0 @@
1
- export const autocomplete = {
2
- stateTerms: ['on', 'off'],
3
- standaloneTerms: [
4
- 'name',
5
- 'honorific-prefix',
6
- 'given-name',
7
- 'additional-name',
8
- 'family-name',
9
- 'honorific-suffix',
10
- 'nickname',
11
- 'username',
12
- 'new-password',
13
- 'current-password',
14
- 'organization-title',
15
- 'organization',
16
- 'street-address',
17
- 'address-line1',
18
- 'address-line2',
19
- 'address-line3',
20
- 'address-level4',
21
- 'address-level3',
22
- 'address-level2',
23
- 'address-level1',
24
- 'country',
25
- 'country-name',
26
- 'postal-code',
27
- 'cc-name',
28
- 'cc-given-name',
29
- 'cc-additional-name',
30
- 'cc-family-name',
31
- 'cc-number',
32
- 'cc-exp',
33
- 'cc-exp-month',
34
- 'cc-exp-year',
35
- 'cc-csc',
36
- 'cc-type',
37
- 'transaction-currency',
38
- 'transaction-amount',
39
- 'language',
40
- 'bday',
41
- 'bday-day',
42
- 'bday-month',
43
- 'bday-year',
44
- 'sex',
45
- 'url',
46
- 'photo',
47
- 'one-time-code'
48
- ],
49
- qualifiers: ['home', 'work', 'mobile', 'fax', 'pager'],
50
- qualifiedTerms: [
51
- 'tel',
52
- 'tel-country-code',
53
- 'tel-national',
54
- 'tel-area-code',
55
- 'tel-local',
56
- 'tel-local-prefix',
57
- 'tel-local-suffix',
58
- 'tel-extension',
59
- 'email',
60
- 'impp'
61
- ],
62
- locations: ['billing', 'shipping']
63
- };
64
-
65
- function isValidAutocomplete(
66
- autocompleteValue,
67
- {
68
- looseTyped = false,
69
- stateTerms = [],
70
- locations = [],
71
- qualifiers = [],
72
- standaloneTerms = [],
73
- qualifiedTerms = []
74
- } = {}
75
- ) {
76
- autocompleteValue = autocompleteValue.toLowerCase().trim();
77
- stateTerms = stateTerms.concat(autocomplete.stateTerms);
78
- if (stateTerms.includes(autocompleteValue) || autocompleteValue === '') {
79
- return true;
80
- }
81
-
82
- qualifiers = qualifiers.concat(autocomplete.qualifiers);
83
- locations = locations.concat(autocomplete.locations);
84
- standaloneTerms = standaloneTerms.concat(autocomplete.standaloneTerms);
85
- qualifiedTerms = qualifiedTerms.concat(autocomplete.qualifiedTerms);
86
-
87
- const autocompleteTerms = autocompleteValue.split(/\s+/g);
88
- if (!looseTyped) {
89
- if (
90
- autocompleteTerms[0].length > 8 &&
91
- autocompleteTerms[0].substr(0, 8) === 'section-'
92
- ) {
93
- autocompleteTerms.shift();
94
- }
95
-
96
- if (locations.includes(autocompleteTerms[0])) {
97
- autocompleteTerms.shift();
98
- }
99
-
100
- if (qualifiers.includes(autocompleteTerms[0])) {
101
- autocompleteTerms.shift();
102
- // only quantifiers allowed at this point
103
- standaloneTerms = [];
104
- }
105
-
106
- if (autocompleteTerms.length !== 1) {
107
- return false;
108
- }
109
- }
110
-
111
- const purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];
112
- return (
113
- standaloneTerms.includes(purposeTerm) ||
114
- qualifiedTerms.includes(purposeTerm)
115
- );
116
- }
117
-
118
- export default isValidAutocomplete;
@@ -1,70 +0,0 @@
1
- import accessibleTextVirtual from './accessible-text-virtual';
2
- import accessibleText from './accessible-text';
3
- import findElmsInContext from '../dom/find-elms-in-context';
4
- import { closest, nodeSorter } from '../../core/utils';
5
-
6
- /**
7
- * Return accessible text for an implicit and/or explicit HTML label element
8
- * @param {VirtualNode} element
9
- * @param {Object} context
10
- * @property {Bool} inControlContext
11
- * @property {Bool} inLabelledByContext
12
- * @return {String} Label text
13
- */
14
- function labelText(virtualNode, context = {}) {
15
- const { alreadyProcessed } = accessibleTextVirtual;
16
- if (
17
- context.inControlContext ||
18
- context.inLabelledByContext ||
19
- alreadyProcessed(virtualNode, context)
20
- ) {
21
- return '';
22
- }
23
- if (!context.startNode) {
24
- context.startNode = virtualNode;
25
- }
26
-
27
- const labelContext = { inControlContext: true, ...context };
28
- const explicitLabels = getExplicitLabels(virtualNode);
29
- const implicitLabel = closest(virtualNode, 'label');
30
-
31
- let labels;
32
- if (implicitLabel) {
33
- labels = [...explicitLabels, implicitLabel.actualNode];
34
- labels.sort(nodeSorter);
35
- } else {
36
- labels = explicitLabels;
37
- }
38
-
39
- return labels
40
- .map(label => accessibleText(label, labelContext))
41
- .filter(text => text !== '')
42
- .join(' ');
43
- }
44
-
45
- /**
46
- * Find a non-ARIA label for an element
47
- * @private
48
- * @param {VirtualNode} element The VirtualNode instance whose label we are seeking
49
- * @return {HTMLElement} The label element, or null if none is found
50
- */
51
- function getExplicitLabels(virtualNode) {
52
- if (!virtualNode.attr('id')) {
53
- return [];
54
- }
55
-
56
- if (!virtualNode.actualNode) {
57
- throw new TypeError(
58
- 'Cannot resolve explicit label reference for non-DOM nodes'
59
- );
60
- }
61
-
62
- return findElmsInContext({
63
- elm: 'label',
64
- attr: 'for',
65
- value: virtualNode.attr('id'),
66
- context: virtualNode.actualNode
67
- });
68
- }
69
-
70
- export default labelText;
@@ -1,50 +0,0 @@
1
- import ariaLabelVirtual from '../aria/label-virtual';
2
- import visible from './visible';
3
- import visibleVirtual from './visible-virtual';
4
- import getRootNode from '../dom/get-root-node';
5
- import { closest, escapeSelector } from '../../core/utils';
6
-
7
- /**
8
- * Gets the visible text of a label for a given input
9
- * @see http://www.w3.org/WAI/PF/aria/roles#namecalculation
10
- * @method labelVirtual
11
- * @memberof axe.commons.text
12
- * @instance
13
- * @param {VirtualNode} node The virtual node mapping to the input to test
14
- * @return {Mixed} String of visible text, or `null` if no label is found
15
- */
16
- function labelVirtual(virtualNode) {
17
- var ref, candidate, doc;
18
-
19
- candidate = ariaLabelVirtual(virtualNode);
20
- if (candidate) {
21
- return candidate;
22
- }
23
-
24
- // explicit label
25
- if (virtualNode.attr('id')) {
26
- if (!virtualNode.actualNode) {
27
- throw new TypeError(
28
- 'Cannot resolve explicit label reference for non-DOM nodes'
29
- );
30
- }
31
-
32
- const id = escapeSelector(virtualNode.attr('id'));
33
- doc = getRootNode(virtualNode.actualNode);
34
- ref = doc.querySelector('label[for="' + id + '"]');
35
- candidate = ref && visible(ref, true);
36
- if (candidate) {
37
- return candidate;
38
- }
39
- }
40
-
41
- ref = closest(virtualNode, 'label');
42
- candidate = ref && visibleVirtual(ref, true);
43
- if (candidate) {
44
- return candidate;
45
- }
46
-
47
- return null;
48
- }
49
-
50
- export default labelVirtual;
@@ -1,19 +0,0 @@
1
- import labelVirtual from './label-virtual';
2
- import { getNodeFromTree } from '../../core/utils';
3
-
4
- /**
5
- * Finds virtual node and calls labelVirtual()
6
- * IMPORTANT: This method requires the composed tree at axe._tree
7
- * @see axe.commons.text.virtualLabel
8
- * @method label
9
- * @memberof axe.commons.text
10
- * @instance
11
- * @param {Element} node The virtual node mapping to the input to test
12
- * @return {Mixed} String of visible text, or `null` if no label is found
13
- */
14
- function label(node) {
15
- node = getNodeFromTree(node);
16
- return labelVirtual(node);
17
- }
18
-
19
- export default label;
@@ -1,101 +0,0 @@
1
- const nativeElementType = [
2
- {
3
- // 5.1 input type="text", input type="password", input type="search", input type="tel", input type="url" and textarea Element
4
- matches: [
5
- {
6
- nodeName: 'textarea'
7
- },
8
- {
9
- nodeName: 'input',
10
- properties: {
11
- type: ['text', 'password', 'search', 'tel', 'email', 'url']
12
- }
13
- }
14
- ],
15
- namingMethods: 'labelText'
16
- },
17
- {
18
- // 5.2 input type="button", input type="submit" and input type="reset"
19
- matches: {
20
- nodeName: 'input',
21
- properties: {
22
- type: ['button', 'submit', 'reset']
23
- }
24
- },
25
- namingMethods: ['valueText', 'titleText', 'buttonDefaultText']
26
- },
27
- {
28
- // 5.3 input type="image"
29
- matches: {
30
- nodeName: 'input',
31
- properties: {
32
- type: 'image'
33
- }
34
- },
35
- namingMethods: [
36
- 'altText',
37
- 'valueText',
38
- 'labelText',
39
- 'titleText',
40
- 'buttonDefaultText'
41
- ]
42
- },
43
- {
44
- // 5.4 button Element
45
- matches: 'button',
46
- namingMethods: 'subtreeText'
47
- },
48
- {
49
- // 5.5 fieldset and legend Elements
50
- matches: 'fieldset',
51
- namingMethods: 'fieldsetLegendText'
52
- },
53
- {
54
- // 5.6 output Element
55
- matches: 'OUTPUT',
56
- namingMethods: 'subtreeText'
57
- },
58
- {
59
- // 5.7 Other Form Elements
60
- matches: [
61
- {
62
- nodeName: 'select'
63
- },
64
- {
65
- nodeName: 'input',
66
- properties: {
67
- // Regex: Everything other than these
68
- type: /^(?!text|password|search|tel|email|url|button|submit|reset)/
69
- }
70
- }
71
- ],
72
- namingMethods: 'labelText'
73
- },
74
- {
75
- // 5.8 summary Element
76
- matches: 'summary',
77
- namingMethods: 'subtreeText'
78
- },
79
- {
80
- // 5.9 figure and figcaption Elements
81
- matches: 'figure',
82
- namingMethods: ['figureText', 'titleText']
83
- },
84
- {
85
- // 5.10 img Element
86
- matches: 'img',
87
- namingMethods: 'altText'
88
- },
89
- {
90
- // 5.11 table Element
91
- matches: 'table',
92
- namingMethods: ['tableCaptionText', 'tableSummaryText']
93
- },
94
- {
95
- matches: ['hr', 'br'],
96
- namingMethods: ['titleText', 'singleSpace']
97
- }
98
- // All else defaults to just title
99
- ];
100
-
101
- export default nativeElementType;
@@ -1,46 +0,0 @@
1
- import getRole from '../aria/get-role';
2
- import getElementSpec from '../standards/get-element-spec';
3
- import nativeTextMethods from './native-text-methods';
4
-
5
- /**
6
- * Get the accessible text using native HTML methods only
7
- * @param {VirtualNode} element
8
- * @param {Object} context
9
- * @property {Bool} debug Enable logging for formControlValue
10
- * @return {String} Accessible text
11
- */
12
- function nativeTextAlternative(virtualNode, context = {}) {
13
- const { actualNode } = virtualNode;
14
- if (
15
- virtualNode.props.nodeType !== 1 ||
16
- ['presentation', 'none'].includes(getRole(virtualNode))
17
- ) {
18
- return '';
19
- }
20
-
21
- const textMethods = findTextMethods(virtualNode);
22
- // Find the first step that returns a non-empty string
23
- const accName = textMethods.reduce((accName, step) => {
24
- return accName || step(virtualNode, context);
25
- }, '');
26
-
27
- if (context.debug) {
28
- axe.log(accName || '{empty-value}', actualNode, context);
29
- }
30
- return accName;
31
- }
32
-
33
- /**
34
- * Get accessible text functions for a specific native HTML element
35
- * @private
36
- * @param {VirtualNode} element
37
- * @return {Function[]} Array of native accessible name computation methods
38
- */
39
- function findTextMethods(virtualNode) {
40
- const elmSpec = getElementSpec(virtualNode);
41
- const methods = elmSpec.namingMethods || [];
42
-
43
- return methods.map(methodName => nativeTextMethods[methodName]);
44
- }
45
-
46
- export default nativeTextAlternative;