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,30 +0,0 @@
1
- import matches from './matches';
2
-
3
- /**
4
- * closest implementation that operates on a VirtualNode
5
- *
6
- * @method closest
7
- * @memberof axe.utils
8
- * @param {VirtualNode} vNode VirtualNode to match
9
- * @param {String} selector CSS selector string
10
- * @return {VirtualNode | null}
11
- */
12
- function closest(vNode, selector) {
13
- while (vNode) {
14
- if (matches(vNode, selector)) {
15
- return vNode;
16
- }
17
-
18
- // the top node of the tree will have parent === null, so a
19
- // undefined parent means we are in a disconnected tree
20
- if (typeof vNode.parent === 'undefined') {
21
- throw new TypeError('Cannot resolve parent for non-DOM nodes');
22
- }
23
-
24
- vNode = vNode.parent;
25
- }
26
-
27
- return null;
28
- }
29
-
30
- export default closest;
@@ -1,84 +0,0 @@
1
- import queue from './queue';
2
- import sendCommandToFrame from './send-command-to-frame';
3
- import mergeResults from './merge-results';
4
- import getSelector from './get-selector';
5
-
6
- /**
7
- * Sends a message to axe running in frames to start analysis and collate results (via `mergeResults`)
8
- * @private
9
- * @param {Context} parentContent The resolved Context object
10
- * @param {Object} options Options object (as passed to `runRules`)
11
- * @param {string} command Command sent to all frames
12
- * @param {Array} parameter Array of values to be passed along side the command
13
- * @param {Function} callback Function to call when results from all frames have returned
14
- */
15
- function collectResultsFromFrames(
16
- parentContent,
17
- options,
18
- command,
19
- parameter,
20
- resolve,
21
- reject
22
- ) {
23
- var q = queue();
24
- var frames = parentContent.frames;
25
-
26
- // Tell each axe running in each frame to collect results
27
- frames.forEach(frame => {
28
- const tabindex = parseInt(frame.node.getAttribute('tabindex'), 10);
29
- const focusable = isNaN(tabindex) || tabindex >= 0;
30
-
31
- const rect = frame.node.getBoundingClientRect();
32
- let width = parseInt(frame.node.getAttribute('width'), 10);
33
- let height = parseInt(frame.node.getAttribute('height'), 10);
34
- width = isNaN(width) ? rect.width : width;
35
- height = isNaN(height) ? rect.height : height;
36
-
37
- var params = {
38
- options: options,
39
- command: command,
40
- parameter: parameter,
41
- context: {
42
- initiator: false,
43
-
44
- // if any parent iframe is not focusable then the entire
45
- // iframe stack is not focusable (even if the descendant
46
- // iframe has tabindex=0 on it)
47
- focusable: parentContent.focusable === false ? false : focusable,
48
- boundingClientRect: {
49
- width: width,
50
- height: height
51
- },
52
- page: parentContent.page,
53
- include: frame.include || [],
54
- exclude: frame.exclude || []
55
- }
56
- };
57
-
58
- q.defer((res, rej) => {
59
- var node = frame.node;
60
- sendCommandToFrame(
61
- node,
62
- params,
63
- data => {
64
- if (data) {
65
- return res({
66
- results: data,
67
- frameElement: node,
68
- frame: getSelector(node)
69
- });
70
- }
71
- res(null);
72
- },
73
- rej
74
- );
75
- });
76
- });
77
-
78
- // Combine results from all frames and give it back
79
- q.then(data => {
80
- resolve(mergeResults(data, options));
81
- }).catch(reject);
82
- }
83
-
84
- export default collectResultsFromFrames;
@@ -1,46 +0,0 @@
1
- /**
2
- * Wrapper for Node#contains
3
- * @method contains
4
- * @memberof axe.utils
5
- * @param {VirtualNode} vNode The candidate container VirtualNode
6
- * @param {VirtualNode} otherVNode The vNode to test is contained by `vNode`
7
- * @return {Boolean} Whether `vNode` contains `otherVNode`
8
- */
9
- function contains(vNode, otherVNode) {
10
- /*eslint no-bitwise: 0*/
11
-
12
- function containsShadowChild(vNode, otherVNode) {
13
- if (vNode.shadowId === otherVNode.shadowId) {
14
- return true;
15
- }
16
- return !!vNode.children.find(child => {
17
- return containsShadowChild(child, otherVNode);
18
- });
19
- }
20
-
21
- if (vNode.shadowId || otherVNode.shadowId) {
22
- return containsShadowChild(vNode, otherVNode);
23
- }
24
-
25
- if (vNode.actualNode) {
26
- if (typeof vNode.actualNode.contains === 'function') {
27
- return vNode.actualNode.contains(otherVNode.actualNode);
28
- }
29
-
30
- return !!(
31
- vNode.actualNode.compareDocumentPosition(otherVNode.actualNode) & 16
32
- );
33
- } else {
34
- // fallback for virtualNode only contexts (e.g. linting)
35
- // @see https://github.com/Financial-Times/polyfill-service/pull/183/files
36
- do {
37
- if (otherVNode === vNode) {
38
- return true;
39
- }
40
- } while ((otherVNode = otherVNode && otherVNode.parent));
41
- }
42
-
43
- return false;
44
- }
45
-
46
- export default contains;
@@ -1,9 +0,0 @@
1
- import { CssSelectorParser } from 'css-selector-parser';
2
-
3
- const parser = new CssSelectorParser();
4
- parser.registerSelectorPseudos('not');
5
- parser.registerSelectorPseudos('is');
6
- parser.registerNestingOperators('>');
7
- parser.registerAttrEqualityMods('^', '$', '*', '~');
8
-
9
- export default parser;
@@ -1,31 +0,0 @@
1
- /**
2
- * Deeply merge two objects into a new object without changing any of the source objects.
3
- * @see https://medium.com/javascript-in-plain-english/how-to-merge-objects-in-javascript-98f2209710e3
4
- * @param {...Object} sources
5
- * @return {Object}
6
- */
7
- function deepMerge(...sources) {
8
- const target = {};
9
-
10
- sources.forEach(source => {
11
- if (!source || typeof source !== 'object' || Array.isArray(source)) {
12
- return;
13
- }
14
-
15
- for (const key of Object.keys(source)) {
16
- if (
17
- !target.hasOwnProperty(key) ||
18
- typeof source[key] !== 'object' ||
19
- Array.isArray(target[key])
20
- ) {
21
- target[key] = source[key];
22
- } else {
23
- target[key] = deepMerge(target[key], source[key]);
24
- }
25
- }
26
- });
27
-
28
- return target;
29
- }
30
-
31
- export default deepMerge;
@@ -1,131 +0,0 @@
1
- import getSelector from './get-selector';
2
- import getAncestry from './get-ancestry';
3
- import getXpath from './get-xpath';
4
- import getNodeFromTree from './get-node-from-tree';
5
- import AbstractVirtualNode from '../base/virtual-node/abstract-virtual-node';
6
-
7
- function truncate(str, maxLength) {
8
- maxLength = maxLength || 300;
9
-
10
- if (str.length > maxLength) {
11
- var index = str.indexOf('>');
12
- str = str.substring(0, index + 1);
13
- }
14
-
15
- return str;
16
- }
17
-
18
- function getSource(element) {
19
- if (!element?.outerHTML) {
20
- return '';
21
- }
22
- var source = element.outerHTML;
23
- if (!source && typeof XMLSerializer === 'function') {
24
- source = new XMLSerializer().serializeToString(element);
25
- }
26
- return truncate(source || '');
27
- }
28
-
29
- /**
30
- * "Serialized" `HTMLElement`. It will calculate the CSS selector,
31
- * grab the source (outerHTML) and offer an array for storing frame paths
32
- * @param {HTMLElement} element The element to serialize
33
- * @param {Object} spec Properties to use in place of the element when instantiated on Elements from other frames
34
- */
35
- function DqElement(elm, options = {}, spec = {}) {
36
- this.spec = spec;
37
- if (elm instanceof AbstractVirtualNode) {
38
- this._virtualNode = elm;
39
- this._element = elm.actualNode;
40
- } else {
41
- this._element = elm;
42
- this._virtualNode = getNodeFromTree(elm);
43
- }
44
-
45
- /**
46
- * Whether DqElement was created from an iframe
47
- * @type {boolean}
48
- */
49
- this.fromFrame = this.spec.selector?.length > 1;
50
-
51
- if (options.absolutePaths) {
52
- this._options = { toRoot: true };
53
- }
54
-
55
- /**
56
- * Number by which nodes in the flat tree can be sorted
57
- * @type {Number}
58
- */
59
- this.nodeIndexes = [];
60
- if (Array.isArray(this.spec.nodeIndexes)) {
61
- this.nodeIndexes = this.spec.nodeIndexes;
62
- } else if (typeof this._virtualNode?.nodeIndex === 'number') {
63
- this.nodeIndexes = [this._virtualNode.nodeIndex];
64
- }
65
-
66
- /**
67
- * The generated HTML source code of the element
68
- * @type {String|null}
69
- */
70
- this.source = null;
71
- // TODO: es-modules_audit
72
- if (!axe._audit.noHtml) {
73
- this.source = this.spec.source ?? getSource(this._element);
74
- }
75
- }
76
-
77
- DqElement.prototype = {
78
- /**
79
- * A unique CSS selector for the element, designed for readability
80
- * @return {String}
81
- */
82
- get selector() {
83
- return this.spec.selector || [getSelector(this.element, this._options)];
84
- },
85
-
86
- /**
87
- * A unique CSS selector for the element, including its ancestors down to the root node
88
- * @return {String}
89
- */
90
- get ancestry() {
91
- return this.spec.ancestry || [getAncestry(this.element)];
92
- },
93
-
94
- /**
95
- * Xpath to the element
96
- * @return {String}
97
- */
98
- get xpath() {
99
- return this.spec.xpath || [getXpath(this.element)];
100
- },
101
-
102
- /**
103
- * Direct reference to the `HTMLElement` wrapped by this `DQElement`.
104
- */
105
- get element() {
106
- return this._element;
107
- },
108
-
109
- toJSON() {
110
- return {
111
- selector: this.selector,
112
- source: this.source,
113
- xpath: this.xpath,
114
- ancestry: this.ancestry,
115
- nodeIndexes: this.nodeIndexes
116
- };
117
- }
118
- };
119
-
120
- DqElement.fromFrame = function fromFrame(node, options, frame) {
121
- const spec = {
122
- ...node,
123
- selector: [...frame.selector, ...node.selector],
124
- ancestry: [...frame.ancestry, ...node.ancestry],
125
- xpath: [...frame.xpath, ...node.xpath],
126
- nodeIndexes: [...frame.nodeIndexes, ...node.nodeIndexes]
127
- };
128
- return new DqElement(frame.element, options, spec);
129
- };
130
-
131
- export default DqElement;
@@ -1,43 +0,0 @@
1
- /**
2
- * Polyfill for Element#matches
3
- * @param {HTMLElement} node The element to test
4
- * @param {String} selector The selector to test element against
5
- * @return {Boolean}
6
- */
7
- const matchesSelector = (() => {
8
- var method;
9
-
10
- function getMethod(node) {
11
- var index,
12
- candidate,
13
- candidates = [
14
- 'matches',
15
- 'matchesSelector',
16
- 'mozMatchesSelector',
17
- 'webkitMatchesSelector',
18
- 'msMatchesSelector'
19
- ],
20
- length = candidates.length;
21
-
22
- for (index = 0; index < length; index++) {
23
- candidate = candidates[index];
24
- if (node[candidate]) {
25
- return candidate;
26
- }
27
- }
28
- }
29
-
30
- return (node, selector) => {
31
- if (!method || !node[method]) {
32
- method = getMethod(node);
33
- }
34
-
35
- if (node[method]) {
36
- return node[method](selector);
37
- }
38
-
39
- return false;
40
- };
41
- })();
42
-
43
- export default matchesSelector;
@@ -1,79 +0,0 @@
1
- /**
2
- * Escapes a property value of a CSS selector
3
- * @see https://github.com/mathiasbynens/CSS.escape/
4
- * @see http://dev.w3.org/csswg/cssom/#serialize-an-identifier
5
- * @param {String} value The piece of the selector to escape
6
- * @return {String} The escaped selector
7
- */
8
- function escapeSelector(value) {
9
- /*eslint no-bitwise: 0, eqeqeq: 0, one-var: 0 */
10
- var string = String(value);
11
- var length = string.length;
12
- var index = -1;
13
- var codeUnit;
14
- var result = '';
15
- var firstCodeUnit = string.charCodeAt(0);
16
- while (++index < length) {
17
- codeUnit = string.charCodeAt(index);
18
- // Note: there’s no need to special-case astral symbols, surrogate
19
- // pairs, or lone surrogates.
20
-
21
- // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER
22
- // (U+FFFD).
23
- if (codeUnit == 0x0000) {
24
- result += '\uFFFD';
25
- continue;
26
- }
27
-
28
- if (
29
- // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
30
- // U+007F, […]
31
- (codeUnit >= 0x0001 && codeUnit <= 0x001f) ||
32
- codeUnit == 0x007f ||
33
- // If the character is the first character and is in the range [0-9]
34
- // (U+0030 to U+0039), […]
35
- (index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
36
- // If the character is the second character and is in the range [0-9]
37
- // (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
38
- (index == 1 &&
39
- codeUnit >= 0x0030 &&
40
- codeUnit <= 0x0039 &&
41
- firstCodeUnit == 0x002d)
42
- ) {
43
- // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point
44
- result += '\\' + codeUnit.toString(16) + ' ';
45
- continue;
46
- }
47
-
48
- // If the character is the first character and is a `-` (U+002D), and
49
- // there is no second character, […]
50
- if (index == 0 && length == 1 && codeUnit == 0x002d) {
51
- result += '\\' + string.charAt(index);
52
- continue;
53
- }
54
-
55
- // If the character is not handled by one of the above rules and is
56
- // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
57
- // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
58
- // U+005A), or [a-z] (U+0061 to U+007A), […]
59
- if (
60
- codeUnit >= 0x0080 ||
61
- codeUnit == 0x002d ||
62
- codeUnit == 0x005f ||
63
- (codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
64
- (codeUnit >= 0x0041 && codeUnit <= 0x005a) ||
65
- (codeUnit >= 0x0061 && codeUnit <= 0x007a)
66
- ) {
67
- // the character itself
68
- result += string.charAt(index);
69
- continue;
70
- }
71
-
72
- // Otherwise, the escaped character.
73
- // https://drafts.csswg.org/cssom/#escape-a-character
74
- result += '\\' + string.charAt(index);
75
- }
76
- return result;
77
- }
78
-
79
- export default escapeSelector;
@@ -1,20 +0,0 @@
1
- /**
2
- * Extends metadata onto result object and executes any functions
3
- * @param {Object} to The target of the extend
4
- * @param {Object} from Metadata to extend
5
- */
6
- function extendMetaData(to, from) {
7
- Object.assign(to, from);
8
- Object.keys(from)
9
- .filter(prop => typeof from[prop] === 'function')
10
- .forEach(prop => {
11
- to[prop] = null;
12
- try {
13
- to[prop] = from[prop](to);
14
- } catch (e) {
15
- // Ignore
16
- }
17
- });
18
- }
19
-
20
- export default extendMetaData;
@@ -1,75 +0,0 @@
1
- import cache from '../base/cache';
2
- import getNodeAttributes from './get-node-attributes';
3
- import matchesSelector from './element-matches';
4
-
5
- /**
6
- * Test if node and attribute match one of the filtered attributes.
7
- * @param {HTMLElement} node - node to match
8
- * @param {String} attrname - Name of the attribute to test
9
- * @param {Object} filterAttrs - Attributes to remove and the qualifier of when to remove them.
10
- */
11
- function attributeMatches(node, attrName, filterAttrs) {
12
- if (typeof filterAttrs[attrName] === 'undefined') {
13
- return false;
14
- }
15
-
16
- // filterAttrs can only be a boolean or a CSS selector
17
- if (filterAttrs[attrName] === true) {
18
- return true;
19
- }
20
-
21
- return matchesSelector(node, filterAttrs[attrName]);
22
- }
23
-
24
- /**
25
- * Filter attributes from an html element and all of its children.
26
- *
27
- * Example:
28
- * ```js
29
- * // Remove attribute if present
30
- * axe.utils.filterHtmlAttrs('<div data-attr="foo">my div</div>', { 'data-attr': true });
31
- *
32
- * // Remove attribute if CSS selector matches
33
- * axe.utils.filterHtmlAttrs('<div data-attr="foo">my div</div>', { 'data-attr': 'div' });
34
- * ```
35
- *
36
- * @method filterHtmlAttrs
37
- * @memberof axe.utils
38
- * @param {HTMLElement} element - HTML element to remove attributes from
39
- * @param {Object} filterAttrs - Attributes to remove and the qualifier of when to remove them
40
- * @returns {HTMLElement} Element with filtered attributes removed
41
- */
42
- function filterHtmlAttrs(element, filterAttrs) {
43
- if (!filterAttrs) {
44
- return element;
45
- }
46
-
47
- let node = element.cloneNode(false);
48
- const outerHTML = node.outerHTML;
49
- const attributes = getNodeAttributes(node);
50
-
51
- if (cache.get(outerHTML)) {
52
- node = cache.get(outerHTML);
53
- } else if (attributes) {
54
- node = document.createElement(node.nodeName);
55
- Array.from(attributes).forEach(attr => {
56
- if (!attributeMatches(element, attr.name, filterAttrs)) {
57
- // can't remove the value attribute from an input in IE11 so
58
- // we'll have to reconstruct the node and set attribute
59
- // manually
60
- node.setAttribute(attr.name, attr.value);
61
- }
62
- });
63
-
64
- cache.set(outerHTML, node);
65
- }
66
-
67
- // be sure to append text nodes as well
68
- Array.from(element.childNodes).forEach(child => {
69
- node.appendChild(filterHtmlAttrs(child, filterAttrs));
70
- });
71
-
72
- return node;
73
- }
74
-
75
- export default filterHtmlAttrs;
@@ -1,28 +0,0 @@
1
- import aggregateNodeResults from './aggregate-node-results';
2
-
3
- /**
4
- * Process rule results, grouping them by outcome
5
- * @param ruleResult {object}
6
- * @return {object}
7
- */
8
- function finalizeRuleResult(ruleResult) {
9
- // we don't use getRule so that this code does not throw but returns
10
- // the results
11
- const rule = axe._audit.rules.find(rule => rule.id === ruleResult.id);
12
- if (rule && rule.impact) {
13
- ruleResult.nodes.forEach(node => {
14
- ['any', 'all', 'none'].forEach(checkType => {
15
- (node[checkType] || []).forEach(checkResult => {
16
- checkResult.impact = rule.impact;
17
- });
18
- });
19
- });
20
- }
21
-
22
- Object.assign(ruleResult, aggregateNodeResults(ruleResult.nodes));
23
- delete ruleResult.nodes;
24
-
25
- return ruleResult;
26
- }
27
-
28
- export default finalizeRuleResult;
@@ -1,16 +0,0 @@
1
- /**
2
- * Iterates an array of objects looking for a property with a specific value
3
- * @method findBy
4
- * @memberof axe.utils
5
- * @param {Array} array The array of objects to iterate
6
- * @param {String} key The property name to test against
7
- * @param {Mixed} value The value to find
8
- * @return {Object} The first matching object or `undefined` if no match
9
- */
10
- function findBy(array, key, value) {
11
- if (Array.isArray(array)) {
12
- return array.find(obj => typeof obj === 'object' && obj[key] === value);
13
- }
14
- }
15
-
16
- export default findBy;
@@ -1,21 +0,0 @@
1
- import assert from '../assert';
2
-
3
- export function assertIsParentWindow(win) {
4
- assetNotGlobalWindow(win);
5
- assert(
6
- window.parent === win,
7
- 'Source of the response must be the parent window.'
8
- );
9
- }
10
-
11
- export function assertIsFrameWindow(win) {
12
- assetNotGlobalWindow(win);
13
- assert(
14
- win.parent === window,
15
- 'Respondable target must be a frame in the current window'
16
- );
17
- }
18
-
19
- export function assetNotGlobalWindow(win) {
20
- assert(window !== win, 'Messages can not be sent to the same window.');
21
- }
@@ -1,23 +0,0 @@
1
- import assert from '../assert';
2
-
3
- const channels = {};
4
-
5
- export function storeReplyHandler(
6
- channelId,
7
- replyHandler,
8
- sendToParent = true
9
- ) {
10
- assert(
11
- !channels[channelId],
12
- `A replyHandler already exists for this message channel.`
13
- );
14
- channels[channelId] = { replyHandler, sendToParent };
15
- }
16
-
17
- export function getReplyHandler(channelId) {
18
- return channels[channelId];
19
- }
20
-
21
- export function deleteReplyHandler(channelId) {
22
- delete channels[channelId];
23
- }
@@ -1,15 +0,0 @@
1
- import { postMessage } from './post-message';
2
-
3
- /**
4
- * Helper closure to create a function that may be used to respond to a message
5
- * @private
6
- * @param {Window} win The window from which the message originated
7
- * @param {String} channelId The "unique" ID of the original message
8
- * @return {Function} A function that may be invoked to respond to the message
9
- */
10
- export function createResponder(win, channelId, sendToParent = true) {
11
- return function respond(message, keepalive, replyHandler) {
12
- const data = { channelId, message, keepalive };
13
- postMessage(win, data, sendToParent, replyHandler);
14
- };
15
- }