@guillaume-docquier/tools-ts 6.7.0 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/entry.tools-ts.d.ts +2 -1
- package/dist/entry.tools-ts.js +1 -1
- package/dist/entry.tools-ts.js.map +1 -1
- package/dist/rng/Generator.d.ts +8 -0
- package/dist/rng/Generator.js +2 -0
- package/dist/rng/Generator.js.map +1 -0
- package/dist/rng/Generator.stub.d.ts +2 -0
- package/dist/rng/Generator.stub.js +8 -0
- package/dist/rng/Generator.stub.js.map +1 -0
- package/dist/rng/{rng.d.ts → Rng.d.ts} +21 -10
- package/dist/rng/{rng.js → Rng.js} +32 -14
- package/dist/rng/Rng.js.map +1 -0
- package/dist/rng/mulberry32prng.d.ts +2 -2
- package/dist/rng/mulberry32prng.js +9 -6
- package/dist/rng/mulberry32prng.js.map +1 -1
- package/package.json +1 -1
- package/dist/rng/rng.js.map +0 -1
package/README.md
CHANGED
|
@@ -58,12 +58,12 @@ Use this tool when code needs shared ordering helpers.
|
|
|
58
58
|
Use these tools when code needs injectable randomness or deterministic
|
|
59
59
|
pseudo-random sequences.
|
|
60
60
|
|
|
61
|
-
| Export | What it is
|
|
62
|
-
| ---------------- |
|
|
63
|
-
| `Rng` |
|
|
64
|
-
| `
|
|
65
|
-
| `Generator` |
|
|
66
|
-
| `mulberry32Prng` | Deterministic
|
|
61
|
+
| Export | What it is | Use it when |
|
|
62
|
+
| ---------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
63
|
+
| `Rng` | Builds a stateful RNG facade from a serializable generator. | You need range-aware random numbers, shuffling, draws, or resumable random sequences. |
|
|
64
|
+
| `RngState` | Serializable generator and cached-normal state captured by `Rng`. | You need to persist an `Rng` and resume its exact sequence later. |
|
|
65
|
+
| `Generator` | Contract for random sources that expose their serializable state. | You provide the primitive, resumable random source used to construct an `Rng`. |
|
|
66
|
+
| `mulberry32Prng` | Deterministic, resumable Mulberry32 generator factory. | Tests, simulations, or generation code need repeatable pseudo-random sequences. |
|
|
67
67
|
|
|
68
68
|
### Utility Types
|
|
69
69
|
|
package/dist/entry.tools-ts.d.ts
CHANGED
|
@@ -26,7 +26,8 @@ export type { LoggerContext } from "./logging/log-context/LoggerContext.js";
|
|
|
26
26
|
export type { LogContextProvider } from "./logging/log-context/LogContextProvider.js";
|
|
27
27
|
export { debounce } from "./debounce.js";
|
|
28
28
|
export { Sort } from "./Sort.js";
|
|
29
|
-
export {
|
|
29
|
+
export { Rng, type RngState } from "./rng/Rng.js";
|
|
30
|
+
export type { Generator } from "./rng/Generator.js";
|
|
30
31
|
export { mulberry32Prng } from "./rng/mulberry32prng.js";
|
|
31
32
|
export { Datetime } from "./Datetime.js";
|
|
32
33
|
export { Angle, UnitOfAngle } from "./measurements/Angle.js";
|
package/dist/entry.tools-ts.js
CHANGED
|
@@ -21,7 +21,7 @@ export { prettyConsoleFormatter } from "./logging/formatter/prettyConsoleFormatt
|
|
|
21
21
|
export { createConsoleLogSink } from "./logging/sink/ConsoleLogSink.js";
|
|
22
22
|
export { debounce } from "./debounce.js";
|
|
23
23
|
export { Sort } from "./Sort.js";
|
|
24
|
-
export {
|
|
24
|
+
export { Rng } from "./rng/Rng.js";
|
|
25
25
|
export { mulberry32Prng } from "./rng/mulberry32prng.js";
|
|
26
26
|
export { Datetime } from "./Datetime.js";
|
|
27
27
|
export { Angle, UnitOfAngle } from "./measurements/Angle.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.tools-ts.js","sourceRoot":"","sources":["../src/entry.tools-ts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAA8B,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAA;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAKvE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"entry.tools-ts.js","sourceRoot":"","sources":["../src/entry.tools-ts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAA8B,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAA;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAKvE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,GAAG,EAAiB,MAAM,cAAc,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,OAAO,EAAW,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAY,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAgB,OAAO,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Generator.js","sourceRoot":"","sources":["../../src/rng/Generator.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Generator.stub.js","sourceRoot":"","sources":["../../src/rng/Generator.stub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,MAAM,UAAU,mBAAmB,CAAC,KAA8B;IAChE,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;QACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;KACrB,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Range } from "../Range.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { type Generator } from "./Generator.js";
|
|
3
|
+
export type RngState<TGeneratorState> = {
|
|
4
|
+
generatorState: TGeneratorState;
|
|
5
|
+
spareNormal: number | null;
|
|
6
|
+
};
|
|
7
|
+
export type Rng<TGeneratorState = unknown> = {
|
|
7
8
|
/**
|
|
8
9
|
* Generates a random number based on the given Range.
|
|
9
10
|
* It will output an int given an int Range, or a float given a float Range.
|
|
@@ -36,9 +37,19 @@ export type Rng = {
|
|
|
36
37
|
* The std is the spread of the distribution (default: 1)
|
|
37
38
|
*/
|
|
38
39
|
normal: (mean?: number, std?: number) => number;
|
|
40
|
+
/**
|
|
41
|
+
* Returns the state required to resume the random sequence.
|
|
42
|
+
*/
|
|
43
|
+
getState: () => RngState<TGeneratorState>;
|
|
44
|
+
};
|
|
45
|
+
export declare const Rng: {
|
|
46
|
+
/**
|
|
47
|
+
* Creates a random number generator based on your generator of choice.
|
|
48
|
+
* @param generator The generator that returns numbers in the range [0, 1)
|
|
49
|
+
*/
|
|
50
|
+
create<TGeneratorState>(generator: Generator<TGeneratorState>): Rng<TGeneratorState>;
|
|
51
|
+
/**
|
|
52
|
+
* Restores a random number generator from previously captured state.
|
|
53
|
+
*/
|
|
54
|
+
fromState<TGeneratorState>(state: RngState<TGeneratorState>, createGenerator: (state: TGeneratorState) => Generator<TGeneratorState>): Rng<TGeneratorState>;
|
|
39
55
|
};
|
|
40
|
-
/**
|
|
41
|
-
* Creates a random number generator based on your generator of choice.
|
|
42
|
-
* @param generator The generator that returns numbers in the range [0, 1)
|
|
43
|
-
*/
|
|
44
|
-
export declare function createRng(generator: Generator): Rng;
|
|
@@ -3,11 +3,22 @@ const intBoundsOffset = {
|
|
|
3
3
|
inclusive: 1,
|
|
4
4
|
exclusive: 0,
|
|
5
5
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export const Rng = {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a random number generator based on your generator of choice.
|
|
9
|
+
* @param generator The generator that returns numbers in the range [0, 1)
|
|
10
|
+
*/
|
|
11
|
+
create(generator) {
|
|
12
|
+
return createRng(generator, null);
|
|
13
|
+
},
|
|
14
|
+
/**
|
|
15
|
+
* Restores a random number generator from previously captured state.
|
|
16
|
+
*/
|
|
17
|
+
fromState(state, createGenerator) {
|
|
18
|
+
return createRng(createGenerator(state.generatorState), state.spareNormal);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
function createRng(generator, initialSpareNormal) {
|
|
11
22
|
function random(range) {
|
|
12
23
|
switch (range.numericType) {
|
|
13
24
|
case "float":
|
|
@@ -20,10 +31,10 @@ export function createRng(generator) {
|
|
|
20
31
|
}
|
|
21
32
|
function float(range) {
|
|
22
33
|
if (range === undefined) {
|
|
23
|
-
return generator();
|
|
34
|
+
return generator.next();
|
|
24
35
|
}
|
|
25
36
|
// Because of floating point errors, this is inclusive when min > 1, but that's statistically insignificant.
|
|
26
|
-
return range.min + generator() * (range.max - range.min);
|
|
37
|
+
return range.min + generator.next() * (range.max - range.min);
|
|
27
38
|
}
|
|
28
39
|
function int(range) {
|
|
29
40
|
// We +1 the max because float is exclusive of the max, but for int we want the range to be inclusive.
|
|
@@ -36,7 +47,7 @@ export function createRng(generator) {
|
|
|
36
47
|
*/
|
|
37
48
|
function shuffle(values) {
|
|
38
49
|
for (let i = values.length - 1; i > 0; i--) {
|
|
39
|
-
const j = Math.floor(generator() * (i + 1));
|
|
50
|
+
const j = Math.floor(generator.next() * (i + 1));
|
|
40
51
|
[values[i], values[j]] = [values[j], values[i]];
|
|
41
52
|
}
|
|
42
53
|
return values;
|
|
@@ -51,22 +62,28 @@ export function createRng(generator) {
|
|
|
51
62
|
/**
|
|
52
63
|
* box-muller outputs 2 numbers, so we keep the extra value that we can return instead of recomputing
|
|
53
64
|
*/
|
|
54
|
-
let spareNormal;
|
|
65
|
+
let spareNormal = initialSpareNormal;
|
|
55
66
|
function normal(mean = 0, std = 1) {
|
|
56
|
-
if (spareNormal !==
|
|
67
|
+
if (spareNormal !== null) {
|
|
57
68
|
const value = spareNormal;
|
|
58
|
-
spareNormal =
|
|
69
|
+
spareNormal = null;
|
|
59
70
|
return mean + std * value;
|
|
60
71
|
}
|
|
61
72
|
// u1 must be non-zero
|
|
62
73
|
let u1;
|
|
63
74
|
do {
|
|
64
|
-
u1 = generator();
|
|
75
|
+
u1 = generator.next();
|
|
65
76
|
} while (u1 === 0);
|
|
66
|
-
const { z1, z2 } = boxMullerSample(u1, generator());
|
|
77
|
+
const { z1, z2 } = boxMullerSample(u1, generator.next());
|
|
67
78
|
spareNormal = z1;
|
|
68
79
|
return mean + std * z2;
|
|
69
80
|
}
|
|
81
|
+
function getState() {
|
|
82
|
+
return {
|
|
83
|
+
generatorState: generator.getState(),
|
|
84
|
+
spareNormal,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
70
87
|
return {
|
|
71
88
|
random,
|
|
72
89
|
float,
|
|
@@ -74,6 +91,7 @@ export function createRng(generator) {
|
|
|
74
91
|
shuffle,
|
|
75
92
|
draw,
|
|
76
93
|
normal,
|
|
94
|
+
getState,
|
|
77
95
|
};
|
|
78
96
|
}
|
|
79
|
-
//# sourceMappingURL=
|
|
97
|
+
//# sourceMappingURL=Rng.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rng.js","sourceRoot":"","sources":["../../src/rng/Rng.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Generator } from "./Generator.js";
|
|
2
2
|
/**
|
|
3
3
|
* Creates a deterministic pseudo-random number generator based on a 32-bit integer seed using the mulberry32 algorithm.
|
|
4
4
|
*
|
|
5
5
|
* It generates floats in the range [0, 1)
|
|
6
6
|
*/
|
|
7
|
-
export declare function mulberry32Prng(seed: number): Generator
|
|
7
|
+
export declare function mulberry32Prng(seed: number): Generator<number>;
|
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export function mulberry32Prng(seed) {
|
|
7
7
|
let state = seed >>> 0;
|
|
8
|
-
return
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
return {
|
|
9
|
+
next: () => {
|
|
10
|
+
state = (state + 0x6d2b79f5) >>> 0;
|
|
11
|
+
let next = state;
|
|
12
|
+
next = Math.imul(next ^ (next >>> 15), next | 1);
|
|
13
|
+
next ^= next + Math.imul(next ^ (next >>> 7), next | 61);
|
|
14
|
+
return ((next ^ (next >>> 14)) >>> 0) / 4_294_967_296;
|
|
15
|
+
},
|
|
16
|
+
getState: () => state,
|
|
14
17
|
};
|
|
15
18
|
}
|
|
16
19
|
//# sourceMappingURL=mulberry32prng.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mulberry32prng.js","sourceRoot":"","sources":["../../src/rng/mulberry32prng.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAA;IAEtB,OAAO,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"mulberry32prng.js","sourceRoot":"","sources":["../../src/rng/mulberry32prng.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAA;IAEtB,OAAO;QACL,IAAI,EAAE,GAAG,EAAE;YACT,KAAK,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAElC,IAAI,IAAI,GAAG,KAAK,CAAA;YAChB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;YAChD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YAExD,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAA;QACvD,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;KACtB,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
package/dist/rng/rng.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rng.js","sourceRoot":"","sources":["../../src/rng/rng.ts"],"names":[],"mappings":"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"}
|