UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

43 lines (35 loc) 1.23 kB
import cache from '../../core/base/cache'; import { querySelectorAllFilter } from '../../core/utils'; import { isVisible, findUpVirtual } from '../../commons/dom'; function pageNoDuplicateEvaluate(node, options, virtualNode) { if (!options || !options.selector || typeof options.selector !== 'string') { throw new TypeError( 'page-no-duplicate requires options.selector to be a string' ); } // only look at the first node and it's related nodes const key = 'page-no-duplicate;' + options.selector; if (cache.get(key)) { this.data('ignored'); return; } cache.set(key, true); let elms = querySelectorAllFilter(axe._tree[0], options.selector, elm => isVisible(elm.actualNode) ); // Filter elements that, within certain contexts, don't map their role. // e.g. a <footer> inside a <main> is not a banner, but in the <body> context it is if (typeof options.nativeScopeFilter === 'string') { elms = elms.filter(elm => { return ( elm.actualNode.hasAttribute('role') || !findUpVirtual(elm, options.nativeScopeFilter) ); }); } this.relatedNodes( elms.filter(elm => elm !== virtualNode).map(elm => elm.actualNode) ); return elms.length <= 1; } export default pageNoDuplicateEvaluate;