@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
56 lines (55 loc) • 1.43 kB
JavaScript
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
const MIN = -2147483648;
const MAX = 2147483647;
const xorshift = (value) => {
value ^= value << 13;
value ^= value >> 17;
value ^= value << 5;
return value;
};
class PRNG {
/**
* Generate a new pseudo-random number generator.
*
* @param seed - A number or string seed that determines which pseudo-random
* number sequence will be created.
*/
constructor(seed) {
__publicField(this, "_value");
if (typeof seed === "string") {
let hash = 0;
if (seed) {
const l = seed.length;
for (let i = 0; i < l; i++) {
hash = (hash << 5) - hash + seed.charCodeAt(i);
hash |= 0;
hash = xorshift(hash);
}
}
this._value = hash;
} else {
this._value = seed;
}
if (this._value === 0) {
this._value = 1;
}
}
/**
* Generates a pseudo-random number.
*
* @returns The generated pseudo-random number.
*/
next() {
this._value = xorshift(this._value);
return (this._value - MIN) / (MAX - MIN);
}
}
export {
PRNG
};
//# sourceMappingURL=PRNG.js.map