@tktb-tess/util-fns 0.13.3 → 0.13.5
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/dist/esm/async_worker.js +6 -9
- package/dist/esm/async_worker_post.d.ts +2 -2
- package/dist/esm/async_worker_post.js +7 -5
- package/dist/esm/baillie_psw.d.ts +4 -4
- package/dist/esm/baillie_psw.js +85 -118
- package/dist/esm/base32768-BqNkkJ-a.js +54 -0
- package/dist/esm/base32768.d.ts +2 -0
- package/dist/esm/base32768.js +2 -0
- package/dist/esm/base32768_table.d.ts +2 -0
- package/dist/esm/base64.d.ts +22 -4
- package/dist/esm/base64.js +42 -11
- package/dist/esm/basejuso-BYqhXFJC.js +54 -0
- package/dist/esm/basejuso.d.ts +2 -0
- package/dist/esm/basejuso.js +2 -0
- package/dist/esm/basejuso_table.d.ts +2 -0
- package/dist/esm/bpsw_worker_wrap-iIZQPlow.js +23 -0
- package/dist/esm/bpsw_worker_wrap.d.ts +1 -1
- package/dist/esm/compression.d.ts +6 -6
- package/dist/esm/compression.js +17 -13
- package/dist/esm/encoder.d.ts +1 -0
- package/dist/esm/equality.d.ts +2 -2
- package/dist/esm/equality.js +5 -2
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +15 -13
- package/dist/esm/leb128.d.ts +2 -2
- package/dist/esm/leb128.js +15 -20
- package/dist/esm/math.d.ts +6 -6
- package/dist/esm/math.js +19 -8
- package/dist/esm/{mod_pow-S-7GJ74l.js → mod_pow-C5090m6u.js} +4 -3
- package/dist/esm/mod_pow.d.ts +2 -2
- package/dist/esm/oct.d.ts +4 -4
- package/dist/esm/oct.js +19 -18
- package/dist/esm/pcg_minimal.d.ts +6 -5
- package/dist/esm/pcg_minimal.js +21 -2
- package/dist/esm/random.d.ts +4 -4
- package/dist/esm/random.js +16 -9
- package/dist/esm/util-Cv7ElkC6.js +68 -0
- package/dist/esm/util.d.ts +10 -17
- package/dist/esm/util.js +2 -47
- package/dist/iife/bundle.min.js +1 -1
- package/package.json +22 -6
- package/dist/esm/bpsw_worker_wrap-Ex4MZHGr.js +0 -20
package/dist/esm/async_worker.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
//#region lib/async_worker.ts
|
|
2
|
-
var e = "AsyncWorker", t =
|
|
3
|
-
let e = `${n++}`;
|
|
4
|
-
return n === t && (n = 0n), e;
|
|
5
|
-
}, i = class {
|
|
2
|
+
var e = "AsyncWorker", t = 0n, n = () => `${t++}`, r = class {
|
|
6
3
|
static name = e;
|
|
7
4
|
#e;
|
|
8
5
|
constructor(e) {
|
|
9
6
|
this.#e = e;
|
|
10
7
|
}
|
|
11
|
-
postMessage = (e, t) => new Promise((
|
|
12
|
-
let a =
|
|
8
|
+
postMessage = (e, t) => new Promise((r, i) => {
|
|
9
|
+
let a = n(), o = new AbortController(), { signal: s } = o;
|
|
13
10
|
this.#e.addEventListener("message", (e) => {
|
|
14
11
|
let t = e.data;
|
|
15
|
-
t.id === a && (o.abort(), t.success ?
|
|
12
|
+
t.id === a && (o.abort(), t.success ? r(t.value) : i(t.error));
|
|
16
13
|
}, { signal: s }), this.#e.addEventListener("error", (e) => {
|
|
17
14
|
o.abort(), i(e.error);
|
|
18
15
|
}, { signal: s });
|
|
@@ -23,9 +20,9 @@ var e = "AsyncWorker", t = 1n << 128n, n = 0n, r = () => {
|
|
|
23
20
|
this.#e.postMessage(c, t);
|
|
24
21
|
});
|
|
25
22
|
};
|
|
26
|
-
Object.defineProperty(
|
|
23
|
+
Object.defineProperty(r.prototype, Symbol.toStringTag, {
|
|
27
24
|
value: e,
|
|
28
25
|
enumerable: !0
|
|
29
26
|
});
|
|
30
27
|
//#endregion
|
|
31
|
-
export {
|
|
28
|
+
export { r as AsyncWorker };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ID } from './async_worker_type';
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
2
|
+
export declare function postSuccess<TRecv>(value: TRecv, id: ID): void;
|
|
3
|
+
export declare function postFailed(error: unknown, id: ID): void;
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
//#region lib/async_worker_post.ts
|
|
2
|
-
var e = () => typeof window > "u" && typeof self < "u" && "importScripts" in self
|
|
3
|
-
|
|
2
|
+
var e = () => typeof window > "u" && typeof self < "u" && "importScripts" in self;
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
if (!e()) throw Error("This function must be used in Worker");
|
|
4
5
|
let r = {
|
|
5
6
|
success: !0,
|
|
6
7
|
value: t,
|
|
7
8
|
id: n
|
|
8
9
|
};
|
|
9
10
|
self.postMessage(r);
|
|
10
|
-
}
|
|
11
|
-
|
|
11
|
+
}
|
|
12
|
+
function n(t, n) {
|
|
13
|
+
if (!e()) throw Error("This function must be used in Worker");
|
|
12
14
|
let r = {
|
|
13
15
|
success: !1,
|
|
14
16
|
error: t,
|
|
15
17
|
id: n
|
|
16
18
|
};
|
|
17
19
|
self.postMessage(r);
|
|
18
|
-
}
|
|
20
|
+
}
|
|
19
21
|
//#endregion
|
|
20
22
|
export { n as postFailed, t as postSuccess };
|
|
@@ -3,24 +3,24 @@
|
|
|
3
3
|
* @param n tested integer
|
|
4
4
|
* @returns whether `n` is a prime
|
|
5
5
|
*/
|
|
6
|
-
export declare
|
|
6
|
+
export declare function bailliePSW(n: bigint): boolean;
|
|
7
7
|
/**
|
|
8
8
|
* returns probable prime of `min` or more and less than `max`
|
|
9
9
|
* @param min minimum
|
|
10
10
|
* @param max upper limit
|
|
11
11
|
* @returns
|
|
12
12
|
*/
|
|
13
|
-
export declare
|
|
13
|
+
export declare function getRandPrimeByRange(min: bigint, max: bigint): bigint;
|
|
14
14
|
/**
|
|
15
15
|
* returns probable prime of `bitLength` bit
|
|
16
16
|
* @param bitLength bit length of probable prime
|
|
17
17
|
* @param fixed `true`: fixed to `bitLength`, `false` (default): variable bit length of `bitLength` or under
|
|
18
18
|
* @returns
|
|
19
19
|
*/
|
|
20
|
-
export declare
|
|
20
|
+
export declare function getRandPrimeByBitLength(bitLength: number, fixed?: boolean): bigint;
|
|
21
21
|
/**
|
|
22
22
|
* worker async version of `bailliePSW()` \
|
|
23
23
|
* only available in esm context
|
|
24
24
|
* @param n
|
|
25
25
|
*/
|
|
26
|
-
export declare
|
|
26
|
+
export declare function bailliePSWAsync(n: bigint): Promise<boolean>;
|
package/dist/esm/baillie_psw.js
CHANGED
|
@@ -1,104 +1,8 @@
|
|
|
1
|
-
import { n as e, t } from "./mod_pow-
|
|
1
|
+
import { n as e, t } from "./mod_pow-C5090m6u.js";
|
|
2
2
|
import { isSquare as n, jacobiSymbol as r } from "./math.js";
|
|
3
3
|
import { getRandBIByBitLength as i, getRandBIByRange as a } from "./random.js";
|
|
4
4
|
//#region lib/baillie_psw.ts
|
|
5
|
-
|
|
6
|
-
2n,
|
|
7
|
-
3n,
|
|
8
|
-
5n,
|
|
9
|
-
7n,
|
|
10
|
-
11n,
|
|
11
|
-
13n,
|
|
12
|
-
17n,
|
|
13
|
-
19n,
|
|
14
|
-
23n,
|
|
15
|
-
29n,
|
|
16
|
-
31n,
|
|
17
|
-
37n,
|
|
18
|
-
41n,
|
|
19
|
-
43n,
|
|
20
|
-
47n,
|
|
21
|
-
53n,
|
|
22
|
-
59n,
|
|
23
|
-
61n,
|
|
24
|
-
67n,
|
|
25
|
-
71n,
|
|
26
|
-
73n,
|
|
27
|
-
79n,
|
|
28
|
-
83n,
|
|
29
|
-
89n,
|
|
30
|
-
97n,
|
|
31
|
-
101n,
|
|
32
|
-
103n,
|
|
33
|
-
107n,
|
|
34
|
-
109n,
|
|
35
|
-
113n,
|
|
36
|
-
127n,
|
|
37
|
-
131n,
|
|
38
|
-
137n,
|
|
39
|
-
139n,
|
|
40
|
-
149n,
|
|
41
|
-
151n,
|
|
42
|
-
157n,
|
|
43
|
-
163n,
|
|
44
|
-
167n,
|
|
45
|
-
173n,
|
|
46
|
-
179n,
|
|
47
|
-
181n,
|
|
48
|
-
191n,
|
|
49
|
-
193n,
|
|
50
|
-
197n,
|
|
51
|
-
199n,
|
|
52
|
-
211n,
|
|
53
|
-
223n,
|
|
54
|
-
227n,
|
|
55
|
-
229n,
|
|
56
|
-
233n,
|
|
57
|
-
239n,
|
|
58
|
-
241n,
|
|
59
|
-
251n,
|
|
60
|
-
257n,
|
|
61
|
-
263n,
|
|
62
|
-
269n,
|
|
63
|
-
271n,
|
|
64
|
-
277n,
|
|
65
|
-
281n,
|
|
66
|
-
283n,
|
|
67
|
-
293n,
|
|
68
|
-
307n,
|
|
69
|
-
311n,
|
|
70
|
-
313n,
|
|
71
|
-
317n,
|
|
72
|
-
331n,
|
|
73
|
-
337n,
|
|
74
|
-
347n,
|
|
75
|
-
349n,
|
|
76
|
-
353n,
|
|
77
|
-
359n,
|
|
78
|
-
367n,
|
|
79
|
-
373n,
|
|
80
|
-
379n,
|
|
81
|
-
383n,
|
|
82
|
-
389n,
|
|
83
|
-
397n,
|
|
84
|
-
401n,
|
|
85
|
-
409n,
|
|
86
|
-
419n,
|
|
87
|
-
421n,
|
|
88
|
-
431n,
|
|
89
|
-
433n,
|
|
90
|
-
439n,
|
|
91
|
-
443n,
|
|
92
|
-
449n,
|
|
93
|
-
457n,
|
|
94
|
-
461n,
|
|
95
|
-
463n,
|
|
96
|
-
467n,
|
|
97
|
-
479n,
|
|
98
|
-
487n,
|
|
99
|
-
491n,
|
|
100
|
-
499n
|
|
101
|
-
], s = (e) => {
|
|
5
|
+
function o(e) {
|
|
102
6
|
if (e <= 1n) return !1;
|
|
103
7
|
if (e % 2n == 0n) return e === 2n;
|
|
104
8
|
let n = e - 1n, r = 0n;
|
|
@@ -110,25 +14,29 @@ var o = [
|
|
|
110
14
|
o = o * o % e;
|
|
111
15
|
}
|
|
112
16
|
return !1;
|
|
113
|
-
}
|
|
17
|
+
}
|
|
18
|
+
function s(e) {
|
|
114
19
|
let t = 5n;
|
|
115
20
|
for (;;) {
|
|
116
21
|
let i = r(t, e);
|
|
117
22
|
if (i === -1n) return t;
|
|
118
23
|
if (i === 0n || (t = t > 0n ? -(t + 2n) : -(t - 2n), t === -15n && n(e))) return null;
|
|
119
24
|
}
|
|
120
|
-
}
|
|
25
|
+
}
|
|
26
|
+
function c(t, n) {
|
|
121
27
|
if ((n & 1n) == 0n) throw Error("`n` is not odd");
|
|
122
28
|
return (t & 1n) == 1n ? e(t + n >> 1n, n) : e(t >> 1n, n);
|
|
123
|
-
}
|
|
29
|
+
}
|
|
30
|
+
function l(t, n, r, i) {
|
|
124
31
|
let a = 1n, o = r, s = t.toString(2).slice(1);
|
|
125
|
-
for (let t of s) [a, o] = [e(a * o, n),
|
|
32
|
+
for (let t of s) [a, o] = [e(a * o, n), c(o * o + i * a * a, n)], t === "1" && ([a, o] = [c(r * a + o, n), c(i * a + r * o, n)]);
|
|
126
33
|
return [a, o];
|
|
127
|
-
}
|
|
34
|
+
}
|
|
35
|
+
function u(n, r, i, a) {
|
|
128
36
|
if (n % 2n != 1n) throw RangeError("`n` must be odd");
|
|
129
37
|
let o = n + 1n, s = 0n;
|
|
130
38
|
for (; o % 2n == 0n;) o >>= 1n, s += 1n;
|
|
131
|
-
let [c,
|
|
39
|
+
let [c, u] = l(o, n, i, r), d = u;
|
|
132
40
|
if (c === 0n) return !0;
|
|
133
41
|
a = t(a, o, n);
|
|
134
42
|
for (let r = 0n; r < s; r++) {
|
|
@@ -136,30 +44,89 @@ var o = [
|
|
|
136
44
|
d = e(d * d - 2n * a, n), a = t(a, 2n, n);
|
|
137
45
|
}
|
|
138
46
|
return !1;
|
|
139
|
-
}
|
|
47
|
+
}
|
|
48
|
+
function d(e) {
|
|
140
49
|
if (e <= 1n) return !1;
|
|
141
50
|
if (e % 2n == 0n) return e === 2n;
|
|
142
|
-
for (let t of
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
51
|
+
for (let t of [
|
|
52
|
+
2n,
|
|
53
|
+
3n,
|
|
54
|
+
5n,
|
|
55
|
+
7n,
|
|
56
|
+
11n,
|
|
57
|
+
13n,
|
|
58
|
+
17n,
|
|
59
|
+
19n,
|
|
60
|
+
23n,
|
|
61
|
+
29n,
|
|
62
|
+
31n,
|
|
63
|
+
37n,
|
|
64
|
+
41n,
|
|
65
|
+
43n,
|
|
66
|
+
47n,
|
|
67
|
+
53n,
|
|
68
|
+
59n,
|
|
69
|
+
61n,
|
|
70
|
+
67n,
|
|
71
|
+
71n,
|
|
72
|
+
73n,
|
|
73
|
+
79n,
|
|
74
|
+
83n,
|
|
75
|
+
89n,
|
|
76
|
+
97n,
|
|
77
|
+
101n,
|
|
78
|
+
103n,
|
|
79
|
+
107n,
|
|
80
|
+
109n,
|
|
81
|
+
113n,
|
|
82
|
+
127n,
|
|
83
|
+
131n,
|
|
84
|
+
137n,
|
|
85
|
+
139n,
|
|
86
|
+
149n,
|
|
87
|
+
151n,
|
|
88
|
+
157n,
|
|
89
|
+
163n,
|
|
90
|
+
167n,
|
|
91
|
+
173n,
|
|
92
|
+
179n,
|
|
93
|
+
181n,
|
|
94
|
+
191n,
|
|
95
|
+
193n,
|
|
96
|
+
197n,
|
|
97
|
+
199n,
|
|
98
|
+
211n,
|
|
99
|
+
223n,
|
|
100
|
+
227n,
|
|
101
|
+
229n,
|
|
102
|
+
233n,
|
|
103
|
+
239n,
|
|
104
|
+
241n,
|
|
105
|
+
251n
|
|
106
|
+
]) if (e % t === 0n) return e === t;
|
|
107
|
+
if (!o(e)) return !1;
|
|
108
|
+
let t = s(e);
|
|
109
|
+
return t == null ? !1 : u(e, t, 1n, (1n - t) / 4n);
|
|
110
|
+
}
|
|
111
|
+
function f(e, t) {
|
|
147
112
|
if (t < 2n) throw RangeError("`max` must be 2 or larger");
|
|
148
113
|
for (let n = 0; n < 1e5; n++) {
|
|
149
114
|
let n = a(e, t);
|
|
150
|
-
if (
|
|
115
|
+
if (d(n)) return n;
|
|
151
116
|
}
|
|
152
117
|
throw Error("no primes were found");
|
|
153
|
-
}
|
|
118
|
+
}
|
|
119
|
+
function p(e, t = !1) {
|
|
154
120
|
if (e < 2) throw RangeError("`bitLength` must be 2 or larger");
|
|
155
121
|
for (let n = 0; n < 1e5; n++) {
|
|
156
122
|
let n = i(e, t);
|
|
157
|
-
if (
|
|
123
|
+
if (d(n)) return n;
|
|
158
124
|
}
|
|
159
125
|
throw Error("no primes were found");
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
126
|
+
}
|
|
127
|
+
async function m(e) {
|
|
128
|
+
let { getWorker: t } = await import("./bpsw_worker_wrap-iIZQPlow.js");
|
|
129
|
+
return t().postMessage(e);
|
|
130
|
+
}
|
|
164
131
|
//#endregion
|
|
165
|
-
export {
|
|
132
|
+
export { d as bailliePSW, m as bailliePSWAsync, p as getRandPrimeByBitLength, f as getRandPrimeByRange };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region lib/base32768_table.ts
|
|
2
|
+
var e;
|
|
3
|
+
function t() {
|
|
4
|
+
let e = Array.from("ƀƟȴʓҊҩӺԙԱՐՠտऄणഒറกภကဟ႞ႽაჯሃቂጘፗᎠᏟᐁᙠᚠᛟកសᠠᡟᢇᢦᢰᣯ⌫⏪⓫❊❶➵⟰⥯⨍⩬⩷⫖⫝⭜⮗ⱶⱾⳝㄅㄤㆠ㇟㐀ꑿꔀꗿꚠꛟ꜀ꝟꝱꞰ".matchAll(/../g)).flatMap((e) => {
|
|
5
|
+
let t = e[0].charCodeAt(0), n = e[0].charCodeAt(1), r = [...Array(n - t + 1)].map((e, n) => t + n);
|
|
6
|
+
return [...String.fromCharCode(...r)];
|
|
7
|
+
}), t = Object.fromEntries(e.map((e, t) => [e, t]));
|
|
8
|
+
return Object.setPrototypeOf(t, null), [Object.freeze(e), Object.freeze(t)];
|
|
9
|
+
}
|
|
10
|
+
function n() {
|
|
11
|
+
return e ??= t(), e[0];
|
|
12
|
+
}
|
|
13
|
+
function r() {
|
|
14
|
+
return e ??= t(), e[1];
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region lib/base32768.ts
|
|
18
|
+
var i = 15, a = 8, o = "X";
|
|
19
|
+
function s(e) {
|
|
20
|
+
let t = n(), r = 0, s = 0, c = "";
|
|
21
|
+
for (let n of e) for (let e = 0; e < a; e++) {
|
|
22
|
+
let o = n >>> a - 1 - e & 1;
|
|
23
|
+
if (r = r << 1 | o, s++, s === i) {
|
|
24
|
+
let e = t[r];
|
|
25
|
+
if (e == null) throw TypeError("unexpected");
|
|
26
|
+
c += e, r = 0, s = 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (s > 0) {
|
|
30
|
+
r <<= 15 - s;
|
|
31
|
+
let e = t[r];
|
|
32
|
+
if (e == null) throw TypeError("unexpected");
|
|
33
|
+
c += e, s < a && (c += o);
|
|
34
|
+
}
|
|
35
|
+
return c;
|
|
36
|
+
}
|
|
37
|
+
function c(e) {
|
|
38
|
+
let t = r(), n = 0, s = 0, c = [];
|
|
39
|
+
for (let r of e) {
|
|
40
|
+
if (r === o) {
|
|
41
|
+
c.pop();
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
let e = t[r];
|
|
45
|
+
if (e == null) throw TypeError("unexpected");
|
|
46
|
+
for (let t = 0; t < i; t++) {
|
|
47
|
+
let r = e >>> i - 1 - t & 1;
|
|
48
|
+
n = n << 1 | r, s++, s === a && (c.push(n), n = 0, s = 0);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return Uint8Array.from(c);
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { s as n, c as t };
|
package/dist/esm/base64.d.ts
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export interface ToBase64Options {
|
|
2
|
+
alphabet?: 'base64' | 'base64url';
|
|
3
|
+
omitPadding?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface FromBase64Options {
|
|
6
|
+
alphabet?: 'base64' | 'base64url';
|
|
7
|
+
lastChunkHandling?: 'loose' | 'strict' | 'stop-before-partial';
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Polyfill of `Uint8Array.prototype.toBase64()`
|
|
11
|
+
* @param bin
|
|
12
|
+
* @param options
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export declare function toBase64(bin: Uint8Array, options?: ToBase64Options): string;
|
|
16
|
+
/**
|
|
17
|
+
* Polyfill of `Uint8Array.fromBase64()`
|
|
18
|
+
* @param base64
|
|
19
|
+
* @param options
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
export declare function fromBase64(base64: string, options?: FromBase64Options): Uint8Array<ArrayBuffer>;
|
package/dist/esm/base64.js
CHANGED
|
@@ -1,13 +1,44 @@
|
|
|
1
1
|
//#region lib/base64.ts
|
|
2
|
-
|
|
3
|
-
let t =
|
|
4
|
-
return
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
function e(e, t = {}) {
|
|
3
|
+
let { alphabet: n = "base64", omitPadding: r = !1 } = t, i = btoa(e.reduce((e, t) => e + String.fromCharCode(t), ""));
|
|
4
|
+
return n === "base64url" && (i = i.replaceAll("+", "-").replaceAll("/", "_")), r && (i = i.replace(/=+$/, "")), i;
|
|
5
|
+
}
|
|
6
|
+
function t(e, t = {}) {
|
|
7
|
+
if (e = e.replace(/\s+/g, ""), e === "") return new Uint8Array();
|
|
8
|
+
let { alphabet: n = "base64", lastChunkHandling: r = "loose" } = t, i = e.match(/=+$/)?.[0].length ?? 0, a = [..."AQgw"], o = a.concat([..."EUk0IYo4Mcs8"]);
|
|
9
|
+
if (i !== 0 && i !== 1 && i !== 2) throw SyntaxError("Invalid padding letter length");
|
|
10
|
+
let s = Array.from(e.matchAll(/.{1,4}/gu), (e) => e[0]).at(-1);
|
|
11
|
+
if (s == null) throw TypeError("unexpected");
|
|
12
|
+
let c = s.length;
|
|
13
|
+
if (c === 1) throw SyntaxError("Invalid last chunk length");
|
|
14
|
+
if (c !== 2 && c !== 3 && c !== 4) throw SyntaxError("unexpected");
|
|
15
|
+
switch (r) {
|
|
16
|
+
case "loose":
|
|
17
|
+
if (i === 0) {
|
|
18
|
+
for (; e.length & 3;) e += "=";
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
if (c !== 4) throw SyntaxError("Invalid padding letter length");
|
|
22
|
+
break;
|
|
23
|
+
case "strict": {
|
|
24
|
+
if (c !== 4) throw SyntaxError("Invalid last chunk length");
|
|
25
|
+
if (i === 0) break;
|
|
26
|
+
if (i === 1) {
|
|
27
|
+
let e = s.at(-2);
|
|
28
|
+
if (!e || !o.includes(e)) throw SyntaxError("2 padding bits must be 0");
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
let e = s.at(-3);
|
|
32
|
+
if (!e || !a.includes(e)) throw SyntaxError("4 padding bits must be 0");
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
case "stop-before-partial": {
|
|
36
|
+
let t = -(c & 3);
|
|
37
|
+
e = e.slice(0, t);
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return n === "base64url" && (e = e.replaceAll("-", "+").replaceAll("_", "/")), Uint8Array.from(atob(e), (e) => e.charCodeAt(0));
|
|
42
|
+
}
|
|
12
43
|
//#endregion
|
|
13
|
-
export { t as fromBase64,
|
|
44
|
+
export { t as fromBase64, e as toBase64 };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region lib/basejuso_table.ts
|
|
2
|
+
var e;
|
|
3
|
+
function t() {
|
|
4
|
+
let e = Array.from("刓劚加勸厍厵吗囖囜圞圽壪夷奲妏孏孕孿宇寷尼屭岆巚帄幱庅廳弗彏彸忂忥戇戋戵扷攮攸斆斻旟旴曯有朧杤欟欣歡歼殲毞氎氕氳汴灪炅爩牟犫犸玃玝瓛瓨甗电疊疟癵癿皭盁盭盼矚砆礹祁禷秈穳穹竊竍竸笏籲籺糷紑纞罔羉羍羼翁耀耓耲耷聾肝臢舣艭芲虌蚇蠿衳襽覎觀觔觿記讟豗豷豺貜貤贜赴趲跁躪躬軉軓轥迂邐邛酈酐釅釺钄閆闧阥隵隻雧雮靐靮韊韍韬頇顴颪飍飦饢馷驫骪髗髣鬤魫鱻鳷鸞麁麤黓黸齔齾".matchAll(/../g)).flatMap((e) => {
|
|
5
|
+
let t = e[0].charCodeAt(0), n = e[0].charCodeAt(1), r = [...Array(n - t + 1)].map((e, n) => t + n);
|
|
6
|
+
return [...String.fromCharCode(...r)];
|
|
7
|
+
}), t = Object.fromEntries(e.map((e, t) => [e, t]));
|
|
8
|
+
return Object.setPrototypeOf(t, null), [Object.freeze(e), Object.freeze(t)];
|
|
9
|
+
}
|
|
10
|
+
function n() {
|
|
11
|
+
return e ??= t(), e[0];
|
|
12
|
+
}
|
|
13
|
+
function r() {
|
|
14
|
+
return e ??= t(), e[1];
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region lib/basejuso.ts
|
|
18
|
+
var i = 14, a = 8, o = "乙";
|
|
19
|
+
function s(e) {
|
|
20
|
+
let t = 0, r = 0, s = "", c = n();
|
|
21
|
+
for (let n of e) for (let e = 0; e < a; e++) {
|
|
22
|
+
let o = n >>> a - 1 - e & 1;
|
|
23
|
+
if (t = t << 1 | o, r++, r === i) {
|
|
24
|
+
let e = c.at(t);
|
|
25
|
+
if (e == null) throw TypeError("unexpected");
|
|
26
|
+
s += e, t = 0, r = 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (r > 0) {
|
|
30
|
+
t <<= i - r;
|
|
31
|
+
let e = c.at(t);
|
|
32
|
+
if (e == null) throw TypeError("unexpected");
|
|
33
|
+
s += e, r < a && (s += o);
|
|
34
|
+
}
|
|
35
|
+
return s;
|
|
36
|
+
}
|
|
37
|
+
function c(e) {
|
|
38
|
+
let t = r(), n = 0, s = 0, c = [];
|
|
39
|
+
for (let r of e) {
|
|
40
|
+
if (r === o) {
|
|
41
|
+
c.pop();
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
let e = t[r];
|
|
45
|
+
if (e == null) throw TypeError("unexpected");
|
|
46
|
+
for (let t = 0; t < i; t++) {
|
|
47
|
+
let r = e >>> i - 1 - t & 1;
|
|
48
|
+
n = n << 1 | r, s++, s === a && (c.push(n), n = 0, s = 0);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return Uint8Array.from(c);
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { s as n, c as t };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AsyncWorker as e } from "./async_worker.js";
|
|
2
|
+
//#region lib/bpsw_worker.ts?worker&inline
|
|
3
|
+
var t = "(function(){function e(e,t){t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n}function 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}function 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}function 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}function i(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}function a(e){let t=5n;for(;;){let i=n(t,e);if(i===-1n)return t;if(i===0n||(t=t>0n?-(t+2n):-(t-2n),t===-15n&&r(e)))return null}}function o(t,n){if((n&1n)==0n)throw Error(\"`n` is not odd\");return(t&1n)==1n?e(t+n>>1n,n):e(t>>1n,n)}function s(t,n,r,i){let a=1n,s=r,c=t.toString(2).slice(1);for(let t of c)[a,s]=[e(a*s,n),o(s*s+i*a*a,n)],t===`1`&&([a,s]=[o(r*a+s,n),o(i*a+r*s,n)]);return[a,s]}function c(n,r,i,a){if(n%2n!=1n)throw RangeError(\"`n` must be odd\");let o=n+1n,c=0n;for(;o%2n==0n;)o>>=1n,c+=1n;let[l,u]=s(o,n,i,r),d=u;if(l===0n)return!0;a=t(a,o,n);for(let r=0n;r<c;r++){if(d===0n)return!0;d=e(d*d-2n*a,n),a=t(a,2n,n)}return!1}function l(e){if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of[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])if(e%t===0n)return e===t;if(!i(e))return!1;let t=a(e);return t==null?!1:c(e,t,1n,(1n-t)/4n)}let u=()=>typeof window>`u`&&typeof self<`u`&&`importScripts`in self;function d(e,t){if(!u())throw Error(`This function must be used in Worker`);let n={success:!0,value:e,id:t};self.postMessage(n)}function f(e,t){if(!u())throw Error(`This function must be used in Worker`);let n={success:!1,error:e,id:t};self.postMessage(n)}let p=e=>{if(e==null)return;let t=`${e}`;return t===`[object Object]`?JSON.stringify(e):t};globalThis.onmessage=e=>{let{value:t,id:n}=e.data;try{d(l(t),n)}catch(e){if(e instanceof Error){let{name:t,message:r,stack:i,cause:a}=e;f({name:t,message:r,stack:i,cause:p(a)},n)}else f({name:`BPSWError`,message:`unidentified error`,cause:p(e)},n)}}})();", n = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", t], { type: "text/javascript;charset=utf-8" });
|
|
4
|
+
function r(e) {
|
|
5
|
+
let r;
|
|
6
|
+
try {
|
|
7
|
+
if (r = n && (self.URL || self.webkitURL).createObjectURL(n), !r) throw "";
|
|
8
|
+
let t = new Worker(r, { name: e?.name });
|
|
9
|
+
return t.addEventListener("error", () => {
|
|
10
|
+
(self.URL || self.webkitURL).revokeObjectURL(r);
|
|
11
|
+
}), t;
|
|
12
|
+
} catch {
|
|
13
|
+
return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(t), { name: e?.name });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region lib/bpsw_worker_wrap.ts
|
|
18
|
+
var i = null;
|
|
19
|
+
function a() {
|
|
20
|
+
return i ??= new e(new r({ name: "bpsw_worker" })), i;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { a as getWorker };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { AsyncWorker } from './async_worker';
|
|
2
|
-
export declare
|
|
2
|
+
export declare function getWorker(): AsyncWorker<bigint, boolean>;
|
|
@@ -4,27 +4,27 @@
|
|
|
4
4
|
* @param format
|
|
5
5
|
* @returns
|
|
6
6
|
*/
|
|
7
|
-
export declare
|
|
7
|
+
export declare function compress(raw: Uint8Array<ArrayBuffer>, format: CompressionFormat): Promise<Uint8Array<ArrayBuffer>>;
|
|
8
8
|
/**
|
|
9
9
|
* Decompress binary data
|
|
10
10
|
* @param compressed
|
|
11
11
|
* @param format
|
|
12
12
|
* @returns
|
|
13
13
|
*/
|
|
14
|
-
export declare
|
|
14
|
+
export declare function decompress(compressed: Uint8Array<ArrayBuffer>, format: CompressionFormat): Promise<Uint8Array<ArrayBuffer>>;
|
|
15
15
|
/**
|
|
16
16
|
* Compress string into Base64(URL)-encoded string
|
|
17
17
|
* @param str
|
|
18
|
-
* @param format
|
|
18
|
+
* @param format default: `deflate-raw`
|
|
19
19
|
* @param encoding default: `base64url`
|
|
20
20
|
* @returns
|
|
21
21
|
*/
|
|
22
|
-
export declare
|
|
22
|
+
export declare function compressString(str: string, format?: CompressionFormat, encoding?: 'base64' | 'base64url'): Promise<string>;
|
|
23
23
|
/**
|
|
24
24
|
* Decompress Base64(URL)-encoded data
|
|
25
25
|
* @param compressedString
|
|
26
|
-
* @param format
|
|
26
|
+
* @param format default: `deflate-raw`
|
|
27
27
|
* @param encoding default: `base64url`
|
|
28
28
|
* @returns
|
|
29
29
|
*/
|
|
30
|
-
export declare
|
|
30
|
+
export declare function decompressString(compressedString: string, format?: CompressionFormat, encoding?: 'base64' | 'base64url'): Promise<string>;
|
package/dist/esm/compression.js
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import { fromBase64 as e,
|
|
1
|
+
import { fromBase64 as e, toBase64 as t } from "./base64.js";
|
|
2
2
|
//#region lib/compression.ts
|
|
3
|
-
|
|
3
|
+
function n(e, t) {
|
|
4
4
|
let n = new Blob([e]).stream().pipeThrough(new CompressionStream(t));
|
|
5
5
|
return new Response(n).bytes();
|
|
6
|
-
}
|
|
6
|
+
}
|
|
7
|
+
function r(e, t) {
|
|
7
8
|
let n = new Blob([e]).stream().pipeThrough(new DecompressionStream(t));
|
|
8
9
|
return new Response(n).bytes();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
}
|
|
11
|
+
async function i(e, n = "deflate-raw", r = "base64url") {
|
|
12
|
+
let i = new Blob([e]).stream().pipeThrough(new CompressionStream(n));
|
|
13
|
+
return t(await new Response(i).bytes(), {
|
|
14
|
+
alphabet: r,
|
|
15
|
+
omitPadding: r === "base64url"
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function a(t, n = "deflate-raw", r = "base64url") {
|
|
19
|
+
let i = e(t, { alphabet: r }), a = new Blob([i]).stream().pipeThrough(new DecompressionStream(n));
|
|
20
|
+
return new Response(a).text();
|
|
21
|
+
}
|
|
18
22
|
//#endregion
|
|
19
|
-
export {
|
|
23
|
+
export { n as compress, i as compressString, r as decompress, a as decompressString };
|