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

48 lines (38 loc) 1.27 kB
"use strict"; module.exports = removeUseStrict; const newIssueUrl = "https://github.com/babel/minify/issues/new"; const useStrict = "use strict"; /** * Remove redundant use strict * If the parent has a "use strict" directive, it is not required in * the children * * @param {NodePath} block BlockStatement */ function removeUseStrict(block) { if (!block.isBlockStatement()) { throw new Error(`Received ${block.type}. Expected BlockStatement. ` + `Please report at ${newIssueUrl}`); } const useStricts = getUseStrictDirectives(block); // early exit if (useStricts.length < 1) return; // only keep the first use strict if (useStricts.length > 1) { for (let i = 1; i < useStricts.length; i++) { useStricts[i].remove(); } } // check if parent has an use strict if (hasStrictParent(block)) { useStricts[0].remove(); } } function hasStrictParent(path) { return path.findParent(parent => parent.isBlockStatement() && isStrict(parent)); } function isStrict(block) { return getUseStrictDirectives(block).length > 0; } function getUseStrictDirectives(block) { var dir = block.get("directives"); return Array.isArray(dir) ? dir.filter(function (directive) { return directive.node.value.value === useStrict; }) : []; }