{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { RNGFunction } from '@lazy-random/generators-function';\nimport seedrandom from 'seedrandom';\n\nimport { PickValueOf } from '@lazy-random/shared-lib';\nimport { cloneClass } from '@lazy-random/clone-class';\nexport import RNGSeedRandomOptions = seedrandom.seedRandomOptions;\n\nexport const defaultOptions: RNGSeedRandomOptions = Object.freeze({\n\tentropy: true,\n});\n\nexport type IRNGSeedRandomLibName = 'alea' | 'tychei' | 'xor128' | 'xor4096' | 'xorshift7' | 'xorwow';\nexport type IRNGSeedRandomLib = IRNGSeedRandomLibName | string;\nexport type IRNGSeedRandomLibValueOf = PickValueOf<typeof seedrandom, IRNGSeedRandomLibName>;\n\nexport class RNGSeedRandom extends RNGFunction<seedrandom.prng>\n{\n\tprotected _opts: RNGSeedRandomOptions;\n\tprotected _seedrandom: IRNGSeedRandomGenerator;\n\n\tprotected override _seedable = true;\n\n\tconstructor(seed?, opts?: RNGSeedRandomOptions, lib?: IRNGSeedRandomLib, ...argv);\n\tconstructor(seed?, opts?: RNGSeedRandomOptions, ...argv)\n\t{\n\t\tsuper(seed, opts, ...argv);\n\t}\n\n\tpublic static createLib(lib?: IRNGSeedRandomLib, seed?, opts?: RNGSeedRandomOptions, ...argv): RNGSeedRandom;\n\tpublic static createLib(...argv)\n\t{\n\t\treturn new this(argv[1], argv[2], argv[0], ...argv.slice(3));\n\t}\n\n\tpublic static override create(seed?, opts?: RNGSeedRandomOptions, lib?: IRNGSeedRandomLib, ...argv): RNGSeedRandom;\n\tpublic static override create(...argv)\n\t{\n\t\treturn new this(...argv);\n\t}\n\n// eslint-disable-next-line no-empty-function,@typescript-eslint/no-empty-function\n\tprotected override _init_check(seed?, opts?, ...argv) {}\n\n\tprotected override _init(seed?, opts?, ...argv)\n\t{\n\t\tthis._opts = this._opts || Object.assign({}, defaultOptions);\n\t\tthis._seedrandom = this.__generator(...argv);\n\n\t\tsuper._init(seed, opts, ...argv);\n\t}\n\n\tprotected readonly _NAME = 'seedrandom';\n\tprotected _TYPE = null;\n\n\toverride get name()\n\t{\n\t\treturn `${this._NAME}${this._TYPE ? ':' + this._TYPE : ''}`;\n\t}\n\n\tprotected __generator(fn?: typeof seedrandom | IRNGSeedRandomLib | IRNGSeedRandomLibValueOf): IRNGSeedRandomGenerator\n\t{\n\t\tif (fn && typeof fn === 'string')\n\t\t{\n\t\t\tthis._TYPE = null;\n\n\t\t\tswitch (fn)\n\t\t\t{\n\t\t\t\tcase 'alea':\n\t\t\t\tcase 'tychei':\n\t\t\t\tcase 'xor128':\n\t\t\t\tcase 'xor4096':\n\t\t\t\tcase 'xorshift7':\n\t\t\t\tcase 'xorwow':\n\t\t\t\t\tfn = seedrandom[fn];\n\t\t\t\t\t//fn = require(`seedrandom/lib/${fn}`)\n\n\t\t\t\t\tthis._TYPE = fn;\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (!fn.includes('..') && /^[a-z\\-\\.]+$/i.test(fn))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._TYPE = fn;\n\n\t\t\t\t\t\tfn = require(`seedrandom/lib/${fn}`);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new RangeError(`unknow seedrandom lib name: ${fn}`);\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (fn)\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\tthis._TYPE = fn.name;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._TYPE = null;\n\t\t}\n\n\t\tfn = fn || seedrandom;\n\n\t\treturn fn as IRNGSeedRandomGenerator;\n\n\t\t/*\n\t\treturn (seed?, opts?: RNGSeedRandomOptions, ...argv) => {\n\t\t\t// @ts-ignore\n\t\t\treturn fn(seed, opts, ...argv)\n\t\t}\n\t\t*/\n\t}\n\n\toverride get options()\n\t{\n\t\treturn this._opts;\n\t}\n\n\t/**\n\t * only when option.state = true\n\t */\n\t// eslint-disable-next-line consistent-return,getter-return\n\tpublic get state(): IRNGSeedRandomState\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/unbound-method\n\t\tconst fn = this._rng.state;\n\n\t\tif (typeof fn === 'function')\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\treturn fn();\n\t\t}\n\t}\n\n\t/**\n\t * @todo options for change seeder\n\t */\n\toverride seed(seed?, opts?: RNGSeedRandomOptions, ...argv)\n\t{\n\t\tif (opts === null)\n\t\t{\n\t\t\tthis._opts = void 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._opts = opts || this._opts;\n\t\t}\n\n\t\tthis._rng = this._seedrandom(this._seedAuto(seed), this._opts, ...argv);\n\t}\n\n\t// @ts-ignore\n\tclone(seed?, opts?: RNGSeedRandomOptions, ...argv): RNGSeedRandom\n\t{\n\t\treturn cloneClass(RNGSeedRandom, this, seed, opts, ...argv);\n\t}\n\n}\n\nexport interface IRNGSeedRandomState\n{\n\ti: number,\n\tj: number,\n\tS: number[],\n}\n\nexport interface IRNGSeedRandomGenerator\n{\n\t(seed?: any, opts?: seedrandom.seedRandomOptions, ...argv: any[]): seedrandom.prng\n}\n\nexport default RNGSeedRandom;\n"],"names":["RNGSeedRandom","RNGFunction","_seedable","constructor","seed","opts","argv","createLib","slice","_init_check","_init","_opts","Object","assign","defaultOptions","_seedrandom","_NAME","_TYPE","name","fn","includes","test","require"],"mappings":";;;;;;;;;;;AAAAA,MAAAA,aAAA,SAAAC,8BAAA,CAAA;EAiBuCC,SAAA,GAAA,IAAA,CAAA;AAC5BC,EAAAA,WAAAA,CAAAC,IAAA,EAAAC,IAAA,KAAAC,IAAA,EAAA;;;kBA4BOC,CAAA,GAAAD,IAA2B,EAAA;WAG3C,IAAA,IAAA,CAAAA,IAAA,CAAA,CAAA,CAAA,EAAAA,IAAA,CAAA,CAAA,CAAA,EAAAA,IAAA,CAAA,CAAA,CAAA,EAAA,GAAAA,IAAA,CAAAE,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;gBAuCG,GAACF,IAAA,EAAA;IACA,OAAA,IAAA,IAAA,IAAAA,IAAA,CAAA,CAAA;;AAjCJ;AAGSG,EAAAA,WAAAA,CAAAL,IAAA,EAAAC,IAAiF,EAAA,GAAAC,IAAA,EAAA,EAAA;AAE1FI,EAAAA,KAAAA,CAAAN,IAAA,EAAAC,IAAA,KAAAC,IAAA,EAAA;IAME,UAAY,GAAA,IAAA,CAAAK,KAAA,IAAAC,MAAA,CAAAC,MAAA,CAAA,EAAA,EAAAC,cAAA,CAAA,CAAA;AAEZ,IAAA,IAAA,CAAAC,WAAA,GAAK;AACL,IAAA,KAAA,CAAAL,KAAA,CAAAN,IAAA,EAAAC,IAAA,KAAAC,IAAA,CAAA,CAAA;AAEA,GAAA;AACCU,EAAAA,KAAA,GAAmB,YAAA,CAAA;AAGnBC,EAAAA,KAAK,GAAA,IAAQ,CAAA;AAGdC,EAAAA,IAAAA,IAAAA,GAAA;IACC,OAAA,CAAA,EAAA,IAAA,CAAAF,KAAA,CAAA,EAAK,IAAA,CAAAC,KAAA,GAAgB,GAAA,GAAK,IAAA,CAAAA,KAAA,GAAA,EAAA,CAAA,CAAA,CAAA;;;IAW3B,IAAAE,EAAA,WAAAA,EAAA,KAAA,QAAA,EAAA;gBAEO,GAAA,IACR,CAAA;;QAGA,KAAA,MAAA,CAAA;AAGA,QAAA,KAAA,QAAK,CAAA;AAGN,QAAA,KAAA,QAAW,CAAA;AAIX,QAAA,KAAA;;;;AAKE;UACH,IAAC,CAAAF,KAAA,GAAAE,EAAA,CAAA;AAED,UAAA,MAAA;;AAGC,UAAA,IAAA,CAAAA,EAAA,CAAAC,QAAA,yBAAA,CAAAC,IAAA,CAAAF,EAAA,CAAA,EAAA;;YAK0DA,EAAA,GAAAG,OAAA,CAAA,CAAA,eAAA,EAAAH,EAAA,CAAA,CAAA,CAAA,CAAA;AAC3D,YAAA,MAAA;WAKC,MAAA;gCAGQ,CAAA,CAAA,4BAAA,EAAKA,EAAA,CAAA,CAAA,CAAA,CAAA;;;;;AASb,MAAA,IAAA,CAAAF,KAAA,GAAAE,EAAA,CAAAD,IAAA,CAAA;AAEC,KAAA;mBAII,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}