@s8fy/pptx-parser 1.0.0 → 1.0.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/dist/index.cjs +7 -24649
- package/dist/index.js +10505 -17629
- package/dist/index.umd.js +7 -24653
- package/dist/js-worker.js +9702 -16453
- package/dist/pdf-worker.js +849 -1152
- package/dist/wasm-worker.js +515 -707
- package/package.json +2 -2
package/dist/wasm-worker.js
CHANGED
|
@@ -1,70 +1,59 @@
|
|
|
1
|
+
//#endregion
|
|
1
2
|
//#region src/latin1.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const len = bytes.length;
|
|
9
|
-
if (len === 0) return "";
|
|
10
|
-
const chunks = [];
|
|
11
|
-
const CHUNK = 8192;
|
|
12
|
-
for (let i = 0; i < len; i += CHUNK) chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + CHUNK)));
|
|
13
|
-
return chunks.join("");
|
|
3
|
+
function uint8ArrayToLatin1(e) {
|
|
4
|
+
let t = e.length;
|
|
5
|
+
if (t === 0) return "";
|
|
6
|
+
let n = [], r = 8192;
|
|
7
|
+
for (let i = 0; i < t; i += r) n.push(String.fromCharCode.apply(null, e.subarray(i, i + r)));
|
|
8
|
+
return n.join("");
|
|
14
9
|
}
|
|
15
|
-
function arrayBufferToLatin1(
|
|
16
|
-
return uint8ArrayToLatin1(new Uint8Array(
|
|
10
|
+
function arrayBufferToLatin1(e) {
|
|
11
|
+
return uint8ArrayToLatin1(new Uint8Array(e));
|
|
17
12
|
}
|
|
18
13
|
//#endregion
|
|
19
14
|
//#region src/wasm-loader.ts
|
|
20
|
-
function fileUrl(
|
|
15
|
+
function fileUrl(e) {
|
|
21
16
|
try {
|
|
22
|
-
|
|
23
|
-
return
|
|
17
|
+
let t = e instanceof URL ? e : new URL(e);
|
|
18
|
+
return t.protocol === "file:" ? t : void 0;
|
|
24
19
|
} catch {
|
|
25
20
|
return;
|
|
26
21
|
}
|
|
27
22
|
}
|
|
28
|
-
function isUnsupportedNodeFileFetch(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return error instanceof TypeError && error.message === "fetch failed" && detail.includes("not implemented");
|
|
23
|
+
function isUnsupportedNodeFileFetch(e) {
|
|
24
|
+
let t = e?.cause, n = t instanceof Error ? t.message : "";
|
|
25
|
+
return e instanceof TypeError && e.message === "fetch failed" && n.includes("not implemented");
|
|
32
26
|
}
|
|
33
|
-
async function readNodeFile(
|
|
34
|
-
|
|
35
|
-
if (!
|
|
36
|
-
|
|
37
|
-
return
|
|
27
|
+
async function readNodeFile(e) {
|
|
28
|
+
let t = globalThis.process?.getBuiltinModule?.("node:fs")?.promises;
|
|
29
|
+
if (!t) throw Error(`Node.js file loading is unavailable for ${e.href}`);
|
|
30
|
+
let n = await t.readFile(e);
|
|
31
|
+
return n.buffer.slice(n.byteOffset, n.byteOffset + n.byteLength);
|
|
38
32
|
}
|
|
39
|
-
function assertWasmBytes(
|
|
40
|
-
|
|
41
|
-
if (
|
|
33
|
+
function assertWasmBytes(e, t, n, r) {
|
|
34
|
+
let i = new Uint8Array(e, 0, Math.min(e.byteLength, 4));
|
|
35
|
+
if (i.length !== 4 || i[0] !== 0 || i[1] !== 97 || i[2] !== 115 || i[3] !== 109) throw Error(`[${n}] Invalid WASM response from ${String(t)}: content-type=${r}, bytes=${e.byteLength}. Check that the WASM asset exists and is served by the app.`);
|
|
42
36
|
}
|
|
43
|
-
async function fetchWasmBytes(
|
|
44
|
-
let
|
|
37
|
+
async function fetchWasmBytes(e, t) {
|
|
38
|
+
let n;
|
|
45
39
|
try {
|
|
46
|
-
|
|
47
|
-
} catch (
|
|
48
|
-
|
|
49
|
-
if (!
|
|
50
|
-
|
|
51
|
-
assertWasmBytes(
|
|
52
|
-
return bytes;
|
|
40
|
+
n = await fetch(e);
|
|
41
|
+
} catch (n) {
|
|
42
|
+
let r = fileUrl(e);
|
|
43
|
+
if (!r || !isUnsupportedNodeFileFetch(n)) throw n;
|
|
44
|
+
let i = await readNodeFile(r);
|
|
45
|
+
return assertWasmBytes(i, e, t, "application/wasm"), i;
|
|
53
46
|
}
|
|
54
|
-
if (!
|
|
55
|
-
|
|
56
|
-
assertWasmBytes(
|
|
57
|
-
return bytes;
|
|
47
|
+
if (!n.ok) throw Error(`[${t}] Failed to load WASM ${String(e)}: ${n.status} ${n.statusText}`);
|
|
48
|
+
let r = await n.arrayBuffer();
|
|
49
|
+
return assertWasmBytes(r, e, t, n.headers.get("content-type") || "unknown"), r;
|
|
58
50
|
}
|
|
59
51
|
function createWasmStringConstants() {
|
|
60
|
-
return new Proxy(Object.create(null), { get: (
|
|
52
|
+
return new Proxy(Object.create(null), { get: (e, t) => typeof t == "string" ? t : void 0 });
|
|
61
53
|
}
|
|
62
54
|
//#endregion
|
|
63
55
|
//#region ../../node_modules/.pnpm/fflate@0.8.3/node_modules/fflate/esm/browser.js
|
|
64
|
-
var
|
|
65
|
-
var u16 = Uint16Array;
|
|
66
|
-
var i32 = Int32Array;
|
|
67
|
-
var fleb = new u8([
|
|
56
|
+
var e = Uint8Array, t = Uint16Array, n = Int32Array, r = new e([
|
|
68
57
|
0,
|
|
69
58
|
0,
|
|
70
59
|
0,
|
|
@@ -97,8 +86,7 @@ var fleb = new u8([
|
|
|
97
86
|
0,
|
|
98
87
|
0,
|
|
99
88
|
0
|
|
100
|
-
])
|
|
101
|
-
var fdeb = new u8([
|
|
89
|
+
]), i = new e([
|
|
102
90
|
0,
|
|
103
91
|
0,
|
|
104
92
|
0,
|
|
@@ -131,8 +119,7 @@ var fdeb = new u8([
|
|
|
131
119
|
13,
|
|
132
120
|
0,
|
|
133
121
|
0
|
|
134
|
-
])
|
|
135
|
-
var clim = new u8([
|
|
122
|
+
]), a = new e([
|
|
136
123
|
16,
|
|
137
124
|
17,
|
|
138
125
|
18,
|
|
@@ -152,85 +139,51 @@ var clim = new u8([
|
|
|
152
139
|
14,
|
|
153
140
|
1,
|
|
154
141
|
15
|
|
155
|
-
])
|
|
156
|
-
var
|
|
157
|
-
var
|
|
158
|
-
for (var i = 0; i < 31; ++i) b[i] = start += 1 << eb[i - 1];
|
|
159
|
-
var r = new i32(b[30]);
|
|
160
|
-
for (var i = 1; i < 30; ++i) for (var j = b[i]; j < b[i + 1]; ++j) r[j] = j - b[i] << 5 | i;
|
|
142
|
+
]), freb = function(e, r) {
|
|
143
|
+
for (var i = new t(31), a = 0; a < 31; ++a) i[a] = r += 1 << e[a - 1];
|
|
144
|
+
for (var o = new n(i[30]), a = 1; a < 30; ++a) for (var s = i[a]; s < i[a + 1]; ++s) o[s] = s - i[a] << 5 | a;
|
|
161
145
|
return {
|
|
162
|
-
b,
|
|
163
|
-
r
|
|
146
|
+
b: i,
|
|
147
|
+
r: o
|
|
164
148
|
};
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
var
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
var
|
|
174
|
-
for (var i = 0;
|
|
175
|
-
var
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;
|
|
179
|
-
}
|
|
180
|
-
var hMap = (function(cd, mb, r) {
|
|
181
|
-
var s = cd.length;
|
|
182
|
-
var i = 0;
|
|
183
|
-
var l = new u16(mb);
|
|
184
|
-
for (; i < s; ++i) if (cd[i]) ++l[cd[i] - 1];
|
|
185
|
-
var le = new u16(mb);
|
|
186
|
-
for (i = 1; i < mb; ++i) le[i] = le[i - 1] + l[i - 1] << 1;
|
|
187
|
-
var co;
|
|
149
|
+
}, o = freb(r, 2), s = o.b, c = o.r;
|
|
150
|
+
s[28] = 258, c[258] = 28;
|
|
151
|
+
var l = freb(i, 0), u = l.b;
|
|
152
|
+
l.r;
|
|
153
|
+
for (var d = new t(32768), f = 0; f < 32768; ++f) {
|
|
154
|
+
var p = (f & 43690) >> 1 | (f & 21845) << 1;
|
|
155
|
+
p = (p & 52428) >> 2 | (p & 13107) << 2, p = (p & 61680) >> 4 | (p & 3855) << 4, d[f] = ((p & 65280) >> 8 | (p & 255) << 8) >> 1;
|
|
156
|
+
}
|
|
157
|
+
for (var hMap = (function(e, n, r) {
|
|
158
|
+
for (var i = e.length, a = 0, o = new t(n); a < i; ++a) e[a] && ++o[e[a] - 1];
|
|
159
|
+
var s = new t(n);
|
|
160
|
+
for (a = 1; a < n; ++a) s[a] = s[a - 1] + o[a - 1] << 1;
|
|
161
|
+
var c;
|
|
188
162
|
if (r) {
|
|
189
|
-
|
|
190
|
-
var
|
|
191
|
-
for (
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
return
|
|
202
|
-
})
|
|
203
|
-
var
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
var m = a[0];
|
|
214
|
-
for (var i = 1; i < a.length; ++i) if (a[i] > m) m = a[i];
|
|
215
|
-
return m;
|
|
216
|
-
};
|
|
217
|
-
var bits = function(d, p, m) {
|
|
218
|
-
var o = p / 8 | 0;
|
|
219
|
-
return (d[o] | d[o + 1] << 8) >> (p & 7) & m;
|
|
220
|
-
};
|
|
221
|
-
var bits16 = function(d, p) {
|
|
222
|
-
var o = p / 8 | 0;
|
|
223
|
-
return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);
|
|
224
|
-
};
|
|
225
|
-
var shft = function(p) {
|
|
226
|
-
return (p + 7) / 8 | 0;
|
|
227
|
-
};
|
|
228
|
-
var slc = function(v, s, e) {
|
|
229
|
-
if (s == null || s < 0) s = 0;
|
|
230
|
-
if (e == null || e > v.length) e = v.length;
|
|
231
|
-
return new u8(v.subarray(s, e));
|
|
232
|
-
};
|
|
233
|
-
var ec = [
|
|
163
|
+
c = new t(1 << n);
|
|
164
|
+
var l = 15 - n;
|
|
165
|
+
for (a = 0; a < i; ++a) if (e[a]) for (var u = a << 4 | e[a], f = n - e[a], p = s[e[a] - 1]++ << f, m = p | (1 << f) - 1; p <= m; ++p) c[d[p] >> l] = u;
|
|
166
|
+
} else for (c = new t(i), a = 0; a < i; ++a) e[a] && (c[a] = d[s[e[a] - 1]++] >> 15 - e[a]);
|
|
167
|
+
return c;
|
|
168
|
+
}), m = new e(288), f = 0; f < 144; ++f) m[f] = 8;
|
|
169
|
+
for (var f = 144; f < 256; ++f) m[f] = 9;
|
|
170
|
+
for (var f = 256; f < 280; ++f) m[f] = 7;
|
|
171
|
+
for (var f = 280; f < 288; ++f) m[f] = 8;
|
|
172
|
+
for (var h = new e(32), f = 0; f < 32; ++f) h[f] = 5;
|
|
173
|
+
var g = /*#__PURE__*/ hMap(m, 9, 1), _ = /*#__PURE__*/ hMap(h, 5, 1), max = function(e) {
|
|
174
|
+
for (var t = e[0], n = 1; n < e.length; ++n) e[n] > t && (t = e[n]);
|
|
175
|
+
return t;
|
|
176
|
+
}, bits = function(e, t, n) {
|
|
177
|
+
var r = t / 8 | 0;
|
|
178
|
+
return (e[r] | e[r + 1] << 8) >> (t & 7) & n;
|
|
179
|
+
}, bits16 = function(e, t) {
|
|
180
|
+
var n = t / 8 | 0;
|
|
181
|
+
return (e[n] | e[n + 1] << 8 | e[n + 2] << 16) >> (t & 7);
|
|
182
|
+
}, shft = function(e) {
|
|
183
|
+
return (e + 7) / 8 | 0;
|
|
184
|
+
}, slc = function(t, n, r) {
|
|
185
|
+
return (n == null || n < 0) && (n = 0), (r == null || r > t.length) && (r = t.length), new e(t.subarray(n, r));
|
|
186
|
+
}, v = [
|
|
234
187
|
"unexpected EOF",
|
|
235
188
|
"invalid block type",
|
|
236
189
|
"invalid length/literal",
|
|
@@ -245,257 +198,185 @@ var ec = [
|
|
|
245
198
|
"filename too long",
|
|
246
199
|
"stream finishing",
|
|
247
200
|
"invalid zip data"
|
|
248
|
-
]
|
|
249
|
-
var
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
return e;
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
var
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
if (noBuf) buf = new u8(sl * 3);
|
|
263
|
-
var cbuf = function(l) {
|
|
264
|
-
var bl = buf.length;
|
|
265
|
-
if (l > bl) {
|
|
266
|
-
var nbuf = new u8(Math.max(bl * 2, l));
|
|
267
|
-
nbuf.set(buf);
|
|
268
|
-
buf = nbuf;
|
|
201
|
+
], err = function(e, t, n) {
|
|
202
|
+
var r = Error(t || v[e]);
|
|
203
|
+
if (r.code = e, Error.captureStackTrace && Error.captureStackTrace(r, err), !n) throw r;
|
|
204
|
+
return r;
|
|
205
|
+
}, inflt = function(t, n, o, c) {
|
|
206
|
+
var l = t.length, d = c ? c.length : 0;
|
|
207
|
+
if (!l || n.f && !n.l) return o || new e(0);
|
|
208
|
+
var f = !o, p = f || n.i != 2, m = n.i;
|
|
209
|
+
f && (o = new e(l * 3));
|
|
210
|
+
var cbuf = function(t) {
|
|
211
|
+
var n = o.length;
|
|
212
|
+
if (t > n) {
|
|
213
|
+
var r = new e(Math.max(n * 2, t));
|
|
214
|
+
r.set(o), o = r;
|
|
269
215
|
}
|
|
270
|
-
};
|
|
271
|
-
var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
|
|
272
|
-
var tbts = sl * 8;
|
|
216
|
+
}, h = n.f || 0, v = n.p || 0, y = n.b || 0, b = n.l, x = n.d, S = n.m, C = n.n, w = l * 8;
|
|
273
217
|
do {
|
|
274
|
-
if (!
|
|
275
|
-
|
|
276
|
-
var
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
if (noSt) err(0);
|
|
218
|
+
if (!b) {
|
|
219
|
+
h = bits(t, v, 1);
|
|
220
|
+
var T = bits(t, v + 1, 3);
|
|
221
|
+
if (v += 3, !T) {
|
|
222
|
+
var E = shft(v) + 4, D = t[E - 4] | t[E - 3] << 8, O = E + D;
|
|
223
|
+
if (O > l) {
|
|
224
|
+
m && err(0);
|
|
282
225
|
break;
|
|
283
226
|
}
|
|
284
|
-
|
|
285
|
-
buf.set(dat.subarray(s, t), bt);
|
|
286
|
-
st.b = bt += l, st.p = pos = t * 8, st.f = final;
|
|
227
|
+
p && cbuf(y + D), o.set(t.subarray(E, O), y), n.b = y += D, n.p = v = O * 8, n.f = h;
|
|
287
228
|
continue;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
var
|
|
292
|
-
|
|
293
|
-
var
|
|
294
|
-
|
|
295
|
-
for (var
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
var r = clm[bits(dat, pos, clbmsk)];
|
|
301
|
-
pos += r & 15;
|
|
302
|
-
var s = r >> 4;
|
|
303
|
-
if (s < 16) ldt[i++] = s;
|
|
229
|
+
}
|
|
230
|
+
if (T == 1) b = g, x = _, S = 9, C = 5;
|
|
231
|
+
else if (T == 2) {
|
|
232
|
+
var k = bits(t, v, 31) + 257, A = bits(t, v + 10, 15) + 4, j = k + bits(t, v + 5, 31) + 1;
|
|
233
|
+
v += 14;
|
|
234
|
+
for (var M = new e(j), N = new e(19), P = 0; P < A; ++P) N[a[P]] = bits(t, v + P * 3, 7);
|
|
235
|
+
v += A * 3;
|
|
236
|
+
for (var F = max(N), I = (1 << F) - 1, L = hMap(N, F, 1), P = 0; P < j;) {
|
|
237
|
+
var R = L[bits(t, v, I)];
|
|
238
|
+
v += R & 15;
|
|
239
|
+
var E = R >> 4;
|
|
240
|
+
if (E < 16) M[P++] = E;
|
|
304
241
|
else {
|
|
305
|
-
var
|
|
306
|
-
|
|
307
|
-
else if (s == 17) n = 3 + bits(dat, pos, 7), pos += 3;
|
|
308
|
-
else if (s == 18) n = 11 + bits(dat, pos, 127), pos += 7;
|
|
309
|
-
while (n--) ldt[i++] = c;
|
|
242
|
+
var z = 0, B = 0;
|
|
243
|
+
for (E == 16 ? (B = 3 + bits(t, v, 3), v += 2, z = M[P - 1]) : E == 17 ? (B = 3 + bits(t, v, 7), v += 3) : E == 18 && (B = 11 + bits(t, v, 127), v += 7); B--;) M[P++] = z;
|
|
310
244
|
}
|
|
311
245
|
}
|
|
312
|
-
var
|
|
313
|
-
|
|
314
|
-
dbt = max(dt);
|
|
315
|
-
lm = hMap(lt, lbt, 1);
|
|
316
|
-
dm = hMap(dt, dbt, 1);
|
|
246
|
+
var V = M.subarray(0, k), H = M.subarray(k);
|
|
247
|
+
S = max(V), C = max(H), b = hMap(V, S, 1), x = hMap(H, C, 1);
|
|
317
248
|
} else err(1);
|
|
318
|
-
if (
|
|
319
|
-
|
|
249
|
+
if (v > w) {
|
|
250
|
+
m && err(0);
|
|
320
251
|
break;
|
|
321
252
|
}
|
|
322
253
|
}
|
|
323
|
-
|
|
324
|
-
var
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
pos += c & 15;
|
|
329
|
-
if (pos > tbts) {
|
|
330
|
-
if (noSt) err(0);
|
|
254
|
+
p && cbuf(y + 131072);
|
|
255
|
+
for (var U = (1 << S) - 1, W = (1 << C) - 1, G = v;; G = v) {
|
|
256
|
+
var z = b[bits16(t, v) & U], K = z >> 4;
|
|
257
|
+
if (v += z & 15, v > w) {
|
|
258
|
+
m && err(0);
|
|
331
259
|
break;
|
|
332
260
|
}
|
|
333
|
-
if (
|
|
334
|
-
if (
|
|
335
|
-
|
|
336
|
-
lpos = pos, lm = null;
|
|
261
|
+
if (z || err(2), K < 256) o[y++] = K;
|
|
262
|
+
else if (K == 256) {
|
|
263
|
+
G = v, b = null;
|
|
337
264
|
break;
|
|
338
265
|
} else {
|
|
339
|
-
var
|
|
340
|
-
if (
|
|
341
|
-
var
|
|
342
|
-
|
|
343
|
-
pos += b;
|
|
266
|
+
var q = K - 254;
|
|
267
|
+
if (K > 264) {
|
|
268
|
+
var P = K - 257, J = r[P];
|
|
269
|
+
q = bits(t, v, (1 << J) - 1) + s[P], v += J;
|
|
344
270
|
}
|
|
345
|
-
var
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
|
|
271
|
+
var Y = x[bits16(t, v) & W], X = Y >> 4;
|
|
272
|
+
Y || err(3), v += Y & 15;
|
|
273
|
+
var H = u[X];
|
|
274
|
+
if (X > 3) {
|
|
275
|
+
var J = i[X];
|
|
276
|
+
H += bits16(t, v) & (1 << J) - 1, v += J;
|
|
352
277
|
}
|
|
353
|
-
if (
|
|
354
|
-
|
|
278
|
+
if (v > w) {
|
|
279
|
+
m && err(0);
|
|
355
280
|
break;
|
|
356
281
|
}
|
|
357
|
-
|
|
358
|
-
var
|
|
359
|
-
if (
|
|
360
|
-
var
|
|
361
|
-
|
|
362
|
-
for (; bt < dend; ++bt) buf[bt] = dict[shift + bt];
|
|
282
|
+
p && cbuf(y + 131072);
|
|
283
|
+
var Z = y + q;
|
|
284
|
+
if (y < H) {
|
|
285
|
+
var Q = d - H, $ = Math.min(H, Z);
|
|
286
|
+
for (Q + y < 0 && err(3); y < $; ++y) o[y] = c[Q + y];
|
|
363
287
|
}
|
|
364
|
-
for (;
|
|
288
|
+
for (; y < Z; ++y) o[y] = o[y - H];
|
|
365
289
|
}
|
|
366
290
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
var b4 = function(d, b) {
|
|
377
|
-
return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0;
|
|
291
|
+
n.l = b, n.p = G, n.b = y, n.f = h, b && (h = 1, n.m = S, n.d = x, n.n = C);
|
|
292
|
+
} while (!h);
|
|
293
|
+
return y != o.length && f ? slc(o, 0, y) : o.subarray(0, y);
|
|
294
|
+
}, y = /*#__PURE__*/ new e(0), b2 = function(e, t) {
|
|
295
|
+
return e[t] | e[t + 1] << 8;
|
|
296
|
+
}, b4 = function(e, t) {
|
|
297
|
+
return (e[t] | e[t + 1] << 8 | e[t + 2] << 16 | e[t + 3] << 24) >>> 0;
|
|
298
|
+
}, b8 = function(e, t) {
|
|
299
|
+
return b4(e, t) + b4(e, t + 4) * 4294967296;
|
|
378
300
|
};
|
|
379
|
-
|
|
380
|
-
return
|
|
381
|
-
};
|
|
382
|
-
function inflateSync(data, opts) {
|
|
383
|
-
return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
|
|
301
|
+
function inflateSync(e, t) {
|
|
302
|
+
return inflt(e, { i: 2 }, t && t.out, t && t.dictionary);
|
|
384
303
|
}
|
|
385
|
-
var
|
|
304
|
+
var b = typeof TextDecoder < "u" && /*#__PURE__*/ new TextDecoder();
|
|
386
305
|
try {
|
|
387
|
-
|
|
388
|
-
} catch
|
|
389
|
-
var dutf8 = function(
|
|
390
|
-
for (var
|
|
391
|
-
var
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
r: slc(d, i - 1)
|
|
306
|
+
b.decode(y, { stream: !0 });
|
|
307
|
+
} catch {}
|
|
308
|
+
var dutf8 = function(e) {
|
|
309
|
+
for (var t = "", n = 0;;) {
|
|
310
|
+
var r = e[n++], i = (r > 127) + (r > 223) + (r > 239);
|
|
311
|
+
if (n + i > e.length) return {
|
|
312
|
+
s: t,
|
|
313
|
+
r: slc(e, n - 1)
|
|
396
314
|
};
|
|
397
|
-
|
|
398
|
-
else if (eb == 3) c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);
|
|
399
|
-
else if (eb & 1) r += String.fromCharCode((c & 31) << 6 | d[i++] & 63);
|
|
400
|
-
else r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63);
|
|
315
|
+
i ? i == 3 ? (r = ((r & 15) << 18 | (e[n++] & 63) << 12 | (e[n++] & 63) << 6 | e[n++] & 63) - 65536, t += String.fromCharCode(55296 | r >> 10, 56320 | r & 1023)) : i & 1 ? t += String.fromCharCode((r & 31) << 6 | e[n++] & 63) : t += String.fromCharCode((r & 15) << 12 | (e[n++] & 63) << 6 | e[n++] & 63) : t += String.fromCharCode(r);
|
|
401
316
|
}
|
|
402
317
|
};
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
* not need to be true unless encoding to binary string.
|
|
408
|
-
* @returns The original UTF-8/Latin-1 string
|
|
409
|
-
*/
|
|
410
|
-
function strFromU8(dat, latin1) {
|
|
411
|
-
if (latin1) {
|
|
412
|
-
var r = "";
|
|
413
|
-
for (var i = 0; i < dat.length; i += 16384) r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
|
|
414
|
-
return r;
|
|
415
|
-
} else if (td) return td.decode(dat);
|
|
416
|
-
else {
|
|
417
|
-
var _a = dutf8(dat), s = _a.s, r = _a.r;
|
|
418
|
-
if (r.length) err(8);
|
|
419
|
-
return s;
|
|
318
|
+
function strFromU8(e, t) {
|
|
319
|
+
if (t) {
|
|
320
|
+
for (var n = "", r = 0; r < e.length; r += 16384) n += String.fromCharCode.apply(null, e.subarray(r, r + 16384));
|
|
321
|
+
return n;
|
|
420
322
|
}
|
|
421
|
-
|
|
422
|
-
var
|
|
423
|
-
return
|
|
424
|
-
}
|
|
425
|
-
var
|
|
426
|
-
|
|
427
|
-
|
|
323
|
+
if (b) return b.decode(e);
|
|
324
|
+
var i = dutf8(e), a = i.s, n = i.r;
|
|
325
|
+
return n.length && err(8), a;
|
|
326
|
+
}
|
|
327
|
+
var slzh = function(e, t) {
|
|
328
|
+
return t + 30 + b2(e, t + 26) + b2(e, t + 28);
|
|
329
|
+
}, zh = function(e, t, n) {
|
|
330
|
+
var r = b2(e, t + 28), i = b2(e, t + 30), a = strFromU8(e.subarray(t + 46, t + 46 + r), !(b2(e, t + 8) & 2048)), o = t + 46 + r, s = z64hs(e, o, i, n, b4(e, t + 20), b4(e, t + 24), b4(e, t + 42)), c = s[0], l = s[1], u = s[2];
|
|
428
331
|
return [
|
|
429
|
-
b2(
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
332
|
+
b2(e, t + 10),
|
|
333
|
+
c,
|
|
334
|
+
l,
|
|
335
|
+
a,
|
|
336
|
+
o + i + b2(e, t + 32),
|
|
337
|
+
u
|
|
435
338
|
];
|
|
436
|
-
}
|
|
437
|
-
var
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
nsu ? b8(d, b + 4) : su,
|
|
444
|
-
noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,
|
|
339
|
+
}, z64hs = function(e, t, n, r, i, a, o) {
|
|
340
|
+
var s = i == 4294967295, c = a == 4294967295, l = o == 4294967295, u = t + n, d = s + c + l;
|
|
341
|
+
if (r && d) {
|
|
342
|
+
for (; t + 4 < u; t += 4 + b2(e, t + 2)) if (b2(e, t) == 1) return [
|
|
343
|
+
s ? b8(e, t + 4 + 8 * c) : i,
|
|
344
|
+
c ? b8(e, t + 4) : a,
|
|
345
|
+
l ? b8(e, t + 4 + 8 * (c + s)) : o,
|
|
445
346
|
1
|
|
446
347
|
];
|
|
447
|
-
|
|
348
|
+
r < 2 && err(13);
|
|
448
349
|
}
|
|
449
350
|
return [
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
351
|
+
i,
|
|
352
|
+
a,
|
|
353
|
+
o,
|
|
453
354
|
0
|
|
454
355
|
];
|
|
455
356
|
};
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
var files = {};
|
|
465
|
-
var e = data.length - 22;
|
|
466
|
-
for (; b4(data, e) != 101010256; --e) if (!e || data.length - e > 65558) err(13);
|
|
467
|
-
var c = b2(data, e + 8);
|
|
468
|
-
if (!c) return {};
|
|
469
|
-
var o = b4(data, e + 16);
|
|
470
|
-
var z = b4(data, e - 20) == 117853008;
|
|
471
|
-
if (z) {
|
|
472
|
-
var ze = b4(data, e - 12);
|
|
473
|
-
z = b4(data, ze) == 101075792;
|
|
474
|
-
if (z) {
|
|
475
|
-
c = b4(data, ze + 32);
|
|
476
|
-
o = b4(data, ze + 48);
|
|
477
|
-
}
|
|
357
|
+
function unzipSync(t, n) {
|
|
358
|
+
for (var r = {}, i = t.length - 22; b4(t, i) != 101010256; --i) (!i || t.length - i > 65558) && err(13);
|
|
359
|
+
var a = b2(t, i + 8);
|
|
360
|
+
if (!a) return {};
|
|
361
|
+
var o = b4(t, i + 16), s = b4(t, i - 20) == 117853008;
|
|
362
|
+
if (s) {
|
|
363
|
+
var c = b4(t, i - 12);
|
|
364
|
+
s = b4(t, c) == 101075792, s && (a = b4(t, c + 32), o = b4(t, c + 48));
|
|
478
365
|
}
|
|
479
|
-
var
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
compression: c_2
|
|
488
|
-
})) {
|
|
489
|
-
if (!c_2) files[fn] = slc(data, b, b + sc);
|
|
490
|
-
else if (c_2 == 8) files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
|
|
491
|
-
else err(14, "unknown compression type " + c_2);
|
|
492
|
-
}
|
|
366
|
+
for (var l = n && n.filter, u = 0; u < a; ++u) {
|
|
367
|
+
var d = zh(t, o, s), f = d[0], p = d[1], m = d[2], h = d[3], g = d[4], _ = d[5], v = slzh(t, _);
|
|
368
|
+
o = g, (!l || l({
|
|
369
|
+
name: h,
|
|
370
|
+
size: p,
|
|
371
|
+
originalSize: m,
|
|
372
|
+
compression: f
|
|
373
|
+
})) && (f ? f == 8 ? r[h] = inflateSync(t.subarray(v, v + p), { out: new e(m) }) : err(14, "unknown compression type " + f) : r[h] = slc(t, v, v + p));
|
|
493
374
|
}
|
|
494
|
-
return
|
|
375
|
+
return r;
|
|
495
376
|
}
|
|
496
377
|
//#endregion
|
|
497
378
|
//#region src/resource-policy.generated.ts
|
|
498
|
-
const
|
|
379
|
+
const x = {
|
|
499
380
|
schemaVersion: "xdoc-resource-policy-registry/v1",
|
|
500
381
|
policyVersion: "2026.08",
|
|
501
382
|
profiles: [{
|
|
@@ -560,8 +441,7 @@ const RESOURCE_POLICY_CONTRACT = {
|
|
|
560
441
|
"task-budgets",
|
|
561
442
|
"output"
|
|
562
443
|
]
|
|
563
|
-
}
|
|
564
|
-
const BROWSER_RESOURCE_LIMITS = {
|
|
444
|
+
}, S = {
|
|
565
445
|
id: "browser-viewer",
|
|
566
446
|
inputBytes: 104857600,
|
|
567
447
|
zipEntries: 1e4,
|
|
@@ -580,228 +460,191 @@ const BROWSER_RESOURCE_LIMITS = {
|
|
|
580
460
|
//#endregion
|
|
581
461
|
//#region src/resource-policy.ts
|
|
582
462
|
var ResourcePolicyError = class extends Error {
|
|
583
|
-
constructor(
|
|
584
|
-
super(`${
|
|
585
|
-
this.name = "ResourcePolicyError";
|
|
586
|
-
this.details = details;
|
|
463
|
+
constructor(e) {
|
|
464
|
+
super(`${e.reason}: ${e.subject} observed ${e.observed} ${e.unit}; policy limit is ${e.limit} ${e.unit}. This is an engineering safety limit, not a plan entitlement; reduce or split the input.`), this.name = "ResourcePolicyError", this.details = e;
|
|
587
465
|
}
|
|
588
466
|
};
|
|
589
|
-
function fail(
|
|
467
|
+
function fail(e, t, n, r, i, a) {
|
|
590
468
|
throw new ResourcePolicyError({
|
|
591
|
-
reason,
|
|
592
|
-
stage,
|
|
593
|
-
subject,
|
|
594
|
-
limit,
|
|
595
|
-
observed,
|
|
596
|
-
unit,
|
|
597
|
-
policyVersion:
|
|
598
|
-
commercialUpgradeApplicable:
|
|
469
|
+
reason: e,
|
|
470
|
+
stage: t,
|
|
471
|
+
subject: n,
|
|
472
|
+
limit: r,
|
|
473
|
+
observed: i,
|
|
474
|
+
unit: a,
|
|
475
|
+
policyVersion: x.policyVersion,
|
|
476
|
+
commercialUpgradeApplicable: !1
|
|
599
477
|
});
|
|
600
478
|
}
|
|
601
|
-
function checkBrowserInput(
|
|
602
|
-
|
|
603
|
-
}
|
|
604
|
-
function checkBrowserElapsed(
|
|
605
|
-
checkBrowserElapsedMs(Math.max(0, Math.ceil(performance.now() -
|
|
606
|
-
}
|
|
607
|
-
function checkBrowserElapsedMs(
|
|
608
|
-
|
|
609
|
-
}
|
|
610
|
-
function resourcePolicyErrorFromDetails(
|
|
611
|
-
if (!
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
commercialUpgradeApplicable: false
|
|
479
|
+
function checkBrowserInput(e, t = "PPTX input") {
|
|
480
|
+
e > S.inputBytes && fail("resource_input_too_large", "input", t, S.inputBytes, e, "bytes");
|
|
481
|
+
}
|
|
482
|
+
function checkBrowserElapsed(e, t = "parse wall clock") {
|
|
483
|
+
checkBrowserElapsedMs(Math.max(0, Math.ceil(performance.now() - e)), t);
|
|
484
|
+
}
|
|
485
|
+
function checkBrowserElapsedMs(e, t = "parse wall clock") {
|
|
486
|
+
e > S.wallClockMs && fail("resource_timeout", "runtime", t, S.wallClockMs, e, "milliseconds");
|
|
487
|
+
}
|
|
488
|
+
function resourcePolicyErrorFromDetails(e) {
|
|
489
|
+
if (!e || typeof e != "object") return null;
|
|
490
|
+
let t = e;
|
|
491
|
+
return typeof t.reason != "string" || !x.stableReasons.includes(t.reason) || typeof t.stage != "string" || typeof t.subject != "string" || !Number.isSafeInteger(t.limit) || (t.limit ?? -1) < 0 || !Number.isSafeInteger(t.observed) || (t.observed ?? -1) < 0 || typeof t.unit != "string" || t.policyVersion !== x.policyVersion || t.commercialUpgradeApplicable !== !1 ? null : new ResourcePolicyError({
|
|
492
|
+
reason: t.reason,
|
|
493
|
+
stage: t.stage,
|
|
494
|
+
subject: t.subject,
|
|
495
|
+
limit: t.limit,
|
|
496
|
+
observed: t.observed,
|
|
497
|
+
unit: t.unit,
|
|
498
|
+
policyVersion: t.policyVersion,
|
|
499
|
+
commercialUpgradeApplicable: !1
|
|
623
500
|
});
|
|
624
501
|
}
|
|
625
|
-
function checkBrowserZipEntries(
|
|
626
|
-
|
|
627
|
-
let
|
|
628
|
-
for (
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
if (expanded > BROWSER_RESOURCE_LIMITS.zipEntryBytes) fail("resource_zip_entry_too_large", "zip", entry.name, BROWSER_RESOURCE_LIMITS.zipEntryBytes, expanded, "bytes");
|
|
632
|
-
expandedTotal = Math.min(Number.MAX_SAFE_INTEGER, expandedTotal + expanded);
|
|
633
|
-
if (expandedTotal > BROWSER_RESOURCE_LIMITS.zipExpansionBytes) fail("resource_zip_expansion_exceeded", "zip", `cumulative ZIP expansion at ${entry.name}`, BROWSER_RESOURCE_LIMITS.zipExpansionBytes, expandedTotal, "bytes");
|
|
634
|
-
if (expanded > BROWSER_RESOURCE_LIMITS.zipRatioThresholdBytes && (compressed <= 0 || expanded / compressed > BROWSER_RESOURCE_LIMITS.zipRatioMax)) fail("resource_zip_ratio_exceeded", "zip", entry.name, BROWSER_RESOURCE_LIMITS.zipRatioMax, compressed <= 0 ? expanded : Math.ceil(expanded / compressed), "ratio");
|
|
502
|
+
function checkBrowserZipEntries(e) {
|
|
503
|
+
e.length > S.zipEntries && fail("resource_zip_entries_exceeded", "zip", "ZIP entry count", S.zipEntries, e.length, "entries");
|
|
504
|
+
let t = 0;
|
|
505
|
+
for (let n of e) {
|
|
506
|
+
let e = Math.max(0, n.originalSize), r = Math.max(0, n.size);
|
|
507
|
+
e > S.zipEntryBytes && fail("resource_zip_entry_too_large", "zip", n.name, S.zipEntryBytes, e, "bytes"), t = Math.min(2 ** 53 - 1, t + e), t > S.zipExpansionBytes && fail("resource_zip_expansion_exceeded", "zip", `cumulative ZIP expansion at ${n.name}`, S.zipExpansionBytes, t, "bytes"), e > S.zipRatioThresholdBytes && (r <= 0 || e / r > S.zipRatioMax) && fail("resource_zip_ratio_exceeded", "zip", n.name, S.zipRatioMax, r <= 0 ? e : Math.ceil(e / r), "ratio");
|
|
635
508
|
}
|
|
636
509
|
}
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
return false;
|
|
649
|
-
} });
|
|
650
|
-
checkBrowserZipEntries(entries);
|
|
651
|
-
const files = unzipSync(input);
|
|
652
|
-
checkBrowserXmlParts(Object.entries(files));
|
|
653
|
-
for (const [name, bytes] of Object.entries(files)) checkBrowserImagePayload(bytes, name);
|
|
654
|
-
return files;
|
|
510
|
+
function unzipBrowserPptx(e) {
|
|
511
|
+
let t = e instanceof Uint8Array ? e : new Uint8Array(e);
|
|
512
|
+
checkBrowserInput(t.byteLength);
|
|
513
|
+
let n = [];
|
|
514
|
+
unzipSync(t, { filter(e) {
|
|
515
|
+
return n.push(e), !1;
|
|
516
|
+
} }), checkBrowserZipEntries(n);
|
|
517
|
+
let r = unzipSync(t);
|
|
518
|
+
checkBrowserXmlParts(Object.entries(r));
|
|
519
|
+
for (let [e, t] of Object.entries(r)) checkBrowserImagePayload(t, e);
|
|
520
|
+
return r;
|
|
655
521
|
}
|
|
656
522
|
var XmlBudget = class {
|
|
657
523
|
constructor() {
|
|
658
524
|
this.nodes = 0;
|
|
659
525
|
}
|
|
660
|
-
observeNode(
|
|
661
|
-
|
|
662
|
-
this.nodes += 1;
|
|
663
|
-
if (this.nodes > BROWSER_RESOURCE_LIMITS.xmlNodes) fail("resource_xml_nodes_exceeded", "xml", subject, BROWSER_RESOURCE_LIMITS.xmlNodes, this.nodes, "nodes");
|
|
526
|
+
observeNode(e, t) {
|
|
527
|
+
e > S.xmlDepth && fail("resource_xml_depth_exceeded", "xml", t, S.xmlDepth, e, "levels"), this.nodes += 1, this.nodes > S.xmlNodes && fail("resource_xml_nodes_exceeded", "xml", t, S.xmlNodes, this.nodes, "nodes");
|
|
664
528
|
}
|
|
665
|
-
observeText(
|
|
666
|
-
this.observeNode(
|
|
667
|
-
if (bytes > BROWSER_RESOURCE_LIMITS.textNodeBytes) fail("resource_text_node_too_large", "xml", subject, BROWSER_RESOURCE_LIMITS.textNodeBytes, bytes, "bytes");
|
|
529
|
+
observeText(e, t, n) {
|
|
530
|
+
this.observeNode(e, n), t > S.textNodeBytes && fail("resource_text_node_too_large", "xml", n, S.textNodeBytes, t, "bytes");
|
|
668
531
|
}
|
|
669
532
|
};
|
|
670
|
-
function isXmlPart(
|
|
671
|
-
|
|
672
|
-
return
|
|
673
|
-
}
|
|
674
|
-
function looksLikeXmlPayload(
|
|
675
|
-
let
|
|
676
|
-
|
|
677
|
-
if (
|
|
678
|
-
|
|
679
|
-
return
|
|
680
|
-
}
|
|
681
|
-
function checkBrowserXmlParts(
|
|
682
|
-
|
|
683
|
-
for (
|
|
684
|
-
}
|
|
685
|
-
const ascii = (
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
function findTagEnd(input, start) {
|
|
705
|
-
let quote = 0;
|
|
706
|
-
for (let index = start; index < input.length; index += 1) {
|
|
707
|
-
const value = input[index];
|
|
708
|
-
if (quote !== 0) {
|
|
709
|
-
if (value === quote) quote = 0;
|
|
710
|
-
} else if (value === 34 || value === 39) quote = value;
|
|
711
|
-
else if (value === 62) return index + 1;
|
|
533
|
+
function isXmlPart(e) {
|
|
534
|
+
let t = e.toLowerCase();
|
|
535
|
+
return t.endsWith(".xml") || t.endsWith(".rels") || t.endsWith(".svg") || t.endsWith(".vml");
|
|
536
|
+
}
|
|
537
|
+
function looksLikeXmlPayload(e) {
|
|
538
|
+
let t = e.length >= 3 && e[0] === 239 && e[1] === 187 && e[2] === 191 ? 3 : 0;
|
|
539
|
+
for (; t < e.length && isSpace(e[t]);) t += 1;
|
|
540
|
+
if (t + 1 >= e.length || e[t] !== 60) return !1;
|
|
541
|
+
let n = e[t + 1];
|
|
542
|
+
return n === 63 || n === 33 || n === 95 || n === 58 || n >= 65 && n <= 90 || n >= 97 && n <= 122 || n >= 128;
|
|
543
|
+
}
|
|
544
|
+
function checkBrowserXmlParts(e) {
|
|
545
|
+
let t = new XmlBudget();
|
|
546
|
+
for (let [n, r] of e) (isXmlPart(n) || looksLikeXmlPayload(r)) && scanXml(r, t, n);
|
|
547
|
+
}
|
|
548
|
+
const ascii = (e) => new TextEncoder().encode(e), C = ascii("<!--"), w = ascii("-->"), T = ascii("<![CDATA["), E = ascii("]]>"), D = ascii("<?"), O = ascii("?>"), k = ascii("<!DOCTYPE"), A = ascii("<!doctype");
|
|
549
|
+
function matchesAt(e, t, n) {
|
|
550
|
+
if (t < 0 || t + n.length > e.length) return !1;
|
|
551
|
+
for (let r = 0; r < n.length; r += 1) if (e[t + r] !== n[r]) return !1;
|
|
552
|
+
return !0;
|
|
553
|
+
}
|
|
554
|
+
function findTerminator(e, t, n) {
|
|
555
|
+
let r = e.length - n.length;
|
|
556
|
+
for (let i = t; i <= r; i += 1) if (matchesAt(e, i, n)) return i;
|
|
557
|
+
return e.length;
|
|
558
|
+
}
|
|
559
|
+
function findTagEnd(e, t) {
|
|
560
|
+
let n = 0;
|
|
561
|
+
for (let r = t; r < e.length; r += 1) {
|
|
562
|
+
let t = e[r];
|
|
563
|
+
if (n !== 0) t === n && (n = 0);
|
|
564
|
+
else if (t === 34 || t === 39) n = t;
|
|
565
|
+
else if (t === 62) return r + 1;
|
|
712
566
|
}
|
|
713
|
-
return
|
|
714
|
-
}
|
|
715
|
-
function skipDoctype(
|
|
716
|
-
let
|
|
717
|
-
let
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
if (
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
else if (
|
|
724
|
-
else if (value === 93 && subsetDepth > 0) subsetDepth -= 1;
|
|
725
|
-
else if (value === 62 && subsetDepth === 0) return index + 1;
|
|
567
|
+
return e.length;
|
|
568
|
+
}
|
|
569
|
+
function skipDoctype(e, t) {
|
|
570
|
+
let n = 0, r = 0;
|
|
571
|
+
for (let i = t; i < e.length; i += 1) {
|
|
572
|
+
let t = e[i];
|
|
573
|
+
if (n !== 0) t === n && (n = 0);
|
|
574
|
+
else if (t === 34 || t === 39) n = t;
|
|
575
|
+
else if (t === 91) r += 1;
|
|
576
|
+
else if (t === 93 && r > 0) --r;
|
|
577
|
+
else if (t === 62 && r === 0) return i + 1;
|
|
726
578
|
}
|
|
727
|
-
return
|
|
728
|
-
}
|
|
729
|
-
function isSpace(
|
|
730
|
-
return
|
|
731
|
-
}
|
|
732
|
-
function scanXml(
|
|
733
|
-
let
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
if (position > start) budget.observeText(depth, position - start, `${subject} text`);
|
|
579
|
+
return e.length;
|
|
580
|
+
}
|
|
581
|
+
function isSpace(e) {
|
|
582
|
+
return e === 32 || e === 9 || e === 10 || e === 13;
|
|
583
|
+
}
|
|
584
|
+
function scanXml(e, t, n) {
|
|
585
|
+
let r = 0, i = 0;
|
|
586
|
+
for (; r < e.length;) {
|
|
587
|
+
if (e[r] !== 60) {
|
|
588
|
+
let a = r;
|
|
589
|
+
for (; r < e.length && e[r] !== 60;) r += 1;
|
|
590
|
+
r > a && t.observeText(i, r - a, `${n} text`);
|
|
740
591
|
continue;
|
|
741
592
|
}
|
|
742
|
-
if (matchesAt(
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
593
|
+
if (matchesAt(e, r, C)) {
|
|
594
|
+
t.observeNode(i, `${n} comment`);
|
|
595
|
+
let a = findTerminator(e, r + C.length, w);
|
|
596
|
+
r = a === e.length ? a : a + w.length;
|
|
746
597
|
continue;
|
|
747
598
|
}
|
|
748
|
-
if (matchesAt(
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
budget.observeText(depth, end - start, `${subject} CDATA`);
|
|
752
|
-
position = end === input.length ? end : end + CDATA_END.length;
|
|
599
|
+
if (matchesAt(e, r, T)) {
|
|
600
|
+
let a = r + T.length, o = findTerminator(e, a, E);
|
|
601
|
+
t.observeText(i, o - a, `${n} CDATA`), r = o === e.length ? o : o + E.length;
|
|
753
602
|
continue;
|
|
754
603
|
}
|
|
755
|
-
if (matchesAt(
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
604
|
+
if (matchesAt(e, r, D)) {
|
|
605
|
+
t.observeNode(i, `${n} processing instruction`);
|
|
606
|
+
let a = findTerminator(e, r + D.length, O);
|
|
607
|
+
r = a === e.length ? a : a + O.length;
|
|
759
608
|
continue;
|
|
760
609
|
}
|
|
761
|
-
if (matchesAt(
|
|
762
|
-
|
|
610
|
+
if (matchesAt(e, r, k) || matchesAt(e, r, A)) {
|
|
611
|
+
r = skipDoctype(e, r + 2);
|
|
763
612
|
continue;
|
|
764
613
|
}
|
|
765
|
-
if (
|
|
766
|
-
|
|
767
|
-
if (depth > 0) depth -= 1;
|
|
614
|
+
if (r + 1 < e.length && e[r + 1] === 47) {
|
|
615
|
+
r = findTagEnd(e, r + 2), i > 0 && --i;
|
|
768
616
|
continue;
|
|
769
617
|
}
|
|
770
|
-
if (
|
|
771
|
-
|
|
618
|
+
if (r + 1 < e.length && e[r + 1] === 33) {
|
|
619
|
+
r = findTagEnd(e, r + 2);
|
|
772
620
|
continue;
|
|
773
621
|
}
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
depth += 1;
|
|
779
|
-
budget.observeNode(depth, subject);
|
|
780
|
-
if (selfClosing) depth -= 1;
|
|
781
|
-
position = end;
|
|
622
|
+
let a = findTagEnd(e, r + 1), o = a - 2;
|
|
623
|
+
for (; o > r && isSpace(e[o]);) --o;
|
|
624
|
+
let s = o > r && e[o] === 47;
|
|
625
|
+
i += 1, t.observeNode(i, n), s && --i, r = a;
|
|
782
626
|
}
|
|
783
627
|
}
|
|
784
|
-
function readU16BE(
|
|
785
|
-
return
|
|
628
|
+
function readU16BE(e, t) {
|
|
629
|
+
return e[t] * 256 + e[t + 1];
|
|
786
630
|
}
|
|
787
|
-
function readU16LE(
|
|
788
|
-
return
|
|
631
|
+
function readU16LE(e, t) {
|
|
632
|
+
return e[t] + e[t + 1] * 256;
|
|
789
633
|
}
|
|
790
|
-
function readU24LE(
|
|
791
|
-
return
|
|
634
|
+
function readU24LE(e, t) {
|
|
635
|
+
return e[t] + e[t + 1] * 256 + e[t + 2] * 65536;
|
|
792
636
|
}
|
|
793
|
-
function readU32BE(
|
|
794
|
-
return
|
|
637
|
+
function readU32BE(e, t) {
|
|
638
|
+
return e[t] * 16777216 + e[t + 1] * 65536 + e[t + 2] * 256 + e[t + 3];
|
|
795
639
|
}
|
|
796
|
-
function readU32LE(
|
|
797
|
-
return
|
|
640
|
+
function readU32LE(e, t) {
|
|
641
|
+
return e[t] + e[t + 1] * 256 + e[t + 2] * 65536 + e[t + 3] * 16777216;
|
|
798
642
|
}
|
|
799
|
-
function bytesEqual(
|
|
800
|
-
|
|
801
|
-
return expected.every((value, index) => data[offset + index] === value);
|
|
643
|
+
function bytesEqual(e, t, n) {
|
|
644
|
+
return t < 0 || t + n.length > e.length ? !1 : n.every((n, r) => e[t + r] === n);
|
|
802
645
|
}
|
|
803
|
-
function probeImageDimensions(
|
|
804
|
-
if (
|
|
646
|
+
function probeImageDimensions(e) {
|
|
647
|
+
if (e.length >= 24 && bytesEqual(e, 0, [
|
|
805
648
|
137,
|
|
806
649
|
80,
|
|
807
650
|
78,
|
|
@@ -810,23 +653,23 @@ function probeImageDimensions(data) {
|
|
|
810
653
|
10,
|
|
811
654
|
26,
|
|
812
655
|
10
|
|
813
|
-
]) && bytesEqual(
|
|
656
|
+
]) && bytesEqual(e, 12, [
|
|
814
657
|
73,
|
|
815
658
|
72,
|
|
816
659
|
68,
|
|
817
660
|
82
|
|
818
661
|
])) return {
|
|
819
|
-
width: readU32BE(
|
|
820
|
-
height: readU32BE(
|
|
662
|
+
width: readU32BE(e, 16),
|
|
663
|
+
height: readU32BE(e, 20)
|
|
821
664
|
};
|
|
822
|
-
if (
|
|
665
|
+
if (e.length >= 10 && (bytesEqual(e, 0, [
|
|
823
666
|
71,
|
|
824
667
|
73,
|
|
825
668
|
70,
|
|
826
669
|
56,
|
|
827
670
|
55,
|
|
828
671
|
97
|
|
829
|
-
]) || bytesEqual(
|
|
672
|
+
]) || bytesEqual(e, 0, [
|
|
830
673
|
71,
|
|
831
674
|
73,
|
|
832
675
|
70,
|
|
@@ -834,301 +677,266 @@ function probeImageDimensions(data) {
|
|
|
834
677
|
57,
|
|
835
678
|
97
|
|
836
679
|
]))) return {
|
|
837
|
-
width: readU16LE(
|
|
838
|
-
height: readU16LE(
|
|
680
|
+
width: readU16LE(e, 6),
|
|
681
|
+
height: readU16LE(e, 8)
|
|
839
682
|
};
|
|
840
|
-
if (
|
|
841
|
-
|
|
842
|
-
if (
|
|
843
|
-
width: readU16LE(
|
|
844
|
-
height: readU16LE(
|
|
683
|
+
if (e.length >= 26 && bytesEqual(e, 0, [66, 77])) {
|
|
684
|
+
let t = readU32LE(e, 14);
|
|
685
|
+
if (t === 12) return {
|
|
686
|
+
width: readU16LE(e, 18),
|
|
687
|
+
height: readU16LE(e, 20)
|
|
845
688
|
};
|
|
846
|
-
if (
|
|
847
|
-
|
|
689
|
+
if (t >= 40) {
|
|
690
|
+
let t = new DataView(e.buffer, e.byteOffset, e.byteLength);
|
|
848
691
|
return {
|
|
849
|
-
width: Math.abs(
|
|
850
|
-
height: Math.abs(
|
|
692
|
+
width: Math.abs(t.getInt32(18, !0)),
|
|
693
|
+
height: Math.abs(t.getInt32(22, !0))
|
|
851
694
|
};
|
|
852
695
|
}
|
|
853
696
|
}
|
|
854
|
-
if (
|
|
697
|
+
if (e.length >= 30 && bytesEqual(e, 0, [
|
|
855
698
|
82,
|
|
856
699
|
73,
|
|
857
700
|
70,
|
|
858
701
|
70
|
|
859
|
-
]) && bytesEqual(
|
|
702
|
+
]) && bytesEqual(e, 8, [
|
|
860
703
|
87,
|
|
861
704
|
69,
|
|
862
705
|
66,
|
|
863
706
|
80
|
|
864
707
|
])) {
|
|
865
|
-
if (bytesEqual(
|
|
708
|
+
if (bytesEqual(e, 12, [
|
|
866
709
|
86,
|
|
867
710
|
80,
|
|
868
711
|
56,
|
|
869
712
|
88
|
|
870
713
|
])) return {
|
|
871
|
-
width: 1 + readU24LE(
|
|
872
|
-
height: 1 + readU24LE(
|
|
714
|
+
width: 1 + readU24LE(e, 24),
|
|
715
|
+
height: 1 + readU24LE(e, 27)
|
|
873
716
|
};
|
|
874
|
-
if (bytesEqual(
|
|
717
|
+
if (bytesEqual(e, 12, [
|
|
875
718
|
86,
|
|
876
719
|
80,
|
|
877
720
|
56,
|
|
878
721
|
76
|
|
879
|
-
]) &&
|
|
880
|
-
width: 1 + (
|
|
881
|
-
height: 1 + (
|
|
722
|
+
]) && e[20] === 47) return {
|
|
723
|
+
width: 1 + (e[21] | (e[22] & 63) << 8),
|
|
724
|
+
height: 1 + (e[22] >> 6 | e[23] << 2 | (e[24] & 15) << 10)
|
|
882
725
|
};
|
|
883
|
-
if (bytesEqual(
|
|
726
|
+
if (bytesEqual(e, 12, [
|
|
884
727
|
86,
|
|
885
728
|
80,
|
|
886
729
|
56,
|
|
887
730
|
32
|
|
888
|
-
]) && bytesEqual(
|
|
731
|
+
]) && bytesEqual(e, 23, [
|
|
889
732
|
157,
|
|
890
733
|
1,
|
|
891
734
|
42
|
|
892
735
|
])) return {
|
|
893
|
-
width: (
|
|
894
|
-
height: (
|
|
736
|
+
width: (e[26] | e[27] << 8) & 16383,
|
|
737
|
+
height: (e[28] | e[29] << 8) & 16383
|
|
895
738
|
};
|
|
896
739
|
}
|
|
897
|
-
if (
|
|
898
|
-
let
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
if (
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
if (
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
if (
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
height: readU16BE(data, position + 3)
|
|
740
|
+
if (e.length >= 4 && e[0] === 255 && e[1] === 216) {
|
|
741
|
+
let t = 2;
|
|
742
|
+
for (; t + 3 < e.length;) {
|
|
743
|
+
for (; t < e.length && e[t] !== 255;) t += 1;
|
|
744
|
+
for (; t < e.length && e[t] === 255;) t += 1;
|
|
745
|
+
if (t >= e.length) break;
|
|
746
|
+
let n = e[t];
|
|
747
|
+
if (t += 1, n === 1 || n === 216 || n === 217 || n >= 208 && n <= 215) continue;
|
|
748
|
+
if (t + 1 >= e.length) break;
|
|
749
|
+
let r = readU16BE(e, t);
|
|
750
|
+
if (r < 2 || t + r > e.length) break;
|
|
751
|
+
if ((n >= 192 && n <= 195 || n >= 197 && n <= 199 || n >= 201 && n <= 203 || n >= 205 && n <= 207) && r >= 7) return {
|
|
752
|
+
width: readU16BE(e, t + 5),
|
|
753
|
+
height: readU16BE(e, t + 3)
|
|
912
754
|
};
|
|
913
|
-
|
|
755
|
+
t += r;
|
|
914
756
|
}
|
|
915
757
|
}
|
|
916
|
-
return probeTiff(
|
|
758
|
+
return probeTiff(e);
|
|
917
759
|
}
|
|
918
|
-
function checkBrowserImagePayload(
|
|
919
|
-
|
|
920
|
-
|
|
760
|
+
function checkBrowserImagePayload(e, t = "image") {
|
|
761
|
+
let n = probeImageDimensions(e);
|
|
762
|
+
n && checkImageDimensions(n.width, n.height, t);
|
|
921
763
|
}
|
|
922
|
-
function probeTiff(
|
|
923
|
-
if (
|
|
924
|
-
|
|
764
|
+
function probeTiff(e) {
|
|
765
|
+
if (e.length < 8) return null;
|
|
766
|
+
let t = bytesEqual(e, 0, [
|
|
925
767
|
73,
|
|
926
768
|
73,
|
|
927
769
|
42,
|
|
928
770
|
0
|
|
929
771
|
]);
|
|
930
|
-
if (!
|
|
772
|
+
if (!t && !bytesEqual(e, 0, [
|
|
931
773
|
77,
|
|
932
774
|
77,
|
|
933
775
|
0,
|
|
934
776
|
42
|
|
935
777
|
])) return null;
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
if ((tag === 256 || tag === 257) && view.getUint32(entry + 4, little) === 1) {
|
|
947
|
-
const type = view.getUint16(entry + 2, little);
|
|
948
|
-
const value = type === 3 ? view.getUint16(entry + 8, little) : type === 4 ? view.getUint32(entry + 8, little) : 0;
|
|
949
|
-
if (tag === 256) width = value;
|
|
950
|
-
else height = value;
|
|
778
|
+
let n = new DataView(e.buffer, e.byteOffset, e.byteLength), r = n.getUint32(4, t);
|
|
779
|
+
if (r + 2 > e.length) return null;
|
|
780
|
+
let i = n.getUint16(r, t), a = null, o = null;
|
|
781
|
+
for (let s = 0; s < i; s += 1) {
|
|
782
|
+
let i = r + 2 + s * 12;
|
|
783
|
+
if (i + 12 > e.length) return null;
|
|
784
|
+
let c = n.getUint16(i, t);
|
|
785
|
+
if ((c === 256 || c === 257) && n.getUint32(i + 4, t) === 1) {
|
|
786
|
+
let e = n.getUint16(i + 2, t), r = e === 3 ? n.getUint16(i + 8, t) : e === 4 ? n.getUint32(i + 8, t) : 0;
|
|
787
|
+
c === 256 ? a = r : o = r;
|
|
951
788
|
}
|
|
952
789
|
}
|
|
953
|
-
return
|
|
954
|
-
width,
|
|
955
|
-
height
|
|
790
|
+
return a && o ? {
|
|
791
|
+
width: a,
|
|
792
|
+
height: o
|
|
956
793
|
} : null;
|
|
957
794
|
}
|
|
958
|
-
function checkImageDimensions(
|
|
959
|
-
if (
|
|
960
|
-
|
|
961
|
-
|
|
795
|
+
function checkImageDimensions(e, t, n) {
|
|
796
|
+
if (e <= 0 || t <= 0) return;
|
|
797
|
+
let r = e * t;
|
|
798
|
+
(!Number.isSafeInteger(r) || r > S.imagePixels) && fail("resource_image_pixels_exceeded", "image", n, S.imagePixels, Number.isSafeInteger(r) ? r : 2 ** 53 - 1, "pixels");
|
|
962
799
|
}
|
|
963
800
|
//#endregion
|
|
964
801
|
//#region src/worker-error.ts
|
|
965
|
-
function property(
|
|
802
|
+
function property(e, t) {
|
|
966
803
|
try {
|
|
967
|
-
return
|
|
804
|
+
return e && typeof e == "object" ? e[t] : void 0;
|
|
968
805
|
} catch {
|
|
969
806
|
return;
|
|
970
807
|
}
|
|
971
808
|
}
|
|
972
|
-
function cloneFact(
|
|
809
|
+
function cloneFact(e) {
|
|
973
810
|
try {
|
|
974
|
-
return structuredClone(
|
|
811
|
+
return structuredClone(e);
|
|
975
812
|
} catch {
|
|
976
813
|
return;
|
|
977
814
|
}
|
|
978
815
|
}
|
|
979
|
-
function serializeWorkerError(
|
|
980
|
-
|
|
981
|
-
if (
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
if (typeof message !== "string") try {
|
|
986
|
-
fallback = String(error);
|
|
816
|
+
function serializeWorkerError(e, t = /* @__PURE__ */ new Map()) {
|
|
817
|
+
let n = t.get(e);
|
|
818
|
+
if (n) return n;
|
|
819
|
+
let r = property(e, "name"), i = property(e, "message"), a = "Worker operation failed";
|
|
820
|
+
if (typeof i != "string") try {
|
|
821
|
+
a = String(e);
|
|
987
822
|
} catch {}
|
|
988
|
-
|
|
989
|
-
name: typeof
|
|
990
|
-
message: typeof
|
|
823
|
+
let o = {
|
|
824
|
+
name: typeof r == "string" ? r : "Error",
|
|
825
|
+
message: typeof i == "string" ? i : a
|
|
991
826
|
};
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
if (
|
|
999
|
-
if (
|
|
827
|
+
t.set(e, o);
|
|
828
|
+
let s = property(e, "code");
|
|
829
|
+
(typeof s == "string" || typeof s == "number") && (o.code = s);
|
|
830
|
+
let c = cloneFact(property(e, "details"));
|
|
831
|
+
c !== void 0 && (o.details = c);
|
|
832
|
+
let l = property(e, "cause");
|
|
833
|
+
if (l !== void 0) {
|
|
834
|
+
if (l instanceof Error || typeof property(l, "message") == "string") o.cause = {
|
|
1000
835
|
kind: "error",
|
|
1001
|
-
error: serializeWorkerError(
|
|
836
|
+
error: serializeWorkerError(l, t)
|
|
1002
837
|
};
|
|
1003
838
|
else {
|
|
1004
|
-
|
|
1005
|
-
|
|
839
|
+
let e = cloneFact(l);
|
|
840
|
+
e !== void 0 && (o.cause = {
|
|
1006
841
|
kind: "value",
|
|
1007
|
-
value
|
|
1008
|
-
};
|
|
842
|
+
value: e
|
|
843
|
+
});
|
|
1009
844
|
}
|
|
1010
845
|
}
|
|
1011
|
-
return
|
|
846
|
+
return o;
|
|
1012
847
|
}
|
|
1013
848
|
//#endregion
|
|
1014
849
|
//#region src/wasm-worker.ts
|
|
1015
|
-
let
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
if (instance && instanceSource === source) return instance;
|
|
1021
|
-
const wasmBytes = await fetchWasmBytes(sourceUrl, "wasm-worker");
|
|
1022
|
-
const { instance: inst } = await WebAssembly.instantiate(new Uint8Array(wasmBytes), { _: createWasmStringConstants() }, {
|
|
850
|
+
let j = null, M = null;
|
|
851
|
+
async function ensureWasm(e) {
|
|
852
|
+
let t = e ?? new URL("./mbt/main.wasm", import.meta.url), n = String(t);
|
|
853
|
+
if (j && M === n) return j;
|
|
854
|
+
let r = await fetchWasmBytes(t, "wasm-worker"), { instance: i } = await WebAssembly.instantiate(new Uint8Array(r), { _: createWasmStringConstants() }, {
|
|
1023
855
|
builtins: ["js-string"],
|
|
1024
856
|
importedStringConstants: "_"
|
|
1025
857
|
});
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
const t2 = performance.now();
|
|
1038
|
-
mod.parse_only();
|
|
1039
|
-
const t3 = performance.now();
|
|
1040
|
-
const jsonStr = mod.serialize_result();
|
|
1041
|
-
const t4 = performance.now();
|
|
1042
|
-
const result = JSON.parse(jsonStr);
|
|
1043
|
-
const t5 = performance.now();
|
|
1044
|
-
const violation = resourcePolicyErrorFromDetails(result.resourceViolation);
|
|
1045
|
-
if (violation) throw violation;
|
|
1046
|
-
checkBrowserElapsed(t0, "[wasm-parser] Worker parse");
|
|
1047
|
-
return {
|
|
1048
|
-
result,
|
|
858
|
+
return j = i.exports, M = n, j._start(), j;
|
|
859
|
+
}
|
|
860
|
+
async function parseWithWasmUnzip(e, t) {
|
|
861
|
+
let n = performance.now();
|
|
862
|
+
checkBrowserInput(t.byteLength);
|
|
863
|
+
let r = arrayBufferToLatin1(t), i = performance.now(), a = e.decompress(r), o = performance.now();
|
|
864
|
+
e.parse_only();
|
|
865
|
+
let s = performance.now(), c = e.serialize_result(), l = performance.now(), u = JSON.parse(c), d = performance.now(), f = resourcePolicyErrorFromDetails(u.resourceViolation);
|
|
866
|
+
if (f) throw f;
|
|
867
|
+
return checkBrowserElapsed(n, "[wasm-parser] Worker parse"), {
|
|
868
|
+
result: u,
|
|
1049
869
|
timing: {
|
|
1050
|
-
latin1:
|
|
1051
|
-
decompress:
|
|
1052
|
-
fileCount,
|
|
1053
|
-
parse:
|
|
1054
|
-
serialize:
|
|
1055
|
-
jsonParse:
|
|
1056
|
-
total:
|
|
870
|
+
latin1: i - n,
|
|
871
|
+
decompress: o - i,
|
|
872
|
+
fileCount: a,
|
|
873
|
+
parse: s - o,
|
|
874
|
+
serialize: l - s,
|
|
875
|
+
jsonParse: d - l,
|
|
876
|
+
total: d - n
|
|
1057
877
|
}
|
|
1058
878
|
};
|
|
1059
879
|
}
|
|
1060
|
-
async function parseWithJsUnzip(
|
|
1061
|
-
|
|
1062
|
-
checkBrowserInput(
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
let
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
}
|
|
1070
|
-
const t2 = performance.now();
|
|
1071
|
-
const jsonStr = mod.parse_from_predecompressed();
|
|
1072
|
-
const t3 = performance.now();
|
|
1073
|
-
const result = JSON.parse(jsonStr);
|
|
1074
|
-
const t4 = performance.now();
|
|
1075
|
-
const violation = resourcePolicyErrorFromDetails(result.resourceViolation);
|
|
1076
|
-
if (violation) throw violation;
|
|
1077
|
-
checkBrowserElapsed(t0, "[wasm-parser] Worker parse");
|
|
1078
|
-
return {
|
|
1079
|
-
result,
|
|
880
|
+
async function parseWithJsUnzip(e, t) {
|
|
881
|
+
let n = performance.now();
|
|
882
|
+
checkBrowserInput(t.byteLength);
|
|
883
|
+
let r = unzipBrowserPptx(t), i = performance.now(), a = 0;
|
|
884
|
+
for (let [t, n] of Object.entries(r)) e.add_predecompressed_file(t, uint8ArrayToLatin1(n)), a++;
|
|
885
|
+
let o = performance.now(), s = e.parse_from_predecompressed(), c = performance.now(), l = JSON.parse(s), u = performance.now(), d = resourcePolicyErrorFromDetails(l.resourceViolation);
|
|
886
|
+
if (d) throw d;
|
|
887
|
+
return checkBrowserElapsed(n, "[wasm-parser] Worker parse"), {
|
|
888
|
+
result: l,
|
|
1080
889
|
timing: {
|
|
1081
890
|
latin1: 0,
|
|
1082
|
-
decompress:
|
|
1083
|
-
fileCount,
|
|
1084
|
-
parse:
|
|
1085
|
-
serialize:
|
|
1086
|
-
jsonParse:
|
|
1087
|
-
total:
|
|
891
|
+
decompress: i - n,
|
|
892
|
+
fileCount: a,
|
|
893
|
+
parse: c - o,
|
|
894
|
+
serialize: o - i,
|
|
895
|
+
jsonParse: u - c,
|
|
896
|
+
total: u - n
|
|
1088
897
|
}
|
|
1089
898
|
};
|
|
1090
899
|
}
|
|
1091
|
-
const
|
|
900
|
+
const N = /* @__PURE__ */ new Set();
|
|
1092
901
|
self.onmessage = async (e) => {
|
|
1093
902
|
if ("kind" in e.data && e.data.kind === "cancel") {
|
|
1094
|
-
|
|
903
|
+
N.delete(e.data.id);
|
|
1095
904
|
return;
|
|
1096
905
|
}
|
|
1097
|
-
|
|
1098
|
-
|
|
906
|
+
let t = e.data instanceof ArrayBuffer ? 0 : e.data.id ?? 0;
|
|
907
|
+
N.add(t);
|
|
1099
908
|
try {
|
|
1100
|
-
|
|
909
|
+
let { buffer: n, unzipMode: r, wasmUrl: i } = e.data instanceof ArrayBuffer ? {
|
|
1101
910
|
buffer: e.data,
|
|
1102
911
|
unzipMode: "wasm"
|
|
1103
|
-
} : e.data;
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
if (
|
|
1108
|
-
if (result.error) {
|
|
912
|
+
} : e.data, a = await ensureWasm(i);
|
|
913
|
+
if (!N.has(t)) return;
|
|
914
|
+
let { result: o, timing: s } = r === "js" ? await parseWithJsUnzip(a, n) : await parseWithWasmUnzip(a, n);
|
|
915
|
+
if (!N.has(t)) return;
|
|
916
|
+
if (o.error) {
|
|
1109
917
|
self.postMessage({
|
|
1110
|
-
id,
|
|
918
|
+
id: t,
|
|
1111
919
|
status: "error",
|
|
1112
|
-
error: serializeWorkerError(/* @__PURE__ */
|
|
920
|
+
error: serializeWorkerError(/* @__PURE__ */ Error(`WASM parser error: ${o.error}`))
|
|
1113
921
|
});
|
|
1114
922
|
return;
|
|
1115
923
|
}
|
|
1116
924
|
self.postMessage({
|
|
1117
|
-
id,
|
|
925
|
+
id: t,
|
|
1118
926
|
status: "ok",
|
|
1119
|
-
data:
|
|
1120
|
-
timing
|
|
927
|
+
data: o,
|
|
928
|
+
timing: s
|
|
1121
929
|
});
|
|
1122
|
-
} catch (
|
|
1123
|
-
if (!
|
|
930
|
+
} catch (e) {
|
|
931
|
+
if (!N.has(t)) return;
|
|
1124
932
|
self.postMessage({
|
|
1125
|
-
id,
|
|
933
|
+
id: t,
|
|
1126
934
|
status: "error",
|
|
1127
|
-
error: serializeWorkerError(
|
|
935
|
+
error: serializeWorkerError(e)
|
|
1128
936
|
});
|
|
1129
937
|
} finally {
|
|
1130
|
-
|
|
1131
|
-
id,
|
|
938
|
+
N.delete(t) || self.postMessage({
|
|
939
|
+
id: t,
|
|
1132
940
|
status: "error",
|
|
1133
941
|
error: serializeWorkerError(new DOMException("The operation was aborted.", "AbortError"))
|
|
1134
942
|
});
|