@limitlesspc/std 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2 -0
- package/dist/array.d.ts +209 -0
- package/dist/array.js +41 -0
- package/dist/async/index.d.ts +48 -0
- package/dist/async/index.js +155 -0
- package/dist/bytes.d.ts +38 -0
- package/dist/bytes.js +35 -0
- package/dist/chunk-6F4PWJZI.js +0 -0
- package/dist/chunk-C2DS6YRJ.js +1664 -0
- package/dist/chunk-DO4NH5XG.js +523 -0
- package/dist/chunk-EWSJTMH2.js +68 -0
- package/dist/chunk-ILLWUQPY.js +139 -0
- package/dist/chunk-LJSF3QBT.js +122 -0
- package/dist/chunk-MG5VQSTV.js +89 -0
- package/dist/chunk-TMLWLR46.js +12 -0
- package/dist/chunk-WBSY6KRH.js +358 -0
- package/dist/cmath/index.d.ts +57 -0
- package/dist/cmath/index.js +187 -0
- package/dist/cmp.d.ts +11 -0
- package/dist/cmp.js +12 -0
- package/dist/csv.d.ts +3 -0
- package/dist/csv.js +16 -0
- package/dist/easing.d.ts +37 -0
- package/dist/easing.js +157 -0
- package/dist/events.d.ts +20 -0
- package/dist/events.js +67 -0
- package/dist/fn/index.d.ts +66 -0
- package/dist/fn/index.js +25 -0
- package/dist/gfx/index.d.ts +13 -0
- package/dist/gfx/index.js +68 -0
- package/dist/iter/index.d.ts +226 -0
- package/dist/iter/index.js +65 -0
- package/dist/math/index.d.ts +463 -0
- package/dist/math/index.js +129 -0
- package/dist/object.d.ts +72 -0
- package/dist/object.js +24 -0
- package/dist/random.d.ts +68 -0
- package/dist/random.js +22 -0
- package/dist/string/index.d.ts +62 -0
- package/dist/string/index.js +98 -0
- package/dist/structs/index.d.ts +184 -0
- package/dist/structs/index.js +24 -0
- package/dist/time/index.d.ts +35 -0
- package/dist/time/index.js +84 -0
- package/dist/types.d.ts +21 -0
- package/dist/types.js +1 -0
- package/dist/vec3-D7Wuy2AZ.d.ts +70 -0
- package/package.json +111 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
import { int, uint } from '../types.js';
|
|
2
|
+
import { a as Vec } from '../vec3-D7Wuy2AZ.js';
|
|
3
|
+
export { R as ReadonlyVec3Like, V as Vec3, b as Vec3Like, v as vec3 } from '../vec3-D7Wuy2AZ.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Determines if a value is a number other than `NaN`
|
|
7
|
+
* @param x
|
|
8
|
+
*/
|
|
9
|
+
declare function isNumber(x: unknown): x is number;
|
|
10
|
+
/**
|
|
11
|
+
* Determines if a value is a finite number other than `NaN`
|
|
12
|
+
* @param x
|
|
13
|
+
*/
|
|
14
|
+
declare function isReal(x: unknown): x is number;
|
|
15
|
+
/**
|
|
16
|
+
* Determines if a value is an integer
|
|
17
|
+
* @param x
|
|
18
|
+
*/
|
|
19
|
+
declare function isInteger(x: unknown): x is int;
|
|
20
|
+
/**
|
|
21
|
+
* Rounds `x` to the nearest multiple of `n`
|
|
22
|
+
* @param x the number to round
|
|
23
|
+
* @param n the multiple to round to
|
|
24
|
+
*/
|
|
25
|
+
declare function roundToMultiple(x: number, n: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Rounds `x` to the nearest even number
|
|
28
|
+
* @param x
|
|
29
|
+
*/
|
|
30
|
+
declare function roundToEven(x: number): number;
|
|
31
|
+
declare function norm(x: number, min: number, max: number): number;
|
|
32
|
+
declare function lerp(min: number, max: number, norm: number): number;
|
|
33
|
+
declare function map(x: number, fromMin: number, fromMax: number, toMin: number, toMax: number): number;
|
|
34
|
+
declare function step(x: number, edge?: number): number;
|
|
35
|
+
declare function smoothstep(x: number, min: number, max: number): number;
|
|
36
|
+
declare function smootherstep(x: number, min: number, max: number): number;
|
|
37
|
+
declare function clamp(n: number, min: number, max: number): number;
|
|
38
|
+
declare function overlap(min1: number, max1: number, min2: number, max2: number): number;
|
|
39
|
+
/** Returns which number (a or b) is closer to x */
|
|
40
|
+
declare function closer(x: number, a: [number, number], b: [number, number]): number;
|
|
41
|
+
declare function round(n: number, precision?: int): number;
|
|
42
|
+
declare function floor(n: number, precision?: int): number;
|
|
43
|
+
declare function ceil(n: number, precision?: int): number;
|
|
44
|
+
declare function trunc(n: number, precision?: int): number;
|
|
45
|
+
declare function fract(x: number): number;
|
|
46
|
+
declare function closeTo(n: number, target: number, precision?: int): boolean;
|
|
47
|
+
declare function factorial(n: uint): number;
|
|
48
|
+
declare function log(base: number, x: number): number;
|
|
49
|
+
declare const ln: (x: number) => number;
|
|
50
|
+
/**
|
|
51
|
+
* Calculates the greatest common factor between the numbers
|
|
52
|
+
* a and b using the [Euclidean algorithm](https://www.wikiwand.com/en/Euclidean_algorithm)
|
|
53
|
+
* @param a a number
|
|
54
|
+
* @param b a number
|
|
55
|
+
*/
|
|
56
|
+
declare function gcd(a: uint, b: uint): number;
|
|
57
|
+
declare function fibonacci(n: uint): number;
|
|
58
|
+
/** Convert farhenheit to celsius */
|
|
59
|
+
declare const celsius: (fahrenheit: number) => number;
|
|
60
|
+
/** Convert celsius to farhenheit */
|
|
61
|
+
declare const fahrenheit: (celsius: number) => number;
|
|
62
|
+
/**
|
|
63
|
+
* @param points a list of (x,y) points
|
|
64
|
+
* @returns the line of best fit in terms of m and b in the form y = mx + b
|
|
65
|
+
*/
|
|
66
|
+
declare function lineOfBestFit(points: Array<{
|
|
67
|
+
x: number;
|
|
68
|
+
y: number;
|
|
69
|
+
}>): [m: number, b: number];
|
|
70
|
+
/**
|
|
71
|
+
* Calculates the number of ways to choose `k` items from `n` items without repeating and with ordering
|
|
72
|
+
* @param n the number of items
|
|
73
|
+
* @param k the number of choices being made
|
|
74
|
+
*/
|
|
75
|
+
declare function permutations(n: uint, k: uint): number;
|
|
76
|
+
/**
|
|
77
|
+
* Calculates the number of ways to choose `k` items from `n` items without repeating or ordering
|
|
78
|
+
* @param n the number of items
|
|
79
|
+
* @param k the number of choices being made
|
|
80
|
+
*/
|
|
81
|
+
declare function combinations(n: uint, k: uint): number;
|
|
82
|
+
declare function dot(a: Iterable<number>, b: Iterable<number>): number;
|
|
83
|
+
|
|
84
|
+
/** @unstable */
|
|
85
|
+
declare class Mat extends Float32Array {
|
|
86
|
+
rows: uint;
|
|
87
|
+
constructor(rows: uint, cols: uint);
|
|
88
|
+
constructor(mat: number[][]);
|
|
89
|
+
get cols(): number;
|
|
90
|
+
toString(): string;
|
|
91
|
+
copy(): Mat;
|
|
92
|
+
static random(rows: uint, cols: uint): Mat;
|
|
93
|
+
eq(m: Mat, precision?: uint): boolean;
|
|
94
|
+
add(m: Mat): this;
|
|
95
|
+
static add(m1: Mat, m2: Mat): Mat;
|
|
96
|
+
sub(m: Mat): this;
|
|
97
|
+
static sub(m1: Mat, m2: Mat): Mat;
|
|
98
|
+
mul(m: Mat | number): this;
|
|
99
|
+
static mul(m1: Mat, m2: Mat | number): Mat;
|
|
100
|
+
div(m: number): this;
|
|
101
|
+
static transpose(m: Mat): Mat;
|
|
102
|
+
}
|
|
103
|
+
declare function mat(rows: uint, cols: uint): Mat;
|
|
104
|
+
declare function mat(mat: number[][]): Mat;
|
|
105
|
+
|
|
106
|
+
type Mat2Like = [m00: number, m01: number, m10: number, m11: number] | Float32Array;
|
|
107
|
+
type ReadonlyMat2Like = Readonly<Mat2Like>;
|
|
108
|
+
declare class Mat2 extends Float32Array {
|
|
109
|
+
static readonly BYTE_LENGTH: number;
|
|
110
|
+
constructor(matrix?: ReadonlyMat2Like);
|
|
111
|
+
toString(): string;
|
|
112
|
+
copy(): Mat2;
|
|
113
|
+
identity(): Mat2;
|
|
114
|
+
eq(m: ReadonlyMat2Like, precision?: int): boolean;
|
|
115
|
+
add(m: ReadonlyMat2Like): this;
|
|
116
|
+
static add(m1: Mat2, m2: ReadonlyMat2Like): Mat2;
|
|
117
|
+
sub(m: ReadonlyMat2Like): this;
|
|
118
|
+
static sub(m1: Mat2, m2: ReadonlyMat2Like): Mat2;
|
|
119
|
+
mul(m: number | ReadonlyMat2Like): this;
|
|
120
|
+
static mul(m1: ReadonlyMat2Like, m2: number | ReadonlyMat2Like): Mat2;
|
|
121
|
+
div(m: number): this;
|
|
122
|
+
transpose(): this;
|
|
123
|
+
det(): number;
|
|
124
|
+
adj(): Mat2;
|
|
125
|
+
inv(): Mat2;
|
|
126
|
+
}
|
|
127
|
+
declare function mat2(matrix?: ReadonlyMat2Like): Mat2;
|
|
128
|
+
|
|
129
|
+
type Mat3Like = [
|
|
130
|
+
m00: number,
|
|
131
|
+
m01: number,
|
|
132
|
+
m02: number,
|
|
133
|
+
m10: number,
|
|
134
|
+
m11: number,
|
|
135
|
+
m12: number,
|
|
136
|
+
m20: number,
|
|
137
|
+
m21: number,
|
|
138
|
+
m22: number
|
|
139
|
+
] | Float32Array;
|
|
140
|
+
type ReadonlyMat3Like = Readonly<Mat3Like>;
|
|
141
|
+
declare class Mat3 extends Float32Array {
|
|
142
|
+
static readonly BYTE_LENGTH: number;
|
|
143
|
+
constructor(matrix?: ReadonlyMat3Like);
|
|
144
|
+
toString(): string;
|
|
145
|
+
copy(): Mat3;
|
|
146
|
+
identity(): this;
|
|
147
|
+
eq(m: ReadonlyMat3Like, precision?: int): boolean;
|
|
148
|
+
add(m: ReadonlyMat3Like): this;
|
|
149
|
+
static add(m1: Mat3, m2: ReadonlyMat3Like): Mat3;
|
|
150
|
+
sub(m: ReadonlyMat3Like): this;
|
|
151
|
+
static sub(m1: Mat3, m2: ReadonlyMat3Like): Mat3;
|
|
152
|
+
mul(m: number | ReadonlyMat3Like): this;
|
|
153
|
+
static mul(m1: ReadonlyMat3Like, m2: number | ReadonlyMat3Like): Mat3;
|
|
154
|
+
div(m: number): this;
|
|
155
|
+
transpose(): this;
|
|
156
|
+
det(): number;
|
|
157
|
+
adj(): Mat3;
|
|
158
|
+
inv(): Mat3;
|
|
159
|
+
}
|
|
160
|
+
declare function mat3(matrix?: ReadonlyMat3Like): Mat3;
|
|
161
|
+
|
|
162
|
+
type Mat4Like = [
|
|
163
|
+
m00: number,
|
|
164
|
+
m01: number,
|
|
165
|
+
m02: number,
|
|
166
|
+
m03: number,
|
|
167
|
+
m10: number,
|
|
168
|
+
m11: number,
|
|
169
|
+
m12: number,
|
|
170
|
+
m13: number,
|
|
171
|
+
m20: number,
|
|
172
|
+
m21: number,
|
|
173
|
+
m22: number,
|
|
174
|
+
m23: number,
|
|
175
|
+
m30: number,
|
|
176
|
+
m31: number,
|
|
177
|
+
m32: number,
|
|
178
|
+
m33: number
|
|
179
|
+
] | Float32Array;
|
|
180
|
+
type ReadonlyMat4Like = Readonly<Mat4Like>;
|
|
181
|
+
declare class Mat4 extends Float32Array {
|
|
182
|
+
constructor(matrix?: ReadonlyMat4Like);
|
|
183
|
+
toString(): string;
|
|
184
|
+
copy(): Mat4;
|
|
185
|
+
eq(m: ReadonlyMat4Like, precision?: int): boolean;
|
|
186
|
+
add(m: ReadonlyMat4Like): this;
|
|
187
|
+
static add(m1: Mat4, m2: ReadonlyMat4Like): Mat4;
|
|
188
|
+
sub(m: ReadonlyMat4Like): this;
|
|
189
|
+
static sub(m1: Mat4, m2: ReadonlyMat4Like): Mat4;
|
|
190
|
+
mul(m: number | ReadonlyMat4Like): this;
|
|
191
|
+
static mul(m1: ReadonlyMat4Like, m2: number | ReadonlyMat4Like): Mat4;
|
|
192
|
+
div(m: number): this;
|
|
193
|
+
transpose(): this;
|
|
194
|
+
det(): number;
|
|
195
|
+
adj(): Mat4;
|
|
196
|
+
inv(): Mat4;
|
|
197
|
+
}
|
|
198
|
+
declare function mat4(matrix?: ReadonlyMat4Like): Mat4;
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @module
|
|
202
|
+
* Functions for working with numbers
|
|
203
|
+
*/
|
|
204
|
+
/**
|
|
205
|
+
* Returns the minimum value in an iterable of numbers
|
|
206
|
+
* @param iter The iterable of numbers
|
|
207
|
+
* @returns The minimum value
|
|
208
|
+
* @example
|
|
209
|
+
* ```ts
|
|
210
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
211
|
+
* const minValue = min(numbers);
|
|
212
|
+
* console.log(minValue); // 1
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
declare function min(iter: Iterable<number>): number;
|
|
216
|
+
/**
|
|
217
|
+
* Returns the maximum value in an iterable of numbers
|
|
218
|
+
* @param iter The iterable of numbers
|
|
219
|
+
* @returns The maximum value
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
223
|
+
* const maxValue = max(numbers);
|
|
224
|
+
* console.log(maxValue); // 5
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
declare function max(iter: Iterable<number>): number;
|
|
228
|
+
/**
|
|
229
|
+
* Returns the minimum and maximum values in an iterable of numbers
|
|
230
|
+
* @param iter The iterable of numbers
|
|
231
|
+
* @returns A tuple containing the minimum and maximum values
|
|
232
|
+
* @example
|
|
233
|
+
* ```ts
|
|
234
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
235
|
+
* const [min, max] = minmax(numbers);
|
|
236
|
+
* console.log(min); // 1
|
|
237
|
+
* console.log(max); // 5
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
declare function minmax(iter: Iterable<number>): [min: number, max: number];
|
|
241
|
+
/**
|
|
242
|
+
* Returns the sum of an iterable of numbers
|
|
243
|
+
* @param iter The iterable of numbers
|
|
244
|
+
* @returns The sum
|
|
245
|
+
* @example
|
|
246
|
+
* ```ts
|
|
247
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
248
|
+
* const total = sum(numbers);
|
|
249
|
+
* console.log(total); // 15
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
declare function sum(iter: Iterable<number>): number;
|
|
253
|
+
/**
|
|
254
|
+
* Returns each number in an iterable multiplied together. If the iterable is empty, returns 1.
|
|
255
|
+
* @param iter The iterable of numbers
|
|
256
|
+
* @returns The product
|
|
257
|
+
* @example
|
|
258
|
+
* ```ts
|
|
259
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
260
|
+
* const product = product(numbers);
|
|
261
|
+
* console.log(product); // 120
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
declare function product(iter: Iterable<number>): number;
|
|
265
|
+
/**
|
|
266
|
+
* Returns the average of an iterable of numbers
|
|
267
|
+
* @param iter The iterable of numbers
|
|
268
|
+
* @returns The average
|
|
269
|
+
* @example
|
|
270
|
+
* ```ts
|
|
271
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
272
|
+
* const average = avg(numbers);
|
|
273
|
+
* console.log(average); // 3
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
276
|
+
declare function avg(iter: Iterable<number>): number;
|
|
277
|
+
/**
|
|
278
|
+
* Returns the median, or middle, of an array of numbers, or 0 if the array is empty.
|
|
279
|
+
* @param array The array of numbers
|
|
280
|
+
* @returns The median
|
|
281
|
+
* @example
|
|
282
|
+
* ```ts
|
|
283
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
284
|
+
* const median = median(numbers);
|
|
285
|
+
* console.log(median); // 3
|
|
286
|
+
*
|
|
287
|
+
* const numbers2 = [1, 2, 3, 4, 5, 6];
|
|
288
|
+
* const median2 = median(numbers2);
|
|
289
|
+
* console.log(median2); // 3.5
|
|
290
|
+
* ```
|
|
291
|
+
*/
|
|
292
|
+
declare function median(array: number[]): number;
|
|
293
|
+
/**
|
|
294
|
+
* Returns the mode, or most common, elements of an iterable
|
|
295
|
+
* @param iter The iterable of numbers
|
|
296
|
+
* @returns The mode
|
|
297
|
+
* @example
|
|
298
|
+
* ```ts
|
|
299
|
+
* const numbers = [1, 2, 3, 3, 4, 5, 5, 5];
|
|
300
|
+
* const mode = mode(numbers);
|
|
301
|
+
* console.log(mode); // [5]
|
|
302
|
+
*
|
|
303
|
+
* const numbers2 = [1, 2, 3, 3, 4, 5, 5];
|
|
304
|
+
* const mode2 = mode(numbers2);
|
|
305
|
+
* console.log(mode2); // [3, 5]
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
declare function mode<T>(iter: Iterable<T>): T[];
|
|
309
|
+
/**
|
|
310
|
+
* Returns the variance of an iterable of numbers
|
|
311
|
+
* @param iter The iterable of numbers
|
|
312
|
+
* @returns The variance
|
|
313
|
+
* @example
|
|
314
|
+
* ```ts
|
|
315
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
316
|
+
* const variance = variance(numbers);
|
|
317
|
+
* console.log(variance); // 2.5
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
declare function variance(iter: Iterable<number>): number;
|
|
321
|
+
/**
|
|
322
|
+
* Returns the standard deviation of an iterable of numbers
|
|
323
|
+
* @param iter The iterable of numbers
|
|
324
|
+
* @returns The standard deviation
|
|
325
|
+
* @example
|
|
326
|
+
* ```ts
|
|
327
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
328
|
+
* const stddev = stddev(numbers);
|
|
329
|
+
* console.log(stddev); // 1.5811388300841898
|
|
330
|
+
* ```
|
|
331
|
+
*/
|
|
332
|
+
declare function stddev(iter: Iterable<number>): number;
|
|
333
|
+
/**
|
|
334
|
+
* Returns the mean absolute deviation of an iterable of numbers
|
|
335
|
+
* @param iter The iterable of numbers
|
|
336
|
+
* @returns The mean absolute deviation
|
|
337
|
+
* @example
|
|
338
|
+
* ```ts
|
|
339
|
+
* const numbers = [1, 2, 3, 4, 5];
|
|
340
|
+
* const mad = meanAbsDev(numbers);
|
|
341
|
+
* console.log(mad); // 1.2
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
declare function meanAbsDev(iter: Iterable<number>): number;
|
|
345
|
+
|
|
346
|
+
/** The ratio to convert degrees to radians */
|
|
347
|
+
declare const DEG2RAD: number;
|
|
348
|
+
/** Converts radians to degrees */
|
|
349
|
+
declare const degrees: (radians: number) => number;
|
|
350
|
+
/** Converts degrees to radians */
|
|
351
|
+
declare const radians: (degrees: number) => number;
|
|
352
|
+
|
|
353
|
+
type Vec2Like = [x: number, y: number] | Float32Array;
|
|
354
|
+
type ReadonlyVec2Like = Readonly<Vec2Like>;
|
|
355
|
+
type First$1 = ReadonlyVec2Like | number;
|
|
356
|
+
declare class Vec2 extends Float32Array implements Vec {
|
|
357
|
+
static readonly BYTE_LENGTH: number;
|
|
358
|
+
constructor(x?: First$1, y?: number);
|
|
359
|
+
get x(): number;
|
|
360
|
+
set x(value: number);
|
|
361
|
+
get y(): number;
|
|
362
|
+
set y(value: number);
|
|
363
|
+
toString(): string;
|
|
364
|
+
copy(): Vec2;
|
|
365
|
+
static random(mag?: number): Vec2;
|
|
366
|
+
eq(x: First$1, y?: number): boolean;
|
|
367
|
+
add(x: First$1, y?: number): this;
|
|
368
|
+
static add(v1: Vec2, x: First$1, y?: number): Vec2;
|
|
369
|
+
sub(x: First$1, y?: number): this;
|
|
370
|
+
static sub(v1: Vec2, x: First$1, y?: number): Vec2;
|
|
371
|
+
mul(x: First$1, y?: number): this;
|
|
372
|
+
static mul(v1: Vec2, x: First$1, y?: number): Vec2;
|
|
373
|
+
div(x: First$1, y?: number): this;
|
|
374
|
+
static div(v1: Vec2, x: First$1, y?: number): Vec2;
|
|
375
|
+
static fma(a: ReadonlyVec2Like, b: ReadonlyVec2Like, c: ReadonlyVec2Like): Vec2;
|
|
376
|
+
lt(x: ReadonlyVec2Like): Vec2;
|
|
377
|
+
lte(x: ReadonlyVec2Like): Vec2;
|
|
378
|
+
gt(x: ReadonlyVec2Like): Vec2;
|
|
379
|
+
gte(x: ReadonlyVec2Like): Vec2;
|
|
380
|
+
mag(): number;
|
|
381
|
+
setMag(n: number): this;
|
|
382
|
+
magSq(): number;
|
|
383
|
+
limit(max: number): this;
|
|
384
|
+
normalize(): this;
|
|
385
|
+
static normalize(v: Vec2): Vec2;
|
|
386
|
+
dist(v: Vec2): number;
|
|
387
|
+
distSq(v: Vec2): number;
|
|
388
|
+
dot(v: ReadonlyVec2Like): number;
|
|
389
|
+
cross(v: ReadonlyVec2Like): number;
|
|
390
|
+
lerp(v: ReadonlyVec2Like, norm: number): this;
|
|
391
|
+
static lerp(v1: Vec2, v2: ReadonlyVec2Like, norm: number): Vec2;
|
|
392
|
+
clamp(min: ReadonlyVec2Like, max: ReadonlyVec2Like): this;
|
|
393
|
+
static clamp(v: Vec2, min: ReadonlyVec2Like, max: ReadonlyVec2Like): Vec2;
|
|
394
|
+
perp(): Vec2;
|
|
395
|
+
angle(): number;
|
|
396
|
+
setAngle(a: number): this;
|
|
397
|
+
static fromAngle(a: number, mag?: number): Vec2;
|
|
398
|
+
rotate(angle: number): this;
|
|
399
|
+
static rotate(v: Vec2, angle: number): Vec2;
|
|
400
|
+
rotateAbout(angle: number, center: Vec2): this;
|
|
401
|
+
reflect(normal: Vec2): this;
|
|
402
|
+
refract(normal: Vec2, eta: number): this;
|
|
403
|
+
}
|
|
404
|
+
declare function vec2(x?: First$1, y?: number): Vec2;
|
|
405
|
+
|
|
406
|
+
type Vec4Like = [x: number, y: number, z: number, w: number] | Float32Array;
|
|
407
|
+
type ReadonlyVec4Like = Readonly<Vec4Like>;
|
|
408
|
+
type First = ReadonlyVec4Like | number;
|
|
409
|
+
declare class Vec4 extends Float32Array implements Vec {
|
|
410
|
+
static readonly BYTE_LENGTH: number;
|
|
411
|
+
constructor(x?: First, y?: number, z?: number, w?: number);
|
|
412
|
+
get x(): number;
|
|
413
|
+
set x(value: number);
|
|
414
|
+
get y(): number;
|
|
415
|
+
set y(value: number);
|
|
416
|
+
get z(): number;
|
|
417
|
+
set z(value: number);
|
|
418
|
+
get w(): number;
|
|
419
|
+
set w(value: number);
|
|
420
|
+
get r(): number;
|
|
421
|
+
set r(value: number);
|
|
422
|
+
get g(): number;
|
|
423
|
+
set g(value: number);
|
|
424
|
+
get b(): number;
|
|
425
|
+
set b(value: number);
|
|
426
|
+
get a(): number;
|
|
427
|
+
set a(value: number);
|
|
428
|
+
toString(): string;
|
|
429
|
+
copy(): Vec4;
|
|
430
|
+
eq(x: First, y?: number, z?: number, w?: number): boolean;
|
|
431
|
+
add(x: First, y?: number, z?: number, w?: number): this;
|
|
432
|
+
static add(v1: Vec4, x: First, y?: number, z?: number, w?: number): Vec4;
|
|
433
|
+
sub(x: First, y?: number, z?: number, w?: number): this;
|
|
434
|
+
static sub(v1: Vec4, x: First, y?: number, z?: number, w?: number): Vec4;
|
|
435
|
+
mul(x: First, y?: number, z?: number, w?: number): this;
|
|
436
|
+
static mul(v1: Vec4, x: First, y?: number, z?: number, w?: number): Vec4;
|
|
437
|
+
div(x: First, y?: number, z?: number, w?: number): this;
|
|
438
|
+
static div(v1: Vec4, x: First, y?: number, z?: number, w?: number): Vec4;
|
|
439
|
+
static fma(a: ReadonlyVec4Like, b: ReadonlyVec4Like, c: ReadonlyVec4Like): Vec4;
|
|
440
|
+
lt(x: ReadonlyVec4Like): Vec4;
|
|
441
|
+
lte(x: ReadonlyVec4Like): Vec4;
|
|
442
|
+
gt(x: ReadonlyVec4Like): Vec4;
|
|
443
|
+
gte(x: ReadonlyVec4Like): Vec4;
|
|
444
|
+
limit(max: number): this;
|
|
445
|
+
normalize(): this;
|
|
446
|
+
static normalize(v: Vec4): Vec4;
|
|
447
|
+
mag(): number;
|
|
448
|
+
setMag(n: number): this;
|
|
449
|
+
magSq(): number;
|
|
450
|
+
dist(v: Vec4): number;
|
|
451
|
+
distSq(v: Vec4): number;
|
|
452
|
+
dot(v: ReadonlyVec4Like): number;
|
|
453
|
+
lerp(v: ReadonlyVec4Like, norm: number): this;
|
|
454
|
+
static lerp(v1: Vec4, v2: ReadonlyVec4Like, norm: number): Vec4;
|
|
455
|
+
clamp(min: ReadonlyVec4Like, max: ReadonlyVec4Like): this;
|
|
456
|
+
static clamp(v: Vec4, min: ReadonlyVec4Like, max: ReadonlyVec4Like): Vec4;
|
|
457
|
+
reflect(normal: Vec4): Vec4;
|
|
458
|
+
static reflect(v: Vec4, normal: Vec4): Vec4;
|
|
459
|
+
refract(normal: Vec4, eta: number): this;
|
|
460
|
+
}
|
|
461
|
+
declare function vec4(x?: First, y?: number, z?: number, w?: number): Vec4;
|
|
462
|
+
|
|
463
|
+
export { DEG2RAD, Mat, Mat2, type Mat2Like, Mat3, type Mat3Like, Mat4, type Mat4Like, type ReadonlyMat2Like, type ReadonlyMat3Like, type ReadonlyMat4Like, type ReadonlyVec2Like, type ReadonlyVec4Like, Vec, Vec2, type Vec2Like, Vec4, type Vec4Like, avg, ceil, celsius, clamp, closeTo, closer, combinations, degrees, dot, factorial, fahrenheit, fibonacci, floor, fract, gcd, isInteger, isNumber, isReal, lerp, lineOfBestFit, ln, log, map, mat, mat2, mat3, mat4, max, meanAbsDev, median, min, minmax, mode, norm, overlap, permutations, product, radians, round, roundToEven, roundToMultiple, smootherstep, smoothstep, stddev, step, sum, trunc, variance, vec2, vec4 };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEG2RAD,
|
|
3
|
+
Mat,
|
|
4
|
+
Mat2,
|
|
5
|
+
Mat3,
|
|
6
|
+
Mat4,
|
|
7
|
+
Vec2,
|
|
8
|
+
Vec3,
|
|
9
|
+
Vec4,
|
|
10
|
+
avg,
|
|
11
|
+
ceil,
|
|
12
|
+
celsius,
|
|
13
|
+
clamp,
|
|
14
|
+
closeTo,
|
|
15
|
+
closer,
|
|
16
|
+
combinations,
|
|
17
|
+
degrees,
|
|
18
|
+
dot,
|
|
19
|
+
factorial,
|
|
20
|
+
fahrenheit,
|
|
21
|
+
fibonacci,
|
|
22
|
+
floor,
|
|
23
|
+
fract,
|
|
24
|
+
gcd,
|
|
25
|
+
isInteger,
|
|
26
|
+
isNumber,
|
|
27
|
+
isReal,
|
|
28
|
+
lerp,
|
|
29
|
+
lineOfBestFit,
|
|
30
|
+
ln,
|
|
31
|
+
log,
|
|
32
|
+
map,
|
|
33
|
+
mat,
|
|
34
|
+
mat2,
|
|
35
|
+
mat3,
|
|
36
|
+
mat4,
|
|
37
|
+
max,
|
|
38
|
+
meanAbsDev,
|
|
39
|
+
median,
|
|
40
|
+
min,
|
|
41
|
+
minmax,
|
|
42
|
+
mode,
|
|
43
|
+
norm,
|
|
44
|
+
overlap,
|
|
45
|
+
permutations,
|
|
46
|
+
product,
|
|
47
|
+
radians,
|
|
48
|
+
round,
|
|
49
|
+
roundToEven,
|
|
50
|
+
roundToMultiple,
|
|
51
|
+
smootherstep,
|
|
52
|
+
smoothstep,
|
|
53
|
+
stddev,
|
|
54
|
+
step,
|
|
55
|
+
sum,
|
|
56
|
+
trunc,
|
|
57
|
+
variance,
|
|
58
|
+
vec2,
|
|
59
|
+
vec3,
|
|
60
|
+
vec4
|
|
61
|
+
} from "../chunk-C2DS6YRJ.js";
|
|
62
|
+
import "../chunk-EWSJTMH2.js";
|
|
63
|
+
import "../chunk-ILLWUQPY.js";
|
|
64
|
+
import "../chunk-WBSY6KRH.js";
|
|
65
|
+
import "../chunk-MG5VQSTV.js";
|
|
66
|
+
import "../chunk-6F4PWJZI.js";
|
|
67
|
+
import "../chunk-TMLWLR46.js";
|
|
68
|
+
import "../chunk-LJSF3QBT.js";
|
|
69
|
+
export {
|
|
70
|
+
DEG2RAD,
|
|
71
|
+
Mat,
|
|
72
|
+
Mat2,
|
|
73
|
+
Mat3,
|
|
74
|
+
Mat4,
|
|
75
|
+
Vec2,
|
|
76
|
+
Vec3,
|
|
77
|
+
Vec4,
|
|
78
|
+
avg,
|
|
79
|
+
ceil,
|
|
80
|
+
celsius,
|
|
81
|
+
clamp,
|
|
82
|
+
closeTo,
|
|
83
|
+
closer,
|
|
84
|
+
combinations,
|
|
85
|
+
degrees,
|
|
86
|
+
dot,
|
|
87
|
+
factorial,
|
|
88
|
+
fahrenheit,
|
|
89
|
+
fibonacci,
|
|
90
|
+
floor,
|
|
91
|
+
fract,
|
|
92
|
+
gcd,
|
|
93
|
+
isInteger,
|
|
94
|
+
isNumber,
|
|
95
|
+
isReal,
|
|
96
|
+
lerp,
|
|
97
|
+
lineOfBestFit,
|
|
98
|
+
ln,
|
|
99
|
+
log,
|
|
100
|
+
map,
|
|
101
|
+
mat,
|
|
102
|
+
mat2,
|
|
103
|
+
mat3,
|
|
104
|
+
mat4,
|
|
105
|
+
max,
|
|
106
|
+
meanAbsDev,
|
|
107
|
+
median,
|
|
108
|
+
min,
|
|
109
|
+
minmax,
|
|
110
|
+
mode,
|
|
111
|
+
norm,
|
|
112
|
+
overlap,
|
|
113
|
+
permutations,
|
|
114
|
+
product,
|
|
115
|
+
radians,
|
|
116
|
+
round,
|
|
117
|
+
roundToEven,
|
|
118
|
+
roundToMultiple,
|
|
119
|
+
smootherstep,
|
|
120
|
+
smoothstep,
|
|
121
|
+
stddev,
|
|
122
|
+
step,
|
|
123
|
+
sum,
|
|
124
|
+
trunc,
|
|
125
|
+
variance,
|
|
126
|
+
vec2,
|
|
127
|
+
vec3,
|
|
128
|
+
vec4
|
|
129
|
+
};
|
package/dist/object.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* Functions for working with objects
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Determines if an object has a property. This is simply a type-safe wrapper around `Object.prototype.hasOwnProperty`
|
|
7
|
+
* @param obj The object
|
|
8
|
+
* @param key The property key
|
|
9
|
+
* @returns true if the object has the property
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const obj = { a: 1, b: 2 };
|
|
13
|
+
* console.log(hasOwn(obj, "a")); // true
|
|
14
|
+
* console.log(hasOwn(obj, "c")); // false
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare const hasOwn: <T, K extends PropertyKey>(obj: T, key: K) => obj is T & { [key in K]: unknown; };
|
|
18
|
+
/**
|
|
19
|
+
* Determines if two objects are shallowly equal, that is,
|
|
20
|
+
* if they have the same properties and the properties have the same values.
|
|
21
|
+
* @param a The first object
|
|
22
|
+
* @param b The second object
|
|
23
|
+
* @returns true if the objects are shallowly equal
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* console.log(shallowEquals({ a: 1, b: 2 }, { a: 1, b: 2 })); // true
|
|
27
|
+
* console.log(shallowEquals({ a: 1, b: 2 }, { a: 1, b: 3 })); // false
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare function shallowEquals<A, B>(a: A, b: B): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Determines if two objects are deeply equal, that is,
|
|
33
|
+
* if they have the same properties and the properties have the same values.
|
|
34
|
+
* @param a The first object
|
|
35
|
+
* @param b The second object
|
|
36
|
+
* @returns true if the objects are deeply equal
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* console.log(deepEquals({ a: 1, b: 2 }, { a: 1, b: 2 })); // true
|
|
40
|
+
* console.log(deepEquals({ a: 1, b: 2 }, { a: 1, b: 3 })); // false
|
|
41
|
+
* console.log(deepEquals({ a: { b: 1 } }, { a: { b: 1 } })); // true
|
|
42
|
+
* console.log(deepEquals({ a: { b: 1 } }, { a: { b: 2 } })); // false
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare function deepEquals<A, B>(a: A, b: B): boolean;
|
|
46
|
+
declare const objectKeys: <T>(obj: T) => Array<keyof T>;
|
|
47
|
+
type Entry<T> = [key: keyof T, value: T[keyof T]];
|
|
48
|
+
type Entries<T> = Array<Entry<T>>;
|
|
49
|
+
declare const objectEntries: <T>(obj: T) => Entries<T>;
|
|
50
|
+
type ReadonlyEntry<T> = [key: keyof T, value: T[keyof T]];
|
|
51
|
+
declare const objectFromEntries: <T>(entries: Iterable<ReadonlyEntry<T>>) => T;
|
|
52
|
+
declare function value2Keys<K extends string, T extends string>(obj: Record<K, Iterable<T>>): Record<T, K[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Maps the values of an object to a new object
|
|
55
|
+
* @param obj The object
|
|
56
|
+
* @param fn The mapping function
|
|
57
|
+
* @returns A new object with the mapped values
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const obj = { a: 1, b: 2 };
|
|
61
|
+
* const result = objectMap(obj, ([key, value]) => [key, value * 2]);
|
|
62
|
+
* console.log(result); // { a: 2, b: 4 }
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
declare function objectMap<T, U>(obj: T, fn: (value: Entry<T>) => U): {
|
|
66
|
+
[K in keyof T]: U;
|
|
67
|
+
};
|
|
68
|
+
declare function deepCopy<T>(object: T): T;
|
|
69
|
+
declare function pickByKeys<T, K extends keyof T>(object: T, key: K): T[K];
|
|
70
|
+
declare function pickByKeys<T, K extends keyof T>(object: T, keys: Iterable<K>): Pick<T, K>;
|
|
71
|
+
|
|
72
|
+
export { deepCopy, deepEquals, hasOwn, objectEntries, objectFromEntries, objectKeys, objectMap, pickByKeys, shallowEquals, value2Keys };
|
package/dist/object.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deepCopy,
|
|
3
|
+
deepEquals,
|
|
4
|
+
hasOwn,
|
|
5
|
+
objectEntries,
|
|
6
|
+
objectFromEntries,
|
|
7
|
+
objectKeys,
|
|
8
|
+
objectMap,
|
|
9
|
+
pickByKeys,
|
|
10
|
+
shallowEquals,
|
|
11
|
+
value2Keys
|
|
12
|
+
} from "./chunk-LJSF3QBT.js";
|
|
13
|
+
export {
|
|
14
|
+
deepCopy,
|
|
15
|
+
deepEquals,
|
|
16
|
+
hasOwn,
|
|
17
|
+
objectEntries,
|
|
18
|
+
objectFromEntries,
|
|
19
|
+
objectKeys,
|
|
20
|
+
objectMap,
|
|
21
|
+
pickByKeys,
|
|
22
|
+
shallowEquals,
|
|
23
|
+
value2Keys
|
|
24
|
+
};
|