@elaraai/east-node-std 0.0.1-beta.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/CLA.md +26 -0
- package/CONTRIBUTING.md +28 -0
- package/README.md +135 -0
- package/dist/console.d.ts +192 -0
- package/dist/console.d.ts.map +1 -0
- package/dist/console.js +228 -0
- package/dist/console.js.map +1 -0
- package/dist/crypto.d.ts +212 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +259 -0
- package/dist/crypto.js.map +1 -0
- package/dist/fetch.d.ts +310 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +336 -0
- package/dist/fetch.js.map +1 -0
- package/dist/fs.d.ts +520 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +630 -0
- package/dist/fs.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/path.d.ts +241 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +299 -0
- package/dist/path.js.map +1 -0
- package/dist/random/crypto-rng.d.ts +31 -0
- package/dist/random/crypto-rng.d.ts.map +1 -0
- package/dist/random/crypto-rng.js +44 -0
- package/dist/random/crypto-rng.js.map +1 -0
- package/dist/random/distributions/bates.d.ts +12 -0
- package/dist/random/distributions/bates.d.ts.map +1 -0
- package/dist/random/distributions/bates.js +15 -0
- package/dist/random/distributions/bates.js.map +1 -0
- package/dist/random/distributions/bernoulli.d.ts +12 -0
- package/dist/random/distributions/bernoulli.d.ts.map +1 -0
- package/dist/random/distributions/bernoulli.js +13 -0
- package/dist/random/distributions/bernoulli.js.map +1 -0
- package/dist/random/distributions/binomial.d.ts +12 -0
- package/dist/random/distributions/binomial.d.ts.map +1 -0
- package/dist/random/distributions/binomial.js +24 -0
- package/dist/random/distributions/binomial.js.map +1 -0
- package/dist/random/distributions/exponential.d.ts +12 -0
- package/dist/random/distributions/exponential.d.ts.map +1 -0
- package/dist/random/distributions/exponential.js +13 -0
- package/dist/random/distributions/exponential.js.map +1 -0
- package/dist/random/distributions/geometric.d.ts +12 -0
- package/dist/random/distributions/geometric.d.ts.map +1 -0
- package/dist/random/distributions/geometric.js +14 -0
- package/dist/random/distributions/geometric.js.map +1 -0
- package/dist/random/distributions/irwin-hall.d.ts +12 -0
- package/dist/random/distributions/irwin-hall.d.ts.map +1 -0
- package/dist/random/distributions/irwin-hall.js +18 -0
- package/dist/random/distributions/irwin-hall.js.map +1 -0
- package/dist/random/distributions/log-normal.d.ts +12 -0
- package/dist/random/distributions/log-normal.d.ts.map +1 -0
- package/dist/random/distributions/log-normal.js +12 -0
- package/dist/random/distributions/log-normal.js.map +1 -0
- package/dist/random/distributions/normal.d.ts +13 -0
- package/dist/random/distributions/normal.d.ts.map +1 -0
- package/dist/random/distributions/normal.js +16 -0
- package/dist/random/distributions/normal.js.map +1 -0
- package/dist/random/distributions/pareto.d.ts +12 -0
- package/dist/random/distributions/pareto.d.ts.map +1 -0
- package/dist/random/distributions/pareto.js +14 -0
- package/dist/random/distributions/pareto.js.map +1 -0
- package/dist/random/distributions/poisson.d.ts +12 -0
- package/dist/random/distributions/poisson.d.ts.map +1 -0
- package/dist/random/distributions/poisson.js +81 -0
- package/dist/random/distributions/poisson.js.map +1 -0
- package/dist/random/distributions/uniform-int.d.ts +12 -0
- package/dist/random/distributions/uniform-int.d.ts.map +1 -0
- package/dist/random/distributions/uniform-int.js +16 -0
- package/dist/random/distributions/uniform-int.js.map +1 -0
- package/dist/random/distributions/uniform.d.ts +12 -0
- package/dist/random/distributions/uniform.d.ts.map +1 -0
- package/dist/random/distributions/uniform.js +10 -0
- package/dist/random/distributions/uniform.js.map +1 -0
- package/dist/random/rng.d.ts +17 -0
- package/dist/random/rng.d.ts.map +1 -0
- package/dist/random/rng.js +7 -0
- package/dist/random/rng.js.map +1 -0
- package/dist/random/xorshift128.d.ts +35 -0
- package/dist/random/xorshift128.d.ts.map +1 -0
- package/dist/random/xorshift128.js +112 -0
- package/dist/random/xorshift128.js.map +1 -0
- package/dist/random.d.ts +773 -0
- package/dist/random.d.ts.map +1 -0
- package/dist/random.js +934 -0
- package/dist/random.js.map +1 -0
- package/dist/test.d.ts +253 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +407 -0
- package/dist/test.js.map +1 -0
- package/dist/time.d.ts +130 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +154 -0
- package/dist/time.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Seedable RNG implementation using xorshift128+ algorithm.
|
|
7
|
+
*
|
|
8
|
+
* Fast, high-quality PRNG suitable for simulations.
|
|
9
|
+
* Period: 2^128 - 1
|
|
10
|
+
*/
|
|
11
|
+
import RNG, { type SeedType } from "./rng.js";
|
|
12
|
+
export default class XorShift128RNG extends RNG {
|
|
13
|
+
private state0;
|
|
14
|
+
private state1;
|
|
15
|
+
constructor(seed?: SeedType);
|
|
16
|
+
get name(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Generate next random number in [0, 1)
|
|
19
|
+
*/
|
|
20
|
+
next(): number;
|
|
21
|
+
/**
|
|
22
|
+
* Seed the RNG for reproducible sequences
|
|
23
|
+
*/
|
|
24
|
+
seed(seed?: SeedType, _opts?: Record<string, unknown>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Clone this RNG with optional new seed
|
|
27
|
+
*/
|
|
28
|
+
clone(seed?: SeedType, opts?: Record<string, unknown>): RNG;
|
|
29
|
+
/**
|
|
30
|
+
* SplitMix64 for state initialization
|
|
31
|
+
* Ensures good distribution even from sequential seeds
|
|
32
|
+
*/
|
|
33
|
+
private splitmix64;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=xorshift128.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xorshift128.d.ts","sourceRoot":"","sources":["../../src/random/xorshift128.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,GAAG;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,CAAC,EAAE,QAAQ;IAc3B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,MAAM;IAgBd;;OAEG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAmC5D;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG;IAY3D;;;OAGG;IACH,OAAO,CAAC,UAAU;CAMrB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Seedable RNG implementation using xorshift128+ algorithm.
|
|
7
|
+
*
|
|
8
|
+
* Fast, high-quality PRNG suitable for simulations.
|
|
9
|
+
* Period: 2^128 - 1
|
|
10
|
+
*/
|
|
11
|
+
import RNG, {} from "./rng.js";
|
|
12
|
+
export default class XorShift128RNG extends RNG {
|
|
13
|
+
state0;
|
|
14
|
+
state1;
|
|
15
|
+
constructor(seed) {
|
|
16
|
+
super();
|
|
17
|
+
// Initialize with default state
|
|
18
|
+
this.state0 = 0n;
|
|
19
|
+
this.state1 = 0n;
|
|
20
|
+
if (seed !== undefined) {
|
|
21
|
+
this.seed(seed);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
// Default seed based on current time
|
|
25
|
+
this.seed(Date.now());
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
get name() {
|
|
29
|
+
return "xorshift128+";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generate next random number in [0, 1)
|
|
33
|
+
*/
|
|
34
|
+
next() {
|
|
35
|
+
// xorshift128+ algorithm
|
|
36
|
+
let s1 = this.state0;
|
|
37
|
+
const s0 = this.state1;
|
|
38
|
+
const result = s0 + s1;
|
|
39
|
+
this.state0 = s0;
|
|
40
|
+
s1 ^= s1 << 23n;
|
|
41
|
+
this.state1 = s1 ^ s0 ^ (s1 >> 17n) ^ (s0 >> 26n);
|
|
42
|
+
// Convert to [0, 1) range
|
|
43
|
+
// Use upper 53 bits for double precision
|
|
44
|
+
const upper53 = (result >> 11n) & ((1n << 53n) - 1n);
|
|
45
|
+
return Number(upper53) / (2 ** 53);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Seed the RNG for reproducible sequences
|
|
49
|
+
*/
|
|
50
|
+
seed(seed, _opts) {
|
|
51
|
+
let seedNum;
|
|
52
|
+
if (typeof seed === "bigint") {
|
|
53
|
+
seedNum = seed;
|
|
54
|
+
}
|
|
55
|
+
else if (typeof seed === "number") {
|
|
56
|
+
seedNum = BigInt(Math.floor(seed));
|
|
57
|
+
}
|
|
58
|
+
else if (typeof seed === "string") {
|
|
59
|
+
// Hash the string to a number
|
|
60
|
+
let hash = 0n;
|
|
61
|
+
for (let i = 0; i < seed.length; i++) {
|
|
62
|
+
hash = ((hash << 5n) - hash) + BigInt(seed.charCodeAt(i));
|
|
63
|
+
hash = hash & 0xffffffffffffffffn; // Keep as 64-bit
|
|
64
|
+
}
|
|
65
|
+
seedNum = hash;
|
|
66
|
+
}
|
|
67
|
+
else if (seed instanceof RNG) {
|
|
68
|
+
// Use another RNG to generate seed
|
|
69
|
+
seedNum = BigInt(Math.floor(seed.next() * Number.MAX_SAFE_INTEGER));
|
|
70
|
+
}
|
|
71
|
+
else if (typeof seed === "function") {
|
|
72
|
+
seedNum = BigInt(Math.floor(seed() * Number.MAX_SAFE_INTEGER));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
seedNum = BigInt(Date.now());
|
|
76
|
+
}
|
|
77
|
+
// Initialize state using splitmix64 to ensure good initial state
|
|
78
|
+
// even from poor seeds
|
|
79
|
+
this.state0 = this.splitmix64(seedNum);
|
|
80
|
+
this.state1 = this.splitmix64(this.state0);
|
|
81
|
+
// Ensure state is never all zeros
|
|
82
|
+
if (this.state0 === 0n && this.state1 === 0n) {
|
|
83
|
+
this.state0 = 1n;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Clone this RNG with optional new seed
|
|
88
|
+
*/
|
|
89
|
+
clone(seed, opts) {
|
|
90
|
+
const cloned = new XorShift128RNG();
|
|
91
|
+
if (seed !== undefined) {
|
|
92
|
+
cloned.seed(seed, opts);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Copy current state
|
|
96
|
+
cloned.state0 = this.state0;
|
|
97
|
+
cloned.state1 = this.state1;
|
|
98
|
+
}
|
|
99
|
+
return cloned;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* SplitMix64 for state initialization
|
|
103
|
+
* Ensures good distribution even from sequential seeds
|
|
104
|
+
*/
|
|
105
|
+
splitmix64(x) {
|
|
106
|
+
x = (x + 0x9e3779b97f4a7c15n) & 0xffffffffffffffffn;
|
|
107
|
+
x = ((x ^ (x >> 30n)) * 0xbf58476d1ce4e5b9n) & 0xffffffffffffffffn;
|
|
108
|
+
x = ((x ^ (x >> 27n)) * 0x94d049bb133111ebn) & 0xffffffffffffffffn;
|
|
109
|
+
return (x ^ (x >> 31n)) & 0xffffffffffffffffn;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=xorshift128.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xorshift128.js","sourceRoot":"","sources":["../../src/random/xorshift128.ts"],"names":[],"mappings":"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"}
|