node-pkware 4.0.0-alpha.8 → 4.0.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.
package/README.md CHANGED
@@ -69,9 +69,7 @@ Takes an optional config object, which has the following properties:
69
69
 
70
70
  ```js
71
71
  {
72
- verbose: boolean, // whether the code should display extra debug messages on the console or not (default = false)
73
- inputBufferSize: int, // the starting size of the input buffer, may expand later as needed. Not having to expand may have positive performance impact (default 0)
74
- outputBufferSize: int // same as inputBufferSize, but for the outputBuffer (default 0)
72
+ verbose: boolean // whether the code should display extra debug messages on the console or not (default = false)
75
73
  }
76
74
  ```
77
75
 
@@ -83,9 +81,7 @@ Takes an optional config object, which has the following properties:
83
81
 
84
82
  ```js
85
83
  {
86
- verbose: boolean, // whether the code should display extra debug messages on the console or not (default = false)
87
- inputBufferSize: int, // the starting size of the input buffer, may expand later as needed. Not having to expand may have positive performance impact (default 0)
88
- outputBufferSize: int // same as inputBufferSize, but for the outputBuffer (default 0)
84
+ verbose: boolean // whether the code should display extra debug messages on the console or not (default = false)
89
85
  }
90
86
  ```
91
87
 
@@ -122,8 +118,6 @@ The returned function has the `(chunk: Buffer, encoding: string, callback: funct
122
118
 
123
119
  `errors.InvalidCompressionTypeError` - thrown by implode when invalid compression type was specified or by explode when it encounters invalid data in the header section (the first 2 bytes of a compressed files)
124
120
 
125
- `errors.InvalidDataError` - thrown by explode, when compressed data is less, than 5 bytes long. Pkware compressed files have 2 bytes header followed by at lest 2 bytes of data and an end literal.
126
-
127
121
  `errors.AbortedError` - thrown by explode when compressed data ends without reaching the end literal or in mid decompression
128
122
 
129
123
  ### examples
package/dist/Explode.d.ts CHANGED
@@ -2,7 +2,43 @@ import { Buffer } from 'node:buffer';
2
2
  import { type Transform, type TransformCallback } from 'node:stream';
3
3
  import { type Config } from './types.js';
4
4
  export declare class Explode {
5
- #private;
5
+ private readonly verbose;
6
+ private needMoreInput;
7
+ private isFirstChunk;
8
+ private extraBits;
9
+ private bitBuffer;
10
+ private readonly backupData;
11
+ private readonly lengthCodes;
12
+ private readonly distPosCodes;
13
+ private readonly inputBuffer;
14
+ private readonly outputBuffer;
15
+ private readonly stats;
16
+ private compressionType;
17
+ private dictionarySize;
18
+ private dictionarySizeMask;
19
+ private chBitsAsc;
20
+ private asciiTable2C34;
21
+ private asciiTable2D34;
22
+ private asciiTable2E34;
23
+ private asciiTable2EB4;
6
24
  constructor(config?: Config);
7
25
  getHandler(): (this: Transform, chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback) => void;
26
+ private generateAsciiTables;
27
+ private onInputFinished;
28
+ /**
29
+ * @throws {@link AbortedError} when there isn't enough data to be wasted
30
+ */
31
+ private wasteBits;
32
+ /**
33
+ * @throws {@link AbortedError}
34
+ */
35
+ private decodeNextLiteral;
36
+ /**
37
+ * @throws {@link AbortedError}
38
+ */
39
+ private decodeDistance;
40
+ private processChunkData;
41
+ private parseInitialData;
42
+ private backup;
43
+ private restore;
8
44
  }
package/dist/Explode.js CHANGED
@@ -6,7 +6,7 @@ import { quotientAndRemainder, getLowestNBitsOf, mergeSparseArrays, nBitsOfOnes,
6
6
  /**
7
7
  * This function assumes there are at least 2 bytes of data in the buffer
8
8
  */
9
- const readHeader = (buffer) => {
9
+ function readHeader(buffer) {
10
10
  const compressionType = buffer.readUInt8(0);
11
11
  const dictionarySize = buffer.readUInt8(1);
12
12
  if (!(compressionType in Compression) || compressionType === Compression.Unknown) {
@@ -19,235 +19,251 @@ const readHeader = (buffer) => {
19
19
  compressionType: compressionType,
20
20
  dictionarySize: dictionarySize,
21
21
  };
22
- };
23
- const generateDecodeTables = (startIndexes, lengthBits) => {
24
- const codes = repeat(0, 0x100);
22
+ }
23
+ function generateDecodeTables(startIndexes, lengthBits) {
24
+ const codes = repeat(0, 0x1_00);
25
25
  lengthBits.forEach((lengthBit, i) => {
26
- for (let index = startIndexes[i]; index < 0x100; index += 1 << lengthBit) {
26
+ for (let index = startIndexes[i]; index < 0x1_00; index = index + (1 << lengthBit)) {
27
27
  codes[index] = i;
28
28
  }
29
29
  });
30
30
  return codes;
31
- };
31
+ }
32
32
  /**
33
33
  * PAT = populate ascii table
34
34
  */
35
- const createPATIterator = (limit, stepper) => {
36
- return (n) => {
37
- return n >= limit ? false : [n, n + (1 << stepper)];
35
+ function createPATIterator(limit, stepper) {
36
+ return function (n) {
37
+ if (n >= limit) {
38
+ return false;
39
+ }
40
+ return [n, n + (1 << stepper)];
38
41
  };
39
- };
40
- const populateAsciiTable = (value, index, bits, limit) => {
42
+ }
43
+ function populateAsciiTable(value, index, bits, limit) {
41
44
  const iterator = createPATIterator(limit, value - bits);
42
45
  const seed = ChCodeAsc[index] >> bits;
43
- const idxs = unfold(iterator, seed);
46
+ const indices = unfold(iterator, seed);
44
47
  const table = [];
45
- idxs.forEach((idx) => {
48
+ indices.forEach((idx) => {
46
49
  table[idx] = index;
47
50
  });
48
51
  return table;
49
- };
52
+ }
50
53
  export class Explode {
51
- #verbose;
52
- #needMoreInput = true;
53
- #isFirstChunk = true;
54
- #extraBits = 0;
55
- #bitBuffer = 0;
56
- #backupData = {
57
- extraBits: -1,
58
- bitBuffer: -1,
59
- };
60
- #lengthCodes = generateDecodeTables(LenCode, LenBits);
61
- #distPosCodes = generateDecodeTables(DistCode, DistBits);
62
- #inputBuffer;
63
- #outputBuffer;
64
- #stats = { chunkCounter: 0 };
65
- #compressionType = Compression.Unknown;
66
- #dictionarySize = DictionarySize.Unknown;
67
- #dictionarySizeMask = 0;
68
- #chBitsAsc = repeat(0, 0x100);
69
- #asciiTable2C34 = repeat(0, 0x100);
70
- #asciiTable2D34 = repeat(0, 0x100);
71
- #asciiTable2E34 = repeat(0, 0x80);
72
- #asciiTable2EB4 = repeat(0, 0x100);
54
+ verbose;
55
+ needMoreInput;
56
+ isFirstChunk;
57
+ extraBits;
58
+ bitBuffer;
59
+ backupData;
60
+ lengthCodes;
61
+ distPosCodes;
62
+ inputBuffer;
63
+ outputBuffer;
64
+ stats;
65
+ compressionType;
66
+ dictionarySize;
67
+ dictionarySizeMask;
68
+ chBitsAsc;
69
+ asciiTable2C34;
70
+ asciiTable2D34;
71
+ asciiTable2E34;
72
+ asciiTable2EB4;
73
73
  constructor(config = {}) {
74
- this.#verbose = config?.verbose ?? false;
75
- this.#inputBuffer = new ExpandingBuffer(config?.inputBufferSize ?? 0);
76
- this.#outputBuffer = new ExpandingBuffer(config?.outputBufferSize ?? 0);
74
+ this.verbose = config?.verbose ?? false;
75
+ this.needMoreInput = true;
76
+ this.isFirstChunk = true;
77
+ this.extraBits = 0;
78
+ this.bitBuffer = 0;
79
+ this.backupData = { extraBits: -1, bitBuffer: -1 };
80
+ this.lengthCodes = generateDecodeTables(LenCode, LenBits);
81
+ this.distPosCodes = generateDecodeTables(DistCode, DistBits);
82
+ this.inputBuffer = new ExpandingBuffer(0x1_00_00);
83
+ this.outputBuffer = new ExpandingBuffer(0x4_00_00);
84
+ this.stats = { chunkCounter: 0 };
85
+ this.compressionType = Compression.Unknown;
86
+ this.dictionarySize = DictionarySize.Unknown;
87
+ this.dictionarySizeMask = 0;
88
+ this.chBitsAsc = repeat(0, 0x1_00);
89
+ this.asciiTable2C34 = repeat(0, 0x1_00);
90
+ this.asciiTable2D34 = repeat(0, 0x1_00);
91
+ this.asciiTable2E34 = repeat(0, 0x80);
92
+ this.asciiTable2EB4 = repeat(0, 0x1_00);
77
93
  }
78
94
  getHandler() {
79
95
  const instance = this;
80
96
  return function (chunk, encoding, callback) {
81
- instance.#needMoreInput = true;
97
+ instance.needMoreInput = true;
82
98
  try {
83
- instance.#inputBuffer.append(chunk);
84
- if (instance.#isFirstChunk) {
85
- instance.#isFirstChunk = false;
86
- this._flush = instance.#onInputFinished.bind(instance);
99
+ instance.inputBuffer.append(chunk);
100
+ if (instance.isFirstChunk) {
101
+ instance.isFirstChunk = false;
102
+ this._flush = instance.onInputFinished.bind(instance);
87
103
  }
88
- if (instance.#verbose) {
89
- instance.#stats.chunkCounter++;
90
- console.log(`explode: reading ${toHex(chunk.length)} bytes from chunk #${instance.#stats.chunkCounter}`);
104
+ if (instance.verbose) {
105
+ instance.stats.chunkCounter = instance.stats.chunkCounter + 1;
106
+ console.log(`explode: reading ${toHex(chunk.length)} bytes from chunk #${instance.stats.chunkCounter}`);
91
107
  }
92
- instance.#processChunkData();
93
- const blockSize = 0x1000;
94
- if (instance.#outputBuffer.size() <= blockSize) {
108
+ instance.processChunkData();
109
+ const blockSize = 0x10_00;
110
+ if (instance.outputBuffer.size() <= blockSize) {
95
111
  callback(null, EMPTY_BUFFER);
96
112
  return;
97
113
  }
98
- let [numberOfBlocks] = quotientAndRemainder(instance.#outputBuffer.size(), blockSize);
114
+ let [numberOfBlocks] = quotientAndRemainder(instance.outputBuffer.size(), blockSize);
99
115
  // making sure to leave one block worth of data for lookback when processing chunk data
100
- numberOfBlocks--;
116
+ numberOfBlocks = numberOfBlocks - 1;
101
117
  const numberOfBytes = numberOfBlocks * blockSize;
102
118
  // make sure to create a copy of the output buffer slice as it will get flushed in the next line
103
- const output = Buffer.from(instance.#outputBuffer.read(0, numberOfBytes));
104
- instance.#outputBuffer.flushStart(numberOfBytes);
119
+ const output = Buffer.from(instance.outputBuffer.read(0, numberOfBytes));
120
+ instance.outputBuffer.flushStart(numberOfBytes);
105
121
  callback(null, output);
106
122
  }
107
- catch (e) {
108
- callback(e);
123
+ catch (error) {
124
+ callback(error);
109
125
  }
110
126
  };
111
127
  }
112
- #generateAsciiTables() {
113
- this.#chBitsAsc = ChBitsAsc.map((value, index) => {
128
+ generateAsciiTables() {
129
+ this.chBitsAsc = ChBitsAsc.map((value, index) => {
114
130
  if (value <= 8) {
115
- this.#asciiTable2C34 = mergeSparseArrays(populateAsciiTable(value, index, 0, 0x100), this.#asciiTable2C34);
131
+ this.asciiTable2C34 = mergeSparseArrays(populateAsciiTable(value, index, 0, 0x1_00), this.asciiTable2C34);
116
132
  return value - 0;
117
133
  }
118
134
  const acc = getLowestNBitsOf(ChCodeAsc[index], 8);
119
135
  if (acc === 0) {
120
- this.#asciiTable2EB4 = mergeSparseArrays(populateAsciiTable(value, index, 8, 0x100), this.#asciiTable2EB4);
136
+ this.asciiTable2EB4 = mergeSparseArrays(populateAsciiTable(value, index, 8, 0x1_00), this.asciiTable2EB4);
121
137
  return value - 8;
122
138
  }
123
- this.#asciiTable2C34[acc] = 0xff;
139
+ this.asciiTable2C34[acc] = 0xff;
124
140
  if (getLowestNBitsOf(acc, 6) === 0) {
125
- this.#asciiTable2E34 = mergeSparseArrays(populateAsciiTable(value, index, 6, 0x80), this.#asciiTable2E34);
141
+ this.asciiTable2E34 = mergeSparseArrays(populateAsciiTable(value, index, 6, 0x80), this.asciiTable2E34);
126
142
  return value - 6;
127
143
  }
128
- this.#asciiTable2D34 = mergeSparseArrays(populateAsciiTable(value, index, 4, 0x100), this.#asciiTable2D34);
144
+ this.asciiTable2D34 = mergeSparseArrays(populateAsciiTable(value, index, 4, 0x1_00), this.asciiTable2D34);
129
145
  return value - 4;
130
146
  });
131
147
  }
132
- #onInputFinished(callback) {
133
- if (this.#verbose) {
148
+ onInputFinished(callback) {
149
+ if (this.verbose) {
134
150
  console.log('---------------');
135
- console.log('explode: total number of chunks read:', this.#stats.chunkCounter);
136
- console.log('explode: inputBuffer heap size', toHex(this.#inputBuffer.heapSize()));
137
- console.log('explode: outputBuffer heap size', toHex(this.#outputBuffer.heapSize()));
151
+ console.log('explode: total number of chunks read:', this.stats.chunkCounter);
152
+ console.log('explode: inputBuffer heap size', toHex(this.inputBuffer.heapSize()));
153
+ console.log('explode: outputBuffer heap size', toHex(this.outputBuffer.heapSize()));
138
154
  }
139
- if (this.#needMoreInput) {
155
+ if (this.needMoreInput) {
140
156
  callback(new AbortedError());
141
157
  return;
142
158
  }
143
- callback(null, this.#outputBuffer.read());
159
+ callback(null, this.outputBuffer.read());
144
160
  }
145
161
  /**
146
162
  * @throws {@link AbortedError} when there isn't enough data to be wasted
147
163
  */
148
- #wasteBits(numberOfBits) {
149
- if (numberOfBits > this.#extraBits && this.#inputBuffer.isEmpty()) {
164
+ wasteBits(numberOfBits) {
165
+ if (numberOfBits > this.extraBits && this.inputBuffer.isEmpty()) {
150
166
  throw new AbortedError();
151
167
  }
152
- if (numberOfBits <= this.#extraBits) {
153
- this.#bitBuffer = this.#bitBuffer >> numberOfBits;
154
- this.#extraBits = this.#extraBits - numberOfBits;
168
+ if (numberOfBits <= this.extraBits) {
169
+ this.bitBuffer = this.bitBuffer >> numberOfBits;
170
+ this.extraBits = this.extraBits - numberOfBits;
155
171
  return;
156
172
  }
157
- const nextByte = this.#inputBuffer.readByte(0);
158
- this.#inputBuffer.dropStart(1);
159
- this.#bitBuffer = ((this.#bitBuffer >> this.#extraBits) | (nextByte << 8)) >> (numberOfBits - this.#extraBits);
160
- this.#extraBits = this.#extraBits + 8 - numberOfBits;
173
+ const nextByte = this.inputBuffer.readByte(0);
174
+ this.inputBuffer.dropStart(1);
175
+ this.bitBuffer = ((this.bitBuffer >> this.extraBits) | (nextByte << 8)) >> (numberOfBits - this.extraBits);
176
+ this.extraBits = this.extraBits + 8 - numberOfBits;
161
177
  }
162
178
  /**
163
179
  * @throws {@link AbortedError}
164
180
  */
165
- #decodeNextLiteral() {
166
- const lastBit = getLowestNBitsOf(this.#bitBuffer, 1);
167
- this.#wasteBits(1);
181
+ decodeNextLiteral() {
182
+ const lastBit = getLowestNBitsOf(this.bitBuffer, 1);
183
+ this.wasteBits(1);
168
184
  if (lastBit) {
169
- let lengthCode = this.#lengthCodes[getLowestNBitsOf(this.#bitBuffer, 8)];
170
- this.#wasteBits(LenBits[lengthCode]);
185
+ let lengthCode = this.lengthCodes[getLowestNBitsOf(this.bitBuffer, 8)];
186
+ this.wasteBits(LenBits[lengthCode]);
171
187
  const extraLenghtBits = ExLenBits[lengthCode];
172
188
  if (extraLenghtBits !== 0) {
173
- const extraLength = getLowestNBitsOf(this.#bitBuffer, extraLenghtBits);
189
+ const extraLength = getLowestNBitsOf(this.bitBuffer, extraLenghtBits);
174
190
  try {
175
- this.#wasteBits(extraLenghtBits);
191
+ this.wasteBits(extraLenghtBits);
176
192
  }
177
- catch (e) {
178
- if (lengthCode + extraLength !== 0x10e) {
193
+ catch {
194
+ if (lengthCode + extraLength !== 0x1_0e) {
179
195
  throw new AbortedError();
180
196
  }
181
197
  }
182
198
  lengthCode = LenBase[lengthCode] + extraLength;
183
199
  }
184
- return lengthCode + 0x100;
200
+ return lengthCode + 0x1_00;
185
201
  }
186
- const lastByte = getLowestNBitsOf(this.#bitBuffer, 8);
187
- if (this.#compressionType === Compression.Binary) {
188
- this.#wasteBits(8);
202
+ const lastByte = getLowestNBitsOf(this.bitBuffer, 8);
203
+ if (this.compressionType === Compression.Binary) {
204
+ this.wasteBits(8);
189
205
  return lastByte;
190
206
  }
191
207
  let value;
192
208
  if (lastByte > 0) {
193
- value = this.#asciiTable2C34[lastByte];
209
+ value = this.asciiTable2C34[lastByte];
194
210
  if (value === 0xff) {
195
- if (getLowestNBitsOf(this.#bitBuffer, 6)) {
196
- this.#wasteBits(4);
197
- value = this.#asciiTable2D34[getLowestNBitsOf(this.#bitBuffer, 8)];
211
+ if (getLowestNBitsOf(this.bitBuffer, 6)) {
212
+ this.wasteBits(4);
213
+ value = this.asciiTable2D34[getLowestNBitsOf(this.bitBuffer, 8)];
198
214
  }
199
215
  else {
200
- this.#wasteBits(6);
201
- value = this.#asciiTable2E34[getLowestNBitsOf(this.#bitBuffer, 7)];
216
+ this.wasteBits(6);
217
+ value = this.asciiTable2E34[getLowestNBitsOf(this.bitBuffer, 7)];
202
218
  }
203
219
  }
204
220
  }
205
221
  else {
206
- this.#wasteBits(8);
207
- value = this.#asciiTable2EB4[getLowestNBitsOf(this.#bitBuffer, 8)];
222
+ this.wasteBits(8);
223
+ value = this.asciiTable2EB4[getLowestNBitsOf(this.bitBuffer, 8)];
208
224
  }
209
- this.#wasteBits(this.#chBitsAsc[value]);
225
+ this.wasteBits(this.chBitsAsc[value]);
210
226
  return value;
211
227
  }
212
228
  /**
213
229
  * @throws {@link AbortedError}
214
230
  */
215
- #decodeDistance(repeatLength) {
216
- const distPosCode = this.#distPosCodes[getLowestNBitsOf(this.#bitBuffer, 8)];
231
+ decodeDistance(repeatLength) {
232
+ const distPosCode = this.distPosCodes[getLowestNBitsOf(this.bitBuffer, 8)];
217
233
  const distPosBits = DistBits[distPosCode];
218
- this.#wasteBits(distPosBits);
234
+ this.wasteBits(distPosBits);
219
235
  let distance;
220
236
  let bitsToWaste;
221
237
  if (repeatLength === 2) {
222
- distance = (distPosCode << 2) | getLowestNBitsOf(this.#bitBuffer, 2);
238
+ distance = (distPosCode << 2) | getLowestNBitsOf(this.bitBuffer, 2);
223
239
  bitsToWaste = 2;
224
240
  }
225
241
  else {
226
- distance = (distPosCode << this.#dictionarySize) | (this.#bitBuffer & this.#dictionarySizeMask);
227
- bitsToWaste = this.#dictionarySize;
242
+ distance = (distPosCode << this.dictionarySize) | (this.bitBuffer & this.dictionarySizeMask);
243
+ bitsToWaste = this.dictionarySize;
228
244
  }
229
- this.#wasteBits(bitsToWaste);
245
+ this.wasteBits(bitsToWaste);
230
246
  return distance + 1;
231
247
  }
232
- #processChunkData() {
233
- if (this.#inputBuffer.isEmpty()) {
248
+ processChunkData() {
249
+ if (this.inputBuffer.isEmpty()) {
234
250
  return;
235
251
  }
236
- if (this.#compressionType === Compression.Unknown) {
237
- const headerParsedSuccessfully = this.#parseInitialData();
238
- if (!headerParsedSuccessfully || this.#inputBuffer.isEmpty()) {
252
+ if (this.compressionType === Compression.Unknown) {
253
+ const headerParsedSuccessfully = this.parseInitialData();
254
+ if (!headerParsedSuccessfully || this.inputBuffer.isEmpty()) {
239
255
  return;
240
256
  }
241
257
  }
242
- this.#needMoreInput = false;
243
- this.#backup();
258
+ this.needMoreInput = false;
259
+ this.backup();
244
260
  try {
245
- let nextLiteral = this.#decodeNextLiteral();
261
+ let nextLiteral = this.decodeNextLiteral();
246
262
  while (nextLiteral !== LITERAL_END_STREAM) {
247
- if (nextLiteral >= 0x100) {
263
+ if (nextLiteral >= 0x1_00) {
248
264
  const repeatLength = nextLiteral - 0xfe;
249
- const minusDistance = this.#decodeDistance(repeatLength);
250
- const availableData = this.#outputBuffer.read(this.#outputBuffer.size() - minusDistance, repeatLength);
265
+ const minusDistance = this.decodeDistance(repeatLength);
266
+ const availableData = this.outputBuffer.read(this.outputBuffer.size() - minusDistance, repeatLength);
251
267
  let addition;
252
268
  if (repeatLength > minusDistance) {
253
269
  const multipliedData = repeat(availableData, Math.ceil(repeatLength / availableData.length));
@@ -256,50 +272,50 @@ export class Explode {
256
272
  else {
257
273
  addition = availableData;
258
274
  }
259
- this.#outputBuffer.append(addition);
275
+ this.outputBuffer.append(addition);
260
276
  }
261
277
  else {
262
- this.#outputBuffer.appendByte(nextLiteral);
278
+ this.outputBuffer.appendByte(nextLiteral);
263
279
  }
264
- this.#backup();
265
- nextLiteral = this.#decodeNextLiteral();
280
+ this.backup();
281
+ nextLiteral = this.decodeNextLiteral();
266
282
  }
267
283
  }
268
- catch (e) {
269
- this.#needMoreInput = true;
284
+ catch {
285
+ this.needMoreInput = true;
270
286
  }
271
- if (this.#needMoreInput) {
272
- this.#restore();
287
+ if (this.needMoreInput) {
288
+ this.restore();
273
289
  }
274
290
  }
275
- #parseInitialData() {
276
- if (this.#inputBuffer.size() < 4) {
291
+ parseInitialData() {
292
+ if (this.inputBuffer.size() < 4) {
277
293
  return false;
278
294
  }
279
- const { compressionType, dictionarySize } = readHeader(this.#inputBuffer.read(0, 2));
280
- this.#compressionType = compressionType;
281
- this.#dictionarySize = dictionarySize;
282
- this.#bitBuffer = this.#inputBuffer.readByte(2);
283
- this.#inputBuffer.dropStart(3);
284
- this.#dictionarySizeMask = nBitsOfOnes(dictionarySize);
285
- if (this.#compressionType === Compression.Ascii) {
286
- this.#generateAsciiTables();
295
+ const { compressionType, dictionarySize } = readHeader(this.inputBuffer.read(0, 2));
296
+ this.compressionType = compressionType;
297
+ this.dictionarySize = dictionarySize;
298
+ this.bitBuffer = this.inputBuffer.readByte(2);
299
+ this.inputBuffer.dropStart(3);
300
+ this.dictionarySizeMask = nBitsOfOnes(dictionarySize);
301
+ if (this.compressionType === Compression.Ascii) {
302
+ this.generateAsciiTables();
287
303
  }
288
- if (this.#verbose) {
289
- console.log(`explode: compression type: ${Compression[this.#compressionType]}`);
290
- console.log(`explode: compression level: ${DictionarySize[this.#dictionarySize]}`);
304
+ if (this.verbose) {
305
+ console.log(`explode: compression type: ${Compression[this.compressionType]}`);
306
+ console.log(`explode: compression level: ${DictionarySize[this.dictionarySize]}`);
291
307
  }
292
308
  return true;
293
309
  }
294
- #backup() {
295
- this.#backupData.extraBits = this.#extraBits;
296
- this.#backupData.bitBuffer = this.#bitBuffer;
297
- this.#inputBuffer.saveIndices();
310
+ backup() {
311
+ this.backupData.extraBits = this.extraBits;
312
+ this.backupData.bitBuffer = this.bitBuffer;
313
+ this.inputBuffer.saveIndices();
298
314
  }
299
- #restore() {
300
- this.#extraBits = this.#backupData.extraBits;
301
- this.#bitBuffer = this.#backupData.bitBuffer;
302
- this.#inputBuffer.restoreIndices();
315
+ restore() {
316
+ this.extraBits = this.backupData.extraBits;
317
+ this.bitBuffer = this.backupData.bitBuffer;
318
+ this.inputBuffer.restoreIndices();
303
319
  }
304
320
  }
305
321
  //# sourceMappingURL=Explode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Explode.js","sourceRoot":"","sources":["../src/Explode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Explode.js","sourceRoot":"","sources":["../src/Explode.ts"],"names":[],"mappings":"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"}
package/dist/Implode.d.ts CHANGED
@@ -1,10 +1,40 @@
1
1
  import { Buffer } from 'node:buffer';
2
- import { type Transform, type TransformCallback } from 'node:stream';
3
2
  import { Compression, DictionarySize } from './constants.js';
3
+ import { type StreamHandler } from './stream.js';
4
4
  import { type Config } from './types.js';
5
- export declare const getSizeOfMatching: (inputBytes: Buffer, a: number, b: number) => number;
5
+ export declare function getSizeOfMatching(inputBytes: Buffer, a: number, b: number): number;
6
6
  export declare class Implode {
7
- #private;
7
+ private readonly verbose;
8
+ private isFirstChunk;
9
+ private readonly inputBuffer;
10
+ private readonly outputBuffer;
11
+ private readonly stats;
12
+ private readonly compressionType;
13
+ private readonly dictionarySize;
14
+ private dictionarySizeMask;
15
+ private streamEnded;
16
+ private readonly distCodes;
17
+ private readonly distBits;
18
+ private startIndex;
19
+ private handledFirstTwoBytes;
20
+ private outBits;
21
+ private nChBits;
22
+ private nChCodes;
8
23
  constructor(compressionType: Compression, dictionarySize: DictionarySize, config: Config);
9
- getHandler(): (this: Transform, chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback) => void;
24
+ getHandler(): StreamHandler;
25
+ private onInputFinished;
26
+ private processChunkData;
27
+ /**
28
+ * @returns false - non flushable
29
+ * @returns true - flushable
30
+ * @returns null - flushable, but there might be a better repetition
31
+ */
32
+ private isRepetitionFlushable;
33
+ /**
34
+ * repetitions are at least 2 bytes long,
35
+ * so the initial 2 bytes can be moved to the output as is
36
+ */
37
+ private handleFirstTwoBytes;
38
+ private setup;
39
+ private outputBits;
10
40
  }