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

58 lines (45 loc) 1.76 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = unpackFeature; var _statuses = require('../lib/statuses'); var _statuses2 = _interopRequireDefault(_statuses); var _supported = require('../lib/supported'); var _supported2 = _interopRequireDefault(_supported); var _browsers = require('./browsers'); var _browserVersions = require('./browserVersions'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var MATH2LOG = Math.log(2); function unpackSupport(cipher) { // bit flags var stats = Object.keys(_supported2.default).reduce(function (list, support) { if (cipher & _supported2.default[support]) list.push(support); return list; }, []); // notes var notes = cipher >> 7; var notesArray = []; while (notes) { var note = Math.floor(Math.log(notes) / MATH2LOG) + 1; notesArray.unshift('#' + note); notes -= Math.pow(2, note - 1); } return stats.concat(notesArray).join(' '); } function unpackFeature(packed) { var unpacked = { status: _statuses2.default[packed.B], title: packed.C }; unpacked.stats = Object.keys(packed.A).reduce(function (browserStats, key) { var browser = packed.A[key]; browserStats[_browsers.browsers[key]] = Object.keys(browser).reduce(function (stats, support) { var packedVersions = browser[support].split(' '); var unpacked = unpackSupport(support); packedVersions.forEach(function (v) { return stats[_browserVersions.browserVersions[v]] = unpacked; }); return stats; }, {}); return browserStats; }, {}); return unpacked; }