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

49 lines (39 loc) 1.6 kB
'use strict'; var AddEntriesFromIterable = require('es-abstract/2019/AddEntriesFromIterable'); var CreateDataPropertyOrThrow = require('es-abstract/2019/CreateDataPropertyOrThrow'); var Get = require('es-abstract/2019/Get'); var IsArray = require('es-abstract/2019/IsArray'); var RequireObjectCoercible = require('es-abstract/2019/RequireObjectCoercible'); var ToPropertyKey = require('es-abstract/2019/ToPropertyKey'); var Type = require('es-abstract/2019/Type'); var adder = function addDataProperty(key, value) { var O = this; // eslint-disable-line no-invalid-this var propertyKey = ToPropertyKey(key); CreateDataPropertyOrThrow(O, propertyKey, value); }; var legacyAssign = function assign(obj, entries) { for (var i = 0; i < entries.length; ++i) { var entry = entries[i]; if (Type(entry) !== 'Object') { throw new TypeError('iterator returned a non-object; entry expected'); } var key = Get(entry, '0'); var value = Get(entry, '1'); var propertyKey = ToPropertyKey(key); CreateDataPropertyOrThrow(obj, propertyKey, value); } }; var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol'; module.exports = function fromEntries(iterable) { RequireObjectCoercible(iterable); var obj = {}; // this part isn't in the spec, it's for a reasonable fallback for pre-ES6 environments if (!hasSymbols) { if (!IsArray(iterable)) { throw new TypeError('this environment lacks native Symbols, and can not support non-Array iterables'); } legacyAssign(obj, iterable); return obj; } return AddEntriesFromIterable(obj, iterable, adder); };