@tktb-tess/util-fns 0.12.5 → 0.13.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.
Files changed (36) hide show
  1. package/dist/{async_worker.d.ts → esm/async_worker.d.ts} +4 -15
  2. package/dist/esm/async_worker.js +45 -0
  3. package/dist/esm/baillie_psw-DzyqB4sZ.js +164 -0
  4. package/dist/esm/baillie_psw.js +3 -0
  5. package/dist/esm/bpsw_worker-CZOWXQMI.js +16 -0
  6. package/dist/esm/bpsw_worker_wrap.d.ts +2 -0
  7. package/dist/esm/fraction.js +66 -0
  8. package/dist/esm/index.js +12 -0
  9. package/dist/esm/leb128.js +23 -0
  10. package/dist/esm/math.js +120 -0
  11. package/dist/esm/named_error.js +25 -0
  12. package/dist/esm/pcg_minimal.js +40 -0
  13. package/dist/esm/random.js +32 -0
  14. package/dist/esm/u8arr_ext.js +19 -0
  15. package/dist/{util.d.ts → esm/util.d.ts} +1 -0
  16. package/dist/esm/util.js +89 -0
  17. package/dist/esm/xoshiro_minimal.js +64 -0
  18. package/dist/iife/bundle.min.js +2 -0
  19. package/package.json +53 -10
  20. package/dist/async_worker-Dj5tyPOJ.js +0 -39
  21. package/dist/bpsw_worker_wrap-3QPQWi5E.js +0 -20
  22. package/dist/bpsw_worker_wrap.d.ts +0 -2
  23. package/dist/bundle.js +0 -597
  24. package/dist/bundle.min.js +0 -2
  25. package/dist/types.d.ts +0 -0
  26. /package/dist/{baillie_psw.d.ts → esm/baillie_psw.d.ts} +0 -0
  27. /package/dist/{bpsw_worker.d.ts → esm/bpsw_worker.d.ts} +0 -0
  28. /package/dist/{fraction.d.ts → esm/fraction.d.ts} +0 -0
  29. /package/dist/{main.d.ts → esm/index.d.ts} +0 -0
  30. /package/dist/{leb128.d.ts → esm/leb128.d.ts} +0 -0
  31. /package/dist/{math.d.ts → esm/math.d.ts} +0 -0
  32. /package/dist/{named_error.d.ts → esm/named_error.d.ts} +0 -0
  33. /package/dist/{pcg_minimal.d.ts → esm/pcg_minimal.d.ts} +0 -0
  34. /package/dist/{random.d.ts → esm/random.d.ts} +0 -0
  35. /package/dist/{u8arr_ext.d.ts → esm/u8arr_ext.d.ts} +0 -0
  36. /package/dist/{xoshiro_minimal.d.ts → esm/xoshiro_minimal.d.ts} +0 -0
@@ -1,25 +1,14 @@
1
1
  declare const __ID_BRAND__: unique symbol;
2
- type ID = ReturnType<typeof crypto.randomUUID> & {
2
+ type ID = bigint & {
3
3
  readonly [__ID_BRAND__]: unknown;
4
4
  };
5
5
  export interface WorkerMessage<T> {
6
6
  readonly value: T;
7
7
  readonly id: ID;
8
8
  }
9
- interface WorkerResultBase {
10
- readonly id: ID;
11
- }
12
- interface WorkerSucceededResult<T> extends WorkerResultBase {
13
- readonly success: true;
14
- readonly value: T;
15
- }
16
- interface WorkerFailedResult extends WorkerResultBase {
17
- readonly success: false;
18
- readonly error: unknown;
19
- }
20
- export type WorkerResult<T> = WorkerSucceededResult<T> | WorkerFailedResult;
21
- export declare class AsyncWorker<TPost = unknown, TRecv = unknown> {
9
+ export declare class AsyncWorker<TPost = unknown, TRecv = unknown, TErr = unknown> {
22
10
  #private;
11
+ static readonly name = "AsyncWorker";
23
12
  constructor(w: Worker);
24
13
  /**
25
14
  * sends a message to the worker, and returns promise resolved by message from worker
@@ -29,5 +18,5 @@ export declare class AsyncWorker<TPost = unknown, TRecv = unknown> {
29
18
  readonly postMessage: (message: TPost, options?: StructuredSerializeOptions) => Promise<TRecv>;
30
19
  }
31
20
  export declare const postSuccess: <TRecv>(value: TRecv, id: ID) => void;
32
- export declare const postFailed: (error: unknown, id: ID) => void;
21
+ export declare const postFailed: <TErr>(error: TErr, id: ID) => void;
33
22
  export {};
@@ -0,0 +1,45 @@
1
+ //#region lib/async_worker.ts
2
+ var e = "AsyncWorker", t = 0n, n = () => (t === 2n ** 128n && (t = 0n), t++), r = class {
3
+ static name = e;
4
+ #e;
5
+ constructor(e) {
6
+ this.#e = e;
7
+ }
8
+ postMessage = (e, t) => new Promise((r, i) => {
9
+ let a = n(), o = (e) => {
10
+ let t = e.data;
11
+ t.id === a && (this.#e.removeEventListener("message", o), this.#e.removeEventListener("error", s), t.success ? r(t.value) : i(t.error));
12
+ }, s = (e) => {
13
+ this.#e.removeEventListener("message", o), this.#e.removeEventListener("error", s), i(e.error);
14
+ };
15
+ this.#e.addEventListener("message", o), this.#e.addEventListener("error", s);
16
+ let c = {
17
+ value: e,
18
+ id: a
19
+ };
20
+ this.#e.postMessage(c, t);
21
+ });
22
+ };
23
+ Object.defineProperty(r.prototype, Symbol.toStringTag, {
24
+ value: e,
25
+ enumerable: !0
26
+ });
27
+ var i = () => typeof window > "u" && typeof self < "u" && "importScripts" in self, a = (e, t) => {
28
+ if (!i()) throw Error("this function must be used in Worker");
29
+ let n = {
30
+ success: !0,
31
+ value: e,
32
+ id: t
33
+ };
34
+ self.postMessage(n);
35
+ }, o = (e, t) => {
36
+ if (!i()) throw Error("this function must be used in Worker");
37
+ let n = {
38
+ success: !1,
39
+ error: e,
40
+ id: t
41
+ };
42
+ self.postMessage(n);
43
+ };
44
+ //#endregion
45
+ export { r as AsyncWorker, o as postFailed, a as postSuccess };
@@ -0,0 +1,164 @@
1
+ import { AsyncWorker as e } from "./async_worker.js";
2
+ import { getRandBIByBitLength as t, getRandBIByRange as n, isSquare as r, jacobiSymbol as i, modPow as a, residue as o } from "./math.js";
3
+ //#region lib/bpsw_worker_wrap.ts
4
+ var s, c = async () => {
5
+ if (!s) {
6
+ let { default: t } = await import("./bpsw_worker-CZOWXQMI.js");
7
+ s = new e(new t({ name: "bpsw_worker" }));
8
+ }
9
+ return s;
10
+ }, l = (e) => {
11
+ if (e <= 1n) return !1;
12
+ if (e % 2n == 0n) return e === 2n;
13
+ let t = e - 1n, n = 0n;
14
+ for (; t % 2n == 0n;) t >>= 1n, n += 1n;
15
+ let [r, i] = [t, n], o = a(2n, r, e);
16
+ if (o === 1n) return !0;
17
+ for (let t = 0n; t < i; t++) {
18
+ if (o === e - 1n) return !0;
19
+ o = o * o % e;
20
+ }
21
+ return !1;
22
+ }, u = (e) => {
23
+ let t = 5n, n = i(t, e);
24
+ for (; n > 0n;) {
25
+ if (t = t > 0n ? t + 2n : t - 2n, t *= -1n, t === -15n && r(e)) return [0n, 0n];
26
+ n = i(t, e);
27
+ }
28
+ return [t, n];
29
+ }, d = (e, t) => (e & 1n) == 1n ? o(e + t >> 1n, t) : o(e >> 1n, t), f = (e, t, n, r) => {
30
+ let i = 1n, a = n, s = e.toString(2).slice(1);
31
+ for (let e of s) [i, a] = [o(i * a, t), d(a * a + r * i * i, t)], e === "1" && ([i, a] = [d(n * i + a, t), d(r * i + n * a, t)]);
32
+ return [i, a];
33
+ }, p = (e, t, n, r) => {
34
+ if (e % 2n != 1n) throw RangeError("`n` must be odd");
35
+ let i = e + 1n, s = 0n;
36
+ for (; i % 2n == 0n;) i >>= 1n, s += 1n;
37
+ let [c, l] = f(i, e, n, t), u = l;
38
+ if (c === 0n) return !0;
39
+ r = a(r, i, e);
40
+ for (let t = 0n; t < s; t++) {
41
+ if (u === 0n) return !0;
42
+ u = o(u * u - 2n * r, e), r = a(r, 2n, e);
43
+ }
44
+ return !1;
45
+ }, m = [
46
+ 2n,
47
+ 3n,
48
+ 5n,
49
+ 7n,
50
+ 11n,
51
+ 13n,
52
+ 17n,
53
+ 19n,
54
+ 23n,
55
+ 29n,
56
+ 31n,
57
+ 37n,
58
+ 41n,
59
+ 43n,
60
+ 47n,
61
+ 53n,
62
+ 59n,
63
+ 61n,
64
+ 67n,
65
+ 71n,
66
+ 73n,
67
+ 79n,
68
+ 83n,
69
+ 89n,
70
+ 97n,
71
+ 101n,
72
+ 103n,
73
+ 107n,
74
+ 109n,
75
+ 113n,
76
+ 127n,
77
+ 131n,
78
+ 137n,
79
+ 139n,
80
+ 149n,
81
+ 151n,
82
+ 157n,
83
+ 163n,
84
+ 167n,
85
+ 173n,
86
+ 179n,
87
+ 181n,
88
+ 191n,
89
+ 193n,
90
+ 197n,
91
+ 199n,
92
+ 211n,
93
+ 223n,
94
+ 227n,
95
+ 229n,
96
+ 233n,
97
+ 239n,
98
+ 241n,
99
+ 251n,
100
+ 257n,
101
+ 263n,
102
+ 269n,
103
+ 271n,
104
+ 277n,
105
+ 281n,
106
+ 283n,
107
+ 293n,
108
+ 307n,
109
+ 311n,
110
+ 313n,
111
+ 317n,
112
+ 331n,
113
+ 337n,
114
+ 347n,
115
+ 349n,
116
+ 353n,
117
+ 359n,
118
+ 367n,
119
+ 373n,
120
+ 379n,
121
+ 383n,
122
+ 389n,
123
+ 397n,
124
+ 401n,
125
+ 409n,
126
+ 419n,
127
+ 421n,
128
+ 431n,
129
+ 433n,
130
+ 439n,
131
+ 443n,
132
+ 449n,
133
+ 457n,
134
+ 461n,
135
+ 463n,
136
+ 467n,
137
+ 479n,
138
+ 487n,
139
+ 491n,
140
+ 499n
141
+ ], h = (e) => {
142
+ if (e <= 1n) return !1;
143
+ if (e % 2n == 0n) return e === 2n;
144
+ for (let t of m) if (e % t === 0n) return e === t;
145
+ if (!l(e)) return !1;
146
+ let [t, n] = u(e);
147
+ return n === 0n ? !1 : p(e, t, 1n, (1n - t) / 4n);
148
+ }, g = (e, t) => {
149
+ if (t < 2n) throw RangeError("`max` must be 2 or larger");
150
+ for (let r = 0; r < 1e5; r++) {
151
+ let r = n(e, t);
152
+ if (h(r)) return r;
153
+ }
154
+ throw Error("no primes were found");
155
+ }, _ = (e, n = !1) => {
156
+ if (e < 2) throw RangeError("`bitLength` must be 2 or larger");
157
+ for (let r = 0; r < 1e5; r++) {
158
+ let r = t(e, n);
159
+ if (h(r)) return r;
160
+ }
161
+ throw Error("no primes were found");
162
+ }, v = async (e) => (await c()).postMessage(e);
163
+ //#endregion
164
+ export { g as i, v as n, _ as r, h as t };
@@ -0,0 +1,3 @@
1
+ import "./math.js";
2
+ import { i as e, n as t, r as n, t as r } from "./baillie_psw-DzyqB4sZ.js";
3
+ export { r as bailliePSW, t as bailliePSWAsync, n as getRandPrimeByBitLength, e as getRandPrimeByRange };
@@ -0,0 +1,16 @@
1
+ //#region lib/bpsw_worker.ts?worker&inline
2
+ var e = "(function(){let e=(e,t)=>{t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n},t=(t,n,r)=>{if(r<1n)throw RangeError(\"`mod` must be positive\");if(n<0n)throw RangeError(\"`power` must not be negative\");if(t=e(t,r),r===1n)return 0n;if(t%r===1n||t%r===0n)return t;if(t===r-1n)return n&1n?r-1n:1n;let i=1n;for(;n>0n;)n&1n&&(i=i*t%r),t=t*t%r,n>>=1n;return i},n=(e,t)=>{if(t<1n||t%2n==0n)throw RangeError(\"`n` is out of range\");for(;e<0n;)e+=t;e%=t;let n=1n;for(;e!==0n;){for(;e%2n==0n;){e/=2n;let r=t%8n;(r===3n||r===5n)&&(n*=-1n)}[e,t]=[t,e],e%4n==3n&&t%4n==3n&&(n*=-1n),e%=t}return t===1n?n:0n},r=e=>{if(e<0n)return!1;if(e===0n)return!0;let t=1n,n=e;for(;t+1n<n;){let r=(t+n)/2n;r*r<e?t=r:n=r}return e===t**2n||e===(t+1n)**2n},i=`AsyncWorker`,a=0n,o=()=>(a===2n**128n&&(a=0n),a++);Object.defineProperty(class{static name=i;#e;constructor(e){this.#e=e}postMessage=(e,t)=>new Promise((n,r)=>{let i=o(),a=e=>{let t=e.data;t.id===i&&(this.#e.removeEventListener(`message`,a),this.#e.removeEventListener(`error`,s),t.success?n(t.value):r(t.error))},s=e=>{this.#e.removeEventListener(`message`,a),this.#e.removeEventListener(`error`,s),r(e.error)};this.#e.addEventListener(`message`,a),this.#e.addEventListener(`error`,s);let c={value:e,id:i};this.#e.postMessage(c,t)})}.prototype,Symbol.toStringTag,{value:i,enumerable:!0});let s=()=>typeof window>`u`&&typeof self<`u`&&`importScripts`in self,c=(e,t)=>{if(!s())throw Error(`this function must be used in Worker`);let n={success:!0,value:e,id:t};self.postMessage(n)},l=(e,t)=>{if(!s())throw Error(`this function must be used in Worker`);let n={success:!1,error:e,id:t};self.postMessage(n)},u=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;let n=e-1n,r=0n;for(;n%2n==0n;)n>>=1n,r+=1n;let[i,a]=[n,r],o=t(2n,i,e);if(o===1n)return!0;for(let t=0n;t<a;t++){if(o===e-1n)return!0;o=o*o%e}return!1},d=e=>{let t=5n,i=n(t,e);for(;i>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&r(e))return[0n,0n];i=n(t,e)}return[t,i]},f=(t,n)=>(t&1n)==1n?e(t+n>>1n,n):e(t>>1n,n),p=(t,n,r,i)=>{let a=1n,o=r,s=t.toString(2).slice(1);for(let t of s)[a,o]=[e(a*o,n),f(o*o+i*a*a,n)],t===`1`&&([a,o]=[f(r*a+o,n),f(i*a+r*o,n)]);return[a,o]},m=(n,r,i,a)=>{if(n%2n!=1n)throw RangeError(\"`n` must be odd\");let o=n+1n,s=0n;for(;o%2n==0n;)o>>=1n,s+=1n;let[c,l]=p(o,n,i,r),u=l;if(c===0n)return!0;a=t(a,o,n);for(let r=0n;r<s;r++){if(u===0n)return!0;u=e(u*u-2n*a,n),a=t(a,2n,n)}return!1},h=[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,103n,107n,109n,113n,127n,131n,137n,139n,149n,151n,157n,163n,167n,173n,179n,181n,191n,193n,197n,199n,211n,223n,227n,229n,233n,239n,241n,251n,257n,263n,269n,271n,277n,281n,283n,293n,307n,311n,313n,317n,331n,337n,347n,349n,353n,359n,367n,373n,379n,383n,389n,397n,401n,409n,419n,421n,431n,433n,439n,443n,449n,457n,461n,463n,467n,479n,487n,491n,499n],g=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of h)if(e%t===0n)return e===t;if(!u(e))return!1;let[t,n]=d(e);return n===0n?!1:m(e,t,1n,(1n-t)/4n)};globalThis.onmessage=e=>{let{value:t,id:n}=e.data;try{c(g(t),n)}catch(e){let t=e=>{if(e==null)return;let t=`${e}`;return t===`[Object object]`?JSON.stringify(e):t};if(e instanceof Error){let{name:r,message:i,stack:a,cause:o}=e;l({name:r,message:i,stack:a,cause:t(o)},n)}else l({name:`BPSWError`,message:`unidentified error`,cause:t(e)},n)}}})();", t = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", e], { type: "text/javascript;charset=utf-8" });
3
+ function n(n) {
4
+ let r;
5
+ try {
6
+ if (r = t && (self.URL || self.webkitURL).createObjectURL(t), !r) throw "";
7
+ let e = new Worker(r, { name: n?.name });
8
+ return e.addEventListener("error", () => {
9
+ (self.URL || self.webkitURL).revokeObjectURL(r);
10
+ }), e;
11
+ } catch {
12
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(e), { name: n?.name });
13
+ }
14
+ }
15
+ //#endregion
16
+ export { n as default };
@@ -0,0 +1,2 @@
1
+ import { AsyncWorker } from './async_worker';
2
+ export declare const getWorker: () => Promise<AsyncWorker<bigint, boolean, unknown>>;
@@ -0,0 +1,66 @@
1
+ import { exEuclidean as e } from "./math.js";
2
+ //#region lib/fraction.ts
3
+ var t = "Rational", n = class n {
4
+ #e;
5
+ #t;
6
+ static name = t;
7
+ constructor(e, t) {
8
+ t === 0n ? (this.#t = 0n, this.#e = e === 0n ? 0n : e > 0n ? 1n : -1n) : t > 0n ? (this.#e = e, this.#t = t) : (this.#e = -e, this.#t = -t), this.#n();
9
+ }
10
+ static fromDecimal(e, t = 5) {
11
+ if (Number.isNaN(e)) return new n(0n, 0n);
12
+ if (Math.abs(e) === Infinity) return new n(e > 0 ? 1n : -1n, 0n);
13
+ let r = e < 0;
14
+ r && (e *= -1);
15
+ let i = BigInt(Math.floor(e)), a = e - Number(i);
16
+ if (a === 0) return new n(r ? -i : i, 1n);
17
+ e = 1 / a;
18
+ let [o, s] = [1n, i], [c, l] = [0n, 1n];
19
+ for (; `${l}`.length <= t;) {
20
+ let t = BigInt(Math.floor(e)), i = e - Number(t);
21
+ if ([o, s] = [s, t * s + o], [c, l] = [l, t * l + c], i === 0) return new n(r ? -s : s, l);
22
+ e = 1 / i;
23
+ }
24
+ return new n(r ? -o : o, c);
25
+ }
26
+ #n() {
27
+ let { gcd: t } = e(this.#e, this.#t);
28
+ t !== 0n && (this.#e /= t, this.#t /= t);
29
+ }
30
+ minus = () => new n(-this.#e, this.#t);
31
+ inverse = () => new n(this.#t, this.#e);
32
+ add = (e) => {
33
+ let t = this.#t * e.#t;
34
+ return new n(this.#e * e.#t + e.#e * this.#t, t);
35
+ };
36
+ substr = (e) => this.add(e.minus());
37
+ multiply = (e) => {
38
+ let t = this.#t * e.#t;
39
+ return new n(this.#e * e.#e, t);
40
+ };
41
+ divide = (e) => this.multiply(e.inverse());
42
+ mediant = (e) => {
43
+ let t = this.#t + e.#t;
44
+ return new n(this.#e + e.#e, t);
45
+ };
46
+ toDecimal = () => Number(this.#e) / Number(this.#t);
47
+ toString = () => this.#e === 0n && this.#t === 0n ? "NaN" : this.#e === 0n ? "0" : this.#t === 0n ? this.#e < 0n ? "-Infinity" : "Infinity" : this.#t === 1n ? `${this.#e}` : `${this.#e}/${this.#t}`;
48
+ valueOf = () => this.toDecimal();
49
+ toJSON = () => ({
50
+ type: "Rational",
51
+ value: ["0x" + this.#e.toString(16), "0x" + this.#t.toString(16)]
52
+ });
53
+ static fromData(e) {
54
+ return new n(BigInt(e.value[0]), BigInt(e.value[1]));
55
+ }
56
+ static parse(e) {
57
+ let t = /^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(e);
58
+ if (!t) throw Error("cannot parse");
59
+ let r = t.at(1), i = t.at(2);
60
+ if (!r || !i) throw Error("cannot parse");
61
+ return new n(BigInt(r), BigInt(i));
62
+ }
63
+ };
64
+ Object.defineProperty(n.prototype, Symbol.toStringTag, { value: t });
65
+ //#endregion
66
+ export { n as Rational };
@@ -0,0 +1,12 @@
1
+ import { AsyncWorker as e, postFailed as t, postSuccess as n } from "./async_worker.js";
2
+ import { exEuclidean as r, factorial as i, getRandBIByBitLength as a, getRandBIByRange as o, getRndInt as s, isSquare as c, jacobiSymbol as l, modPow as u, residue as d, rot32 as f, rot64 as p } from "./math.js";
3
+ import { i as m, n as h, r as g, t as _ } from "./baillie_psw-DzyqB4sZ.js";
4
+ import { Rational as v } from "./fraction.js";
5
+ import { decodeLEB128 as y, encodeLEB128 as b } from "./leb128.js";
6
+ import { NamedError as x } from "./named_error.js";
7
+ import { PCGMinimal as S } from "./pcg_minimal.js";
8
+ import { floatRng as C } from "./random.js";
9
+ import { fromBase64 as w, fromBase64URL as T, fromOct as E, toBase64 as D, toBase64URL as O, toOct as k } from "./u8arr_ext.js";
10
+ import { compress as A, compressString as j, decodeRFC3986URIComponent as M, decompress as N, decompressString as P, encodeRFC3986URIComponent as F, getHash as I, getStringTag as L, isDeepStrictEqual as R, lazify as z, nullableStrictAt as B, parseCSV as V, sameValueZero as H, setTimeoutPromise as U, sleep as W, sleepSort as G, strictAt as K, withResolvers as q } from "./util.js";
11
+ import { XoshiroMinimal as J } from "./xoshiro_minimal.js";
12
+ export { e as AsyncWorker, x as NamedError, S as PCGMinimal, v as Rational, J as XoshiroMinimal, _ as bailliePSW, h as bailliePSWAsync, A as compress, j as compressString, y as decodeLEB128, M as decodeRFC3986URIComponent, N as decompress, P as decompressString, b as encodeLEB128, F as encodeRFC3986URIComponent, r as exEuclidean, i as factorial, C as floatRng, w as fromBase64, T as fromBase64URL, E as fromOct, I as getHash, a as getRandBIByBitLength, o as getRandBIByRange, g as getRandPrimeByBitLength, m as getRandPrimeByRange, s as getRndInt, L as getStringTag, R as isDeepStrictEqual, c as isSquare, l as jacobiSymbol, z as lazify, u as modPow, B as nullableStrictAt, V as parseCSV, t as postFailed, n as postSuccess, d as residue, f as rot32, p as rot64, H as sameValueZero, U as setTimeoutPromise, W as sleep, G as sleepSort, K as strictAt, D as toBase64, O as toBase64URL, k as toOct, q as withResolvers };
@@ -0,0 +1,23 @@
1
+ //#region lib/leb128.ts
2
+ var e = (e) => {
3
+ let t = e < 0n;
4
+ t && (e *= -1n);
5
+ let n = e.toString(2).length, r = e === 1n << BigInt(n - 1) && !(n % 7) && t, i = Math.floor(n / 7) + 1;
6
+ return r ? i - 1 : i;
7
+ }, t = (t) => {
8
+ let n = e(t);
9
+ t = BigInt.asUintN(n * 7, t);
10
+ let r = new Uint8Array(n);
11
+ for (let e = 0; e < n - 1; ++e) r[e] = Number(t & 127n) | 128, t >>= 7n;
12
+ let i = Number(t & 127n);
13
+ return r[n - 1] = i, t >>= 7n, r;
14
+ }, n = (e) => {
15
+ let t = e.length, n = 0n;
16
+ for (let [t, r] of e.entries()) {
17
+ let e = BigInt(r & 127);
18
+ n += e << BigInt(7 * t);
19
+ }
20
+ return BigInt.asIntN(7 * t, n);
21
+ };
22
+ //#endregion
23
+ export { n as decodeLEB128, t as encodeLEB128 };
@@ -0,0 +1,120 @@
1
+ //#region lib/math.ts
2
+ var e = (e, t) => Math.floor(Math.random() * (t - e) + e), t = (e, t) => {
3
+ t < 0n && (t *= -1n);
4
+ let n = e % t;
5
+ return n < 0n ? n + t : n;
6
+ }, n = (e, t = !1) => {
7
+ if (!Number.isFinite(e)) throw RangeError("`length` is not a valid number");
8
+ if (e <= 0) throw RangeError("`length` must be positive");
9
+ let n = Math.ceil(e / 8), r = crypto.getRandomValues(new Uint8Array(n)), i = Array.from(r, (e) => e.toString(2).padStart(8, "0")).join("").slice(0, e);
10
+ return t && (i = i.replace(/^\d/, "1")), BigInt("0b" + i);
11
+ }, r = (e, t) => {
12
+ if (e >= t) throw RangeError("`min` must be smaller than `max`");
13
+ let r = t - e, a = r.toString(2).length;
14
+ return e + (() => {
15
+ for (let e = 0; e < 1e5; e++) {
16
+ let e = n(a);
17
+ if (e >= i(2n, BigInt(a), r)) return e % r;
18
+ }
19
+ throw Error("Failed to generate a random bigint");
20
+ })();
21
+ }, i = (e, n, r) => {
22
+ if (r < 1n) throw RangeError("`mod` must be positive");
23
+ if (n < 0n) throw RangeError("`power` must not be negative");
24
+ if (e = t(e, r), r === 1n) return 0n;
25
+ if (e % r === 1n || e % r === 0n) return e;
26
+ if (e === r - 1n) return n & 1n ? r - 1n : 1n;
27
+ let i = 1n;
28
+ for (; n > 0n;) n & 1n && (i = i * e % r), e = e * e % r, n >>= 1n;
29
+ return i;
30
+ }, a = (e, t) => {
31
+ if (e === 0n && t === 0n) return {
32
+ x: 0n,
33
+ y: 0n,
34
+ gcd: 0n
35
+ };
36
+ if (e === 0n) return t > 0n ? {
37
+ x: 0n,
38
+ y: -1n,
39
+ gcd: t
40
+ } : {
41
+ x: 0n,
42
+ y: 1n,
43
+ gcd: -t
44
+ };
45
+ if (t === 0n) return e > 0n ? {
46
+ x: 1n,
47
+ y: 0n,
48
+ gcd: e
49
+ } : {
50
+ x: -1n,
51
+ y: 0n,
52
+ gcd: -e
53
+ };
54
+ let [n, r, i] = [
55
+ 1n,
56
+ 0n,
57
+ e
58
+ ], [a, o, s] = [
59
+ 0n,
60
+ -1n,
61
+ t
62
+ ];
63
+ for (;;) {
64
+ let e = i / s, t = i - e * s;
65
+ if (t === 0n) break;
66
+ [n, a] = [a, n - e * a], [r, o] = [o, r - e * o], [i, s] = [s, t];
67
+ }
68
+ return s < 0n && (a *= -1n, o *= -1n, s *= -1n), {
69
+ x: a,
70
+ y: o,
71
+ gcd: s
72
+ };
73
+ }, o = (e, t) => {
74
+ if (e >= t) return 1n;
75
+ let n = BigInt((t - 2n).toString(2).length), r = (t - e) / 2n;
76
+ if (n * r < 63n) {
77
+ let n = e;
78
+ for (let r = e + 2n; r < t; r += 2n) n *= r;
79
+ return n;
80
+ }
81
+ let i = e + r | 1n;
82
+ return o(e, i) * o(i, t);
83
+ }, s = (e) => {
84
+ let t = 3n, n = 1n, r = 1n, i = BigInt(e.toString(2).length) - 1n;
85
+ for (let a = i - 1n; a > -1n; --a) {
86
+ let i = (e >> a) + 1n | 1n;
87
+ r *= o(t, i), t = i, n *= r;
88
+ }
89
+ return n;
90
+ }, c = (e) => {
91
+ if (e < 0n) throw RangeError("'n' must be non-negative");
92
+ if (e === 0n) return 1n;
93
+ let t = e - BigInt(e.toString(2).match(/1/g)?.length ?? 0);
94
+ return s(e) << t;
95
+ }, l = (e, t) => (e >>> (t & 31) | e << (-t & 31)) >>> 0, u = (e, t) => BigInt.asUintN(64, e >> (t & 63n) | e << (-t & 63n)), d = (e, t) => {
96
+ if (t < 1n || t % 2n == 0n) throw RangeError("`n` is out of range");
97
+ for (; e < 0n;) e += t;
98
+ e %= t;
99
+ let n = 1n;
100
+ for (; e !== 0n;) {
101
+ for (; e % 2n == 0n;) {
102
+ e /= 2n;
103
+ let r = t % 8n;
104
+ (r === 3n || r === 5n) && (n *= -1n);
105
+ }
106
+ [e, t] = [t, e], e % 4n == 3n && t % 4n == 3n && (n *= -1n), e %= t;
107
+ }
108
+ return t === 1n ? n : 0n;
109
+ }, f = (e) => {
110
+ if (e < 0n) return !1;
111
+ if (e === 0n) return !0;
112
+ let t = 1n, n = e;
113
+ for (; t + 1n < n;) {
114
+ let r = (t + n) / 2n;
115
+ r * r < e ? t = r : n = r;
116
+ }
117
+ return e === t ** 2n || e === (t + 1n) ** 2n;
118
+ };
119
+ //#endregion
120
+ export { a as exEuclidean, c as factorial, n as getRandBIByBitLength, r as getRandBIByRange, e as getRndInt, f as isSquare, d as jacobiSymbol, i as modPow, t as residue, l as rot32, u as rot64 };
@@ -0,0 +1,25 @@
1
+ //#region lib/named_error.ts
2
+ var e = "NamedError", t = class extends Error {
3
+ static name = e;
4
+ errName;
5
+ constructor(e, t, n) {
6
+ super(t, n), this.errName = e;
7
+ }
8
+ toJSON = () => {
9
+ let e = (() => {
10
+ let e = this.cause;
11
+ if (e == null) return e;
12
+ let t = e.toString();
13
+ return t === "[object Object]" ? JSON.stringify(e) : t;
14
+ })(), { errName: t, message: n, stack: r } = this;
15
+ return {
16
+ name: t,
17
+ message: n,
18
+ stack: r,
19
+ cause: e
20
+ };
21
+ };
22
+ };
23
+ Object.defineProperty(t.prototype, Symbol.toStringTag, { value: e });
24
+ //#endregion
25
+ export { t as NamedError };
@@ -0,0 +1,40 @@
1
+ import { rot32 as e } from "./math.js";
2
+ //#region lib/pcg_minimal.ts
3
+ var t = [9600629759793949339n, 15726070495360670683n], n = 6364136223846793005n, r = "PCGMinimal", i = class {
4
+ #e;
5
+ static name = r;
6
+ constructor(e) {
7
+ if (e && e[0] != null && e[1] != null) {
8
+ if (this.#e = new BigUint64Array(2), this.#e[0] == null || this.#e[1] == null) throw TypeError("unexpected");
9
+ this.#e[1] = e[1] << 1n | 1n, this.#t(), this.#e[0] += e[0], this.#t();
10
+ } else this.#e = BigUint64Array.from(t);
11
+ }
12
+ #t() {
13
+ if (this.#e[0] == null || this.#e[1] == null) throw TypeError("unexpected");
14
+ this.#e[0] = this.#e[0] * n + this.#e[1];
15
+ }
16
+ get #n() {
17
+ if (this.#e[0] == null || this.#e[1] == null) throw TypeError("unexpected");
18
+ let t = this.#e[0], n = Number(t >> 59n);
19
+ return e(Number(BigInt.asUintN(32, (t ^ t >> 18n) >> 27n)), n);
20
+ }
21
+ getRandU32 = () => (this.#t(), this.#n);
22
+ getBoundedRandU32 = (e) => {
23
+ let t = 4294967296;
24
+ if (e > t) throw RangeError("`bound` exceeded limit (2^32)");
25
+ if (e <= 0) throw RangeError("'bound' must be positive");
26
+ let n = t % e;
27
+ for (let t = 0; t < 1e5; ++t) {
28
+ let t = this.getRandU32();
29
+ if (t >= n) return t % e;
30
+ }
31
+ throw Error("exceeded loop limit");
32
+ };
33
+ *genRandU32s(e, t) {
34
+ if (e <= 0) throw RangeError("'step' must be positive");
35
+ for (let n = 0; n < e; n++) yield typeof t == "number" ? this.getBoundedRandU32(t) : this.getRandU32();
36
+ }
37
+ };
38
+ Object.defineProperty(i.prototype, Symbol.toStringTag, { value: r });
39
+ //#endregion
40
+ export { i as PCGMinimal };
@@ -0,0 +1,32 @@
1
+ //#region lib/random.ts
2
+ var e = (e) => {
3
+ if (e === 0n) return 64n;
4
+ let t = 0n;
5
+ for (; e > 0n && !(e & 1n);) ++t, e >>= 1n;
6
+ return BigInt.asUintN(64, t);
7
+ }, t = (t, n) => {
8
+ let r = 0n, i = t & 2047n, a = 1023n - 1n;
9
+ if (i > 0n) return a -= e(i), a;
10
+ a -= 11n;
11
+ for (let t = 0; t < 1e5; ++t) {
12
+ let t = n();
13
+ if (t > 0n) return a -= e(t), a;
14
+ if (a -= 64n, a < r) return r;
15
+ }
16
+ throw Error("loop exceeded limit");
17
+ }, n = (e) => {
18
+ let n = () => BigInt.asUintN(64, e()), r = () => {
19
+ let e = n(), r = BigInt.asUintN(52, e >> 11n), i = r === 0n && e >> 63n == 1n ? t(e, n) + 1n : t(e, n), { buffer: a } = BigUint64Array.from([i << 52n | r]), o = new Float64Array(a)[0];
20
+ if (o == null) throw Error("unexpected");
21
+ return o;
22
+ };
23
+ return () => {
24
+ for (let e = 0; e < 1e5; ++e) {
25
+ let e = r();
26
+ if (e < 1) return e;
27
+ }
28
+ throw Error("Loop limit exceeded");
29
+ };
30
+ };
31
+ //#endregion
32
+ export { n as floatRng };
@@ -0,0 +1,19 @@
1
+ //#region lib/u8arr_ext.ts
2
+ var e = (e) => {
3
+ let t = Array.from(e, (e) => String.fromCharCode(e));
4
+ return btoa(t.join(""));
5
+ }, t = (e) => {
6
+ let t = atob(e);
7
+ return Uint8Array.from(t, (e) => e.charCodeAt(0));
8
+ }, n = (t) => e(t).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, ""), r = (e) => {
9
+ let n = 4 - (e.length & 3) & 3;
10
+ return t(e.concat("=".repeat(n)).replaceAll("-", "+").replaceAll("_", "/"));
11
+ }, i = (e) => {
12
+ let t = Array.from(e, (e) => e.toString(16).padStart(2, "0")).join(""), n = (6 - t.length % 6) % 6, r = "0".repeat(n).concat(t).matchAll(/.{6}/g);
13
+ return Array.from(r, (e) => Number.parseInt(e[0], 16).toString(8).padStart(8, "0")).join("").replace(/^0+/, "");
14
+ }, a = (e) => {
15
+ let t = 8 - (e.length & 7) & 7, n = "0".repeat(t).concat(e).matchAll(/.{8}/g), r = Array.from(n, (e) => Number.parseInt(e[0], 8).toString(16).padStart(6, "0")).join("").matchAll(/.{2}/g);
16
+ return Uint8Array.from(r, (e) => Number.parseInt(e[0], 16));
17
+ };
18
+ //#endregion
19
+ export { t as fromBase64, r as fromBase64URL, a as fromOct, e as toBase64, n as toBase64URL, i as toOct };
@@ -89,3 +89,4 @@ export declare const nullableStrictAt: <T>(array: T[], index: number) => T | und
89
89
  * @returns
90
90
  */
91
91
  export declare const strictAt: <T extends {}>(array: T[], index: number) => T;
92
+ export declare const sleepSort: (array: number[]) => Promise<number[]>;