massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / modules / esnext.math.seeded-prng.js
1 var $ = require('../internals/export');
2 var global = require('../internals/global');
3 var anObject = require('../internals/an-object');
4 var numberIsFinite = require('../internals/number-is-finite');
5 var createIteratorConstructor = require('../internals/create-iterator-constructor');
6 var InternalStateModule = require('../internals/internal-state');
7
8 var SEEDED_RANDOM = 'Seeded Random';
9 var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator';
10 var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.';
11 var setInternalState = InternalStateModule.set;
12 var getInternalState = InternalStateModule.getterFor(SEEDED_RANDOM_GENERATOR);
13 var TypeError = global.TypeError;
14
15 var $SeededRandomGenerator = createIteratorConstructor(function SeededRandomGenerator(seed) {
16   setInternalState(this, {
17     type: SEEDED_RANDOM_GENERATOR,
18     seed: seed % 2147483647
19   });
20 }, SEEDED_RANDOM, function next() {
21   var state = getInternalState(this);
22   var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647;
23   return { value: (seed & 1073741823) / 1073741823, done: false };
24 });
25
26 // `Math.seededPRNG` method
27 // https://github.com/tc39/proposal-seeded-random
28 // based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html
29 $({ target: 'Math', stat: true, forced: true }, {
30   seededPRNG: function seededPRNG(it) {
31     var seed = anObject(it).seed;
32     if (!numberIsFinite(seed)) throw TypeError(SEED_TYPE_ERROR);
33     return new $SeededRandomGenerator(seed);
34   }
35 });