{"version":3,"file":"index.cjs","sources":["../node_modules/hat/index.js","../index.js"],"sourcesContent":["var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","import hat from 'hat';\n\n/**\n * @typedef { [ number, number ] | [ number, number, number ] } Seed\n */\n\n/**\n * Create a new id generator / cache instance.\n *\n * You may optionally provide a seed that is used internally.\n *\n * @param {Seed} [seed]\n */\nexport default function Ids(seed) {\n\n if (!(this instanceof Ids)) {\n return new Ids(seed);\n }\n\n seed = seed || [ 128, 36, 1 ];\n this._seed = seed.length ? hat.rack(seed[0], seed[1], seed[2]) : seed;\n}\n\n/**\n * Generate a next id.\n *\n * @param {Object} [element] element to bind the id to\n *\n * @return {String} id\n */\nIds.prototype.next = function(element) {\n return this._seed(element || true);\n};\n\n/**\n * Generate a next id with a given prefix.\n *\n * @param {Object} [element] element to bind the id to\n *\n * @return {String} id\n */\nIds.prototype.nextPrefixed = function(prefix, element) {\n var id;\n\n do {\n id = prefix + this.next(true);\n } while (this.assigned(id));\n\n // claim {prefix}{random}\n this.claim(id, element);\n\n // return\n return id;\n};\n\n/**\n * Manually claim an existing id.\n *\n * @param {String} id\n * @param {String} [element] element the id is claimed by\n */\nIds.prototype.claim = function(id, element) {\n this._seed.set(id, element || true);\n};\n\n/**\n * Returns true if the given id has already been assigned.\n *\n * @param {String} id\n * @return {Boolean}\n */\nIds.prototype.assigned = function(id) {\n return this._seed.get(id) || false;\n};\n\n/**\n * Unclaim an id.\n *\n * @param {String} id the id to unclaim\n */\nIds.prototype.unclaim = function(id) {\n delete this._seed.hats[id];\n};\n\n\n/**\n * Clear all claimed ids.\n */\nIds.prototype.clear = function() {\n\n var hats = this._seed.hats,\n id;\n\n for (id in hats) {\n this.unclaim(id);\n }\n};"],"names":["Ids","seed","_seed","length","hat","rack","prototype","next","element","nextPrefixed","prefix","id","assigned","claim","set","get","unclaim","hats","clear"],"mappings":"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"}