UNPKG

@grandom/string-umd

Version:
13 lines (12 loc) 3.57 kB
/*! * @grandom/string v1.2.7 * https://github.com/grandom-library/grandom-js/tree/main/packages/string#readme * * Copyright (c) 2023 Richard King <richrdkng@gmail.com> (www.richrdkng.com) * Released under the MIT License * https://github.com/grandom-library/grandom-js/tree/main/packages/string#readme/blob/main/LICENSE * * Date: 2023-09-06T22:07:07.706Z */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).grandomStringBasic=t()}(this,(function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={};class n{constructor(e){this._name=e}_next(){throw new Error("_next() must be implemented.")}get name(){return this._name}nextBoolean(){return this._next()<.5}nextInteger(e=n.DEFAULT_INTEGER_MINIMUM,t=n.DEFAULT_INTEGER_MAXIMUM,r=n.DEFAULT_INCLUDE_MINIMUM,o=n.DEFAULT_INCLUDE_MAXIMUM){let M=0,E=0;return r&&!o?(M=0,E=0):r&&o?E=1:!r&&o?M=1:(M=1,E=-1),Math.floor(this._next()*(t-e+E))+e+M}nextFloat(e=n.DEFAULT_FLOAT_MINIMUM,t=n.DEFAULT_FLOAT_MAXIMUM,r=n.DEFAULT_INCLUDE_MINIMUM,o=n.DEFAULT_INCLUDE_MAXIMUM){const M=this._next()*(t-e)+e;if(r&&!o)return M;{const n=M+Number.EPSILON*M;return r&&o?n<t?n:t:!r&&o?n>e?n:e+Number.EPSILON:n<=e?e+Number.EPSILON:n>=t?t-Number.EPSILON:n}}nextBigInt(e=n.DEFAULT_BIGINT_MINIMUM,t=n.DEFAULT_BIGINT_MAXIMUM,r=n.DEFAULT_INCLUDE_MINIMUM,o=n.DEFAULT_INCLUDE_MAXIMUM){let M=0n,E=0n;return r&&!o?(M=0n,E=0n):r&&o?E=1n:!r&&o?M=1n:(M=1n,E=-1n),BigInt(Math.floor(this._next()*Number.MAX_SAFE_INTEGER))*(BigInt(t)-BigInt(e)+E)/BigInt(Number.MAX_SAFE_INTEGER)+BigInt(e)+M}nextString(e,t){const n=t.length;let r="";for(let o=0;o<e;o++)r+=t.charAt(Math.floor(this._next()*n));return r}nextWeighted(e,t){let n=0;for(let e=0;e<t.length;e++)n+=t[e];const r=this._next()*n;let o=0;for(let n=0;n<e.length;n++)if(o+=t[n],o>r)return e[n];return e[e.length-1]}pickArray(e){return e[Math.floor(this._next()*e.length)]}shuffleArray(e){let t,n;for(let r=e.length-1;r>0;r--)t=Math.floor(this._next()*(r+1)),n=e[r],e[r]=e[t],e[t]=n}}n.DEFAULT_INCLUDE_MINIMUM=!0,n.DEFAULT_INCLUDE_MAXIMUM=!1,n.DEFAULT_FLOAT_MINIMUM=0,n.DEFAULT_FLOAT_MAXIMUM=1,n.DEFAULT_INTEGER_MINIMUM=0,n.DEFAULT_INTEGER_MAXIMUM=4294967296,n.DEFAULT_BIGINT_MINIMUM=0n,n.DEFAULT_BIGINT_MAXIMUM=18446744073709551616n;var r=n;var o=r,M=class{constructor(e){this._engine=e}get engine(){return this._engine}};t.RandomEngine=o;var E=t.RandomGenerator=M,I=t;class _ extends I.RandomEngine{constructor(){super("basic")}_next(){return Math.random()}}var i=e(_);class s extends E{string(e,t,n){if(void 0!==e){let t=s.DEFAULT_LENGTH;if("number"==typeof e)t=e;else if("object"==typeof e&&null!==e)"number"==typeof e.length&&(t=e.length);else if("number"!=typeof e)throw new TypeError(`length must be a number, got: ${e} (typeof === "${typeof e}").`);if(t!=t)throw new RangeError(`length must be a non-NaN number, got: ${t}.`);if(t<0||t>Number.MAX_SAFE_INTEGER)throw new RangeError(`length must be >= 0 <= 2^53-1 (9,007,199,254,740,991), got ${t}.`);return 0===t?"":this._engine.nextString(Math.floor(t),s.ALPHANUMERIC)}return this._engine.nextString(s.DEFAULT_LENGTH,s.ALPHANUMERIC)}}s.DEFAULT_LENGTH=16,s.NUMBERS="0123456789",s.LETTERS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",s.ALPHANUMERIC=s.LETTERS+s.NUMBERS;const U=new s(new i),l=U.string.bind(U);return Object.defineProperties(l,{BasicEngine:{value:i},RandomString:{value:s}}),l})); //# sourceMappingURL=basic.min.js.map