@fhevm/sdk 1.1.0-alpha.5 → 1.1.0-alpha.6
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/_cjs/core/_version.js +1 -1
- package/_cjs/core/base/bytes.js +2 -1
- package/_cjs/core/base/bytes.js.map +1 -1
- package/_cjs/core/base/environment.js +122 -0
- package/_cjs/core/base/environment.js.map +1 -0
- package/_cjs/core/base/errors/Sha256VerificationError.js +15 -0
- package/_cjs/core/base/errors/Sha256VerificationError.js.map +1 -0
- package/_cjs/core/base/inflate.js +282 -0
- package/_cjs/core/base/inflate.js.map +1 -0
- package/_cjs/core/base/isomorphicFs.js +24 -0
- package/_cjs/core/base/isomorphicFs.js.map +1 -0
- package/_cjs/core/base/isomorphicWorker.js +42 -111
- package/_cjs/core/base/isomorphicWorker.js.map +1 -1
- package/_cjs/core/base/wasm.js +15 -55
- package/_cjs/core/base/wasm.js.map +1 -1
- package/_cjs/core/kms/TransportKeyPair-p.js +0 -4
- package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js +5 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/init-p.js +124 -39
- package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/init-p.js +148 -45
- package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_cjs/core/runtime/HyperWasmSolver-p.js +4 -4
- package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_cjs/core/runtime/initFhevmRuntime-p.js +1 -1
- package/_cjs/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_cjs/wasm/tfhe/loadTfheLib.js +11 -11
- package/_cjs/wasm/tfhe/loadTfheLib.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js +26 -9
- package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +28 -11
- package/_cjs/wasm/tfhe/v1.6.2/startWorkers.js.map +7 -0
- package/{_esm/wasm/tfhe/v1.6.1 → _cjs/wasm/tfhe/v1.6.2}/tfhe-worker.mjs +40 -40
- package/{_esm/wasm/tfhe/v1.6.1 → _cjs/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
- package/_cjs/wasm/tfhe/v1.6.2/tfhe.js.map +7 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +35 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js.map +7 -0
- package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
- package/_cjs/wasm/wasmBaseUrl.js +8 -19
- package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
- package/_esm/core/_version.js +1 -1
- package/_esm/core/base/bytes.js +2 -1
- package/_esm/core/base/bytes.js.map +1 -1
- package/_esm/core/base/environment.js +164 -0
- package/_esm/core/base/environment.js.map +1 -0
- package/_esm/core/base/errors/Sha256VerificationError.js +11 -0
- package/_esm/core/base/errors/Sha256VerificationError.js.map +1 -0
- package/_esm/core/base/inflate.js +337 -0
- package/_esm/core/base/inflate.js.map +1 -0
- package/_esm/core/base/isomorphicFs.js +21 -0
- package/_esm/core/base/isomorphicFs.js.map +1 -0
- package/_esm/core/base/isomorphicWorker.js +92 -85
- package/_esm/core/base/isomorphicWorker.js.map +1 -1
- package/_esm/core/base/wasm.js +25 -31
- package/_esm/core/base/wasm.js.map +1 -1
- package/_esm/core/kms/TransportKeyPair-p.js +0 -4
- package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js +5 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_esm/core/modules/decrypt/module/init-p.js +109 -54
- package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/encrypt/module/init-p.js +300 -53
- package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_esm/core/runtime/HyperWasmSolver-p.js +4 -4
- package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_esm/core/runtime/initFhevmRuntime-p.js +1 -1
- package/_esm/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_esm/wasm/tfhe/loadTfheLib.js +11 -11
- package/_esm/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
- package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
- package/{_cjs/wasm/tfhe/v1.6.1 → _esm/wasm/tfhe/v1.6.2}/tfhe-worker.mjs +40 -40
- package/{_types/wasm/tfhe/v1.6.1 → _esm/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
- package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
- package/_esm/wasm/wasmBaseUrl.js +17 -54
- package/_types/core/base/bytes.d.ts.map +1 -1
- package/_types/core/base/environment.d.ts +92 -0
- package/_types/core/base/environment.d.ts.map +1 -0
- package/_types/core/base/errors/Sha256VerificationError.d.ts +14 -0
- package/_types/core/base/errors/Sha256VerificationError.d.ts.map +1 -0
- package/_types/core/base/inflate.d.ts +25 -0
- package/_types/core/base/inflate.d.ts.map +1 -0
- package/_types/core/base/isomorphicFs.d.ts +2 -0
- package/_types/core/base/isomorphicFs.d.ts.map +1 -0
- package/_types/core/base/isomorphicWorker.d.ts +27 -43
- package/_types/core/base/isomorphicWorker.d.ts.map +1 -1
- package/_types/core/base/wasm.d.ts +0 -8
- package/_types/core/base/wasm.d.ts.map +1 -1
- package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/types/wasmAssets.d.ts.map +1 -1
- package/_types/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/{wasm/tfhe/v1.6.1 → _types/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/core/_version.ts +1 -1
- package/core/base/bytes.ts +2 -1
- package/core/base/environment.ts +210 -0
- package/core/base/errors/Sha256VerificationError.ts +22 -0
- package/core/base/inflate.ts +373 -0
- package/core/base/isomorphicFs.ts +23 -0
- package/core/base/isomorphicWorker.ts +96 -123
- package/core/base/wasm.ts +28 -35
- package/core/kms/TransportKeyPair-p.ts +0 -5
- package/core/kms/createKmsUserDecryptEip712.ts +8 -1
- package/core/modules/decrypt/module/init-p.ts +148 -59
- package/core/modules/encrypt/module/init-p.ts +368 -63
- package/core/runtime/HyperWasmSolver-p.ts +4 -4
- package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
- package/core/runtime/initFhevmRuntime-p.ts +1 -1
- package/core/types/wasmAssets.ts +58 -0
- package/package.json +1 -1
- package/wasm/tfhe/TfheApi.d.ts +12 -12
- package/wasm/tfhe/loadTfheLib.js +11 -11
- package/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
- package/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/wasm/tfhe/v1.6.0-dev/startWorkers.js +41 -20
- package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +3 -0
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
- package/{_cjs/wasm/tfhe/v1.6.1 → wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
- package/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
- package/wasm/wasmBaseUrl.js +17 -54
- package/_cjs/wasm/tfhe/v1.6.1/startWorkers.js.map +0 -7
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +0 -7
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -35
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js.map +0 -7
- package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
- package/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
- /package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
+
// Vendored, dependency-free DEFLATE / gzip / zlib inflater.
|
|
3
|
+
//
|
|
4
|
+
// Why this exists: the SDK embeds its WASM as gzip-compressed base64 and normally
|
|
5
|
+
// inflates it with the platform `DecompressionStream`. Some runtimes have no usable
|
|
6
|
+
// `DecompressionStream` — older browsers (Firefox <113, Safari <16.4) and the
|
|
7
|
+
// Next.js Edge Runtime (which exposes a global stub that throws on construction, see
|
|
8
|
+
// `supportsDecompressionStream` in environment.ts). For those, callers fall back to
|
|
9
|
+
// this pure-JS inflater, which runs in any JS runtime with no platform API and no
|
|
10
|
+
// third-party dependency.
|
|
11
|
+
//
|
|
12
|
+
// The DEFLATE decoder is a TypeScript reimplementation of the public-domain "tinf"
|
|
13
|
+
// inflate (Joergen Ibsen), itself derived from Mark Adler's zlib "puff" reference.
|
|
14
|
+
// It supports all RFC 1951 block types (stored, fixed-Huffman, dynamic-Huffman) and
|
|
15
|
+
// adds the RFC 1952 (gzip) and RFC 1950 (zlib) container framings. Per-call state is
|
|
16
|
+
// allocated fresh (no shared mutable globals); only the immutable static tables are
|
|
17
|
+
// shared. Decompression happens once per WASM load, so allocation cost is irrelevant.
|
|
18
|
+
function newTree(maxSymbols) {
|
|
19
|
+
return { counts: new Uint16Array(16), symbols: new Uint16Array(maxSymbols) };
|
|
20
|
+
}
|
|
21
|
+
// ---- Immutable static tables (built once at module load) --------------------
|
|
22
|
+
// Length codes 257..285: extra-bit counts and base lengths (index = symbol - 257).
|
|
23
|
+
const LENGTH_BITS = new Uint8Array(30);
|
|
24
|
+
const LENGTH_BASE = new Uint16Array(30);
|
|
25
|
+
// Distance codes 0..29: extra-bit counts and base distances.
|
|
26
|
+
const DIST_BITS = new Uint8Array(30);
|
|
27
|
+
const DIST_BASE = new Uint16Array(30);
|
|
28
|
+
// Order in which code-length-code lengths are stored (RFC 1951 §3.2.7).
|
|
29
|
+
const CLC_ORDER = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
|
|
30
|
+
const FIXED_LTREE = newTree(288);
|
|
31
|
+
const FIXED_DTREE = newTree(30);
|
|
32
|
+
function buildBitsBase(bits, base, delta, first) {
|
|
33
|
+
for (let i = 0; i < delta; i++) {
|
|
34
|
+
bits[i] = 0;
|
|
35
|
+
}
|
|
36
|
+
for (let i = 0; i < 30 - delta; i++) {
|
|
37
|
+
bits[i + delta] = Math.floor(i / delta);
|
|
38
|
+
}
|
|
39
|
+
let sum = first;
|
|
40
|
+
for (let i = 0; i < 30; i++) {
|
|
41
|
+
base[i] = sum;
|
|
42
|
+
sum += 1 << bits[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function buildFixedTrees(lt, dt) {
|
|
46
|
+
for (let i = 0; i < 7; i++) {
|
|
47
|
+
lt.counts[i] = 0;
|
|
48
|
+
}
|
|
49
|
+
lt.counts[7] = 24;
|
|
50
|
+
lt.counts[8] = 152;
|
|
51
|
+
lt.counts[9] = 112;
|
|
52
|
+
for (let i = 0; i < 24; i++) {
|
|
53
|
+
lt.symbols[i] = 256 + i;
|
|
54
|
+
}
|
|
55
|
+
for (let i = 0; i < 144; i++) {
|
|
56
|
+
lt.symbols[24 + i] = i;
|
|
57
|
+
}
|
|
58
|
+
for (let i = 0; i < 8; i++) {
|
|
59
|
+
lt.symbols[24 + 144 + i] = 280 + i;
|
|
60
|
+
}
|
|
61
|
+
for (let i = 0; i < 112; i++) {
|
|
62
|
+
lt.symbols[24 + 144 + 8 + i] = 144 + i;
|
|
63
|
+
}
|
|
64
|
+
for (let i = 0; i < 5; i++) {
|
|
65
|
+
dt.counts[i] = 0;
|
|
66
|
+
}
|
|
67
|
+
dt.counts[5] = 32;
|
|
68
|
+
for (let i = 0; i < 32; i++) {
|
|
69
|
+
dt.symbols[i] = i;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
buildBitsBase(LENGTH_BITS, LENGTH_BASE, 4, 3);
|
|
73
|
+
buildBitsBase(DIST_BITS, DIST_BASE, 2, 1);
|
|
74
|
+
// Length code 285 has no extra bits and a fixed length of 258 (the generic formula
|
|
75
|
+
// above would assign it extra bits; override it).
|
|
76
|
+
LENGTH_BITS[28] = 0;
|
|
77
|
+
LENGTH_BASE[28] = 258;
|
|
78
|
+
buildFixedTrees(FIXED_LTREE, FIXED_DTREE);
|
|
79
|
+
// ---- Bit reader -------------------------------------------------------------
|
|
80
|
+
function readBits(d, num, base) {
|
|
81
|
+
if (num === 0) {
|
|
82
|
+
return base;
|
|
83
|
+
}
|
|
84
|
+
while (d.bitcount < 24) {
|
|
85
|
+
d.tag |= d.source[d.pos++] << d.bitcount;
|
|
86
|
+
d.bitcount += 8;
|
|
87
|
+
}
|
|
88
|
+
const val = d.tag & (0xffff >>> (16 - num));
|
|
89
|
+
d.tag >>>= num;
|
|
90
|
+
d.bitcount -= num;
|
|
91
|
+
return val + base;
|
|
92
|
+
}
|
|
93
|
+
function decodeSymbol(d, t) {
|
|
94
|
+
while (d.bitcount < 24) {
|
|
95
|
+
d.tag |= d.source[d.pos++] << d.bitcount;
|
|
96
|
+
d.bitcount += 8;
|
|
97
|
+
}
|
|
98
|
+
let sum = 0;
|
|
99
|
+
let cur = 0;
|
|
100
|
+
let len = 0;
|
|
101
|
+
let tag = d.tag;
|
|
102
|
+
// Walk the canonical-Huffman code one bit at a time until the running code
|
|
103
|
+
// value falls within the range of codes of the current length.
|
|
104
|
+
do {
|
|
105
|
+
cur = 2 * cur + (tag & 1);
|
|
106
|
+
tag >>>= 1;
|
|
107
|
+
len++;
|
|
108
|
+
sum += t.counts[len];
|
|
109
|
+
cur -= t.counts[len];
|
|
110
|
+
} while (cur >= 0);
|
|
111
|
+
d.tag = tag;
|
|
112
|
+
d.bitcount -= len;
|
|
113
|
+
return t.symbols[sum + cur];
|
|
114
|
+
}
|
|
115
|
+
// ---- Tree / block decoding --------------------------------------------------
|
|
116
|
+
function buildTree(t, lengths, off, num) {
|
|
117
|
+
for (let i = 0; i < 16; i++) {
|
|
118
|
+
t.counts[i] = 0;
|
|
119
|
+
}
|
|
120
|
+
for (let i = 0; i < num; i++) {
|
|
121
|
+
const codeLen = lengths[off + i];
|
|
122
|
+
t.counts[codeLen] = t.counts[codeLen] + 1;
|
|
123
|
+
}
|
|
124
|
+
t.counts[0] = 0;
|
|
125
|
+
const offsets = new Uint16Array(16);
|
|
126
|
+
let sum = 0;
|
|
127
|
+
for (let i = 0; i < 16; i++) {
|
|
128
|
+
offsets[i] = sum;
|
|
129
|
+
sum += t.counts[i];
|
|
130
|
+
}
|
|
131
|
+
for (let i = 0; i < num; i++) {
|
|
132
|
+
const codeLen = lengths[off + i];
|
|
133
|
+
if (codeLen !== 0) {
|
|
134
|
+
const slot = offsets[codeLen];
|
|
135
|
+
t.symbols[slot] = i;
|
|
136
|
+
offsets[codeLen] = slot + 1;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function decodeTrees(d, lt, dt) {
|
|
141
|
+
const codeTree = newTree(19);
|
|
142
|
+
const lengths = new Uint8Array(288 + 32);
|
|
143
|
+
const hlit = readBits(d, 5, 257);
|
|
144
|
+
const hdist = readBits(d, 5, 1);
|
|
145
|
+
const hclen = readBits(d, 4, 4);
|
|
146
|
+
for (let i = 0; i < hclen; i++) {
|
|
147
|
+
lengths[CLC_ORDER[i]] = readBits(d, 3, 0);
|
|
148
|
+
}
|
|
149
|
+
buildTree(codeTree, lengths, 0, 19);
|
|
150
|
+
let num = 0;
|
|
151
|
+
while (num < hlit + hdist) {
|
|
152
|
+
const sym = decodeSymbol(d, codeTree);
|
|
153
|
+
if (sym === 16) {
|
|
154
|
+
// Repeat previous code length 3..6 times.
|
|
155
|
+
const prev = lengths[num - 1];
|
|
156
|
+
for (let length = readBits(d, 2, 3); length > 0; length--) {
|
|
157
|
+
lengths[num++] = prev;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else if (sym === 17) {
|
|
161
|
+
// Repeat zero 3..10 times.
|
|
162
|
+
for (let length = readBits(d, 3, 3); length > 0; length--) {
|
|
163
|
+
lengths[num++] = 0;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else if (sym === 18) {
|
|
167
|
+
// Repeat zero 11..138 times.
|
|
168
|
+
for (let length = readBits(d, 7, 11); length > 0; length--) {
|
|
169
|
+
lengths[num++] = 0;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
lengths[num++] = sym;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
buildTree(lt, lengths, 0, hlit);
|
|
177
|
+
buildTree(dt, lengths, hlit, hdist);
|
|
178
|
+
}
|
|
179
|
+
function ensureCapacity(d, extra) {
|
|
180
|
+
const needed = d.destLen + extra;
|
|
181
|
+
if (needed <= d.dest.length) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
let newLen = d.dest.length * 2;
|
|
185
|
+
while (newLen < needed) {
|
|
186
|
+
newLen *= 2;
|
|
187
|
+
}
|
|
188
|
+
const bigger = new Uint8Array(newLen);
|
|
189
|
+
bigger.set(d.dest);
|
|
190
|
+
d.dest = bigger;
|
|
191
|
+
}
|
|
192
|
+
function inflateBlock(d, lt, dt) {
|
|
193
|
+
for (;;) {
|
|
194
|
+
let sym = decodeSymbol(d, lt);
|
|
195
|
+
if (sym === 256) {
|
|
196
|
+
return; // end of block
|
|
197
|
+
}
|
|
198
|
+
if (sym < 256) {
|
|
199
|
+
ensureCapacity(d, 1);
|
|
200
|
+
d.dest[d.destLen++] = sym;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
sym -= 257;
|
|
204
|
+
const length = readBits(d, LENGTH_BITS[sym], LENGTH_BASE[sym]);
|
|
205
|
+
const distSym = decodeSymbol(d, dt);
|
|
206
|
+
const dist = readBits(d, DIST_BITS[distSym], DIST_BASE[distSym]);
|
|
207
|
+
const start = d.destLen - dist;
|
|
208
|
+
ensureCapacity(d, length);
|
|
209
|
+
// LZ77 back-reference: copy byte-by-byte (ranges may overlap, e.g. run-length).
|
|
210
|
+
for (let i = 0; i < length; i++) {
|
|
211
|
+
d.dest[d.destLen++] = d.dest[start + i];
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function inflateStoredBlock(d) {
|
|
217
|
+
// Stored blocks are byte-aligned: push whole bytes back into the source so the
|
|
218
|
+
// LEN/NLEN fields are read from byte boundaries.
|
|
219
|
+
while (d.bitcount > 8) {
|
|
220
|
+
d.pos--;
|
|
221
|
+
d.bitcount -= 8;
|
|
222
|
+
}
|
|
223
|
+
const length = (d.source[d.pos + 1] << 8) | d.source[d.pos];
|
|
224
|
+
const invLength = (d.source[d.pos + 3] << 8) | d.source[d.pos + 2];
|
|
225
|
+
if (length !== (~invLength & 0xffff) >>> 0) {
|
|
226
|
+
throw new Error('inflate: invalid stored block length');
|
|
227
|
+
}
|
|
228
|
+
d.pos += 4;
|
|
229
|
+
ensureCapacity(d, length);
|
|
230
|
+
for (let i = length; i > 0; i--) {
|
|
231
|
+
d.dest[d.destLen++] = d.source[d.pos++];
|
|
232
|
+
}
|
|
233
|
+
d.tag = 0;
|
|
234
|
+
d.bitcount = 0;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Inflates a raw DEFLATE (RFC 1951) byte stream — no gzip/zlib container.
|
|
238
|
+
*
|
|
239
|
+
* @param source - raw DEFLATE bytes.
|
|
240
|
+
* @param sizeHint - expected uncompressed size, if known (e.g. gzip ISIZE). Used to
|
|
241
|
+
* pre-size the output buffer and avoid reallocation; correctness does not depend on
|
|
242
|
+
* it (the buffer grows as needed).
|
|
243
|
+
*/
|
|
244
|
+
export function inflateRaw(source, sizeHint) {
|
|
245
|
+
const initialSize = sizeHint !== undefined && sizeHint > 0 ? sizeHint : Math.max(source.length * 4, 1024);
|
|
246
|
+
const d = {
|
|
247
|
+
source,
|
|
248
|
+
pos: 0,
|
|
249
|
+
tag: 0,
|
|
250
|
+
bitcount: 0,
|
|
251
|
+
dest: new Uint8Array(initialSize),
|
|
252
|
+
destLen: 0,
|
|
253
|
+
};
|
|
254
|
+
for (;;) {
|
|
255
|
+
const bfinal = readBits(d, 1, 0);
|
|
256
|
+
const btype = readBits(d, 2, 0);
|
|
257
|
+
if (btype === 0) {
|
|
258
|
+
inflateStoredBlock(d);
|
|
259
|
+
}
|
|
260
|
+
else if (btype === 1) {
|
|
261
|
+
inflateBlock(d, FIXED_LTREE, FIXED_DTREE);
|
|
262
|
+
}
|
|
263
|
+
else if (btype === 2) {
|
|
264
|
+
const lt = newTree(288);
|
|
265
|
+
const dt = newTree(32);
|
|
266
|
+
decodeTrees(d, lt, dt);
|
|
267
|
+
inflateBlock(d, lt, dt);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
throw new Error('inflate: invalid block type');
|
|
271
|
+
}
|
|
272
|
+
if (bfinal !== 0) {
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return d.dest.subarray(0, d.destLen);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Decompresses a gzip (RFC 1952) stream: validates the magic + method, skips the
|
|
280
|
+
* optional header fields, inflates the DEFLATE body, and pre-sizes the output from
|
|
281
|
+
* the trailer's ISIZE (uncompressed size mod 2^32).
|
|
282
|
+
*/
|
|
283
|
+
export function gunzip(source) {
|
|
284
|
+
if (source.length < 18 || source[0] !== 0x1f || source[1] !== 0x8b) {
|
|
285
|
+
throw new Error('gunzip: not a gzip stream');
|
|
286
|
+
}
|
|
287
|
+
if (source[2] !== 8) {
|
|
288
|
+
throw new Error(`gunzip: unsupported compression method ${String(source[2])}`);
|
|
289
|
+
}
|
|
290
|
+
const flg = source[3];
|
|
291
|
+
let pos = 10; // fixed gzip header size
|
|
292
|
+
if ((flg & 0x04) !== 0) {
|
|
293
|
+
// FEXTRA: 2-byte length + payload
|
|
294
|
+
pos += 2 + ((source[pos] | (source[pos + 1] << 8)) >>> 0);
|
|
295
|
+
}
|
|
296
|
+
if ((flg & 0x08) !== 0) {
|
|
297
|
+
// FNAME: NUL-terminated
|
|
298
|
+
while (source[pos] !== 0) {
|
|
299
|
+
pos++;
|
|
300
|
+
}
|
|
301
|
+
pos++;
|
|
302
|
+
}
|
|
303
|
+
if ((flg & 0x10) !== 0) {
|
|
304
|
+
// FCOMMENT: NUL-terminated
|
|
305
|
+
while (source[pos] !== 0) {
|
|
306
|
+
pos++;
|
|
307
|
+
}
|
|
308
|
+
pos++;
|
|
309
|
+
}
|
|
310
|
+
if ((flg & 0x02) !== 0) {
|
|
311
|
+
// FHCRC: 2-byte header CRC
|
|
312
|
+
pos += 2;
|
|
313
|
+
}
|
|
314
|
+
const n = source.length;
|
|
315
|
+
const isize = (source[n - 4] | (source[n - 3] << 8) | (source[n - 2] << 16) | (source[n - 1] << 24)) >>> 0;
|
|
316
|
+
return inflateRaw(source.subarray(pos), isize);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Pure-JS equivalent of `DecompressionStream` for the formats the SDK emits.
|
|
320
|
+
* Use as the fallback when `supportsDecompressionStream()` is false.
|
|
321
|
+
*
|
|
322
|
+
* - `gzip` — RFC 1952 (magic + header + DEFLATE + CRC/ISIZE trailer).
|
|
323
|
+
* - `deflate` — RFC 1950 zlib (2-byte header + DEFLATE + Adler-32 trailer).
|
|
324
|
+
* - `deflate-raw` — RFC 1951 raw DEFLATE.
|
|
325
|
+
*/
|
|
326
|
+
export function inflateDecompress(source, format) {
|
|
327
|
+
if (format === 'gzip') {
|
|
328
|
+
return gunzip(source);
|
|
329
|
+
}
|
|
330
|
+
if (format === 'deflate-raw') {
|
|
331
|
+
return inflateRaw(source);
|
|
332
|
+
}
|
|
333
|
+
// 'deflate' (zlib): skip the 2-byte CMF/FLG header; inflate stops at the final
|
|
334
|
+
// block, so the 4-byte Adler-32 trailer is simply never read.
|
|
335
|
+
return inflateRaw(source.subarray(2));
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=inflate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inflate.js","sourceRoot":"","sources":["../../../core/base/inflate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getNodeFs, getNodeUrl, isNodeLike } from './environment.js';
|
|
2
|
+
export async function isomorphicFileUrlExists(url) {
|
|
3
|
+
if (url?.protocol !== 'file:') {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
if (!isNodeLike()) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
const [fs, urlMod] = await Promise.all([getNodeFs(), getNodeUrl()]);
|
|
10
|
+
if (!fs || !urlMod) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
await fs.access(urlMod.fileURLToPath(url));
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=isomorphicFs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isomorphicFs.js","sourceRoot":"","sources":["../../../core/base/isomorphicFs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAoB;IAChE,IAAI,GAAG,EAAE,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1,41 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export function isBrowserLike() {
|
|
5
|
-
return (
|
|
6
|
-
// @ts-expect-error - Bun is a runtime global only under Bun
|
|
7
|
-
typeof Bun === 'undefined' &&
|
|
8
|
-
// eslint-disable-next-line no-restricted-globals
|
|
9
|
-
typeof process === 'undefined' &&
|
|
10
|
-
typeof addEventListener === 'function' &&
|
|
11
|
-
typeof removeEventListener === 'function');
|
|
1
|
+
import { getNodeWorker, supportsWebWorkerApi } from './environment.js';
|
|
2
|
+
export async function supportsNodeWorkerApi() {
|
|
3
|
+
return (await getNodeWorker()) !== undefined;
|
|
12
4
|
}
|
|
5
|
+
let _resolvedWorkerApi;
|
|
13
6
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
7
|
+
* Resolves which worker backend the SDK will use, preferring the Web Worker
|
|
8
|
+
* API whenever it is available. Memoized — the answer can't change within a
|
|
9
|
+
* process lifetime.
|
|
10
|
+
*
|
|
11
|
+
* - Web is preferred because it works in every browser context, including the
|
|
12
|
+
* sandboxed Electron renderer (where `node:worker_threads` is unavailable
|
|
13
|
+
* even though `process.versions.node` is set).
|
|
14
|
+
* - Node is the fallback for runtimes with no Web Worker global (Node, jsdom).
|
|
15
|
+
*
|
|
16
|
+
* Runtime support matrix:
|
|
17
|
+
*
|
|
18
|
+
* | Runtime | Web API | Node API | Selected |
|
|
19
|
+
* | ----------------------------- | :-----: | :------: | :------: |
|
|
20
|
+
* | Browser (window / web worker) | yes | no | web |
|
|
21
|
+
* | Sandboxed Electron renderer | yes | no | web |
|
|
22
|
+
* | Node.js | no | yes | node |
|
|
23
|
+
* | jsdom (Vitest) | no | yes | node |
|
|
24
|
+
* | Deno | yes | yes | web |
|
|
25
|
+
* | Bun | yes | yes | node * |
|
|
26
|
+
*
|
|
27
|
+
* * Bun supports both backends, but is forced to `node`: it has first-class
|
|
28
|
+
* `worker_threads` support and we keep it on the Node path for parity with
|
|
29
|
+
* plain Node.
|
|
30
|
+
*
|
|
31
|
+
* Note: this reports the *intended* API based on API availability, not a
|
|
32
|
+
* guarantee of success — Web Worker creation can still fail at the call site
|
|
33
|
+
* (e.g. CSP blocking `worker-src blob:`). The creation site must surface that.
|
|
16
34
|
*/
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
export function resolveWorkerApi() {
|
|
36
|
+
_resolvedWorkerApi ??= (async () => {
|
|
37
|
+
try {
|
|
38
|
+
// @ts-expect-error - Bun is a runtime global only under Bun
|
|
39
|
+
const isBun = typeof Bun !== 'undefined';
|
|
40
|
+
// Preference order is runtime-specific:
|
|
41
|
+
// - Bun has first-class worker_threads, so prefer Node for parity with
|
|
42
|
+
// plain Node, falling back to Web only if it's somehow unavailable.
|
|
43
|
+
// - Everywhere else, prefer the Web Worker API (browsers, the sandboxed
|
|
44
|
+
// Electron renderer, Deno), falling back to Node (Node.js, jsdom).
|
|
45
|
+
//
|
|
46
|
+
// Probes stay short-circuited on purpose: on the non-Bun path the
|
|
47
|
+
// synchronous Web check runs first so a browser never triggers the
|
|
48
|
+
// `node:worker_threads` dynamic import (the "sync win"). Each probe runs
|
|
49
|
+
// at most once per call.
|
|
50
|
+
if (isBun) {
|
|
51
|
+
if (await supportsNodeWorkerApi()) {
|
|
52
|
+
return 'node';
|
|
53
|
+
}
|
|
54
|
+
if (supportsWebWorkerApi()) {
|
|
55
|
+
return 'web';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (supportsWebWorkerApi()) {
|
|
60
|
+
return 'web';
|
|
61
|
+
}
|
|
62
|
+
if (await supportsNodeWorkerApi()) {
|
|
63
|
+
return 'node';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw new Error('No worker backend available (neither Web Worker nor node:worker_threads).');
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
// Never cache a rejected resolution — otherwise a single (possibly
|
|
70
|
+
// transient) failure would poison every future call. The underlying
|
|
71
|
+
// probes are themselves memoized, so retrying stays cheap.
|
|
72
|
+
_resolvedWorkerApi = undefined;
|
|
73
|
+
throw e;
|
|
74
|
+
}
|
|
75
|
+
})();
|
|
76
|
+
return _resolvedWorkerApi;
|
|
33
77
|
}
|
|
34
78
|
/*
|
|
35
79
|
TODO: add support for TrustedScriptURL if needed
|
|
36
80
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
81
|
+
async function createIsomorphicWorkerFromCode(jsCode) {
|
|
82
|
+
const workerApi = await resolveWorkerApi();
|
|
83
|
+
//if (isBrowserLike()) {
|
|
84
|
+
if (workerApi === 'web') {
|
|
39
85
|
const blob = new Blob([jsCode], { type: 'application/javascript' });
|
|
40
86
|
const blobUrl = URL.createObjectURL(blob);
|
|
41
87
|
try {
|
|
@@ -46,9 +92,14 @@ export async function createIsomorphicWorkerFromCode(jsCode) {
|
|
|
46
92
|
URL.revokeObjectURL(blobUrl);
|
|
47
93
|
}
|
|
48
94
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
95
|
+
// workerApi === 'node'. Both 'node' paths in resolveWorkerApi pre-probe via
|
|
96
|
+
// supportsNodeWorkerApi, so this is already confirmed (and memoized) — the
|
|
97
|
+
// guard is here to narrow the `| undefined` type and to stay correct if that
|
|
98
|
+
// invariant ever changes.
|
|
99
|
+
const NodeWorker = await getNodeWorker();
|
|
100
|
+
if (!NodeWorker) {
|
|
101
|
+
throw new Error('No worker backend available (node:worker_threads unavailable).');
|
|
102
|
+
}
|
|
52
103
|
return new NodeWorker(jsCode, { eval: true });
|
|
53
104
|
}
|
|
54
105
|
/**
|
|
@@ -69,7 +120,8 @@ export async function createIsomorphicWorkerFromCode(jsCode) {
|
|
|
69
120
|
* @param input - Value sent to the worker via postMessage (must be structured-cloneable).
|
|
70
121
|
* @param timeoutMs - Max execution time before the worker is killed. Default: 30s.
|
|
71
122
|
*/
|
|
72
|
-
|
|
123
|
+
async function runCodeInIsomorphicWorker(code, input, timeoutMs = 30_000) {
|
|
124
|
+
const workerApi = await resolveWorkerApi();
|
|
73
125
|
const browserCode = `
|
|
74
126
|
self.onmessage = async ({ data }) => {
|
|
75
127
|
try {
|
|
@@ -91,7 +143,8 @@ export async function runCodeInIsomorphicWorker(code, input, timeoutMs = 30_000)
|
|
|
91
143
|
}
|
|
92
144
|
});
|
|
93
145
|
`;
|
|
94
|
-
const workerCode = isBrowserLike() ? browserCode : nodeCode;
|
|
146
|
+
//const workerCode = isBrowserLike() ? browserCode : nodeCode;
|
|
147
|
+
const workerCode = workerApi === 'web' ? browserCode : nodeCode;
|
|
95
148
|
const worker = await createIsomorphicWorkerFromCode(workerCode);
|
|
96
149
|
return new Promise((resolve, reject) => {
|
|
97
150
|
// Guards against double-settle (e.g. "exit" firing after "message")
|
|
@@ -185,7 +238,9 @@ export async function runCodeInIsomorphicWorker(code, input, timeoutMs = 30_000)
|
|
|
185
238
|
* - Experimental permission model restricts worker creation.
|
|
186
239
|
* @see https://nodejs.org/api/permissions.html
|
|
187
240
|
*
|
|
188
|
-
* When this returns `false`,
|
|
241
|
+
* When this returns `false`, blob/eval-based workers are unavailable in this
|
|
242
|
+
* environment (e.g. blocked by CSP `worker-src`/`script-src`, or Node's
|
|
243
|
+
* code-generation restrictions), and code cannot be run in an isomorphic worker.
|
|
189
244
|
*/
|
|
190
245
|
let _blobWorkerSupportedPromise;
|
|
191
246
|
export function isBlobWorkerSupported() {
|
|
@@ -193,52 +248,4 @@ export function isBlobWorkerSupported() {
|
|
|
193
248
|
_blobWorkerSupportedPromise ??= runCodeInIsomorphicWorker(`return data + " world!";`, 'hello', 5000).then((res) => res === 'hello world!', () => false);
|
|
194
249
|
return _blobWorkerSupportedPromise;
|
|
195
250
|
}
|
|
196
|
-
function createBrowserLikeWorker(url) {
|
|
197
|
-
return new Worker(url, {
|
|
198
|
-
type: 'module',
|
|
199
|
-
name: 'wasm_bindgen_worker',
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
async function createNodeLikeWorker(url) {
|
|
203
|
-
const nodeWorkerModuleName = 'worker_threads';
|
|
204
|
-
const nodeWorkerModuleId = `node:${nodeWorkerModuleName}`;
|
|
205
|
-
const { Worker: NodeWorker } = (await import(/* @vite-ignore */ nodeWorkerModuleId));
|
|
206
|
-
// Node's Worker doesn't support data: or blob: URLs.
|
|
207
|
-
// For data: URLs, extract the code and use eval mode.
|
|
208
|
-
if (url.startsWith('data:')) {
|
|
209
|
-
const base64 = url.split(',')[1];
|
|
210
|
-
if (base64 === undefined) {
|
|
211
|
-
throw new Error('Invalid data url');
|
|
212
|
-
}
|
|
213
|
-
const nodeBufferModuleName = 'buffer';
|
|
214
|
-
const nodeBufferModuleId = `node:${nodeBufferModuleName}`;
|
|
215
|
-
const { Buffer: NodeBuffer } = (await import(/* @vite-ignore */ nodeBufferModuleId));
|
|
216
|
-
//const res = await fetch("data:application/octet-stream;base64," + data);
|
|
217
|
-
const code = NodeBuffer.from(base64, 'base64').toString('utf-8');
|
|
218
|
-
return new NodeWorker(code, { eval: true });
|
|
219
|
-
}
|
|
220
|
-
return new NodeWorker(url);
|
|
221
|
-
}
|
|
222
|
-
export function waitForMsgType(target, type) {
|
|
223
|
-
return new Promise((resolve) => {
|
|
224
|
-
if (isNodePort(target)) {
|
|
225
|
-
// Node: EventEmitter, data passed directly
|
|
226
|
-
target.on('message', function onMsg(data) {
|
|
227
|
-
if (data.type !== type)
|
|
228
|
-
return;
|
|
229
|
-
target.off('message', onMsg);
|
|
230
|
-
resolve(data);
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
// Browser: DOM events, data wrapped in MessageEvent
|
|
235
|
-
target.addEventListener('message', function onMsg({ data }) {
|
|
236
|
-
if (data.type !== type)
|
|
237
|
-
return;
|
|
238
|
-
target.removeEventListener('message', onMsg);
|
|
239
|
-
resolve(data);
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
251
|
//# sourceMappingURL=isomorphicWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isomorphicWorker.js","sourceRoot":"","sources":["../../../core/base/isomorphicWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isomorphicWorker.js","sourceRoot":"","sources":["../../../core/base/isomorphicWorker.ts"],"names":[],"mappings":"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"}
|