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

179 lines (126 loc) 4.47 kB
"use strict"; exports.__esModule = true; var _keys = require("babel-runtime/core-js/object/keys"); var _keys2 = _interopRequireDefault(_keys); var _stringify = require("babel-runtime/core-js/json/stringify"); var _stringify2 = _interopRequireDefault(_stringify); exports.default = function () { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (opts.only != null) only = _babelCore.util.arrayify(opts.only, _babelCore.util.regexify); if (opts.ignore != null) ignore = _babelCore.util.arrayify(opts.ignore, _babelCore.util.regexify); if (opts.extensions) hookExtensions(_babelCore.util.arrayify(opts.extensions)); if (opts.cache === false) cache = null; delete opts.extensions; delete opts.ignore; delete opts.cache; delete opts.only; (0, _extend2.default)(transformOpts, opts); }; var _cloneDeep = require("lodash/cloneDeep"); var _cloneDeep2 = _interopRequireDefault(_cloneDeep); var _sourceMapSupport = require("source-map-support"); var _sourceMapSupport2 = _interopRequireDefault(_sourceMapSupport); var _cache = require("./cache"); var registerCache = _interopRequireWildcard(_cache); var _extend = require("lodash/extend"); var _extend2 = _interopRequireDefault(_extend); var _babelCore = require("babel-core"); var babel = _interopRequireWildcard(_babelCore); var _fs = require("fs"); var _fs2 = _interopRequireDefault(_fs); var _path = require("path"); var _path2 = _interopRequireDefault(_path); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _sourceMapSupport2.default.install({ handleUncaughtExceptions: false, environment: "node", retrieveSourceMap: function retrieveSourceMap(source) { var map = maps && maps[source]; if (map) { return { url: null, map: map }; } else { return null; } } }); registerCache.load(); var cache = registerCache.get(); var transformOpts = {}; var ignore = void 0; var only = void 0; var oldHandlers = {}; var maps = {}; var cwd = process.cwd(); function getRelativePath(filename) { return _path2.default.relative(cwd, filename); } function mtime(filename) { return +_fs2.default.statSync(filename).mtime; } function compile(filename) { var result = void 0; var opts = new _babelCore.OptionManager().init((0, _extend2.default)({ sourceRoot: _path2.default.dirname(filename) }, (0, _cloneDeep2.default)(transformOpts), { filename: filename })); var cacheKey = (0, _stringify2.default)(opts) + ":" + babel.version; var env = process.env.BABEL_ENV || process.env.NODE_ENV; if (env) cacheKey += ":" + env; if (cache) { var cached = cache[cacheKey]; if (cached && cached.mtime === mtime(filename)) { result = cached; } } if (!result) { result = babel.transformFileSync(filename, (0, _extend2.default)(opts, { babelrc: false, sourceMaps: "both", ast: false })); } if (cache) { cache[cacheKey] = result; result.mtime = mtime(filename); } maps[filename] = result.map; return result.code; } function shouldIgnore(filename) { if (!ignore && !only) { return getRelativePath(filename).split(_path2.default.sep).indexOf("node_modules") >= 0; } else { return _babelCore.util.shouldIgnore(filename, ignore || [], only); } } function loader(m, filename) { m._compile(compile(filename), filename); } function registerExtension(ext) { var old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"]; require.extensions[ext] = function (m, filename) { if (shouldIgnore(filename)) { old(m, filename); } else { loader(m, filename, old); } }; } function hookExtensions(_exts) { (0, _keys2.default)(oldHandlers).forEach(function (ext) { var old = oldHandlers[ext]; if (old === undefined) { delete require.extensions[ext]; } else { require.extensions[ext] = old; } }); oldHandlers = {}; _exts.forEach(function (ext) { oldHandlers[ext] = require.extensions[ext]; registerExtension(ext); }); } hookExtensions(_babelCore.util.canCompile.EXTENSIONS); module.exports = exports["default"];