@tktb-tess/util-fns 0.9.3 → 0.10.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/README.md +2 -2
- package/dist/bundle.js +232 -312
- package/dist/bundle.min.js +2 -2
- package/dist/main.d.ts +0 -1
- package/dist/named-error.d.ts +3 -3
- package/dist/u8arr-ext.d.ts +6 -3
- package/dist/util.d.ts +6 -0
- package/dist/xoshiro-minimal.d.ts +1 -1
- package/package.json +5 -5
- package/dist/queue.d.ts +0 -23
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ You can also use it via CDN such as jsDelivr.
|
|
|
30
30
|
|
|
31
31
|
```html
|
|
32
32
|
<!-- You can import it as a global variable -->
|
|
33
|
-
<script src="https://cdn.jsdelivr.net/npm/@tktb-tess/util-fns@0.
|
|
33
|
+
<script src="https://cdn.jsdelivr.net/npm/@tktb-tess/util-fns@0.10.0/dist/bundle.min.js"></script>
|
|
34
34
|
<script type="module">
|
|
35
35
|
const { modPow } = UtilFns;
|
|
36
36
|
// ...
|
|
@@ -38,7 +38,7 @@ You can also use it via CDN such as jsDelivr.
|
|
|
38
38
|
|
|
39
39
|
<!-- or as an ES Module -->
|
|
40
40
|
<script type="module">
|
|
41
|
-
import { modPow } from 'https://cdn.jsdelivr.net/npm/@tktb-tess/util-fns@0.
|
|
41
|
+
import { modPow } from 'https://cdn.jsdelivr.net/npm/@tktb-tess/util-fns@0.10.0/+esm';
|
|
42
42
|
// ...
|
|
43
43
|
</script>
|
|
44
44
|
```
|
package/dist/bundle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const L = new TextEncoder(), X = (n, t) => [n].includes(t), g = (n, t) => {
|
|
2
2
|
if (typeof n != typeof t) return !1;
|
|
3
3
|
const e = Object.prototype.toString.call(n), r = Object.prototype.toString.call(t);
|
|
4
4
|
if (e !== r) return !1;
|
|
@@ -10,55 +10,55 @@ const _ = new TextEncoder(), W = (n, t) => [n].includes(t), g = (n, t) => {
|
|
|
10
10
|
return !1;
|
|
11
11
|
if (Array.isArray(n) && Array.isArray(t)) {
|
|
12
12
|
if (n.length !== t.length) return !1;
|
|
13
|
-
for (let
|
|
14
|
-
if (!g(n[
|
|
13
|
+
for (let o = 0; o < n.length; o++)
|
|
14
|
+
if (!g(n[o], t[o])) return !1;
|
|
15
15
|
return !0;
|
|
16
16
|
}
|
|
17
17
|
if (n instanceof Set && t instanceof Set) {
|
|
18
|
-
const
|
|
19
|
-
return !!g(
|
|
18
|
+
const o = [...n.values()], s = [...t.values()];
|
|
19
|
+
return !!g(o, s);
|
|
20
20
|
}
|
|
21
21
|
if (n instanceof Map && t instanceof Map) {
|
|
22
|
-
const
|
|
23
|
-
if (!g(
|
|
22
|
+
const o = [...n.keys()], s = [...t.keys()];
|
|
23
|
+
if (!g(o, s)) return !1;
|
|
24
24
|
const i = [...n.values()], c = [...t.values()];
|
|
25
25
|
return !!g(i, c);
|
|
26
26
|
}
|
|
27
27
|
if (e === "[object Object]") {
|
|
28
|
-
const
|
|
29
|
-
for (const
|
|
30
|
-
const l = c.find((d) => d ===
|
|
28
|
+
const o = n, s = t, i = Object.keys(o), c = Object.keys(s);
|
|
29
|
+
for (const f of i) {
|
|
30
|
+
const l = c.find((d) => d === f);
|
|
31
31
|
if (l === void 0) return !1;
|
|
32
|
-
const [
|
|
33
|
-
if (!g(
|
|
32
|
+
const [u, h] = [o[f], s[l]];
|
|
33
|
+
if (!g(u, h)) return !1;
|
|
34
34
|
}
|
|
35
35
|
return !0;
|
|
36
36
|
}
|
|
37
37
|
throw Error(`comparing these objects is unavailable: ${n}, ${t}`, {
|
|
38
38
|
cause: [n, t]
|
|
39
39
|
});
|
|
40
|
-
},
|
|
40
|
+
}, H = () => {
|
|
41
41
|
let n, t;
|
|
42
42
|
return {
|
|
43
|
-
promise: new Promise((r,
|
|
44
|
-
n = r, t =
|
|
43
|
+
promise: new Promise((r, o) => {
|
|
44
|
+
n = r, t = o;
|
|
45
45
|
}),
|
|
46
46
|
resolve: n,
|
|
47
47
|
reject: t
|
|
48
48
|
};
|
|
49
|
-
},
|
|
49
|
+
}, J = (n) => new Promise((t) => {
|
|
50
50
|
setTimeout(() => t(), n);
|
|
51
|
-
}),
|
|
51
|
+
}), W = (n) => Object.prototype.toString.call(n).match(/^\[Object\s(.+)\]$/)?.at(1), Y = (n) => (...t) => () => n(...t), Z = (n) => {
|
|
52
52
|
const t = [];
|
|
53
|
-
let e = [], r = "",
|
|
54
|
-
for (let
|
|
55
|
-
const i = n[
|
|
56
|
-
i === '"' && (
|
|
57
|
-
` && !
|
|
53
|
+
let e = [], r = "", o = !1;
|
|
54
|
+
for (let s = 0; s < n.length; s++) {
|
|
55
|
+
const i = n[s];
|
|
56
|
+
i === '"' && (s === 0 || n[s - 1] !== "\\") ? o = !o : i === "," && !o ? (e.push(r.trim()), r = "") : i === `
|
|
57
|
+
` && !o ? (e.push(r.trim()), t.push(e), e = [], r = "") : r += i;
|
|
58
58
|
}
|
|
59
59
|
return e.push(r.trim()), t.push(e), t;
|
|
60
60
|
}, Q = async (n, t) => {
|
|
61
|
-
const e =
|
|
61
|
+
const e = L.encode(n), r = await crypto.subtle.digest(t, e);
|
|
62
62
|
return new Uint8Array(r);
|
|
63
63
|
}, tt = () => !!globalThis.process && typeof process.version < "u" && typeof process.versions.node < "u", nt = (n) => encodeURIComponent(n).replace(
|
|
64
64
|
/[!'()*]/g,
|
|
@@ -73,66 +73,66 @@ const _ = new TextEncoder(), W = (n, t) => [n].includes(t), g = (n, t) => {
|
|
|
73
73
|
}, st = async (n, t) => {
|
|
74
74
|
const r = new Blob([n]).stream().pipeThrough(new DecompressionStream(t));
|
|
75
75
|
return new Response(r).bytes();
|
|
76
|
-
}, ot = (n, t) => Math.floor(Math.random() * (t - n) + n),
|
|
76
|
+
}, ot = (n, t) => Math.floor(Math.random() * (t - n) + n), m = (n, t) => {
|
|
77
77
|
t < 0n && (t *= -1n);
|
|
78
78
|
const e = n % t;
|
|
79
79
|
return e < 0n ? e + t : e;
|
|
80
|
-
},
|
|
80
|
+
}, A = (n, t = !1) => {
|
|
81
81
|
if (!Number.isFinite(n)) throw Error("`length` is not a valid number");
|
|
82
82
|
if (n <= 0) throw Error("`length` must be positive");
|
|
83
83
|
const e = Math.ceil(n / 8), r = crypto.getRandomValues(new Uint8Array(e));
|
|
84
|
-
let
|
|
85
|
-
return t && (
|
|
86
|
-
},
|
|
84
|
+
let o = Array.from(r, (s) => s.toString(2).padStart(8, "0")).join("").slice(0, n);
|
|
85
|
+
return t && (o = o.replace(/^\d/, "1")), BigInt("0b" + o);
|
|
86
|
+
}, v = (n, t) => {
|
|
87
87
|
if (n >= t) throw Error("rangeError");
|
|
88
|
-
const e = t - n, r = e.toString(2).length,
|
|
88
|
+
const e = t - n, r = e.toString(2).length, o = (() => {
|
|
89
89
|
for (let i = 0; i < 1e5; i++) {
|
|
90
|
-
const c =
|
|
91
|
-
if (c >=
|
|
90
|
+
const c = A(r);
|
|
91
|
+
if (c >= p(2n, BigInt(r), e))
|
|
92
92
|
return c % e;
|
|
93
93
|
}
|
|
94
94
|
throw Error("Failed to generate a random bigint");
|
|
95
95
|
})();
|
|
96
|
-
return n +
|
|
97
|
-
},
|
|
96
|
+
return n + o;
|
|
97
|
+
}, p = (n, t, e) => {
|
|
98
98
|
if (e < 1n) throw Error("`mod` must be positive");
|
|
99
99
|
if (t < 0n) throw Error("`power` must not be negative");
|
|
100
|
-
if (n =
|
|
100
|
+
if (n = m(n, e), e === 1n) return 0n;
|
|
101
101
|
if (n % e === 1n || n % e === 0n) return n;
|
|
102
102
|
if (n === e - 1n) return t & 1n ? e - 1n : 1n;
|
|
103
103
|
let r = 1n;
|
|
104
104
|
for (; t > 0n; )
|
|
105
105
|
t & 1n && (r = r * n % e), n = n * n % e, t >>= 1n;
|
|
106
106
|
return r;
|
|
107
|
-
},
|
|
107
|
+
}, _ = (n, t) => {
|
|
108
108
|
if (n === 0n && t === 0n) return { x: 0n, y: 0n, gcd: 0n };
|
|
109
109
|
if (n === 0n)
|
|
110
110
|
return t > 0n ? { x: 0n, y: -1n, gcd: t } : { x: 0n, y: 1n, gcd: -t };
|
|
111
111
|
if (t === 0n)
|
|
112
112
|
return n > 0n ? { x: 1n, y: 0n, gcd: n } : { x: -1n, y: 0n, gcd: -n };
|
|
113
|
-
let [e, r,
|
|
113
|
+
let [e, r, o] = [1n, 0n, n], [s, i, c] = [0n, -1n, t];
|
|
114
114
|
for (; ; ) {
|
|
115
|
-
const
|
|
115
|
+
const f = o / c, l = o - f * c;
|
|
116
116
|
if (l === 0n) break;
|
|
117
|
-
[e,
|
|
117
|
+
[e, s] = [s, e - f * s], [r, i] = [i, r - f * i], [o, c] = [c, l];
|
|
118
118
|
}
|
|
119
|
-
return c < 0n && (
|
|
119
|
+
return c < 0n && (s *= -1n, i *= -1n, c *= -1n), { x: s, y: i, gcd: c };
|
|
120
120
|
}, w = (n, t) => {
|
|
121
121
|
if (n >= t) return 1n;
|
|
122
122
|
const e = BigInt((t - 2n).toString(2).length), r = (t - n) / 2n;
|
|
123
123
|
if (e * r < 63n) {
|
|
124
124
|
let c = n;
|
|
125
|
-
for (let
|
|
126
|
-
c *=
|
|
125
|
+
for (let f = n + 2n; f < t; f += 2n)
|
|
126
|
+
c *= f;
|
|
127
127
|
return c;
|
|
128
128
|
}
|
|
129
|
-
const
|
|
130
|
-
return
|
|
131
|
-
},
|
|
129
|
+
const o = n + r | 1n, s = w(n, o), i = w(o, t);
|
|
130
|
+
return s * i;
|
|
131
|
+
}, j = (n) => {
|
|
132
132
|
let t = 3n, e = 1n, r = 1n;
|
|
133
|
-
const
|
|
134
|
-
for (let
|
|
135
|
-
const i = (n >>
|
|
133
|
+
const o = BigInt(n.toString(2).length) - 1n;
|
|
134
|
+
for (let s = o - 1n; s > -1n; --s) {
|
|
135
|
+
const i = (n >> s) + 1n | 1n;
|
|
136
136
|
r *= w(t, i), t = i, e *= r;
|
|
137
137
|
}
|
|
138
138
|
return e;
|
|
@@ -140,8 +140,8 @@ const _ = new TextEncoder(), W = (n, t) => [n].includes(t), g = (n, t) => {
|
|
|
140
140
|
if (n < 0n) throw Error("'n' must be non-negative");
|
|
141
141
|
if (n === 0n) return 1n;
|
|
142
142
|
const t = n - BigInt(n.toString(2).match(/1/g)?.length ?? 0);
|
|
143
|
-
return
|
|
144
|
-
},
|
|
143
|
+
return j(n) << t;
|
|
144
|
+
}, P = (n, t) => (n >>> (t & 31) | n << (-t & 31)) >>> 0, b = (n, t) => BigInt.asUintN(64, n >> (t & 63n) | n << (-t & 63n)), B = (n, t) => {
|
|
145
145
|
if (t < 1n || t % 2n === 0n)
|
|
146
146
|
throw Error("`n` is invalid");
|
|
147
147
|
for (; n < 0n; )
|
|
@@ -166,49 +166,49 @@ const _ = new TextEncoder(), W = (n, t) => [n].includes(t), g = (n, t) => {
|
|
|
166
166
|
r ** 2n < n ? t = r : e = r;
|
|
167
167
|
}
|
|
168
168
|
return n === t ** 2n || n === (t + 1n) ** 2n;
|
|
169
|
-
},
|
|
169
|
+
}, C = (n) => {
|
|
170
170
|
if (n <= 1n) return !1;
|
|
171
171
|
if (n % 2n === 0n) return n === 2n;
|
|
172
172
|
let t = n - 1n, e = 0n;
|
|
173
173
|
for (; t % 2n === 0n; )
|
|
174
174
|
t >>= 1n, e += 1n;
|
|
175
|
-
const [r,
|
|
176
|
-
let i =
|
|
175
|
+
const [r, o] = [t, e];
|
|
176
|
+
let i = p(2n, r, n);
|
|
177
177
|
if (i === 1n) return !0;
|
|
178
|
-
for (let c = 0n; c <
|
|
178
|
+
for (let c = 0n; c < o; c++) {
|
|
179
179
|
if (i === n - 1n) return !0;
|
|
180
180
|
i = i * i % n;
|
|
181
181
|
}
|
|
182
182
|
return !1;
|
|
183
|
-
},
|
|
184
|
-
let t = 5n, e =
|
|
183
|
+
}, F = (n) => {
|
|
184
|
+
let t = 5n, e = B(t, n);
|
|
185
185
|
for (; e > 0n; ) {
|
|
186
186
|
if (t = t > 0n ? t + 2n : t - 2n, t *= -1n, t === -15n && O(n))
|
|
187
187
|
return [0n, 0n];
|
|
188
|
-
e =
|
|
188
|
+
e = B(t, n);
|
|
189
189
|
}
|
|
190
190
|
return [t, e];
|
|
191
|
-
},
|
|
192
|
-
let
|
|
191
|
+
}, I = (n, t) => (n & 1n) === 1n ? m(n + t >> 1n, t) : m(n >> 1n, t), V = (n, t, e, r) => {
|
|
192
|
+
let o = 1n, s = e;
|
|
193
193
|
const i = n.toString(2).slice(1);
|
|
194
194
|
for (const c of i)
|
|
195
|
-
[
|
|
196
|
-
return [
|
|
195
|
+
[o, s] = [m(o * s, t), I(s * s + r * o * o, t)], c === "1" && ([o, s] = [I(e * o + s, t), I(r * o + e * s, t)]);
|
|
196
|
+
return [o, s];
|
|
197
197
|
}, k = (n, t, e, r) => {
|
|
198
198
|
if (n % 2n !== 1n) throw Error("`n` must be odd");
|
|
199
|
-
let
|
|
200
|
-
for (;
|
|
201
|
-
|
|
202
|
-
const [i, c] =
|
|
203
|
-
let
|
|
199
|
+
let o = n + 1n, s = 0n;
|
|
200
|
+
for (; o % 2n === 0n; )
|
|
201
|
+
o >>= 1n, s += 1n;
|
|
202
|
+
const [i, c] = V(o, n, e, t);
|
|
203
|
+
let f = c;
|
|
204
204
|
if (i === 0n) return !0;
|
|
205
|
-
r =
|
|
206
|
-
for (let l = 0n; l <
|
|
207
|
-
if (
|
|
208
|
-
|
|
205
|
+
r = p(r, o, n);
|
|
206
|
+
for (let l = 0n; l < s; l++) {
|
|
207
|
+
if (f === 0n) return !0;
|
|
208
|
+
f = m(f * f - 2n * r, n), r = p(r, 2n, n);
|
|
209
209
|
}
|
|
210
210
|
return !1;
|
|
211
|
-
},
|
|
211
|
+
}, T = (n) => {
|
|
212
212
|
if (n <= 1n) return !1;
|
|
213
213
|
if (n % 2n === 0n) return n === 2n;
|
|
214
214
|
const t = [
|
|
@@ -239,33 +239,33 @@ const _ = new TextEncoder(), W = (n, t) => [n].includes(t), g = (n, t) => {
|
|
|
239
239
|
97n,
|
|
240
240
|
101n
|
|
241
241
|
];
|
|
242
|
-
for (const
|
|
243
|
-
if (n %
|
|
244
|
-
return n ===
|
|
245
|
-
if (!
|
|
242
|
+
for (const s of t)
|
|
243
|
+
if (n % s === 0n)
|
|
244
|
+
return n === s;
|
|
245
|
+
if (!C(n))
|
|
246
246
|
return !1;
|
|
247
|
-
const [e, r] =
|
|
247
|
+
const [e, r] = F(n);
|
|
248
248
|
if (r === 0n) return !1;
|
|
249
|
-
const
|
|
250
|
-
return k(n, e, 1n,
|
|
249
|
+
const o = (1n - e) / 4n;
|
|
250
|
+
return k(n, e, 1n, o);
|
|
251
251
|
}, ct = (n, t) => {
|
|
252
252
|
if (t < 2n)
|
|
253
253
|
throw Error("noPrimesFound");
|
|
254
254
|
for (let r = 0; r < 1e5; r++) {
|
|
255
|
-
const
|
|
256
|
-
if (
|
|
255
|
+
const o = v(n, t);
|
|
256
|
+
if (T(o)) return o;
|
|
257
257
|
}
|
|
258
258
|
throw Error("noPrimesFound");
|
|
259
|
-
},
|
|
259
|
+
}, ft = (n, t = !1) => {
|
|
260
260
|
if (n < 2)
|
|
261
261
|
throw Error("noPrimesFound");
|
|
262
262
|
for (let r = 0; r < 1e5; r++) {
|
|
263
|
-
const
|
|
264
|
-
if (
|
|
263
|
+
const o = A(n, t);
|
|
264
|
+
if (T(o)) return o;
|
|
265
265
|
}
|
|
266
266
|
throw Error("noPrimesFound");
|
|
267
267
|
};
|
|
268
|
-
class
|
|
268
|
+
class a {
|
|
269
269
|
#t;
|
|
270
270
|
#n;
|
|
271
271
|
static name = "Rational";
|
|
@@ -284,29 +284,29 @@ class u {
|
|
|
284
284
|
*/
|
|
285
285
|
static fromDecimal(t, e = 5) {
|
|
286
286
|
if (Number.isNaN(t))
|
|
287
|
-
return new
|
|
287
|
+
return new a(0n, 0n);
|
|
288
288
|
if (Math.abs(t) === 1 / 0)
|
|
289
|
-
return new
|
|
289
|
+
return new a(t > 0 ? 1n : -1n, 0n);
|
|
290
290
|
const r = t < 0;
|
|
291
291
|
r && (t *= -1);
|
|
292
|
-
const
|
|
293
|
-
if (
|
|
294
|
-
return new
|
|
295
|
-
t = 1 /
|
|
296
|
-
let [i, c] = [1n,
|
|
292
|
+
const o = BigInt(Math.floor(t)), s = t - Number(o);
|
|
293
|
+
if (s === 0)
|
|
294
|
+
return new a(r ? -o : o, 1n);
|
|
295
|
+
t = 1 / s;
|
|
296
|
+
let [i, c] = [1n, o], [f, l] = [0n, 1n];
|
|
297
297
|
for (; `${l}`.length < e + 1; ) {
|
|
298
|
-
const
|
|
299
|
-
if ([i, c] = [c,
|
|
300
|
-
return new
|
|
298
|
+
const u = BigInt(Math.floor(t)), h = t - Number(u);
|
|
299
|
+
if ([i, c] = [c, u * c + i], [f, l] = [l, u * l + f], h === 0)
|
|
300
|
+
return new a(r ? -c : c, l);
|
|
301
301
|
t = 1 / h;
|
|
302
302
|
}
|
|
303
|
-
return new
|
|
303
|
+
return new a(r ? -i : i, f);
|
|
304
304
|
}
|
|
305
305
|
/**
|
|
306
306
|
* reduction
|
|
307
307
|
*/
|
|
308
308
|
#e() {
|
|
309
|
-
const { gcd: t } =
|
|
309
|
+
const { gcd: t } = _(this.#t, this.#n);
|
|
310
310
|
t !== 0n && (this.#t /= t, this.#n /= t);
|
|
311
311
|
}
|
|
312
312
|
/**
|
|
@@ -314,14 +314,14 @@ class u {
|
|
|
314
314
|
* @returns
|
|
315
315
|
*/
|
|
316
316
|
minus() {
|
|
317
|
-
return new
|
|
317
|
+
return new a(-this.#t, this.#n);
|
|
318
318
|
}
|
|
319
319
|
/**
|
|
320
320
|
* returns inverse of this fraction
|
|
321
321
|
* @returns
|
|
322
322
|
*/
|
|
323
323
|
inverse() {
|
|
324
|
-
return new
|
|
324
|
+
return new a(this.#n, this.#t);
|
|
325
325
|
}
|
|
326
326
|
/**
|
|
327
327
|
* returns `this + right`
|
|
@@ -330,7 +330,7 @@ class u {
|
|
|
330
330
|
*/
|
|
331
331
|
add(t) {
|
|
332
332
|
const e = this.#n * t.#n, r = this.#t * t.#n + t.#t * this.#n;
|
|
333
|
-
return new
|
|
333
|
+
return new a(r, e);
|
|
334
334
|
}
|
|
335
335
|
/**
|
|
336
336
|
* returns `this - right`
|
|
@@ -347,7 +347,7 @@ class u {
|
|
|
347
347
|
*/
|
|
348
348
|
multiply(t) {
|
|
349
349
|
const e = this.#n * t.#n, r = this.#t * t.#t;
|
|
350
|
-
return new
|
|
350
|
+
return new a(r, e);
|
|
351
351
|
}
|
|
352
352
|
/**
|
|
353
353
|
* returns `this / right`
|
|
@@ -365,7 +365,7 @@ class u {
|
|
|
365
365
|
*/
|
|
366
366
|
mediant(t) {
|
|
367
367
|
const e = this.#n + t.#n, r = this.#t + t.#t;
|
|
368
|
-
return new
|
|
368
|
+
return new a(r, e);
|
|
369
369
|
}
|
|
370
370
|
/**
|
|
371
371
|
* returns `number` type decimal
|
|
@@ -397,7 +397,7 @@ class u {
|
|
|
397
397
|
*/
|
|
398
398
|
static fromData(t) {
|
|
399
399
|
const e = BigInt(t.value[0]), r = BigInt(t.value[1]);
|
|
400
|
-
return new
|
|
400
|
+
return new a(e, r);
|
|
401
401
|
}
|
|
402
402
|
/**
|
|
403
403
|
* pases string whose form is `'numerator/denominator'`
|
|
@@ -408,180 +408,95 @@ class u {
|
|
|
408
408
|
const r = /^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(t);
|
|
409
409
|
if (!r)
|
|
410
410
|
throw Error("cannot parse");
|
|
411
|
-
const
|
|
412
|
-
if (!
|
|
411
|
+
const o = r.at(1), s = r.at(2);
|
|
412
|
+
if (!o || !s)
|
|
413
413
|
throw Error("cannot parse");
|
|
414
|
-
return new
|
|
414
|
+
return new a(BigInt(o), BigInt(s));
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
|
-
Object.defineProperty(
|
|
418
|
-
value:
|
|
417
|
+
Object.defineProperty(a.prototype, Symbol.toStringTag, {
|
|
418
|
+
value: a.name
|
|
419
419
|
});
|
|
420
|
-
const
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
const e = n.length & 7;
|
|
449
|
-
e && (n = "0".repeat(8 - e) + n);
|
|
450
|
-
const r = n.matchAll(/.{8}/g), s = Array.from(r, (o) => Number.parseInt(o[0], 2));
|
|
451
|
-
return Uint8Array.from(s);
|
|
452
|
-
}
|
|
453
|
-
default:
|
|
454
|
-
throw Error(`Invalid encoding: ${t}`, { cause: t });
|
|
455
|
-
}
|
|
456
|
-
}, ut = (n, t) => {
|
|
457
|
-
switch (t) {
|
|
458
|
-
case "utf-8":
|
|
459
|
-
return q.decode(n);
|
|
460
|
-
case "base64": {
|
|
461
|
-
const e = Array.from(n, (r) => String.fromCharCode(r)).join("");
|
|
462
|
-
return btoa(e);
|
|
463
|
-
}
|
|
464
|
-
case "base64url": {
|
|
465
|
-
const e = Array.from(n, (s) => String.fromCharCode(s)).join("");
|
|
466
|
-
return btoa(e).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
|
|
467
|
-
}
|
|
468
|
-
case "hex":
|
|
469
|
-
return Array.from(n, (r) => r.toString(16).padStart(2, "0")).join("").replace(/^0+/, "");
|
|
470
|
-
case "oct": {
|
|
471
|
-
let e = Array.from(
|
|
472
|
-
n,
|
|
473
|
-
(i) => i.toString(16).padStart(2, "0")
|
|
474
|
-
).join("");
|
|
475
|
-
const r = e.length % 6;
|
|
476
|
-
r && (e = "0".repeat(6 - r) + e);
|
|
477
|
-
const s = e.matchAll(/.{6}/g);
|
|
478
|
-
return Array.from(
|
|
479
|
-
s,
|
|
480
|
-
(i) => Number.parseInt(i[0], 16).toString(8).padStart(8, "0")
|
|
481
|
-
).join("").replace(/^0+/, "");
|
|
482
|
-
}
|
|
483
|
-
case "bin":
|
|
484
|
-
return Array.from(n, (r) => r.toString(2).padStart(8, "0")).join("").replace(/^0+/, "");
|
|
485
|
-
default:
|
|
486
|
-
throw Error(`Invalid encoding: ${t}`, { cause: t });
|
|
487
|
-
}
|
|
420
|
+
const $ = (n) => {
|
|
421
|
+
const t = Array.from(n, (e) => String.fromCharCode(e));
|
|
422
|
+
return btoa(t.join(""));
|
|
423
|
+
}, D = (n) => {
|
|
424
|
+
const t = atob(n);
|
|
425
|
+
return Uint8Array.from(t, (e) => e.charCodeAt(0));
|
|
426
|
+
}, lt = (n) => $(n).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, ""), at = (n) => {
|
|
427
|
+
const t = n.length & 3;
|
|
428
|
+
t > 0 && (n = n + "=".repeat(4 - t));
|
|
429
|
+
const e = n.replaceAll("-", "+").replaceAll("_", "/");
|
|
430
|
+
return D(e);
|
|
431
|
+
}, ut = (n) => {
|
|
432
|
+
let t = Array.from(n, (s) => s.toString(16).padStart(2, "0")).join("");
|
|
433
|
+
const e = t.length % 6;
|
|
434
|
+
e && (t = "0".repeat(6 - e) + t);
|
|
435
|
+
const r = t.matchAll(/.{6}/g);
|
|
436
|
+
return Array.from(
|
|
437
|
+
r,
|
|
438
|
+
(s) => Number.parseInt(s[0], 16).toString(8).padStart(8, "0")
|
|
439
|
+
).join("").replace(/^0+/, "");
|
|
440
|
+
}, ht = (n) => {
|
|
441
|
+
const t = n.length & 7;
|
|
442
|
+
t && (n = "0".repeat(8 - t) + n);
|
|
443
|
+
const e = n.matchAll(/.{8}/g), o = Array.from(e, (s) => {
|
|
444
|
+
const i = s[0];
|
|
445
|
+
return Number.parseInt(i, 8).toString(16).padStart(6, "0");
|
|
446
|
+
}).join("").matchAll(/.{2}/g);
|
|
447
|
+
return Uint8Array.from(o, (s) => Number.parseInt(s[0], 16));
|
|
488
448
|
}, K = (n) => {
|
|
489
449
|
const t = n < 0n;
|
|
490
450
|
t && (n *= -1n);
|
|
491
|
-
const e = n.toString(2).length, r = n === 1n << BigInt(e - 1) && !(e % 7) && t,
|
|
492
|
-
return r ?
|
|
493
|
-
},
|
|
451
|
+
const e = n.toString(2).length, r = n === 1n << BigInt(e - 1) && !(e % 7) && t, o = Math.floor(e / 7) + 1;
|
|
452
|
+
return r ? o - 1 : o;
|
|
453
|
+
}, dt = (n) => {
|
|
494
454
|
const t = K(n);
|
|
495
455
|
n = BigInt.asUintN(t * 7, n);
|
|
496
456
|
const e = new Uint8Array(t);
|
|
497
|
-
for (let
|
|
498
|
-
const
|
|
499
|
-
e[
|
|
457
|
+
for (let o = 0; o < t - 1; ++o) {
|
|
458
|
+
const s = Number(n & 127n) | 128;
|
|
459
|
+
e[o] = s, n >>= 7n;
|
|
500
460
|
}
|
|
501
461
|
const r = Number(n & 127n);
|
|
502
462
|
return e[t - 1] = r, n >>= 7n, e;
|
|
503
|
-
},
|
|
463
|
+
}, gt = (n) => {
|
|
504
464
|
const t = n.length;
|
|
505
465
|
let e = 0n;
|
|
506
466
|
for (let r = 0; r < t; ++r) {
|
|
507
|
-
const
|
|
508
|
-
e +=
|
|
467
|
+
const o = BigInt(n[r] & 127);
|
|
468
|
+
e += o << BigInt(7 * r);
|
|
509
469
|
}
|
|
510
470
|
return BigInt.asIntN(7 * t, e);
|
|
511
471
|
};
|
|
512
|
-
class
|
|
513
|
-
#t;
|
|
514
|
-
#n;
|
|
515
|
-
static name = "Queue";
|
|
516
|
-
/**
|
|
517
|
-
* Queue
|
|
518
|
-
* @param data
|
|
519
|
-
*/
|
|
520
|
-
constructor(...t) {
|
|
521
|
-
this.#t = t, this.#n = [];
|
|
522
|
-
}
|
|
523
|
-
/**
|
|
524
|
-
* enqueue data
|
|
525
|
-
* @param data
|
|
526
|
-
* @returns current queue length
|
|
527
|
-
*/
|
|
528
|
-
enqueue(...t) {
|
|
529
|
-
return this.#t.push(...t), this.#t.length + this.#n.length;
|
|
530
|
-
}
|
|
531
|
-
/**
|
|
532
|
-
* dequeue data
|
|
533
|
-
* @returns data in the head
|
|
534
|
-
*/
|
|
535
|
-
dequeue() {
|
|
536
|
-
if (this.#n.length === 0)
|
|
537
|
-
for (; this.#t.length > 0; ) {
|
|
538
|
-
const t = this.#t.pop();
|
|
539
|
-
this.#n.push(t);
|
|
540
|
-
}
|
|
541
|
-
return this.#n.pop();
|
|
542
|
-
}
|
|
543
|
-
toArray() {
|
|
544
|
-
return this.#n.slice().reverse().concat(this.#t);
|
|
545
|
-
}
|
|
546
|
-
toJSON() {
|
|
547
|
-
return this.toArray();
|
|
548
|
-
}
|
|
549
|
-
toString() {
|
|
550
|
-
return this.toArray().toString();
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
Object.defineProperty(S.prototype, Symbol.toStringTag, {
|
|
554
|
-
value: S.name
|
|
555
|
-
});
|
|
556
|
-
class E extends Error {
|
|
557
|
-
name;
|
|
558
|
-
static name = "NamedError";
|
|
472
|
+
class U extends Error {
|
|
559
473
|
constructor(t, e, r) {
|
|
560
|
-
super(e, { cause: r }), this.
|
|
474
|
+
super(e, { cause: r }), this.errName = t;
|
|
561
475
|
}
|
|
476
|
+
static name = "NamedError";
|
|
562
477
|
toJSON() {
|
|
563
478
|
const t = (() => {
|
|
564
|
-
const
|
|
565
|
-
return typeof
|
|
566
|
-
})(), {
|
|
479
|
+
const s = this.cause;
|
|
480
|
+
return typeof s == "string" || typeof s == "number" || typeof s == "boolean" ? s : typeof s == "bigint" ? s.toString() : typeof s == "object" && s !== null ? s instanceof Set || s instanceof Map ? Object.fromEntries(s) : s : void 0;
|
|
481
|
+
})(), { errName: e, message: r, stack: o } = this;
|
|
567
482
|
return {
|
|
568
|
-
|
|
483
|
+
errName: e,
|
|
569
484
|
message: r,
|
|
570
|
-
stack:
|
|
485
|
+
stack: o,
|
|
571
486
|
cause: t
|
|
572
487
|
};
|
|
573
488
|
}
|
|
574
489
|
}
|
|
575
|
-
Object.defineProperty(
|
|
576
|
-
value:
|
|
490
|
+
Object.defineProperty(U.prototype, Symbol.toStringTag, {
|
|
491
|
+
value: U.name
|
|
577
492
|
});
|
|
578
|
-
const
|
|
493
|
+
const E = (n) => {
|
|
579
494
|
if (n === 0) return 32;
|
|
580
495
|
let t = 0;
|
|
581
496
|
for (; n > 0 && !(n & 1); )
|
|
582
497
|
++t, n >>>= 1;
|
|
583
498
|
return t;
|
|
584
|
-
},
|
|
499
|
+
}, S = (n) => {
|
|
585
500
|
if (n === 0n) return 64n;
|
|
586
501
|
let t = 0n;
|
|
587
502
|
for (; n > 0n && !(n & 1n); )
|
|
@@ -600,18 +515,18 @@ class N {
|
|
|
600
515
|
case 32:
|
|
601
516
|
return this.#t.getU32Rand() >>> 0;
|
|
602
517
|
case 64: {
|
|
603
|
-
const
|
|
604
|
-
return Number(
|
|
518
|
+
const u = this.#t.getU64Rand() & 0xffffffffn;
|
|
519
|
+
return Number(u);
|
|
605
520
|
}
|
|
606
521
|
}
|
|
607
|
-
})(),
|
|
608
|
-
let
|
|
609
|
-
if (
|
|
610
|
-
|
|
611
|
-
const
|
|
522
|
+
})(), o = r & 255;
|
|
523
|
+
let s = 126;
|
|
524
|
+
if (o === 0) {
|
|
525
|
+
s -= 8;
|
|
526
|
+
const u = 1e5;
|
|
612
527
|
let h = 0;
|
|
613
528
|
t: for (; ; ) {
|
|
614
|
-
if (h >
|
|
529
|
+
if (h > u)
|
|
615
530
|
throw Error("loop exceeded limit");
|
|
616
531
|
const d = (() => {
|
|
617
532
|
switch (this.#t.bits) {
|
|
@@ -624,24 +539,24 @@ class N {
|
|
|
624
539
|
}
|
|
625
540
|
})();
|
|
626
541
|
if (d === 0) {
|
|
627
|
-
if (
|
|
628
|
-
|
|
542
|
+
if (s -= 32, s < 0) {
|
|
543
|
+
s = 0;
|
|
629
544
|
break t;
|
|
630
545
|
}
|
|
631
546
|
} else {
|
|
632
|
-
|
|
547
|
+
s -= E(d);
|
|
633
548
|
break t;
|
|
634
549
|
}
|
|
635
550
|
++h;
|
|
636
551
|
}
|
|
637
552
|
} else
|
|
638
|
-
|
|
553
|
+
s -= E(o);
|
|
639
554
|
const i = r >>> 8 & 8388607;
|
|
640
|
-
i === 0 && r >>> 31 && ++
|
|
641
|
-
const { buffer: c, byteOffset:
|
|
642
|
-
|
|
555
|
+
i === 0 && r >>> 31 && ++s;
|
|
556
|
+
const { buffer: c, byteOffset: f, length: l } = Uint32Array.from([
|
|
557
|
+
s << 23 | i
|
|
643
558
|
]);
|
|
644
|
-
return new Float32Array(c,
|
|
559
|
+
return new Float32Array(c, f, l)[0];
|
|
645
560
|
}
|
|
646
561
|
/**
|
|
647
562
|
* returns a random single-precision floating-point number (float32) in the range of [0.0, 1.0)
|
|
@@ -659,50 +574,50 @@ class N {
|
|
|
659
574
|
const t = 0n, e = 1023n, r = (() => {
|
|
660
575
|
switch (this.#t.bits) {
|
|
661
576
|
case 32: {
|
|
662
|
-
const
|
|
663
|
-
return
|
|
577
|
+
const u = BigInt(this.#t.getU32Rand() >>> 0), h = BigInt(this.#t.getU32Rand() >>> 0);
|
|
578
|
+
return u << 32n | h;
|
|
664
579
|
}
|
|
665
580
|
case 64:
|
|
666
581
|
return BigInt.asUintN(64, this.#t.getU64Rand());
|
|
667
582
|
}
|
|
668
|
-
})(),
|
|
669
|
-
let
|
|
670
|
-
if (
|
|
671
|
-
|
|
672
|
-
const
|
|
583
|
+
})(), o = r & 0x7ffn;
|
|
584
|
+
let s = e - 1n;
|
|
585
|
+
if (o === 0n) {
|
|
586
|
+
s -= 11n;
|
|
587
|
+
const u = 1e5;
|
|
673
588
|
let h = 0;
|
|
674
589
|
t: for (; ; ) {
|
|
675
|
-
if (h >
|
|
590
|
+
if (h > u)
|
|
676
591
|
throw Error("loop exceeded limit");
|
|
677
592
|
const d = (() => {
|
|
678
593
|
switch (this.#t.bits) {
|
|
679
594
|
case 32: {
|
|
680
|
-
const y = BigInt(this.#t.getU32Rand() >>> 0),
|
|
681
|
-
return y << 32n |
|
|
595
|
+
const y = BigInt(this.#t.getU32Rand() >>> 0), M = BigInt(this.#t.getU32Rand() >>> 0);
|
|
596
|
+
return y << 32n | M;
|
|
682
597
|
}
|
|
683
598
|
case 64:
|
|
684
599
|
return BigInt.asUintN(64, this.#t.getU64Rand());
|
|
685
600
|
}
|
|
686
601
|
})();
|
|
687
602
|
if (d === 0n) {
|
|
688
|
-
if (
|
|
689
|
-
|
|
603
|
+
if (s -= 64n, s < t) {
|
|
604
|
+
s = t;
|
|
690
605
|
break t;
|
|
691
606
|
}
|
|
692
607
|
} else {
|
|
693
|
-
|
|
608
|
+
s -= S(d);
|
|
694
609
|
break t;
|
|
695
610
|
}
|
|
696
611
|
++h;
|
|
697
612
|
}
|
|
698
613
|
} else
|
|
699
|
-
|
|
614
|
+
s -= S(o);
|
|
700
615
|
const i = BigInt.asUintN(52, r >> 11n);
|
|
701
|
-
i === 0n && r >> 63n && ++
|
|
702
|
-
const { buffer: c, byteOffset:
|
|
703
|
-
|
|
616
|
+
i === 0n && r >> 63n && ++s;
|
|
617
|
+
const { buffer: c, byteOffset: f, length: l } = BigUint64Array.from([
|
|
618
|
+
s << 52n | i
|
|
704
619
|
]);
|
|
705
|
-
return new Float64Array(c,
|
|
620
|
+
return new Float64Array(c, f, l)[0];
|
|
706
621
|
}
|
|
707
622
|
/**
|
|
708
623
|
* returns a random double-precision floating-point number (float64) in the range of [0.0, 1.0)
|
|
@@ -720,7 +635,7 @@ class N {
|
|
|
720
635
|
Object.defineProperty(N.prototype, Symbol.toStringTag, {
|
|
721
636
|
value: N.name
|
|
722
637
|
});
|
|
723
|
-
const
|
|
638
|
+
const q = [0x853c49e6748fea9bn, 0xda3e39cb94b95bdbn], G = 0x5851f42d4c957f2dn;
|
|
724
639
|
class R {
|
|
725
640
|
/**
|
|
726
641
|
* length = 2, `[state, increment]`
|
|
@@ -742,16 +657,16 @@ class R {
|
|
|
742
657
|
* const betterRng = new PCGMinimal(seed);
|
|
743
658
|
*/
|
|
744
659
|
constructor(t) {
|
|
745
|
-
t && t.length >= 2 ? (this.#t = new BigUint64Array(2), this.#t[1] = t[1] << 1n | 1n, this.#n(), this.#t[0] += t[0], this.#n()) : this.#t = BigUint64Array.from(
|
|
660
|
+
t && t.length >= 2 ? (this.#t = new BigUint64Array(2), this.#t[1] = t[1] << 1n | 1n, this.#n(), this.#t[0] += t[0], this.#n()) : this.#t = BigUint64Array.from(q);
|
|
746
661
|
}
|
|
747
662
|
/** step inner state */
|
|
748
663
|
#n() {
|
|
749
|
-
this.#t[0] = this.#t[0] *
|
|
664
|
+
this.#t[0] = this.#t[0] * G + this.#t[1];
|
|
750
665
|
}
|
|
751
666
|
/** 32bit 乱数を返す (内部状態は変わらない) */
|
|
752
667
|
get #e() {
|
|
753
668
|
const t = this.#t[0], e = Number(t >> 59n), r = Number(BigInt.asUintN(32, (t ^ t >> 18n) >> 27n));
|
|
754
|
-
return
|
|
669
|
+
return P(r, e);
|
|
755
670
|
}
|
|
756
671
|
/**
|
|
757
672
|
*
|
|
@@ -767,8 +682,8 @@ class R {
|
|
|
767
682
|
if (t > 4294967296) throw Error("`bound` exceeded limit (2^32)");
|
|
768
683
|
if (t <= 0)
|
|
769
684
|
throw Error("'bound' must be positive");
|
|
770
|
-
const r = 4294967296 % t,
|
|
771
|
-
for (let
|
|
685
|
+
const r = 4294967296 % t, o = 1e5;
|
|
686
|
+
for (let s = 0; s < o; ++s) {
|
|
772
687
|
const i = this.getU32Rand();
|
|
773
688
|
if (i >= r)
|
|
774
689
|
return i % t;
|
|
@@ -793,13 +708,13 @@ class R {
|
|
|
793
708
|
Object.defineProperty(R.prototype, Symbol.toStringTag, {
|
|
794
709
|
value: R.name
|
|
795
710
|
});
|
|
796
|
-
const
|
|
711
|
+
const z = [
|
|
797
712
|
0xbe562cb412e2260en,
|
|
798
713
|
0x2e4284137d641affn,
|
|
799
714
|
0x4e19b36ee933e27en,
|
|
800
715
|
0x7581cf8c4f4d4f7dn
|
|
801
716
|
];
|
|
802
|
-
class
|
|
717
|
+
class x {
|
|
803
718
|
bits = 64;
|
|
804
719
|
#t;
|
|
805
720
|
static name = "XoshiroMinimal";
|
|
@@ -814,17 +729,18 @@ class A {
|
|
|
814
729
|
*
|
|
815
730
|
* // you should construct with random seeds.
|
|
816
731
|
* const seed = crypto.getRandomValues(new BigUint64Array(4));
|
|
817
|
-
* const betterRng = new
|
|
732
|
+
* const betterRng = new XoshiroMinimal(seed);
|
|
818
733
|
*/
|
|
819
734
|
constructor(t) {
|
|
820
|
-
t && t.length >= 4 ? (this.#t = new BigUint64Array(4), this.#t[0] = t[0], this.#t[1] = t[1], this.#n(), this.#t[2] += t[2], this.#t[3] += t[3]) : this.#t = BigUint64Array.from(
|
|
735
|
+
t && t.length >= 4 ? (this.#t = new BigUint64Array(4), this.#t[0] = t[0], this.#t[1] = t[1], this.#n(), this.#t[2] += t[2], this.#t[3] += t[3]) : this.#t = BigUint64Array.from(z);
|
|
821
736
|
}
|
|
822
737
|
#n() {
|
|
823
738
|
const t = this.#t[1] << 17n;
|
|
824
|
-
this.#t[2] ^= this.#t[0], this.#t[3] ^= this.#t[1], this.#t[1] ^= this.#t[2], this.#t[0] ^= this.#t[3], this.#t[2] ^= t, this.#t[3] =
|
|
739
|
+
this.#t[2] ^= this.#t[0], this.#t[3] ^= this.#t[1], this.#t[1] ^= this.#t[2], this.#t[0] ^= this.#t[3], this.#t[2] ^= t, this.#t[3] = b(this.#t[3], 45n);
|
|
825
740
|
}
|
|
826
741
|
get value() {
|
|
827
|
-
|
|
742
|
+
const t = b(this.#t[0] + this.#t[3], 23n) + this.#t[0];
|
|
743
|
+
return BigInt.asUintN(64, t);
|
|
828
744
|
}
|
|
829
745
|
getU64Rand() {
|
|
830
746
|
const t = this.value;
|
|
@@ -840,8 +756,8 @@ class A {
|
|
|
840
756
|
throw Error("'bound' exceeded limit");
|
|
841
757
|
if (t <= 0n)
|
|
842
758
|
throw Error("'bound' must be positive");
|
|
843
|
-
const r = e % t,
|
|
844
|
-
for (let
|
|
759
|
+
const r = e % t, o = 1e5;
|
|
760
|
+
for (let s = 0; s < o; ++s) {
|
|
845
761
|
const i = this.getU64Rand();
|
|
846
762
|
if (i >= r)
|
|
847
763
|
return i % t;
|
|
@@ -869,44 +785,48 @@ class A {
|
|
|
869
785
|
yield e === void 0 ? this.getU32Rand() : this.getBoundedU32Rand(e);
|
|
870
786
|
}
|
|
871
787
|
}
|
|
872
|
-
Object.defineProperty(
|
|
873
|
-
value:
|
|
788
|
+
Object.defineProperty(x.prototype, Symbol.toStringTag, {
|
|
789
|
+
value: x.name
|
|
874
790
|
});
|
|
875
791
|
export {
|
|
876
792
|
N as FloatRng,
|
|
877
|
-
|
|
793
|
+
U as NamedError,
|
|
878
794
|
R as PCGMinimal,
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
M as bailliePSW,
|
|
795
|
+
a as Rational,
|
|
796
|
+
x as XoshiroMinimal,
|
|
797
|
+
T as bailliePSW,
|
|
883
798
|
rt as compress,
|
|
884
|
-
|
|
799
|
+
gt as decodeLEB128,
|
|
885
800
|
et as decodeRFC3986URIComponent,
|
|
886
801
|
st as decompress,
|
|
887
|
-
|
|
802
|
+
dt as encodeLEB128,
|
|
888
803
|
nt as encodeRFC3986URIComponent,
|
|
889
|
-
|
|
804
|
+
_ as exEuclidean,
|
|
890
805
|
it as factorial,
|
|
891
|
-
|
|
806
|
+
D as fromBase64,
|
|
807
|
+
at as fromBase64Url,
|
|
808
|
+
ht as fromOct,
|
|
892
809
|
Q as getHash,
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
810
|
+
A as getRandBIByBitLength,
|
|
811
|
+
v as getRandBIByRange,
|
|
812
|
+
ft as getRandPrimeByBitLength,
|
|
896
813
|
ct as getRandPrimeByRange,
|
|
897
814
|
ot as getRndInt,
|
|
815
|
+
W as getStringTag,
|
|
898
816
|
g as isDeepStrictEqual,
|
|
899
817
|
tt as isNode,
|
|
900
818
|
O as isSquare,
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
819
|
+
B as jacobiSymbol,
|
|
820
|
+
Y as lazify,
|
|
821
|
+
p as modPow,
|
|
904
822
|
Z as parseCSV,
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
823
|
+
H as promiseWithResolvers,
|
|
824
|
+
m as residue,
|
|
825
|
+
P as rot32,
|
|
826
|
+
b as rot64,
|
|
827
|
+
X as sameValueZero,
|
|
828
|
+
J as sleep,
|
|
829
|
+
$ as toBase64,
|
|
830
|
+
lt as toBase64Url,
|
|
831
|
+
ut as toOct
|
|
912
832
|
};
|
package/dist/bundle.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
`&&!i?(e.push(r.trim()),t.push(e),e=[],r=""):r+=o}return e.push(r.trim()),t.push(e),t},D=async(n,t)=>{const e=y.encode(n),r=await crypto.subtle.digest(t,e);return new Uint8Array(r)},q=()=>!!globalThis.process&&typeof process.version<"u"&&typeof process.versions.node<"u",K=n=>encodeURIComponent(n).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),z=n=>{if(n.includes("+"))throw Error("An input string has '+'");return decodeURIComponent(n)},W=async(n,t)=>{const r=new Blob([n]).stream().pipeThrough(new CompressionStream(t));return new Response(r).bytes()},G=async(n,t)=>{const r=new Blob([n]).stream().pipeThrough(new DecompressionStream(t));return new Response(r).bytes()},J=(n,t)=>Math.floor(Math.random()*(t-n)+n),p=(n,t)=>{t<0n&&(t*=-1n);const e=n%t;return e<0n?e+t:e},w=(n,t=!1)=>{if(!Number.isFinite(n))throw Error("`length` is not a valid number");if(n<=0)throw Error("`length` must be positive");const e=Math.ceil(n/8),r=crypto.getRandomValues(new Uint8Array(e));let i=Array.from(r,s=>s.toString(2).padStart(8,"0")).join("").slice(0,n);return t&&(i=i.replace(/^\d/,"1")),BigInt("0b"+i)},T=(n,t)=>{if(n>=t)throw Error("rangeError");const e=t-n,r=e.toString(2).length,i=(()=>{for(let o=0;o<1e5;o++){const a=w(r);if(a>=b(2n,BigInt(r),e))return a%e}throw Error("Failed to generate a random bigint")})();return n+i},b=(n,t,e)=>{if(e<1n)throw Error("`mod` must be positive");if(t<0n)throw Error("`power` must not be negative");if(n=p(n,e),e===1n)return 0n;if(n%e===1n||n%e===0n)return n;if(n===e-1n)return t&1n?e-1n:1n;let r=1n;for(;t>0n;)t&1n&&(r=r*n%e),n=n*n%e,t>>=1n;return r},j=(n,t)=>{if(n===0n&&t===0n)return{x:0n,y:0n,gcd:0n};if(n===0n)return t>0n?{x:0n,y:-1n,gcd:t}:{x:0n,y:1n,gcd:-t};if(t===0n)return n>0n?{x:1n,y:0n,gcd:n}:{x:-1n,y:0n,gcd:-n};let[e,r,i]=[1n,0n,n],[s,o,a]=[0n,-1n,t];for(;;){const l=i/a,u=i-l*a;if(u===0n)break;[e,s]=[s,e-l*s],[r,o]=[o,r-l*o],[i,a]=[a,u]}return a<0n&&(s*=-1n,o*=-1n,a*=-1n),{x:s,y:o,gcd:a}},I=(n,t)=>{if(n>=t)return 1n;const e=BigInt((t-2n).toString(2).length),r=(t-n)/2n;if(e*r<63n){let a=n;for(let l=n+2n;l<t;l+=2n)a*=l;return a}const i=n+r|1n,s=I(n,i),o=I(i,t);return s*o},X=n=>{let t=3n,e=1n,r=1n;const i=BigInt(n.toString(2).length)-1n;for(let s=i-1n;s>-1n;--s){const o=(n>>s)+1n|1n;r*=I(t,o),t=o,e*=r}return e},H=n=>{if(n<0n)throw Error("'n' must be non-negative");if(n===0n)return 1n;const t=n-BigInt(n.toString(2).match(/1/g)?.length??0);return X(n)<<t},_=(n,t)=>(n>>>(t&31)|n<<(-t&31))>>>0,S=(n,t)=>BigInt.asUintN(64,n>>(t&63n)|n<<(-t&63n)),B=(n,t)=>{if(t<1n||t%2n===0n)throw Error("`n` is invalid");for(;n<0n;)n+=t;n%=t;let e=1n;for(;n!==0n;){for(;n%2n===0n;){n/=2n;const r=t%8n;(r===3n||r===5n)&&(e*=-1n)}[n,t]=[t,n],n%4n===3n&&t%4n===3n&&(e*=-1n),n%=t}return t===1n?e:0n},P=n=>{if(n<0n)return!1;if(n===0n)return!0;let t=1n,e=n;for(;t+1n<e;){const r=(t+e)/2n;r**2n<n?t=r:e=r}return n===t**2n||n===(t+1n)**2n},Y=n=>{if(n<=1n)return!1;if(n%2n===0n)return n===2n;let t=n-1n,e=0n;for(;t%2n===0n;)t>>=1n,e+=1n;const[r,i]=[t,e];let o=b(2n,r,n);if(o===1n)return!0;for(let a=0n;a<i;a++){if(o===n-1n)return!0;o=o*o%n}return!1},Z=n=>{let t=5n,e=B(t,n);for(;e>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&P(n))return[0n,0n];e=B(t,n)}return[t,e]},U=(n,t)=>(n&1n)===1n?p(n+t>>1n,t):p(n>>1n,t),Q=(n,t,e,r)=>{let i=1n,s=e;const o=n.toString(2).slice(1);for(const a of o)[i,s]=[p(i*s,t),U(s*s+r*i*i,t)],a==="1"&&([i,s]=[U(e*i+s,t),U(r*i+e*s,t)]);return[i,s]},tt=(n,t,e,r)=>{if(n%2n!==1n)throw Error("`n` must be odd");let i=n+1n,s=0n;for(;i%2n===0n;)i>>=1n,s+=1n;const[o,a]=Q(i,n,e,t);let l=a;if(o===0n)return!0;r=b(r,i,n);for(let u=0n;u<s;u++){if(l===0n)return!0;l=p(l*l-2n*r,n),r=b(r,2n,n)}return!1},E=n=>{if(n<=1n)return!1;if(n%2n===0n)return n===2n;const t=[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n];for(const s of t)if(n%s===0n)return n===s;if(!Y(n))return!1;const[e,r]=Z(n);if(r===0n)return!1;const i=(1n-e)/4n;return tt(n,e,1n,i)},nt=(n,t)=>{if(t<2n)throw Error("noPrimesFound");for(let r=0;r<1e5;r++){const i=T(n,t);if(E(i))return i}throw Error("noPrimesFound")},et=(n,t=!1)=>{if(n<2)throw Error("noPrimesFound");for(let r=0;r<1e5;r++){const i=w(n,t);if(E(i))return i}throw Error("noPrimesFound")};class f{#t;#n;static name="Rational";constructor(t,e){e===0n?(this.#n=0n,this.#t=t===0n?0n:t>0n?1n:-1n):e>0n?(this.#t=t,this.#n=e):(this.#t=-t,this.#n=-e),this.#e()}static fromDecimal(t,e=5){if(Number.isNaN(t))return new f(0n,0n);if(Math.abs(t)===1/0)return new f(t>0?1n:-1n,0n);const r=t<0;r&&(t*=-1);const i=BigInt(Math.floor(t)),s=t-Number(i);if(s===0)return new f(r?-i:i,1n);t=1/s;let[o,a]=[1n,i],[l,u]=[0n,1n];for(;`${u}`.length<e+1;){const h=BigInt(Math.floor(t)),d=t-Number(h);if([o,a]=[a,h*a+o],[l,u]=[u,h*u+l],d===0)return new f(r?-a:a,u);t=1/d}return new f(r?-o:o,l)}#e(){const{gcd:t}=j(this.#t,this.#n);t!==0n&&(this.#t/=t,this.#n/=t)}minus(){return new f(-this.#t,this.#n)}inverse(){return new f(this.#n,this.#t)}add(t){const e=this.#n*t.#n,r=this.#t*t.#n+t.#t*this.#n;return new f(r,e)}substr(t){return this.add(t.minus())}multiply(t){const e=this.#n*t.#n,r=this.#t*t.#t;return new f(r,e)}divide(t){return this.multiply(t.inverse())}mediant(t){const e=this.#n+t.#n,r=this.#t+t.#t;return new f(r,e)}toDecimal(){return Number(this.#t)/Number(this.#n)}toString(){return this.#t===0n&&this.#n===0n?"NaN":this.#t===0n?"0":this.#n===0n?this.#t<0n?"-Infinity":"Infinity":this.#n===1n?`${this.#t}`:`${this.#t}/${this.#n}`}valueOf(){return this.toDecimal()}toJSON(){return{type:"Rational",value:["0x"+this.#t.toString(16),"0x"+this.#n.toString(16)]}}static fromData(t){const e=BigInt(t.value[0]),r=BigInt(t.value[1]);return new f(e,r)}static parse(t){const r=/^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(t);if(!r)throw Error("cannot parse");const i=r.at(1),s=r.at(2);if(!i||!s)throw Error("cannot parse");return new f(BigInt(i),BigInt(s))}}Object.defineProperty(f.prototype,Symbol.toStringTag,{value:f.name});const rt=new TextEncoder,it=new TextDecoder,st=(n,t)=>{switch(t){case"utf-8":return rt.encode(n);case"base64":return Uint8Array.from(atob(n),e=>e.charCodeAt(0));case"base64url":{const e=n.length&3;return e>0&&(n=n+"=".repeat(4-e)),n=n.replaceAll("-","+").replaceAll("_","/"),Uint8Array.from(atob(n),r=>r.charCodeAt(0))}case"hex":{n.length&1&&(n="0"+n);const r=n.matchAll(/.{2}/g);return Uint8Array.from(r,i=>Number.parseInt(i[0],16))}case"oct":{const e=n.length&7;e&&(n="0".repeat(8-e)+n);const r=n.matchAll(/.{8}/g),s=Array.from(r,o=>{const a=o[0];return Number.parseInt(a,8).toString(16).padStart(6,"0")}).join("").matchAll(/.{2}/g);return Uint8Array.from(s,o=>Number.parseInt(o[0],16))}case"bin":{const e=n.length&7;e&&(n="0".repeat(8-e)+n);const r=n.matchAll(/.{8}/g),i=Array.from(r,s=>Number.parseInt(s[0],2));return Uint8Array.from(i)}default:throw Error(`Invalid encoding: ${t}`,{cause:t})}},ot=(n,t)=>{switch(t){case"utf-8":return it.decode(n);case"base64":{const e=Array.from(n,r=>String.fromCharCode(r)).join("");return btoa(e)}case"base64url":{const e=Array.from(n,i=>String.fromCharCode(i)).join("");return btoa(e).replaceAll("+","-").replaceAll("/","_").replace(/=+$/,"")}case"hex":return Array.from(n,r=>r.toString(16).padStart(2,"0")).join("").replace(/^0+/,"");case"oct":{let e=Array.from(n,o=>o.toString(16).padStart(2,"0")).join("");const r=e.length%6;r&&(e="0".repeat(6-r)+e);const i=e.matchAll(/.{6}/g);return Array.from(i,o=>Number.parseInt(o[0],16).toString(8).padStart(8,"0")).join("").replace(/^0+/,"")}case"bin":return Array.from(n,r=>r.toString(2).padStart(8,"0")).join("").replace(/^0+/,"");default:throw Error(`Invalid encoding: ${t}`,{cause:t})}},ct=n=>{const t=n<0n;t&&(n*=-1n);const e=n.toString(2).length,r=n===1n<<BigInt(e-1)&&!(e%7)&&t,i=Math.floor(e/7)+1;return r?i-1:i},at=n=>{const t=ct(n);n=BigInt.asUintN(t*7,n);const e=new Uint8Array(t);for(let i=0;i<t-1;++i){const s=Number(n&127n)|128;e[i]=s,n>>=7n}const r=Number(n&127n);return e[t-1]=r,n>>=7n,e},lt=n=>{const t=n.length;let e=0n;for(let r=0;r<t;++r){const i=BigInt(n[r]&127);e+=i<<BigInt(7*r)}return BigInt.asIntN(7*t,e)};class R{#t;#n;static name="Queue";constructor(...t){this.#t=t,this.#n=[]}enqueue(...t){return this.#t.push(...t),this.#t.length+this.#n.length}dequeue(){if(this.#n.length===0)for(;this.#t.length>0;){const t=this.#t.pop();this.#n.push(t)}return this.#n.pop()}toArray(){return this.#n.slice().reverse().concat(this.#t)}toJSON(){return this.toArray()}toString(){return this.toArray().toString()}}Object.defineProperty(R.prototype,Symbol.toStringTag,{value:R.name});class N extends Error{name;static name="NamedError";constructor(t,e,r){super(e,{cause:r}),this.name=t}toJSON(){const t=(()=>{const s=this.cause;return typeof s=="string"||typeof s=="number"||typeof s=="boolean"?s:typeof s=="bigint"?s.toString():typeof s=="object"&&s!==null?s instanceof Set||s instanceof Map?Object.fromEntries(s):s:void 0})(),{name:e,message:r,stack:i}=this;return{name:e,message:r,stack:i,cause:t}}}Object.defineProperty(N.prototype,Symbol.toStringTag,{value:N.name});const C=n=>{if(n===0)return 32;let t=0;for(;n>0&&!(n&1);)++t,n>>>=1;return t},F=n=>{if(n===0n)return 64n;let t=0n;for(;n>0n&&!(n&1n);)++t,n>>=1n;return BigInt.asUintN(64,t)};class A{#t;static name="FloatRng";constructor(t){this.#t=t}#n(){const r=(()=>{switch(this.#t.bits){case 32:return this.#t.getU32Rand()>>>0;case 64:{const h=this.#t.getU64Rand()&0xffffffffn;return Number(h)}}})(),i=r&255;let s=126;if(i===0){s-=8;const h=1e5;let d=0;t:for(;;){if(d>h)throw Error("loop exceeded limit");const g=(()=>{switch(this.#t.bits){case 32:return this.#t.getU32Rand()>>>0;case 64:{const L=BigInt.asUintN(32,this.#t.getU64Rand());return Number(L)}}})();if(g===0){if(s-=32,s<0){s=0;break t}}else{s-=C(g);break t}++d}}else s-=C(i);const o=r>>>8&8388607;o===0&&r>>>31&&++s;const{buffer:a,byteOffset:l,length:u}=Uint32Array.from([s<<23|o]);return new Float32Array(a,l,u)[0]}getF32Rand(){for(let e=0;e<1e5;++e){const r=this.#n();if(r<1)return r}throw Error("exceeded loop limit")}#e(){const t=0n,e=1023n,r=(()=>{switch(this.#t.bits){case 32:{const h=BigInt(this.#t.getU32Rand()>>>0),d=BigInt(this.#t.getU32Rand()>>>0);return h<<32n|d}case 64:return BigInt.asUintN(64,this.#t.getU64Rand())}})(),i=r&0x7ffn;let s=e-1n;if(i===0n){s-=11n;const h=1e5;let d=0;t:for(;;){if(d>h)throw Error("loop exceeded limit");const g=(()=>{switch(this.#t.bits){case 32:{const L=BigInt(this.#t.getU32Rand()>>>0),dt=BigInt(this.#t.getU32Rand()>>>0);return L<<32n|dt}case 64:return BigInt.asUintN(64,this.#t.getU64Rand())}})();if(g===0n){if(s-=64n,s<t){s=t;break t}}else{s-=F(g);break t}++d}}else s-=F(i);const o=BigInt.asUintN(52,r>>11n);o===0n&&r>>63n&&++s;const{buffer:a,byteOffset:l,length:u}=BigUint64Array.from([s<<52n|o]);return new Float64Array(a,l,u)[0]}getF64Rand(){for(let e=0;e<1e5;++e){const r=this.#e();if(r<1)return r}throw Error("exceeded loop limit")}}Object.defineProperty(A.prototype,Symbol.toStringTag,{value:A.name});const ut=[0x853c49e6748fea9bn,0xda3e39cb94b95bdbn],ft=0x5851f42d4c957f2dn;class v{#t;static name="PCGMinimal";bits=32;constructor(t){t&&t.length>=2?(this.#t=new BigUint64Array(2),this.#t[1]=t[1]<<1n|1n,this.#n(),this.#t[0]+=t[0],this.#n()):this.#t=BigUint64Array.from(ut)}#n(){this.#t[0]=this.#t[0]*ft+this.#t[1]}get#e(){const t=this.#t[0],e=Number(t>>59n),r=Number(BigInt.asUintN(32,(t^t>>18n)>>27n));return _(r,e)}getU32Rand(){return this.#n(),this.#e}getBoundedU32Rand(t){if(t>4294967296)throw Error("`bound` exceeded limit (2^32)");if(t<=0)throw Error("'bound' must be positive");const r=4294967296%t,i=1e5;for(let s=0;s<i;++s){const o=this.getU32Rand();if(o>=r)return o%t}throw Error("exceeded loop limit")}*genU32Rands(t,e){if(t<=0)throw Error("'step' must be positive");for(let r=0;r<t;r++)yield typeof e=="number"?this.getBoundedU32Rand(e):this.getU32Rand()}}Object.defineProperty(v.prototype,Symbol.toStringTag,{value:v.name});const ht=[0xbe562cb412e2260en,0x2e4284137d641affn,0x4e19b36ee933e27en,0x7581cf8c4f4d4f7dn];class M{bits=64;#t;static name="XoshiroMinimal";constructor(t){t&&t.length>=4?(this.#t=new BigUint64Array(4),this.#t[0]=t[0],this.#t[1]=t[1],this.#n(),this.#t[2]+=t[2],this.#t[3]+=t[3]):this.#t=BigUint64Array.from(ht)}#n(){const t=this.#t[1]<<17n;this.#t[2]^=this.#t[0],this.#t[3]^=this.#t[1],this.#t[1]^=this.#t[2],this.#t[0]^=this.#t[3],this.#t[2]^=t,this.#t[3]=S(this.#t[3],45n)}get value(){return S(this.#t[0]+this.#t[3],23n)+this.#t[0]}getU64Rand(){const t=this.value;return this.#n(),t}getU32Rand(){const t=BigInt.asUintN(32,this.getU64Rand());return Number(t)}getBoundedU64Rand(t){const e=1n<<64n;if(t>e)throw Error("'bound' exceeded limit");if(t<=0n)throw Error("'bound' must be positive");const r=e%t,i=1e5;for(let s=0;s<i;++s){const o=this.getU64Rand();if(o>=r)return o%t}throw Error("exceeded loop limit")}getBoundedU32Rand(t){if(t>4294967296)throw Error("'bound' exceeded limit");if(t<=0n)throw Error("'bound' must be positive");const r=this.getBoundedU64Rand(BigInt(t));return Number(r)}*genU64Rands(t,e){if(t<=0)throw Error("'step' must be positive");for(let r=0;r<t;++r)yield e===void 0?this.getU64Rand():this.getBoundedU64Rand(e)}*genU32Rands(t,e){if(t<=0)throw Error("'step' must be positive");for(let r=0;r<t;++r)yield e===void 0?this.getU32Rand():this.getBoundedU32Rand(e)}}Object.defineProperty(M.prototype,Symbol.toStringTag,{value:M.name}),c.FloatRng=A,c.NamedError=N,c.PCGMinimal=v,c.Queue=R,c.Rational=f,c.XoshiroMinimal=M,c.bailliePSW=E,c.compress=W,c.decodeLEB128=lt,c.decodeRFC3986URIComponent=z,c.decompress=G,c.encodeLEB128=at,c.encodeRFC3986URIComponent=K,c.exEuclidean=j,c.factorial=H,c.fromString=st,c.getHash=D,c.getRandBIByBitLength=w,c.getRandBIByRange=T,c.getRandPrimeByBitLength=et,c.getRandPrimeByRange=nt,c.getRndInt=J,c.isDeepStrictEqual=m,c.isNode=q,c.isSquare=P,c.jacobiSymbol=B,c.lazify=$,c.modPow=b,c.parseCSV=k,c.promiseWithResolvers=x,c.residue=p,c.rot32=_,c.rot64=S,c.sameValueZero=O,c.sleep=V,c.toString=ot,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
var UtilFns=(function(c){"use strict";const F=new TextEncoder,V=(n,t)=>[n].includes(t),m=(n,t)=>{if(typeof n!=typeof t)return!1;const e=Object.prototype.toString.call(n),r=Object.prototype.toString.call(t);if(e!==r)return!1;if(typeof n=="string"||typeof n=="bigint"||typeof n=="boolean"||typeof n=="symbol"||n==null)return n===t;if(typeof n=="number")return n!==n&&t!==t||n===t;if(typeof n=="function")return!1;if(Array.isArray(n)&&Array.isArray(t)){if(n.length!==t.length)return!1;for(let i=0;i<n.length;i++)if(!m(n[i],t[i]))return!1;return!0}if(n instanceof Set&&t instanceof Set){const i=[...n.values()],s=[...t.values()];return!!m(i,s)}if(n instanceof Map&&t instanceof Map){const i=[...n.keys()],s=[...t.keys()];if(!m(i,s))return!1;const o=[...n.values()],a=[...t.values()];return!!m(o,a)}if(e==="[object Object]"){const i=n,s=t,o=Object.keys(i),a=Object.keys(s);for(const l of o){const f=a.find(g=>g===l);if(f===void 0)return!1;const[h,d]=[i[l],s[f]];if(!m(h,d))return!1}return!0}throw Error(`comparing these objects is unavailable: ${n}, ${t}`,{cause:[n,t]})},k=()=>{let n,t;return{promise:new Promise((r,i)=>{n=r,t=i}),resolve:n,reject:t}},$=n=>new Promise(t=>{setTimeout(()=>t(),n)}),D=n=>Object.prototype.toString.call(n).match(/^\[Object\s(.+)\]$/)?.at(1),q=n=>(...t)=>()=>n(...t),K=n=>{const t=[];let e=[],r="",i=!1;for(let s=0;s<n.length;s++){const o=n[s];o==='"'&&(s===0||n[s-1]!=="\\")?i=!i:o===","&&!i?(e.push(r.trim()),r=""):o===`
|
|
2
|
+
`&&!i?(e.push(r.trim()),t.push(e),e=[],r=""):r+=o}return e.push(r.trim()),t.push(e),t},G=async(n,t)=>{const e=F.encode(n),r=await crypto.subtle.digest(t,e);return new Uint8Array(r)},z=()=>!!globalThis.process&&typeof process.version<"u"&&typeof process.versions.node<"u",W=n=>encodeURIComponent(n).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),X=n=>{if(n.includes("+"))throw Error("An input string has '+'");return decodeURIComponent(n)},H=async(n,t)=>{const r=new Blob([n]).stream().pipeThrough(new CompressionStream(t));return new Response(r).bytes()},J=async(n,t)=>{const r=new Blob([n]).stream().pipeThrough(new DecompressionStream(t));return new Response(r).bytes()},Y=(n,t)=>Math.floor(Math.random()*(t-n)+n),y=(n,t)=>{t<0n&&(t*=-1n);const e=n%t;return e<0n?e+t:e},I=(n,t=!1)=>{if(!Number.isFinite(n))throw Error("`length` is not a valid number");if(n<=0)throw Error("`length` must be positive");const e=Math.ceil(n/8),r=crypto.getRandomValues(new Uint8Array(e));let i=Array.from(r,s=>s.toString(2).padStart(8,"0")).join("").slice(0,n);return t&&(i=i.replace(/^\d/,"1")),BigInt("0b"+i)},T=(n,t)=>{if(n>=t)throw Error("rangeError");const e=t-n,r=e.toString(2).length,i=(()=>{for(let o=0;o<1e5;o++){const a=I(r);if(a>=p(2n,BigInt(r),e))return a%e}throw Error("Failed to generate a random bigint")})();return n+i},p=(n,t,e)=>{if(e<1n)throw Error("`mod` must be positive");if(t<0n)throw Error("`power` must not be negative");if(n=y(n,e),e===1n)return 0n;if(n%e===1n||n%e===0n)return n;if(n===e-1n)return t&1n?e-1n:1n;let r=1n;for(;t>0n;)t&1n&&(r=r*n%e),n=n*n%e,t>>=1n;return r},A=(n,t)=>{if(n===0n&&t===0n)return{x:0n,y:0n,gcd:0n};if(n===0n)return t>0n?{x:0n,y:-1n,gcd:t}:{x:0n,y:1n,gcd:-t};if(t===0n)return n>0n?{x:1n,y:0n,gcd:n}:{x:-1n,y:0n,gcd:-n};let[e,r,i]=[1n,0n,n],[s,o,a]=[0n,-1n,t];for(;;){const l=i/a,f=i-l*a;if(f===0n)break;[e,s]=[s,e-l*s],[r,o]=[o,r-l*o],[i,a]=[a,f]}return a<0n&&(s*=-1n,o*=-1n,a*=-1n),{x:s,y:o,gcd:a}},w=(n,t)=>{if(n>=t)return 1n;const e=BigInt((t-2n).toString(2).length),r=(t-n)/2n;if(e*r<63n){let a=n;for(let l=n+2n;l<t;l+=2n)a*=l;return a}const i=n+r|1n,s=w(n,i),o=w(i,t);return s*o},Z=n=>{let t=3n,e=1n,r=1n;const i=BigInt(n.toString(2).length)-1n;for(let s=i-1n;s>-1n;--s){const o=(n>>s)+1n|1n;r*=w(t,o),t=o,e*=r}return e},x=n=>{if(n<0n)throw Error("'n' must be non-negative");if(n===0n)return 1n;const t=n-BigInt(n.toString(2).match(/1/g)?.length??0);return Z(n)<<t},v=(n,t)=>(n>>>(t&31)|n<<(-t&31))>>>0,b=(n,t)=>BigInt.asUintN(64,n>>(t&63n)|n<<(-t&63n)),B=(n,t)=>{if(t<1n||t%2n===0n)throw Error("`n` is invalid");for(;n<0n;)n+=t;n%=t;let e=1n;for(;n!==0n;){for(;n%2n===0n;){n/=2n;const r=t%8n;(r===3n||r===5n)&&(e*=-1n)}[n,t]=[t,n],n%4n===3n&&t%4n===3n&&(e*=-1n),n%=t}return t===1n?e:0n},P=n=>{if(n<0n)return!1;if(n===0n)return!0;let t=1n,e=n;for(;t+1n<e;){const r=(t+e)/2n;r**2n<n?t=r:e=r}return n===t**2n||n===(t+1n)**2n},Q=n=>{if(n<=1n)return!1;if(n%2n===0n)return n===2n;let t=n-1n,e=0n;for(;t%2n===0n;)t>>=1n,e+=1n;const[r,i]=[t,e];let o=p(2n,r,n);if(o===1n)return!0;for(let a=0n;a<i;a++){if(o===n-1n)return!0;o=o*o%n}return!1},tt=n=>{let t=5n,e=B(t,n);for(;e>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&P(n))return[0n,0n];e=B(t,n)}return[t,e]},U=(n,t)=>(n&1n)===1n?y(n+t>>1n,t):y(n>>1n,t),nt=(n,t,e,r)=>{let i=1n,s=e;const o=n.toString(2).slice(1);for(const a of o)[i,s]=[y(i*s,t),U(s*s+r*i*i,t)],a==="1"&&([i,s]=[U(e*i+s,t),U(r*i+e*s,t)]);return[i,s]},et=(n,t,e,r)=>{if(n%2n!==1n)throw Error("`n` must be odd");let i=n+1n,s=0n;for(;i%2n===0n;)i>>=1n,s+=1n;const[o,a]=nt(i,n,e,t);let l=a;if(o===0n)return!0;r=p(r,i,n);for(let f=0n;f<s;f++){if(l===0n)return!0;l=y(l*l-2n*r,n),r=p(r,2n,n)}return!1},E=n=>{if(n<=1n)return!1;if(n%2n===0n)return n===2n;const t=[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n];for(const s of t)if(n%s===0n)return n===s;if(!Q(n))return!1;const[e,r]=tt(n);if(r===0n)return!1;const i=(1n-e)/4n;return et(n,e,1n,i)},rt=(n,t)=>{if(t<2n)throw Error("noPrimesFound");for(let r=0;r<1e5;r++){const i=T(n,t);if(E(i))return i}throw Error("noPrimesFound")},st=(n,t=!1)=>{if(n<2)throw Error("noPrimesFound");for(let r=0;r<1e5;r++){const i=I(n,t);if(E(i))return i}throw Error("noPrimesFound")};class u{#t;#n;static name="Rational";constructor(t,e){e===0n?(this.#n=0n,this.#t=t===0n?0n:t>0n?1n:-1n):e>0n?(this.#t=t,this.#n=e):(this.#t=-t,this.#n=-e),this.#e()}static fromDecimal(t,e=5){if(Number.isNaN(t))return new u(0n,0n);if(Math.abs(t)===1/0)return new u(t>0?1n:-1n,0n);const r=t<0;r&&(t*=-1);const i=BigInt(Math.floor(t)),s=t-Number(i);if(s===0)return new u(r?-i:i,1n);t=1/s;let[o,a]=[1n,i],[l,f]=[0n,1n];for(;`${f}`.length<e+1;){const h=BigInt(Math.floor(t)),d=t-Number(h);if([o,a]=[a,h*a+o],[l,f]=[f,h*f+l],d===0)return new u(r?-a:a,f);t=1/d}return new u(r?-o:o,l)}#e(){const{gcd:t}=A(this.#t,this.#n);t!==0n&&(this.#t/=t,this.#n/=t)}minus(){return new u(-this.#t,this.#n)}inverse(){return new u(this.#n,this.#t)}add(t){const e=this.#n*t.#n,r=this.#t*t.#n+t.#t*this.#n;return new u(r,e)}substr(t){return this.add(t.minus())}multiply(t){const e=this.#n*t.#n,r=this.#t*t.#t;return new u(r,e)}divide(t){return this.multiply(t.inverse())}mediant(t){const e=this.#n+t.#n,r=this.#t+t.#t;return new u(r,e)}toDecimal(){return Number(this.#t)/Number(this.#n)}toString(){return this.#t===0n&&this.#n===0n?"NaN":this.#t===0n?"0":this.#n===0n?this.#t<0n?"-Infinity":"Infinity":this.#n===1n?`${this.#t}`:`${this.#t}/${this.#n}`}valueOf(){return this.toDecimal()}toJSON(){return{type:"Rational",value:["0x"+this.#t.toString(16),"0x"+this.#n.toString(16)]}}static fromData(t){const e=BigInt(t.value[0]),r=BigInt(t.value[1]);return new u(e,r)}static parse(t){const r=/^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(t);if(!r)throw Error("cannot parse");const i=r.at(1),s=r.at(2);if(!i||!s)throw Error("cannot parse");return new u(BigInt(i),BigInt(s))}}Object.defineProperty(u.prototype,Symbol.toStringTag,{value:u.name});const j=n=>{const t=Array.from(n,e=>String.fromCharCode(e));return btoa(t.join(""))},C=n=>{const t=atob(n);return Uint8Array.from(t,e=>e.charCodeAt(0))},it=n=>j(n).replaceAll("+","-").replaceAll("/","_").replace(/=+$/,""),ot=n=>{const t=n.length&3;t>0&&(n=n+"=".repeat(4-t));const e=n.replaceAll("-","+").replaceAll("_","/");return C(e)},ct=n=>{let t=Array.from(n,s=>s.toString(16).padStart(2,"0")).join("");const e=t.length%6;e&&(t="0".repeat(6-e)+t);const r=t.matchAll(/.{6}/g);return Array.from(r,s=>Number.parseInt(s[0],16).toString(8).padStart(8,"0")).join("").replace(/^0+/,"")},at=n=>{const t=n.length&7;t&&(n="0".repeat(8-t)+n);const e=n.matchAll(/.{8}/g),i=Array.from(e,s=>{const o=s[0];return Number.parseInt(o,8).toString(16).padStart(6,"0")}).join("").matchAll(/.{2}/g);return Uint8Array.from(i,s=>Number.parseInt(s[0],16))},lt=n=>{const t=n<0n;t&&(n*=-1n);const e=n.toString(2).length,r=n===1n<<BigInt(e-1)&&!(e%7)&&t,i=Math.floor(e/7)+1;return r?i-1:i},ft=n=>{const t=lt(n);n=BigInt.asUintN(t*7,n);const e=new Uint8Array(t);for(let i=0;i<t-1;++i){const s=Number(n&127n)|128;e[i]=s,n>>=7n}const r=Number(n&127n);return e[t-1]=r,n>>=7n,e},ut=n=>{const t=n.length;let e=0n;for(let r=0;r<t;++r){const i=BigInt(n[r]&127);e+=i<<BigInt(7*r)}return BigInt.asIntN(7*t,e)};class S extends Error{constructor(t,e,r){super(e,{cause:r}),this.errName=t}static name="NamedError";toJSON(){const t=(()=>{const s=this.cause;return typeof s=="string"||typeof s=="number"||typeof s=="boolean"?s:typeof s=="bigint"?s.toString():typeof s=="object"&&s!==null?s instanceof Set||s instanceof Map?Object.fromEntries(s):s:void 0})(),{errName:e,message:r,stack:i}=this;return{errName:e,message:r,stack:i,cause:t}}}Object.defineProperty(S.prototype,Symbol.toStringTag,{value:S.name});const O=n=>{if(n===0)return 32;let t=0;for(;n>0&&!(n&1);)++t,n>>>=1;return t},_=n=>{if(n===0n)return 64n;let t=0n;for(;n>0n&&!(n&1n);)++t,n>>=1n;return BigInt.asUintN(64,t)};class R{#t;static name="FloatRng";constructor(t){this.#t=t}#n(){const r=(()=>{switch(this.#t.bits){case 32:return this.#t.getU32Rand()>>>0;case 64:{const h=this.#t.getU64Rand()&0xffffffffn;return Number(h)}}})(),i=r&255;let s=126;if(i===0){s-=8;const h=1e5;let d=0;t:for(;;){if(d>h)throw Error("loop exceeded limit");const g=(()=>{switch(this.#t.bits){case 32:return this.#t.getU32Rand()>>>0;case 64:{const M=BigInt.asUintN(32,this.#t.getU64Rand());return Number(M)}}})();if(g===0){if(s-=32,s<0){s=0;break t}}else{s-=O(g);break t}++d}}else s-=O(i);const o=r>>>8&8388607;o===0&&r>>>31&&++s;const{buffer:a,byteOffset:l,length:f}=Uint32Array.from([s<<23|o]);return new Float32Array(a,l,f)[0]}getF32Rand(){for(let e=0;e<1e5;++e){const r=this.#n();if(r<1)return r}throw Error("exceeded loop limit")}#e(){const t=0n,e=1023n,r=(()=>{switch(this.#t.bits){case 32:{const h=BigInt(this.#t.getU32Rand()>>>0),d=BigInt(this.#t.getU32Rand()>>>0);return h<<32n|d}case 64:return BigInt.asUintN(64,this.#t.getU64Rand())}})(),i=r&0x7ffn;let s=e-1n;if(i===0n){s-=11n;const h=1e5;let d=0;t:for(;;){if(d>h)throw Error("loop exceeded limit");const g=(()=>{switch(this.#t.bits){case 32:{const M=BigInt(this.#t.getU32Rand()>>>0),mt=BigInt(this.#t.getU32Rand()>>>0);return M<<32n|mt}case 64:return BigInt.asUintN(64,this.#t.getU64Rand())}})();if(g===0n){if(s-=64n,s<t){s=t;break t}}else{s-=_(g);break t}++d}}else s-=_(i);const o=BigInt.asUintN(52,r>>11n);o===0n&&r>>63n&&++s;const{buffer:a,byteOffset:l,length:f}=BigUint64Array.from([s<<52n|o]);return new Float64Array(a,l,f)[0]}getF64Rand(){for(let e=0;e<1e5;++e){const r=this.#e();if(r<1)return r}throw Error("exceeded loop limit")}}Object.defineProperty(R.prototype,Symbol.toStringTag,{value:R.name});const ht=[0x853c49e6748fea9bn,0xda3e39cb94b95bdbn],dt=0x5851f42d4c957f2dn;class N{#t;static name="PCGMinimal";bits=32;constructor(t){t&&t.length>=2?(this.#t=new BigUint64Array(2),this.#t[1]=t[1]<<1n|1n,this.#n(),this.#t[0]+=t[0],this.#n()):this.#t=BigUint64Array.from(ht)}#n(){this.#t[0]=this.#t[0]*dt+this.#t[1]}get#e(){const t=this.#t[0],e=Number(t>>59n),r=Number(BigInt.asUintN(32,(t^t>>18n)>>27n));return v(r,e)}getU32Rand(){return this.#n(),this.#e}getBoundedU32Rand(t){if(t>4294967296)throw Error("`bound` exceeded limit (2^32)");if(t<=0)throw Error("'bound' must be positive");const r=4294967296%t,i=1e5;for(let s=0;s<i;++s){const o=this.getU32Rand();if(o>=r)return o%t}throw Error("exceeded loop limit")}*genU32Rands(t,e){if(t<=0)throw Error("'step' must be positive");for(let r=0;r<t;r++)yield typeof e=="number"?this.getBoundedU32Rand(e):this.getU32Rand()}}Object.defineProperty(N.prototype,Symbol.toStringTag,{value:N.name});const gt=[0xbe562cb412e2260en,0x2e4284137d641affn,0x4e19b36ee933e27en,0x7581cf8c4f4d4f7dn];class L{bits=64;#t;static name="XoshiroMinimal";constructor(t){t&&t.length>=4?(this.#t=new BigUint64Array(4),this.#t[0]=t[0],this.#t[1]=t[1],this.#n(),this.#t[2]+=t[2],this.#t[3]+=t[3]):this.#t=BigUint64Array.from(gt)}#n(){const t=this.#t[1]<<17n;this.#t[2]^=this.#t[0],this.#t[3]^=this.#t[1],this.#t[1]^=this.#t[2],this.#t[0]^=this.#t[3],this.#t[2]^=t,this.#t[3]=b(this.#t[3],45n)}get value(){const t=b(this.#t[0]+this.#t[3],23n)+this.#t[0];return BigInt.asUintN(64,t)}getU64Rand(){const t=this.value;return this.#n(),t}getU32Rand(){const t=BigInt.asUintN(32,this.getU64Rand());return Number(t)}getBoundedU64Rand(t){const e=1n<<64n;if(t>e)throw Error("'bound' exceeded limit");if(t<=0n)throw Error("'bound' must be positive");const r=e%t,i=1e5;for(let s=0;s<i;++s){const o=this.getU64Rand();if(o>=r)return o%t}throw Error("exceeded loop limit")}getBoundedU32Rand(t){if(t>4294967296)throw Error("'bound' exceeded limit");if(t<=0n)throw Error("'bound' must be positive");const r=this.getBoundedU64Rand(BigInt(t));return Number(r)}*genU64Rands(t,e){if(t<=0)throw Error("'step' must be positive");for(let r=0;r<t;++r)yield e===void 0?this.getU64Rand():this.getBoundedU64Rand(e)}*genU32Rands(t,e){if(t<=0)throw Error("'step' must be positive");for(let r=0;r<t;++r)yield e===void 0?this.getU32Rand():this.getBoundedU32Rand(e)}}return Object.defineProperty(L.prototype,Symbol.toStringTag,{value:L.name}),c.FloatRng=R,c.NamedError=S,c.PCGMinimal=N,c.Rational=u,c.XoshiroMinimal=L,c.bailliePSW=E,c.compress=H,c.decodeLEB128=ut,c.decodeRFC3986URIComponent=X,c.decompress=J,c.encodeLEB128=ft,c.encodeRFC3986URIComponent=W,c.exEuclidean=A,c.factorial=x,c.fromBase64=C,c.fromBase64Url=ot,c.fromOct=at,c.getHash=G,c.getRandBIByBitLength=I,c.getRandBIByRange=T,c.getRandPrimeByBitLength=st,c.getRandPrimeByRange=rt,c.getRndInt=Y,c.getStringTag=D,c.isDeepStrictEqual=m,c.isNode=z,c.isSquare=P,c.jacobiSymbol=B,c.lazify=q,c.modPow=p,c.parseCSV=K,c.promiseWithResolvers=k,c.residue=y,c.rot32=v,c.rot64=b,c.sameValueZero=V,c.sleep=$,c.toBase64=j,c.toBase64Url=it,c.toOct=ct,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c})({});
|
package/dist/main.d.ts
CHANGED
package/dist/named-error.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ interface NamedError<EName extends string> {
|
|
|
4
4
|
readonly cause?: unknown;
|
|
5
5
|
}
|
|
6
6
|
declare class NamedError<EName extends string> extends Error {
|
|
7
|
-
readonly
|
|
7
|
+
readonly errName: EName;
|
|
8
8
|
static readonly name = "NamedError";
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(errName: EName, message: string, cause?: unknown);
|
|
10
10
|
toJSON(): {
|
|
11
|
-
|
|
11
|
+
errName: EName;
|
|
12
12
|
message: string;
|
|
13
13
|
stack: string | undefined;
|
|
14
14
|
cause: string | number | boolean | object | undefined;
|
package/dist/u8arr-ext.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
1
|
+
export declare const toBase64: (bin: Uint8Array) => string;
|
|
2
|
+
export declare const fromBase64: (base64: string) => Uint8Array<ArrayBuffer>;
|
|
3
|
+
export declare const toBase64Url: (bin: Uint8Array) => string;
|
|
4
|
+
export declare const fromBase64Url: (base64Url: string) => Uint8Array<ArrayBuffer>;
|
|
5
|
+
export declare const toOct: (bin: Uint8Array) => string;
|
|
6
|
+
export declare const fromOct: (oct: string) => Uint8Array<ArrayBuffer>;
|
|
4
7
|
export declare const encodeLEB128: (bigint: bigint) => Uint8Array<ArrayBuffer>;
|
|
5
8
|
export declare const decodeLEB128: (leb128: Uint8Array<ArrayBuffer>) => bigint;
|
package/dist/util.d.ts
CHANGED
|
@@ -25,6 +25,12 @@ export declare const promiseWithResolvers: <T>() => {
|
|
|
25
25
|
* @returns
|
|
26
26
|
*/
|
|
27
27
|
export declare const sleep: (delay: number) => Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* get a value of `Symbol.toStringTag`
|
|
30
|
+
* @param obj
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export declare const getStringTag: (obj: unknown) => string | undefined;
|
|
28
34
|
/**
|
|
29
35
|
* makes a function lazy
|
|
30
36
|
* @param func function
|
|
@@ -19,7 +19,7 @@ export declare class XoshiroMinimal implements RandomGenerator64 {
|
|
|
19
19
|
*
|
|
20
20
|
* // you should construct with random seeds.
|
|
21
21
|
* const seed = crypto.getRandomValues(new BigUint64Array(4));
|
|
22
|
-
* const betterRng = new
|
|
22
|
+
* const betterRng = new XoshiroMinimal(seed);
|
|
23
23
|
*/
|
|
24
24
|
constructor(seed?: BigUint64Array<ArrayBuffer>);
|
|
25
25
|
get value(): bigint;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tktb-tess/util-fns",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "Utility functions for personal use",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://github.com/tktb-tess/util-fns/blob/main/README.md",
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@types/node": "^24.
|
|
30
|
-
"tsx": "^4.
|
|
29
|
+
"@types/node": "^24.10.2",
|
|
30
|
+
"tsx": "^4.21.0",
|
|
31
31
|
"typescript": "^5.9.3",
|
|
32
|
-
"vite": "^7.
|
|
32
|
+
"vite": "^7.2.7",
|
|
33
33
|
"vite-plugin-dts": "^4.5.4",
|
|
34
|
-
"vitest": "^
|
|
34
|
+
"vitest": "^4.0.15"
|
|
35
35
|
},
|
|
36
36
|
"volta": {
|
|
37
37
|
"node": "22.21.0"
|
package/dist/queue.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare class Queue<T> {
|
|
2
|
-
#private;
|
|
3
|
-
static readonly name = "Queue";
|
|
4
|
-
/**
|
|
5
|
-
* Queue
|
|
6
|
-
* @param data
|
|
7
|
-
*/
|
|
8
|
-
constructor(...data: T[]);
|
|
9
|
-
/**
|
|
10
|
-
* enqueue data
|
|
11
|
-
* @param data
|
|
12
|
-
* @returns current queue length
|
|
13
|
-
*/
|
|
14
|
-
enqueue(...data: T[]): number;
|
|
15
|
-
/**
|
|
16
|
-
* dequeue data
|
|
17
|
-
* @returns data in the head
|
|
18
|
-
*/
|
|
19
|
-
dequeue(): T | undefined;
|
|
20
|
-
toArray(): T[];
|
|
21
|
-
toJSON(): T[];
|
|
22
|
-
toString(): string;
|
|
23
|
-
}
|