first commit
This commit is contained in:
14
node_modules/fast-unique-numbers/build/node/factories/add-unique-number.js
generated
vendored
Normal file
14
node_modules/fast-unique-numbers/build/node/factories/add-unique-number.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.createAddUniqueNumber = void 0;
|
||||
const createAddUniqueNumber = generateUniqueNumber => {
|
||||
return set => {
|
||||
const number = generateUniqueNumber(set);
|
||||
set.add(number);
|
||||
return number;
|
||||
};
|
||||
};
|
||||
exports.createAddUniqueNumber = createAddUniqueNumber;
|
13
node_modules/fast-unique-numbers/build/node/factories/cache.js
generated
vendored
Normal file
13
node_modules/fast-unique-numbers/build/node/factories/cache.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.createCache = void 0;
|
||||
const createCache = lastNumberWeakMap => {
|
||||
return (collection, nextNumber) => {
|
||||
lastNumberWeakMap.set(collection, nextNumber);
|
||||
return nextNumber;
|
||||
};
|
||||
};
|
||||
exports.createCache = createCache;
|
52
node_modules/fast-unique-numbers/build/node/factories/generate-unique-number.js
generated
vendored
Normal file
52
node_modules/fast-unique-numbers/build/node/factories/generate-unique-number.js
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.createGenerateUniqueNumber = void 0;
|
||||
/*
|
||||
* The value of the constant Number.MAX_SAFE_INTEGER equals (2 ** 53 - 1) but it
|
||||
* is fairly new.
|
||||
*/
|
||||
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER === undefined ? 9007199254740991 : Number.MAX_SAFE_INTEGER;
|
||||
const TWO_TO_THE_POWER_OF_TWENTY_NINE = 536870912;
|
||||
const TWO_TO_THE_POWER_OF_THIRTY = TWO_TO_THE_POWER_OF_TWENTY_NINE * 2;
|
||||
const createGenerateUniqueNumber = (cache, lastNumberWeakMap) => {
|
||||
return collection => {
|
||||
const lastNumber = lastNumberWeakMap.get(collection);
|
||||
/*
|
||||
* Let's try the cheapest algorithm first. It might fail to produce a new
|
||||
* number, but it is so cheap that it is okay to take the risk. Just
|
||||
* increase the last number by one or reset it to 0 if we reached the upper
|
||||
* bound of SMIs (which stands for small integers). When the last number is
|
||||
* unknown it is assumed that the collection contains zero based consecutive
|
||||
* numbers.
|
||||
*/
|
||||
let nextNumber = lastNumber === undefined ? collection.size : lastNumber < TWO_TO_THE_POWER_OF_THIRTY ? lastNumber + 1 : 0;
|
||||
if (!collection.has(nextNumber)) {
|
||||
return cache(collection, nextNumber);
|
||||
}
|
||||
/*
|
||||
* If there are less than half of 2 ** 30 numbers stored in the collection,
|
||||
* the chance to generate a new random number in the range from 0 to 2 ** 30
|
||||
* is at least 50%. It's benifitial to use only SMIs because they perform
|
||||
* much better in any environment based on V8.
|
||||
*/
|
||||
if (collection.size < TWO_TO_THE_POWER_OF_TWENTY_NINE) {
|
||||
while (collection.has(nextNumber)) {
|
||||
nextNumber = Math.floor(Math.random() * TWO_TO_THE_POWER_OF_THIRTY);
|
||||
}
|
||||
return cache(collection, nextNumber);
|
||||
}
|
||||
// Quickly check if there is a theoretical chance to generate a new number.
|
||||
if (collection.size > MAX_SAFE_INTEGER) {
|
||||
throw new Error('Congratulations, you created a collection of unique numbers which uses all available integers!');
|
||||
}
|
||||
// Otherwise use the full scale of safely usable integers.
|
||||
while (collection.has(nextNumber)) {
|
||||
nextNumber = Math.floor(Math.random() * MAX_SAFE_INTEGER);
|
||||
}
|
||||
return cache(collection, nextNumber);
|
||||
};
|
||||
};
|
||||
exports.createGenerateUniqueNumber = createGenerateUniqueNumber;
|
34
node_modules/fast-unique-numbers/build/node/module.js
generated
vendored
Normal file
34
node_modules/fast-unique-numbers/build/node/module.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
var _exportNames = {
|
||||
addUniqueNumber: true,
|
||||
generateUniqueNumber: true
|
||||
};
|
||||
exports.generateUniqueNumber = exports.addUniqueNumber = void 0;
|
||||
var _addUniqueNumber = require("./factories/add-unique-number");
|
||||
var _cache = require("./factories/cache");
|
||||
var _generateUniqueNumber = require("./factories/generate-unique-number");
|
||||
var _index = require("./types/index");
|
||||
Object.keys(_index).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
||||
if (key in exports && exports[key] === _index[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _index[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
/*
|
||||
* @todo Explicitly referencing the barrel file seems to be necessary when enabling the
|
||||
* isolatedModules compiler option.
|
||||
*/
|
||||
|
||||
const LAST_NUMBER_WEAK_MAP = new WeakMap();
|
||||
const cache = (0, _cache.createCache)(LAST_NUMBER_WEAK_MAP);
|
||||
const generateUniqueNumber = exports.generateUniqueNumber = (0, _generateUniqueNumber.createGenerateUniqueNumber)(cache, LAST_NUMBER_WEAK_MAP);
|
||||
const addUniqueNumber = exports.addUniqueNumber = (0, _addUniqueNumber.createAddUniqueNumber)(generateUniqueNumber);
|
5
node_modules/fast-unique-numbers/build/node/types/add-unique-number-factory.js
generated
vendored
Normal file
5
node_modules/fast-unique-numbers/build/node/types/add-unique-number-factory.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
5
node_modules/fast-unique-numbers/build/node/types/add-unique-number-function.js
generated
vendored
Normal file
5
node_modules/fast-unique-numbers/build/node/types/add-unique-number-function.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
5
node_modules/fast-unique-numbers/build/node/types/cache-factory.js
generated
vendored
Normal file
5
node_modules/fast-unique-numbers/build/node/types/cache-factory.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
5
node_modules/fast-unique-numbers/build/node/types/cache-function.js
generated
vendored
Normal file
5
node_modules/fast-unique-numbers/build/node/types/cache-function.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
5
node_modules/fast-unique-numbers/build/node/types/generate-unique-number-factory.js
generated
vendored
Normal file
5
node_modules/fast-unique-numbers/build/node/types/generate-unique-number-factory.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
5
node_modules/fast-unique-numbers/build/node/types/generate-unique-number-function.js
generated
vendored
Normal file
5
node_modules/fast-unique-numbers/build/node/types/generate-unique-number-function.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
71
node_modules/fast-unique-numbers/build/node/types/index.js
generated
vendored
Normal file
71
node_modules/fast-unique-numbers/build/node/types/index.js
generated
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
var _addUniqueNumberFactory = require("./add-unique-number-factory");
|
||||
Object.keys(_addUniqueNumberFactory).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (key in exports && exports[key] === _addUniqueNumberFactory[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _addUniqueNumberFactory[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _addUniqueNumberFunction = require("./add-unique-number-function");
|
||||
Object.keys(_addUniqueNumberFunction).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (key in exports && exports[key] === _addUniqueNumberFunction[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _addUniqueNumberFunction[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _cacheFactory = require("./cache-factory");
|
||||
Object.keys(_cacheFactory).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (key in exports && exports[key] === _cacheFactory[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _cacheFactory[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _cacheFunction = require("./cache-function");
|
||||
Object.keys(_cacheFunction).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (key in exports && exports[key] === _cacheFunction[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _cacheFunction[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _generateUniqueNumberFactory = require("./generate-unique-number-factory");
|
||||
Object.keys(_generateUniqueNumberFactory).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (key in exports && exports[key] === _generateUniqueNumberFactory[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _generateUniqueNumberFactory[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _generateUniqueNumberFunction = require("./generate-unique-number-function");
|
||||
Object.keys(_generateUniqueNumberFunction).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (key in exports && exports[key] === _generateUniqueNumberFunction[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _generateUniqueNumberFunction[key];
|
||||
}
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user