@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.
@@ -1,70 +1,59 @@
1
+ //#endregion
1
2
  //#region src/latin1.ts
2
- /**
3
- * Convert raw bytes to a Latin-1 string where each char code maps 1:1 to a byte.
4
- * NOTE: Do not use TextDecoder('latin1') for binary transport; browsers alias it
5
- * to Windows-1252 and remap bytes 0x80-0x9F to different code points.
6
- */
7
- function uint8ArrayToLatin1(bytes) {
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(buffer) {
16
- return uint8ArrayToLatin1(new Uint8Array(buffer));
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(url) {
15
+ function fileUrl(e) {
21
16
  try {
22
- const parsed = url instanceof URL ? url : new URL(url);
23
- return parsed.protocol === "file:" ? parsed : void 0;
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(error) {
29
- const cause = error?.cause;
30
- const detail = cause instanceof Error ? cause.message : "";
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(url) {
34
- const fs = globalThis.process?.getBuiltinModule?.("node:fs")?.promises;
35
- if (!fs) throw new Error(`Node.js file loading is unavailable for ${url.href}`);
36
- const bytes = await fs.readFile(url);
37
- return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
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(bytes, url, label, contentType) {
40
- const magic = new Uint8Array(bytes, 0, Math.min(bytes.byteLength, 4));
41
- if (!(magic.length === 4 && magic[0] === 0 && magic[1] === 97 && magic[2] === 115 && magic[3] === 109)) throw new Error(`[${label}] Invalid WASM response from ${String(url)}: content-type=${contentType}, bytes=${bytes.byteLength}. Check that the WASM asset exists and is served by the app.`);
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(url, label) {
44
- let response;
37
+ async function fetchWasmBytes(e, t) {
38
+ let n;
45
39
  try {
46
- response = await fetch(url);
47
- } catch (error) {
48
- const localFile = fileUrl(url);
49
- if (!localFile || !isUnsupportedNodeFileFetch(error)) throw error;
50
- const bytes = await readNodeFile(localFile);
51
- assertWasmBytes(bytes, url, label, "application/wasm");
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 (!response.ok) throw new Error(`[${label}] Failed to load WASM ${String(url)}: ${response.status} ${response.statusText}`);
55
- const bytes = await response.arrayBuffer();
56
- assertWasmBytes(bytes, url, label, response.headers.get("content-type") || "unknown");
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: (_target, prop) => typeof prop === "string" ? prop : void 0 });
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 u8 = Uint8Array;
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 freb = function(eb, start) {
157
- var b = new u16(31);
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
- var _a = freb(fleb, 2);
167
- var fl = _a.b;
168
- var revfl = _a.r;
169
- fl[28] = 258, revfl[258] = 28;
170
- var _b = freb(fdeb, 0);
171
- var fd = _b.b;
172
- _b.r;
173
- var rev = new u16(32768);
174
- for (var i = 0; i < 32768; ++i) {
175
- var x = (i & 43690) >> 1 | (i & 21845) << 1;
176
- x = (x & 52428) >> 2 | (x & 13107) << 2;
177
- x = (x & 61680) >> 4 | (x & 3855) << 4;
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
- co = new u16(1 << mb);
190
- var rvb = 15 - mb;
191
- for (i = 0; i < s; ++i) if (cd[i]) {
192
- var sv = i << 4 | cd[i];
193
- var r_1 = mb - cd[i];
194
- var v = le[cd[i] - 1]++ << r_1;
195
- for (var m = v | (1 << r_1) - 1; v <= m; ++v) co[rev[v] >> rvb] = sv;
196
- }
197
- } else {
198
- co = new u16(s);
199
- for (i = 0; i < s; ++i) if (cd[i]) co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i];
200
- }
201
- return co;
202
- });
203
- var flt = new u8(288);
204
- for (var i = 0; i < 144; ++i) flt[i] = 8;
205
- for (var i = 144; i < 256; ++i) flt[i] = 9;
206
- for (var i = 256; i < 280; ++i) flt[i] = 7;
207
- for (var i = 280; i < 288; ++i) flt[i] = 8;
208
- var fdt = new u8(32);
209
- for (var i = 0; i < 32; ++i) fdt[i] = 5;
210
- var flrm = /*#__PURE__*/ hMap(flt, 9, 1);
211
- var fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
212
- var max = function(a) {
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 err = function(ind, msg, nt) {
250
- var e = new Error(msg || ec[ind]);
251
- e.code = ind;
252
- if (Error.captureStackTrace) Error.captureStackTrace(e, err);
253
- if (!nt) throw e;
254
- return e;
255
- };
256
- var inflt = function(dat, st, buf, dict) {
257
- var sl = dat.length, dl = dict ? dict.length : 0;
258
- if (!sl || st.f && !st.l) return buf || new u8(0);
259
- var noBuf = !buf;
260
- var resize = noBuf || st.i != 2;
261
- var noSt = st.i;
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 (!lm) {
275
- final = bits(dat, pos, 1);
276
- var type = bits(dat, pos + 1, 3);
277
- pos += 3;
278
- if (!type) {
279
- var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;
280
- if (t > sl) {
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
- if (resize) cbuf(bt + l);
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
- } else if (type == 1) lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
289
- else if (type == 2) {
290
- var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
291
- var tl = hLit + bits(dat, pos + 5, 31) + 1;
292
- pos += 14;
293
- var ldt = new u8(tl);
294
- var clt = new u8(19);
295
- for (var i = 0; i < hcLen; ++i) clt[clim[i]] = bits(dat, pos + i * 3, 7);
296
- pos += hcLen * 3;
297
- var clb = max(clt), clbmsk = (1 << clb) - 1;
298
- var clm = hMap(clt, clb, 1);
299
- for (var i = 0; i < tl;) {
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 c = 0, n = 0;
306
- if (s == 16) n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
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 lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
313
- lbt = max(lt);
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 (pos > tbts) {
319
- if (noSt) err(0);
249
+ if (v > w) {
250
+ m && err(0);
320
251
  break;
321
252
  }
322
253
  }
323
- if (resize) cbuf(bt + 131072);
324
- var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
325
- var lpos = pos;
326
- for (;; lpos = pos) {
327
- var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
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 (!c) err(2);
334
- if (sym < 256) buf[bt++] = sym;
335
- else if (sym == 256) {
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 add = sym - 254;
340
- if (sym > 264) {
341
- var i = sym - 257, b = fleb[i];
342
- add = bits(dat, pos, (1 << b) - 1) + fl[i];
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 d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
346
- if (!d) err(3);
347
- pos += d & 15;
348
- var dt = fd[dsym];
349
- if (dsym > 3) {
350
- var b = fdeb[dsym];
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 (pos > tbts) {
354
- if (noSt) err(0);
278
+ if (v > w) {
279
+ m && err(0);
355
280
  break;
356
281
  }
357
- if (resize) cbuf(bt + 131072);
358
- var end = bt + add;
359
- if (bt < dt) {
360
- var shift = dl - dt, dend = Math.min(dt, end);
361
- if (shift + bt < 0) err(3);
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 (; bt < end; ++bt) buf[bt] = buf[bt - dt];
288
+ for (; y < Z; ++y) o[y] = o[y - H];
365
289
  }
366
290
  }
367
- st.l = lm, st.p = lpos, st.b = bt, st.f = final;
368
- if (lm) final = 1, st.m = lbt, st.d = dm, st.n = dbt;
369
- } while (!final);
370
- return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
371
- };
372
- var et = /*#__PURE__*/ new u8(0);
373
- var b2 = function(d, b) {
374
- return d[b] | d[b + 1] << 8;
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
- var b8 = function(d, b) {
380
- return b4(d, b) + b4(d, b + 4) * 4294967296;
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 td = typeof TextDecoder != "undefined" && /*#__PURE__*/ new TextDecoder();
304
+ var b = typeof TextDecoder < "u" && /*#__PURE__*/ new TextDecoder();
386
305
  try {
387
- td.decode(et, { stream: true });
388
- } catch (e) {}
389
- var dutf8 = function(d) {
390
- for (var r = "", i = 0;;) {
391
- var c = d[i++];
392
- var eb = (c > 127) + (c > 223) + (c > 239);
393
- if (i + eb > d.length) return {
394
- s: r,
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
- if (!eb) r += String.fromCharCode(c);
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
- * Converts a Uint8Array to a string
405
- * @param dat The data to decode to string
406
- * @param latin1 Whether or not to interpret the data as Latin-1. This should
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 slzh = function(d, b) {
423
- return b + 30 + b2(d, b + 26) + b2(d, b + 28);
424
- };
425
- var zh = function(d, b, z) {
426
- var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;
427
- var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];
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(d, b + 10),
430
- sc,
431
- su,
432
- fn,
433
- es + efl + b2(d, b + 32),
434
- off
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 z64hs = function(d, b, l, z, sc, su, off) {
438
- var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;
439
- var nf = nsc + nsu + noff;
440
- if (z && nf) {
441
- for (; b + 4 < e; b += 4 + b2(d, b + 2)) if (b2(d, b) == 1) return [
442
- nsc ? b8(d, b + 4 + 8 * nsu) : sc,
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
- if (z < 2) err(13);
348
+ r < 2 && err(13);
448
349
  }
449
350
  return [
450
- sc,
451
- su,
452
- off,
351
+ i,
352
+ a,
353
+ o,
453
354
  0
454
355
  ];
455
356
  };
456
- /**
457
- * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
458
- * performance with more than one file.
459
- * @param data The raw compressed ZIP file
460
- * @param opts The ZIP extraction options
461
- * @returns The decompressed files
462
- */
463
- function unzipSync(data, opts) {
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 fltr = opts && opts.filter;
480
- for (var i = 0; i < c; ++i) {
481
- var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
482
- o = no;
483
- if (!fltr || fltr({
484
- name: fn,
485
- size: sc,
486
- originalSize: su,
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 files;
375
+ return r;
495
376
  }
496
377
  //#endregion
497
378
  //#region src/resource-policy.generated.ts
498
- const RESOURCE_POLICY_CONTRACT = {
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(details) {
584
- super(`${details.reason}: ${details.subject} observed ${details.observed} ${details.unit}; policy limit is ${details.limit} ${details.unit}. This is an engineering safety limit, not a plan entitlement; reduce or split the input.`);
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(reason, stage, subject, limit, observed, unit) {
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: RESOURCE_POLICY_CONTRACT.policyVersion,
598
- commercialUpgradeApplicable: false
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(bytes, subject = "PPTX input") {
602
- if (bytes > BROWSER_RESOURCE_LIMITS.inputBytes) fail("resource_input_too_large", "input", subject, BROWSER_RESOURCE_LIMITS.inputBytes, bytes, "bytes");
603
- }
604
- function checkBrowserElapsed(startedAt, subject = "parse wall clock") {
605
- checkBrowserElapsedMs(Math.max(0, Math.ceil(performance.now() - startedAt)), subject);
606
- }
607
- function checkBrowserElapsedMs(elapsed, subject = "parse wall clock") {
608
- if (elapsed > BROWSER_RESOURCE_LIMITS.wallClockMs) fail("resource_timeout", "runtime", subject, BROWSER_RESOURCE_LIMITS.wallClockMs, elapsed, "milliseconds");
609
- }
610
- function resourcePolicyErrorFromDetails(value) {
611
- if (!value || typeof value !== "object") return null;
612
- const details = value;
613
- if (typeof details.reason !== "string" || !RESOURCE_POLICY_CONTRACT.stableReasons.includes(details.reason) || typeof details.stage !== "string" || typeof details.subject !== "string" || !Number.isSafeInteger(details.limit) || (details.limit ?? -1) < 0 || !Number.isSafeInteger(details.observed) || (details.observed ?? -1) < 0 || typeof details.unit !== "string" || details.policyVersion !== RESOURCE_POLICY_CONTRACT.policyVersion || details.commercialUpgradeApplicable !== false) return null;
614
- return new ResourcePolicyError({
615
- reason: details.reason,
616
- stage: details.stage,
617
- subject: details.subject,
618
- limit: details.limit,
619
- observed: details.observed,
620
- unit: details.unit,
621
- policyVersion: details.policyVersion,
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(entries) {
626
- if (entries.length > BROWSER_RESOURCE_LIMITS.zipEntries) fail("resource_zip_entries_exceeded", "zip", "ZIP entry count", BROWSER_RESOURCE_LIMITS.zipEntries, entries.length, "entries");
627
- let expandedTotal = 0;
628
- for (const entry of entries) {
629
- const expanded = Math.max(0, entry.originalSize);
630
- const compressed = Math.max(0, entry.size);
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
- * Decompress a browser PPTX only after fflate exposes each central-directory
639
- * record to the policy filter. XML and image checks run before any parser or
640
- * renderer consumes the expanded payloads.
641
- */
642
- function unzipBrowserPptx(data) {
643
- const input = data instanceof Uint8Array ? data : new Uint8Array(data);
644
- checkBrowserInput(input.byteLength);
645
- const entries = [];
646
- unzipSync(input, { filter(info) {
647
- entries.push(info);
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(depth, subject) {
661
- if (depth > BROWSER_RESOURCE_LIMITS.xmlDepth) fail("resource_xml_depth_exceeded", "xml", subject, BROWSER_RESOURCE_LIMITS.xmlDepth, depth, "levels");
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(depth, bytes, subject) {
666
- this.observeNode(depth, subject);
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(name) {
671
- const normalized = name.toLowerCase();
672
- return normalized.endsWith(".xml") || normalized.endsWith(".rels") || normalized.endsWith(".svg") || normalized.endsWith(".vml");
673
- }
674
- function looksLikeXmlPayload(input) {
675
- let position = input.length >= 3 && input[0] === 239 && input[1] === 187 && input[2] === 191 ? 3 : 0;
676
- while (position < input.length && isSpace(input[position])) position += 1;
677
- if (position + 1 >= input.length || input[position] !== 60) return false;
678
- const next = input[position + 1];
679
- return next === 63 || next === 33 || next === 95 || next === 58 || next >= 65 && next <= 90 || next >= 97 && next <= 122 || next >= 128;
680
- }
681
- function checkBrowserXmlParts(parts) {
682
- const budget = new XmlBudget();
683
- for (const [name, bytes] of parts) if (isXmlPart(name) || looksLikeXmlPayload(bytes)) scanXml(bytes, budget, name);
684
- }
685
- const ascii = (value) => new TextEncoder().encode(value);
686
- const COMMENT = ascii("<!--");
687
- const COMMENT_END = ascii("-->");
688
- const CDATA = ascii("<![CDATA[");
689
- const CDATA_END = ascii("]]>");
690
- const PROCESSING = ascii("<?");
691
- const PROCESSING_END = ascii("?>");
692
- const DOCTYPE_UPPER = ascii("<!DOCTYPE");
693
- const DOCTYPE_LOWER = ascii("<!doctype");
694
- function matchesAt(input, start, expected) {
695
- if (start < 0 || start + expected.length > input.length) return false;
696
- for (let index = 0; index < expected.length; index += 1) if (input[start + index] !== expected[index]) return false;
697
- return true;
698
- }
699
- function findTerminator(input, start, expected) {
700
- const last = input.length - expected.length;
701
- for (let index = start; index <= last; index += 1) if (matchesAt(input, index, expected)) return index;
702
- return input.length;
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 input.length;
714
- }
715
- function skipDoctype(input, start) {
716
- let quote = 0;
717
- let subsetDepth = 0;
718
- for (let index = start; index < input.length; index += 1) {
719
- const value = input[index];
720
- if (quote !== 0) {
721
- if (value === quote) quote = 0;
722
- } else if (value === 34 || value === 39) quote = value;
723
- else if (value === 91) subsetDepth += 1;
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 input.length;
728
- }
729
- function isSpace(value) {
730
- return value === 32 || value === 9 || value === 10 || value === 13;
731
- }
732
- function scanXml(input, budget, subject) {
733
- let position = 0;
734
- let depth = 0;
735
- while (position < input.length) {
736
- if (input[position] !== 60) {
737
- const start = position;
738
- while (position < input.length && input[position] !== 60) position += 1;
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(input, position, COMMENT)) {
743
- budget.observeNode(depth, `${subject} comment`);
744
- const end = findTerminator(input, position + COMMENT.length, COMMENT_END);
745
- position = end === input.length ? end : end + COMMENT_END.length;
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(input, position, CDATA)) {
749
- const start = position + CDATA.length;
750
- const end = findTerminator(input, start, CDATA_END);
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(input, position, PROCESSING)) {
756
- budget.observeNode(depth, `${subject} processing instruction`);
757
- const end = findTerminator(input, position + PROCESSING.length, PROCESSING_END);
758
- position = end === input.length ? end : end + PROCESSING_END.length;
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(input, position, DOCTYPE_UPPER) || matchesAt(input, position, DOCTYPE_LOWER)) {
762
- position = skipDoctype(input, position + 2);
610
+ if (matchesAt(e, r, k) || matchesAt(e, r, A)) {
611
+ r = skipDoctype(e, r + 2);
763
612
  continue;
764
613
  }
765
- if (position + 1 < input.length && input[position + 1] === 47) {
766
- position = findTagEnd(input, position + 2);
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 (position + 1 < input.length && input[position + 1] === 33) {
771
- position = findTagEnd(input, position + 2);
618
+ if (r + 1 < e.length && e[r + 1] === 33) {
619
+ r = findTagEnd(e, r + 2);
772
620
  continue;
773
621
  }
774
- const end = findTagEnd(input, position + 1);
775
- let tail = end - 2;
776
- while (tail > position && isSpace(input[tail])) tail -= 1;
777
- const selfClosing = tail > position && input[tail] === 47;
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(data, offset) {
785
- return data[offset] * 256 + data[offset + 1];
628
+ function readU16BE(e, t) {
629
+ return e[t] * 256 + e[t + 1];
786
630
  }
787
- function readU16LE(data, offset) {
788
- return data[offset] + data[offset + 1] * 256;
631
+ function readU16LE(e, t) {
632
+ return e[t] + e[t + 1] * 256;
789
633
  }
790
- function readU24LE(data, offset) {
791
- return data[offset] + data[offset + 1] * 256 + data[offset + 2] * 65536;
634
+ function readU24LE(e, t) {
635
+ return e[t] + e[t + 1] * 256 + e[t + 2] * 65536;
792
636
  }
793
- function readU32BE(data, offset) {
794
- return data[offset] * 16777216 + data[offset + 1] * 65536 + data[offset + 2] * 256 + data[offset + 3];
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(data, offset) {
797
- return data[offset] + data[offset + 1] * 256 + data[offset + 2] * 65536 + data[offset + 3] * 16777216;
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(data, offset, expected) {
800
- if (offset < 0 || offset + expected.length > data.length) return false;
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(data) {
804
- if (data.length >= 24 && bytesEqual(data, 0, [
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(data, 12, [
656
+ ]) && bytesEqual(e, 12, [
814
657
  73,
815
658
  72,
816
659
  68,
817
660
  82
818
661
  ])) return {
819
- width: readU32BE(data, 16),
820
- height: readU32BE(data, 20)
662
+ width: readU32BE(e, 16),
663
+ height: readU32BE(e, 20)
821
664
  };
822
- if (data.length >= 10 && (bytesEqual(data, 0, [
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(data, 0, [
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(data, 6),
838
- height: readU16LE(data, 8)
680
+ width: readU16LE(e, 6),
681
+ height: readU16LE(e, 8)
839
682
  };
840
- if (data.length >= 26 && bytesEqual(data, 0, [66, 77])) {
841
- const dib = readU32LE(data, 14);
842
- if (dib === 12) return {
843
- width: readU16LE(data, 18),
844
- height: readU16LE(data, 20)
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 (dib >= 40) {
847
- const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
689
+ if (t >= 40) {
690
+ let t = new DataView(e.buffer, e.byteOffset, e.byteLength);
848
691
  return {
849
- width: Math.abs(view.getInt32(18, true)),
850
- height: Math.abs(view.getInt32(22, true))
692
+ width: Math.abs(t.getInt32(18, !0)),
693
+ height: Math.abs(t.getInt32(22, !0))
851
694
  };
852
695
  }
853
696
  }
854
- if (data.length >= 30 && bytesEqual(data, 0, [
697
+ if (e.length >= 30 && bytesEqual(e, 0, [
855
698
  82,
856
699
  73,
857
700
  70,
858
701
  70
859
- ]) && bytesEqual(data, 8, [
702
+ ]) && bytesEqual(e, 8, [
860
703
  87,
861
704
  69,
862
705
  66,
863
706
  80
864
707
  ])) {
865
- if (bytesEqual(data, 12, [
708
+ if (bytesEqual(e, 12, [
866
709
  86,
867
710
  80,
868
711
  56,
869
712
  88
870
713
  ])) return {
871
- width: 1 + readU24LE(data, 24),
872
- height: 1 + readU24LE(data, 27)
714
+ width: 1 + readU24LE(e, 24),
715
+ height: 1 + readU24LE(e, 27)
873
716
  };
874
- if (bytesEqual(data, 12, [
717
+ if (bytesEqual(e, 12, [
875
718
  86,
876
719
  80,
877
720
  56,
878
721
  76
879
- ]) && data[20] === 47) return {
880
- width: 1 + (data[21] | (data[22] & 63) << 8),
881
- height: 1 + (data[22] >> 6 | data[23] << 2 | (data[24] & 15) << 10)
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(data, 12, [
726
+ if (bytesEqual(e, 12, [
884
727
  86,
885
728
  80,
886
729
  56,
887
730
  32
888
- ]) && bytesEqual(data, 23, [
731
+ ]) && bytesEqual(e, 23, [
889
732
  157,
890
733
  1,
891
734
  42
892
735
  ])) return {
893
- width: (data[26] | data[27] << 8) & 16383,
894
- height: (data[28] | data[29] << 8) & 16383
736
+ width: (e[26] | e[27] << 8) & 16383,
737
+ height: (e[28] | e[29] << 8) & 16383
895
738
  };
896
739
  }
897
- if (data.length >= 4 && data[0] === 255 && data[1] === 216) {
898
- let position = 2;
899
- while (position + 3 < data.length) {
900
- while (position < data.length && data[position] !== 255) position += 1;
901
- while (position < data.length && data[position] === 255) position += 1;
902
- if (position >= data.length) break;
903
- const marker = data[position];
904
- position += 1;
905
- if (marker === 1 || marker === 216 || marker === 217 || marker >= 208 && marker <= 215) continue;
906
- if (position + 1 >= data.length) break;
907
- const length = readU16BE(data, position);
908
- if (length < 2 || position + length > data.length) break;
909
- if ((marker >= 192 && marker <= 195 || marker >= 197 && marker <= 199 || marker >= 201 && marker <= 203 || marker >= 205 && marker <= 207) && length >= 7) return {
910
- width: readU16BE(data, position + 5),
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
- position += length;
755
+ t += r;
914
756
  }
915
757
  }
916
- return probeTiff(data);
758
+ return probeTiff(e);
917
759
  }
918
- function checkBrowserImagePayload(data, subject = "image") {
919
- const dimensions = probeImageDimensions(data);
920
- if (dimensions) checkImageDimensions(dimensions.width, dimensions.height, subject);
760
+ function checkBrowserImagePayload(e, t = "image") {
761
+ let n = probeImageDimensions(e);
762
+ n && checkImageDimensions(n.width, n.height, t);
921
763
  }
922
- function probeTiff(data) {
923
- if (data.length < 8) return null;
924
- const little = bytesEqual(data, 0, [
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 (!little && !bytesEqual(data, 0, [
772
+ if (!t && !bytesEqual(e, 0, [
931
773
  77,
932
774
  77,
933
775
  0,
934
776
  42
935
777
  ])) return null;
936
- const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
937
- const offset = view.getUint32(4, little);
938
- if (offset + 2 > data.length) return null;
939
- const count = view.getUint16(offset, little);
940
- let width = null;
941
- let height = null;
942
- for (let index = 0; index < count; index += 1) {
943
- const entry = offset + 2 + index * 12;
944
- if (entry + 12 > data.length) return null;
945
- const tag = view.getUint16(entry, little);
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 width && height ? {
954
- width,
955
- height
790
+ return a && o ? {
791
+ width: a,
792
+ height: o
956
793
  } : null;
957
794
  }
958
- function checkImageDimensions(width, height, subject) {
959
- if (width <= 0 || height <= 0) return;
960
- const observed = width * height;
961
- if (!Number.isSafeInteger(observed) || observed > BROWSER_RESOURCE_LIMITS.imagePixels) fail("resource_image_pixels_exceeded", "image", subject, BROWSER_RESOURCE_LIMITS.imagePixels, Number.isSafeInteger(observed) ? observed : Number.MAX_SAFE_INTEGER, "pixels");
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(value, key) {
802
+ function property(e, t) {
966
803
  try {
967
- return value && typeof value === "object" ? value[key] : void 0;
804
+ return e && typeof e == "object" ? e[t] : void 0;
968
805
  } catch {
969
806
  return;
970
807
  }
971
808
  }
972
- function cloneFact(value) {
809
+ function cloneFact(e) {
973
810
  try {
974
- return structuredClone(value);
811
+ return structuredClone(e);
975
812
  } catch {
976
813
  return;
977
814
  }
978
815
  }
979
- function serializeWorkerError(error, seen = /* @__PURE__ */ new Map()) {
980
- const previous = seen.get(error);
981
- if (previous) return previous;
982
- const name = property(error, "name");
983
- const message = property(error, "message");
984
- let fallback = "Worker operation failed";
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
- const result = {
989
- name: typeof name === "string" ? name : "Error",
990
- message: typeof message === "string" ? message : fallback
823
+ let o = {
824
+ name: typeof r == "string" ? r : "Error",
825
+ message: typeof i == "string" ? i : a
991
826
  };
992
- seen.set(error, result);
993
- const code = property(error, "code");
994
- if (typeof code === "string" || typeof code === "number") result.code = code;
995
- const details = cloneFact(property(error, "details"));
996
- if (details !== void 0) result.details = details;
997
- const cause = property(error, "cause");
998
- if (cause !== void 0) {
999
- if (cause instanceof Error || typeof property(cause, "message") === "string") result.cause = {
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(cause, seen)
836
+ error: serializeWorkerError(l, t)
1002
837
  };
1003
838
  else {
1004
- const value = cloneFact(cause);
1005
- if (value !== void 0) result.cause = {
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 result;
846
+ return o;
1012
847
  }
1013
848
  //#endregion
1014
849
  //#region src/wasm-worker.ts
1015
- let instance = null;
1016
- let instanceSource = null;
1017
- async function ensureWasm(wasmUrl) {
1018
- const sourceUrl = wasmUrl ?? new URL("./mbt/main.wasm", import.meta.url);
1019
- const source = String(sourceUrl);
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
- instance = inst.exports;
1027
- instanceSource = source;
1028
- instance._start();
1029
- return instance;
1030
- }
1031
- async function parseWithWasmUnzip(mod, buffer) {
1032
- const t0 = performance.now();
1033
- checkBrowserInput(buffer.byteLength);
1034
- const latin1 = arrayBufferToLatin1(buffer);
1035
- const t1 = performance.now();
1036
- const fileCount = mod.decompress(latin1);
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: t1 - t0,
1051
- decompress: t2 - t1,
1052
- fileCount,
1053
- parse: t3 - t2,
1054
- serialize: t4 - t3,
1055
- jsonParse: t5 - t4,
1056
- total: t5 - t0
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(mod, buffer) {
1061
- const t0 = performance.now();
1062
- checkBrowserInput(buffer.byteLength);
1063
- const files = unzipBrowserPptx(buffer);
1064
- const t1 = performance.now();
1065
- let fileCount = 0;
1066
- for (const [filename, data] of Object.entries(files)) {
1067
- mod.add_predecompressed_file(filename, uint8ArrayToLatin1(data));
1068
- fileCount++;
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: t1 - t0,
1083
- fileCount,
1084
- parse: t3 - t2,
1085
- serialize: t2 - t1,
1086
- jsonParse: t4 - t3,
1087
- total: t4 - t0
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 active = /* @__PURE__ */ new Set();
900
+ const N = /* @__PURE__ */ new Set();
1092
901
  self.onmessage = async (e) => {
1093
902
  if ("kind" in e.data && e.data.kind === "cancel") {
1094
- active.delete(e.data.id);
903
+ N.delete(e.data.id);
1095
904
  return;
1096
905
  }
1097
- const id = e.data instanceof ArrayBuffer ? 0 : e.data.id ?? 0;
1098
- active.add(id);
906
+ let t = e.data instanceof ArrayBuffer ? 0 : e.data.id ?? 0;
907
+ N.add(t);
1099
908
  try {
1100
- const { buffer, unzipMode, wasmUrl } = e.data instanceof ArrayBuffer ? {
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
- const mod = await ensureWasm(wasmUrl);
1105
- if (!active.has(id)) return;
1106
- const { result, timing } = unzipMode === "js" ? await parseWithJsUnzip(mod, buffer) : await parseWithWasmUnzip(mod, buffer);
1107
- if (!active.has(id)) return;
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__ */ new Error(`WASM parser error: ${result.error}`))
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: result,
1120
- timing
927
+ data: o,
928
+ timing: s
1121
929
  });
1122
- } catch (err) {
1123
- if (!active.has(id)) return;
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(err)
935
+ error: serializeWorkerError(e)
1128
936
  });
1129
937
  } finally {
1130
- if (!active.delete(id)) self.postMessage({
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
  });