// (C) 2007-2019 GoodData Corporation import * as seedrandom from "seedrandom"; export type RandomDataGeneratorFunction = () => string; export interface IRandomDataGeneratorsHash { [key: string]: RandomDataGeneratorFunction; } export function createRandomGeneratorsPool(): IRandomDataGeneratorsHash { return {}; } function createGenerator(generators: IRandomDataGeneratorsHash, seed: string) { const seedRandomInstance = seedrandom(seed); generators[seed] = () => Math.round(seedRandomInstance() * 1000).toString(); } export function getRandomDataGenerator( generators: IRandomDataGeneratorsHash, baseSeed: string = "", secondarySeed: string = "", ) { const seed = baseSeed ? baseSeed + secondarySeed : null; if (!generators[seed]) { createGenerator(generators, seed); } return generators[seed]; } export function getRandomDataValue( generators: IRandomDataGeneratorsHash, baseSeed: string = "", secondarySeed: string = "", ): string { return getRandomDataGenerator(generators, baseSeed, secondarySeed)(); }