@axe-core/react 4.4.0 → 4.4.1-alpha.246

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/dist/index.js CHANGED
@@ -260,6 +260,8 @@ function addComponent(component) {
260
260
  var reactInstanceDebugID = reactInstance._debugID;
261
261
  var reactFiberInstance = component._reactInternalFiber || {};
262
262
  var reactFiberInstanceDebugID = reactFiberInstance._debugID;
263
+ var reactInternals = component._reactInternals || {};
264
+ var reactInternalsDebugID = reactInternals._debugID;
263
265
  if (reactInstanceDebugID && !components[reactInstanceDebugID]) {
264
266
  components[reactInstanceDebugID] = component;
265
267
  componentAfterRender(component);
@@ -269,6 +271,10 @@ function addComponent(component) {
269
271
  components[reactFiberInstanceDebugID] = component;
270
272
  componentAfterRender(component);
271
273
  }
274
+ else if (reactInternalsDebugID && !components[reactInternalsDebugID]) {
275
+ components[reactInternalsDebugID] = component;
276
+ componentAfterRender(component);
277
+ }
272
278
  }
273
279
  /**
274
280
  * Log axe violations to console.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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","sourcesContent":["/* global Promise */\nimport axeCore = require('axe-core');\nimport rIC = require('requestidlecallback');\nimport after = require('./after');\n\nconst requestIdleCallback = rIC.request;\nconst cancelIdleCallback = rIC.cancel;\n\nlet React;\nlet ReactDOM;\nlet logger;\n\n// contrasted against Chrome default color of #ffffff\nconst lightTheme = {\n serious: '#d93251',\n minor: '#d24700',\n text: 'black'\n};\n\n// contrasted against Safari dark mode color of #535353\nconst darkTheme = {\n serious: '#ffb3b3',\n minor: '#ffd500',\n text: 'white'\n};\n\nconst theme =\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? darkTheme\n : lightTheme;\n\nconst boldCourier = 'font-weight:bold;font-family:Courier;';\nconst critical = `color:${theme.serious};font-weight:bold;`;\nconst serious = `color:${theme.serious};font-weight:normal;`;\nconst moderate = `color:${theme.minor};font-weight:bold;`;\nconst minor = `color:${theme.minor};font-weight:normal;`;\nconst defaultReset = `font-color:${theme.text};font-weight:normal;`;\n\nlet idleId: number | undefined;\nlet timeout: number;\nlet context: axeCore.ElementContext | undefined;\nlet conf: ReactSpec;\nlet _createElement: typeof React.createElement;\nconst components: { [id: number]: React.Component } = {};\nconst nodes: Node[] = [document.documentElement];\nconst cache: { [key: string]: string } = {};\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n// @see https://davidwalsh.name/javascript-debounce-function\nfunction debounce(func: Function, wait: number, immediate?: boolean): Function {\n let _timeout;\n return function (...args): void {\n const later = (): void => {\n _timeout = null;\n if (!immediate) func.apply(this, args);\n };\n const callNow = immediate && !_timeout;\n clearTimeout(_timeout);\n _timeout = setTimeout(later, wait);\n if (callNow) func.apply(this, args);\n };\n}\n\n/**\n * Return the entire parent tree of a node (from HTML down).\n * @param {Node} node\n * @return {Node[]}\n */\nfunction getPath(node: Node): Node[] {\n const path: Node[] = [node];\n while (node && node.nodeName.toLowerCase() !== 'html') {\n path.push(node.parentNode);\n node = node.parentNode;\n }\n if (!node || !node.parentNode) {\n return null;\n }\n return path.reverse();\n}\n\n/**\n * Find the common parent of an array of nodes.\n * @param {Node[]} nodes\n * @return {Node}\n */\nfunction getCommonParent(nodes: Node[]): Node {\n let path: Node[] | null;\n let nextPath: Node[] | null;\n if (nodes.length === 1) {\n return nodes.pop();\n }\n while (!path && nodes.length) {\n path = getPath(nodes.pop());\n }\n while (nodes.length) {\n nextPath = getPath(nodes.pop());\n if (nextPath) {\n path = path.filter((node: Node, index: number) => {\n return nextPath.length > index && nextPath[index] === node;\n });\n }\n }\n return path ? path[path.length - 1] : document;\n}\n\n/**\n * Log the axe result node to the console\n * @param {NodeResult} node\n * @param {Function} logFn console log function to use (error, warn, log, etc.)\n */\nfunction logElement(\n node: axeCore.NodeResult | axeCore.RelatedNode,\n logFn: (...args) => void\n): void {\n const el = document.querySelector(node.target.toString());\n if (!el) {\n logFn('Selector: %c%s', boldCourier, node.target.toString());\n } else {\n logFn('Element: %o', el);\n }\n}\n\n/**\n * Log the axe result node html tot he console\n * @param {NodeResult} node\n */\nfunction logHtml(node: axeCore.NodeResult | axeCore.RelatedNode): void {\n console.log('HTML: %c%s', boldCourier, node.html);\n}\n\n/**\n * Log the failure message of a node result.\n * @param {NodeResult} node\n * @param {String} key which check array to log from (any, all, none)\n */\nfunction logFailureMessage(\n node: axeCore.NodeResult,\n key: AxeCoreNodeResultKey\n): void {\n // this exists on axe but we don't export it as part of the typescript\n // namespace, so just let me use it as I need\n const message: string = ((axeCore as unknown) as AxeWithAudit)._audit.data.failureSummaries[\n key\n ].failureMessage(node[key].map(check => check.message || ''));\n\n console.error(message);\n}\n\n/**\n * Log as a group the node result and failure message.\n * @param {NodeResult} node\n * @param {String} key which check array to log from (any, all, none)\n */\nfunction failureSummary(\n node: axeCore.NodeResult,\n key: AxeCoreNodeResultKey\n): void {\n if (node[key].length > 0) {\n logElement(node, console.groupCollapsed);\n logHtml(node);\n logFailureMessage(node, key);\n\n let relatedNodes: axeCore.RelatedNode[] = [];\n node[key].forEach(check => {\n relatedNodes = relatedNodes.concat(check.relatedNodes);\n });\n\n if (relatedNodes.length > 0) {\n console.groupCollapsed('Related nodes');\n relatedNodes.forEach(relatedNode => {\n logElement(relatedNode, console.log);\n logHtml(relatedNode);\n });\n console.groupEnd();\n }\n\n console.groupEnd();\n }\n}\n\n/**\n * Run axe against the passed in node and report violations\n * @param {*} node\n * @param {Number} timeout force call of axe.run after the timeout has passed (if not called before)\n * @return {Promise}\n */\nfunction checkAndReport(node: Node, timeout: number): Promise<void> {\n const disableDeduplicate = conf['disableDeduplicate'];\n\n if (idleId) {\n cancelIdleCallback(idleId);\n idleId = undefined;\n }\n\n return new Promise((resolve, reject) => {\n nodes.push(node);\n idleId = requestIdleCallback(\n () => {\n let n: axeCore.ElementContext | Node = context;\n if (n === undefined) {\n n = getCommonParent(nodes.filter(node => node.isConnected));\n if (n.nodeName.toLowerCase() === 'html') {\n // if the only common parent is the body, then analyze the whole page\n n = document;\n }\n }\n axeCore.configure({ allowedOrigins: ['<unsafe_all_origins>'] });\n axeCore.run(n, { reporter: 'v2' }, function (\n error: Error,\n results: axeCore.AxeResults\n ) {\n if (error) {\n return reject(error);\n }\n\n results.violations = results.violations.filter(result => {\n result.nodes = result.nodes.filter(node => {\n const key: string = node.target.toString() + result.id;\n const retVal = !cache[key];\n cache[key] = key;\n return disableDeduplicate || retVal;\n });\n return !!result.nodes.length;\n });\n\n if (results.violations.length) {\n logger(results);\n }\n\n resolve();\n });\n },\n {\n timeout: timeout\n }\n );\n });\n}\n\n/**\n * Check the node for violations.\n * @param {Component} component\n */\nfunction checkNode(component: React.Component): void {\n let node: Node;\n\n try {\n node = ReactDOM.findDOMNode(component);\n } catch (e) {\n console.group('%caxe error: could not check node', critical);\n console.group('%cComponent', serious);\n console.error(component);\n console.groupEnd();\n console.group('%cError', serious);\n console.error(e);\n console.groupEnd();\n console.groupEnd();\n }\n\n if (node) {\n checkAndReport(node, timeout);\n }\n}\n\n/**\n * Check the component for violations whenever the DOM updates\n * @param {Component} component\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction componentAfterRender(component: any): void {\n const debounceCheckNode: Function = debounce(checkNode, timeout, true);\n after(component, 'componentDidMount', debounceCheckNode);\n after(component, 'componentDidUpdate', debounceCheckNode);\n}\n\n/**\n * Add a component to track.\n * @param {Component} component\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addComponent(component: any): void {\n const reactInstance = component._reactInternalInstance || {};\n const reactInstanceDebugID = reactInstance._debugID;\n const reactFiberInstance = component._reactInternalFiber || {};\n const reactFiberInstanceDebugID = reactFiberInstance._debugID;\n\n if (reactInstanceDebugID && !components[reactInstanceDebugID]) {\n components[reactInstanceDebugID] = component;\n componentAfterRender(component);\n } else if (\n reactFiberInstanceDebugID &&\n !components[reactFiberInstanceDebugID]\n ) {\n components[reactFiberInstanceDebugID] = component;\n componentAfterRender(component);\n }\n}\n\n/**\n * Log axe violations to console.\n * @param {AxeResults} results\n */\nfunction logToConsole(results: axeCore.AxeResults): void {\n console.group('%cNew axe issues', serious);\n results.violations.forEach(result => {\n let fmt: string;\n switch (result.impact) {\n case 'critical':\n fmt = critical;\n break;\n case 'serious':\n fmt = serious;\n break;\n case 'moderate':\n fmt = moderate;\n break;\n case 'minor':\n fmt = minor;\n break;\n default:\n fmt = minor;\n break;\n }\n console.groupCollapsed(\n '%c%s: %c%s %s',\n fmt,\n result.impact,\n defaultReset,\n result.help,\n result.helpUrl\n );\n result.nodes.forEach(node => {\n failureSummary(node, 'any');\n failureSummary(node, 'none');\n });\n console.groupEnd();\n });\n console.groupEnd();\n}\n\n/**\n * To support paramater of type runOnly\n */\ninterface ReactSpec extends axeCore.Spec {\n runOnly?: string[];\n disableDeduplicate?: boolean;\n}\n\n/**\n * Run axe against all changes made in a React app.\n * @parma {React} _React React instance\n * @param {ReactDOM} _ReactDOM ReactDOM instance\n * @param {Number} _timeout debounce timeout in milliseconds\n * @parma {Spec} conf React axe.configure Spec object\n * @param {ElementContext} _context axe ElementContent object\n * @param {Function} _logger Logger implementation\n */\nfunction reactAxe(\n _React: typeof React,\n _ReactDOM: typeof ReactDOM,\n _timeout: number,\n _conf = {} as ReactSpec,\n _context?: axeCore.ElementContext,\n _logger?: (results: axeCore.AxeResults) => void\n): Promise<void> {\n React = _React;\n ReactDOM = _ReactDOM;\n timeout = _timeout;\n context = _context;\n conf = _conf;\n logger = _logger || logToConsole;\n\n const runOnly = conf['runOnly'];\n if (runOnly) {\n conf['rules'] = axeCore\n .getRules(runOnly)\n .map(rule => ({ ...rule, id: rule.ruleId, enabled: true }));\n conf['disableOtherRules'] = true;\n }\n\n if (Object.keys(conf).length > 0) {\n axeCore.configure(conf);\n }\n axeCore.configure({ allowedOrigins: ['<unsafe_all_origins>'] });\n if (!_createElement) {\n _createElement = React.createElement;\n\n React.createElement = function (...args): React.Component {\n const reactEl = _createElement.apply(this, args);\n\n if (reactEl._owner && reactEl._owner._instance) {\n addComponent(reactEl._owner._instance);\n } else if (reactEl._owner && reactEl._owner.stateNode) {\n addComponent(reactEl._owner.stateNode);\n }\n\n return reactEl;\n };\n }\n\n return checkAndReport(document.body, timeout);\n}\n\nexport = reactAxe;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oBAAoB;AACpB,kCAAqC;AACrC,yCAA4C;AAC5C,+BAAkC;AAElC,IAAM,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAC;AACxC,IAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC;AAEtC,IAAI,KAAK,CAAC;AACV,IAAI,QAAQ,CAAC;AACb,IAAI,MAAM,CAAC;AAEX,qDAAqD;AACrD,IAAM,UAAU,GAAG;IACjB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,uDAAuD;AACvD,IAAM,SAAS,GAAG;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,IAAM,KAAK,GACT,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO;IAC5E,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,UAAU,CAAC;AAEjB,IAAM,WAAW,GAAG,uCAAuC,CAAC;AAC5D,IAAM,QAAQ,GAAG,WAAS,KAAK,CAAC,OAAO,uBAAoB,CAAC;AAC5D,IAAM,OAAO,GAAG,WAAS,KAAK,CAAC,OAAO,yBAAsB,CAAC;AAC7D,IAAM,QAAQ,GAAG,WAAS,KAAK,CAAC,KAAK,uBAAoB,CAAC;AAC1D,IAAM,KAAK,GAAG,WAAS,KAAK,CAAC,KAAK,yBAAsB,CAAC;AACzD,IAAM,YAAY,GAAG,gBAAc,KAAK,CAAC,IAAI,yBAAsB,CAAC;AAEpE,IAAI,MAA0B,CAAC;AAC/B,IAAI,OAAe,CAAC;AACpB,IAAI,OAA2C,CAAC;AAChD,IAAI,IAAe,CAAC;AACpB,IAAI,cAA0C,CAAC;AAC/C,IAAM,UAAU,GAAsC,EAAE,CAAC;AACzD,IAAM,KAAK,GAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AACjD,IAAM,KAAK,GAA8B,EAAE,CAAC;AAE5C,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,yCAAyC;AACzC,4DAA4D;AAC5D,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY,EAAE,SAAmB;IACjE,IAAI,QAAQ,CAAC;IACb,OAAO;QAAA,iBASN;QATgB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,IAAM,KAAK,GAAG;YACZ,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC;QACF,IAAM,OAAO,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC;QACvC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvB,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,IAAU;IACzB,IAAM,IAAI,GAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QAC7B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,IAAmB,CAAC;IACxB,IAAI,QAAuB,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;KACpB;IACD,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;QAC5B,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;KAC7B;IACD,OAAO,KAAK,CAAC,MAAM,EAAE;QACnB,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,QAAQ,EAAE;YACZ,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,IAAU,EAAE,KAAa;gBAC3C,OAAO,QAAQ,CAAC,MAAM,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;YAC7D,CAAC,CAAC,CAAC;SACJ;KACF;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CACjB,IAA8C,EAC9C,KAAwB;IAExB,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,EAAE;QACP,KAAK,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC9D;SAAM;QACL,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;KAC1B;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,IAA8C;IAC7D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,IAAwB,EACxB,GAAyB;IAEzB,sEAAsE;IACtE,6CAA6C;IAC7C,IAAM,OAAO,GACX,OACD,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,cAAc,CAChD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,OAAO,IAAI,EAAE,EAAnB,CAAmB,CAAC,CAC5C,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CACrB,IAAwB,EACxB,GAAyB;IAEzB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACxB,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,cAAY,GAA0B,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;YACrB,cAAY,GAAG,cAAY,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,IAAI,cAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YACxC,cAAY,CAAC,OAAO,CAAC,UAAA,WAAW;gBAC9B,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,EAAE,CAAC;SACpB;QAED,OAAO,CAAC,QAAQ,EAAE,CAAC;KACpB;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAU,EAAE,OAAe;IACjD,IAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEtD,IAAI,MAAM,EAAE;QACV,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,GAAG,SAAS,CAAC;KACpB;IAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,GAAG,mBAAmB,CAC1B;YACE,IAAI,CAAC,GAAkC,OAAO,CAAC;YAC/C,IAAI,CAAC,KAAK,SAAS,EAAE;gBACnB,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,EAAhB,CAAgB,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;oBACvC,qEAAqE;oBACrE,CAAC,GAAG,QAAQ,CAAC;iBACd;aACF;YACD,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CACT,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClB,UAAU,KAAY,EAAE,OAA2B;gBACjD,IAAI,KAAK,EAAE;oBACT,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;iBACtB;gBAED,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,MAAM;oBACnD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI;wBACrC,IAAM,GAAG,GAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;wBACvD,IAAM,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;wBACjB,OAAO,kBAAkB,IAAI,MAAM,CAAC;oBACtC,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC7B,MAAM,CAAC,OAAO,CAAC,CAAC;iBACjB;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC,EACD;YACE,OAAO,EAAE,OAAO;SACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,SAA0B;IAC3C,IAAI,IAAU,CAAC;IAEf,IAAI;QACF,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;KACxC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,IAAI,IAAI,EAAE;QACR,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC/B;AACH,CAAC;AAED;;;GAGG;AACH,8DAA8D;AAC9D,SAAS,oBAAoB,CAAC,SAAc;IAC1C,IAAM,iBAAiB,GAAa,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvE,KAAK,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IACzD,KAAK,CAAC,SAAS,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,8DAA8D;AAC9D,SAAS,YAAY,CAAC,SAAc;IAClC,IAAM,aAAa,GAAG,SAAS,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAC7D,IAAM,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAC;IACpD,IAAM,kBAAkB,GAAG,SAAS,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC/D,IAAM,yBAAyB,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC9D,IAAM,cAAc,GAAG,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC;IACvD,IAAM,qBAAqB,GAAG,cAAc,CAAC,QAAQ,CAAC;IAEtD,IAAI,oBAAoB,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;QAC7D,UAAU,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAC;QAC7C,oBAAoB,CAAC,SAAS,CAAC,CAAC;KACjC;SAAM,IACL,yBAAyB;QACzB,CAAC,UAAU,CAAC,yBAAyB,CAAC,EACtC;QACA,UAAU,CAAC,yBAAyB,CAAC,GAAG,SAAS,CAAC;QAClD,oBAAoB,CAAC,SAAS,CAAC,CAAC;KACjC;SAAM,IAAI,qBAAqB,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE;QACtE,UAAU,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;QAC9C,oBAAoB,CAAC,SAAS,CAAC,CAAC;KACjC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,OAA2B;IAC/C,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;QAC/B,IAAI,GAAW,CAAC;QAChB,QAAQ,MAAM,CAAC,MAAM,EAAE;YACrB,KAAK,UAAU;gBACb,GAAG,GAAG,QAAQ,CAAC;gBACf,MAAM;YACR,KAAK,SAAS;gBACZ,GAAG,GAAG,OAAO,CAAC;gBACd,MAAM;YACR,KAAK,UAAU;gBACb,GAAG,GAAG,QAAQ,CAAC;gBACf,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,GAAG,KAAK,CAAC;gBACZ,MAAM;YACR;gBACE,GAAG,GAAG,KAAK,CAAC;gBACZ,MAAM;SACT;QACD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf,GAAG,EACH,MAAM,CAAC,MAAM,EACb,YAAY,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,CACf,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;YACvB,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5B,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC;AACrB,CAAC;AAUD;;;;;;;;GAQG;AACH,SAAS,QAAQ,CACf,MAAoB,EACpB,SAA0B,EAC1B,QAAgB,EAChB,KAAuB,EACvB,QAAiC,EACjC,OAA+C;IAF/C,sBAAA,EAAA,QAAQ,EAAe;IAIvB,KAAK,GAAG,MAAM,CAAC;IACf,QAAQ,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,QAAQ,CAAC;IACnB,IAAI,GAAG,KAAK,CAAC;IACb,MAAM,GAAG,OAAO,IAAI,YAAY,CAAC;IAEjC,IAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO;aACpB,QAAQ,CAAC,OAAO,CAAC;aACjB,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,uBAAM,IAAI,KAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,IAAG,EAA7C,CAA6C,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;KAClC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACzB;IACD,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,EAAE;QACnB,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC;QAErC,KAAK,CAAC,aAAa,GAAG;YAAU,cAAO;iBAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;gBAAP,yBAAO;;YACrC,IAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEjD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC9C,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACxC;iBAAM,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;gBACrD,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACxC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;KACH;IAED,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,iBAAS,QAAQ,CAAC","sourcesContent":["/* global Promise */\nimport axeCore = require('axe-core');\nimport rIC = require('requestidlecallback');\nimport after = require('./after');\n\nconst requestIdleCallback = rIC.request;\nconst cancelIdleCallback = rIC.cancel;\n\nlet React;\nlet ReactDOM;\nlet logger;\n\n// contrasted against Chrome default color of #ffffff\nconst lightTheme = {\n serious: '#d93251',\n minor: '#d24700',\n text: 'black'\n};\n\n// contrasted against Safari dark mode color of #535353\nconst darkTheme = {\n serious: '#ffb3b3',\n minor: '#ffd500',\n text: 'white'\n};\n\nconst theme =\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? darkTheme\n : lightTheme;\n\nconst boldCourier = 'font-weight:bold;font-family:Courier;';\nconst critical = `color:${theme.serious};font-weight:bold;`;\nconst serious = `color:${theme.serious};font-weight:normal;`;\nconst moderate = `color:${theme.minor};font-weight:bold;`;\nconst minor = `color:${theme.minor};font-weight:normal;`;\nconst defaultReset = `font-color:${theme.text};font-weight:normal;`;\n\nlet idleId: number | undefined;\nlet timeout: number;\nlet context: axeCore.ElementContext | undefined;\nlet conf: ReactSpec;\nlet _createElement: typeof React.createElement;\nconst components: { [id: number]: React.Component } = {};\nconst nodes: Node[] = [document.documentElement];\nconst cache: { [key: string]: string } = {};\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n// @see https://davidwalsh.name/javascript-debounce-function\nfunction debounce(func: Function, wait: number, immediate?: boolean): Function {\n let _timeout;\n return function (...args): void {\n const later = (): void => {\n _timeout = null;\n if (!immediate) func.apply(this, args);\n };\n const callNow = immediate && !_timeout;\n clearTimeout(_timeout);\n _timeout = setTimeout(later, wait);\n if (callNow) func.apply(this, args);\n };\n}\n\n/**\n * Return the entire parent tree of a node (from HTML down).\n * @param {Node} node\n * @return {Node[]}\n */\nfunction getPath(node: Node): Node[] {\n const path: Node[] = [node];\n while (node && node.nodeName.toLowerCase() !== 'html') {\n path.push(node.parentNode);\n node = node.parentNode;\n }\n if (!node || !node.parentNode) {\n return null;\n }\n return path.reverse();\n}\n\n/**\n * Find the common parent of an array of nodes.\n * @param {Node[]} nodes\n * @return {Node}\n */\nfunction getCommonParent(nodes: Node[]): Node {\n let path: Node[] | null;\n let nextPath: Node[] | null;\n if (nodes.length === 1) {\n return nodes.pop();\n }\n while (!path && nodes.length) {\n path = getPath(nodes.pop());\n }\n while (nodes.length) {\n nextPath = getPath(nodes.pop());\n if (nextPath) {\n path = path.filter((node: Node, index: number) => {\n return nextPath.length > index && nextPath[index] === node;\n });\n }\n }\n return path ? path[path.length - 1] : document;\n}\n\n/**\n * Log the axe result node to the console\n * @param {NodeResult} node\n * @param {Function} logFn console log function to use (error, warn, log, etc.)\n */\nfunction logElement(\n node: axeCore.NodeResult | axeCore.RelatedNode,\n logFn: (...args) => void\n): void {\n const el = document.querySelector(node.target.toString());\n if (!el) {\n logFn('Selector: %c%s', boldCourier, node.target.toString());\n } else {\n logFn('Element: %o', el);\n }\n}\n\n/**\n * Log the axe result node html tot he console\n * @param {NodeResult} node\n */\nfunction logHtml(node: axeCore.NodeResult | axeCore.RelatedNode): void {\n console.log('HTML: %c%s', boldCourier, node.html);\n}\n\n/**\n * Log the failure message of a node result.\n * @param {NodeResult} node\n * @param {String} key which check array to log from (any, all, none)\n */\nfunction logFailureMessage(\n node: axeCore.NodeResult,\n key: AxeCoreNodeResultKey\n): void {\n // this exists on axe but we don't export it as part of the typescript\n // namespace, so just let me use it as I need\n const message: string = (\n axeCore as unknown as AxeWithAudit\n )._audit.data.failureSummaries[key].failureMessage(\n node[key].map(check => check.message || '')\n );\n\n console.error(message);\n}\n\n/**\n * Log as a group the node result and failure message.\n * @param {NodeResult} node\n * @param {String} key which check array to log from (any, all, none)\n */\nfunction failureSummary(\n node: axeCore.NodeResult,\n key: AxeCoreNodeResultKey\n): void {\n if (node[key].length > 0) {\n logElement(node, console.groupCollapsed);\n logHtml(node);\n logFailureMessage(node, key);\n\n let relatedNodes: axeCore.RelatedNode[] = [];\n node[key].forEach(check => {\n relatedNodes = relatedNodes.concat(check.relatedNodes);\n });\n\n if (relatedNodes.length > 0) {\n console.groupCollapsed('Related nodes');\n relatedNodes.forEach(relatedNode => {\n logElement(relatedNode, console.log);\n logHtml(relatedNode);\n });\n console.groupEnd();\n }\n\n console.groupEnd();\n }\n}\n\n/**\n * Run axe against the passed in node and report violations\n * @param {*} node\n * @param {Number} timeout force call of axe.run after the timeout has passed (if not called before)\n * @return {Promise}\n */\nfunction checkAndReport(node: Node, timeout: number): Promise<void> {\n const disableDeduplicate = conf['disableDeduplicate'];\n\n if (idleId) {\n cancelIdleCallback(idleId);\n idleId = undefined;\n }\n\n return new Promise((resolve, reject) => {\n nodes.push(node);\n idleId = requestIdleCallback(\n () => {\n let n: axeCore.ElementContext | Node = context;\n if (n === undefined) {\n n = getCommonParent(nodes.filter(node => node.isConnected));\n if (n.nodeName.toLowerCase() === 'html') {\n // if the only common parent is the body, then analyze the whole page\n n = document;\n }\n }\n axeCore.configure({ allowedOrigins: ['<unsafe_all_origins>'] });\n axeCore.run(\n n,\n { reporter: 'v2' },\n function (error: Error, results: axeCore.AxeResults) {\n if (error) {\n return reject(error);\n }\n\n results.violations = results.violations.filter(result => {\n result.nodes = result.nodes.filter(node => {\n const key: string = node.target.toString() + result.id;\n const retVal = !cache[key];\n cache[key] = key;\n return disableDeduplicate || retVal;\n });\n return !!result.nodes.length;\n });\n\n if (results.violations.length) {\n logger(results);\n }\n\n resolve();\n }\n );\n },\n {\n timeout: timeout\n }\n );\n });\n}\n\n/**\n * Check the node for violations.\n * @param {Component} component\n */\nfunction checkNode(component: React.Component): void {\n let node: Node;\n\n try {\n node = ReactDOM.findDOMNode(component);\n } catch (e) {\n console.group('%caxe error: could not check node', critical);\n console.group('%cComponent', serious);\n console.error(component);\n console.groupEnd();\n console.group('%cError', serious);\n console.error(e);\n console.groupEnd();\n console.groupEnd();\n }\n\n if (node) {\n checkAndReport(node, timeout);\n }\n}\n\n/**\n * Check the component for violations whenever the DOM updates\n * @param {Component} component\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction componentAfterRender(component: any): void {\n const debounceCheckNode: Function = debounce(checkNode, timeout, true);\n after(component, 'componentDidMount', debounceCheckNode);\n after(component, 'componentDidUpdate', debounceCheckNode);\n}\n\n/**\n * Add a component to track.\n * @param {Component} component\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addComponent(component: any): void {\n const reactInstance = component._reactInternalInstance || {};\n const reactInstanceDebugID = reactInstance._debugID;\n const reactFiberInstance = component._reactInternalFiber || {};\n const reactFiberInstanceDebugID = reactFiberInstance._debugID;\n const reactInternals = component._reactInternals || {};\n const reactInternalsDebugID = reactInternals._debugID;\n\n if (reactInstanceDebugID && !components[reactInstanceDebugID]) {\n components[reactInstanceDebugID] = component;\n componentAfterRender(component);\n } else if (\n reactFiberInstanceDebugID &&\n !components[reactFiberInstanceDebugID]\n ) {\n components[reactFiberInstanceDebugID] = component;\n componentAfterRender(component);\n } else if (reactInternalsDebugID && !components[reactInternalsDebugID]) {\n components[reactInternalsDebugID] = component;\n componentAfterRender(component);\n }\n}\n\n/**\n * Log axe violations to console.\n * @param {AxeResults} results\n */\nfunction logToConsole(results: axeCore.AxeResults): void {\n console.group('%cNew axe issues', serious);\n results.violations.forEach(result => {\n let fmt: string;\n switch (result.impact) {\n case 'critical':\n fmt = critical;\n break;\n case 'serious':\n fmt = serious;\n break;\n case 'moderate':\n fmt = moderate;\n break;\n case 'minor':\n fmt = minor;\n break;\n default:\n fmt = minor;\n break;\n }\n console.groupCollapsed(\n '%c%s: %c%s %s',\n fmt,\n result.impact,\n defaultReset,\n result.help,\n result.helpUrl\n );\n result.nodes.forEach(node => {\n failureSummary(node, 'any');\n failureSummary(node, 'none');\n });\n console.groupEnd();\n });\n console.groupEnd();\n}\n\n/**\n * To support paramater of type runOnly\n */\ninterface ReactSpec extends axeCore.Spec {\n runOnly?: string[];\n disableDeduplicate?: boolean;\n}\n\n/**\n * Run axe against all changes made in a React app.\n * @parma {React} _React React instance\n * @param {ReactDOM} _ReactDOM ReactDOM instance\n * @param {Number} _timeout debounce timeout in milliseconds\n * @parma {Spec} conf React axe.configure Spec object\n * @param {ElementContext} _context axe ElementContent object\n * @param {Function} _logger Logger implementation\n */\nfunction reactAxe(\n _React: typeof React,\n _ReactDOM: typeof ReactDOM,\n _timeout: number,\n _conf = {} as ReactSpec,\n _context?: axeCore.ElementContext,\n _logger?: (results: axeCore.AxeResults) => void\n): Promise<void> {\n React = _React;\n ReactDOM = _ReactDOM;\n timeout = _timeout;\n context = _context;\n conf = _conf;\n logger = _logger || logToConsole;\n\n const runOnly = conf['runOnly'];\n if (runOnly) {\n conf['rules'] = axeCore\n .getRules(runOnly)\n .map(rule => ({ ...rule, id: rule.ruleId, enabled: true }));\n conf['disableOtherRules'] = true;\n }\n\n if (Object.keys(conf).length > 0) {\n axeCore.configure(conf);\n }\n axeCore.configure({ allowedOrigins: ['<unsafe_all_origins>'] });\n if (!_createElement) {\n _createElement = React.createElement;\n\n React.createElement = function (...args): React.Component {\n const reactEl = _createElement.apply(this, args);\n\n if (reactEl._owner && reactEl._owner._instance) {\n addComponent(reactEl._owner._instance);\n } else if (reactEl._owner && reactEl._owner.stateNode) {\n addComponent(reactEl._owner.stateNode);\n }\n\n return reactEl;\n };\n }\n\n return checkAndReport(document.body, timeout);\n}\n\nexport = reactAxe;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axe-core/react",
3
- "version": "4.4.0",
3
+ "version": "4.4.1-alpha.246+8e3b8eb",
4
4
  "description": "Dynamic accessibility analysis for React using axe-core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -68,5 +68,5 @@
68
68
  "type": "git",
69
69
  "url": "https://github.com/dequelabs/axe-core-npm.git"
70
70
  },
71
- "gitHead": "2576c5b0178f16ef55ac0d4f03ba381b53610572"
71
+ "gitHead": "8e3b8ebecd4b9cc8a780133c2ab9f5d594ce073b"
72
72
  }