toosoon-utils 1.3.0 → 1.5.0

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 CHANGED
@@ -631,6 +631,8 @@ damp(value: number, target: number, damping: number, delta: number): number;
631
631
 
632
632
  ### Pseudo-Random Number Generator (PRNG)
633
633
 
634
+ #### PRNG Algorithms
635
+
634
636
  **Credits**: [Seeding random number generator](https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript)
635
637
 
636
638
  ##### cyrb128(seed)
@@ -640,7 +642,7 @@ Produce a 128-bit hash value from a string.
640
642
  `seed`: Initial seed state.
641
643
 
642
644
  ```ts
643
- cyrb128(seed: string): [number, number, number, number];
645
+ cyrb128(prng: string | object): [number, number, number, number];
644
646
  ```
645
647
 
646
648
  ##### sfc32(a, b, c, d)
@@ -683,13 +685,123 @@ _xoshiro128\*\*_, Generator with a 128-bit state.
683
685
  xoshiro128ss(a: number, b: number, c: number, d: number): number;
684
686
  ```
685
687
 
688
+ #### PRNG functions
689
+
690
+ Thanks to the above algorithms, a seed-based version of most of the [random functions](#random) are exist with additionnal parameters for a `seed` string and a PRNG `algorithm` function.
691
+
692
+ PRNG parameters:
693
+
694
+ ```ts
695
+ type PRNGParameters = string | { seed: string; algorithm: (...args: number[]) => number };
696
+ ```
697
+
698
+ ##### random(prng)
699
+
700
+ Generate a pseudo-random number in the interval [0, 1]. It is the PRNG equivalent of `Math.random()`.
701
+
702
+ - `prng`: PRNG parameters.
703
+
704
+ ```ts
705
+ random(prng: PRNGParameters): number;
706
+ ```
707
+
708
+ ##### randomBoolean(prng)
709
+
710
+ Generate a pseudo-random boolean (true or false).
711
+
712
+ - `prng`: PRNG parameters.
713
+ - `[probability=0.5]`: Probability to get true.
714
+
715
+ ```ts
716
+ randomBoolean(prng: PRNGParameters, probability?: number): boolean;
717
+ ```
718
+
719
+ ##### randomSign(prng)
720
+
721
+ Generate a pseudo-random sign (1 or -1).
722
+
723
+ - `prng`: PRNG parameters.
724
+ - `[probability=0.5]`: Probability to get 1.
725
+
726
+ ```ts
727
+ randomSign(prng: PRNGParameters, probability?: number): number;
728
+ ```
729
+
730
+ ##### randomFloat(prng, min, max)
731
+
732
+ Generate a pseudo-random floating-point number within a specified range.
733
+
734
+ - `prng`: PRNG parameters.
735
+ - `[min=0]`: Minimum boundary.
736
+ - `[max=1]`: Maximum boundary.
737
+ - `[precision=2]`: Number of digits after the decimal point.
738
+
739
+ ```ts
740
+ randomFloat(prng: PRNGParameters, min?: number, max?: number, precision?: number): number;
741
+ ```
742
+
743
+ ##### randomInt(prng, min, max)
744
+
745
+ Generate a pseudo-random integer number within a specified range.
746
+
747
+ - `prng`: PRNG parameters.
748
+ - `min`: Minimum boundary.
749
+ - `max`: Maximum boundary.
750
+
751
+ ```ts
752
+ randomInt(prng: PRNGParameters, min: number, max: number): number;
753
+ ```
754
+
755
+ ##### randomHexColor(prng)
756
+
757
+ Generate a pseudo-random hexadecimal color.
758
+
759
+ - `prng`: PRNG parameters.
760
+
761
+ ```ts
762
+ randomHexColor(prng: PRNGParameters): string;
763
+ ```
764
+
765
+ ##### randomItem(prng, array)
766
+
767
+ Pick a pseudo-random item from a given array.
768
+
769
+ - `prng`: PRNG parameters.
770
+ - `array`: Array to pick the item from.
771
+
772
+ ```ts
773
+ randomItem<T>(prng: PRNGParameters, array: T[]): T | undefined;
774
+ ```
775
+
776
+ ##### randomObjectProperty(prng)
777
+
778
+ Pick a pseudo-random property value from a given object.
779
+
780
+ - `prng`: PRNG parameters.
781
+ - `object`: Object to pick the property from.
782
+
783
+ ```ts
784
+ randomObjectProperty<T>(prng: PRNGParameters, object: Record<string, T>): T | undefined;
785
+ ```
786
+
787
+ ##### randomIndex(prng)
788
+
789
+ Select a pseudo-random index from an array of weighted items.
790
+
791
+ - `prng`: PRNG parameters.
792
+ - `weights`: Array of weights.
793
+
794
+ ```ts
795
+ randomIndex(prng: string | object, weights: number[]): number;
796
+ ```
797
+
686
798
  ### Random
687
799
 
688
800
  ##### randomBoolean(probability)
689
801
 
690
802
  Generate a random boolean (true or false).
691
803
 
692
- - `[probability=0.5]`: Probability to get `true`.
804
+ - `[probability=0.5]`: Probability to get true.
693
805
 
694
806
  ```ts
695
807
  randomBoolean(probability?: number): boolean;
@@ -753,7 +865,7 @@ Pick a random property value from a given object.
753
865
  - `object`: Object to pick the property from.
754
866
 
755
867
  ```ts
756
- randomObjectProperty<T>(object: { [key: string]: T }): T | undefined;
868
+ randomObjectProperty<T>(object: Record<string, T>): T | undefined;
757
869
  ```
758
870
 
759
871
  ##### randomIndex(weights)
@@ -763,7 +875,7 @@ Select a random index from an array of weighted items.
763
875
  - `weights`: Array of weights.
764
876
 
765
877
  ```ts
766
- randomIndex(weights?: number[]): number;
878
+ randomIndex(weights: number[]): number;
767
879
  ```
768
880
 
769
881
  ##### onCircle(radius)
@@ -966,4 +1078,4 @@ FrameRate.update(): boolean;
966
1078
 
967
1079
  ## License
968
1080
 
969
- MIT License, see [LICENSE](https://github.com/toosoon-dev/toosoon-utils/tree/master/LICENSE) for details
1081
+ MIT License, see [LICENSE](https://github.com/toosoon-dev/toosoon-utils/tree/master/LICENSE) for details.
package/lib/prng.d.ts CHANGED
@@ -43,3 +43,82 @@ export declare function jsf32(a: number, b: number, c: number, d: number): numbe
43
43
  * @returns {number} Pseudo-random number
44
44
  */
45
45
  export declare function xoshiro128ss(a: number, b: number, c: number, d: number): number;
46
+ type PRNGParameters = string | {
47
+ seed: string;
48
+ algorithm: (...args: number[]) => number;
49
+ };
50
+ /**
51
+ * Generate a pseudo-random number in the interval [0, 1]
52
+ * PRNG equivalent of `Math.random()`
53
+ *
54
+ * @param {string|object} prng
55
+ * @returns {number} Pseudo-random number
56
+ */
57
+ export declare function random(prng: PRNGParameters): number;
58
+ /**
59
+ * Generate a pseudo-random boolean (true or false)
60
+ *
61
+ * @param {string|object} prng
62
+ * @param {number} [probability=0.5] Probability to get true
63
+ * @returns {boolean} Either `true` or `false`
64
+ */
65
+ export declare function randomBoolean(prng: PRNGParameters, probability?: number): boolean;
66
+ /**
67
+ * Generate a pseudo-random sign (1 or -1)
68
+ *
69
+ * @param {string|object} prng
70
+ * @param {number} [probability=0.5] Probability to get 1
71
+ * @returns {number} Either 1 or -1
72
+ */
73
+ export declare function randomSign(prng: PRNGParameters, probability?: number): number;
74
+ /**
75
+ * Generate a pseudo-random floating-point number within a specified range
76
+ *
77
+ * @param {string|object} prng
78
+ * @param {number} [min=0] Minimum boundary
79
+ * @param {number} [max=1] Maximum boundary
80
+ * @param {number} [precision=2] Number of digits after the decimal point
81
+ * @returns {number} Generated float
82
+ */
83
+ export declare function randomFloat(prng: PRNGParameters, min?: number, max?: number, precision?: number): number;
84
+ /**
85
+ * Generate a pseudo-random integer number within a specified range
86
+ *
87
+ * @param {string|object} prng
88
+ * @param {number} min Minimum boundary
89
+ * @param {number} max Maximum boundary
90
+ * @returns {number} Generated integer
91
+ */
92
+ export declare function randomInt(prng: PRNGParameters, min: number, max: number): number;
93
+ /**
94
+ * Generate a pseudo-random hexadecimal color
95
+ *
96
+ * @param {string|object} prng
97
+ * @returns {string} Generated hexadecimal color
98
+ */
99
+ export declare function randomHexColor(prng: PRNGParameters): string;
100
+ /**
101
+ * Pick a pseudo-random item from a given array
102
+ *
103
+ * @param {string|object} prng
104
+ * @param {T[]} array Array to pick the item from
105
+ * @returns {T|undefined} Random item picked
106
+ */
107
+ export declare function randomItem<T = unknown>(prng: PRNGParameters, array: T[]): T | undefined;
108
+ /**
109
+ * Pick a pseudo-random property value from a given object
110
+ *
111
+ * @param {string|object} prng
112
+ * @param {object} object Object to pick the property from
113
+ * @returns {T|undefined} Random item picked
114
+ */
115
+ export declare function randomObjectProperty<T = unknown>(prng: PRNGParameters, object: Record<string, T>): T | undefined;
116
+ /**
117
+ * Select a pseudo-random index from an array of weighted items
118
+ *
119
+ * @param {string|object} prng
120
+ * @param {number[]} weights Array of weights
121
+ * @returns {number} Random index based on weights
122
+ */
123
+ export declare function randomIndex(prng: PRNGParameters, weights: number[]): number;
124
+ export {};
package/lib/prng.js CHANGED
@@ -111,3 +111,124 @@ export function xoshiro128ss(a, b, c, d) {
111
111
  d = (d << 11) | (d >>> 21);
112
112
  return (r >>> 0) / 4294967296;
113
113
  }
114
+ /**
115
+ * Generate a pseudo-random number in the interval [0, 1]
116
+ * PRNG equivalent of `Math.random()`
117
+ *
118
+ * @param {string|object} prng
119
+ * @returns {number} Pseudo-random number
120
+ */
121
+ export function random(prng) {
122
+ var seed = typeof prng === 'string' ? prng : prng.seed;
123
+ var algorithm = typeof prng === 'string' ? splitmix32 : prng.algorithm;
124
+ var hashes = cyrb128(seed);
125
+ return algorithm.apply(void 0, hashes);
126
+ }
127
+ /**
128
+ * Generate a pseudo-random boolean (true or false)
129
+ *
130
+ * @param {string|object} prng
131
+ * @param {number} [probability=0.5] Probability to get true
132
+ * @returns {boolean} Either `true` or `false`
133
+ */
134
+ export function randomBoolean(prng, probability) {
135
+ if (probability === void 0) { probability = 0.5; }
136
+ return random(prng) < probability;
137
+ }
138
+ /**
139
+ * Generate a pseudo-random sign (1 or -1)
140
+ *
141
+ * @param {string|object} prng
142
+ * @param {number} [probability=0.5] Probability to get 1
143
+ * @returns {number} Either 1 or -1
144
+ */
145
+ export function randomSign(prng, probability) {
146
+ if (probability === void 0) { probability = 0.5; }
147
+ return randomBoolean(prng, probability) ? 1 : -1;
148
+ }
149
+ /**
150
+ * Generate a pseudo-random floating-point number within a specified range
151
+ *
152
+ * @param {string|object} prng
153
+ * @param {number} [min=0] Minimum boundary
154
+ * @param {number} [max=1] Maximum boundary
155
+ * @param {number} [precision=2] Number of digits after the decimal point
156
+ * @returns {number} Generated float
157
+ */
158
+ export function randomFloat(prng, min, max, precision) {
159
+ if (min === void 0) { min = 0; }
160
+ if (max === void 0) { max = 1; }
161
+ if (precision === void 0) { precision = 2; }
162
+ return parseFloat(Math.min(min + random(prng) * (max - min), max).toFixed(precision));
163
+ }
164
+ /**
165
+ * Generate a pseudo-random integer number within a specified range
166
+ *
167
+ * @param {string|object} prng
168
+ * @param {number} min Minimum boundary
169
+ * @param {number} max Maximum boundary
170
+ * @returns {number} Generated integer
171
+ */
172
+ export function randomInt(prng, min, max) {
173
+ return Math.floor(random(prng) * (max - min + 1) + min);
174
+ }
175
+ /**
176
+ * Generate a pseudo-random hexadecimal color
177
+ *
178
+ * @param {string|object} prng
179
+ * @returns {string} Generated hexadecimal color
180
+ */
181
+ export function randomHexColor(prng) {
182
+ return '#' + ('00000' + ((random(prng) * (1 << 24)) | 0).toString(16)).slice(-6);
183
+ }
184
+ /**
185
+ * Pick a pseudo-random item from a given array
186
+ *
187
+ * @param {string|object} prng
188
+ * @param {T[]} array Array to pick the item from
189
+ * @returns {T|undefined} Random item picked
190
+ */
191
+ export function randomItem(prng, array) {
192
+ if (array.length === 0)
193
+ return undefined;
194
+ return array[randomInt(prng, 0, array.length - 1)];
195
+ }
196
+ /**
197
+ * Pick a pseudo-random property value from a given object
198
+ *
199
+ * @param {string|object} prng
200
+ * @param {object} object Object to pick the property from
201
+ * @returns {T|undefined} Random item picked
202
+ */
203
+ export function randomObjectProperty(prng, object) {
204
+ var keys = Object.keys(object);
205
+ var key = randomItem(prng, keys);
206
+ if (key && object.hasOwnProperty(key)) {
207
+ return object[key];
208
+ }
209
+ }
210
+ /**
211
+ * Select a pseudo-random index from an array of weighted items
212
+ *
213
+ * @param {string|object} prng
214
+ * @param {number[]} weights Array of weights
215
+ * @returns {number} Random index based on weights
216
+ */
217
+ export function randomIndex(prng, weights) {
218
+ if (weights.length === 0)
219
+ return -1;
220
+ var totalWeight = 0;
221
+ for (var _i = 0, weights_1 = weights; _i < weights_1.length; _i++) {
222
+ var weight_1 = weights_1[_i];
223
+ totalWeight += weight_1;
224
+ }
225
+ if (totalWeight <= 0)
226
+ console.warn('PRNG randomIndex()', 'Weights must sum to > 0', totalWeight);
227
+ var weight = random(prng) * totalWeight;
228
+ for (var i = 0; i < weights.length; i++) {
229
+ if (weight < weights[i])
230
+ return i;
231
+ weight -= weights[i];
232
+ }
233
+ return 0;
234
+ }
package/lib/random.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Vector2, Vector3 } from './types';
2
2
  /**
3
- * Generate a random boolean (`true` or `false`)
3
+ * Generate a random boolean (true or false)
4
4
  *
5
- * @param {number} [probability=0.5] Probability to get `true`
5
+ * @param {number} [probability=0.5] Probability to get true
6
6
  * @returns {boolean} Either `true` or `false`
7
7
  */
8
8
  export declare function randomBoolean(probability?: number): boolean;
@@ -49,9 +49,7 @@ export declare function randomItem<T = unknown>(array: T[]): T | undefined;
49
49
  * @param {object} object Object to pick the property from
50
50
  * @returns {T|undefined} Random item picked
51
51
  */
52
- export declare function randomObjectProperty<T = unknown>(object: {
53
- [key: string]: T;
54
- }): T | undefined;
52
+ export declare function randomObjectProperty<T = unknown>(object: Record<string, T>): T | undefined;
55
53
  /**
56
54
  * Select a random index from an array of weighted items
57
55
  *
package/lib/random.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { radToSphere } from './geometry';
2
2
  /**
3
- * Generate a random boolean (`true` or `false`)
3
+ * Generate a random boolean (true or false)
4
4
  *
5
- * @param {number} [probability=0.5] Probability to get `true`
5
+ * @param {number} [probability=0.5] Probability to get true
6
6
  * @returns {boolean} Either `true` or `false`
7
7
  */
8
8
  export function randomBoolean(probability) {
@@ -86,17 +86,17 @@ export function randomIndex(weights) {
86
86
  return -1;
87
87
  var totalWeight = 0;
88
88
  for (var _i = 0, weights_1 = weights; _i < weights_1.length; _i++) {
89
- var weight = weights_1[_i];
90
- totalWeight += weight;
89
+ var weight_1 = weights_1[_i];
90
+ totalWeight += weight_1;
91
91
  }
92
92
  if (totalWeight <= 0) {
93
93
  console.warn('randomIndex()', 'Weights must sum to > 0', totalWeight);
94
94
  }
95
- var random = Math.random() * totalWeight;
95
+ var weight = Math.random() * totalWeight;
96
96
  for (var i = 0; i < weights.length; i++) {
97
- if (random < weights[i])
97
+ if (weight < weights[i])
98
98
  return i;
99
- random -= weights[i];
99
+ weight -= weights[i];
100
100
  }
101
101
  return 0;
102
102
  }
@@ -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","../src/constants.ts","../src/types.ts","../src/geometry.ts","../src/maths.ts","../src/colors.ts","../src/dom.ts","../src/files.ts","../src/functions.ts","../src/prng.ts","../src/random.ts","../src/strings.ts","../src/classes/_pool.ts","../src/classes/color-scale.ts","../src/classes/frame-rate.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.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},{"version":"45cf2eb6cd6d7189ff80c87564aaa4fea53eb4c3da65d5e641127373de571cd9","signature":"0b4eec0a8599d6713095e0af18ab7e6204b675cd9fe8b2d02d04d66746e586e1"},{"version":"afcdcf3d0d1bb3289b5b7e7f9279e29ddee9ff9204376cf3d61636fe739f34ac","signature":"cf619c5895f1094521348154ca64a0c7b2f27aae89224981a63aee81ec835745"},{"version":"26337136ebd1ad61e045cf60e54556c56f64d69c0c3ab3567a04c48223c3d607","signature":"b2257f8c6c1893a598e6ab1109ae8af08dc4f44e220e04bc24d9e41e3252d8c1"},{"version":"ac3ceb54ea53cf59c64876bd639f29f36a971be7dd80d8cac3714e771ce3ae83","signature":"1ae451b9641fbf2f2fe337265830a61d9acd7b23f97ff3596e1c1e8030cebc6f"},{"version":"aa631ccb764e10001e746490f52eef2f129fd73c41aee0e95f9a9964544c92e1","signature":"ca745f3cebda4c4e91b00575b1cb2512df09c3f167b186b6f6fb5e8a9dec338e"},{"version":"56e06e465410f22645dca5fb7e640d2cf69004507af83364f1cc409297718adb","signature":"c1628eb24e9fb865d784112e7d6fd6c3c2a9af35c2947f3f7814a61f987f55a1"},{"version":"d52ff004bb7cd1c00d0a179f4b0893ddf84cdafc6830b2ceafc814804dfff9a5","signature":"4d71e33886aa72fef5fe425d76a3557f6553ee0b08863733656d58b91b8a6e77"},{"version":"de35f6a8eedc2a21a0e673f456cb55419da3985c321b19f3f1c81f37cb2f3013","signature":"61f803248f1cb85557eaa016fe19620e5a390cf87abba42ec793afda3a65f3be"},{"version":"f4c26efe8572cfb4efa528095e9e23d95fcc793b6aa5ea1303ae1ce5ab7e2093","signature":"1c745d75f93f62d55ff159a6091c469b05be5fad36e4ded4ce249e7bbdb36f33"},{"version":"2e0e406d29c690a1492452740dd2b48e8462bcc70cabe128df1d40a226f21308","signature":"fe3a7e6416d68ee395401ed1189255b42973efbacb0ca17b5c4ed15be3e88d2b"},{"version":"7ff1ac0e7aebca773d04dda761bca41d14320e0622ef69f6f2447e7b000f4fa7","signature":"399d115998e6ee77790354467a58babe1c7ee7caba7eed1bf471f4ec8a9a365f"},{"version":"4d7527ca5cc5b43998dea53a70b01fcae3f3ddcfdd570d8f677813107d198b4f","signature":"d0e23e1faa28d5e2cd295e0ee3348313884513c7db2e17609664c01a95228ba3"},{"version":"34ffa94ce2d61b3c97797c9616213b9bd810adc4ecfccfafc5e0369ef6346749","signature":"fcb413aaae0549c5b6b386263f6452910271db6cd6bc712098c37324b8910d84"},{"version":"562abb83a49d3112664e50077ea0b0b68e7714258a2961f47ee6c79117eeb153","signature":"93bd4de4b789d580460b72635bcfff03bf58797ef8c581c5de815f429c5115a9"},"efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"e2eb1ce13a9c0fa7ab62c63909d81973ef4b707292667c64f1e25e6e53fa7afa","affectsGlobalScope":true},"16d74fe4d8e183344d3beb15d48b123c5980ff32ff0cc8c3b96614ddcdf9b239","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"7ae9dc7dbb58cd843065639707815df85c044babaa0947116f97bdb824d07204","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","f1ace2d2f98429e007d017c7a445efad2aaebf8233135abdb2c88b8c0fef91ab","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447"],"root":[[65,78]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":99,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[79],[114],[115,120,148],[116,127,128,135,145,156],[116,117,127,135],[118,157],[119,120,128,136],[120,145,153],[121,123,127,135],[114,122],[123,124],[127],[125,127],[114,127],[127,128,129,145,156],[127,128,129,142,145,148],[112,115,161],[123,127,130,135,145,156],[127,128,130,131,135,145,153,156],[130,132,145,153,156],[79,80,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[127,133],[134,156,161],[123,127,135,145],[136],[137],[114,138],[139,155,161],[140],[141],[127,142,143],[142,144,157,159],[115,127,145,146,147,148],[115,145,147],[145,146],[148],[149],[114,145],[127,151,152],[151,152],[120,135,145,153],[154],[135,155],[115,130,141,156],[120,157],[145,158],[134,159],[160],[115,120,127,129,138,145,156,159,161],[145,162],[89,93,156],[89,145,156],[84],[86,89,153,156],[135,153],[164],[84,164],[86,89,135,156],[81,82,85,88,115,127,145,156],[81,87],[85,89,115,148,156,164],[115,164],[105,115,164],[83,84,164],[89],[83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111],[89,96,97],[87,89,97,98],[88],[81,84,89],[89,93,97,98],[93],[87,89,92,156],[81,86,87,89,93,96],[115,145],[84,89,105,115,161,164],[66,68,69],[72],[65,66,67,68],[66],[65,66],[66,67],[65]],"referencedMap":[[79,1],[80,1],[114,2],[115,3],[116,4],[117,5],[118,6],[119,7],[120,8],[121,9],[122,10],[123,11],[124,11],[126,12],[125,13],[127,14],[128,15],[129,16],[113,17],[130,18],[131,19],[132,20],[164,21],[133,22],[134,23],[135,24],[136,25],[137,26],[138,27],[139,28],[140,29],[141,30],[142,31],[143,31],[144,32],[145,33],[147,34],[146,35],[148,36],[149,37],[150,38],[151,39],[152,40],[153,41],[154,42],[155,43],[156,44],[157,45],[158,46],[159,47],[160,48],[161,49],[162,50],[96,51],[103,52],[95,51],[110,53],[87,54],[86,55],[109,56],[104,57],[107,58],[89,59],[88,60],[84,61],[83,62],[106,63],[85,64],[90,65],[94,65],[112,66],[111,65],[98,67],[99,68],[101,69],[97,70],[100,71],[105,56],[92,72],[93,73],[102,74],[82,75],[108,76],[77,77],[78,78],[69,79],[72,80],[67,81],[74,82],[66,83]],"exportedModulesMap":[[79,1],[80,1],[114,2],[115,3],[116,4],[117,5],[118,6],[119,7],[120,8],[121,9],[122,10],[123,11],[124,11],[126,12],[125,13],[127,14],[128,15],[129,16],[113,17],[130,18],[131,19],[132,20],[164,21],[133,22],[134,23],[135,24],[136,25],[137,26],[138,27],[139,28],[140,29],[141,30],[142,31],[143,31],[144,32],[145,33],[147,34],[146,35],[148,36],[149,37],[150,38],[151,39],[152,40],[153,41],[154,42],[155,43],[156,44],[157,45],[158,46],[159,47],[160,48],[161,49],[162,50],[96,51],[103,52],[95,51],[110,53],[87,54],[86,55],[109,56],[104,57],[107,58],[89,59],[88,60],[84,61],[83,62],[106,63],[85,64],[90,65],[94,65],[112,66],[111,65],[98,67],[99,68],[101,69],[97,70],[100,71],[105,56],[92,72],[93,73],[102,74],[82,75],[108,76],[77,80],[69,80],[72,80],[67,80],[74,80],[66,83]],"semanticDiagnosticsPerFile":[79,80,114,115,116,117,118,119,120,121,122,123,124,126,125,127,128,129,113,163,130,131,132,164,133,134,135,136,137,138,139,140,141,142,143,144,145,147,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,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,96,103,95,110,87,86,109,104,107,89,88,84,83,106,85,90,91,94,81,112,111,98,99,101,97,100,105,92,93,102,82,108,76,77,78,69,65,70,71,72,67,68,73,74,75,66]},"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","../src/constants.ts","../src/types.ts","../src/geometry.ts","../src/maths.ts","../src/colors.ts","../src/dom.ts","../src/files.ts","../src/functions.ts","../src/prng.ts","../src/random.ts","../src/strings.ts","../src/classes/_pool.ts","../src/classes/color-scale.ts","../src/classes/frame-rate.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.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},{"version":"45cf2eb6cd6d7189ff80c87564aaa4fea53eb4c3da65d5e641127373de571cd9","signature":"0b4eec0a8599d6713095e0af18ab7e6204b675cd9fe8b2d02d04d66746e586e1"},{"version":"afcdcf3d0d1bb3289b5b7e7f9279e29ddee9ff9204376cf3d61636fe739f34ac","signature":"cf619c5895f1094521348154ca64a0c7b2f27aae89224981a63aee81ec835745"},{"version":"26337136ebd1ad61e045cf60e54556c56f64d69c0c3ab3567a04c48223c3d607","signature":"b2257f8c6c1893a598e6ab1109ae8af08dc4f44e220e04bc24d9e41e3252d8c1"},{"version":"ac3ceb54ea53cf59c64876bd639f29f36a971be7dd80d8cac3714e771ce3ae83","signature":"1ae451b9641fbf2f2fe337265830a61d9acd7b23f97ff3596e1c1e8030cebc6f"},{"version":"aa631ccb764e10001e746490f52eef2f129fd73c41aee0e95f9a9964544c92e1","signature":"ca745f3cebda4c4e91b00575b1cb2512df09c3f167b186b6f6fb5e8a9dec338e"},{"version":"56e06e465410f22645dca5fb7e640d2cf69004507af83364f1cc409297718adb","signature":"c1628eb24e9fb865d784112e7d6fd6c3c2a9af35c2947f3f7814a61f987f55a1"},{"version":"d52ff004bb7cd1c00d0a179f4b0893ddf84cdafc6830b2ceafc814804dfff9a5","signature":"4d71e33886aa72fef5fe425d76a3557f6553ee0b08863733656d58b91b8a6e77"},{"version":"de35f6a8eedc2a21a0e673f456cb55419da3985c321b19f3f1c81f37cb2f3013","signature":"61f803248f1cb85557eaa016fe19620e5a390cf87abba42ec793afda3a65f3be"},{"version":"ca87695cf624ac3810968c444fd07b7b6370b0df199304530ecfe7373cdad5c7","signature":"bfbf0986270057216327e240d192582c2e1ad64f995251a8e99ef655ae3174f9"},{"version":"9c870b7ab6fbcf9491ff24997ad32d113b1d15ee21dc3b3a29c53f3979f12677","signature":"898901974d793c87194bd6b9b5e80cb5e1462113da0a76649d2b9c83a1820934"},{"version":"7ff1ac0e7aebca773d04dda761bca41d14320e0622ef69f6f2447e7b000f4fa7","signature":"399d115998e6ee77790354467a58babe1c7ee7caba7eed1bf471f4ec8a9a365f"},{"version":"4d7527ca5cc5b43998dea53a70b01fcae3f3ddcfdd570d8f677813107d198b4f","signature":"d0e23e1faa28d5e2cd295e0ee3348313884513c7db2e17609664c01a95228ba3"},{"version":"34ffa94ce2d61b3c97797c9616213b9bd810adc4ecfccfafc5e0369ef6346749","signature":"fcb413aaae0549c5b6b386263f6452910271db6cd6bc712098c37324b8910d84"},{"version":"562abb83a49d3112664e50077ea0b0b68e7714258a2961f47ee6c79117eeb153","signature":"93bd4de4b789d580460b72635bcfff03bf58797ef8c581c5de815f429c5115a9"},"efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"e2eb1ce13a9c0fa7ab62c63909d81973ef4b707292667c64f1e25e6e53fa7afa","affectsGlobalScope":true},"16d74fe4d8e183344d3beb15d48b123c5980ff32ff0cc8c3b96614ddcdf9b239","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"7ae9dc7dbb58cd843065639707815df85c044babaa0947116f97bdb824d07204","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","f1ace2d2f98429e007d017c7a445efad2aaebf8233135abdb2c88b8c0fef91ab","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447"],"root":[[65,78]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":99,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[79],[114],[115,120,148],[116,127,128,135,145,156],[116,117,127,135],[118,157],[119,120,128,136],[120,145,153],[121,123,127,135],[114,122],[123,124],[127],[125,127],[114,127],[127,128,129,145,156],[127,128,129,142,145,148],[112,115,161],[123,127,130,135,145,156],[127,128,130,131,135,145,153,156],[130,132,145,153,156],[79,80,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[127,133],[134,156,161],[123,127,135,145],[136],[137],[114,138],[139,155,161],[140],[141],[127,142,143],[142,144,157,159],[115,127,145,146,147,148],[115,145,147],[145,146],[148],[149],[114,145],[127,151,152],[151,152],[120,135,145,153],[154],[135,155],[115,130,141,156],[120,157],[145,158],[134,159],[160],[115,120,127,129,138,145,156,159,161],[145,162],[89,93,156],[89,145,156],[84],[86,89,153,156],[135,153],[164],[84,164],[86,89,135,156],[81,82,85,88,115,127,145,156],[81,87],[85,89,115,148,156,164],[115,164],[105,115,164],[83,84,164],[89],[83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111],[89,96,97],[87,89,97,98],[88],[81,84,89],[89,93,97,98],[93],[87,89,92,156],[81,86,87,89,93,96],[115,145],[84,89,105,115,161,164],[66,68,69],[72],[65,66,67,68],[66],[65,66],[66,67],[65]],"referencedMap":[[79,1],[80,1],[114,2],[115,3],[116,4],[117,5],[118,6],[119,7],[120,8],[121,9],[122,10],[123,11],[124,11],[126,12],[125,13],[127,14],[128,15],[129,16],[113,17],[130,18],[131,19],[132,20],[164,21],[133,22],[134,23],[135,24],[136,25],[137,26],[138,27],[139,28],[140,29],[141,30],[142,31],[143,31],[144,32],[145,33],[147,34],[146,35],[148,36],[149,37],[150,38],[151,39],[152,40],[153,41],[154,42],[155,43],[156,44],[157,45],[158,46],[159,47],[160,48],[161,49],[162,50],[96,51],[103,52],[95,51],[110,53],[87,54],[86,55],[109,56],[104,57],[107,58],[89,59],[88,60],[84,61],[83,62],[106,63],[85,64],[90,65],[94,65],[112,66],[111,65],[98,67],[99,68],[101,69],[97,70],[100,71],[105,56],[92,72],[93,73],[102,74],[82,75],[108,76],[77,77],[78,78],[69,79],[72,80],[67,81],[74,82],[66,83]],"exportedModulesMap":[[79,1],[80,1],[114,2],[115,3],[116,4],[117,5],[118,6],[119,7],[120,8],[121,9],[122,10],[123,11],[124,11],[126,12],[125,13],[127,14],[128,15],[129,16],[113,17],[130,18],[131,19],[132,20],[164,21],[133,22],[134,23],[135,24],[136,25],[137,26],[138,27],[139,28],[140,29],[141,30],[142,31],[143,31],[144,32],[145,33],[147,34],[146,35],[148,36],[149,37],[150,38],[151,39],[152,40],[153,41],[154,42],[155,43],[156,44],[157,45],[158,46],[159,47],[160,48],[161,49],[162,50],[96,51],[103,52],[95,51],[110,53],[87,54],[86,55],[109,56],[104,57],[107,58],[89,59],[88,60],[84,61],[83,62],[106,63],[85,64],[90,65],[94,65],[112,66],[111,65],[98,67],[99,68],[101,69],[97,70],[100,71],[105,56],[92,72],[93,73],[102,74],[82,75],[108,76],[77,80],[69,80],[72,80],[67,80],[74,80],[66,83]],"semanticDiagnosticsPerFile":[79,80,114,115,116,117,118,119,120,121,122,123,124,126,125,127,128,129,113,163,130,131,132,164,133,134,135,136,137,138,139,140,141,142,143,144,145,147,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,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,96,103,95,110,87,86,109,104,107,89,88,84,83,106,85,90,91,94,81,112,111,98,99,101,97,100,105,92,93,102,82,108,76,77,78,69,65,70,71,72,67,68,73,74,75,66]},"version":"5.3.3"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "toosoon-utils",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "Utility functions & classes",
5
5
  "main": "",
6
+ "types": "./lib/types.d.ts",
6
7
  "exports": {
7
8
  "./colors": "./lib/colors.js",
8
9
  "./dom": "./lib/dom.js",
@@ -27,7 +28,7 @@
27
28
  "url": "git+https://github.com/toosoon-dev/toosoon-utils.git"
28
29
  },
29
30
  "keywords": [
30
- "tooson",
31
+ "toosoon",
31
32
  "utils",
32
33
  "colors",
33
34
  "dom",
package/src/prng.ts CHANGED
@@ -117,3 +117,133 @@ export function xoshiro128ss(a: number, b: number, c: number, d: number): number
117
117
  d = (d << 11) | (d >>> 21);
118
118
  return (r >>> 0) / 4294967296;
119
119
  }
120
+
121
+ // *********************
122
+ // PRNG Functions
123
+ // *********************
124
+ export type PRNGParameters = string | { seed: string; algorithm: (...args: number[]) => number };
125
+
126
+ /**
127
+ * Generate a pseudo-random number in the interval [0, 1]
128
+ * PRNG equivalent of `Math.random()`
129
+ *
130
+ * @param {PRNGParameters} prng PRNG parameters
131
+ * @returns {number} Pseudo-random number
132
+ */
133
+ export function random(prng: PRNGParameters): number {
134
+ const seed = typeof prng === 'string' ? prng : prng.seed;
135
+ const algorithm = typeof prng === 'string' ? splitmix32 : prng.algorithm;
136
+
137
+ const hashes = cyrb128(seed);
138
+ return algorithm(...hashes);
139
+ }
140
+
141
+ /**
142
+ * Generate a pseudo-random boolean (true or false)
143
+ *
144
+ * @param {PRNGParameters} prng PRNG parameters
145
+ * @param {number} [probability=0.5] Probability to get true
146
+ * @returns {boolean} Either `true` or `false`
147
+ */
148
+ export function randomBoolean(prng: PRNGParameters, probability: number = 0.5): boolean {
149
+ return random(prng) < probability;
150
+ }
151
+
152
+ /**
153
+ * Generate a pseudo-random sign (1 or -1)
154
+ *
155
+ * @param {PRNGParameters} prng PRNG parameters
156
+ * @param {number} [probability=0.5] Probability to get 1
157
+ * @returns {number} Either 1 or -1
158
+ */
159
+ export function randomSign(prng: PRNGParameters, probability: number = 0.5): number {
160
+ return randomBoolean(prng, probability) ? 1 : -1;
161
+ }
162
+
163
+ /**
164
+ * Generate a pseudo-random floating-point number within a specified range
165
+ *
166
+ * @param {PRNGParameters} prng PRNG parameters
167
+ * @param {number} [min=0] Minimum boundary
168
+ * @param {number} [max=1] Maximum boundary
169
+ * @param {number} [precision=2] Number of digits after the decimal point
170
+ * @returns {number} Generated float
171
+ */
172
+ export function randomFloat(prng: PRNGParameters, min: number = 0, max: number = 1, precision: number = 2): number {
173
+ return parseFloat(Math.min(min + random(prng) * (max - min), max).toFixed(precision));
174
+ }
175
+
176
+ /**
177
+ * Generate a pseudo-random integer number within a specified range
178
+ *
179
+ * @param {PRNGParameters} prng PRNG parameters
180
+ * @param {number} min Minimum boundary
181
+ * @param {number} max Maximum boundary
182
+ * @returns {number} Generated integer
183
+ */
184
+ export function randomInt(prng: PRNGParameters, min: number, max: number): number {
185
+ return Math.floor(random(prng) * (max - min + 1) + min);
186
+ }
187
+
188
+ /**
189
+ * Generate a pseudo-random hexadecimal color
190
+ *
191
+ * @param {PRNGParameters} prng PRNG parameters
192
+ * @returns {string} Generated hexadecimal color
193
+ */
194
+ export function randomHexColor(prng: PRNGParameters): string {
195
+ return '#' + ('00000' + ((random(prng) * (1 << 24)) | 0).toString(16)).slice(-6);
196
+ }
197
+
198
+ /**
199
+ * Pick a pseudo-random item from a given array
200
+ *
201
+ * @param {PRNGParameters} prng PRNG parameters
202
+ * @param {T[]} array Array to pick the item from
203
+ * @returns {T|undefined} Random item picked
204
+ */
205
+ export function randomItem<T = unknown>(prng: PRNGParameters, array: T[]): T | undefined {
206
+ if (array.length === 0) return undefined;
207
+ return array[randomInt(prng, 0, array.length - 1)];
208
+ }
209
+
210
+ /**
211
+ * Pick a pseudo-random property value from a given object
212
+ *
213
+ * @param {PRNGParameters} prng PRNG parameters
214
+ * @param {object} object Object to pick the property from
215
+ * @returns {T|undefined} Random item picked
216
+ */
217
+ export function randomObjectProperty<T = unknown>(prng: PRNGParameters, object: Record<string, T>): T | undefined {
218
+ const keys = Object.keys(object);
219
+ const key = randomItem(prng, keys);
220
+ if (key && object.hasOwnProperty(key)) {
221
+ return object[key as keyof object];
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Select a pseudo-random index from an array of weighted items
227
+ *
228
+ * @param {PRNGParameters} prng PRNG parameters
229
+ * @param {number[]} weights Array of weights
230
+ * @returns {number} Random index based on weights
231
+ */
232
+ export function randomIndex(prng: PRNGParameters, weights: number[]): number {
233
+ if (weights.length === 0) return -1;
234
+
235
+ let totalWeight = 0;
236
+ for (let weight of weights) {
237
+ totalWeight += weight;
238
+ }
239
+
240
+ if (totalWeight <= 0) console.warn('PRNG randomIndex()', 'Weights must sum to > 0', totalWeight);
241
+
242
+ let weight = random(prng) * totalWeight;
243
+ for (let i = 0; i < weights.length; i++) {
244
+ if (weight < weights[i]) return i;
245
+ weight -= weights[i];
246
+ }
247
+
248
+ return 0;
249
+ }
package/src/random.ts CHANGED
@@ -2,9 +2,9 @@ import { radToSphere } from './geometry';
2
2
  import { Vector2, Vector3 } from './types';
3
3
 
4
4
  /**
5
- * Generate a random boolean (`true` or `false`)
5
+ * Generate a random boolean (true or false)
6
6
  *
7
- * @param {number} [probability=0.5] Probability to get `true`
7
+ * @param {number} [probability=0.5] Probability to get true
8
8
  * @returns {boolean} Either `true` or `false`
9
9
  */
10
10
  export function randomBoolean(probability: number = 0.5): boolean {
@@ -70,7 +70,7 @@ export function randomItem<T = unknown>(array: T[]): T | undefined {
70
70
  * @param {object} object Object to pick the property from
71
71
  * @returns {T|undefined} Random item picked
72
72
  */
73
- export function randomObjectProperty<T = unknown>(object: { [key: string]: T }): T | undefined {
73
+ export function randomObjectProperty<T = unknown>(object: Record<string, T>): T | undefined {
74
74
  const keys = Object.keys(object);
75
75
  const key = randomItem(keys);
76
76
  if (key && object.hasOwnProperty(key)) {
@@ -96,10 +96,10 @@ export function randomIndex(weights: number[]): number {
96
96
  console.warn('randomIndex()', 'Weights must sum to > 0', totalWeight);
97
97
  }
98
98
 
99
- let random = Math.random() * totalWeight;
99
+ let weight = Math.random() * totalWeight;
100
100
  for (let i = 0; i < weights.length; i++) {
101
- if (random < weights[i]) return i;
102
- random -= weights[i];
101
+ if (weight < weights[i]) return i;
102
+ weight -= weights[i];
103
103
  }
104
104
 
105
105
  return 0;