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

242 lines (179 loc) 6.56 kB
"use strict"; exports.__esModule = true; var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _virtualTypes = require("./lib/virtual-types"); var virtualTypes = _interopRequireWildcard(_virtualTypes); var _debug2 = require("debug"); var _debug3 = _interopRequireDefault(_debug2); var _invariant = require("invariant"); var _invariant2 = _interopRequireDefault(_invariant); var _index = require("../index"); var _index2 = _interopRequireDefault(_index); var _assign = require("lodash/assign"); var _assign2 = _interopRequireDefault(_assign); var _scope = require("../scope"); var _scope2 = _interopRequireDefault(_scope); var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); var _cache = require("../cache"); 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 }; } var _debug = (0, _debug3.default)("babel"); var NodePath = function () { function NodePath(hub, parent) { (0, _classCallCheck3.default)(this, NodePath); this.parent = parent; this.hub = hub; this.contexts = []; this.data = {}; this.shouldSkip = false; this.shouldStop = false; this.removed = false; this.state = null; this.opts = null; this.skipKeys = null; this.parentPath = null; this.context = null; this.container = null; this.listKey = null; this.inList = false; this.parentKey = null; this.key = null; this.node = null; this.scope = null; this.type = null; this.typeAnnotation = null; } NodePath.get = function get(_ref) { var hub = _ref.hub, parentPath = _ref.parentPath, parent = _ref.parent, container = _ref.container, listKey = _ref.listKey, key = _ref.key; if (!hub && parentPath) { hub = parentPath.hub; } (0, _invariant2.default)(parent, "To get a node path the parent needs to exist"); var targetNode = container[key]; var paths = _cache.path.get(parent) || []; if (!_cache.path.has(parent)) { _cache.path.set(parent, paths); } var path = void 0; for (var i = 0; i < paths.length; i++) { var pathCheck = paths[i]; if (pathCheck.node === targetNode) { path = pathCheck; break; } } if (!path) { path = new NodePath(hub, parent); paths.push(path); } path.setup(parentPath, container, listKey, key); return path; }; NodePath.prototype.getScope = function getScope(scope) { var ourScope = scope; if (this.isScope()) { ourScope = new _scope2.default(this, scope); } return ourScope; }; NodePath.prototype.setData = function setData(key, val) { return this.data[key] = val; }; NodePath.prototype.getData = function getData(key, def) { var val = this.data[key]; if (!val && def) val = this.data[key] = def; return val; }; NodePath.prototype.buildCodeFrameError = function buildCodeFrameError(msg) { var Error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SyntaxError; return this.hub.file.buildCodeFrameError(this.node, msg, Error); }; NodePath.prototype.traverse = function traverse(visitor, state) { (0, _index2.default)(this.node, visitor, this.scope, state, this); }; NodePath.prototype.mark = function mark(type, message) { this.hub.file.metadata.marked.push({ type: type, message: message, loc: this.node.loc }); }; NodePath.prototype.set = function set(key, node) { t.validate(this.node, key, node); this.node[key] = node; }; NodePath.prototype.getPathLocation = function getPathLocation() { var parts = []; var path = this; do { var key = path.key; if (path.inList) key = path.listKey + "[" + key + "]"; parts.unshift(key); } while (path = path.parentPath); return parts.join("."); }; NodePath.prototype.debug = function debug(buildMessage) { if (!_debug.enabled) return; _debug(this.getPathLocation() + " " + this.type + ": " + buildMessage()); }; return NodePath; }(); exports.default = NodePath; (0, _assign2.default)(NodePath.prototype, require("./ancestry")); (0, _assign2.default)(NodePath.prototype, require("./inference")); (0, _assign2.default)(NodePath.prototype, require("./replacement")); (0, _assign2.default)(NodePath.prototype, require("./evaluation")); (0, _assign2.default)(NodePath.prototype, require("./conversion")); (0, _assign2.default)(NodePath.prototype, require("./introspection")); (0, _assign2.default)(NodePath.prototype, require("./context")); (0, _assign2.default)(NodePath.prototype, require("./removal")); (0, _assign2.default)(NodePath.prototype, require("./modification")); (0, _assign2.default)(NodePath.prototype, require("./family")); (0, _assign2.default)(NodePath.prototype, require("./comments")); var _loop2 = function _loop2() { if (_isArray) { if (_i >= _iterator.length) return "break"; _ref2 = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) return "break"; _ref2 = _i.value; } var type = _ref2; var typeKey = "is" + type; NodePath.prototype[typeKey] = function (opts) { return t[typeKey](this.node, opts); }; NodePath.prototype["assert" + type] = function (opts) { if (!this[typeKey](opts)) { throw new TypeError("Expected node path of type " + type); } }; }; for (var _iterator = t.TYPES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { var _ref2; var _ret2 = _loop2(); if (_ret2 === "break") break; } var _loop = function _loop(type) { if (type[0] === "_") return "continue"; if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type); var virtualType = virtualTypes[type]; NodePath.prototype["is" + type] = function (opts) { return virtualType.checkPath(this, opts); }; }; for (var type in virtualTypes) { var _ret = _loop(type); if (_ret === "continue") continue; } module.exports = exports["default"];