@pixerate/editor 0.112.0 → 0.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/THIRD_PARTY_NOTICES.md +11 -0
  2. package/dist/animation-editor/index.cjs +60 -54
  3. package/dist/animation-editor/index.cjs.map +1 -1
  4. package/dist/animation-editor/index.d.cts +3 -3
  5. package/dist/animation-editor/index.d.ts +3 -3
  6. package/dist/animation-editor/index.js +14 -8
  7. package/dist/animation-editor/index.js.map +1 -1
  8. package/dist/builtin-CY97ppKM.d.cts +354 -0
  9. package/dist/builtin-CY97ppKM.d.ts +354 -0
  10. package/dist/canvas/index.cjs +3 -3
  11. package/dist/canvas/index.cjs.map +1 -1
  12. package/dist/canvas/index.js +9 -9
  13. package/dist/chunk-26PGXHY7.cjs +753 -0
  14. package/dist/chunk-26PGXHY7.cjs.map +1 -0
  15. package/dist/chunk-2OJACTPR.cjs +929 -0
  16. package/dist/chunk-2OJACTPR.cjs.map +1 -0
  17. package/dist/chunk-3UFGNHSP.js +929 -0
  18. package/dist/chunk-3UFGNHSP.js.map +1 -0
  19. package/dist/{chunk-YGIMK4NX.cjs → chunk-5OVJHMZQ.cjs} +757 -825
  20. package/dist/chunk-5OVJHMZQ.cjs.map +1 -0
  21. package/dist/chunk-643B2HKC.cjs +534 -0
  22. package/dist/chunk-643B2HKC.cjs.map +1 -0
  23. package/dist/chunk-6FCKOS2B.js +534 -0
  24. package/dist/chunk-6FCKOS2B.js.map +1 -0
  25. package/dist/chunk-BRLYOPLT.js +2574 -0
  26. package/dist/chunk-BRLYOPLT.js.map +1 -0
  27. package/dist/{chunk-LQEEDHOP.js → chunk-C6C5PDKU.js} +759 -761
  28. package/dist/chunk-C6C5PDKU.js.map +1 -0
  29. package/dist/chunk-DFQEX3AM.cjs +781 -0
  30. package/dist/chunk-DFQEX3AM.cjs.map +1 -0
  31. package/dist/{chunk-CZOXTEMN.js → chunk-EUVSQ25B.js} +336 -404
  32. package/dist/chunk-EUVSQ25B.js.map +1 -0
  33. package/dist/chunk-G5NMLUVF.cjs +2574 -0
  34. package/dist/chunk-G5NMLUVF.cjs.map +1 -0
  35. package/dist/chunk-LKCYANMW.js +781 -0
  36. package/dist/chunk-LKCYANMW.js.map +1 -0
  37. package/dist/{chunk-W3GXSUSQ.cjs → chunk-LPLCWZTM.cjs} +5087 -1283
  38. package/dist/chunk-LPLCWZTM.cjs.map +1 -0
  39. package/dist/chunk-MMVHBKMM.js +753 -0
  40. package/dist/chunk-MMVHBKMM.js.map +1 -0
  41. package/dist/{chunk-POGBUYWE.cjs → chunk-ST7E3NEE.cjs} +857 -859
  42. package/dist/chunk-ST7E3NEE.cjs.map +1 -0
  43. package/dist/{chunk-7VOHOPLW.cjs → chunk-TCKIXI46.cjs} +59 -59
  44. package/dist/{chunk-7VOHOPLW.cjs.map → chunk-TCKIXI46.cjs.map} +1 -1
  45. package/dist/{chunk-XIOMMGPD.cjs → chunk-TFOPHZ3U.cjs} +1 -1
  46. package/dist/chunk-TFOPHZ3U.cjs.map +1 -0
  47. package/dist/{chunk-Z4BC6M74.js → chunk-UBIXVXPR.js} +2 -2
  48. package/dist/{chunk-BLWCAQCW.js → chunk-VXR7XWMF.js} +4574 -770
  49. package/dist/chunk-VXR7XWMF.js.map +1 -0
  50. package/dist/{chunk-HNS7UHCM.js → chunk-XK5LZKBD.js} +1 -1
  51. package/dist/chunk-XK5LZKBD.js.map +1 -0
  52. package/dist/cms/index.cjs +146 -0
  53. package/dist/cms/index.cjs.map +1 -0
  54. package/dist/cms/index.d.cts +51 -0
  55. package/dist/cms/index.d.ts +51 -0
  56. package/dist/cms/index.js +146 -0
  57. package/dist/{export-DNu_Jr8p.d.ts → export-_1dUKwpF.d.ts} +326 -195
  58. package/dist/{export-DBba-buV.d.cts → export-b6NjCZ5-.d.cts} +326 -195
  59. package/dist/image-editor/index.cjs +2377 -1291
  60. package/dist/image-editor/index.cjs.map +1 -1
  61. package/dist/image-editor/index.d.cts +149 -97
  62. package/dist/image-editor/index.d.ts +149 -97
  63. package/dist/image-editor/index.js +1343 -257
  64. package/dist/image-editor/index.js.map +1 -1
  65. package/dist/opentype-BZEOSOX3.d.ts +188 -0
  66. package/dist/opentype-Dpe75vL5.d.cts +188 -0
  67. package/dist/paint/index.cjs +63 -4
  68. package/dist/paint/index.cjs.map +1 -1
  69. package/dist/paint/index.d.cts +30 -3
  70. package/dist/paint/index.d.ts +30 -3
  71. package/dist/paint/index.js +62 -3
  72. package/dist/paint-editor/index.cjs +146 -145
  73. package/dist/paint-editor/index.cjs.map +1 -1
  74. package/dist/paint-editor/index.d.cts +9 -8
  75. package/dist/paint-editor/index.d.ts +9 -8
  76. package/dist/paint-editor/index.js +6 -5
  77. package/dist/paint-editor/index.js.map +1 -1
  78. package/dist/raster/index.cjs +53 -3
  79. package/dist/raster/index.cjs.map +1 -1
  80. package/dist/raster/index.d.cts +62 -91
  81. package/dist/raster/index.d.ts +62 -91
  82. package/dist/raster/index.js +59 -9
  83. package/dist/{render-BEriFuqK.d.cts → render-B1K_OoLy.d.cts} +87 -2
  84. package/dist/{render-tjzKaik-.d.ts → render-CrmHOgpo.d.ts} +87 -2
  85. package/dist/{blending-aOE6Y3UE.d.cts → retouch-Bxkuc0KH.d.cts} +219 -2
  86. package/dist/{blending-DXl06NSx.d.ts → retouch-Do6tBs2H.d.ts} +219 -2
  87. package/dist/{surface-C8RRg_Bh.d.ts → surface-Cn30xIV6.d.cts} +6 -1
  88. package/dist/{surface-C8RRg_Bh.d.cts → surface-Cn30xIV6.d.ts} +6 -1
  89. package/dist/{svg-D_cfkhlB.d.cts → svg-BnRj0q8i.d.cts} +16 -4
  90. package/dist/{svg-wIaKLrU0.d.ts → svg-CmmBFfGT.d.ts} +16 -4
  91. package/dist/{types-DtL_qLFz.d.ts → types-1SUQKDAw.d.ts} +273 -4
  92. package/dist/{types-DyQq-WPY.d.cts → types-yINF17Ta.d.cts} +273 -4
  93. package/dist/vector/index.cjs +12170 -7343
  94. package/dist/vector/index.cjs.map +1 -1
  95. package/dist/vector/index.d.cts +1579 -16
  96. package/dist/vector/index.d.ts +1579 -16
  97. package/dist/vector/index.js +6303 -1476
  98. package/dist/vector/index.js.map +1 -1
  99. package/dist/warp-B39VsOtd.d.cts +348 -0
  100. package/dist/warp-DMN30aY6.d.ts +348 -0
  101. package/dist/zlib-dxQdgHyN.d.cts +95 -0
  102. package/dist/zlib-dxQdgHyN.d.ts +95 -0
  103. package/package.json +6 -1
  104. package/skills/pixerate-image-editor/SKILL.md +34 -34
  105. package/skills/pixerate-image-editor/references/color-management.md +37 -0
  106. package/skills/pixerate-image-editor/references/photoshop-files.md +39 -0
  107. package/skills/pixerate-image-editor/references/retouching.md +36 -0
  108. package/skills/pixerate-vector/SKILL.md +154 -5
  109. package/dist/chunk-BLWCAQCW.js.map +0 -1
  110. package/dist/chunk-CZOXTEMN.js.map +0 -1
  111. package/dist/chunk-FTBZPI77.cjs +0 -1
  112. package/dist/chunk-FTBZPI77.cjs.map +0 -1
  113. package/dist/chunk-HNS7UHCM.js.map +0 -1
  114. package/dist/chunk-JLYX4V57.cjs +0 -2001
  115. package/dist/chunk-JLYX4V57.cjs.map +0 -1
  116. package/dist/chunk-KB2YBCVS.js +0 -2001
  117. package/dist/chunk-KB2YBCVS.js.map +0 -1
  118. package/dist/chunk-LQEEDHOP.js.map +0 -1
  119. package/dist/chunk-POGBUYWE.cjs.map +0 -1
  120. package/dist/chunk-VKK5VS2T.js +0 -1
  121. package/dist/chunk-W3GXSUSQ.cjs.map +0 -1
  122. package/dist/chunk-XIOMMGPD.cjs.map +0 -1
  123. package/dist/chunk-YGIMK4NX.cjs.map +0 -1
  124. package/dist/homography-CZ-tFjay.d.cts +0 -50
  125. package/dist/homography-Ctfjoc1b.d.ts +0 -50
  126. package/dist/warp-CWHZzE3x.d.ts +0 -118
  127. package/dist/warp-D5jz_tN7.d.cts +0 -118
  128. /package/dist/{chunk-Z4BC6M74.js.map → chunk-UBIXVXPR.js.map} +0 -0
  129. /package/dist/{chunk-VKK5VS2T.js.map → cms/index.js.map} +0 -0
@@ -0,0 +1,534 @@
1
+ // src/raster/zlib.ts
2
+ var LENGTH_BASE = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258];
3
+ var LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];
4
+ var DIST_BASE = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];
5
+ var DIST_EXTRA = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
6
+ var CL_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
7
+ var ZlibError = class extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = "ZlibError";
11
+ }
12
+ };
13
+ function buildHuffman(lengths, n) {
14
+ const counts = new Uint16Array(16);
15
+ for (let i = 0; i < n; i++) counts[lengths[i]]++;
16
+ counts[0] = 0;
17
+ const offs = new Uint16Array(16);
18
+ for (let i = 1; i < 16; i++) offs[i] = offs[i - 1] + counts[i - 1];
19
+ const symbols = new Uint16Array(n);
20
+ for (let i = 0; i < n; i++) if (lengths[i]) symbols[offs[lengths[i]]++] = i;
21
+ return { counts, symbols };
22
+ }
23
+ var fixedLit = null;
24
+ var fixedDist = null;
25
+ function fixedTables() {
26
+ if (!fixedLit || !fixedDist) {
27
+ const l = new Uint8Array(288);
28
+ for (let i = 0; i < 144; i++) l[i] = 8;
29
+ for (let i = 144; i < 256; i++) l[i] = 9;
30
+ for (let i = 256; i < 280; i++) l[i] = 7;
31
+ for (let i = 280; i < 288; i++) l[i] = 8;
32
+ fixedLit = buildHuffman(l, 288);
33
+ const d = new Uint8Array(30).fill(5);
34
+ fixedDist = buildHuffman(d, 30);
35
+ }
36
+ return [fixedLit, fixedDist];
37
+ }
38
+ var BitReader = class {
39
+ constructor(data) {
40
+ this.data = data;
41
+ }
42
+ data;
43
+ pos = 0;
44
+ bit = 0;
45
+ bits = 0;
46
+ need(n) {
47
+ while (this.bits < n) {
48
+ if (this.pos >= this.data.length) throw new ZlibError("Unexpected end of compressed data");
49
+ this.bit |= this.data[this.pos++] << this.bits;
50
+ this.bits += 8;
51
+ }
52
+ const v = this.bit & (1 << n) - 1;
53
+ this.bit >>>= n;
54
+ this.bits -= n;
55
+ return v;
56
+ }
57
+ decode(h) {
58
+ let code = 0;
59
+ let first = 0;
60
+ let index = 0;
61
+ for (let len = 1; len < 16; len++) {
62
+ code |= this.need(1);
63
+ const count = h.counts[len];
64
+ if (code - count < first) return h.symbols[index + (code - first)];
65
+ index += count;
66
+ first += count;
67
+ first <<= 1;
68
+ code <<= 1;
69
+ }
70
+ throw new ZlibError("Invalid Huffman code");
71
+ }
72
+ align() {
73
+ this.bit = 0;
74
+ this.bits = 0;
75
+ }
76
+ };
77
+ var Output = class {
78
+ constructor(hint, max) {
79
+ this.max = max;
80
+ this.buf = new Uint8Array(Math.max(1024, Math.min(hint, max)));
81
+ }
82
+ max;
83
+ buf;
84
+ len = 0;
85
+ ensure(n) {
86
+ if (this.len + n > this.max) throw new ZlibError(`Decompressed data exceeds ${this.max} bytes`);
87
+ if (this.len + n <= this.buf.length) return;
88
+ let size = this.buf.length * 2;
89
+ while (size < this.len + n) size *= 2;
90
+ const next = new Uint8Array(Math.min(size, Math.max(this.max, this.len + n)));
91
+ next.set(this.buf.subarray(0, this.len));
92
+ this.buf = next;
93
+ }
94
+ };
95
+ function inflateRaw(data, options = {}) {
96
+ const max = options.maxOutput ?? 512 * 1024 * 1024;
97
+ const out = new Output(options.sizeHint ?? data.length * 4, max);
98
+ const br = new BitReader(data);
99
+ let final = 0;
100
+ while (!final) {
101
+ final = br.need(1);
102
+ const type = br.need(2);
103
+ if (type === 0) {
104
+ br.align();
105
+ if (br.pos + 4 > data.length) throw new ZlibError("Unexpected end of compressed data");
106
+ const len = data[br.pos] | data[br.pos + 1] << 8;
107
+ const nlen = data[br.pos + 2] | data[br.pos + 3] << 8;
108
+ br.pos += 4;
109
+ if ((len ^ 65535) !== nlen) throw new ZlibError("Stored block length mismatch");
110
+ if (br.pos + len > data.length) throw new ZlibError("Unexpected end of compressed data");
111
+ out.ensure(len);
112
+ out.buf.set(data.subarray(br.pos, br.pos + len), out.len);
113
+ out.len += len;
114
+ br.pos += len;
115
+ continue;
116
+ }
117
+ let lit;
118
+ let dist;
119
+ if (type === 1) [lit, dist] = fixedTables();
120
+ else if (type === 2) {
121
+ const hlit = br.need(5) + 257;
122
+ const hdist = br.need(5) + 1;
123
+ const hclen = br.need(4) + 4;
124
+ const cl = new Uint8Array(19);
125
+ for (let i2 = 0; i2 < hclen; i2++) cl[CL_ORDER[i2]] = br.need(3);
126
+ const clh = buildHuffman(cl, 19);
127
+ const lengths = new Uint8Array(hlit + hdist);
128
+ let i = 0;
129
+ while (i < hlit + hdist) {
130
+ const sym = br.decode(clh);
131
+ if (sym < 16) lengths[i++] = sym;
132
+ else {
133
+ let rep = 0;
134
+ let val = 0;
135
+ if (sym === 16) {
136
+ if (i === 0) throw new ZlibError("Repeat with no previous length");
137
+ val = lengths[i - 1];
138
+ rep = 3 + br.need(2);
139
+ } else if (sym === 17) rep = 3 + br.need(3);
140
+ else rep = 11 + br.need(7);
141
+ if (i + rep > hlit + hdist) throw new ZlibError("Too many code lengths");
142
+ while (rep--) lengths[i++] = val;
143
+ }
144
+ }
145
+ lit = buildHuffman(lengths.subarray(0, hlit), hlit);
146
+ dist = buildHuffman(lengths.subarray(hlit), hdist);
147
+ } else throw new ZlibError("Invalid block type");
148
+ for (; ; ) {
149
+ const sym = br.decode(lit);
150
+ if (sym < 256) {
151
+ out.ensure(1);
152
+ out.buf[out.len++] = sym;
153
+ } else if (sym === 256) break;
154
+ else {
155
+ const li = sym - 257;
156
+ if (li >= 29) throw new ZlibError("Invalid length symbol");
157
+ const len = LENGTH_BASE[li] + br.need(LENGTH_EXTRA[li]);
158
+ const di = br.decode(dist);
159
+ if (di >= 30) throw new ZlibError("Invalid distance symbol");
160
+ const d = DIST_BASE[di] + br.need(DIST_EXTRA[di]);
161
+ if (d > out.len) throw new ZlibError("Distance too far back");
162
+ out.ensure(len);
163
+ const buf = out.buf;
164
+ let p = out.len;
165
+ for (let k = 0; k < len; k++, p++) buf[p] = buf[p - d];
166
+ out.len = p;
167
+ }
168
+ }
169
+ }
170
+ return out.buf.slice(0, out.len);
171
+ }
172
+ function adler32(data) {
173
+ let a = 1;
174
+ let b = 0;
175
+ const n = data.length;
176
+ let i = 0;
177
+ while (i < n) {
178
+ const end = Math.min(n, i + 3800);
179
+ for (; i < end; i++) {
180
+ a += data[i];
181
+ b += a;
182
+ }
183
+ a %= 65521;
184
+ b %= 65521;
185
+ }
186
+ return (b << 16 | a) >>> 0;
187
+ }
188
+ function inflate(data, options = {}) {
189
+ if (data.length < 6) throw new ZlibError("Truncated zlib stream");
190
+ const cmf = data[0];
191
+ const flg = data[1];
192
+ if ((cmf & 15) !== 8 || (cmf << 8 | flg) % 31 !== 0) throw new ZlibError("Not a zlib stream");
193
+ if (flg & 32) throw new ZlibError("Preset dictionaries are not supported");
194
+ const out = inflateRaw(data.subarray(2), options);
195
+ if (options.verify !== false && data.length >= 6) {
196
+ const t = data.length - 4;
197
+ const want = (data[t] << 24 | data[t + 1] << 16 | data[t + 2] << 8 | data[t + 3]) >>> 0;
198
+ if (adler32(out) !== want) throw new ZlibError("Adler-32 mismatch");
199
+ }
200
+ return out;
201
+ }
202
+ var BitWriter = class {
203
+ buf;
204
+ len = 0;
205
+ bit = 0;
206
+ bits = 0;
207
+ constructor(hint) {
208
+ this.buf = new Uint8Array(Math.max(1024, hint));
209
+ }
210
+ grow() {
211
+ const next = new Uint8Array(this.buf.length * 2);
212
+ next.set(this.buf);
213
+ this.buf = next;
214
+ }
215
+ write(value, n) {
216
+ this.bit |= value << this.bits;
217
+ this.bits += n;
218
+ while (this.bits >= 8) {
219
+ if (this.len >= this.buf.length) this.grow();
220
+ this.buf[this.len++] = this.bit & 255;
221
+ this.bit >>>= 8;
222
+ this.bits -= 8;
223
+ }
224
+ }
225
+ flush() {
226
+ if (this.bits > 0) {
227
+ if (this.len >= this.buf.length) this.grow();
228
+ this.buf[this.len++] = this.bit & 255;
229
+ }
230
+ this.bit = 0;
231
+ this.bits = 0;
232
+ }
233
+ bytes() {
234
+ return this.buf.slice(0, this.len);
235
+ }
236
+ };
237
+ function codeLengths(freqs, maxBits) {
238
+ const n = freqs.length;
239
+ const lengths = new Uint8Array(n);
240
+ const f = Float64Array.from(freqs);
241
+ for (; ; ) {
242
+ const nodes = [];
243
+ for (let i = 0; i < n; i++) if (f[i] > 0) nodes.push({ w: f[i], sym: i });
244
+ lengths.fill(0);
245
+ if (nodes.length === 0) return lengths;
246
+ if (nodes.length === 1) {
247
+ lengths[nodes[0].sym] = 1;
248
+ return lengths;
249
+ }
250
+ const heap = nodes.map((_, i) => i);
251
+ const less = (a, b) => nodes[a].w < nodes[b].w || nodes[a].w === nodes[b].w && a < b;
252
+ const down = (i) => {
253
+ for (; ; ) {
254
+ const l = 2 * i + 1;
255
+ const r = l + 1;
256
+ let m = i;
257
+ if (l < heap.length && less(heap[l], heap[m])) m = l;
258
+ if (r < heap.length && less(heap[r], heap[m])) m = r;
259
+ if (m === i) return;
260
+ [heap[i], heap[m]] = [heap[m], heap[i]];
261
+ i = m;
262
+ }
263
+ };
264
+ const up = (i) => {
265
+ while (i > 0) {
266
+ const p = i - 1 >> 1;
267
+ if (!less(heap[i], heap[p])) return;
268
+ [heap[i], heap[p]] = [heap[p], heap[i]];
269
+ i = p;
270
+ }
271
+ };
272
+ for (let i = (heap.length >> 1) - 1; i >= 0; i--) down(i);
273
+ const pop = () => {
274
+ const top = heap[0];
275
+ const last = heap.pop();
276
+ if (heap.length) {
277
+ heap[0] = last;
278
+ down(0);
279
+ }
280
+ return top;
281
+ };
282
+ while (heap.length > 1) {
283
+ const a = pop();
284
+ const b = pop();
285
+ nodes.push({ w: nodes[a].w + nodes[b].w, sym: -1, left: a, right: b });
286
+ heap.push(nodes.length - 1);
287
+ up(heap.length - 1);
288
+ }
289
+ let maxLen = 0;
290
+ const stack = [[heap[0], 0]];
291
+ while (stack.length) {
292
+ const [i, d] = stack.pop();
293
+ const node = nodes[i];
294
+ if (node.sym >= 0) {
295
+ lengths[node.sym] = d;
296
+ if (d > maxLen) maxLen = d;
297
+ } else {
298
+ stack.push([node.left, d + 1], [node.right, d + 1]);
299
+ }
300
+ }
301
+ if (maxLen <= maxBits) return lengths;
302
+ for (let i = 0; i < n; i++) if (f[i] > 0) f[i] = Math.floor(f[i] / 2) + 1;
303
+ }
304
+ }
305
+ function canonicalCodes(lengths) {
306
+ const blCount = new Uint16Array(16);
307
+ for (const l of lengths) blCount[l]++;
308
+ blCount[0] = 0;
309
+ const next = new Uint16Array(16);
310
+ let code = 0;
311
+ for (let bits = 1; bits < 16; bits++) {
312
+ code = code + blCount[bits - 1] << 1;
313
+ next[bits] = code;
314
+ }
315
+ const codes = new Uint16Array(lengths.length);
316
+ for (let i = 0; i < lengths.length; i++) {
317
+ const len = lengths[i];
318
+ if (!len) continue;
319
+ let c = next[len]++;
320
+ let r = 0;
321
+ for (let k = 0; k < len; k++) {
322
+ r = r << 1 | c & 1;
323
+ c >>= 1;
324
+ }
325
+ codes[i] = r;
326
+ }
327
+ return codes;
328
+ }
329
+ function lengthSymbol(len) {
330
+ let i = 28;
331
+ while (LENGTH_BASE[i] > len) i--;
332
+ return i;
333
+ }
334
+ function distSymbol(d) {
335
+ let i = 29;
336
+ while (DIST_BASE[i] > d) i--;
337
+ return i;
338
+ }
339
+ var WINDOW = 32768;
340
+ var HASH_BITS = 15;
341
+ var HASH_SIZE = 1 << HASH_BITS;
342
+ var MAX_CHAIN = 24;
343
+ var MAX_MATCH = 258;
344
+ var BLOCK_SYMBOLS = 65536;
345
+ function deflateRaw(data, level = 1) {
346
+ const w = new BitWriter(Math.ceil(data.length / 2) + 64);
347
+ const n = data.length;
348
+ if (level === 0 || n === 0) {
349
+ let pos = 0;
350
+ do {
351
+ const len = Math.min(65535, n - pos);
352
+ const final = pos + len >= n ? 1 : 0;
353
+ w.write(final, 1);
354
+ w.write(0, 2);
355
+ w.flush();
356
+ w.write(len & 65535, 16);
357
+ w.write(~len & 65535, 16);
358
+ for (let i2 = 0; i2 < len; i2++) w.write(data[pos + i2], 8);
359
+ pos += len;
360
+ } while (pos < n);
361
+ return w.bytes();
362
+ }
363
+ const head = new Int32Array(HASH_SIZE).fill(-1);
364
+ const prev = new Int32Array(WINDOW);
365
+ const litLen = new Uint16Array(BLOCK_SYMBOLS);
366
+ const dists = new Uint16Array(BLOCK_SYMBOLS);
367
+ let count = 0;
368
+ const hash = (i2) => (data[i2] << 10 ^ data[i2 + 1] << 5 ^ data[i2 + 2]) * 2654435761 >>> 32 - HASH_BITS;
369
+ const insert = (i2) => {
370
+ if (i2 + 2 >= n) return;
371
+ const h = hash(i2);
372
+ prev[i2 & WINDOW - 1] = head[h];
373
+ head[h] = i2;
374
+ };
375
+ const flushBlock = (final) => {
376
+ const litFreq = new Uint32Array(286);
377
+ const distFreq = new Uint32Array(30);
378
+ for (let k = 0; k < count; k++) {
379
+ if (dists[k] === 0) litFreq[litLen[k]]++;
380
+ else {
381
+ litFreq[257 + lengthSymbol(litLen[k])]++;
382
+ distFreq[distSymbol(dists[k])]++;
383
+ }
384
+ }
385
+ litFreq[256] = 1;
386
+ let anyDist = false;
387
+ for (const v of distFreq) if (v) anyDist = true;
388
+ if (!anyDist) distFreq[0] = 1;
389
+ const litLengths = codeLengths(litFreq, 15);
390
+ const distLengths = codeLengths(distFreq, 15);
391
+ let hlit = 286;
392
+ while (hlit > 257 && !litLengths[hlit - 1]) hlit--;
393
+ let hdist = 30;
394
+ while (hdist > 1 && !distLengths[hdist - 1]) hdist--;
395
+ const all = new Uint8Array(hlit + hdist);
396
+ all.set(litLengths.subarray(0, hlit));
397
+ all.set(distLengths.subarray(0, hdist), hlit);
398
+ const clSyms = [];
399
+ const clExtra = [];
400
+ for (let i2 = 0; i2 < all.length; ) {
401
+ const v = all[i2];
402
+ let run = 1;
403
+ while (i2 + run < all.length && all[i2 + run] === v) run++;
404
+ if (v === 0 && run >= 3) {
405
+ const r = Math.min(run, 138);
406
+ if (r >= 11) {
407
+ clSyms.push(18);
408
+ clExtra.push(r - 11);
409
+ } else {
410
+ clSyms.push(17);
411
+ clExtra.push(r - 3);
412
+ }
413
+ i2 += r;
414
+ } else if (v !== 0 && run >= 4) {
415
+ clSyms.push(v);
416
+ clExtra.push(0);
417
+ const r = Math.min(run - 1, 6);
418
+ clSyms.push(16);
419
+ clExtra.push(r - 3);
420
+ i2 += r + 1;
421
+ } else {
422
+ clSyms.push(v);
423
+ clExtra.push(0);
424
+ i2++;
425
+ }
426
+ }
427
+ const clFreq = new Uint32Array(19);
428
+ for (const s of clSyms) clFreq[s]++;
429
+ const clLengths = codeLengths(clFreq, 7);
430
+ let hclen = 19;
431
+ while (hclen > 4 && !clLengths[CL_ORDER[hclen - 1]]) hclen--;
432
+ const clCodes = canonicalCodes(clLengths);
433
+ const litCodes = canonicalCodes(litLengths);
434
+ const distCodes = canonicalCodes(distLengths);
435
+ w.write(final ? 1 : 0, 1);
436
+ w.write(2, 2);
437
+ w.write(hlit - 257, 5);
438
+ w.write(hdist - 1, 5);
439
+ w.write(hclen - 4, 4);
440
+ for (let i2 = 0; i2 < hclen; i2++) w.write(clLengths[CL_ORDER[i2]], 3);
441
+ for (let i2 = 0; i2 < clSyms.length; i2++) {
442
+ const s = clSyms[i2];
443
+ w.write(clCodes[s], clLengths[s]);
444
+ if (s === 16) w.write(clExtra[i2], 2);
445
+ else if (s === 17) w.write(clExtra[i2], 3);
446
+ else if (s === 18) w.write(clExtra[i2], 7);
447
+ }
448
+ for (let k = 0; k < count; k++) {
449
+ const d = dists[k];
450
+ if (d === 0) {
451
+ const s = litLen[k];
452
+ w.write(litCodes[s], litLengths[s]);
453
+ } else {
454
+ const len = litLen[k];
455
+ const li = lengthSymbol(len);
456
+ w.write(litCodes[257 + li], litLengths[257 + li]);
457
+ if (LENGTH_EXTRA[li]) w.write(len - LENGTH_BASE[li], LENGTH_EXTRA[li]);
458
+ const di = distSymbol(d);
459
+ w.write(distCodes[di], distLengths[di]);
460
+ if (DIST_EXTRA[di]) w.write(d - DIST_BASE[di], DIST_EXTRA[di]);
461
+ }
462
+ }
463
+ w.write(litCodes[256], litLengths[256]);
464
+ count = 0;
465
+ };
466
+ let i = 0;
467
+ while (i < n) {
468
+ let bestLen = 0;
469
+ let bestDist = 0;
470
+ if (i + 2 < n) {
471
+ let cand = head[hash(i)];
472
+ let chain = MAX_CHAIN;
473
+ const limit = Math.min(MAX_MATCH, n - i);
474
+ while (cand >= 0 && i - cand <= WINDOW - 1 && chain-- > 0) {
475
+ if (data[cand + bestLen] === data[i + bestLen]) {
476
+ let l = 0;
477
+ while (l < limit && data[cand + l] === data[i + l]) l++;
478
+ if (l > bestLen) {
479
+ bestLen = l;
480
+ bestDist = i - cand;
481
+ if (l === limit) break;
482
+ }
483
+ }
484
+ const next = prev[cand & WINDOW - 1];
485
+ if (next >= cand) break;
486
+ cand = next;
487
+ }
488
+ }
489
+ if (bestLen >= 3) {
490
+ litLen[count] = bestLen;
491
+ dists[count] = bestDist;
492
+ count++;
493
+ const end = i + bestLen;
494
+ const insertEnd = bestLen > 64 ? i + 64 : end;
495
+ for (let k = i; k < insertEnd; k++) insert(k);
496
+ for (let k = Math.max(insertEnd, end - 3); k < end; k++) insert(k);
497
+ i = end;
498
+ } else {
499
+ litLen[count] = data[i];
500
+ dists[count] = 0;
501
+ count++;
502
+ insert(i);
503
+ i++;
504
+ }
505
+ if (count >= BLOCK_SYMBOLS - 1 && i < n) flushBlock(false);
506
+ }
507
+ flushBlock(true);
508
+ w.flush();
509
+ return w.bytes();
510
+ }
511
+ function deflate(data, level = 1) {
512
+ const raw = deflateRaw(data, level);
513
+ const out = new Uint8Array(raw.length + 6);
514
+ out[0] = 120;
515
+ out[1] = 1;
516
+ out.set(raw, 2);
517
+ const a = adler32(data);
518
+ const t = out.length - 4;
519
+ out[t] = a >>> 24;
520
+ out[t + 1] = a >>> 16 & 255;
521
+ out[t + 2] = a >>> 8 & 255;
522
+ out[t + 3] = a & 255;
523
+ return out;
524
+ }
525
+
526
+ export {
527
+ ZlibError,
528
+ inflateRaw,
529
+ adler32,
530
+ inflate,
531
+ deflateRaw,
532
+ deflate
533
+ };
534
+ //# sourceMappingURL=chunk-6FCKOS2B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/raster/zlib.ts"],"sourcesContent":["/**\n * Synchronous zlib (RFC 1950) and raw deflate (RFC 1951), dependency-free, for the image editor's\n * layer PNGs and PSD ZIP channels. `CompressionStream` is asynchronous and not everywhere, and\n * layer pixels must serialize inside the synchronous `toJSON()`.\n *\n * - `inflate` handles stored, fixed and dynamic blocks and refuses to produce more than\n * `maxOutput` bytes (a decompression bomb guard).\n * - `deflate` is a greedy LZ77 (hash chains, 32 KiB window) with one dynamic Huffman block per\n * 64 Ki symbols. It favours simplicity over the last few percent of ratio.\n */\n\n// ---------------------------------------------------------------------------\n// Shared tables\n// ---------------------------------------------------------------------------\n\nconst LENGTH_BASE = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258];\nconst LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];\nconst DIST_BASE = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];\nconst DIST_EXTRA = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\nconst CL_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n\nexport class ZlibError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ZlibError';\n }\n}\n\n// ---------------------------------------------------------------------------\n// Inflate\n// ---------------------------------------------------------------------------\n\ninterface Huffman {\n counts: Uint16Array;\n symbols: Uint16Array;\n}\n\nfunction buildHuffman(lengths: ArrayLike<number>, n: number): Huffman {\n const counts = new Uint16Array(16);\n for (let i = 0; i < n; i++) counts[lengths[i]]++;\n counts[0] = 0;\n const offs = new Uint16Array(16);\n for (let i = 1; i < 16; i++) offs[i] = offs[i - 1] + counts[i - 1];\n const symbols = new Uint16Array(n);\n for (let i = 0; i < n; i++) if (lengths[i]) symbols[offs[lengths[i]]++] = i;\n return { counts, symbols };\n}\n\nlet fixedLit: Huffman | null = null;\nlet fixedDist: Huffman | null = null;\nfunction fixedTables(): [Huffman, Huffman] {\n if (!fixedLit || !fixedDist) {\n const l = new Uint8Array(288);\n for (let i = 0; i < 144; i++) l[i] = 8;\n for (let i = 144; i < 256; i++) l[i] = 9;\n for (let i = 256; i < 280; i++) l[i] = 7;\n for (let i = 280; i < 288; i++) l[i] = 8;\n fixedLit = buildHuffman(l, 288);\n const d = new Uint8Array(30).fill(5);\n fixedDist = buildHuffman(d, 30);\n }\n return [fixedLit, fixedDist];\n}\n\nclass BitReader {\n pos = 0;\n bit = 0;\n bits = 0;\n constructor(readonly data: Uint8Array) {}\n need(n: number): number {\n while (this.bits < n) {\n if (this.pos >= this.data.length) throw new ZlibError('Unexpected end of compressed data');\n this.bit |= this.data[this.pos++] << this.bits;\n this.bits += 8;\n }\n const v = this.bit & ((1 << n) - 1);\n this.bit >>>= n;\n this.bits -= n;\n return v;\n }\n decode(h: Huffman): number {\n let code = 0;\n let first = 0;\n let index = 0;\n for (let len = 1; len < 16; len++) {\n code |= this.need(1);\n const count = h.counts[len];\n if (code - count < first) return h.symbols[index + (code - first)];\n index += count;\n first += count;\n first <<= 1;\n code <<= 1;\n }\n throw new ZlibError('Invalid Huffman code');\n }\n align(): void {\n this.bit = 0;\n this.bits = 0;\n }\n}\n\nclass Output {\n buf: Uint8Array;\n len = 0;\n constructor(hint: number, readonly max: number) {\n this.buf = new Uint8Array(Math.max(1024, Math.min(hint, max)));\n }\n ensure(n: number): void {\n if (this.len + n > this.max) throw new ZlibError(`Decompressed data exceeds ${this.max} bytes`);\n if (this.len + n <= this.buf.length) return;\n let size = this.buf.length * 2;\n while (size < this.len + n) size *= 2;\n const next = new Uint8Array(Math.min(size, Math.max(this.max, this.len + n)));\n next.set(this.buf.subarray(0, this.len));\n this.buf = next;\n }\n}\n\n/** Inflates raw deflate data (no zlib header). */\nexport function inflateRaw(data: Uint8Array, options: { maxOutput?: number; sizeHint?: number } = {}): Uint8Array {\n const max = options.maxOutput ?? 512 * 1024 * 1024;\n const out = new Output(options.sizeHint ?? data.length * 4, max);\n const br = new BitReader(data);\n let final = 0;\n while (!final) {\n final = br.need(1);\n const type = br.need(2);\n if (type === 0) {\n br.align();\n if (br.pos + 4 > data.length) throw new ZlibError('Unexpected end of compressed data');\n const len = data[br.pos] | (data[br.pos + 1] << 8);\n const nlen = data[br.pos + 2] | (data[br.pos + 3] << 8);\n br.pos += 4;\n if ((len ^ 0xffff) !== nlen) throw new ZlibError('Stored block length mismatch');\n if (br.pos + len > data.length) throw new ZlibError('Unexpected end of compressed data');\n out.ensure(len);\n out.buf.set(data.subarray(br.pos, br.pos + len), out.len);\n out.len += len;\n br.pos += len;\n continue;\n }\n let lit: Huffman;\n let dist: Huffman;\n if (type === 1) [lit, dist] = fixedTables();\n else if (type === 2) {\n const hlit = br.need(5) + 257;\n const hdist = br.need(5) + 1;\n const hclen = br.need(4) + 4;\n const cl = new Uint8Array(19);\n for (let i = 0; i < hclen; i++) cl[CL_ORDER[i]] = br.need(3);\n const clh = buildHuffman(cl, 19);\n const lengths = new Uint8Array(hlit + hdist);\n let i = 0;\n while (i < hlit + hdist) {\n const sym = br.decode(clh);\n if (sym < 16) lengths[i++] = sym;\n else {\n let rep = 0;\n let val = 0;\n if (sym === 16) {\n if (i === 0) throw new ZlibError('Repeat with no previous length');\n val = lengths[i - 1];\n rep = 3 + br.need(2);\n } else if (sym === 17) rep = 3 + br.need(3);\n else rep = 11 + br.need(7);\n if (i + rep > hlit + hdist) throw new ZlibError('Too many code lengths');\n while (rep--) lengths[i++] = val;\n }\n }\n lit = buildHuffman(lengths.subarray(0, hlit), hlit);\n dist = buildHuffman(lengths.subarray(hlit), hdist);\n } else throw new ZlibError('Invalid block type');\n for (;;) {\n const sym = br.decode(lit);\n if (sym < 256) {\n out.ensure(1);\n out.buf[out.len++] = sym;\n } else if (sym === 256) break;\n else {\n const li = sym - 257;\n if (li >= 29) throw new ZlibError('Invalid length symbol');\n const len = LENGTH_BASE[li] + br.need(LENGTH_EXTRA[li]);\n const di = br.decode(dist);\n if (di >= 30) throw new ZlibError('Invalid distance symbol');\n const d = DIST_BASE[di] + br.need(DIST_EXTRA[di]);\n if (d > out.len) throw new ZlibError('Distance too far back');\n out.ensure(len);\n const buf = out.buf;\n let p = out.len;\n for (let k = 0; k < len; k++, p++) buf[p] = buf[p - d];\n out.len = p;\n }\n }\n }\n return out.buf.slice(0, out.len);\n}\n\n/** Adler-32 checksum (zlib trailer). */\nexport function adler32(data: Uint8Array): number {\n let a = 1;\n let b = 0;\n const n = data.length;\n let i = 0;\n while (i < n) {\n const end = Math.min(n, i + 3800);\n for (; i < end; i++) {\n a += data[i];\n b += a;\n }\n a %= 65521;\n b %= 65521;\n }\n return ((b << 16) | a) >>> 0;\n}\n\n/** Inflates zlib data (header, deflate stream, Adler-32 trailer). */\nexport function inflate(data: Uint8Array, options: { maxOutput?: number; sizeHint?: number; verify?: boolean } = {}): Uint8Array {\n if (data.length < 6) throw new ZlibError('Truncated zlib stream');\n const cmf = data[0];\n const flg = data[1];\n if ((cmf & 15) !== 8 || ((cmf << 8) | flg) % 31 !== 0) throw new ZlibError('Not a zlib stream');\n if (flg & 32) throw new ZlibError('Preset dictionaries are not supported');\n const out = inflateRaw(data.subarray(2), options);\n if (options.verify !== false && data.length >= 6) {\n const t = data.length - 4;\n const want = ((data[t] << 24) | (data[t + 1] << 16) | (data[t + 2] << 8) | data[t + 3]) >>> 0;\n if (adler32(out) !== want) throw new ZlibError('Adler-32 mismatch');\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Deflate\n// ---------------------------------------------------------------------------\n\nclass BitWriter {\n buf: Uint8Array;\n len = 0;\n bit = 0;\n bits = 0;\n constructor(hint: number) {\n this.buf = new Uint8Array(Math.max(1024, hint));\n }\n private grow(): void {\n const next = new Uint8Array(this.buf.length * 2);\n next.set(this.buf);\n this.buf = next;\n }\n write(value: number, n: number): void {\n this.bit |= value << this.bits;\n this.bits += n;\n while (this.bits >= 8) {\n if (this.len >= this.buf.length) this.grow();\n this.buf[this.len++] = this.bit & 255;\n this.bit >>>= 8;\n this.bits -= 8;\n }\n }\n flush(): void {\n if (this.bits > 0) {\n if (this.len >= this.buf.length) this.grow();\n this.buf[this.len++] = this.bit & 255;\n }\n this.bit = 0;\n this.bits = 0;\n }\n bytes(): Uint8Array {\n return this.buf.slice(0, this.len);\n }\n}\n\n/** Code lengths (≤ maxBits) for symbol frequencies, by Huffman's algorithm with frequency flattening. */\nfunction codeLengths(freqs: Uint32Array, maxBits: number): Uint8Array {\n const n = freqs.length;\n const lengths = new Uint8Array(n);\n const f = Float64Array.from(freqs);\n for (;;) {\n const nodes: Array<{ w: number; sym: number; left?: number; right?: number }> = [];\n for (let i = 0; i < n; i++) if (f[i] > 0) nodes.push({ w: f[i], sym: i });\n lengths.fill(0);\n if (nodes.length === 0) return lengths;\n if (nodes.length === 1) {\n lengths[nodes[0].sym] = 1;\n return lengths;\n }\n // Simple binary heap of node indexes by weight.\n const heap: number[] = nodes.map((_, i) => i);\n const less = (a: number, b: number) => nodes[a].w < nodes[b].w || (nodes[a].w === nodes[b].w && a < b);\n const down = (i: number) => {\n for (;;) {\n const l = 2 * i + 1;\n const r = l + 1;\n let m = i;\n if (l < heap.length && less(heap[l], heap[m])) m = l;\n if (r < heap.length && less(heap[r], heap[m])) m = r;\n if (m === i) return;\n [heap[i], heap[m]] = [heap[m], heap[i]];\n i = m;\n }\n };\n const up = (i: number) => {\n while (i > 0) {\n const p = (i - 1) >> 1;\n if (!less(heap[i], heap[p])) return;\n [heap[i], heap[p]] = [heap[p], heap[i]];\n i = p;\n }\n };\n for (let i = (heap.length >> 1) - 1; i >= 0; i--) down(i);\n const pop = () => {\n const top = heap[0];\n const last = heap.pop()!;\n if (heap.length) {\n heap[0] = last;\n down(0);\n }\n return top;\n };\n while (heap.length > 1) {\n const a = pop();\n const b = pop();\n nodes.push({ w: nodes[a].w + nodes[b].w, sym: -1, left: a, right: b });\n heap.push(nodes.length - 1);\n up(heap.length - 1);\n }\n let maxLen = 0;\n const stack: Array<[number, number]> = [[heap[0], 0]];\n while (stack.length) {\n const [i, d] = stack.pop()!;\n const node = nodes[i];\n if (node.sym >= 0) {\n lengths[node.sym] = d;\n if (d > maxLen) maxLen = d;\n } else {\n stack.push([node.left!, d + 1], [node.right!, d + 1]);\n }\n }\n if (maxLen <= maxBits) return lengths;\n // Too deep: flatten the distribution and retry.\n for (let i = 0; i < n; i++) if (f[i] > 0) f[i] = Math.floor(f[i] / 2) + 1;\n }\n}\n\n/** Canonical codes for code lengths, bit-reversed for LSB-first output. */\nfunction canonicalCodes(lengths: Uint8Array): Uint16Array {\n const blCount = new Uint16Array(16);\n for (const l of lengths) blCount[l]++;\n blCount[0] = 0;\n const next = new Uint16Array(16);\n let code = 0;\n for (let bits = 1; bits < 16; bits++) {\n code = (code + blCount[bits - 1]) << 1;\n next[bits] = code;\n }\n const codes = new Uint16Array(lengths.length);\n for (let i = 0; i < lengths.length; i++) {\n const len = lengths[i];\n if (!len) continue;\n let c = next[len]++;\n let r = 0;\n for (let k = 0; k < len; k++) {\n r = (r << 1) | (c & 1);\n c >>= 1;\n }\n codes[i] = r;\n }\n return codes;\n}\n\nfunction lengthSymbol(len: number): number {\n let i = 28;\n while (LENGTH_BASE[i] > len) i--;\n return i;\n}\n\nfunction distSymbol(d: number): number {\n let i = 29;\n while (DIST_BASE[i] > d) i--;\n return i;\n}\n\nconst WINDOW = 32768;\nconst HASH_BITS = 15;\nconst HASH_SIZE = 1 << HASH_BITS;\nconst MAX_CHAIN = 24;\nconst MAX_MATCH = 258;\nconst BLOCK_SYMBOLS = 65536;\n\n/** Raw deflate (no zlib header). `level` 0 stores the data uncompressed. */\nexport function deflateRaw(data: Uint8Array, level: 0 | 1 = 1): Uint8Array {\n const w = new BitWriter(Math.ceil(data.length / 2) + 64);\n const n = data.length;\n if (level === 0 || n === 0) {\n let pos = 0;\n do {\n const len = Math.min(65535, n - pos);\n const final = pos + len >= n ? 1 : 0;\n w.write(final, 1);\n w.write(0, 2);\n w.flush();\n w.write(len & 0xffff, 16);\n w.write(~len & 0xffff, 16);\n for (let i = 0; i < len; i++) w.write(data[pos + i], 8);\n pos += len;\n } while (pos < n);\n return w.bytes();\n }\n\n const head = new Int32Array(HASH_SIZE).fill(-1);\n const prev = new Int32Array(WINDOW);\n // Symbols of the current block: literal (0..255) or length/distance pairs.\n const litLen = new Uint16Array(BLOCK_SYMBOLS);\n const dists = new Uint16Array(BLOCK_SYMBOLS);\n let count = 0;\n const hash = (i: number) => (((data[i] << 10) ^ (data[i + 1] << 5) ^ data[i + 2]) * 2654435761) >>> (32 - HASH_BITS);\n const insert = (i: number) => {\n if (i + 2 >= n) return;\n const h = hash(i);\n prev[i & (WINDOW - 1)] = head[h];\n head[h] = i;\n };\n\n const flushBlock = (final: boolean) => {\n const litFreq = new Uint32Array(286);\n const distFreq = new Uint32Array(30);\n for (let k = 0; k < count; k++) {\n if (dists[k] === 0) litFreq[litLen[k]]++;\n else {\n litFreq[257 + lengthSymbol(litLen[k])]++;\n distFreq[distSymbol(dists[k])]++;\n }\n }\n litFreq[256] = 1;\n let anyDist = false;\n for (const v of distFreq) if (v) anyDist = true;\n if (!anyDist) distFreq[0] = 1;\n const litLengths = codeLengths(litFreq, 15);\n const distLengths = codeLengths(distFreq, 15);\n let hlit = 286;\n while (hlit > 257 && !litLengths[hlit - 1]) hlit--;\n let hdist = 30;\n while (hdist > 1 && !distLengths[hdist - 1]) hdist--;\n const all = new Uint8Array(hlit + hdist);\n all.set(litLengths.subarray(0, hlit));\n all.set(distLengths.subarray(0, hdist), hlit);\n // Run-length encode the code lengths.\n const clSyms: number[] = [];\n const clExtra: number[] = [];\n for (let i = 0; i < all.length; ) {\n const v = all[i];\n let run = 1;\n while (i + run < all.length && all[i + run] === v) run++;\n if (v === 0 && run >= 3) {\n const r = Math.min(run, 138);\n if (r >= 11) {\n clSyms.push(18);\n clExtra.push(r - 11);\n } else {\n clSyms.push(17);\n clExtra.push(r - 3);\n }\n i += r;\n } else if (v !== 0 && run >= 4) {\n clSyms.push(v);\n clExtra.push(0);\n const r = Math.min(run - 1, 6);\n clSyms.push(16);\n clExtra.push(r - 3);\n i += r + 1;\n } else {\n clSyms.push(v);\n clExtra.push(0);\n i++;\n }\n }\n const clFreq = new Uint32Array(19);\n for (const s of clSyms) clFreq[s]++;\n const clLengths = codeLengths(clFreq, 7);\n let hclen = 19;\n while (hclen > 4 && !clLengths[CL_ORDER[hclen - 1]]) hclen--;\n const clCodes = canonicalCodes(clLengths);\n const litCodes = canonicalCodes(litLengths);\n const distCodes = canonicalCodes(distLengths);\n\n w.write(final ? 1 : 0, 1);\n w.write(2, 2);\n w.write(hlit - 257, 5);\n w.write(hdist - 1, 5);\n w.write(hclen - 4, 4);\n for (let i = 0; i < hclen; i++) w.write(clLengths[CL_ORDER[i]], 3);\n for (let i = 0; i < clSyms.length; i++) {\n const s = clSyms[i];\n w.write(clCodes[s], clLengths[s]);\n if (s === 16) w.write(clExtra[i], 2);\n else if (s === 17) w.write(clExtra[i], 3);\n else if (s === 18) w.write(clExtra[i], 7);\n }\n for (let k = 0; k < count; k++) {\n const d = dists[k];\n if (d === 0) {\n const s = litLen[k];\n w.write(litCodes[s], litLengths[s]);\n } else {\n const len = litLen[k];\n const li = lengthSymbol(len);\n w.write(litCodes[257 + li], litLengths[257 + li]);\n if (LENGTH_EXTRA[li]) w.write(len - LENGTH_BASE[li], LENGTH_EXTRA[li]);\n const di = distSymbol(d);\n w.write(distCodes[di], distLengths[di]);\n if (DIST_EXTRA[di]) w.write(d - DIST_BASE[di], DIST_EXTRA[di]);\n }\n }\n w.write(litCodes[256], litLengths[256]);\n count = 0;\n };\n\n let i = 0;\n while (i < n) {\n let bestLen = 0;\n let bestDist = 0;\n if (i + 2 < n) {\n let cand = head[hash(i)];\n let chain = MAX_CHAIN;\n const limit = Math.min(MAX_MATCH, n - i);\n while (cand >= 0 && i - cand <= WINDOW - 1 && chain-- > 0) {\n if (data[cand + bestLen] === data[i + bestLen]) {\n let l = 0;\n while (l < limit && data[cand + l] === data[i + l]) l++;\n if (l > bestLen) {\n bestLen = l;\n bestDist = i - cand;\n if (l === limit) break;\n }\n }\n const next = prev[cand & (WINDOW - 1)];\n if (next >= cand) break;\n cand = next;\n }\n }\n if (bestLen >= 3) {\n litLen[count] = bestLen;\n dists[count] = bestDist;\n count++;\n const end = i + bestLen;\n // Insert every position of long runs only up to a cap, which keeps solid areas fast.\n const insertEnd = bestLen > 64 ? i + 64 : end;\n for (let k = i; k < insertEnd; k++) insert(k);\n for (let k = Math.max(insertEnd, end - 3); k < end; k++) insert(k);\n i = end;\n } else {\n litLen[count] = data[i];\n dists[count] = 0;\n count++;\n insert(i);\n i++;\n }\n if (count >= BLOCK_SYMBOLS - 1 && i < n) flushBlock(false);\n }\n // The final block may hold only the end-of-block symbol.\n flushBlock(true);\n w.flush();\n return w.bytes();\n}\n\n/** zlib stream: header, raw deflate, Adler-32. */\nexport function deflate(data: Uint8Array, level: 0 | 1 = 1): Uint8Array {\n const raw = deflateRaw(data, level);\n const out = new Uint8Array(raw.length + 6);\n out[0] = 0x78;\n out[1] = 0x01;\n out.set(raw, 2);\n const a = adler32(data);\n const t = out.length - 4;\n out[t] = a >>> 24;\n out[t + 1] = (a >>> 16) & 255;\n out[t + 2] = (a >>> 8) & 255;\n out[t + 3] = a & 255;\n return out;\n}\n"],"mappings":"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","names":["i"]}