@oliversalzburg/js-utils 0.7.0 → 0.7.1
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/lib/async/async.d.ts +44 -0
- package/lib/async/async.js +76 -0
- package/lib/async/async.js.map +1 -0
- package/lib/async/async.test.d.ts +1 -0
- package/lib/async/async.test.js +26 -0
- package/lib/async/async.test.js.map +1 -0
- package/lib/core.d.ts +43 -0
- package/lib/core.js +2 -0
- package/lib/core.js.map +1 -0
- package/lib/data/array.d.ts +55 -0
- package/lib/data/array.js +90 -0
- package/lib/data/array.js.map +1 -0
- package/lib/data/nil.d.ts +92 -0
- package/lib/data/nil.js +131 -0
- package/lib/data/nil.js.map +1 -0
- package/lib/data/random.d.ts +111 -0
- package/lib/data/random.js +381 -0
- package/lib/data/random.js.map +1 -0
- package/lib/data/string.d.ts +30 -0
- package/lib/data/string.js +53 -0
- package/lib/data/string.js.map +1 -0
- package/lib/data/tree.d.ts +28 -0
- package/lib/data/tree.js +45 -0
- package/lib/data/tree.js.map +1 -0
- package/lib/device/shake.d.ts +79 -0
- package/lib/device/shake.js +135 -0
- package/lib/device/shake.js.map +1 -0
- package/lib/dom/core.d.ts +21 -0
- package/lib/dom/core.js +41 -0
- package/lib/dom/core.js.map +1 -0
- package/lib/errors/AbstractError.d.ts +29 -0
- package/lib/errors/AbstractError.js +59 -0
- package/lib/errors/AbstractError.js.map +1 -0
- package/lib/errors/InternalError.d.ts +19 -0
- package/lib/errors/InternalError.js +38 -0
- package/lib/errors/InternalError.js.map +1 -0
- package/lib/errors/InvalidArgumentError.d.ts +13 -0
- package/lib/errors/InvalidArgumentError.js +22 -0
- package/lib/errors/InvalidArgumentError.js.map +1 -0
- package/lib/errors/InvalidOperationError.d.ts +13 -0
- package/lib/errors/InvalidOperationError.js +22 -0
- package/lib/errors/InvalidOperationError.js.map +1 -0
- package/lib/errors/NotImplementedError.d.ts +12 -0
- package/lib/errors/NotImplementedError.js +21 -0
- package/lib/errors/NotImplementedError.js.map +1 -0
- package/lib/errors/PermissionViolationError.d.ts +13 -0
- package/lib/errors/PermissionViolationError.js +22 -0
- package/lib/errors/PermissionViolationError.js.map +1 -0
- package/lib/errors/ResourceConflictError.d.ts +12 -0
- package/lib/errors/ResourceConflictError.js +21 -0
- package/lib/errors/ResourceConflictError.js.map +1 -0
- package/lib/errors/UnknownError.d.ts +16 -0
- package/lib/errors/UnknownError.js +25 -0
- package/lib/errors/UnknownError.js.map +1 -0
- package/lib/errors/console.d.ts +7 -0
- package/lib/errors/console.js +13 -0
- package/lib/errors/console.js.map +1 -0
- package/lib/errors/error-serializer.d.ts +45 -0
- package/lib/errors/error-serializer.js +74 -0
- package/lib/errors/error-serializer.js.map +1 -0
- package/lib/errors/error-serializer.test.d.ts +1 -0
- package/lib/errors/error-serializer.test.js +109 -0
- package/lib/errors/error-serializer.test.js.map +1 -0
- package/lib/errors/stream.d.ts +7 -0
- package/lib/errors/stream.js +15 -0
- package/lib/errors/stream.js.map +1 -0
- package/lib/errors/tools.d.ts +10 -0
- package/lib/errors/tools.js +13 -0
- package/lib/errors/tools.js.map +1 -0
- package/lib/events/event.d.ts +9 -0
- package/lib/events/event.js +10 -0
- package/lib/events/event.js.map +1 -0
- package/lib/format/bytes.d.ts +118 -0
- package/lib/format/bytes.js +138 -0
- package/lib/format/bytes.js.map +1 -0
- package/lib/format/bytes.test.d.ts +1 -0
- package/lib/format/bytes.test.js +146 -0
- package/lib/format/bytes.test.js.map +1 -0
- package/lib/format/count.d.ts +14 -0
- package/lib/format/count.js +51 -0
- package/lib/format/count.js.map +1 -0
- package/lib/format/count.test.d.ts +1 -0
- package/lib/format/count.test.js +42 -0
- package/lib/format/count.test.js.map +1 -0
- package/lib/format/milliseconds.d.ts +100 -0
- package/lib/format/milliseconds.js +199 -0
- package/lib/format/milliseconds.js.map +1 -0
- package/lib/format/milliseconds.test.d.ts +1 -0
- package/lib/format/milliseconds.test.js +393 -0
- package/lib/format/milliseconds.test.js.map +1 -0
- package/lib/format/string.d.ts +24 -0
- package/lib/format/string.js +32 -0
- package/lib/format/string.js.map +1 -0
- package/lib/format/string.test.d.ts +1 -0
- package/lib/format/string.test.js +17 -0
- package/lib/format/string.test.js.map +1 -0
- package/lib/graphics/canvas-sandbox-mp.d.ts +258 -0
- package/lib/graphics/canvas-sandbox-mp.js +280 -0
- package/lib/graphics/canvas-sandbox-mp.js.map +1 -0
- package/lib/graphics/canvas-sandbox.d.ts +255 -0
- package/lib/graphics/canvas-sandbox.js +358 -0
- package/lib/graphics/canvas-sandbox.js.map +1 -0
- package/lib/graphics/canvas.d.ts +57 -0
- package/lib/graphics/canvas.js +37 -0
- package/lib/graphics/canvas.js.map +1 -0
- package/lib/graphics/canvas2d-headless.d.ts +85 -0
- package/lib/graphics/canvas2d-headless.js +197 -0
- package/lib/graphics/canvas2d-headless.js.map +1 -0
- package/lib/graphics/canvas2d.d.ts +162 -0
- package/lib/graphics/canvas2d.js +332 -0
- package/lib/graphics/canvas2d.js.map +1 -0
- package/lib/graphics/canvas3d.d.ts +41 -0
- package/lib/graphics/canvas3d.js +67 -0
- package/lib/graphics/canvas3d.js.map +1 -0
- package/lib/graphics/color.d.ts +22 -0
- package/lib/graphics/color.js +38 -0
- package/lib/graphics/color.js.map +1 -0
- package/lib/graphics/core.d.ts +89 -0
- package/lib/graphics/core.js +146 -0
- package/lib/graphics/core.js.map +1 -0
- package/lib/graphics/palette-sampler.d.ts +7 -0
- package/lib/graphics/palette-sampler.js +21 -0
- package/lib/graphics/palette-sampler.js.map +1 -0
- package/lib/graphics/palette.d.ts +120 -0
- package/lib/graphics/palette.js +574 -0
- package/lib/graphics/palette.js.map +1 -0
- package/lib/graphics/palette.test.d.ts +1 -0
- package/lib/graphics/palette.test.js +43 -0
- package/lib/graphics/palette.test.js.map +1 -0
- package/lib/graphics/render-loop.d.ts +76 -0
- package/lib/graphics/render-loop.js +114 -0
- package/lib/graphics/render-loop.js.map +1 -0
- package/lib/graphics/shader.d.ts +56 -0
- package/lib/graphics/shader.js +80 -0
- package/lib/graphics/shader.js.map +1 -0
- package/lib/log/log.d.ts +11 -0
- package/lib/log/log.js +2 -0
- package/lib/log/log.js.map +1 -0
- package/lib/log/report.d.ts +57 -0
- package/lib/log/report.js +88 -0
- package/lib/log/report.js.map +1 -0
- package/lib/math/core.d.ts +85 -0
- package/lib/math/core.js +125 -0
- package/lib/math/core.js.map +1 -0
- package/lib/math/easing.d.ts +204 -0
- package/lib/math/easing.js +366 -0
- package/lib/math/easing.js.map +1 -0
- package/lib/math/euler.d.ts +18 -0
- package/lib/math/euler.js +22 -0
- package/lib/math/euler.js.map +1 -0
- package/lib/math/matrix3.d.ts +227 -0
- package/lib/math/matrix3.js +508 -0
- package/lib/math/matrix3.js.map +1 -0
- package/lib/math/quaternion.d.ts +119 -0
- package/lib/math/quaternion.js +270 -0
- package/lib/math/quaternion.js.map +1 -0
- package/lib/math/transformation.d.ts +26 -0
- package/lib/math/transformation.js +31 -0
- package/lib/math/transformation.js.map +1 -0
- package/lib/math/vector2.d.ts +202 -0
- package/lib/math/vector2.js +310 -0
- package/lib/math/vector2.js.map +1 -0
- package/lib/math/vector3.d.ts +293 -0
- package/lib/math/vector3.js +492 -0
- package/lib/math/vector3.js.map +1 -0
- package/lib/math/vector4.d.ts +182 -0
- package/lib/math/vector4.js +302 -0
- package/lib/math/vector4.js.map +1 -0
- package/lib/measurement/performance.d.ts +13 -0
- package/lib/measurement/performance.js +19 -0
- package/lib/measurement/performance.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -5
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helps with generating random numbers.
|
|
3
|
+
*/
|
|
4
|
+
export declare class Random {
|
|
5
|
+
/**
|
|
6
|
+
* The value this PRNG was seeded with.
|
|
7
|
+
*/
|
|
8
|
+
private _seed;
|
|
9
|
+
/**
|
|
10
|
+
* Retrieve the seed of the PRNG.
|
|
11
|
+
* @returns The seed of the PRNG.
|
|
12
|
+
*/
|
|
13
|
+
get seed(): number;
|
|
14
|
+
/**
|
|
15
|
+
* The permutation table for simplex noise.
|
|
16
|
+
*/
|
|
17
|
+
private _perm;
|
|
18
|
+
/**
|
|
19
|
+
* The gradient map for simplex noise.
|
|
20
|
+
*/
|
|
21
|
+
private _gradP;
|
|
22
|
+
/**
|
|
23
|
+
* Skewing and unskewing factors for 2, 3, and 4 dimensions.
|
|
24
|
+
*/
|
|
25
|
+
private _F2;
|
|
26
|
+
/**
|
|
27
|
+
* Skewing and unskewing factors for 2, 3, and 4 dimensions.
|
|
28
|
+
*/
|
|
29
|
+
private _G2;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a pseudo-random value generator. The seed must be an integer.
|
|
32
|
+
*
|
|
33
|
+
* Uses an optimized version of the Park-Miller PRNG.
|
|
34
|
+
* http://www.firstpr.com.au/dsp/rand31/
|
|
35
|
+
* @param seed - The seed for the random number generator.
|
|
36
|
+
*/
|
|
37
|
+
constructor(seed?: number);
|
|
38
|
+
/**
|
|
39
|
+
* Returns a pseudo-random value between 1 and 2^32 - 2.
|
|
40
|
+
* @returns A pseudo-random value between 1 and 2^32 - 2.
|
|
41
|
+
*/
|
|
42
|
+
next(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Returns a random value in a given range.
|
|
45
|
+
* @param min - The lower bound.
|
|
46
|
+
* @param max - The upper bound.
|
|
47
|
+
* @returns A random value between the lower and upper bound.
|
|
48
|
+
*/
|
|
49
|
+
nextRange(min: number, max: number): number;
|
|
50
|
+
/**
|
|
51
|
+
* Returns either `true` or `false`.
|
|
52
|
+
* @returns Either `true` or `false`.
|
|
53
|
+
*/
|
|
54
|
+
nextBoolean(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Returns a pseudo-random floating point number in range [0, 1).
|
|
57
|
+
* @returns a pseudo-random floating point number in range [0, 1).
|
|
58
|
+
*/
|
|
59
|
+
nextFloat(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new Random instance, with a seed that is based of the seed
|
|
62
|
+
* of this Random instance.
|
|
63
|
+
* @returns A new random number generator.
|
|
64
|
+
*/
|
|
65
|
+
nextRandom(): Random;
|
|
66
|
+
static ALLOWED_CHARACTERS: string;
|
|
67
|
+
/**
|
|
68
|
+
* Returns a random ASCII string.
|
|
69
|
+
* @param length - The length of the string.
|
|
70
|
+
* @returns A random ASCII string.
|
|
71
|
+
*/
|
|
72
|
+
nextString(length: number, characters?: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Returns a 2D simplex noise value for a given input coordinate.
|
|
75
|
+
* @param x - The X input coordinate.
|
|
76
|
+
* @param y - The Y input coordinate.
|
|
77
|
+
* @returns The noise value for the input coordinates.
|
|
78
|
+
*/
|
|
79
|
+
simplex2(x: number, y: number): number;
|
|
80
|
+
/**
|
|
81
|
+
* Returns a 3D simplex noise value for a given input coordinate.
|
|
82
|
+
* @param x - The X input coordinate.
|
|
83
|
+
* @param y - The Y input coordinate.
|
|
84
|
+
* @param z - The Z input coordinate.
|
|
85
|
+
* @returns The noise value for the input coordinates.
|
|
86
|
+
*/
|
|
87
|
+
simplex3(x: number, y: number, z: number): number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns a random value in a given range.
|
|
91
|
+
*
|
|
92
|
+
* Uses the JS-internal `Math.random()`. Use {@linkcode Random} for a PRNG with more features.
|
|
93
|
+
*
|
|
94
|
+
* Note that this method returns floating point numbers, regardless of your inputs potentially
|
|
95
|
+
* being integers. If you require integers, ensure to truncate the resulting random value.
|
|
96
|
+
* @param min - The lower bound.
|
|
97
|
+
* @param max - The upper bound.
|
|
98
|
+
* @returns A random value between the lower and upper bound.
|
|
99
|
+
*/
|
|
100
|
+
export declare const randomRange: (min: number, max: number) => number;
|
|
101
|
+
/**
|
|
102
|
+
* Generates a numberic seed, to be used as an input for a PRNG,
|
|
103
|
+
* from a string.
|
|
104
|
+
* @param input - The string to use as a seed.
|
|
105
|
+
* @returns A numeric seed value for a PRNG.
|
|
106
|
+
*/
|
|
107
|
+
export declare const seedFromString: (input: string) => number;
|
|
108
|
+
/**
|
|
109
|
+
* A global PRNG instance that is ready-to-use.
|
|
110
|
+
*/
|
|
111
|
+
export declare const random: Random;
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { Vector3 } from "../math/vector3.js";
|
|
2
|
+
/**
|
|
3
|
+
* Helps with generating random numbers.
|
|
4
|
+
*/
|
|
5
|
+
export class Random {
|
|
6
|
+
/**
|
|
7
|
+
* The value this PRNG was seeded with.
|
|
8
|
+
*/
|
|
9
|
+
_seed;
|
|
10
|
+
/**
|
|
11
|
+
* Retrieve the seed of the PRNG.
|
|
12
|
+
* @returns The seed of the PRNG.
|
|
13
|
+
*/
|
|
14
|
+
get seed() {
|
|
15
|
+
return this._seed;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The permutation table for simplex noise.
|
|
19
|
+
*/
|
|
20
|
+
_perm;
|
|
21
|
+
/**
|
|
22
|
+
* The gradient map for simplex noise.
|
|
23
|
+
*/
|
|
24
|
+
_gradP;
|
|
25
|
+
/**
|
|
26
|
+
* Skewing and unskewing factors for 2, 3, and 4 dimensions.
|
|
27
|
+
*/
|
|
28
|
+
_F2;
|
|
29
|
+
/**
|
|
30
|
+
* Skewing and unskewing factors for 2, 3, and 4 dimensions.
|
|
31
|
+
*/
|
|
32
|
+
_G2;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a pseudo-random value generator. The seed must be an integer.
|
|
35
|
+
*
|
|
36
|
+
* Uses an optimized version of the Park-Miller PRNG.
|
|
37
|
+
* http://www.firstpr.com.au/dsp/rand31/
|
|
38
|
+
* @param seed - The seed for the random number generator.
|
|
39
|
+
*/
|
|
40
|
+
constructor(seed = 0) {
|
|
41
|
+
this._seed = Math.trunc(seed) % 2147483647;
|
|
42
|
+
if (this._seed <= 0) {
|
|
43
|
+
this._seed += 2147483646;
|
|
44
|
+
}
|
|
45
|
+
const grad3 = [
|
|
46
|
+
new Vector3(1, 1, 0),
|
|
47
|
+
new Vector3(-1, 1, 0),
|
|
48
|
+
new Vector3(1, -1, 0),
|
|
49
|
+
new Vector3(-1, -1, 0),
|
|
50
|
+
new Vector3(1, 0, 1),
|
|
51
|
+
new Vector3(-1, 0, 1),
|
|
52
|
+
new Vector3(1, 0, -1),
|
|
53
|
+
new Vector3(-1, 0, -1),
|
|
54
|
+
new Vector3(0, 1, 1),
|
|
55
|
+
new Vector3(0, -1, 1),
|
|
56
|
+
new Vector3(0, 1, -1),
|
|
57
|
+
new Vector3(0, -1, -1),
|
|
58
|
+
];
|
|
59
|
+
const p = [
|
|
60
|
+
151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225,
|
|
61
|
+
140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247,
|
|
62
|
+
120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177,
|
|
63
|
+
33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165,
|
|
64
|
+
71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
|
|
65
|
+
133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25,
|
|
66
|
+
63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,
|
|
67
|
+
135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217,
|
|
68
|
+
226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206,
|
|
69
|
+
59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248,
|
|
70
|
+
152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22,
|
|
71
|
+
39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218,
|
|
72
|
+
246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241,
|
|
73
|
+
81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157,
|
|
74
|
+
184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93,
|
|
75
|
+
222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,
|
|
76
|
+
];
|
|
77
|
+
this._perm = new Array(512);
|
|
78
|
+
this._gradP = new Array(512);
|
|
79
|
+
for (let i = 0; i < 256; i++) {
|
|
80
|
+
let v;
|
|
81
|
+
if (i & 1) {
|
|
82
|
+
v = p[i] ^ (this._seed & 255);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
v = p[i] ^ ((this._seed >> 8) & 255);
|
|
86
|
+
}
|
|
87
|
+
this._perm[i] = this._perm[i + 256] = v;
|
|
88
|
+
this._gradP[i] = this._gradP[i + 256] = grad3[v % 12];
|
|
89
|
+
}
|
|
90
|
+
this._F2 = 0.5 * (Math.sqrt(3) - 1);
|
|
91
|
+
this._G2 = (3 - Math.sqrt(3)) / 6;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns a pseudo-random value between 1 and 2^32 - 2.
|
|
95
|
+
* @returns A pseudo-random value between 1 and 2^32 - 2.
|
|
96
|
+
*/
|
|
97
|
+
next() {
|
|
98
|
+
this._seed = (this._seed * 16807) % 2147483647;
|
|
99
|
+
return this._seed;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Returns a random value in a given range.
|
|
103
|
+
* @param min - The lower bound.
|
|
104
|
+
* @param max - The upper bound.
|
|
105
|
+
* @returns A random value between the lower and upper bound.
|
|
106
|
+
*/
|
|
107
|
+
nextRange(min, max) {
|
|
108
|
+
return this.nextFloat() * (max - min) + min;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Returns either `true` or `false`.
|
|
112
|
+
* @returns Either `true` or `false`.
|
|
113
|
+
*/
|
|
114
|
+
nextBoolean() {
|
|
115
|
+
return this.next() < 2147483646 / 2;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Returns a pseudo-random floating point number in range [0, 1).
|
|
119
|
+
* @returns a pseudo-random floating point number in range [0, 1).
|
|
120
|
+
*/
|
|
121
|
+
nextFloat() {
|
|
122
|
+
// We know that result of next() will be 1 to 2147483646 (inclusive).
|
|
123
|
+
return (this.next() - 1) / 2147483646;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Creates a new Random instance, with a seed that is based of the seed
|
|
127
|
+
* of this Random instance.
|
|
128
|
+
* @returns A new random number generator.
|
|
129
|
+
*/
|
|
130
|
+
nextRandom() {
|
|
131
|
+
return new Random(this.seed + 1);
|
|
132
|
+
}
|
|
133
|
+
static ALLOWED_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
134
|
+
/**
|
|
135
|
+
* Returns a random ASCII string.
|
|
136
|
+
* @param length - The length of the string.
|
|
137
|
+
* @returns A random ASCII string.
|
|
138
|
+
*/
|
|
139
|
+
nextString(length, characters = Random.ALLOWED_CHARACTERS) {
|
|
140
|
+
let result = "";
|
|
141
|
+
while (result.length < length) {
|
|
142
|
+
const characterIndex = Math.floor(this.nextFloat() * characters.length);
|
|
143
|
+
result += characters.substring(characterIndex, characterIndex + 1);
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Returns a 2D simplex noise value for a given input coordinate.
|
|
149
|
+
* @param x - The X input coordinate.
|
|
150
|
+
* @param y - The Y input coordinate.
|
|
151
|
+
* @returns The noise value for the input coordinates.
|
|
152
|
+
*/
|
|
153
|
+
simplex2(x, y) {
|
|
154
|
+
let n0, n1, n2; // Noise contributions from the three corners
|
|
155
|
+
// Skew the input space to determine which simplex cell we're in
|
|
156
|
+
const s = (x + y) * this._F2; // Hairy factor for 2D
|
|
157
|
+
let i = Math.floor(x + s);
|
|
158
|
+
let j = Math.floor(y + s);
|
|
159
|
+
const t = (i + j) * this._G2;
|
|
160
|
+
const x0 = x - i + t; // The x,y distances from the cell origin, unskewed.
|
|
161
|
+
const y0 = y - j + t;
|
|
162
|
+
// For the 2D case, the simplex shape is an equilateral triangle.
|
|
163
|
+
// Determine which simplex we are in.
|
|
164
|
+
let i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords
|
|
165
|
+
if (x0 > y0) {
|
|
166
|
+
// lower triangle, XY order: (0,0)->(1,0)->(1,1)
|
|
167
|
+
i1 = 1;
|
|
168
|
+
j1 = 0;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
// upper triangle, YX order: (0,0)->(0,1)->(1,1)
|
|
172
|
+
i1 = 0;
|
|
173
|
+
j1 = 1;
|
|
174
|
+
}
|
|
175
|
+
// A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and
|
|
176
|
+
// a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where
|
|
177
|
+
// c = (3-sqrt(3))/6
|
|
178
|
+
const x1 = x0 - i1 + this._G2; // Offsets for middle corner in (x,y) unskewed coords
|
|
179
|
+
const y1 = y0 - j1 + this._G2;
|
|
180
|
+
const x2 = x0 - 1 + 2 * this._G2; // Offsets for last corner in (x,y) unskewed coords
|
|
181
|
+
const y2 = y0 - 1 + 2 * this._G2;
|
|
182
|
+
// Work out the hashed gradient indices of the three simplex corners
|
|
183
|
+
i &= 255;
|
|
184
|
+
j &= 255;
|
|
185
|
+
const gi0 = this._gradP[i + this._perm[j]];
|
|
186
|
+
const gi1 = this._gradP[i + i1 + this._perm[j + j1]];
|
|
187
|
+
const gi2 = this._gradP[i + 1 + this._perm[j + 1]];
|
|
188
|
+
// Calculate the contribution from the three corners
|
|
189
|
+
let t0 = 0.5 - x0 * x0 - y0 * y0;
|
|
190
|
+
if (t0 < 0) {
|
|
191
|
+
n0 = 0;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
t0 *= t0;
|
|
195
|
+
n0 = t0 * t0 * gi0.dotXYZ(x0, y0, 0); // (x,y) of grad3 used for 2D gradient
|
|
196
|
+
}
|
|
197
|
+
let t1 = 0.5 - x1 * x1 - y1 * y1;
|
|
198
|
+
if (t1 < 0) {
|
|
199
|
+
n1 = 0;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
t1 *= t1;
|
|
203
|
+
n1 = t1 * t1 * gi1.dotXYZ(x1, y1, 0);
|
|
204
|
+
}
|
|
205
|
+
let t2 = 0.5 - x2 * x2 - y2 * y2;
|
|
206
|
+
if (t2 < 0) {
|
|
207
|
+
n2 = 0;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
t2 *= t2;
|
|
211
|
+
n2 = t2 * t2 * gi2.dotXYZ(x2, y2, 0);
|
|
212
|
+
}
|
|
213
|
+
// Add contributions from each corner to get the final noise value.
|
|
214
|
+
// The result is scaled to return values in the interval [-1,1].
|
|
215
|
+
return 70 * (n0 + n1 + n2);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Returns a 3D simplex noise value for a given input coordinate.
|
|
219
|
+
* @param x - The X input coordinate.
|
|
220
|
+
* @param y - The Y input coordinate.
|
|
221
|
+
* @param z - The Z input coordinate.
|
|
222
|
+
* @returns The noise value for the input coordinates.
|
|
223
|
+
*/
|
|
224
|
+
simplex3(x, y, z) {
|
|
225
|
+
const F3 = 1 / 3;
|
|
226
|
+
const G3 = 1 / 6;
|
|
227
|
+
let n0, n1, n2, n3; // Noise contributions from the four corners
|
|
228
|
+
// Skew the input space to determine which simplex cell we're in
|
|
229
|
+
const s = (x + y + z) * F3; // Hairy factor for 2D
|
|
230
|
+
let i = Math.floor(x + s);
|
|
231
|
+
let j = Math.floor(y + s);
|
|
232
|
+
let k = Math.floor(z + s);
|
|
233
|
+
const t = (i + j + k) * G3;
|
|
234
|
+
const x0 = x - i + t; // The x,y distances from the cell origin, unskewed.
|
|
235
|
+
const y0 = y - j + t;
|
|
236
|
+
const z0 = z - k + t;
|
|
237
|
+
// For the 3D case, the simplex shape is a slightly irregular tetrahedron.
|
|
238
|
+
// Determine which simplex we are in.
|
|
239
|
+
let i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords
|
|
240
|
+
let i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords
|
|
241
|
+
if (x0 >= y0) {
|
|
242
|
+
if (y0 >= z0) {
|
|
243
|
+
i1 = 1;
|
|
244
|
+
j1 = 0;
|
|
245
|
+
k1 = 0;
|
|
246
|
+
i2 = 1;
|
|
247
|
+
j2 = 1;
|
|
248
|
+
k2 = 0;
|
|
249
|
+
}
|
|
250
|
+
else if (x0 >= z0) {
|
|
251
|
+
i1 = 1;
|
|
252
|
+
j1 = 0;
|
|
253
|
+
k1 = 0;
|
|
254
|
+
i2 = 1;
|
|
255
|
+
j2 = 0;
|
|
256
|
+
k2 = 1;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
i1 = 0;
|
|
260
|
+
j1 = 0;
|
|
261
|
+
k1 = 1;
|
|
262
|
+
i2 = 1;
|
|
263
|
+
j2 = 0;
|
|
264
|
+
k2 = 1;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
if (y0 < z0) {
|
|
269
|
+
i1 = 0;
|
|
270
|
+
j1 = 0;
|
|
271
|
+
k1 = 1;
|
|
272
|
+
i2 = 0;
|
|
273
|
+
j2 = 1;
|
|
274
|
+
k2 = 1;
|
|
275
|
+
}
|
|
276
|
+
else if (x0 < z0) {
|
|
277
|
+
i1 = 0;
|
|
278
|
+
j1 = 1;
|
|
279
|
+
k1 = 0;
|
|
280
|
+
i2 = 0;
|
|
281
|
+
j2 = 1;
|
|
282
|
+
k2 = 1;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
i1 = 0;
|
|
286
|
+
j1 = 1;
|
|
287
|
+
k1 = 0;
|
|
288
|
+
i2 = 1;
|
|
289
|
+
j2 = 1;
|
|
290
|
+
k2 = 0;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z),
|
|
294
|
+
// a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and
|
|
295
|
+
// a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where
|
|
296
|
+
// c = 1/6.
|
|
297
|
+
const x1 = x0 - i1 + G3; // Offsets for second corner
|
|
298
|
+
const y1 = y0 - j1 + G3;
|
|
299
|
+
const z1 = z0 - k1 + G3;
|
|
300
|
+
const x2 = x0 - i2 + 2 * G3; // Offsets for third corner
|
|
301
|
+
const y2 = y0 - j2 + 2 * G3;
|
|
302
|
+
const z2 = z0 - k2 + 2 * G3;
|
|
303
|
+
const x3 = x0 - 1 + 3 * G3; // Offsets for fourth corner
|
|
304
|
+
const y3 = y0 - 1 + 3 * G3;
|
|
305
|
+
const z3 = z0 - 1 + 3 * G3;
|
|
306
|
+
// Work out the hashed gradient indices of the four simplex corners
|
|
307
|
+
i &= 255;
|
|
308
|
+
j &= 255;
|
|
309
|
+
k &= 255;
|
|
310
|
+
const gi0 = this._gradP[i + this._perm[j + this._perm[k]]];
|
|
311
|
+
const gi1 = this._gradP[i + i1 + this._perm[j + j1 + this._perm[k + k1]]];
|
|
312
|
+
const gi2 = this._gradP[i + i2 + this._perm[j + j2 + this._perm[k + k2]]];
|
|
313
|
+
const gi3 = this._gradP[i + 1 + this._perm[j + 1 + this._perm[k + 1]]];
|
|
314
|
+
// Calculate the contribution from the four corners
|
|
315
|
+
let t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0;
|
|
316
|
+
if (t0 < 0) {
|
|
317
|
+
n0 = 0;
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
t0 *= t0;
|
|
321
|
+
n0 = t0 * t0 * gi0.dotXYZ(x0, y0, z0); // (x,y) of grad3 used for 2D gradient
|
|
322
|
+
}
|
|
323
|
+
let t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1;
|
|
324
|
+
if (t1 < 0) {
|
|
325
|
+
n1 = 0;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
t1 *= t1;
|
|
329
|
+
n1 = t1 * t1 * gi1.dotXYZ(x1, y1, z1);
|
|
330
|
+
}
|
|
331
|
+
let t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2;
|
|
332
|
+
if (t2 < 0) {
|
|
333
|
+
n2 = 0;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
t2 *= t2;
|
|
337
|
+
n2 = t2 * t2 * gi2.dotXYZ(x2, y2, z2);
|
|
338
|
+
}
|
|
339
|
+
let t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3;
|
|
340
|
+
if (t3 < 0) {
|
|
341
|
+
n3 = 0;
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
t3 *= t3;
|
|
345
|
+
n3 = t3 * t3 * gi3.dotXYZ(x3, y3, z3);
|
|
346
|
+
}
|
|
347
|
+
// Add contributions from each corner to get the final noise value.
|
|
348
|
+
// The result is scaled to return values in the interval [-1,1].
|
|
349
|
+
return 32 * (n0 + n1 + n2 + n3);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Returns a random value in a given range.
|
|
354
|
+
*
|
|
355
|
+
* Uses the JS-internal `Math.random()`. Use {@linkcode Random} for a PRNG with more features.
|
|
356
|
+
*
|
|
357
|
+
* Note that this method returns floating point numbers, regardless of your inputs potentially
|
|
358
|
+
* being integers. If you require integers, ensure to truncate the resulting random value.
|
|
359
|
+
* @param min - The lower bound.
|
|
360
|
+
* @param max - The upper bound.
|
|
361
|
+
* @returns A random value between the lower and upper bound.
|
|
362
|
+
*/
|
|
363
|
+
export const randomRange = (min, max) => {
|
|
364
|
+
return Math.random() * (max - min) + min;
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* Generates a numberic seed, to be used as an input for a PRNG,
|
|
368
|
+
* from a string.
|
|
369
|
+
* @param input - The string to use as a seed.
|
|
370
|
+
* @returns A numeric seed value for a PRNG.
|
|
371
|
+
*/
|
|
372
|
+
export const seedFromString = (input) => {
|
|
373
|
+
return input
|
|
374
|
+
.split("")
|
|
375
|
+
.reduce((seed, char) => (seed = seed + ((char.charCodeAt(0) * 17989) % 2147483647)), 0);
|
|
376
|
+
};
|
|
377
|
+
/**
|
|
378
|
+
* A global PRNG instance that is ready-to-use.
|
|
379
|
+
*/
|
|
380
|
+
export const random = new Random();
|
|
381
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../source/data/random.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,MAAM;IAClB;;OAEG;IACK,KAAK,CAAS;IAEtB;;;OAGG;IACH,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAgB;IAE7B;;OAEG;IACK,MAAM,CAAiB;IAE/B;;OAEG;IACK,GAAG,CAAS;IAEpB;;OAEG;IACK,GAAG,CAAS;IAEpB;;;;;;OAMG;IACH,YAAY,IAAI,GAAG,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG;YACb,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB,CAAC;QAEF,MAAM,CAAC,GAAG;YACT,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;YACrE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG;YACvE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;YACzE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG;YACvE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG;YACxE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACtE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACtE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;YACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACzE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACvE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;YACtE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACrE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACtE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACzE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indent every line of the passed text.
|
|
3
|
+
* @param subject - The text to indent.
|
|
4
|
+
* @param depth - How often to apply the indenting.
|
|
5
|
+
* @param prefix - The string to use as the indent.
|
|
6
|
+
* @returns The indented text.
|
|
7
|
+
*/
|
|
8
|
+
export declare const indent: (subject: string, depth?: number, prefix?: string) => string;
|
|
9
|
+
/**
|
|
10
|
+
* A fast and simple 53-bit string hash function with decent collision resistance.
|
|
11
|
+
* Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity.
|
|
12
|
+
* License: Public domain. Attribution appreciated.
|
|
13
|
+
* cyrb53 (c) 2018 bryc (github.com/bryc)
|
|
14
|
+
* @param subject - The string to hash.
|
|
15
|
+
* @param seed - An optional seed value.
|
|
16
|
+
* @returns A hash of the string.
|
|
17
|
+
*/
|
|
18
|
+
export declare const hashCyrb53: (subject: string, seed?: number) => string;
|
|
19
|
+
/**
|
|
20
|
+
* Encodes the provided string in Base64.
|
|
21
|
+
* @param subject - The string to encode.
|
|
22
|
+
* @returns The subject string encoded in Base64.
|
|
23
|
+
*/
|
|
24
|
+
export declare const base64Encode: (subject: string) => string;
|
|
25
|
+
/**
|
|
26
|
+
* Decodes the provided Base64 encoded string.
|
|
27
|
+
* @param subject - The string to decode.
|
|
28
|
+
* @returns The decoded subject string.
|
|
29
|
+
*/
|
|
30
|
+
export declare const base64Decode: (subject: string) => string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { mustExist } from "./nil.js";
|
|
2
|
+
/**
|
|
3
|
+
* Indent every line of the passed text.
|
|
4
|
+
* @param subject - The text to indent.
|
|
5
|
+
* @param depth - How often to apply the indenting.
|
|
6
|
+
* @param prefix - The string to use as the indent.
|
|
7
|
+
* @returns The indented text.
|
|
8
|
+
*/
|
|
9
|
+
export const indent = (subject, depth = 0, prefix = " ") => subject.replaceAll(/^/gm, prefix.repeat(depth));
|
|
10
|
+
/**
|
|
11
|
+
* A fast and simple 53-bit string hash function with decent collision resistance.
|
|
12
|
+
* Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity.
|
|
13
|
+
* License: Public domain. Attribution appreciated.
|
|
14
|
+
* cyrb53 (c) 2018 bryc (github.com/bryc)
|
|
15
|
+
* @param subject - The string to hash.
|
|
16
|
+
* @param seed - An optional seed value.
|
|
17
|
+
* @returns A hash of the string.
|
|
18
|
+
*/
|
|
19
|
+
export const hashCyrb53 = (subject, seed = 0) => {
|
|
20
|
+
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
|
|
21
|
+
for (let i = 0, ch = 0; i < subject.length; i++) {
|
|
22
|
+
ch = subject.charCodeAt(i);
|
|
23
|
+
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
24
|
+
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
25
|
+
}
|
|
26
|
+
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);
|
|
27
|
+
h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
28
|
+
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);
|
|
29
|
+
h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
30
|
+
return ((h2 >>> 0).toString(16).padStart(8, "0") +
|
|
31
|
+
(h1 >>> 0).toString(16).padStart(8, "0"));
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Encodes the provided string in Base64.
|
|
35
|
+
* @param subject - The string to encode.
|
|
36
|
+
* @returns The subject string encoded in Base64.
|
|
37
|
+
*/
|
|
38
|
+
export const base64Encode = (subject) => {
|
|
39
|
+
const bytes = new TextEncoder().encode(subject);
|
|
40
|
+
const binString = String.fromCodePoint(...bytes);
|
|
41
|
+
return btoa(binString);
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Decodes the provided Base64 encoded string.
|
|
45
|
+
* @param subject - The string to decode.
|
|
46
|
+
* @returns The decoded subject string.
|
|
47
|
+
*/
|
|
48
|
+
export const base64Decode = (subject) => {
|
|
49
|
+
const binString = atob(subject);
|
|
50
|
+
const bytes = Uint8Array.from(binString, (m) => mustExist(m.codePointAt(0)));
|
|
51
|
+
return new TextDecoder().decode(bytes);
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../source/data/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAU,EAAE,CAC7E,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,IAAI,GAAG,CAAC,EAAU,EAAE;IAC/D,IAAI,EAAE,GAAG,UAAU,GAAG,IAAI,EACzB,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACpC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7C,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9C,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7C,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9C,OAAO,CACN,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACxC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACxC,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAU,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAU,EAAE;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class to quickly provide parent-child relationships.
|
|
3
|
+
* @typeParam TNode - Your sub-class.
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class TreeNode<TNode> {
|
|
6
|
+
#private;
|
|
7
|
+
/**
|
|
8
|
+
* The parent.
|
|
9
|
+
* @returns The parent.
|
|
10
|
+
*/
|
|
11
|
+
get parent(): TNode | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* The children.
|
|
14
|
+
* @returns The children.
|
|
15
|
+
*/
|
|
16
|
+
get children(): Set<TNode>;
|
|
17
|
+
/**
|
|
18
|
+
* Construct tree node.
|
|
19
|
+
* @param parent - The parent.
|
|
20
|
+
*/
|
|
21
|
+
constructor(parent?: TNode);
|
|
22
|
+
/**
|
|
23
|
+
* Register a new child on the tree.
|
|
24
|
+
* @param child - A new child.
|
|
25
|
+
* @returns The child.
|
|
26
|
+
*/
|
|
27
|
+
child(child: TNode): TNode;
|
|
28
|
+
}
|
package/lib/data/tree.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class to quickly provide parent-child relationships.
|
|
3
|
+
* @typeParam TNode - Your sub-class.
|
|
4
|
+
*/
|
|
5
|
+
export class TreeNode {
|
|
6
|
+
/**
|
|
7
|
+
* The parent.
|
|
8
|
+
*/
|
|
9
|
+
#parent;
|
|
10
|
+
/**
|
|
11
|
+
* Our children.
|
|
12
|
+
*/
|
|
13
|
+
#children = new Set();
|
|
14
|
+
/**
|
|
15
|
+
* The parent.
|
|
16
|
+
* @returns The parent.
|
|
17
|
+
*/
|
|
18
|
+
get parent() {
|
|
19
|
+
return this.#parent;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The children.
|
|
23
|
+
* @returns The children.
|
|
24
|
+
*/
|
|
25
|
+
get children() {
|
|
26
|
+
return this.#children;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Construct tree node.
|
|
30
|
+
* @param parent - The parent.
|
|
31
|
+
*/
|
|
32
|
+
constructor(parent) {
|
|
33
|
+
this.#parent = parent;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register a new child on the tree.
|
|
37
|
+
* @param child - A new child.
|
|
38
|
+
* @returns The child.
|
|
39
|
+
*/
|
|
40
|
+
child(child) {
|
|
41
|
+
this.children.add(child);
|
|
42
|
+
return child;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=tree.js.map
|