diff --git a/package-lock.json b/package-lock.json index 57028168..60273b74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9696,6 +9696,11 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "seedrandom": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz", + "integrity": "sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==" + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", diff --git a/package.json b/package.json index 9f80fad3..7f403844 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "passport-custom": "^1.0.5", "passport-oauth2": "^1.5.0", "reflect-metadata": "^0.1.12", + "seedrandom": "^3.0.1", "tlds": "^1.203.1", "tmp": "0.0.33", "ts-node": "^3.3.0", diff --git a/src/templateFormatter.ts b/src/templateFormatter.ts index 3149eb53..33360e0e 100644 --- a/src/templateFormatter.ts +++ b/src/templateFormatter.ts @@ -1,4 +1,5 @@ import { has, get } from "./utils"; +import seedrandom from "seedrandom"; const TEMPLATE_CACHE_SIZE = 200; const templateCache: Map = new Map(); @@ -299,7 +300,7 @@ const baseValues = { if (end != null && isNaN(end)) return ""; return arg1.slice(parseInt(start, 10), end && parseInt(end, 10)); }, - rand(from, to) { + rand(from, to, seed = null) { if (isNaN(from)) return 0; if (to == null) { @@ -313,7 +314,9 @@ const baseValues = { [from, to] = [to, from]; } - return Math.round(Math.random() * (to - from) + from); + let randValue = seed != null ? new seedrandom(seed)() : Math.random(); + + return Math.round(randValue * (to - from) + from); }, add(...args) { return args.reduce((result, arg) => {