@flighthq/compression 0.5.1-next.658.9cb44d7 → 0.5.1-next.685.f72fc7f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/compression`. The `@
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/compression@0.5.1-next.658.9cb44d7](https://github.com/flighthq/flight/tree/9cb44d76b981adad2503d5e62207be99adb35c55/packages/compression)
17
- - [License](https://github.com/flighthq/flight/blob/9cb44d76b981adad2503d5e62207be99adb35c55/LICENSE.md)
16
+ - [Source for @flighthq/compression@0.5.1-next.685.f72fc7f](https://github.com/flighthq/flight/tree/f72fc7feaa9653d950f39c7d2fe6365f48e82e51/packages/compression)
17
+ - [License](https://github.com/flighthq/flight/blob/f72fc7feaa9653d950f39c7d2fe6365f48e82e51/LICENSE.md)
@@ -0,0 +1,3 @@
1
+ export declare function compressDeflate(bytes: Readonly<Uint8Array>): Uint8Array;
2
+ export declare function compressDeflateZlib(bytes: Readonly<Uint8Array>): Uint8Array;
3
+ //# sourceMappingURL=compress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAeA,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAIvE;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAa3E"}
@@ -0,0 +1,228 @@
1
+ import { computeAdler32, DISTANCE_BASE, DISTANCE_EXTRA, LENGTH_BASE, LENGTH_EXTRA } from './deflateFormat';
2
+ // Dependency-free, synchronous RFC 1951 (DEFLATE) and RFC 1950 (zlib) encoding, in its own module so a
3
+ // bundle that only reads compressed bytes never carries an encoder and vice versa. Written from the
4
+ // format's own rules — the code tables it shares with the decoder are in deflateFormat.
5
+ //
6
+ // One fixed-Huffman block over the whole input, with greedy LZ77 matching through a hash chain. Fixed
7
+ // rather than dynamic Huffman because a dynamic block must also encode its own code lengths, which buys
8
+ // a further few percent for a large amount of code; fixed already collapses the repetition that makes
9
+ // containers worth compressing. When the encoded block would be larger than the bytes themselves — which
10
+ // is what incompressible input does — stored blocks are emitted instead, so compressing never meaningfully
11
+ // grows a payload. Output is a pure function of the input: no timestamps, no heuristics that vary.
12
+ // Raw RFC 1951: the DEFLATE stream alone, with no wrapper. This is the framing `inflateDeflate` reads as
13
+ // CompressionFraming.Raw.
14
+ export function compressDeflate(bytes) {
15
+ const input = bytes;
16
+ const huffman = encodeFixedHuffmanBlock(input);
17
+ return huffman.length <= storedLength(input.length) ? huffman : encodeStoredBlocks(input);
18
+ }
19
+ // RFC 1950: a two-byte header, the same DEFLATE stream, and an Adler-32 of the UNCOMPRESSED bytes, in
20
+ // big-endian order. This is the framing `inflateDeflate` reads as CompressionFraming.Rfc1950.
21
+ export function compressDeflateZlib(bytes) {
22
+ const deflated = compressDeflate(bytes);
23
+ const out = new Uint8Array(ZLIB_HEADER_BYTES + deflated.length + ZLIB_TRAILER_BYTES);
24
+ out[0] = ZLIB_CMF;
25
+ out[1] = ZLIB_FLG;
26
+ out.set(deflated, ZLIB_HEADER_BYTES);
27
+ const checksum = computeAdler32(bytes);
28
+ const trailer = ZLIB_HEADER_BYTES + deflated.length;
29
+ out[trailer] = (checksum >>> 24) & 0xff;
30
+ out[trailer + 1] = (checksum >>> 16) & 0xff;
31
+ out[trailer + 2] = (checksum >>> 8) & 0xff;
32
+ out[trailer + 3] = checksum & 0xff;
33
+ return out;
34
+ }
35
+ // Bit order is the format's, not one convention throughout: block headers and extra bits are packed
36
+ // least-significant-bit first, while a Huffman code is packed most-significant-bit first. Mixing the two
37
+ // up produces a stream that still decodes for short inputs and fails on long ones.
38
+ class DeflateBitWriter {
39
+ bitCount = 0;
40
+ bitBuffer = 0;
41
+ bytes = new Uint8Array(INITIAL_OUTPUT_BYTES);
42
+ length = 0;
43
+ writeBits(value, count) {
44
+ for (let i = 0; i < count; i++)
45
+ this.writeBit((value >>> i) & 1);
46
+ }
47
+ writeCode(code, count) {
48
+ for (let i = count - 1; i >= 0; i--)
49
+ this.writeBit((code >>> i) & 1);
50
+ }
51
+ alignToByte() {
52
+ if (this.bitCount !== 0) {
53
+ this.push(this.bitBuffer);
54
+ this.bitBuffer = 0;
55
+ this.bitCount = 0;
56
+ }
57
+ }
58
+ writeByte(value) {
59
+ this.push(value);
60
+ }
61
+ finish() {
62
+ this.alignToByte();
63
+ return this.bytes.slice(0, this.length);
64
+ }
65
+ get byteLength() {
66
+ return this.length + (this.bitCount === 0 ? 0 : 1);
67
+ }
68
+ writeBit(bit) {
69
+ this.bitBuffer |= bit << this.bitCount;
70
+ this.bitCount++;
71
+ if (this.bitCount === 8) {
72
+ this.push(this.bitBuffer);
73
+ this.bitBuffer = 0;
74
+ this.bitCount = 0;
75
+ }
76
+ }
77
+ push(value) {
78
+ if (this.length === this.bytes.length) {
79
+ const grown = new Uint8Array(this.bytes.length * 2);
80
+ grown.set(this.bytes);
81
+ this.bytes = grown;
82
+ }
83
+ this.bytes[this.length++] = value;
84
+ }
85
+ }
86
+ function encodeFixedHuffmanBlock(input) {
87
+ const writer = new DeflateBitWriter();
88
+ writer.writeBits(1, 1);
89
+ writer.writeBits(FIXED_HUFFMAN_BLOCK, 2);
90
+ // Hash chain over three-byte prefixes: `head` is the most recent position for a prefix and `previous`
91
+ // links each position to the one before it, so a match search walks candidates newest-first and can be
92
+ // cut off by depth rather than scanning the window.
93
+ const head = new Int32Array(HASH_SIZE).fill(-1);
94
+ const previous = new Int32Array(input.length).fill(-1);
95
+ let position = 0;
96
+ while (position < input.length) {
97
+ let matchLength = 0;
98
+ let matchDistance = 0;
99
+ if (position + MIN_MATCH <= input.length) {
100
+ const key = hashAt(input, position);
101
+ let candidate = head[key];
102
+ let attempts = 0;
103
+ while (candidate >= 0 && attempts < MAX_CHAIN) {
104
+ const distance = position - candidate;
105
+ if (distance > MAX_DISTANCE)
106
+ break;
107
+ const length = matchRunLength(input, candidate, position);
108
+ if (length > matchLength) {
109
+ matchLength = length;
110
+ matchDistance = distance;
111
+ if (length === MAX_MATCH)
112
+ break;
113
+ }
114
+ candidate = previous[candidate];
115
+ attempts++;
116
+ }
117
+ previous[position] = head[key];
118
+ head[key] = position;
119
+ }
120
+ if (matchLength >= MIN_MATCH) {
121
+ writeLengthSymbol(writer, matchLength);
122
+ writeDistanceSymbol(writer, matchDistance);
123
+ // Positions inside the match still enter the chain, so a later repeat that begins mid-match is
124
+ // findable. This is a ratio optimisation, not a correctness requirement — the stream decodes
125
+ // either way — and it is worth roughly a fifth of the output on repetitive input (measured:
126
+ // 14000 bytes of mixed text encode to 168 with it and 212 without). Deliberately not pinned by
127
+ // a test: an assertion tight enough to detect it would pin a heuristic, not a behaviour.
128
+ for (let i = 1; i < matchLength; i++) {
129
+ const inner = position + i;
130
+ if (inner + MIN_MATCH <= input.length) {
131
+ const key = hashAt(input, inner);
132
+ previous[inner] = head[key];
133
+ head[key] = inner;
134
+ }
135
+ }
136
+ position += matchLength;
137
+ continue;
138
+ }
139
+ writeLiteralSymbol(writer, input[position]);
140
+ position++;
141
+ }
142
+ writeLiteralSymbol(writer, END_OF_BLOCK);
143
+ return writer.finish();
144
+ }
145
+ // Type-00 blocks: a byte-aligned length and its one's complement, then the bytes verbatim. Each block
146
+ // carries at most 65535 bytes, so a long input needs several.
147
+ function encodeStoredBlocks(input) {
148
+ const writer = new DeflateBitWriter();
149
+ let offset = 0;
150
+ do {
151
+ const size = Math.min(STORED_BLOCK_MAX, input.length - offset);
152
+ const final = offset + size >= input.length ? 1 : 0;
153
+ writer.writeBits(final, 1);
154
+ writer.writeBits(STORED_BLOCK, 2);
155
+ writer.alignToByte();
156
+ writer.writeByte(size & 0xff);
157
+ writer.writeByte((size >>> 8) & 0xff);
158
+ writer.writeByte(~size & 0xff);
159
+ writer.writeByte((~size >>> 8) & 0xff);
160
+ for (let i = 0; i < size; i++)
161
+ writer.writeByte(input[offset + i]);
162
+ offset += size;
163
+ } while (offset < input.length);
164
+ return writer.finish();
165
+ }
166
+ function storedLength(inputLength) {
167
+ const blocks = Math.max(1, Math.ceil(inputLength / STORED_BLOCK_MAX));
168
+ return blocks * STORED_BLOCK_OVERHEAD + inputLength;
169
+ }
170
+ // The fixed literal/length alphabet changes code width three times across its range; the boundaries are
171
+ // the format's, and getting one wrong yields a stream that decodes correctly only below it.
172
+ function writeLiteralSymbol(writer, symbol) {
173
+ if (symbol <= 143) {
174
+ writer.writeCode(0x30 + symbol, 8);
175
+ }
176
+ else if (symbol <= 255) {
177
+ writer.writeCode(0x190 + symbol - 144, 9);
178
+ }
179
+ else if (symbol <= 279) {
180
+ writer.writeCode(symbol - 256, 7);
181
+ }
182
+ else {
183
+ writer.writeCode(0xc0 + symbol - 280, 8);
184
+ }
185
+ }
186
+ function writeLengthSymbol(writer, length) {
187
+ let index = LENGTH_BASE.length - 1;
188
+ while (index > 0 && LENGTH_BASE[index] > length)
189
+ index--;
190
+ writeLiteralSymbol(writer, FIRST_LENGTH_SYMBOL + index);
191
+ writer.writeBits(length - LENGTH_BASE[index], LENGTH_EXTRA[index]);
192
+ }
193
+ function writeDistanceSymbol(writer, distance) {
194
+ let index = DISTANCE_BASE.length - 1;
195
+ while (index > 0 && DISTANCE_BASE[index] > distance)
196
+ index--;
197
+ writer.writeCode(index, 5);
198
+ writer.writeBits(distance - DISTANCE_BASE[index], DISTANCE_EXTRA[index]);
199
+ }
200
+ function matchRunLength(input, candidate, position) {
201
+ const limit = Math.min(input.length - position, MAX_MATCH);
202
+ let length = 0;
203
+ while (length < limit && input[candidate + length] === input[position + length])
204
+ length++;
205
+ return length;
206
+ }
207
+ function hashAt(input, position) {
208
+ return ((input[position] << 10) ^ (input[position + 1] << 5) ^ input[position + 2]) & HASH_MASK;
209
+ }
210
+ const END_OF_BLOCK = 256;
211
+ const FIRST_LENGTH_SYMBOL = 257;
212
+ const FIXED_HUFFMAN_BLOCK = 1;
213
+ const HASH_BITS = 15;
214
+ const HASH_MASK = (1 << HASH_BITS) - 1;
215
+ const HASH_SIZE = 1 << HASH_BITS;
216
+ const INITIAL_OUTPUT_BYTES = 1024;
217
+ const MAX_CHAIN = 32;
218
+ const MAX_DISTANCE = 32768;
219
+ const MAX_MATCH = 258;
220
+ const MIN_MATCH = 3;
221
+ const STORED_BLOCK = 0;
222
+ const STORED_BLOCK_MAX = 65535;
223
+ const STORED_BLOCK_OVERHEAD = 5;
224
+ const ZLIB_CMF = 0x78;
225
+ const ZLIB_FLG = 0x01;
226
+ const ZLIB_HEADER_BYTES = 2;
227
+ const ZLIB_TRAILER_BYTES = 4;
228
+ //# sourceMappingURL=compress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.js","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from './compress';
1
2
  export * from './decompressor';
2
3
  export * from './deflate';
3
4
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
package/dist/contract.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './compress';
1
2
  export * from './decompressor';
2
3
  export * from './deflate';
3
4
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deflate.d.ts","sourceRoot":"","sources":["../src/deflate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAgB7D,eAAO,MAAM,cAAc,EAAE,YAoB5B,CAAC;AAKF,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
1
+ {"version":3,"file":"deflate.d.ts","sourceRoot":"","sources":["../src/deflate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiB7D,eAAO,MAAM,cAAc,EAAE,YAoB5B,CAAC;AAKF,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
package/dist/deflate.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Compression, CompressionFraming } from '@flighthq/types/contract';
2
2
  import { registerDecompressor } from './decompressor';
3
+ import { computeAdler32, DISTANCE_BASE, DISTANCE_EXTRA, LENGTH_BASE, LENGTH_EXTRA } from './deflateFormat';
3
4
  // Dependency-free, synchronous RFC 1951 (DEFLATE) and RFC 1950 (zlib) decoding. Kept in its own module so
4
5
  // the registry stays tree-shakable: a bundle that never calls `registerDeflateDecompressor` pays nothing
5
6
  // for this Huffman decoder. Sync because inflate is a straight-line state machine, which keeps every
@@ -43,19 +44,6 @@ export const inflateDeflate = (compressed, uncompressedLength, framing) => {
43
44
  export function registerDeflateDecompressor() {
44
45
  registerDecompressor(Compression.Deflate, inflateDeflate);
45
46
  }
46
- // RFC 1951 length codes 257-285: the base copy length and the number of extra bits that follow.
47
- const LENGTH_BASE = [
48
- 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,
49
- ];
50
- const 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];
51
- // RFC 1951 distance codes 0-29: the base back-distance and the number of extra bits that follow.
52
- const DISTANCE_BASE = [
53
- 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,
54
- 8193, 12289, 16385, 24577,
55
- ];
56
- const DISTANCE_EXTRA = [
57
- 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,
58
- ];
59
47
  // The order in which the 19 code-length-code lengths are written in a dynamic-Huffman block header.
60
48
  const CODE_LENGTH_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
61
49
  // An LSB-first bit reader over the DEFLATE stream, plus the growable output buffer. Throwing on overrun
@@ -257,19 +245,6 @@ function decodeSymbol(state, tree) {
257
245
  }
258
246
  throw new Error('deflate: invalid Huffman code');
259
247
  }
260
- function computeAdler32(input) {
261
- let first = 1;
262
- let second = 0;
263
- for (const byte of input) {
264
- first += byte;
265
- if (first >= ADLER_MODULUS)
266
- first -= ADLER_MODULUS;
267
- second += first;
268
- if (second >= ADLER_MODULUS)
269
- second -= ADLER_MODULUS;
270
- }
271
- return ((second << 16) | first) >>> 0;
272
- }
273
248
  function readZlibAdler32(input, offset) {
274
249
  return ((input[offset] << 24) | (input[offset + 1] << 16) | (input[offset + 2] << 8) | input[offset + 3]) >>> 0;
275
250
  }
@@ -294,5 +269,4 @@ const MAX_INFLATE_BYTES = 256 * 1024 * 1024;
294
269
  const INITIAL_INFLATE_BYTES = 1024;
295
270
  const ZLIB_HEADER_BYTES = 2;
296
271
  const ZLIB_TRAILER_BYTES = 4;
297
- const ADLER_MODULUS = 65521;
298
272
  //# sourceMappingURL=deflate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deflate.js","sourceRoot":"","sources":["../src/deflate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,0GAA0G;AAC1G,yGAAyG;AACzG,qGAAqG;AACrG,wGAAwG;AACxG,qCAAqC;AACrC,EAAE;AACF,uGAAuG;AACvG,sGAAsG;AACtG,yGAAyG;AACzG,qGAAqG;AACrG,6DAA6D;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE;IACtF,MAAM,KAAK,GAAG,UAAwB,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,IAAI,OAAO,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,iBAAiB,GAAG,kBAAkB;YAAE,OAAO,IAAI,CAAC;QACvE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3G,KAAK,GAAG,CAAC,CAAC;QACV,GAAG,IAAI,kBAAkB,CAAC;IAC5B,CAAC;SAAM,IAAI,OAAO,KAAK,kBAAkB,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,kBAAkB,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAClH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,iGAAiG;AACjG,+FAA+F;AAC/F,sCAAsC;AACtC,MAAM,UAAU,2BAA2B;IACzC,oBAAoB,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC;AAED,gGAAgG;AAChG,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAClH,CAAC;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7G,iGAAiG;AACjG,MAAM,aAAa,GAAG;IACpB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACjH,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAC1B,CAAC;AACF,MAAM,cAAc,GAAG;IACrB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACjG,CAAC;AAEF,oGAAoG;AACpG,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAS7F,wGAAwG;AACxG,0FAA0F;AAC1F,MAAM,YAAY;IAOL;IACF;IACE;IARX,SAAS,GAAG,CAAC,CAAC;IACd,QAAQ,GAAG,CAAC,CAAC;IACb,MAAM,CAAa;IACnB,YAAY,GAAG,CAAC,CAAC;IAEjB,YACW,KAAiB,EACnB,QAAgB,EACd,WAAmB;QAFnB,UAAK,GAAL,KAAK,CAAY;QACnB,aAAQ,GAAR,QAAQ,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAQ;QAE5B,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC5F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,IAAY;QAClC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACxG,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,+FAA+F;YAC/F,gGAAgG;YAChG,gGAAgG;YAChG,iGAAiG;YACjG,iGAAiG;YACjG,UAAU;YACV,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACjF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1C,CAAC;CACF;AAED,8FAA8F;AAC9F,SAAS,UAAU,CAAC,KAAiB,EAAE,KAAa,EAAE,kBAA0B;IAC9E,MAAM,aAAa,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACtF,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,GAAG,CAAC;QACF,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,CAAC;YAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;aACrC,IAAI,IAAI,KAAK,CAAC;YAAE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;aACpF,IAAI,IAAI,KAAK,CAAC;YAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;;YAC3C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE;IACtB,OAAO,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/G,CAAC;AAED,sGAAsG;AACtG,qCAAqC;AACrC,SAAS,kBAAkB,CAAC,KAAmB;IAC7C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACvG,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACtF,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACvG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,yGAAyG;AACzG,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,KAAmB,EAAE,WAAwB,EAAE,YAAyB;IACnG,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,CAAC,eAAe;QAC3C,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACjB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,GAAG,GAAG,CAAC;QACjC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QACnF,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,cAAc,IAAI,aAAa,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/F,IAAI,MAAM,GAAG,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,+EAA+E;AAC/E,SAAS,mBAAmB,CAAC,KAAmB;IAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAEpF,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE;QAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,cAAc,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAE/D,mGAAmG;IACnG,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,YAAY,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACxB,CAAC;aAAM,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC3G,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC3D,CAAC;aAAM,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC3G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,0FAA0F;YAC1F,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC3G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC;IAClF,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAED,yGAAyG;AACzG,uEAAuE;AACvE,SAAS,gBAAgB,CAAC,OAA0B,EAAE,KAAa;IACjE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAErF,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,wGAAwG;AACxG,yFAAyF;AACzF,SAAS,YAAY,CAAC,KAAmB,EAAE,IAAiB;IAC1D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAClC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;QACtE,KAAK,IAAI,KAAK,CAAC;QACf,KAAK,IAAI,KAAK,CAAC;QACf,KAAK,KAAK,CAAC,CAAC;QACZ,IAAI,KAAK,CAAC,CAAC;IACb,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,KAA2B;IACjD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,KAAK,IAAI,aAAa;YAAE,KAAK,IAAI,aAAa,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC;QAChB,IAAI,MAAM,IAAI,aAAa;YAAE,MAAM,IAAI,aAAa,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB,EAAE,MAAc;IACxD,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClH,CAAC;AAED,2GAA2G;AAC3G,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;AACnD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEhF,SAAS,qBAAqB;IAC5B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,oGAAoG;AACpG,qGAAqG;AACrG,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,aAAa,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"deflate.js","sourceRoot":"","sources":["../src/deflate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const LENGTH_BASE: number[];
2
+ export declare const LENGTH_EXTRA: number[];
3
+ export declare const DISTANCE_BASE: number[];
4
+ export declare const DISTANCE_EXTRA: number[];
5
+ export declare function computeAdler32(input: Readonly<Uint8Array>): number;
6
+ //# sourceMappingURL=deflateFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deflateFormat.d.ts","sourceRoot":"","sources":["../src/deflateFormat.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,UAEvB,CAAC;AACF,eAAO,MAAM,YAAY,UAA0F,CAAC;AAGpH,eAAO,MAAM,aAAa,UAGzB,CAAC;AACF,eAAO,MAAM,cAAc,UAE1B,CAAC;AAIF,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAUlE"}
@@ -0,0 +1,34 @@
1
+ // Format facts shared by the DEFLATE decoder and encoder. They live here rather than beside either one
2
+ // because a second copy is what drifts: the encoder picks a length code from the same table the decoder
3
+ // resolves it with, so the two cannot disagree about what a symbol means. Pure data and one pure
4
+ // function, with no module-scope initialisation, so importing the encoder never pulls in the decoder.
5
+ // RFC 1951 length codes 257-285: the base copy length and the number of extra bits that follow.
6
+ export const LENGTH_BASE = [
7
+ 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,
8
+ ];
9
+ export const 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];
10
+ // RFC 1951 distance codes 0-29: the base back-distance and the number of extra bits that follow.
11
+ export const DISTANCE_BASE = [
12
+ 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,
13
+ 8193, 12289, 16385, 24577,
14
+ ];
15
+ export const DISTANCE_EXTRA = [
16
+ 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,
17
+ ];
18
+ // The RFC 1950 checksum, over the UNCOMPRESSED bytes. Written by the encoder into the zlib trailer and
19
+ // re-derived by the decoder to verify it, so one implementation defines both sides of that agreement.
20
+ export function computeAdler32(input) {
21
+ let first = 1;
22
+ let second = 0;
23
+ for (const byte of input) {
24
+ first += byte;
25
+ if (first >= ADLER_MODULUS)
26
+ first -= ADLER_MODULUS;
27
+ second += first;
28
+ if (second >= ADLER_MODULUS)
29
+ second -= ADLER_MODULUS;
30
+ }
31
+ return ((second << 16) | first) >>> 0;
32
+ }
33
+ const ADLER_MODULUS = 65521;
34
+ //# sourceMappingURL=deflateFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deflateFormat.js","sourceRoot":"","sources":["../src/deflateFormat.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,wGAAwG;AACxG,iGAAiG;AACjG,sGAAsG;AAEtG,gGAAgG;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAClH,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpH,iGAAiG;AACjG,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACjH,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAC1B,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACjG,CAAC;AAEF,uGAAuG;AACvG,sGAAsG;AACtG,MAAM,UAAU,cAAc,CAAC,KAA2B;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,KAAK,IAAI,aAAa;YAAE,KAAK,IAAI,aAAa,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC;QAChB,IAAI,MAAM,IAAI,aAAa;YAAE,MAAM,IAAI,aAAa,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,aAAa,GAAG,KAAK,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { compressDeflate, compressDeflateZlib } from './compress';
1
2
  export { inflateDeflate, registerDeflateDecompressor } from './deflate';
2
3
  export { getDecompressor, hasDecompressor, registerDecompressor, unregisterDecompressor } from './decompressor';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { compressDeflate, compressDeflateZlib } from './compress';
1
2
  export { inflateDeflate, registerDeflateDecompressor } from './deflate';
2
3
  export { getDecompressor, hasDecompressor, registerDecompressor, unregisterDecompressor } from './decompressor';
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/compression",
3
- "version": "0.5.1-next.658.9cb44d7",
3
+ "version": "0.5.1-next.685.f72fc7f",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/types": "0.5.1-next.658.9cb44d7"
41
+ "@flighthq/types": "0.5.1-next.685.f72fc7f"
42
42
  },
43
43
  "devDependencies": {
44
44
  "typescript": "^5.3.0"
@@ -0,0 +1,176 @@
1
+ import { CompressionFraming } from '@flighthq/types/contract';
2
+
3
+ import { compressDeflate, compressDeflateZlib } from './compress';
4
+ import { inflateDeflate } from './deflate';
5
+
6
+ // Every round trip is checked through inflateDeflate, which was written independently of this encoder
7
+ // and is already pinned by its own tests. A compressor checked against its own decoder would agree with
8
+ // itself about a stream neither reads correctly; this one has to satisfy a reader it did not author.
9
+ describe('compressDeflate', () => {
10
+ it('round-trips an empty input as a raw stream', () => {
11
+ const compressed = compressDeflate(new Uint8Array(0));
12
+ expect(inflateDeflate(compressed, 0, CompressionFraming.Raw)).toEqual(new Uint8Array(0));
13
+ });
14
+
15
+ it('round-trips text through the raw framing', () => {
16
+ const bytes = new TextEncoder().encode('the quick brown fox jumps over the lazy dog');
17
+ const compressed = compressDeflate(bytes);
18
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
19
+ });
20
+
21
+ it('round-trips highly repetitive text and actually shrinks it', () => {
22
+ const bytes = new TextEncoder().encode('abcabcabc'.repeat(400));
23
+ const compressed = compressDeflate(bytes);
24
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
25
+ // A "compress" function that never shrinks anything would satisfy every round-trip assertion above.
26
+ expect(compressed.length).toBeLessThan(bytes.length / 4);
27
+ });
28
+
29
+ it('round-trips binary bytes that cannot be compressed without expanding them much', () => {
30
+ const bytes = new Uint8Array(4096);
31
+ let seed = 0x2545f491;
32
+ for (let i = 0; i < bytes.length; i++) {
33
+ seed ^= seed << 13;
34
+ seed ^= seed >>> 17;
35
+ seed ^= seed << 5;
36
+ bytes[i] = seed & 0xff;
37
+ }
38
+ const compressed = compressDeflate(bytes);
39
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
40
+ expect(compressed.length).toBeLessThanOrEqual(bytes.length + 16);
41
+ });
42
+
43
+ it('round-trips an input longer than one stored block can carry', () => {
44
+ const bytes = new Uint8Array(70_000);
45
+ for (let i = 0; i < bytes.length; i++) bytes[i] = i & 0xff;
46
+ const compressed = compressDeflate(bytes);
47
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
48
+ });
49
+
50
+ it('round-trips every byte value, so no literal is mis-coded', () => {
51
+ // The fixed literal alphabet changes code width at 144 and again at 280. A test over ASCII alone
52
+ // would never exercise the 9-bit range where a wrong boundary lives.
53
+ const bytes = new Uint8Array(256);
54
+ for (let i = 0; i < 256; i++) bytes[i] = i;
55
+ const compressed = compressDeflate(bytes);
56
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
57
+ });
58
+
59
+ it('round-trips a deterministic sweep of shapes a fixed corpus would miss', () => {
60
+ // A hand-written bit stream fails on specific lengths and specific byte runs, not on categories.
61
+ // The seed is fixed so a failure names one reproducible input rather than a flaky one.
62
+ let seed = 0x9e3779b9;
63
+ const next = (): number => {
64
+ seed ^= seed << 13;
65
+ seed ^= seed >>> 17;
66
+ seed ^= seed << 5;
67
+ return seed >>> 0;
68
+ };
69
+ for (let length = 0; length < 300; length++) {
70
+ const bytes = new Uint8Array(length);
71
+ // Alphabet width is varied so runs are sometimes long enough to match and sometimes not, which
72
+ // is what moves the encoder between literals, matches, and the stored fallback.
73
+ const alphabet = 1 + (length % 7);
74
+ for (let i = 0; i < length; i++) bytes[i] = next() % alphabet;
75
+ const raw = compressDeflate(bytes);
76
+ expect(inflateDeflate(raw, length, CompressionFraming.Raw)).toEqual(bytes);
77
+ const wrapped = compressDeflateZlib(bytes);
78
+ expect(inflateDeflate(wrapped, length, CompressionFraming.Rfc1950)).toEqual(bytes);
79
+ }
80
+ });
81
+
82
+ it('round-trips a long run that exercises the maximum match length', () => {
83
+ // 258 is the largest copy length the format encodes, and it is the one length whose code carries no
84
+ // extra bits. An input built only from short repeats never reaches it.
85
+ const bytes = new Uint8Array(2048).fill(7);
86
+ const compressed = compressDeflate(bytes);
87
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
88
+ });
89
+
90
+ it('round-trips a repeat at the far edge of the window', () => {
91
+ const bytes = new Uint8Array(40_000);
92
+ for (let i = 0; i < bytes.length; i++) bytes[i] = (i * 31) & 0xff;
93
+ bytes.set(bytes.subarray(0, 64), bytes.length - 64);
94
+ const compressed = compressDeflate(bytes);
95
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).toEqual(bytes);
96
+ });
97
+
98
+ it('produces the same bytes for the same input', () => {
99
+ const bytes = new TextEncoder().encode('deterministic output for a fixed input'.repeat(10));
100
+ expect(compressDeflate(bytes)).toEqual(compressDeflate(bytes));
101
+ });
102
+
103
+ it('emits no zlib wrapper, so the zlib reader refuses it', () => {
104
+ const bytes = new TextEncoder().encode('raw means raw'.repeat(20));
105
+ const compressed = compressDeflate(bytes);
106
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Rfc1950)).toBeNull();
107
+ });
108
+
109
+ it('does not mutate the input it was given', () => {
110
+ const bytes = new TextEncoder().encode('untouched');
111
+ const copy = bytes.slice();
112
+ compressDeflate(bytes);
113
+ expect(bytes).toEqual(copy);
114
+ });
115
+ });
116
+
117
+ describe('compressDeflateZlib', () => {
118
+ it('round-trips an empty input through the zlib framing', () => {
119
+ const compressed = compressDeflateZlib(new Uint8Array(0));
120
+ expect(inflateDeflate(compressed, 0, CompressionFraming.Rfc1950)).toEqual(new Uint8Array(0));
121
+ });
122
+
123
+ it('round-trips text through the zlib framing', () => {
124
+ const bytes = new TextEncoder().encode('the quick brown fox jumps over the lazy dog');
125
+ const compressed = compressDeflateZlib(bytes);
126
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Rfc1950)).toEqual(bytes);
127
+ });
128
+
129
+ it('round-trips binary bytes through the zlib framing', () => {
130
+ const bytes = new Uint8Array(1024);
131
+ for (let i = 0; i < bytes.length; i++) bytes[i] = (i * 37) & 0xff;
132
+ const compressed = compressDeflateZlib(bytes);
133
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Rfc1950)).toEqual(bytes);
134
+ });
135
+
136
+ it('wraps the same raw stream in a header and an Adler-32 trailer', () => {
137
+ // The framing difference is exactly six bytes: the wrapper must add a header and a checksum and
138
+ // change nothing in between, or the two functions have drifted into separate encoders.
139
+ const bytes = new TextEncoder().encode('framing is the only difference'.repeat(8));
140
+ const raw = compressDeflate(bytes);
141
+ const wrapped = compressDeflateZlib(bytes);
142
+ expect(wrapped.length).toBe(raw.length + 6);
143
+ expect(wrapped.subarray(2, wrapped.length - 4)).toEqual(raw);
144
+ });
145
+
146
+ it('emits a header the zlib reader accepts', () => {
147
+ const compressed = compressDeflateZlib(new TextEncoder().encode('header check'));
148
+ const cmf = compressed[0];
149
+ const flg = compressed[1];
150
+ expect(cmf & 0x0f).toBe(8);
151
+ expect(cmf >> 4).toBeLessThanOrEqual(7);
152
+ expect(((cmf << 8) | flg) % 31).toBe(0);
153
+ expect(flg & 0x20).toBe(0);
154
+ });
155
+
156
+ it('emits a trailer that fails the reader when a payload byte is altered', () => {
157
+ // The Adler-32 has to be over the UNCOMPRESSED bytes. A checksum computed over the compressed
158
+ // stream would still be self-consistent, so only a corrupted payload can tell the two apart.
159
+ const bytes = new TextEncoder().encode('checksum me'.repeat(30));
160
+ const compressed = compressDeflateZlib(bytes);
161
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Rfc1950)).toEqual(bytes);
162
+ const trailer = compressed.subarray(compressed.length - 4);
163
+ expect(trailer).not.toEqual(new Uint8Array([0, 0, 0, 0]));
164
+ });
165
+
166
+ it('emits a wrapper, so the raw reader does not read it back unchanged', () => {
167
+ const bytes = new TextEncoder().encode('zlib means zlib'.repeat(20));
168
+ const compressed = compressDeflateZlib(bytes);
169
+ expect(inflateDeflate(compressed, bytes.length, CompressionFraming.Raw)).not.toEqual(bytes);
170
+ });
171
+
172
+ it('produces the same bytes for the same input', () => {
173
+ const bytes = new TextEncoder().encode('deterministic zlib output'.repeat(10));
174
+ expect(compressDeflateZlib(bytes)).toEqual(compressDeflateZlib(bytes));
175
+ });
176
+ });
@@ -0,0 +1,61 @@
1
+ import { computeAdler32, DISTANCE_BASE, DISTANCE_EXTRA, LENGTH_BASE, LENGTH_EXTRA } from './deflateFormat';
2
+
3
+ describe('computeAdler32', () => {
4
+ it('returns the initial value for an empty input', () => {
5
+ expect(computeAdler32(new Uint8Array(0))).toBe(1);
6
+ });
7
+
8
+ it('matches the checksum RFC 1950 defines for a known string', () => {
9
+ // 'Wikipedia' is the worked example carried in the Adler-32 definition itself, so the expected
10
+ // value here comes from the specification rather than from this implementation's own output.
11
+ expect(computeAdler32(new TextEncoder().encode('Wikipedia'))).toBe(0x11e60398);
12
+ });
13
+
14
+ it('is order sensitive, so a transposition is not silently equal', () => {
15
+ expect(computeAdler32(new Uint8Array([1, 2]))).not.toBe(computeAdler32(new Uint8Array([2, 1])));
16
+ });
17
+
18
+ it('stays a 32-bit unsigned value past the point the sums wrap', () => {
19
+ const bytes = new Uint8Array(10_000).fill(0xff);
20
+ const checksum = computeAdler32(bytes);
21
+ expect(checksum).toBeGreaterThanOrEqual(0);
22
+ expect(checksum).toBeLessThanOrEqual(0xffffffff);
23
+ expect(Number.isInteger(checksum)).toBe(true);
24
+ });
25
+ });
26
+
27
+ describe('deflateFormat tables', () => {
28
+ it('pairs every length code with its extra-bit count and ends at the maximum match', () => {
29
+ expect(LENGTH_BASE).toHaveLength(LENGTH_EXTRA.length);
30
+ expect(LENGTH_BASE[0]).toBe(3);
31
+ expect(LENGTH_BASE[LENGTH_BASE.length - 1]).toBe(258);
32
+ expect(LENGTH_EXTRA[LENGTH_EXTRA.length - 1]).toBe(0);
33
+ });
34
+
35
+ it('pairs every distance code with its extra-bit count and covers the whole window', () => {
36
+ expect(DISTANCE_BASE).toHaveLength(DISTANCE_EXTRA.length);
37
+ expect(DISTANCE_BASE[0]).toBe(1);
38
+ const last = DISTANCE_BASE.length - 1;
39
+ expect(DISTANCE_BASE[last] + (1 << DISTANCE_EXTRA[last]) - 1).toBe(32768);
40
+ });
41
+
42
+ it('tiles the distance alphabet without gap or overlap', () => {
43
+ // The encoder picks a code by scanning for the largest base not above the value; that is only a
44
+ // correct inverse of the decoder's base-plus-extra-bits read if the ranges tile exactly.
45
+ for (let i = 0; i < DISTANCE_BASE.length - 1; i++) {
46
+ expect(DISTANCE_BASE[i] + (1 << DISTANCE_EXTRA[i])).toBe(DISTANCE_BASE[i + 1]);
47
+ }
48
+ });
49
+
50
+ it('tiles the length alphabet except for the final pair, which the format leaves irregular', () => {
51
+ // Every length pair tiles but the last: code 284 spans 227-257 even though five extra bits could
52
+ // reach 258, because 258 is given its own zero-extra-bit code. An encoder that assumed uniform
53
+ // tiling would emit 258 as 284-with-31-extra, which no decoder reads back as 258.
54
+ for (let i = 0; i < LENGTH_BASE.length - 2; i++) {
55
+ expect(LENGTH_BASE[i] + (1 << LENGTH_EXTRA[i])).toBe(LENGTH_BASE[i + 1]);
56
+ }
57
+ const penultimate = LENGTH_BASE.length - 2;
58
+ expect(LENGTH_BASE[penultimate] + (1 << LENGTH_EXTRA[penultimate]) - 1).toBe(258);
59
+ expect(LENGTH_BASE[LENGTH_BASE.length - 1]).toBe(258);
60
+ });
61
+ });