@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.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/array.d.ts +209 -0
  4. package/dist/array.js +41 -0
  5. package/dist/async/index.d.ts +48 -0
  6. package/dist/async/index.js +155 -0
  7. package/dist/bytes.d.ts +38 -0
  8. package/dist/bytes.js +35 -0
  9. package/dist/chunk-6F4PWJZI.js +0 -0
  10. package/dist/chunk-C2DS6YRJ.js +1664 -0
  11. package/dist/chunk-DO4NH5XG.js +523 -0
  12. package/dist/chunk-EWSJTMH2.js +68 -0
  13. package/dist/chunk-ILLWUQPY.js +139 -0
  14. package/dist/chunk-LJSF3QBT.js +122 -0
  15. package/dist/chunk-MG5VQSTV.js +89 -0
  16. package/dist/chunk-TMLWLR46.js +12 -0
  17. package/dist/chunk-WBSY6KRH.js +358 -0
  18. package/dist/cmath/index.d.ts +57 -0
  19. package/dist/cmath/index.js +187 -0
  20. package/dist/cmp.d.ts +11 -0
  21. package/dist/cmp.js +12 -0
  22. package/dist/csv.d.ts +3 -0
  23. package/dist/csv.js +16 -0
  24. package/dist/easing.d.ts +37 -0
  25. package/dist/easing.js +157 -0
  26. package/dist/events.d.ts +20 -0
  27. package/dist/events.js +67 -0
  28. package/dist/fn/index.d.ts +66 -0
  29. package/dist/fn/index.js +25 -0
  30. package/dist/gfx/index.d.ts +13 -0
  31. package/dist/gfx/index.js +68 -0
  32. package/dist/iter/index.d.ts +226 -0
  33. package/dist/iter/index.js +65 -0
  34. package/dist/math/index.d.ts +463 -0
  35. package/dist/math/index.js +129 -0
  36. package/dist/object.d.ts +72 -0
  37. package/dist/object.js +24 -0
  38. package/dist/random.d.ts +68 -0
  39. package/dist/random.js +22 -0
  40. package/dist/string/index.d.ts +62 -0
  41. package/dist/string/index.js +98 -0
  42. package/dist/structs/index.d.ts +184 -0
  43. package/dist/structs/index.js +24 -0
  44. package/dist/time/index.d.ts +35 -0
  45. package/dist/time/index.js +84 -0
  46. package/dist/types.d.ts +21 -0
  47. package/dist/types.js +1 -0
  48. package/dist/vec3-D7Wuy2AZ.d.ts +70 -0
  49. 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
+ };
@@ -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
+ };