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 +117 -5
- package/lib/prng.d.ts +79 -0
- package/lib/prng.js +121 -0
- package/lib/random.d.ts +3 -5
- package/lib/random.js +7 -7
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/prng.ts +130 -0
- package/src/random.ts +6 -6
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(
|
|
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
|
|
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:
|
|
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
|
|
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 (
|
|
3
|
+
* Generate a random boolean (true or false)
|
|
4
4
|
*
|
|
5
|
-
* @param {number} [probability=0.5] Probability to get
|
|
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 (
|
|
3
|
+
* Generate a random boolean (true or false)
|
|
4
4
|
*
|
|
5
|
-
* @param {number} [probability=0.5] Probability to get
|
|
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
|
|
90
|
-
totalWeight +=
|
|
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
|
|
95
|
+
var weight = Math.random() * totalWeight;
|
|
96
96
|
for (var i = 0; i < weights.length; i++) {
|
|
97
|
-
if (
|
|
97
|
+
if (weight < weights[i])
|
|
98
98
|
return i;
|
|
99
|
-
|
|
99
|
+
weight -= weights[i];
|
|
100
100
|
}
|
|
101
101
|
return 0;
|
|
102
102
|
}
|
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -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
|
+
"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
|
-
"
|
|
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 (
|
|
5
|
+
* Generate a random boolean (true or false)
|
|
6
6
|
*
|
|
7
|
-
* @param {number} [probability=0.5] Probability to get
|
|
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:
|
|
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
|
|
99
|
+
let weight = Math.random() * totalWeight;
|
|
100
100
|
for (let i = 0; i < weights.length; i++) {
|
|
101
|
-
if (
|
|
102
|
-
|
|
101
|
+
if (weight < weights[i]) return i;
|
|
102
|
+
weight -= weights[i];
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
return 0;
|