UNPKG

zater-verhoeff

Version:

Module for create account zater

47 lines (42 loc) 9.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Verhoeff { constructor(array) { this.d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]; // permutation table p this.p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]]; // inverse table inv this.inv = [0, 4, 3, 2, 1, 5, 6, 7, 8, 9]; this.array = array; } invArray() { let array = this.array; if (Object.prototype.toString.call(array) === "[object Number]") { array = String(array); } if (Object.prototype.toString.call(array) === "[object String]") { array = array.split("").map(Number); } return array; } generate() { let c = 0; const invertedArray = this.invArray(this.array); for (let i = 0; i < invertedArray.length; i++) { c = this.d[c][this.p[(i + 1) % 8][invertedArray[i]]]; } return this.inv[c]; } validate(verify) { let c = 0; const invertedArray = this.invArray(`${this.array}${verify}`); for (let i = 0; i < invertedArray.length; i++) { c = this.d[c][this.p[i % 8][invertedArray[i]]]; } return c === 0; } } exports.default = array => new Verhoeff(array); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WZXJob2VmZi5qcyJdLCJuYW1lcyI6WyJWZXJob2VmZiIsImNvbnN0cnVjdG9yIiwiYXJyYXkiLCJkIiwicCIsImludiIsImludkFycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiU3RyaW5nIiwic3BsaXQiLCJtYXAiLCJOdW1iZXIiLCJnZW5lcmF0ZSIsImMiLCJpbnZlcnRlZEFycmF5IiwiaSIsImxlbmd0aCIsInZhbGlkYXRlIiwidmVyaWZ5Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQU1BLFFBQU4sQ0FBZTtBQUNkQyxhQUFZQyxLQUFaLEVBQW1CO0FBQ2xCLE9BQUtDLENBQUwsR0FBUyxDQUNSLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsQ0FEUSxFQUVSLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsQ0FGUSxFQUdSLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsQ0FIUSxFQUlSLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsQ0FKUSxFQUtSLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0Is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QUFaLEVBQWdCRCxjQUFjQyxDQUFkLENBQWhCLENBQVYsQ0FBSjtBQUNBO0FBQ0QsU0FBUUYsTUFBTSxDQUFkO0FBQ0E7QUF6RGE7O2tCQTRERWQsS0FBRCxJQUFXLElBQUlGLFFBQUosQ0FBYUUsS0FBYixDIiwiZmlsZSI6IlZlcmhvZWZmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgVmVyaG9lZmYge1xuXHRjb25zdHJ1Y3RvcihhcnJheSkge1xuXHRcdHRoaXMuZCA9IFtcblx0XHRcdFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSxcblx0XHRcdFsxLCAyLCAzLCA0LCAwLCA2LCA3LCA4LCA5LCA1XSxcblx0XHRcdFsyLCAzLCA0LCAwLCAxLCA3LCA4LCA5LCA1LCA2XSxcblx0XHRcdFszLCA0LCAwLCAxLCAyLCA4LCA5LCA1LCA2LCA3XSxcblx0XHRcdFs0LCAwLCAxLCAyLCAzLCA5LCA1LCA2LCA3LCA4XSxcblx0XHRcdFs1LCA5LCA4LCA3LCA2LCAwLCA0LCAzLCAyLCAxXSxcblx0XHRcdFs2LCA1LCA5LCA4LCA3LCAxLCAwLCA0LCAzLCAyXSxcblx0XHRcdFs3LCA2LCA1LCA5LCA4LCAyLCAxLCAwLCA0LCAzXSxcblx0XHRcdFs4LCA3LCA2LCA1LCA5LCAzLCAyLCAxLCAwLCA0XSxcblx0XHRcdFs5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwXVxuXHRcdF07XG5cdFx0Ly8gcGVybXV0YXRpb24gdGFibGUgcFxuXHRcdHRoaXMucCA9IFtcblx0XHRcdFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSxcblx0XHRcdFsxLCA1LCA3LCA2LCAyLCA4LCAzLCAwLCA5LCA0XSxcblx0XHRcdFs1LCA4LCAwLCAzLCA3LCA5LCA2LCAxLCA0LCAyXSxcblx0XHRcdFs4LCA5LCAxLCA2LCAwLCA0LCAzLCA1LCAyLCA3XSxcblx0XHRcdFs5LCA0LCA1LCAzLCAxLCAyLCA2LCA4LCA3LCAwXSxcblx0XHRcdFs0LCAyLCA4LCA2LCA1LCA3LCAzLCA5LCAwLCAxXSxcblx0XHRcdFsyLCA3LCA5LCAzLCA4LCAwLCA2LCA0LCAxLCA1XSxcblx0XHRcdFs3LCAwLCA0LCA2LCA5LCAxLCAzLCAyLCA1LCA4XVxuXHRcdF07XG5cdFx0Ly8gaW52ZXJzZSB0YWJsZSBpbnZcblx0XHR0aGlzLmludiA9IFswLCA0LCAzLCAyLCAxLCA1LCA2LCA3LCA4LCA5XTtcblx0XHR0aGlzLmFycmF5ID0gYXJyYXk7XG5cdH1cblxuXHRpbnZBcnJheSgpIHtcblx0XHRsZXQgYXJyYXkgPSB0aGlzLmFycmF5O1xuXHRcdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSBcIltvYmplY3QgTnVtYmVyXVwiKSB7XG5cdFx0XHRhcnJheSA9IFN0cmluZyhhcnJheSk7XG5cdFx0fVxuXHRcdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSBcIltvYmplY3QgU3RyaW5nXVwiKSB7XG5cdFx0XHRhcnJheSA9IGFycmF5LnNwbGl0KFwiXCIpLm1hcChOdW1iZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gYXJyYXlcblx0fVxuXG5cdGdlbmVyYXRlKCkge1xuXHRcdGxldCBjID0gMDtcblx0XHRjb25zdCBpbnZlcnRlZEFycmF5ID0gdGhpcy5pbnZBcnJheSh0aGlzLmFycmF5KTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGludmVydGVkQXJyYXkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGMgPSB0aGlzLmRbY11bdGhpcy5wWygoaSArIDEpICUgOCldW2ludmVydGVkQXJyYXlbaV1dXTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW52W2NdO1xuXHR9XG5cblx0dmFsaWRhdGUodmVyaWZ5KSB7XG5cdFx0bGV0IGMgPSAwO1xuXHRcdGNvbnN0IGludmVydGVkQXJyYXkgPSB0aGlzLmludkFycmF5KGAke3RoaXMuYXJyYXl9JHt2ZXJpZnl9YCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpbnZlcnRlZEFycmF5Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjID0gdGhpcy5kW2NdW3RoaXMucFsoaSAlIDgpXVtpbnZlcnRlZEFycmF5W2ldXV07XG5cdFx0fVxuXHRcdHJldHVybiAoYyA9PT0gMCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgIChhcnJheSkgPT4gbmV3IFZlcmhvZWZmKGFycmF5KTtcbiJdfQ==