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.
- package/CHANGELOG.md +37 -2
- package/README.md +24 -2
- package/axe.d.ts +60 -4
- package/axe.js +1198 -830
- package/axe.min.js +2 -2
- package/locales/de.json +1 -1
- package/locales/pt_BR.json +163 -44
- package/package.json +7 -1
- package/.eslintrc.js +0 -112
- package/.prettierrc.json +0 -10
- package/CONTRIBUTING.md +0 -242
- package/bower.json +0 -40
- package/doc/API.md +0 -963
- package/doc/accessibility-supported.md +0 -37
- package/doc/act-rules-format.md +0 -37
- package/doc/aria-supported.md +0 -13
- package/doc/backwards-compatibility-doc.md +0 -94
- package/doc/check-message-template.md +0 -124
- package/doc/check-options.md +0 -437
- package/doc/code-submission-guidelines.md +0 -171
- package/doc/developer-guide.md +0 -515
- package/doc/examples/chrome-debugging-protocol/README.md +0 -13
- package/doc/examples/chrome-debugging-protocol/axe-cdp.js +0 -81
- package/doc/examples/chrome-debugging-protocol/package.json +0 -11
- package/doc/examples/html-handlebars.md +0 -164
- package/doc/examples/jasmine/README.md +0 -35
- package/doc/examples/jasmine/karma.conf.js +0 -29
- package/doc/examples/jasmine/package-lock.json +0 -1489
- package/doc/examples/jasmine/package.json +0 -21
- package/doc/examples/jasmine/spec/a11y.js +0 -36
- package/doc/examples/jest_react/README.md +0 -41
- package/doc/examples/jest_react/link.js +0 -7
- package/doc/examples/jest_react/link.test.js +0 -24
- package/doc/examples/jest_react/package-lock.json +0 -7525
- package/doc/examples/jest_react/package.json +0 -28
- package/doc/examples/jest_react/test-helpers.js +0 -21
- package/doc/examples/jsdom/package.json +0 -15
- package/doc/examples/mocha/README.md +0 -35
- package/doc/examples/mocha/karma.conf.js +0 -29
- package/doc/examples/mocha/package-lock.json +0 -1671
- package/doc/examples/mocha/package.json +0 -22
- package/doc/examples/phantomjs/README.md +0 -17
- package/doc/examples/phantomjs/axe-phantom.js +0 -53
- package/doc/examples/phantomjs/package-lock.json +0 -862
- package/doc/examples/phantomjs/package.json +0 -19
- package/doc/examples/puppeteer/README.md +0 -12
- package/doc/examples/puppeteer/axe-puppeteer.js +0 -60
- package/doc/examples/puppeteer/package.json +0 -13
- package/doc/examples/qunit/README.md +0 -37
- package/doc/examples/qunit/package-lock.json +0 -2951
- package/doc/examples/qunit/package.json +0 -21
- package/doc/examples/test-examples.js +0 -40
- package/doc/frame-messenger.md +0 -107
- package/doc/plugins.md +0 -123
- package/doc/projects.md +0 -56
- package/doc/rule-descriptions.md +0 -135
- package/doc/rule-development.md +0 -123
- package/doc/rule-proposal.md +0 -106
- package/doc/standards-object.md +0 -147
- package/lib/checks/aria/abstractrole-evaluate.js +0 -40
- package/lib/checks/aria/abstractrole.json +0 -14
- package/lib/checks/aria/aria-allowed-attr-evaluate.js +0 -58
- package/lib/checks/aria/aria-allowed-attr.json +0 -14
- package/lib/checks/aria/aria-allowed-role-evaluate.js +0 -42
- package/lib/checks/aria/aria-allowed-role.json +0 -22
- package/lib/checks/aria/aria-errormessage-evaluate.js +0 -68
- package/lib/checks/aria/aria-errormessage.json +0 -18
- package/lib/checks/aria/aria-hidden-body-evaluate.js +0 -11
- package/lib/checks/aria/aria-hidden-body.json +0 -11
- package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -68
- package/lib/checks/aria/aria-prohibited-attr.json +0 -15
- package/lib/checks/aria/aria-required-attr-evaluate.js +0 -67
- package/lib/checks/aria/aria-required-attr.json +0 -14
- package/lib/checks/aria/aria-required-children-evaluate.js +0 -137
- package/lib/checks/aria/aria-required-children.json +0 -32
- package/lib/checks/aria/aria-required-parent-evaluate.js +0 -120
- package/lib/checks/aria/aria-required-parent.json +0 -17
- package/lib/checks/aria/aria-roledescription-evaluate.js +0 -25
- package/lib/checks/aria/aria-roledescription.json +0 -23
- package/lib/checks/aria/aria-unsupported-attr-evaluate.js +0 -53
- package/lib/checks/aria/aria-unsupported-attr.json +0 -11
- package/lib/checks/aria/aria-valid-attr-evaluate.js +0 -51
- package/lib/checks/aria/aria-valid-attr-value-evaluate.js +0 -122
- package/lib/checks/aria/aria-valid-attr-value.json +0 -19
- package/lib/checks/aria/aria-valid-attr.json +0 -15
- package/lib/checks/aria/fallbackrole-evaluate.js +0 -13
- package/lib/checks/aria/fallbackrole.json +0 -11
- package/lib/checks/aria/has-global-aria-attribute-evaluate.js +0 -11
- package/lib/checks/aria/has-global-aria-attribute.json +0 -14
- package/lib/checks/aria/has-widget-role-evaluate.js +0 -20
- package/lib/checks/aria/has-widget-role.json +0 -12
- package/lib/checks/aria/invalidrole-evaluate.js +0 -45
- package/lib/checks/aria/invalidrole.json +0 -14
- package/lib/checks/aria/is-element-focusable-evaluate.js +0 -7
- package/lib/checks/aria/is-element-focusable.json +0 -11
- package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +0 -54
- package/lib/checks/aria/no-implicit-explicit-label.json +0 -11
- package/lib/checks/aria/unsupportedrole-evaluate.js +0 -15
- package/lib/checks/aria/unsupportedrole.json +0 -11
- package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +0 -70
- package/lib/checks/aria/valid-scrollable-semantics.json +0 -14
- package/lib/checks/color/color-contrast-evaluate.js +0 -178
- package/lib/checks/color/color-contrast.json +0 -42
- package/lib/checks/color/link-in-text-block-evaluate.js +0 -94
- package/lib/checks/color/link-in-text-block.json +0 -19
- package/lib/checks/forms/autocomplete-appropriate-evaluate.js +0 -84
- package/lib/checks/forms/autocomplete-appropriate.json +0 -11
- package/lib/checks/forms/autocomplete-valid-evaluate.js +0 -8
- package/lib/checks/forms/autocomplete-valid.json +0 -11
- package/lib/checks/generic/README.md +0 -13
- package/lib/checks/generic/attr-non-space-content-evaluate.js +0 -28
- package/lib/checks/generic/has-descendant-after.js +0 -15
- package/lib/checks/generic/has-descendant-evaluate.js +0 -20
- package/lib/checks/generic/has-text-content-evaluate.js +0 -11
- package/lib/checks/generic/matches-definition-evaluate.js +0 -7
- package/lib/checks/generic/page-no-duplicate-after.js +0 -6
- package/lib/checks/generic/page-no-duplicate-evaluate.js +0 -42
- package/lib/checks/index.js +0 -11
- package/lib/checks/keyboard/accesskeys-after.js +0 -23
- package/lib/checks/keyboard/accesskeys-evaluate.js +0 -11
- package/lib/checks/keyboard/accesskeys.json +0 -12
- package/lib/checks/keyboard/focusable-content-evaluate.js +0 -20
- package/lib/checks/keyboard/focusable-content.json +0 -11
- package/lib/checks/keyboard/focusable-disabled-evaluate.js +0 -36
- package/lib/checks/keyboard/focusable-disabled.json +0 -11
- package/lib/checks/keyboard/focusable-element-evaluate.js +0 -47
- package/lib/checks/keyboard/focusable-element.json +0 -11
- package/lib/checks/keyboard/focusable-modal-open-evaluate.js +0 -20
- package/lib/checks/keyboard/focusable-modal-open.json +0 -11
- package/lib/checks/keyboard/focusable-no-name-evaluate.js +0 -18
- package/lib/checks/keyboard/focusable-no-name.json +0 -12
- package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +0 -36
- package/lib/checks/keyboard/focusable-not-tabbable.json +0 -11
- package/lib/checks/keyboard/frame-focusable-content.json +0 -12
- package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +0 -31
- package/lib/checks/keyboard/landmark-is-top-level.json +0 -11
- package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
- package/lib/checks/keyboard/no-focusable-content.json +0 -12
- package/lib/checks/keyboard/page-has-heading-one.json +0 -15
- package/lib/checks/keyboard/page-has-main.json +0 -15
- package/lib/checks/keyboard/page-no-duplicate-banner.json +0 -16
- package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +0 -16
- package/lib/checks/keyboard/page-no-duplicate-main.json +0 -15
- package/lib/checks/keyboard/tabindex-evaluate.js +0 -10
- package/lib/checks/keyboard/tabindex.json +0 -11
- package/lib/checks/label/alt-space-value-evaluate.js +0 -7
- package/lib/checks/label/alt-space-value.json +0 -11
- package/lib/checks/label/duplicate-img-label-evaluate.js +0 -23
- package/lib/checks/label/duplicate-img-label.json +0 -14
- package/lib/checks/label/explicit-evaluate.js +0 -34
- package/lib/checks/label/explicit.json +0 -12
- package/lib/checks/label/help-same-as-label-evaluate.js +0 -28
- package/lib/checks/label/help-same-as-label.json +0 -12
- package/lib/checks/label/hidden-explicit-label-evaluate.js +0 -30
- package/lib/checks/label/hidden-explicit-label.json +0 -12
- package/lib/checks/label/implicit-evaluate.js +0 -16
- package/lib/checks/label/implicit.json +0 -12
- package/lib/checks/label/label-content-name-mismatch-evaluate.js +0 -71
- package/lib/checks/label/label-content-name-mismatch.json +0 -15
- package/lib/checks/label/multiple-label-evaluate.js +0 -44
- package/lib/checks/label/multiple-label.json +0 -11
- package/lib/checks/label/title-only-evaluate.js +0 -11
- package/lib/checks/label/title-only.json +0 -11
- package/lib/checks/landmarks/landmark-is-unique-after.js +0 -27
- package/lib/checks/landmarks/landmark-is-unique-evaluate.js +0 -14
- package/lib/checks/landmarks/landmark-is-unique.json +0 -12
- package/lib/checks/language/has-lang-evaluate.js +0 -39
- package/lib/checks/language/has-lang.json +0 -17
- package/lib/checks/language/valid-lang-evaluate.js +0 -36
- package/lib/checks/language/valid-lang.json +0 -14
- package/lib/checks/language/xml-lang-mismatch-evaluate.js +0 -10
- package/lib/checks/language/xml-lang-mismatch.json +0 -11
- package/lib/checks/lists/dlitem-evaluate.js +0 -30
- package/lib/checks/lists/dlitem.json +0 -11
- package/lib/checks/lists/listitem-evaluate.js +0 -28
- package/lib/checks/lists/listitem.json +0 -14
- package/lib/checks/lists/only-dlitems-evaluate.js +0 -51
- package/lib/checks/lists/only-dlitems.json +0 -11
- package/lib/checks/lists/only-listitems-evaluate.js +0 -63
- package/lib/checks/lists/only-listitems.json +0 -14
- package/lib/checks/lists/structured-dlitems-evaluate.js +0 -26
- package/lib/checks/lists/structured-dlitems.json +0 -11
- package/lib/checks/media/caption-evaluate.js +0 -13
- package/lib/checks/media/caption.json +0 -11
- package/lib/checks/media/frame-tested-after.js +0 -31
- package/lib/checks/media/frame-tested-evaluate.js +0 -6
- package/lib/checks/media/frame-tested.json +0 -16
- package/lib/checks/media/no-autoplay-audio-evaluate.js +0 -97
- package/lib/checks/media/no-autoplay-audio.json +0 -15
- package/lib/checks/mobile/css-orientation-lock-evaluate.js +0 -254
- package/lib/checks/mobile/css-orientation-lock.json +0 -15
- package/lib/checks/mobile/meta-viewport-large.json +0 -15
- package/lib/checks/mobile/meta-viewport-scale-evaluate.js +0 -71
- package/lib/checks/mobile/meta-viewport.json +0 -14
- package/lib/checks/navigation/header-present.json +0 -15
- package/lib/checks/navigation/heading-order-after.js +0 -132
- package/lib/checks/navigation/heading-order-evaluate.js +0 -58
- package/lib/checks/navigation/heading-order.json +0 -13
- package/lib/checks/navigation/identical-links-same-purpose-after.js +0 -106
- package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +0 -35
- package/lib/checks/navigation/identical-links-same-purpose.json +0 -12
- package/lib/checks/navigation/internal-link-present-evaluate.js +0 -10
- package/lib/checks/navigation/internal-link-present.json +0 -11
- package/lib/checks/navigation/landmark.json +0 -14
- package/lib/checks/navigation/meta-refresh-evaluate.js +0 -8
- package/lib/checks/navigation/meta-refresh.json +0 -11
- package/lib/checks/navigation/p-as-heading-evaluate.js +0 -98
- package/lib/checks/navigation/p-as-heading.json +0 -30
- package/lib/checks/navigation/region-evaluate.js +0 -106
- package/lib/checks/navigation/region.json +0 -14
- package/lib/checks/navigation/skip-link-evaluate.js +0 -11
- package/lib/checks/navigation/skip-link.json +0 -12
- package/lib/checks/navigation/unique-frame-title-after.js +0 -13
- package/lib/checks/navigation/unique-frame-title-evaluate.js +0 -9
- package/lib/checks/navigation/unique-frame-title.json +0 -12
- package/lib/checks/parsing/duplicate-id-active.json +0 -12
- package/lib/checks/parsing/duplicate-id-after.js +0 -12
- package/lib/checks/parsing/duplicate-id-aria.json +0 -12
- package/lib/checks/parsing/duplicate-id-evaluate.js +0 -24
- package/lib/checks/parsing/duplicate-id.json +0 -12
- package/lib/checks/shared/aria-label-evaluate.js +0 -8
- package/lib/checks/shared/aria-label.json +0 -11
- package/lib/checks/shared/aria-labelledby-evaluate.js +0 -12
- package/lib/checks/shared/aria-labelledby.json +0 -12
- package/lib/checks/shared/avoid-inline-spacing-evaluate.js +0 -16
- package/lib/checks/shared/avoid-inline-spacing.json +0 -17
- package/lib/checks/shared/button-has-visible-text.json +0 -12
- package/lib/checks/shared/doc-has-title-evaluate.js +0 -8
- package/lib/checks/shared/doc-has-title.json +0 -11
- package/lib/checks/shared/exists-evaluate.js +0 -5
- package/lib/checks/shared/exists.json +0 -11
- package/lib/checks/shared/has-alt-evaluate.js +0 -10
- package/lib/checks/shared/has-alt.json +0 -11
- package/lib/checks/shared/has-visible-text.json +0 -12
- package/lib/checks/shared/is-on-screen-evaluate.js +0 -8
- package/lib/checks/shared/is-on-screen.json +0 -11
- package/lib/checks/shared/non-empty-alt.json +0 -17
- package/lib/checks/shared/non-empty-if-present-evaluate.js +0 -19
- package/lib/checks/shared/non-empty-if-present.json +0 -14
- package/lib/checks/shared/non-empty-placeholder.json +0 -17
- package/lib/checks/shared/non-empty-title.json +0 -17
- package/lib/checks/shared/non-empty-value.json +0 -17
- package/lib/checks/shared/presentational-role-evaluate.js +0 -42
- package/lib/checks/shared/presentational-role.json +0 -16
- package/lib/checks/shared/role-none.json +0 -19
- package/lib/checks/shared/role-presentation.json +0 -19
- package/lib/checks/shared/svg-non-empty-title-evaluate.js +0 -33
- package/lib/checks/shared/svg-non-empty-title.json +0 -15
- package/lib/checks/tables/caption-faked-evaluate.js +0 -16
- package/lib/checks/tables/caption-faked.json +0 -11
- package/lib/checks/tables/html5-scope-evaluate.js +0 -11
- package/lib/checks/tables/html5-scope.json +0 -11
- package/lib/checks/tables/same-caption-summary-evaluate.js +0 -12
- package/lib/checks/tables/same-caption-summary.json +0 -11
- package/lib/checks/tables/scope-value-evaluate.js +0 -7
- package/lib/checks/tables/scope-value.json +0 -14
- package/lib/checks/tables/td-has-header-evaluate.js +0 -33
- package/lib/checks/tables/td-has-header.json +0 -11
- package/lib/checks/tables/td-headers-attr-evaluate.js +0 -67
- package/lib/checks/tables/td-headers-attr.json +0 -12
- package/lib/checks/tables/th-has-data-cells-evaluate.js +0 -82
- package/lib/checks/tables/th-has-data-cells.json +0 -12
- package/lib/checks/visibility/hidden-content-evaluate.js +0 -34
- package/lib/checks/visibility/hidden-content.json +0 -12
- package/lib/commons/aria/allowed-attr.js +0 -31
- package/lib/commons/aria/arialabel-text.js +0 -21
- package/lib/commons/aria/arialabelledby-text.js +0 -65
- package/lib/commons/aria/get-accessible-refs.js +0 -73
- package/lib/commons/aria/get-element-unallowed-roles.js +0 -110
- package/lib/commons/aria/get-explicit-role.js +0 -26
- package/lib/commons/aria/get-owned-virtual.js +0 -27
- package/lib/commons/aria/get-role-type.js +0 -21
- package/lib/commons/aria/get-role.js +0 -178
- package/lib/commons/aria/get-roles-by-type.js +0 -16
- package/lib/commons/aria/get-roles-with-name-from-contents.js +0 -15
- package/lib/commons/aria/implicit-nodes.js +0 -23
- package/lib/commons/aria/implicit-role.js +0 -44
- package/lib/commons/aria/index.js +0 -32
- package/lib/commons/aria/is-accessible-ref.js +0 -12
- package/lib/commons/aria/is-aria-role-allowed-on-element.js +0 -32
- package/lib/commons/aria/is-unsupported-role.js +0 -16
- package/lib/commons/aria/is-valid-role.js +0 -22
- package/lib/commons/aria/label-virtual.js +0 -46
- package/lib/commons/aria/label.js +0 -17
- package/lib/commons/aria/lookup-table.js +0 -2435
- package/lib/commons/aria/named-from-contents.js +0 -39
- package/lib/commons/aria/required-attr.js +0 -21
- package/lib/commons/aria/required-context.js +0 -21
- package/lib/commons/aria/required-owned.js +0 -21
- package/lib/commons/aria/validate-attr-value.js +0 -70
- package/lib/commons/aria/validate-attr.js +0 -16
- package/lib/commons/color/center-point-of-rect.js +0 -31
- package/lib/commons/color/color.js +0 -250
- package/lib/commons/color/element-has-image.js +0 -35
- package/lib/commons/color/element-is-distinct.js +0 -87
- package/lib/commons/color/filtered-rect-stack.js +0 -51
- package/lib/commons/color/flatten-colors.js +0 -22
- package/lib/commons/color/get-background-color.js +0 -84
- package/lib/commons/color/get-background-stack.js +0 -130
- package/lib/commons/color/get-contrast.js +0 -27
- package/lib/commons/color/get-foreground-color.js +0 -69
- package/lib/commons/color/get-own-background-color.js +0 -24
- package/lib/commons/color/get-rect-stack.js +0 -32
- package/lib/commons/color/get-text-shadow-colors.js +0 -121
- package/lib/commons/color/has-valid-contrast-ratio.js +0 -30
- package/lib/commons/color/incomplete-data.js +0 -47
- package/lib/commons/color/index.js +0 -20
- package/lib/commons/dom/find-elms-in-context.js +0 -31
- package/lib/commons/dom/find-up-virtual.js +0 -52
- package/lib/commons/dom/find-up.js +0 -20
- package/lib/commons/dom/focus-disabled.js +0 -30
- package/lib/commons/dom/get-composed-parent.js +0 -26
- package/lib/commons/dom/get-element-by-reference.js +0 -34
- package/lib/commons/dom/get-element-coordinates.js +0 -38
- package/lib/commons/dom/get-element-stack.js +0 -28
- package/lib/commons/dom/get-rect-stack.js +0 -514
- package/lib/commons/dom/get-root-node.js +0 -12
- package/lib/commons/dom/get-scroll-offset.js +0 -32
- package/lib/commons/dom/get-tabbable-elements.js +0 -26
- package/lib/commons/dom/get-text-element-stack.js +0 -89
- package/lib/commons/dom/get-viewport-size.js +0 -35
- package/lib/commons/dom/has-content-virtual.js +0 -53
- package/lib/commons/dom/has-content.js +0 -21
- package/lib/commons/dom/idrefs.js +0 -41
- package/lib/commons/dom/index.js +0 -38
- package/lib/commons/dom/inserted-into-focus-order.js +0 -24
- package/lib/commons/dom/is-focusable.js +0 -36
- package/lib/commons/dom/is-hidden-with-css.js +0 -76
- package/lib/commons/dom/is-html5.js +0 -17
- package/lib/commons/dom/is-in-text-block.js +0 -107
- package/lib/commons/dom/is-modal-open.js +0 -104
- package/lib/commons/dom/is-natively-focusable.js +0 -41
- package/lib/commons/dom/is-node.js +0 -14
- package/lib/commons/dom/is-offscreen.js +0 -66
- package/lib/commons/dom/is-opaque.js +0 -16
- package/lib/commons/dom/is-skip-link.js +0 -49
- package/lib/commons/dom/is-visible.js +0 -201
- package/lib/commons/dom/is-visual-content.js +0 -49
- package/lib/commons/dom/reduce-to-elements-below-floating.js +0 -36
- package/lib/commons/dom/shadow-elements-from-point.js +0 -47
- package/lib/commons/dom/url-props-from-attribute.js +0 -152
- package/lib/commons/dom/visually-contains.js +0 -113
- package/lib/commons/dom/visually-overlaps.js +0 -46
- package/lib/commons/forms/index.js +0 -12
- package/lib/commons/forms/is-aria-combobox.js +0 -15
- package/lib/commons/forms/is-aria-listbox.js +0 -15
- package/lib/commons/forms/is-aria-range.js +0 -17
- package/lib/commons/forms/is-aria-textbox.js +0 -15
- package/lib/commons/forms/is-disabled.js +0 -40
- package/lib/commons/forms/is-native-select.js +0 -17
- package/lib/commons/forms/is-native-textbox.js +0 -34
- package/lib/commons/index.js +0 -31
- package/lib/commons/matches/attributes.js +0 -32
- package/lib/commons/matches/condition.js +0 -20
- package/lib/commons/matches/explicit-role.js +0 -24
- package/lib/commons/matches/from-definition.js +0 -73
- package/lib/commons/matches/from-function.js +0 -40
- package/lib/commons/matches/from-primative.js +0 -44
- package/lib/commons/matches/implicit-role.js +0 -24
- package/lib/commons/matches/index.js +0 -29
- package/lib/commons/matches/matches.js +0 -39
- package/lib/commons/matches/node-name.js +0 -29
- package/lib/commons/matches/properties.js +0 -32
- package/lib/commons/matches/semantic-role.js +0 -24
- package/lib/commons/standards/get-aria-roles-by-type.js +0 -14
- package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +0 -22
- package/lib/commons/standards/get-element-spec.js +0 -54
- package/lib/commons/standards/get-elements-by-content-type.js +0 -30
- package/lib/commons/standards/get-global-aria-attrs.js +0 -22
- package/lib/commons/standards/implicit-html-roles.js +0 -186
- package/lib/commons/standards/index.js +0 -11
- package/lib/commons/table/get-all-cells.js +0 -28
- package/lib/commons/table/get-cell-position.js +0 -32
- package/lib/commons/table/get-headers.js +0 -102
- package/lib/commons/table/get-scope.js +0 -58
- package/lib/commons/table/index.js +0 -19
- package/lib/commons/table/is-column-header.js +0 -15
- package/lib/commons/table/is-data-cell.js +0 -24
- package/lib/commons/table/is-data-table.js +0 -195
- package/lib/commons/table/is-header.js +0 -26
- package/lib/commons/table/is-row-header.js +0 -15
- package/lib/commons/table/to-grid.js +0 -48
- package/lib/commons/table/traverse.js +0 -76
- package/lib/commons/text/accessible-text-virtual.js +0 -152
- package/lib/commons/text/accessible-text.js +0 -19
- package/lib/commons/text/form-control-value.js +0 -216
- package/lib/commons/text/has-unicode.js +0 -38
- package/lib/commons/text/index.js +0 -32
- package/lib/commons/text/is-human-interpretable.js +0 -54
- package/lib/commons/text/is-icon-ligature.js +0 -214
- package/lib/commons/text/is-valid-autocomplete.js +0 -118
- package/lib/commons/text/label-text.js +0 -70
- package/lib/commons/text/label-virtual.js +0 -50
- package/lib/commons/text/label.js +0 -19
- package/lib/commons/text/native-element-type.js +0 -101
- package/lib/commons/text/native-text-alternative.js +0 -46
- package/lib/commons/text/native-text-methods.js +0 -136
- package/lib/commons/text/remove-unicode.js +0 -38
- package/lib/commons/text/sanitize.js +0 -21
- package/lib/commons/text/subtree-text.js +0 -74
- package/lib/commons/text/title-text.js +0 -33
- package/lib/commons/text/unicode.js +0 -85
- package/lib/commons/text/unsupported.js +0 -5
- package/lib/commons/text/visible-text-nodes.js +0 -27
- package/lib/commons/text/visible-virtual.js +0 -46
- package/lib/commons/text/visible.js +0 -18
- package/lib/core/base/audit.js +0 -767
- package/lib/core/base/cache.js +0 -30
- package/lib/core/base/check-result.js +0 -31
- package/lib/core/base/check.js +0 -215
- package/lib/core/base/context.js +0 -280
- package/lib/core/base/metadata-function-map.js +0 -353
- package/lib/core/base/rule-result.js +0 -39
- package/lib/core/base/rule.js +0 -611
- package/lib/core/base/virtual-node/abstract-virtual-node.js +0 -43
- package/lib/core/base/virtual-node/serial-virtual-node.js +0 -117
- package/lib/core/base/virtual-node/virtual-node.js +0 -194
- package/lib/core/constants.js +0 -70
- package/lib/core/core.js +0 -91
- package/lib/core/imports/index.js +0 -39
- package/lib/core/index.js +0 -40
- package/lib/core/log.js +0 -13
- package/lib/core/public/cleanup.js +0 -51
- package/lib/core/public/configure.js +0 -134
- package/lib/core/public/frame-messenger.js +0 -5
- package/lib/core/public/get-rules.js +0 -29
- package/lib/core/public/load.js +0 -65
- package/lib/core/public/plugins.js +0 -39
- package/lib/core/public/reporter.js +0 -25
- package/lib/core/public/reset.js +0 -13
- package/lib/core/public/run-rules.js +0 -83
- package/lib/core/public/run-virtual-rule.js +0 -63
- package/lib/core/public/run.js +0 -186
- package/lib/core/public/setup.js +0 -20
- package/lib/core/public/teardown.js +0 -21
- package/lib/core/reporters/helpers/failure-summary.js +0 -33
- package/lib/core/reporters/helpers/get-environment-data.js +0 -39
- package/lib/core/reporters/helpers/incomplete-fallback-msg.js +0 -12
- package/lib/core/reporters/helpers/index.js +0 -21
- package/lib/core/reporters/helpers/process-aggregate.js +0 -110
- package/lib/core/reporters/na.js +0 -24
- package/lib/core/reporters/no-passes.js +0 -20
- package/lib/core/reporters/raw-env.js +0 -17
- package/lib/core/reporters/raw.js +0 -32
- package/lib/core/reporters/v1.js +0 -33
- package/lib/core/reporters/v2.js +0 -19
- package/lib/core/utils/aggregate-checks.js +0 -90
- package/lib/core/utils/aggregate-node-results.js +0 -65
- package/lib/core/utils/aggregate-result.js +0 -39
- package/lib/core/utils/aggregate.js +0 -21
- package/lib/core/utils/are-styles-set.js +0 -18
- package/lib/core/utils/assert.js +0 -12
- package/lib/core/utils/check-helper.js +0 -36
- package/lib/core/utils/clone.js +0 -28
- package/lib/core/utils/closest.js +0 -30
- package/lib/core/utils/collect-results-from-frames.js +0 -84
- package/lib/core/utils/contains.js +0 -46
- package/lib/core/utils/css-parser.js +0 -9
- package/lib/core/utils/deep-merge.js +0 -31
- package/lib/core/utils/dq-element.js +0 -131
- package/lib/core/utils/element-matches.js +0 -43
- package/lib/core/utils/escape-selector.js +0 -79
- package/lib/core/utils/extend-meta-data.js +0 -20
- package/lib/core/utils/filter-html-attrs.js +0 -75
- package/lib/core/utils/finalize-result.js +0 -28
- package/lib/core/utils/find-by.js +0 -16
- package/lib/core/utils/frame-messenger/assert-window.js +0 -21
- package/lib/core/utils/frame-messenger/channel-store.js +0 -23
- package/lib/core/utils/frame-messenger/create-responder.js +0 -15
- package/lib/core/utils/frame-messenger/message-handler.js +0 -72
- package/lib/core/utils/frame-messenger/message-id.js +0 -22
- package/lib/core/utils/frame-messenger/message-parser.js +0 -109
- package/lib/core/utils/frame-messenger/post-message.js +0 -54
- package/lib/core/utils/frame-messenger/process-error.js +0 -30
- package/lib/core/utils/frame-messenger.js +0 -40
- package/lib/core/utils/get-all-checks.js +0 -13
- package/lib/core/utils/get-ancestry.js +0 -31
- package/lib/core/utils/get-base-lang.js +0 -18
- package/lib/core/utils/get-check-message.js +0 -24
- package/lib/core/utils/get-check-option.js +0 -41
- package/lib/core/utils/get-flattened-tree.js +0 -151
- package/lib/core/utils/get-friendly-uri-end.js +0 -143
- package/lib/core/utils/get-node-attributes.js +0 -22
- package/lib/core/utils/get-node-from-tree.js +0 -14
- package/lib/core/utils/get-root-node.js +0 -17
- package/lib/core/utils/get-rule.js +0 -17
- package/lib/core/utils/get-scroll-state.js +0 -43
- package/lib/core/utils/get-scroll.js +0 -41
- package/lib/core/utils/get-selector.js +0 -395
- package/lib/core/utils/get-shadow-selector.js +0 -31
- package/lib/core/utils/get-standards.js +0 -6
- package/lib/core/utils/get-stylesheet-factory.js +0 -53
- package/lib/core/utils/get-xpath.js +0 -84
- package/lib/core/utils/index.js +0 -90
- package/lib/core/utils/inject-style.js +0 -33
- package/lib/core/utils/is-hidden.js +0 -55
- package/lib/core/utils/is-html-element.js +0 -137
- package/lib/core/utils/is-node-in-context.js +0 -46
- package/lib/core/utils/is-shadow-root.js +0 -40
- package/lib/core/utils/is-xhtml.js +0 -15
- package/lib/core/utils/matches.js +0 -263
- package/lib/core/utils/memoize.js +0 -22
- package/lib/core/utils/merge-results.js +0 -134
- package/lib/core/utils/node-sorter.js +0 -23
- package/lib/core/utils/parse-crossorigin-stylesheet.js +0 -66
- package/lib/core/utils/parse-sameorigin-stylesheet.js +0 -100
- package/lib/core/utils/parse-stylesheet.js +0 -75
- package/lib/core/utils/performance-timer.js +0 -126
- package/lib/core/utils/pollyfills.js +0 -347
- package/lib/core/utils/preload-cssom.js +0 -249
- package/lib/core/utils/preload-media.js +0 -70
- package/lib/core/utils/preload.js +0 -150
- package/lib/core/utils/process-message.js +0 -77
- package/lib/core/utils/publish-metadata.js +0 -109
- package/lib/core/utils/query-selector-all-filter.js +0 -104
- package/lib/core/utils/query-selector-all.js +0 -15
- package/lib/core/utils/queue.js +0 -137
- package/lib/core/utils/respondable.js +0 -108
- package/lib/core/utils/rule-should-run.js +0 -83
- package/lib/core/utils/select.js +0 -87
- package/lib/core/utils/send-command-to-frame.js +0 -65
- package/lib/core/utils/set-scroll-state.js +0 -21
- package/lib/core/utils/to-array.js +0 -10
- package/lib/core/utils/token-list.js +0 -15
- package/lib/core/utils/unique-array.js +0 -13
- package/lib/core/utils/uuid.js +0 -253
- package/lib/core/utils/valid-input-type.js +0 -35
- package/lib/core/utils/valid-langs.js +0 -105
- package/lib/intro.stub +0 -15
- package/lib/misc/any-failure-summary.json +0 -6
- package/lib/misc/incomplete-fallback.json +0 -3
- package/lib/misc/none-failure-summary.json +0 -6
- package/lib/outro.stub +0 -2
- package/lib/rules/accesskeys.json +0 -13
- package/lib/rules/area-alt.json +0 -22
- package/lib/rules/aria-allowed-attr-matches.js +0 -15
- package/lib/rules/aria-allowed-attr.json +0 -12
- package/lib/rules/aria-allowed-role-matches.js +0 -12
- package/lib/rules/aria-allowed-role.json +0 -14
- package/lib/rules/aria-command-name.json +0 -18
- package/lib/rules/aria-dialog-name.json +0 -13
- package/lib/rules/aria-has-attr-matches.js +0 -9
- package/lib/rules/aria-hidden-body.json +0 -14
- package/lib/rules/aria-hidden-focus-matches.js +0 -22
- package/lib/rules/aria-hidden-focus.json +0 -18
- package/lib/rules/aria-input-field-name.json +0 -13
- package/lib/rules/aria-meter-name.json +0 -13
- package/lib/rules/aria-progressbar-name.json +0 -13
- package/lib/rules/aria-required-attr.json +0 -12
- package/lib/rules/aria-required-children-matches.js +0 -8
- package/lib/rules/aria-required-children.json +0 -13
- package/lib/rules/aria-required-parent-matches.js +0 -8
- package/lib/rules/aria-required-parent.json +0 -13
- package/lib/rules/aria-roledescription.json +0 -12
- package/lib/rules/aria-roles.json +0 -13
- package/lib/rules/aria-text.json +0 -12
- package/lib/rules/aria-toggle-field-name.json +0 -18
- package/lib/rules/aria-tooltip-name.json +0 -18
- package/lib/rules/aria-treeitem-name.json +0 -18
- package/lib/rules/aria-valid-attr-value.json +0 -12
- package/lib/rules/aria-valid-attr.json +0 -12
- package/lib/rules/audio-caption.json +0 -20
- package/lib/rules/autocomplete-matches.js +0 -58
- package/lib/rules/autocomplete-valid.json +0 -12
- package/lib/rules/avoid-inline-spacing.json +0 -12
- package/lib/rules/blink.json +0 -19
- package/lib/rules/button-name.json +0 -26
- package/lib/rules/bypass-matches.js +0 -14
- package/lib/rules/bypass.json +0 -21
- package/lib/rules/color-contrast-matches.js +0 -156
- package/lib/rules/color-contrast.json +0 -13
- package/lib/rules/css-orientation-lock.json +0 -13
- package/lib/rules/data-table-large-matches.js +0 -17
- package/lib/rules/data-table-matches.js +0 -7
- package/lib/rules/definition-list.json +0 -13
- package/lib/rules/dlitem.json +0 -13
- package/lib/rules/document-title.json +0 -13
- package/lib/rules/duplicate-id-active-matches.js +0 -15
- package/lib/rules/duplicate-id-active.json +0 -14
- package/lib/rules/duplicate-id-aria-matches.js +0 -7
- package/lib/rules/duplicate-id-aria.json +0 -14
- package/lib/rules/duplicate-id-misc-matches.js +0 -17
- package/lib/rules/duplicate-id.json +0 -14
- package/lib/rules/empty-heading.json +0 -19
- package/lib/rules/empty-table-header.json +0 -13
- package/lib/rules/focus-order-semantics.json +0 -13
- package/lib/rules/form-field-multiple-labels.json +0 -13
- package/lib/rules/frame-focusable-content-matches.js +0 -9
- package/lib/rules/frame-focusable-content.json +0 -13
- package/lib/rules/frame-tested.json +0 -12
- package/lib/rules/frame-title-has-text-matches.js +0 -8
- package/lib/rules/frame-title-unique.json +0 -13
- package/lib/rules/frame-title.json +0 -24
- package/lib/rules/has-implicit-chromium-role-matches.js +0 -7
- package/lib/rules/heading-matches.js +0 -19
- package/lib/rules/heading-order.json +0 -13
- package/lib/rules/hidden-content.json +0 -13
- package/lib/rules/html-has-lang.json +0 -13
- package/lib/rules/html-lang-valid.json +0 -12
- package/lib/rules/html-namespace-matches.js +0 -7
- package/lib/rules/html-xml-lang-mismatch.json +0 -13
- package/lib/rules/identical-links-same-purpose-matches.js +0 -18
- package/lib/rules/identical-links-same-purpose.json +0 -14
- package/lib/rules/image-alt.json +0 -26
- package/lib/rules/img-redundant-alt.json +0 -12
- package/lib/rules/input-button-name.json +0 -26
- package/lib/rules/input-image-alt.json +0 -20
- package/lib/rules/inserted-into-focus-order-matches.js +0 -7
- package/lib/rules/is-initiator-matches.js +0 -5
- package/lib/rules/label-content-name-mismatch-matches.js +0 -52
- package/lib/rules/label-content-name-mismatch.json +0 -12
- package/lib/rules/label-matches.js +0 -15
- package/lib/rules/label-title-only.json +0 -13
- package/lib/rules/label.json +0 -29
- package/lib/rules/landmark-banner-is-top-level.json +0 -13
- package/lib/rules/landmark-complementary-is-top-level.json +0 -12
- package/lib/rules/landmark-contentinfo-is-top-level.json +0 -13
- package/lib/rules/landmark-has-body-context-matches.js +0 -13
- package/lib/rules/landmark-main-is-top-level.json +0 -12
- package/lib/rules/landmark-no-duplicate-banner.json +0 -12
- package/lib/rules/landmark-no-duplicate-contentinfo.json +0 -12
- package/lib/rules/landmark-no-duplicate-main.json +0 -12
- package/lib/rules/landmark-one-main.json +0 -12
- package/lib/rules/landmark-unique-matches.js +0 -50
- package/lib/rules/landmark-unique.json +0 -13
- package/lib/rules/layout-table-matches.js +0 -8
- package/lib/rules/link-in-text-block-matches.js +0 -21
- package/lib/rules/link-in-text-block.json +0 -14
- package/lib/rules/link-name.json +0 -25
- package/lib/rules/list.json +0 -13
- package/lib/rules/listitem.json +0 -13
- package/lib/rules/marquee.json +0 -13
- package/lib/rules/meta-refresh.json +0 -20
- package/lib/rules/meta-viewport-large.json +0 -14
- package/lib/rules/meta-viewport.json +0 -14
- package/lib/rules/nested-interactive-matches.js +0 -13
- package/lib/rules/nested-interactive.json +0 -12
- package/lib/rules/no-autoplay-audio-matches.js +0 -22
- package/lib/rules/no-autoplay-audio.json +0 -15
- package/lib/rules/no-empty-role-matches.js +0 -13
- package/lib/rules/no-explicit-name-required-matches.js +0 -22
- package/lib/rules/no-naming-method-matches.js +0 -24
- package/lib/rules/no-role-matches.js +0 -5
- package/lib/rules/not-html-matches.js +0 -5
- package/lib/rules/object-alt.json +0 -24
- package/lib/rules/p-as-heading-matches.js +0 -21
- package/lib/rules/p-as-heading.json +0 -13
- package/lib/rules/page-has-heading-one.json +0 -12
- package/lib/rules/presentation-role-conflict-matches.js +0 -7
- package/lib/rules/presentation-role-conflict.json +0 -13
- package/lib/rules/region.json +0 -12
- package/lib/rules/role-img-alt.json +0 -20
- package/lib/rules/scope-attr-valid.json +0 -12
- package/lib/rules/scrollable-region-focusable-matches.js +0 -75
- package/lib/rules/scrollable-region-focusable.json +0 -12
- package/lib/rules/select-name.json +0 -27
- package/lib/rules/server-side-image-map.json +0 -18
- package/lib/rules/skip-link-matches.js +0 -7
- package/lib/rules/skip-link.json +0 -13
- package/lib/rules/svg-img-alt.json +0 -25
- package/lib/rules/svg-namespace-matches.js +0 -18
- package/lib/rules/tabindex.json +0 -12
- package/lib/rules/table-duplicate-name.json +0 -12
- package/lib/rules/table-fake-caption.json +0 -20
- package/lib/rules/td-has-header.json +0 -20
- package/lib/rules/td-headers-attr.json +0 -12
- package/lib/rules/th-has-data-cells.json +0 -13
- package/lib/rules/valid-lang.json +0 -13
- package/lib/rules/video-caption.json +0 -19
- package/lib/rules/window-is-top-matches.js +0 -8
- package/lib/rules/xml-lang-mismatch-matches.js +0 -14
- package/lib/standards/aria-attrs.js +0 -209
- package/lib/standards/aria-roles.js +0 -835
- package/lib/standards/css-colors.js +0 -153
- package/lib/standards/dpub-roles.js +0 -219
- package/lib/standards/graphics-roles.js +0 -22
- package/lib/standards/html-elms.js +0 -933
- package/lib/standards/index.js +0 -37
- package/sri-history.json +0 -274
- package/typings/axe-core/axe-core-tests.js +0 -203
- 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
|
-
}
|