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,143 +0,0 @@
1
- /* eslint no-script-url:0 */
2
- /**
3
- * Check if a string contains mostly numbers
4
- */
5
- function isMostlyNumbers(str = '') {
6
- return (
7
- str.length !== 0 && (str.match(/[0-9]/g) || '').length >= str.length / 2
8
- );
9
- }
10
-
11
- /**
12
- * Spit a string into an array with two pieces, at a given index
13
- * @param String string to split
14
- * @param Number index at which to split
15
- * @return Array
16
- */
17
- function splitString(str, splitIndex) {
18
- return [str.substring(0, splitIndex), str.substring(splitIndex)];
19
- }
20
-
21
- function trimRight(str) {
22
- return str.replace(/\s+$/, '');
23
- }
24
-
25
- /**
26
- * Take a relative or absolute URL and pull it into it's indivisual pieces
27
- *
28
- * @param url (string)
29
- * @return urlPieces
30
- * .protocol The protocol used, e.g. 'https://'
31
- * .domain Domain name including sub domains and TLD, e.g. 'docs.deque.com'
32
- * .port The port number, e.g. ':8080'
33
- * .path Path after the domain, e.g. '/home.html'
34
- * .query Query string, e.g. '?user=admin&password=pass'
35
- * .hash Hash / internal reference, e.g. '#footer'
36
- */
37
- function uriParser(url) {
38
- const original = url;
39
- let protocol = '',
40
- domain = '',
41
- port = '',
42
- path = '',
43
- query = '',
44
- hash = '';
45
- if (url.includes('#')) {
46
- [url, hash] = splitString(url, url.indexOf('#'));
47
- }
48
-
49
- if (url.includes('?')) {
50
- [url, query] = splitString(url, url.indexOf('?'));
51
- }
52
-
53
- if (url.includes('://')) {
54
- [protocol, url] = url.split('://');
55
- [domain, url] = splitString(url, url.indexOf('/'));
56
- } else if (url.substr(0, 2) === '//') {
57
- url = url.substr(2);
58
- [domain, url] = splitString(url, url.indexOf('/'));
59
- }
60
-
61
- if (domain.substr(0, 4) === 'www.') {
62
- domain = domain.substr(4);
63
- }
64
-
65
- if (domain && domain.includes(':')) {
66
- [domain, port] = splitString(domain, domain.indexOf(':'));
67
- }
68
-
69
- path = url; // Whatever is left, must be the path
70
- return { original, protocol, domain, port, path, query, hash };
71
- }
72
-
73
- /**
74
- * Try to, at the end of the URI, find a string that a user can identify the URI by
75
- *
76
- * @param uri The URI to use
77
- * @param options
78
- * .currentDomain The current domain name (optional)
79
- * .maxLength Max length of the returned string (default: 25)
80
- * @return string A portion at the end of the uri, no longer than maxLength
81
- */
82
- function getFriendlyUriEnd(uri = '', options = {}) {
83
- if (
84
- // Skip certain URIs:
85
- uri.length <= 1 || // very short
86
- uri.substr(0, 5) === 'data:' || // data URIs are unreadable
87
- uri.substr(0, 11) === 'javascript:' || // JS isn't a URL
88
- uri.includes('?') // query strings aren't very readable either
89
- ) {
90
- return;
91
- }
92
-
93
- const { currentDomain, maxLength = 25 } = options;
94
- const { path, domain, hash } = uriParser(uri);
95
- // Split the path at the last / that has text after it
96
- const pathEnd = path.substr(
97
- path.substr(0, path.length - 2).lastIndexOf('/') + 1
98
- );
99
-
100
- if (hash) {
101
- if (pathEnd && (pathEnd + hash).length <= maxLength) {
102
- return trimRight(pathEnd + hash);
103
- } else if (
104
- pathEnd.length < 2 &&
105
- hash.length > 2 &&
106
- hash.length <= maxLength
107
- ) {
108
- return trimRight(hash);
109
- } else {
110
- return;
111
- }
112
- } else if (domain && domain.length < maxLength && path.length <= 1) {
113
- // '' or '/'
114
- return trimRight(domain + path);
115
- }
116
-
117
- // See if the domain should be returned
118
- if (
119
- path === '/' + pathEnd &&
120
- domain &&
121
- currentDomain &&
122
- domain !== currentDomain &&
123
- (domain + path).length <= maxLength
124
- ) {
125
- return trimRight(domain + path);
126
- }
127
-
128
- const lastDotIndex = pathEnd.lastIndexOf('.');
129
- if (
130
- // Exclude very short or very long string
131
- (lastDotIndex === -1 || lastDotIndex > 1) &&
132
- (lastDotIndex !== -1 || pathEnd.length > 2) &&
133
- pathEnd.length <= maxLength &&
134
- // Exclude index files
135
- !pathEnd.match(/index(\.[a-zA-Z]{2-4})?/) &&
136
- // Exclude files that are likely to be database IDs
137
- !isMostlyNumbers(pathEnd)
138
- ) {
139
- return trimRight(pathEnd);
140
- }
141
- }
142
-
143
- export default getFriendlyUriEnd;
@@ -1,22 +0,0 @@
1
- /**
2
- * Return the list of attributes of a node.
3
- * @method getNodeAttributes
4
- * @memberof axe.utils
5
- * @param {Element} node
6
- * @deprecated
7
- * @returns {NamedNodeMap}
8
- */
9
- function getNodeAttributes(node) {
10
- // eslint-disable-next-line no-restricted-syntax
11
- if (node.attributes instanceof window.NamedNodeMap) {
12
- // eslint-disable-next-line no-restricted-syntax
13
- return node.attributes;
14
- }
15
-
16
- // if the attributes property is not of type NamedNodeMap then the DOM
17
- // has been clobbered. E.g. <form><input name="attributes"></form>.
18
- // We can clone the node to isolate it and then return the attributes
19
- return node.cloneNode(false).attributes;
20
- }
21
-
22
- export default getNodeAttributes;
@@ -1,14 +0,0 @@
1
- import cache from '../base/cache';
2
-
3
- /**
4
- * Return a single node from the virtual dom tree
5
- *
6
- * @param {Object} vNode The flattened, virtual DOM tree
7
- * @param {Node} node The HTML DOM node
8
- */
9
- function getNodeFromTree(vNode, node) {
10
- const el = node || vNode;
11
- return cache.get('nodeMap') ? cache.get('nodeMap').get(el) : null;
12
- }
13
-
14
- export default getNodeFromTree;
@@ -1,17 +0,0 @@
1
- /**
2
- * Return the document or document fragment (shadow DOM)
3
- * @method getRootNode
4
- * @memberof axe.utils
5
- * @param {Element} node
6
- * @returns {DocumentFragment|Document}
7
- */
8
- function getRootNode(node) {
9
- var doc = (node.getRootNode && node.getRootNode()) || document; // this is for backwards compatibility
10
- if (doc === node) {
11
- // disconnected node
12
- doc = document;
13
- }
14
- return doc;
15
- }
16
-
17
- export default getRootNode;
@@ -1,17 +0,0 @@
1
- /**
2
- * Get an axe rule by id.
3
- * @param {String} ruelId the rule id
4
- * @return {Rule}
5
- */
6
- function getRule(ruleId) {
7
- // TODO: es-modules_audit
8
- var rule = axe._audit.rules.find(rule => rule.id === ruleId);
9
-
10
- if (!rule) {
11
- throw new Error(`Cannot find rule by id: ${ruleId}`);
12
- }
13
-
14
- return rule;
15
- }
16
-
17
- export default getRule;
@@ -1,43 +0,0 @@
1
- import getScroll from './get-scroll';
2
-
3
- /**
4
- * Create an array scroll positions from descending elements
5
- */
6
- function getElmScrollRecursive(root) {
7
- // Need to also get .childNodes since SVGs in IE don't have .children.
8
- return Array.from(root.children || root.childNodes || []).reduce(
9
- (scrolls, elm) => {
10
- const scroll = getScroll(elm);
11
- if (scroll) {
12
- scrolls.push(scroll);
13
- }
14
- return scrolls.concat(getElmScrollRecursive(elm));
15
- },
16
- []
17
- );
18
- }
19
-
20
- /**
21
- * Get the scroll position of all scrollable elements in a page
22
- * @deprecated
23
- */
24
- function getScrollState(win = window) {
25
- const root = win.document.documentElement;
26
- const windowScroll = [
27
- win.pageXOffset !== undefined
28
- ? {
29
- elm: win,
30
- top: win.pageYOffset,
31
- left: win.pageXOffset
32
- }
33
- : {
34
- elm: root,
35
- top: root.scrollTop,
36
- left: root.scrollLeft
37
- }
38
- ];
39
-
40
- return windowScroll.concat(getElmScrollRecursive(document.body));
41
- }
42
-
43
- export default getScrollState;
@@ -1,41 +0,0 @@
1
- /**
2
- * Get the scroll position of given element
3
- * @method getScroll
4
- * @memberof axe.utils
5
- * @param {Element} node
6
- * @param {buffer} (Optional) allowed negligence in overflow
7
- * @returns {Object | undefined}
8
- */
9
- function getScroll(elm, buffer = 0) {
10
- const overflowX = elm.scrollWidth > elm.clientWidth + buffer;
11
- const overflowY = elm.scrollHeight > elm.clientHeight + buffer;
12
-
13
- /**
14
- * if there is neither `overflow-x` or `overflow-y`
15
- * -> return
16
- */
17
- if (!(overflowX || overflowY)) {
18
- return;
19
- }
20
-
21
- const style = window.getComputedStyle(elm);
22
- const overflowXStyle = style.getPropertyValue('overflow-x');
23
- const overflowYStyle = style.getPropertyValue('overflow-y');
24
- const scrollableX =
25
- overflowXStyle !== 'visible' && overflowXStyle !== 'hidden';
26
- const scrollableY =
27
- overflowYStyle !== 'visible' && overflowYStyle !== 'hidden';
28
-
29
- /**
30
- * check direction of `overflow` and `scrollable`
31
- */
32
- if ((overflowX && scrollableX) || (overflowY && scrollableY)) {
33
- return {
34
- elm,
35
- top: elm.scrollTop,
36
- left: elm.scrollLeft
37
- };
38
- }
39
- }
40
-
41
- export default getScroll;
@@ -1,395 +0,0 @@
1
- import escapeSelector from './escape-selector';
2
- import getFriendlyUriEnd from './get-friendly-uri-end';
3
- import getNodeAttributes from './get-node-attributes';
4
- import matchesSelector from './element-matches';
5
- import isXHTML from './is-xhtml';
6
- import getShadowSelector from './get-shadow-selector';
7
-
8
- let xhtml;
9
- const ignoredAttributes = [
10
- 'class',
11
- 'style',
12
- 'id',
13
- 'selected',
14
- 'checked',
15
- 'disabled',
16
- 'tabindex',
17
- 'aria-checked',
18
- 'aria-selected',
19
- 'aria-invalid',
20
- 'aria-activedescendant',
21
- 'aria-busy',
22
- 'aria-disabled',
23
- 'aria-expanded',
24
- 'aria-grabbed',
25
- 'aria-pressed',
26
- 'aria-valuenow'
27
- ];
28
- const MAXATTRIBUTELENGTH = 31;
29
-
30
- /**
31
- * get the attribute name and value as a string
32
- * @param {Element} node The element that has the attribute
33
- * @param {Attribute} at The attribute
34
- * @return {String}
35
- */
36
- function getAttributeNameValue(node, at) {
37
- const name = at.name;
38
- let atnv;
39
-
40
- if (name.indexOf('href') !== -1 || name.indexOf('src') !== -1) {
41
- const friendly = getFriendlyUriEnd(node.getAttribute(name));
42
- if (friendly) {
43
- const value = encodeURI(friendly);
44
- if (value) {
45
- atnv = escapeSelector(at.name) + '$="' + escapeSelector(value) + '"';
46
- } else {
47
- return;
48
- }
49
- } else {
50
- atnv =
51
- escapeSelector(at.name) +
52
- '="' +
53
- escapeSelector(node.getAttribute(name)) +
54
- '"';
55
- }
56
- } else {
57
- atnv = escapeSelector(name) + '="' + escapeSelector(at.value) + '"';
58
- }
59
- return atnv;
60
- }
61
-
62
- function countSort(a, b) {
63
- return a.count < b.count ? -1 : a.count === b.count ? 0 : 1;
64
- }
65
-
66
- /**
67
- * Filter the attributes
68
- * @param {Attribute} The potential attribute
69
- * @return {Boolean} Whether to include or exclude
70
- */
71
- function filterAttributes(at) {
72
- return (
73
- !ignoredAttributes.includes(at.name) &&
74
- at.name.indexOf(':') === -1 &&
75
- (!at.value || at.value.length < MAXATTRIBUTELENGTH)
76
- );
77
- }
78
-
79
- /**
80
- * Calculate the statistics for the classes, attributes and tags on the page, using
81
- * the virtual DOM tree
82
- * @param {Object} domTree The root node of the virtual DOM tree
83
- * @returns {Object} The statistics consisting of three maps, one for classes,
84
- * one for tags and one for attributes. The map values are
85
- * the counts for how many elements with that feature exist
86
- */
87
- export function getSelectorData(domTree) {
88
- /* eslint no-loop-func:0*/
89
-
90
- // Initialize the return structure with the three maps
91
- const data = {
92
- classes: {},
93
- tags: {},
94
- attributes: {}
95
- };
96
-
97
- domTree = Array.isArray(domTree) ? domTree : [domTree];
98
- let currentLevel = domTree.slice();
99
- const stack = [];
100
- while (currentLevel.length) {
101
- const current = currentLevel.pop();
102
- const node = current.actualNode;
103
-
104
- if (!!node.querySelectorAll) {
105
- // ignore #text nodes
106
-
107
- // count the tag
108
- const tag = node.nodeName;
109
- if (data.tags[tag]) {
110
- data.tags[tag]++;
111
- } else {
112
- data.tags[tag] = 1;
113
- }
114
-
115
- // count all the classes
116
- if (node.classList) {
117
- Array.from(node.classList).forEach(cl => {
118
- const ind = escapeSelector(cl);
119
- if (data.classes[ind]) {
120
- data.classes[ind]++;
121
- } else {
122
- data.classes[ind] = 1;
123
- }
124
- });
125
- }
126
-
127
- // count all the filtered attributes
128
- if (node.hasAttributes()) {
129
- Array.from(getNodeAttributes(node))
130
- .filter(filterAttributes)
131
- .forEach(at => {
132
- const atnv = getAttributeNameValue(node, at);
133
- if (atnv) {
134
- if (data.attributes[atnv]) {
135
- data.attributes[atnv]++;
136
- } else {
137
- data.attributes[atnv] = 1;
138
- }
139
- }
140
- });
141
- }
142
- }
143
- if (current.children.length) {
144
- // "recurse"
145
- stack.push(currentLevel);
146
- currentLevel = current.children.slice();
147
- }
148
- while (!currentLevel.length && stack.length) {
149
- currentLevel = stack.pop();
150
- }
151
- }
152
- return data;
153
- }
154
-
155
- /**
156
- * Given a node and the statistics on class frequency on the page,
157
- * return all its uncommon class data sorted in order of decreasing uniqueness
158
- * @param {Element} node The node
159
- * @param {Object} classData The map of classes to counts
160
- * @return {Array} The sorted array of uncommon class data
161
- */
162
- function uncommonClasses(node, selectorData) {
163
- // eslint no-loop-func:false
164
- const retVal = [];
165
- const classData = selectorData.classes;
166
- const tagData = selectorData.tags;
167
-
168
- if (node.classList) {
169
- Array.from(node.classList).forEach(cl => {
170
- const ind = escapeSelector(cl);
171
- if (classData[ind] < tagData[node.nodeName]) {
172
- retVal.push({
173
- name: ind,
174
- count: classData[ind],
175
- species: 'class'
176
- });
177
- }
178
- });
179
- }
180
- return retVal.sort(countSort);
181
- }
182
-
183
- /**
184
- * Given an element and a selector that finds that element (but possibly other sibling elements)
185
- * return the :nth-child(n) pseudo selector that uniquely finds the node within its siblings
186
- * @param {Element} elm The Element
187
- * @param {String} selector The selector
188
- * @return {String} The nth-child selector
189
- */
190
- function getNthChildString(elm, selector) {
191
- const siblings =
192
- (elm.parentNode && Array.from(elm.parentNode.children || '')) || [];
193
- const hasMatchingSiblings = siblings.find(
194
- sibling => sibling !== elm && matchesSelector(sibling, selector)
195
- );
196
- if (hasMatchingSiblings) {
197
- const nthChild = 1 + siblings.indexOf(elm);
198
- return ':nth-child(' + nthChild + ')';
199
- } else {
200
- return '';
201
- }
202
- }
203
-
204
- /**
205
- * Get ID selector
206
- */
207
- function getElmId(elm) {
208
- if (!elm.getAttribute('id')) {
209
- return;
210
- }
211
- const doc = (elm.getRootNode && elm.getRootNode()) || document;
212
- const id = '#' + escapeSelector(elm.getAttribute('id') || '');
213
- if (
214
- // Don't include youtube's uid values, they change on reload
215
- !id.match(/player_uid_/) &&
216
- // Don't include IDs that occur more then once on the page
217
- doc.querySelectorAll(id).length === 1
218
- ) {
219
- return id;
220
- }
221
- }
222
-
223
- /**
224
- * Return the base CSS selector for a given element
225
- * @param {HTMLElement} elm The element to get the selector for
226
- * @return {String|Array<String>} Base CSS selector for the node
227
- */
228
- function getBaseSelector(elm) {
229
- if (typeof xhtml === 'undefined') {
230
- xhtml = isXHTML(document);
231
- }
232
- return escapeSelector(xhtml ? elm.localName : elm.nodeName.toLowerCase());
233
- }
234
-
235
- /**
236
- * Given a node and the statistics on attribute frequency on the page,
237
- * return all its uncommon attribute data sorted in order of decreasing uniqueness
238
- * @param {Element} node The node
239
- * @param {Object} attData The map of attributes to counts
240
- * @return {Array} The sorted array of uncommon attribute data
241
- */
242
- function uncommonAttributes(node, selectorData) {
243
- const retVal = [];
244
- const attData = selectorData.attributes;
245
- const tagData = selectorData.tags;
246
-
247
- if (node.hasAttributes()) {
248
- Array.from(getNodeAttributes(node))
249
- .filter(filterAttributes)
250
- .forEach(at => {
251
- const atnv = getAttributeNameValue(node, at);
252
-
253
- if (atnv && attData[atnv] < tagData[node.nodeName]) {
254
- retVal.push({
255
- name: atnv,
256
- count: attData[atnv],
257
- species: 'attribute'
258
- });
259
- }
260
- });
261
- }
262
- return retVal.sort(countSort);
263
- }
264
-
265
- /**
266
- * generates a selector fragment for an element based on the statistics of the page in
267
- * which the element exists. This function takes into account the fact that selectors that
268
- * use classes and tags are much faster than universal selectors. It also tries to use a
269
- * unique class selector before a unique attribute selector (with the tag), followed by
270
- * a selector made up of the three least common features statistically. A feature will
271
- * also only be used if it is less common than the tag of the element itself.
272
- *
273
- * @param {Element} elm The element for which to generate a selector
274
- * @param {Object} options Options for how to generate the selector
275
- * @param {RootNode} doc The root node of the document or document fragment
276
- * @returns {String} The selector
277
- */
278
-
279
- function getThreeLeastCommonFeatures(elm, selectorData) {
280
- let selector = '';
281
- let features;
282
- const clss = uncommonClasses(elm, selectorData);
283
- const atts = uncommonAttributes(elm, selectorData);
284
-
285
- if (clss.length && clss[0].count === 1) {
286
- // only use the unique class
287
- features = [clss[0]];
288
- } else if (atts.length && atts[0].count === 1) {
289
- // only use the unique attribute value
290
- features = [atts[0]];
291
- // if no class, add the tag
292
- selector = getBaseSelector(elm);
293
- } else {
294
- features = clss.concat(atts);
295
- // sort by least common
296
- features.sort(countSort);
297
-
298
- // select three least common features
299
- features = features.slice(0, 3);
300
-
301
- // if no class, add the tag
302
- if (
303
- !features.some(feat => {
304
- return feat.species === 'class';
305
- })
306
- ) {
307
- // has no class
308
- selector = getBaseSelector(elm);
309
- } else {
310
- // put the classes at the front of the selector
311
- features.sort((a, b) => {
312
- return a.species !== b.species && a.species === 'class'
313
- ? -1
314
- : a.species === b.species
315
- ? 0
316
- : 1;
317
- });
318
- }
319
- }
320
-
321
- // construct the return value
322
- return (selector += features.reduce((val, feat) => {
323
- /*eslint indent: 0*/
324
- switch (feat.species) {
325
- case 'class':
326
- return val + '.' + feat.name;
327
- case 'attribute':
328
- return val + '[' + feat.name + ']';
329
- }
330
- return val; // should never happen
331
- }, ''));
332
- }
333
-
334
- /**
335
- * generates a single selector for an element
336
- * @param {Element} elm The element for which to generate a selector
337
- * @param {Object} options Options for how to generate the selector
338
- * @param {RootNode} doc The root node of the document or document fragment
339
- * @returns {String} The selector
340
- */
341
-
342
- function generateSelector(elm, options, doc) {
343
- /*eslint no-loop-func:0*/
344
- // TODO: es-modules_selectorData
345
- if (!axe._selectorData) {
346
- throw new Error('Expect axe._selectorData to be set up');
347
- }
348
- const { toRoot = false } = options;
349
- let selector;
350
- let similar;
351
-
352
- /**
353
- * Try to find a unique selector by filtering out all the clashing
354
- * nodes by adding ancestor selectors iteratively.
355
- * This loop is much faster than recursing and using querySelectorAll
356
- */
357
- do {
358
- let features = getElmId(elm);
359
- if (!features) {
360
- features = getThreeLeastCommonFeatures(elm, axe._selectorData);
361
- features += getNthChildString(elm, features);
362
- }
363
- if (selector) {
364
- selector = features + ' > ' + selector;
365
- } else {
366
- selector = features;
367
- }
368
- if (!similar) {
369
- similar = Array.from(doc.querySelectorAll(selector));
370
- } else {
371
- similar = similar.filter(item => {
372
- return matchesSelector(item, selector);
373
- });
374
- }
375
- elm = elm.parentElement;
376
- } while ((similar.length > 1 || toRoot) && elm && elm.nodeType !== 11);
377
-
378
- if (similar.length === 1) {
379
- return selector;
380
- } else if (selector.indexOf(' > ') !== -1) {
381
- // For the odd case that document doesn't have a unique selector
382
- return ':root' + selector.substring(selector.indexOf(' > '));
383
- }
384
- return ':root';
385
- }
386
-
387
- /**
388
- * Gets a unique CSS selector
389
- * @param {HTMLElement} node The element to get the selector for
390
- * @param {Object} optional options
391
- * @returns {String|Array<String>} Unique CSS selector for the node
392
- */
393
- export default function getSelector(elm, options) {
394
- return getShadowSelector(generateSelector, elm, options);
395
- }