toosoon-prng 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,207 @@
1
+ # TOOSOON PRNG
2
+
3
+ TOOSOON pseudo-random number generator utility functions & helpers.
4
+
5
+ ## Installation
6
+
7
+ Yarn:
8
+
9
+ ```properties
10
+ $ yarn add toosoon-prng
11
+ ```
12
+
13
+ NPM:
14
+
15
+ ```properties
16
+ $ npm install toosoon-prng
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ PRNG:
22
+
23
+ ```ts
24
+ import prng from 'toosoon-prng';
25
+
26
+ prng.setSeed('010101');
27
+ console.log(prng.randomFloat('angle', 0, Math.PI)); // Pseudo-random float number in the interval [0, 3.14...]
28
+ ```
29
+
30
+ PRNG Controllers:
31
+
32
+ ```ts
33
+ import {
34
+ BooleanController,
35
+ SignController,
36
+ FloatController,
37
+ IntController,
38
+ HexColorController,
39
+ ItemController,
40
+ ObjectPropertyController,
41
+ WeightsController,
42
+ BooleanGroupController,
43
+ SignGroupController,
44
+ FloatGroupController,
45
+ IntGroupController,
46
+ HexColorGroupController,
47
+ ItemGroupController,
48
+ ObjectPropertyGroupController,
49
+ WeightsGroupController
50
+ } from 'toosoon-prng';
51
+
52
+ const seed = '010101';
53
+
54
+ const config = {
55
+ // Controllers
56
+ boolean: new BooleanController(`${seed}-boolean`, 0.5),
57
+ sign: new SignController(`${seed}-sign`, 0.5),
58
+ float: new FloatController(`${seed}-float`, 0, 1),
59
+ int: new IntController(`${seed}-int`, 0, 10),
60
+ hex: new HexColorController(`${seed}-hex`),
61
+ item: new ItemController<number>(`${seed}-item`, [0, 0.5, 1]),
62
+ property: new ObjectPropertyController<boolean>(`${seed}-property`, { foo: true, bar: false }),
63
+ value: new WeightsController<string>(`${seed}-value`, [
64
+ { weight: 0.5, value: 'foo' },
65
+ { weight: 2, value: 'bar' }
66
+ ]),
67
+ // Group Controllers
68
+ groupBoolean: new BooleanGroupController(`${seed}-group-boolean`, 0.5),
69
+ groupSign: new SignGroupController(`${seed}-group-sign`, 0.5),
70
+ groupFloat: new FloatGroupController(`${seed}-group-float`, 0, 1),
71
+ groupInt: new IntGroupController(`${seed}-group-int`, 0, 10),
72
+ groupHex: new HexColorGroupController(`${seed}-group-hex`),
73
+ groupItem: new ItemGroupController<number>(`${seed}-group-item`, [0, 0.5, 1]),
74
+ groupProperty: new ObjectPropertyGroupController<boolean>(`${seed}-group-property`, { foo: true, bar: false }),
75
+ groupValue: new WeightsGroupController<string>(`${seed}-group-value`, [
76
+ { weight: 0.5, value: 'foo' },
77
+ { weight: 2, value: 'bar' }
78
+ ])
79
+ };
80
+ ```
81
+
82
+ ## PRNG Functions
83
+
84
+ ```ts
85
+ // Set PRNG instance seed
86
+ prng.setSeed(seed: string) => void;
87
+ ```
88
+
89
+ ```ts
90
+ // Set PRNG instance method
91
+ prng.setMethod(method: PRNGMethod) => void;
92
+ ```
93
+
94
+ ```ts
95
+ // Generate a pseudo-random number in the interval [0, 1] (PRNG equivalent of Math.random)
96
+ prng.random(seed: string) => number;
97
+ ```
98
+
99
+ ```ts
100
+ // Generate a pseudo-random boolean (true or false)
101
+ prng.randomBoolean(seed: string, probability?: number) => boolean;
102
+ ```
103
+
104
+ ```ts
105
+ // Generate a pseudo-random sign (1 or -1)
106
+ prng.randomSign(seed: string, probability?: number) => number;
107
+ ```
108
+
109
+ ```ts
110
+ // Generate a pseudo-random float number
111
+ prng.randomFloat(seed: string, min?: number, max?: number1, precision?: number) => number;
112
+ ```
113
+
114
+ ```ts
115
+ // Generate a pseudo-random integer number
116
+ prng.randomInt(seed: string, min: number, max: number) => void;
117
+ ```
118
+
119
+ ```ts
120
+ // Generate a pseudo-random hexadecimal color
121
+ prng.randomHexColor(seed: string) => string;
122
+ ```
123
+
124
+ ```ts
125
+ // Pick a pseudo-random item from an array
126
+ prng.randomItem<T>(seed: string, array: T[]) => T | undefined;
127
+ ```
128
+
129
+ ```ts
130
+ // Pick a pseudo-random property from an object
131
+ prng.randomObjectProperty(seed: string, object: object) => unknown | undefined
132
+ ```
133
+
134
+ ```ts
135
+ // Return a pseudo-random index from an array of weights
136
+ prng.randomIndex(seed: string, weights?: number[]) => number;
137
+ ```
138
+
139
+ ## PRNG Controllers
140
+
141
+ ```ts
142
+ class BooleanController(seed: string, probability?: number);
143
+ ```
144
+
145
+ ```ts
146
+ class SignController(seed: string, probability?: number);
147
+ ```
148
+
149
+ ```ts
150
+ class FloatController(seed: string, min?: number, max?: number);
151
+ ```
152
+
153
+ ```ts
154
+ class IntController(seed: string, min: number, max: number);
155
+ ```
156
+
157
+ ```ts
158
+ class HexColorController(seed: string);
159
+ ```
160
+
161
+ ```ts
162
+ class ItemController<T>(seed: string, items: T[]);
163
+ ```
164
+
165
+ ```ts
166
+ class ObjectPropertyController<T>(seed: string, object: object);
167
+ ```
168
+
169
+ ```ts
170
+ class WeightsController<T>(seed: string, items: Array<{ weight: number; value: T }>);
171
+ ```
172
+
173
+ ```ts
174
+ class BooleanGroupController(seed: string, probability: number);
175
+ ```
176
+
177
+ ```ts
178
+ class SignGroupController(seed: string, probability: number);
179
+ ```
180
+
181
+ ```ts
182
+ class FloatGroupController(seed: string, min: number, max: number);
183
+ ```
184
+
185
+ ```ts
186
+ class IntGroupController(seed: string, min: number, max: number);
187
+ ```
188
+
189
+ ```ts
190
+ class HexColorGroupController(seed: string);
191
+ ```
192
+
193
+ ```ts
194
+ class ItemGroupController<T>(seed: string, items: T[]);
195
+ ```
196
+
197
+ ```ts
198
+ class ObjectPropertyGroupController<T>(seed: string, object: object);
199
+ ```
200
+
201
+ ```ts
202
+ class WeightsGroupController<T>(seed: string, items: Array<{ weight: number; value: T }>);
203
+ ```
204
+
205
+ ## License
206
+
207
+ MIT License, see [LICENSE](https://github.com/toosoon-dev/toosoon-prng/tree/master/LICENSE) for details
@@ -2,8 +2,8 @@ import type { Gui, GuiController } from 'toosoon-gui';
2
2
  export declare enum PRNGControllerTypes {
3
3
  Boolean = "Boolean",
4
4
  Sign = "Sign",
5
- Int = "Int",
6
5
  Float = "Float",
6
+ Int = "Int",
7
7
  HexColor = "HexColor",
8
8
  Item = "Item",
9
9
  ObjectProperty = "ObjectProperty",
@@ -61,7 +61,7 @@ export declare class SignController extends BasePRNGController<number> {
61
61
  addGUI(gui: Gui): GuiController;
62
62
  getValue(): number;
63
63
  }
64
- export declare class IntController extends BasePRNGController<number> {
64
+ export declare class FloatController extends BasePRNGController<number> {
65
65
  value: number;
66
66
  min: number;
67
67
  max: number;
@@ -69,7 +69,7 @@ export declare class IntController extends BasePRNGController<number> {
69
69
  addGUI(gui: Gui, min: number, max: number, step?: number): GuiController;
70
70
  getValue(): number;
71
71
  }
72
- export declare class FloatController extends BasePRNGController<number> {
72
+ export declare class IntController extends BasePRNGController<number> {
73
73
  value: number;
74
74
  min: number;
75
75
  max: number;
@@ -121,19 +121,19 @@ export declare class SignGroupController extends BasePRNGGroupController<number>
121
121
  constructor(seed: string, probability: number);
122
122
  createController(index: number): SignController;
123
123
  }
124
- export declare class IntGroupController extends BasePRNGGroupController<number> {
124
+ export declare class FloatGroupController extends BasePRNGGroupController<number> {
125
125
  min: number;
126
126
  max: number;
127
- controllers: IntController[];
127
+ controllers: FloatController[];
128
128
  constructor(seed: string, min: number, max: number);
129
- createController(index: number): IntController;
129
+ createController(index: number): FloatController;
130
130
  }
131
- export declare class FloatGroupController extends BasePRNGGroupController<number> {
131
+ export declare class IntGroupController extends BasePRNGGroupController<number> {
132
132
  min: number;
133
133
  max: number;
134
- controllers: FloatController[];
134
+ controllers: IntController[];
135
135
  constructor(seed: string, min: number, max: number);
136
- createController(index: number): FloatController;
136
+ createController(index: number): IntController;
137
137
  }
138
138
  export declare class HexColorGroupController extends BasePRNGGroupController<string> {
139
139
  controllers: HexColorController[];
@@ -18,14 +18,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.WeightsGroupController = exports.ObjectPropertyGroupController = exports.ItemGroupController = exports.HexColorGroupController = exports.FloatGroupController = exports.IntGroupController = exports.SignGroupController = exports.BooleanGroupController = exports.WeightsController = exports.ObjectPropertyController = exports.ItemController = exports.HexColorController = exports.FloatController = exports.IntController = exports.SignController = exports.BooleanController = exports.PRNGControllerTypes = void 0;
21
+ exports.WeightsGroupController = exports.ObjectPropertyGroupController = exports.ItemGroupController = exports.HexColorGroupController = exports.IntGroupController = exports.FloatGroupController = exports.SignGroupController = exports.BooleanGroupController = exports.WeightsController = exports.ObjectPropertyController = exports.ItemController = exports.HexColorController = exports.IntController = exports.FloatController = exports.SignController = exports.BooleanController = exports.PRNGControllerTypes = void 0;
22
22
  var prng_1 = __importDefault(require("./prng"));
23
23
  var PRNGControllerTypes;
24
24
  (function (PRNGControllerTypes) {
25
25
  PRNGControllerTypes["Boolean"] = "Boolean";
26
26
  PRNGControllerTypes["Sign"] = "Sign";
27
- PRNGControllerTypes["Int"] = "Int";
28
27
  PRNGControllerTypes["Float"] = "Float";
28
+ PRNGControllerTypes["Int"] = "Int";
29
29
  PRNGControllerTypes["HexColor"] = "HexColor";
30
30
  PRNGControllerTypes["Item"] = "Item";
31
31
  PRNGControllerTypes["ObjectProperty"] = "ObjectProperty";
@@ -124,56 +124,56 @@ var SignController = /** @class */ (function (_super) {
124
124
  return SignController;
125
125
  }(BasePRNGController));
126
126
  exports.SignController = SignController;
127
- var IntController = /** @class */ (function (_super) {
128
- __extends(IntController, _super);
129
- function IntController(seed, min, max) {
127
+ var FloatController = /** @class */ (function (_super) {
128
+ __extends(FloatController, _super);
129
+ function FloatController(seed, min, max) {
130
130
  if (min === void 0) { min = 0; }
131
131
  if (max === void 0) { max = 1; }
132
132
  var _this = _super.call(this, seed) || this;
133
133
  _this.min = min;
134
134
  _this.max = max;
135
- _this.value = prng_1.default.randomInt(_this.seed, min, max);
135
+ _this.value = _this.getValue();
136
136
  return _this;
137
137
  }
138
- IntController.prototype.addGUI = function (gui, min, max, step) {
139
- if (step === void 0) { step = 1; }
138
+ FloatController.prototype.addGUI = function (gui, min, max, step) {
139
+ if (step === void 0) { step = 0.01; }
140
140
  this.gui = gui.add(this, 'value', min, max, step).name(this.seed);
141
141
  return this.gui;
142
142
  };
143
- IntController.prototype.getValue = function () {
143
+ FloatController.prototype.getValue = function () {
144
144
  var _a;
145
- this.value = prng_1.default.randomInt(this.seed, this.min, this.max);
145
+ this.value = prng_1.default.randomFloat(this.seed, this.min, this.max);
146
146
  (_a = this.gui) === null || _a === void 0 ? void 0 : _a.updateDisplay();
147
147
  return this.value;
148
148
  };
149
- return IntController;
149
+ return FloatController;
150
150
  }(BasePRNGController));
151
- exports.IntController = IntController;
152
- var FloatController = /** @class */ (function (_super) {
153
- __extends(FloatController, _super);
154
- function FloatController(seed, min, max) {
151
+ exports.FloatController = FloatController;
152
+ var IntController = /** @class */ (function (_super) {
153
+ __extends(IntController, _super);
154
+ function IntController(seed, min, max) {
155
155
  if (min === void 0) { min = 0; }
156
156
  if (max === void 0) { max = 1; }
157
157
  var _this = _super.call(this, seed) || this;
158
158
  _this.min = min;
159
159
  _this.max = max;
160
- _this.value = _this.getValue();
160
+ _this.value = prng_1.default.randomInt(_this.seed, min, max);
161
161
  return _this;
162
162
  }
163
- FloatController.prototype.addGUI = function (gui, min, max, step) {
164
- if (step === void 0) { step = 0.01; }
163
+ IntController.prototype.addGUI = function (gui, min, max, step) {
164
+ if (step === void 0) { step = 1; }
165
165
  this.gui = gui.add(this, 'value', min, max, step).name(this.seed);
166
166
  return this.gui;
167
167
  };
168
- FloatController.prototype.getValue = function () {
168
+ IntController.prototype.getValue = function () {
169
169
  var _a;
170
- this.value = prng_1.default.randomFloat(this.seed, this.min, this.max);
170
+ this.value = prng_1.default.randomInt(this.seed, this.min, this.max);
171
171
  (_a = this.gui) === null || _a === void 0 ? void 0 : _a.updateDisplay();
172
172
  return this.value;
173
173
  };
174
- return FloatController;
174
+ return IntController;
175
175
  }(BasePRNGController));
176
- exports.FloatController = FloatController;
176
+ exports.IntController = IntController;
177
177
  var HexColorController = /** @class */ (function (_super) {
178
178
  __extends(HexColorController, _super);
179
179
  function HexColorController(seed) {
@@ -292,36 +292,36 @@ var SignGroupController = /** @class */ (function (_super) {
292
292
  return SignGroupController;
293
293
  }(BasePRNGGroupController));
294
294
  exports.SignGroupController = SignGroupController;
295
- var IntGroupController = /** @class */ (function (_super) {
296
- __extends(IntGroupController, _super);
297
- function IntGroupController(seed, min, max) {
295
+ var FloatGroupController = /** @class */ (function (_super) {
296
+ __extends(FloatGroupController, _super);
297
+ function FloatGroupController(seed, min, max) {
298
298
  var _this = _super.call(this, seed) || this;
299
299
  _this.controllers = [];
300
300
  _this.min = min;
301
301
  _this.max = max;
302
302
  return _this;
303
303
  }
304
- IntGroupController.prototype.createController = function (index) {
305
- return new IntController("".concat(this.seed, "-").concat(index), this.min, this.max);
304
+ FloatGroupController.prototype.createController = function (index) {
305
+ return new FloatController("".concat(this.seed, "-").concat(index), this.min, this.max);
306
306
  };
307
- return IntGroupController;
307
+ return FloatGroupController;
308
308
  }(BasePRNGGroupController));
309
- exports.IntGroupController = IntGroupController;
310
- var FloatGroupController = /** @class */ (function (_super) {
311
- __extends(FloatGroupController, _super);
312
- function FloatGroupController(seed, min, max) {
309
+ exports.FloatGroupController = FloatGroupController;
310
+ var IntGroupController = /** @class */ (function (_super) {
311
+ __extends(IntGroupController, _super);
312
+ function IntGroupController(seed, min, max) {
313
313
  var _this = _super.call(this, seed) || this;
314
314
  _this.controllers = [];
315
315
  _this.min = min;
316
316
  _this.max = max;
317
317
  return _this;
318
318
  }
319
- FloatGroupController.prototype.createController = function (index) {
320
- return new FloatController("".concat(this.seed, "-").concat(index), this.min, this.max);
319
+ IntGroupController.prototype.createController = function (index) {
320
+ return new IntController("".concat(this.seed, "-").concat(index), this.min, this.max);
321
321
  };
322
- return FloatGroupController;
322
+ return IntGroupController;
323
323
  }(BasePRNGGroupController));
324
- exports.FloatGroupController = FloatGroupController;
324
+ exports.IntGroupController = IntGroupController;
325
325
  var HexColorGroupController = /** @class */ (function (_super) {
326
326
  __extends(HexColorGroupController, _super);
327
327
  function HexColorGroupController() {
package/lib/prng.d.ts CHANGED
@@ -17,8 +17,8 @@ declare class PRNG {
17
17
  random(seed: string): number;
18
18
  randomBoolean(seed: string, probability?: number): boolean;
19
19
  randomSign(seed: string, probability?: number): number;
20
- randomInt(seed: string, min: number, max: number): number;
21
20
  randomFloat(seed: string, min?: number, max?: number, precision?: number): number;
21
+ randomInt(seed: string, min: number, max: number): number;
22
22
  randomHexColor(seed: string): string;
23
23
  randomItem<T = unknown>(seed: string, array?: T[]): T | undefined;
24
24
  randomObjectProperty(seed: string, object: object): unknown | undefined;
package/lib/prng.js CHANGED
@@ -28,9 +28,7 @@ var PRNG = /** @class */ (function () {
28
28
  if (this.seed === seed)
29
29
  return;
30
30
  this.seed = seed;
31
- this.controllers.forEach(function (controller) {
32
- controller.getValue();
33
- });
31
+ this.controllers.forEach(function (controller) { return controller.getValue(); });
34
32
  };
35
33
  PRNG.prototype.setMethod = function (method) {
36
34
  this.method = method;
@@ -56,15 +54,15 @@ var PRNG = /** @class */ (function () {
56
54
  if (probability === void 0) { probability = 0.5; }
57
55
  return this.randomBoolean(seed, probability) ? 1 : -1;
58
56
  };
59
- PRNG.prototype.randomInt = function (seed, min, max) {
60
- return Math.floor(this.random(seed) * (max - min + 1) + min);
61
- };
62
57
  PRNG.prototype.randomFloat = function (seed, min, max, precision) {
63
58
  if (min === void 0) { min = 0; }
64
59
  if (max === void 0) { max = 1; }
65
60
  if (precision === void 0) { precision = 2; }
66
61
  return parseFloat(Math.min(min + this.random(seed) * (max - min), max).toFixed(precision));
67
62
  };
63
+ PRNG.prototype.randomInt = function (seed, min, max) {
64
+ return Math.floor(this.random(seed) * (max - min + 1) + min);
65
+ };
68
66
  PRNG.prototype.randomHexColor = function (seed) {
69
67
  return '#' + ('00000' + ((this.random(seed) * (1 << 24)) | 0).toString(16)).slice(-6);
70
68
  };
@@ -1 +1 @@
1
- {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/toosoon-gui/lib/wrapper.d.ts","../node_modules/toosoon-gui/lib/types.d.ts","../node_modules/toosoon-gui/lib/controllers/controller.d.ts","../node_modules/toosoon-gui/lib/controllers/angle-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/color-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/coords-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/file-controller.d.ts","../node_modules/toosoon-gui/lib/gui.d.ts","../node_modules/toosoon-gui/lib/controllers/boolean-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/function-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/number-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/option-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/string-controller.d.ts","../node_modules/toosoon-gui/lib/index.d.ts","../src/utils.ts","../src/prng.ts","../src/controllers.ts","../src/index.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"bb0dc65300311f02c71ab5da7aeffe84364bfb53e727bcd29a20d0b3ae2a0ed4","2afcc0377d7c03c9146b153947520ad46967062ff0118dd512e88560f5c48c4b","c15c72246f26117c4e232ede5d394b80c6c983fb73a3d92ede4da3cf5dd44564","6339a44514a06c5e8f726cf27fc7fb2bf0e2ce5fe0de5545e4d412ba54c209f9","52800b74e97d62cd27f91a19ace28ca7ed32084fc5de80b015c8b62aabb4de99","2eba4de3285ccf1518aa5d87c683e4c4da38a837f69e112710fb107c58e86b9f","7b1267119c9c7c148ee973f8affd943c49f7ec2f5573f83cee25139492b533cd","1361b028bda65af72410feed749981eb80ced6439adf892ead6383fd779aa36e","027d78906c03890d8473731baca3acad76095aa2e68af1c6fcd32ded61d9a430","5eb3db8ef1b8f4eb5b16facea0a1cc3d9c22d6513de77a29c6630233c7ccf888","448bf4331abf7995b2ab5c4a449800e35fc3dbcfb522ed752d84564fd7d17374","3147a65dfdc1827b3a1b3899c5b316e8cc10eeb66f5c26c758bb24b2c962983a","845075e15760edf65e31220cbfc67b0bd436be0cd169181aa524dcf8987ff09e","db6c19a31bb62dc80afd34dd6c773f2385db59abf6608c3f293fedf78bcb1de3",{"version":"50b0ac11d8ac3c1ffc3d96b2047de1f23a71a34ef45278dab9db9663ac34ba43","signature":"a33086c14ef04ee690a02c14ed96e979a244182c9c16c01f8e341d56c4bb25e1"},{"version":"c6f49bdb387c6c2333634665eda6d3327d7686244ec7583c081a73bea7b9a0c4","signature":"6782882e169cf1f29876468ad7f713f0da1d97ca1eba37618cd17e4816018996"},{"version":"0e94293698e9e274ecf63336eb24a518735acd867439527f78719ac868d89f08","signature":"2dbc3e7cfdcb7cecea8a9320e37ba4327fa2e5782de4df7851b9c9af6833fe0a"},{"version":"73f9aba3dfd4486bbdf9d6b0647b0ca095c6dfd796c5c94dab541c4f51ee8f75","signature":"76e672d8e983a8a8853647e4b1d5d26eef55db7836923e81f8669be3b9a4b006"}],"root":[[79,82]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[67,72],[66,72],[66,67,68,69,70,71],[65,66,67,69,71,72,73,74,75,76,77],[65,67,72],[66,67,72],[78,80],[79,80,81],[79,81],[78],[81]],"referencedMap":[[68,1],[73,1],[69,1],[67,2],[70,1],[71,1],[74,1],[75,1],[76,1],[77,1],[72,3],[78,4],[66,5],[65,6],[81,7],[82,8],[80,9]],"exportedModulesMap":[[68,1],[73,1],[69,1],[67,2],[70,1],[71,1],[74,1],[75,1],[76,1],[77,1],[72,3],[78,4],[66,5],[65,6],[81,10],[82,8],[80,11]],"semanticDiagnosticsPerFile":[68,73,69,67,70,71,74,75,76,77,72,78,66,65,63,64,12,14,13,2,15,16,17,18,19,20,21,22,3,4,23,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,53,54,57,55,56,58,59,10,1,11,62,61,60,81,82,80,79]},"version":"5.3.3"}
1
+ {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/toosoon-gui/lib/wrapper.d.ts","../node_modules/toosoon-gui/lib/types.d.ts","../node_modules/toosoon-gui/lib/controllers/controller.d.ts","../node_modules/toosoon-gui/lib/controllers/angle-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/color-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/coords-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/file-controller.d.ts","../node_modules/toosoon-gui/lib/gui.d.ts","../node_modules/toosoon-gui/lib/controllers/boolean-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/function-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/number-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/option-controller.d.ts","../node_modules/toosoon-gui/lib/controllers/string-controller.d.ts","../node_modules/toosoon-gui/lib/index.d.ts","../src/utils.ts","../src/prng.ts","../src/controllers.ts","../src/index.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"bb0dc65300311f02c71ab5da7aeffe84364bfb53e727bcd29a20d0b3ae2a0ed4","2afcc0377d7c03c9146b153947520ad46967062ff0118dd512e88560f5c48c4b","c15c72246f26117c4e232ede5d394b80c6c983fb73a3d92ede4da3cf5dd44564","6339a44514a06c5e8f726cf27fc7fb2bf0e2ce5fe0de5545e4d412ba54c209f9","52800b74e97d62cd27f91a19ace28ca7ed32084fc5de80b015c8b62aabb4de99","2eba4de3285ccf1518aa5d87c683e4c4da38a837f69e112710fb107c58e86b9f","7b1267119c9c7c148ee973f8affd943c49f7ec2f5573f83cee25139492b533cd","1361b028bda65af72410feed749981eb80ced6439adf892ead6383fd779aa36e","027d78906c03890d8473731baca3acad76095aa2e68af1c6fcd32ded61d9a430","5eb3db8ef1b8f4eb5b16facea0a1cc3d9c22d6513de77a29c6630233c7ccf888","448bf4331abf7995b2ab5c4a449800e35fc3dbcfb522ed752d84564fd7d17374","3147a65dfdc1827b3a1b3899c5b316e8cc10eeb66f5c26c758bb24b2c962983a","845075e15760edf65e31220cbfc67b0bd436be0cd169181aa524dcf8987ff09e","db6c19a31bb62dc80afd34dd6c773f2385db59abf6608c3f293fedf78bcb1de3",{"version":"50b0ac11d8ac3c1ffc3d96b2047de1f23a71a34ef45278dab9db9663ac34ba43","signature":"a33086c14ef04ee690a02c14ed96e979a244182c9c16c01f8e341d56c4bb25e1"},{"version":"0650759ff8ac62a2cda3144808232debab75642d5abfcc43d6fb669e2e0c9a8d","signature":"f172dda59fe99dae26b48d0c5842827a7c1d80e6dd431ea64876848181ef4bba"},{"version":"edc5c3a31bc570bdebbd2138e3b1a909209b7ff1985d094e3704cd3eed154cee","signature":"34f3de3c34a7a0559f69ce84f1ba425f0d3c7b2461b449dcc3b885d8230fa7b8"},{"version":"73f9aba3dfd4486bbdf9d6b0647b0ca095c6dfd796c5c94dab541c4f51ee8f75","signature":"76e672d8e983a8a8853647e4b1d5d26eef55db7836923e81f8669be3b9a4b006"}],"root":[[79,82]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[67,72],[66,72],[66,67,68,69,70,71],[65,66,67,69,71,72,73,74,75,76,77],[65,67,72],[66,67,72],[78,80],[79,80,81],[79,81],[78],[81]],"referencedMap":[[68,1],[73,1],[69,1],[67,2],[70,1],[71,1],[74,1],[75,1],[76,1],[77,1],[72,3],[78,4],[66,5],[65,6],[81,7],[82,8],[80,9]],"exportedModulesMap":[[68,1],[73,1],[69,1],[67,2],[70,1],[71,1],[74,1],[75,1],[76,1],[77,1],[72,3],[78,4],[66,5],[65,6],[81,10],[82,8],[80,11]],"semanticDiagnosticsPerFile":[68,73,69,67,70,71,74,75,76,77,72,78,66,65,63,64,12,14,13,2,15,16,17,18,19,20,21,22,3,4,23,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,53,54,57,55,56,58,59,10,1,11,62,61,60,81,82,80,79]},"version":"5.3.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toosoon-prng",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Pseudo-random number generator utility functions & helpers",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {
@@ -5,8 +5,8 @@ import prng from './prng';
5
5
  export enum PRNGControllerTypes {
6
6
  Boolean = 'Boolean',
7
7
  Sign = 'Sign',
8
- Int = 'Int',
9
8
  Float = 'Float',
9
+ Int = 'Int',
10
10
  HexColor = 'HexColor',
11
11
  Item = 'Item',
12
12
  ObjectProperty = 'ObjectProperty',
@@ -102,7 +102,7 @@ export class BooleanController extends BasePRNGController<boolean> {
102
102
  value: boolean;
103
103
  probability: number;
104
104
 
105
- constructor(seed: string, probability = 0.5) {
105
+ constructor(seed: string, probability: number = 0.5) {
106
106
  super(seed);
107
107
 
108
108
  this.probability = probability;
@@ -125,7 +125,7 @@ export class SignController extends BasePRNGController<number> {
125
125
  value: number;
126
126
  probability: number;
127
127
 
128
- constructor(seed: string, probability = 0.5) {
128
+ constructor(seed: string, probability: number = 0.5) {
129
129
  super(seed);
130
130
 
131
131
  this.probability = probability;
@@ -144,51 +144,51 @@ export class SignController extends BasePRNGController<number> {
144
144
  }
145
145
  }
146
146
 
147
- export class IntController extends BasePRNGController<number> {
147
+ export class FloatController extends BasePRNGController<number> {
148
148
  value: number;
149
149
  min: number;
150
150
  max: number;
151
151
 
152
- constructor(seed: string, min = 0, max = 1) {
152
+ constructor(seed: string, min: number = 0, max: number = 1) {
153
153
  super(seed);
154
154
 
155
155
  this.min = min;
156
156
  this.max = max;
157
- this.value = prng.randomInt(this.seed, min, max);
157
+ this.value = this.getValue();
158
158
  }
159
159
 
160
- addGUI(gui: Gui, min: number, max: number, step = 1) {
160
+ addGUI(gui: Gui, min: number, max: number, step: number = 0.01) {
161
161
  this.gui = gui.add(this, 'value', min, max, step).name(this.seed);
162
162
  return this.gui;
163
163
  }
164
164
 
165
165
  getValue() {
166
- this.value = prng.randomInt(this.seed, this.min, this.max);
166
+ this.value = prng.randomFloat(this.seed, this.min, this.max);
167
167
  this.gui?.updateDisplay();
168
168
  return this.value;
169
169
  }
170
170
  }
171
171
 
172
- export class FloatController extends BasePRNGController<number> {
172
+ export class IntController extends BasePRNGController<number> {
173
173
  value: number;
174
174
  min: number;
175
175
  max: number;
176
176
 
177
- constructor(seed: string, min = 0, max = 1) {
177
+ constructor(seed: string, min: number, max: number) {
178
178
  super(seed);
179
179
 
180
180
  this.min = min;
181
181
  this.max = max;
182
- this.value = this.getValue();
182
+ this.value = prng.randomInt(this.seed, min, max);
183
183
  }
184
184
 
185
- addGUI(gui: Gui, min: number, max: number, step: number = 0.01) {
185
+ addGUI(gui: Gui, min: number, max: number, step = 1) {
186
186
  this.gui = gui.add(this, 'value', min, max, step).name(this.seed);
187
187
  return this.gui;
188
188
  }
189
189
 
190
190
  getValue() {
191
- this.value = prng.randomFloat(this.seed, this.min, this.max);
191
+ this.value = prng.randomInt(this.seed, this.min, this.max);
192
192
  this.gui?.updateDisplay();
193
193
  return this.value;
194
194
  }
@@ -240,9 +240,9 @@ export class ItemController<T = unknown> extends BasePRNGController<T> {
240
240
 
241
241
  export class ObjectPropertyController<T = unknown> extends BasePRNGController<T> {
242
242
  value: T;
243
- object: Object;
243
+ object: { [key: string]: T };
244
244
 
245
- constructor(seed: string, object: Object) {
245
+ constructor(seed: string, object: { [key: string]: T }) {
246
246
  super(seed);
247
247
 
248
248
  this.object = object;
@@ -255,7 +255,7 @@ export class ObjectPropertyController<T = unknown> extends BasePRNGController<T>
255
255
  }
256
256
 
257
257
  getValue() {
258
- this.value = prng.randomObjectProperty(this.seed, this.object) as T;
258
+ this.value = prng.randomObjectProperty<T>(this.seed, this.object) as T;
259
259
  this.gui?.updateDisplay();
260
260
  return this.value;
261
261
  }
@@ -328,10 +328,10 @@ export class SignGroupController extends BasePRNGGroupController<number> {
328
328
  }
329
329
  }
330
330
 
331
- export class IntGroupController extends BasePRNGGroupController<number> {
331
+ export class FloatGroupController extends BasePRNGGroupController<number> {
332
332
  min: number;
333
333
  max: number;
334
- controllers: IntController[] = [];
334
+ controllers: FloatController[] = [];
335
335
 
336
336
  constructor(seed: string, min: number, max: number) {
337
337
  super(seed);
@@ -341,14 +341,14 @@ export class IntGroupController extends BasePRNGGroupController<number> {
341
341
  }
342
342
 
343
343
  createController(index: number) {
344
- return new IntController(`${this.seed}-${index}`, this.min, this.max);
344
+ return new FloatController(`${this.seed}-${index}`, this.min, this.max);
345
345
  }
346
346
  }
347
347
 
348
- export class FloatGroupController extends BasePRNGGroupController<number> {
348
+ export class IntGroupController extends BasePRNGGroupController<number> {
349
349
  min: number;
350
350
  max: number;
351
- controllers: FloatController[] = [];
351
+ controllers: IntController[] = [];
352
352
 
353
353
  constructor(seed: string, min: number, max: number) {
354
354
  super(seed);
@@ -358,7 +358,7 @@ export class FloatGroupController extends BasePRNGGroupController<number> {
358
358
  }
359
359
 
360
360
  createController(index: number) {
361
- return new FloatController(`${this.seed}-${index}`, this.min, this.max);
361
+ return new IntController(`${this.seed}-${index}`, this.min, this.max);
362
362
  }
363
363
  }
364
364
 
@@ -390,10 +390,10 @@ export class ItemGroupController<T = unknown> extends BasePRNGGroupController<T>
390
390
  }
391
391
 
392
392
  export class ObjectPropertyGroupController<T = unknown> extends BasePRNGGroupController<T> {
393
- object: Object;
393
+ object: { [key: string]: T };
394
394
  controllers: ObjectPropertyController<T>[] = [];
395
395
 
396
- constructor(seed: string, object: Object) {
396
+ constructor(seed: string, object: { [key: string]: T }) {
397
397
  super(seed);
398
398
 
399
399
  this.object = object;
package/src/prng.ts CHANGED
@@ -28,12 +28,8 @@ class PRNG {
28
28
 
29
29
  public setSeed(seed: string) {
30
30
  if (this.seed === seed) return;
31
-
32
31
  this.seed = seed;
33
-
34
- this.controllers.forEach((controller) => {
35
- controller.getValue();
36
- });
32
+ this.controllers.forEach((controller) => controller.getValue());
37
33
  }
38
34
 
39
35
  public setMethod(method: PRNGMethod) {
@@ -62,14 +58,14 @@ class PRNG {
62
58
  return this.randomBoolean(seed, probability) ? 1 : -1;
63
59
  }
64
60
 
65
- public randomInt(seed: string, min: number, max: number) {
66
- return Math.floor(this.random(seed) * (max - min + 1) + min);
67
- }
68
-
69
61
  public randomFloat(seed: string, min: number = 0, max: number = 1, precision: number = 2): number {
70
62
  return parseFloat(Math.min(min + this.random(seed) * (max - min), max).toFixed(precision));
71
63
  }
72
64
 
65
+ public randomInt(seed: string, min: number, max: number) {
66
+ return Math.floor(this.random(seed) * (max - min + 1) + min);
67
+ }
68
+
73
69
  public randomHexColor(seed: string): string {
74
70
  return '#' + ('00000' + ((this.random(seed) * (1 << 24)) | 0).toString(16)).slice(-6);
75
71
  }
@@ -79,7 +75,7 @@ class PRNG {
79
75
  return array[this.randomInt(seed, 0, array.length - 1)];
80
76
  }
81
77
 
82
- public randomObjectProperty(seed: string, object: object): unknown | undefined {
78
+ public randomObjectProperty<T = unknown>(seed: string, object: { [key: string]: T }): T | undefined {
83
79
  const keys = Object.keys(object);
84
80
  const key = this.randomItem(seed, keys);
85
81
  if (key && object.hasOwnProperty(key)) {
package/tsconfig.json CHANGED
@@ -4,8 +4,8 @@
4
4
  "compilerOptions": {
5
5
  "baseUrl": ".",
6
6
  "outDir": "lib",
7
- "target": "es5",
8
- "module": "commonjs",
7
+ "target": "ES5",
8
+ "module": "CommonJS",
9
9
  "lib": ["DOM", "ESNext"],
10
10
  "allowJs": true,
11
11
  "allowSyntheticDefaultImports": true,