jstd-web/node_modules/ids/dist/index.cjs.map

1 line
7.8 KiB
Plaintext
Raw Normal View History

2025-11-25 15:23:22 +08:00
{"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":";;;;;;AAAA,IAAI,GAAG,GAAG,MAAA,CAAA,OAAA,GAAiB,UAAU,IAAI,EAAE,IAAI,EAAE;AACjD,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC;AACvC,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,OAAO,GAAG,CAAC;AAC9B;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE