toosoon-utils 1.4.0 → 2.0.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.
Files changed (50) hide show
  1. package/README.md +27 -23
  2. package/package.json +8 -4
  3. package/tsconfig.json +1 -3
  4. package/lib/classes/_pool.d.ts +0 -56
  5. package/lib/classes/_pool.js +0 -92
  6. package/lib/classes/color-scale.d.ts +0 -52
  7. package/lib/classes/color-scale.js +0 -160
  8. package/lib/classes/frame-rate.d.ts +0 -25
  9. package/lib/classes/frame-rate.js +0 -48
  10. package/lib/colors.d.ts +0 -155
  11. package/lib/colors.js +0 -367
  12. package/lib/constants.d.ts +0 -162
  13. package/lib/constants.js +0 -170
  14. package/lib/dom.d.ts +0 -25
  15. package/lib/dom.js +0 -47
  16. package/lib/files.d.ts +0 -14
  17. package/lib/files.js +0 -38
  18. package/lib/functions.d.ts +0 -22
  19. package/lib/functions.js +0 -53
  20. package/lib/geometry.d.ts +0 -89
  21. package/lib/geometry.js +0 -128
  22. package/lib/index.d.ts +0 -10
  23. package/lib/index.js +0 -39
  24. package/lib/maths.d.ts +0 -161
  25. package/lib/maths.js +0 -219
  26. package/lib/now.d.ts +0 -5
  27. package/lib/now.js +0 -28
  28. package/lib/prng.d.ts +0 -124
  29. package/lib/prng.js +0 -234
  30. package/lib/random.d.ts +0 -91
  31. package/lib/random.js +0 -162
  32. package/lib/strings.d.ts +0 -14
  33. package/lib/strings.js +0 -18
  34. package/lib/tsconfig.tsbuildinfo +0 -1
  35. package/lib/types.d.ts +0 -18
  36. package/lib/types.js +0 -1
  37. package/src/classes/_pool.ts +0 -92
  38. package/src/classes/color-scale.ts +0 -181
  39. package/src/classes/frame-rate.ts +0 -49
  40. package/src/colors.ts +0 -389
  41. package/src/constants.ts +0 -172
  42. package/src/dom.ts +0 -50
  43. package/src/files.ts +0 -42
  44. package/src/functions.ts +0 -56
  45. package/src/geometry.ts +0 -160
  46. package/src/maths.ts +0 -241
  47. package/src/prng.ts +0 -250
  48. package/src/random.ts +0 -162
  49. package/src/strings.ts +0 -19
  50. package/src/types.ts +0 -33
package/lib/maths.d.ts DELETED
@@ -1,161 +0,0 @@
1
- /**
2
- * Check if a number is even
3
- *
4
- * @param {number} value Value to check
5
- * @returns {boolean} True if the given number is even, false otherwise
6
- */
7
- export declare function isEven(value: number): boolean;
8
- /**
9
- * Check if a number is odd
10
- *
11
- * @param {number} value Value to check
12
- * @returns {boolean} True if the given number is odd, false otherwise
13
- */
14
- export declare function isOdd(value: number): boolean;
15
- /**
16
- * Check if a number is a power of 2
17
- *
18
- * @param {number} value Value to check
19
- * @returns {boolean} True if the given number is a power of 2, false otherwise
20
- */
21
- export declare function isPowerOf2(value: number): boolean;
22
- /**
23
- * Find closest power of 2 that fits a number
24
- *
25
- * @param {number} value Incoming value
26
- * @param {string} [mode='ceil'] Can be 'floor' | 'ceil' | 'round'
27
- * @returns {number} Power of 2
28
- */
29
- export declare function toPowerOf2(value: number, mode?: 'floor' | 'ceil' | 'round'): number;
30
- /**
31
- * Return the sign (positive or negative) of a number
32
- *
33
- * @param {number} value Value to check
34
- * @returns {number} 1 if the given number is positive, -1 if it is negative, otherwise 0
35
- */
36
- export declare function sign(value: number): number;
37
- /**
38
- * Clamp a value between two bounds
39
- *
40
- * @param {number} value Value to clamp
41
- * @param {number} [min=0] Minimum boundary
42
- * @param {number} [max=1] Maximum boundary
43
- * @returns {number} Clamped value
44
- */
45
- export declare function clamp(value: number, min?: number, max?: number): number;
46
- /**
47
- * Linear interpolation between two values (lerping)
48
- *
49
- * @param {number} value Normalized value to interpolate
50
- * @param {number} min Minimum value
51
- * @param {number} max Maximum value
52
- * @returns {number} Lerped value
53
- */
54
- export declare function lerp(value: number, min: number, max: number): number;
55
- /**
56
- * Triangular interpolation between two values
57
- *
58
- * @param {number} value Normalized value to interpolate
59
- * @param {number} min Minimum value
60
- * @param {number} max Maximum value
61
- * @param {number} target Triangle target value
62
- * @returns {number} Interpolated value
63
- */
64
- export declare function triLerp(value: number, min: number, max: number, target: number): number;
65
- /**
66
- * Exponential interpolation between two values
67
- *
68
- * @param {number} value Value to interpolate
69
- * @param {number} currentMin Lower bound of the value's current range
70
- * @param {number} currentMax Upper bound of the value's current range
71
- * @param {number} targetMin Lower bound of the value's target range
72
- * @param {number} targetMax Upper bound of the value's target range
73
- * @returns {number} Interpolated value
74
- */
75
- export declare function expLerp(value: number, currentMin: number, currentMax: number, targetMin: number, targetMax: number): number;
76
- /**
77
- * Normalize a value between two bounds
78
- *
79
- * @param {number} value Value to normalize
80
- * @param {number} min Minimum boundary
81
- * @param {number} max Maximum boundary
82
- * @returns {number} Normalized value
83
- */
84
- export declare function normalize(value: number, min: number, max: number): number;
85
- /**
86
- * Re-map a number from one range to another
87
- *
88
- * @param {number} value Value to re-map
89
- * @param {number} currentMin Lower bound of the value's current range
90
- * @param {number} currentMax Upper bound of the value's current range
91
- * @param {number} targetMin Lower bound of the value's target range
92
- * @param {number} targetMax Upper bound of the value's target range
93
- * @returns {number} Re-mapped value
94
- */
95
- export declare function map(value: number, currentMin: number, currentMax: number, targetMin: number, targetMax: number): number;
96
- /**
97
- * Round a number up to a nearest multiple
98
- *
99
- * @param {number} value Value to round
100
- * @param {number} [multiple=1] Multiple to round to
101
- * @returns {number} Closest multiple
102
- */
103
- export declare function roundTo(value: number, multiple?: number): number;
104
- /**
105
- * Modulo absolute a value based on a length
106
- *
107
- * @param {number} value Value to modulate
108
- * @param {number} length Total length
109
- * @returns {number} Modulated value
110
- */
111
- export declare function modAbs(value: number, length: number): number;
112
- /**
113
- * Move back and forth a value between 0 and length, so that it is never larger than length and never smaller than 0
114
- *
115
- * @param {number} value Value to modulate
116
- * @param {number} length Total length
117
- * @returns {number} PingPonged value
118
- */
119
- export declare function pingPong(value: number, length: number): number;
120
- /**
121
- * Smooth a value using cubic Hermite interpolation
122
- *
123
- * @param {number} value Value to smooth
124
- * @param {number} [min=0] Minimum boundary
125
- * @param {number} [max=1] Maximum boundary
126
- * @returns {number} Normalized smoothed value
127
- */
128
- export declare function smoothstep(value: number, min?: number, max?: number): number;
129
- /**
130
- * Re-map the [0, 1] interval into [0, 1] parabola, such that corners are remaped to 0 and the center to 1
131
- * -> parabola(0) = parabola(1) = 0, and parabola(0.5) = 1
132
- *
133
- * @param {number} x Normalized coordinate on X axis
134
- * @param {number} [power=1] Parabola power
135
- * @returns {number} Normalized re-mapped value
136
- */
137
- export declare function parabola(x: number, power?: number): number;
138
- /**
139
- * Return the sum of numbers
140
- *
141
- * @param {number[]} array Array of numbers
142
- * @returns {number} Total sum
143
- */
144
- export declare function sum(array: number[]): number;
145
- /**
146
- * Return the average of numbers
147
- *
148
- * @param {number[]} array Array of numbers
149
- * @returns {number} Total average
150
- */
151
- export declare function average(array: number[]): number;
152
- /**
153
- * Smoothly interpolate a number toward another
154
- *
155
- * @param {number} value Value to interpolate
156
- * @param {number} target Destination of the interpolation
157
- * @param {number} damping A higher value will make the movement more sudden, and a lower value will make the movement more gradual
158
- * @param {number} delta Delta time (in seconds)
159
- * @returns {number} Interpolated number
160
- */
161
- export declare function damp(value: number, target: number, damping: number, delta: number): number;
package/lib/maths.js DELETED
@@ -1,219 +0,0 @@
1
- /**
2
- * Check if a number is even
3
- *
4
- * @param {number} value Value to check
5
- * @returns {boolean} True if the given number is even, false otherwise
6
- */
7
- export function isEven(value) {
8
- return !(value & 1);
9
- }
10
- /**
11
- * Check if a number is odd
12
- *
13
- * @param {number} value Value to check
14
- * @returns {boolean} True if the given number is odd, false otherwise
15
- */
16
- export function isOdd(value) {
17
- return !!(value & 1);
18
- }
19
- /**
20
- * Check if a number is a power of 2
21
- *
22
- * @param {number} value Value to check
23
- * @returns {boolean} True if the given number is a power of 2, false otherwise
24
- */
25
- export function isPowerOf2(value) {
26
- return (value & (value - 1)) === 0;
27
- }
28
- /**
29
- * Find closest power of 2 that fits a number
30
- *
31
- * @param {number} value Incoming value
32
- * @param {string} [mode='ceil'] Can be 'floor' | 'ceil' | 'round'
33
- * @returns {number} Power of 2
34
- */
35
- export function toPowerOf2(value, mode) {
36
- if (mode === void 0) { mode = 'ceil'; }
37
- return Math.pow(2, Math[mode](Math.log(value) / Math.log(2)));
38
- }
39
- /**
40
- * Return the sign (positive or negative) of a number
41
- *
42
- * @param {number} value Value to check
43
- * @returns {number} 1 if the given number is positive, -1 if it is negative, otherwise 0
44
- */
45
- export function sign(value) {
46
- if (value > 0)
47
- return 1;
48
- else if (value < 0)
49
- return -1;
50
- return 0;
51
- }
52
- /**
53
- * Clamp a value between two bounds
54
- *
55
- * @param {number} value Value to clamp
56
- * @param {number} [min=0] Minimum boundary
57
- * @param {number} [max=1] Maximum boundary
58
- * @returns {number} Clamped value
59
- */
60
- export function clamp(value, min, max) {
61
- if (min === void 0) { min = 0; }
62
- if (max === void 0) { max = 1; }
63
- return Math.min(max, Math.max(min, value));
64
- }
65
- /**
66
- * Linear interpolation between two values (lerping)
67
- *
68
- * @param {number} value Normalized value to interpolate
69
- * @param {number} min Minimum value
70
- * @param {number} max Maximum value
71
- * @returns {number} Lerped value
72
- */
73
- export function lerp(value, min, max) {
74
- return min + (max - min) * value;
75
- }
76
- /**
77
- * Triangular interpolation between two values
78
- *
79
- * @param {number} value Normalized value to interpolate
80
- * @param {number} min Minimum value
81
- * @param {number} max Maximum value
82
- * @param {number} target Triangle target value
83
- * @returns {number} Interpolated value
84
- */
85
- export function triLerp(value, min, max, target) {
86
- var x = Math.pow(1 + Math.abs(target - max) / Math.abs(target - min), -1);
87
- return value <= x ? min - (min - target) * (value / x) : target - (target - max) * ((value - x) / (1 - x));
88
- }
89
- /**
90
- * Exponential interpolation between two values
91
- *
92
- * @param {number} value Value to interpolate
93
- * @param {number} currentMin Lower bound of the value's current range
94
- * @param {number} currentMax Upper bound of the value's current range
95
- * @param {number} targetMin Lower bound of the value's target range
96
- * @param {number} targetMax Upper bound of the value's target range
97
- * @returns {number} Interpolated value
98
- */
99
- export function expLerp(value, currentMin, currentMax, targetMin, targetMax) {
100
- return (targetMin *
101
- Math.pow(targetMax / targetMin, (clamp(value, currentMin, currentMax) - currentMin) / (currentMax - currentMin)));
102
- }
103
- /**
104
- * Normalize a value between two bounds
105
- *
106
- * @param {number} value Value to normalize
107
- * @param {number} min Minimum boundary
108
- * @param {number} max Maximum boundary
109
- * @returns {number} Normalized value
110
- */
111
- export function normalize(value, min, max) {
112
- return (value - min) / (max - min);
113
- }
114
- /**
115
- * Re-map a number from one range to another
116
- *
117
- * @param {number} value Value to re-map
118
- * @param {number} currentMin Lower bound of the value's current range
119
- * @param {number} currentMax Upper bound of the value's current range
120
- * @param {number} targetMin Lower bound of the value's target range
121
- * @param {number} targetMax Upper bound of the value's target range
122
- * @returns {number} Re-mapped value
123
- */
124
- export function map(value, currentMin, currentMax, targetMin, targetMax) {
125
- return ((value - currentMin) / (currentMax - currentMin)) * (targetMax - targetMin) + targetMin;
126
- }
127
- /**
128
- * Round a number up to a nearest multiple
129
- *
130
- * @param {number} value Value to round
131
- * @param {number} [multiple=1] Multiple to round to
132
- * @returns {number} Closest multiple
133
- */
134
- export function roundTo(value, multiple) {
135
- if (multiple === void 0) { multiple = 1; }
136
- if (multiple === 0)
137
- return value;
138
- return Math.round(value / multiple) * multiple;
139
- }
140
- /**
141
- * Modulo absolute a value based on a length
142
- *
143
- * @param {number} value Value to modulate
144
- * @param {number} length Total length
145
- * @returns {number} Modulated value
146
- */
147
- export function modAbs(value, length) {
148
- if (value < 0) {
149
- return length + (value % length);
150
- }
151
- return value % length;
152
- }
153
- /**
154
- * Move back and forth a value between 0 and length, so that it is never larger than length and never smaller than 0
155
- *
156
- * @param {number} value Value to modulate
157
- * @param {number} length Total length
158
- * @returns {number} PingPonged value
159
- */
160
- export function pingPong(value, length) {
161
- value = modAbs(value, length * 2);
162
- return length - Math.abs(value - length);
163
- }
164
- /**
165
- * Smooth a value using cubic Hermite interpolation
166
- *
167
- * @param {number} value Value to smooth
168
- * @param {number} [min=0] Minimum boundary
169
- * @param {number} [max=1] Maximum boundary
170
- * @returns {number} Normalized smoothed value
171
- */
172
- export function smoothstep(value, min, max) {
173
- if (min === void 0) { min = 0; }
174
- if (max === void 0) { max = 1; }
175
- var x = clamp(normalize(value, min, max));
176
- return x * x * (3 - 2 * x);
177
- }
178
- /**
179
- * Re-map the [0, 1] interval into [0, 1] parabola, such that corners are remaped to 0 and the center to 1
180
- * -> parabola(0) = parabola(1) = 0, and parabola(0.5) = 1
181
- *
182
- * @param {number} x Normalized coordinate on X axis
183
- * @param {number} [power=1] Parabola power
184
- * @returns {number} Normalized re-mapped value
185
- */
186
- export function parabola(x, power) {
187
- if (power === void 0) { power = 1; }
188
- return Math.pow(4 * x * (1 - x), power);
189
- }
190
- /**
191
- * Return the sum of numbers
192
- *
193
- * @param {number[]} array Array of numbers
194
- * @returns {number} Total sum
195
- */
196
- export function sum(array) {
197
- return array.reduce(function (previous, current) { return previous + current; });
198
- }
199
- /**
200
- * Return the average of numbers
201
- *
202
- * @param {number[]} array Array of numbers
203
- * @returns {number} Total average
204
- */
205
- export function average(array) {
206
- return sum(array) / array.length;
207
- }
208
- /**
209
- * Smoothly interpolate a number toward another
210
- *
211
- * @param {number} value Value to interpolate
212
- * @param {number} target Destination of the interpolation
213
- * @param {number} damping A higher value will make the movement more sudden, and a lower value will make the movement more gradual
214
- * @param {number} delta Delta time (in seconds)
215
- * @returns {number} Interpolated number
216
- */
217
- export function damp(value, target, damping, delta) {
218
- return lerp(1 - Math.exp(-damping * delta), value, target);
219
- }
package/lib/now.d.ts DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Polyfill for "now()" functions
3
- */
4
- declare let now: () => number;
5
- export default now;
package/lib/now.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Polyfill for "now()" functions
5
- */
6
- var now;
7
- // In node.js, use process.hrtime
8
- if (typeof process !== 'undefined' && process.hrtime) {
9
- now = function () {
10
- // Convert [seconds, nanoseconds] to milliseconds
11
- var time = process.hrtime();
12
- return time[0] * 1000 + time[1] / 1000000;
13
- };
14
- }
15
- // In a browser use performance or Date
16
- else if (typeof performance !== 'undefined') {
17
- // This must be bound, because directly assigning this function leads to an invocation exception in Chrome
18
- now = performance.now.bind(performance);
19
- }
20
- else if (typeof Date.now !== 'undefined') {
21
- now = Date.now;
22
- }
23
- else {
24
- now = function () {
25
- return new Date().getTime();
26
- };
27
- }
28
- exports.default = now;
package/lib/prng.d.ts DELETED
@@ -1,124 +0,0 @@
1
- /**
2
- * Produce a 128-bit hash value from a seed
3
- *
4
- * @param {string} seed Initial seed state
5
- * @returns {[number, number, number, number]} Hash numbers
6
- */
7
- export declare function cyrb128(seed: string): [number, number, number, number];
8
- /**
9
- * Simple Fast Counter, Generator with a 128-bit state
10
- *
11
- * @param {number} a
12
- * @param {number} b
13
- * @param {number} c
14
- * @param {number} d
15
- * @returns {number} Pseudo-random number
16
- */
17
- export declare function sfc32(a: number, b: number, c: number, d: number): number;
18
- /**
19
- * SplitMix32, Generator with a 32-bit state
20
- *
21
- * @param {number} a
22
- * @returns {number} Pseudo-random number
23
- */
24
- export declare function splitmix32(a: number): number;
25
- /**
26
- * Mulberry32, Generator with a 32-bit state
27
- *
28
- * @param {number} a
29
- * @returns {number} Pseudo-random number
30
- */
31
- export declare function mulberry32(a: number): number;
32
- /**
33
- * Jenkins' Small Fast, Generator with a 32-bit state
34
- *
35
- * @param {number} a
36
- * @returns {number} Pseudo-random number
37
- */
38
- export declare function jsf32(a: number, b: number, c: number, d: number): number;
39
- /**
40
- * xoshiro128**, Generator with a 128-bit state
41
- *
42
- * @param {number} a
43
- * @returns {number} Pseudo-random number
44
- */
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 {};