UNPKG

@beenotung/tslib

Version:
103 lines 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Random = exports.alphabetNumLetters = exports.symbolLetters = exports.base58Letters = exports.visibleLetters = exports.lowerCaseLetters = exports.upperCaseLetters = exports.digits = exports.genStringRange = void 0; const enum_1 = require("./enum"); const string_1 = require("./string"); /** * @param start {number} inclusive * @param end {number} exclusive * */ function genStringRange(start, end) { let s = ''; for (let i = start; i < end; i++) { s += String.fromCharCode(i); } return s; } exports.genStringRange = genStringRange; exports.digits = genStringRange(48, 48 + 10); exports.upperCaseLetters = genStringRange(65, 65 + 26); exports.lowerCaseLetters = genStringRange(65 + 32, 65 + 32 + 26); /** visible characters only in ascii range */ exports.visibleLetters = genStringRange(32, 127); /** base58btc format, removed '0OIl' and '+/' */ exports.base58Letters = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; exports.symbolLetters = string_1.str_minus(exports.visibleLetters, exports.digits + exports.upperCaseLetters + exports.lowerCaseLetters); exports.alphabetNumLetters = exports.upperCaseLetters + exports.lowerCaseLetters + exports.digits; var Random; (function (Random) { /** @return number : lower <= value < upper */ function nextInt(upper = Number.MAX_SAFE_INTEGER, lower = 0) { return Math.floor(Math.random() * (upper - lower) + lower); } Random.nextInt = nextInt; function nextFloat(upper = Number.MAX_VALUE, lower = 0, decimal = 2) { const a = nextInt(upper, lower); const b = nextInt(Math.pow(10, decimal)); if (b === 0) { return a; } const p = Math.pow(10, Math.ceil(Math.log10(b))); return a + b / p; } Random.nextFloat = nextFloat; function nextBool(prob = 0.5) { return Math.random() < prob; } Random.nextBool = nextBool; function probablyRun(prop, run) { if (nextBool(prop)) { return run(); } } Random.probablyRun = probablyRun; /** @return real number : -1 .. 1 */ function nextNP1() { return Math.random() * 2 - 1; } Random.nextNP1 = nextNP1; /** * Nullable * */ function element(xs) { return xs[nextInt(xs.length, 0)]; } Random.element = element; function nextDate(after = new Date('2016-12-12'), before = new Date('2018-12-12')) { const diff = before.getTime() - after.getTime(); const time = Random.nextInt(after.getTime() + diff, after.getTime()); return new Date(time); } Random.nextDate = nextDate; /** * @return value of enum (not key of enum) * */ function nextEnum(e) { const key = Random.element(enum_1.enum_keys(e)); return e[key]; } Random.nextEnum = nextEnum; function nextEnumKey(e) { return Random.element(enum_1.enum_keys(e)); } Random.nextEnumKey = nextEnumKey; function nextBuffer(n) { // tslint:disable:no-bitwise const res = new Buffer(n); for (let i = 0; i < n; i++) { res[i] = (Math.random() * 256) >>> 0; } return res; // tslint:enable:no-bitwise } Random.nextBuffer = nextBuffer; function nextString(n, pool = exports.visibleLetters) { let s = ''; for (; s.length < n;) { s += element(pool); } return s; } Random.nextString = nextString; })(Random = exports.Random || (exports.Random = {})); //# sourceMappingURL=random.js.map