node-pkware 3.0.5 → 4.0.0-alpha.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/dist/Implode.js CHANGED
@@ -1,27 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Implode = exports.getSizeOfMatching = void 0;
4
- const node_buffer_1 = require("node:buffer");
5
- const constants_1 = require("./constants");
6
- const errors_1 = require("./errors");
7
- const ExpandingBuffer_1 = require("./ExpandingBuffer");
8
- const functions_1 = require("./functions");
9
- const getSizeOfMatching = (inputBytes, a, b) => {
10
- const limit = (0, functions_1.clamp)(2, constants_1.LONGEST_ALLOWED_REPETITION, b - a);
1
+ import { Buffer } from 'node:buffer';
2
+ import { ChBitsAsc, ChCodeAsc, Compression, DictionarySize, DistBits, DistCode, EMPTY_BUFFER, ExLenBits, LenBits, LenCode, LONGEST_ALLOWED_REPETITION, } from './constants.js';
3
+ import { InvalidCompressionTypeError, InvalidDictionarySizeError } from './errors.js';
4
+ import { ExpandingBuffer } from './ExpandingBuffer.js';
5
+ import { clamp, evenAndRemainder, getLowestNBits, nBitsOfOnes, repeat, toHex } from './functions.js';
6
+ export function getSizeOfMatching(inputBytes, a, b) {
7
+ const limit = clamp(2, LONGEST_ALLOWED_REPETITION, b - a);
11
8
  for (let i = 2; i <= limit; i++) {
12
9
  if (inputBytes[a + i] !== inputBytes[b + i]) {
13
10
  return i;
14
11
  }
15
12
  }
16
13
  return limit;
17
- };
18
- exports.getSizeOfMatching = getSizeOfMatching;
14
+ }
19
15
  /**
20
16
  * TODO: make sure that we find the most recent one,
21
17
  * which in turn allows us to store backward length in less amount of bits
22
18
  * currently the code goes from the furthest point
23
19
  */
24
- const findRepetitions = (inputBytes, endOfLastMatch, cursor) => {
20
+ function findRepetitions(inputBytes, endOfLastMatch, cursor) {
25
21
  const notEnoughBytes = inputBytes.length - cursor < 2;
26
22
  const tooClose = cursor === endOfLastMatch || cursor - endOfLastMatch < 2;
27
23
  if (notEnoughBytes || tooClose) {
@@ -32,132 +28,139 @@ const findRepetitions = (inputBytes, endOfLastMatch, cursor) => {
32
28
  const matchIndex = haystack.indexOf(needle);
33
29
  if (matchIndex !== -1) {
34
30
  const distance = cursor - endOfLastMatch - matchIndex;
31
+ let size = 2;
32
+ if (distance > 2) {
33
+ size = getSizeOfMatching(inputBytes, endOfLastMatch + matchIndex, cursor);
34
+ }
35
35
  return {
36
36
  distance: distance - 1,
37
- size: distance > 2 ? (0, exports.getSizeOfMatching)(inputBytes, endOfLastMatch + matchIndex, cursor) : 2,
37
+ size,
38
38
  };
39
39
  }
40
40
  return { size: 0, distance: 0 };
41
- };
42
- class Implode {
43
- #verbose;
44
- #isFirstChunk = true;
45
- #inputBuffer;
46
- #outputBuffer;
47
- #stats = { chunkCounter: 0 };
48
- #compressionType = constants_1.Compression.Unknown;
49
- #dictionarySize = constants_1.DictionarySize.Unknown;
50
- #dictionarySizeMask = -1;
51
- #streamEnded = false;
52
- #distCodes = (0, functions_1.clone)(constants_1.DistCode);
53
- #distBits = (0, functions_1.clone)(constants_1.DistBits);
54
- #startIndex = 0;
55
- #handledFirstTwoBytes = false;
56
- #outBits = 0;
57
- #nChBits = (0, functions_1.repeat)(0, 0x306);
58
- #nChCodes = (0, functions_1.repeat)(0, 0x306);
41
+ }
42
+ export class Implode {
43
+ verbose;
44
+ isFirstChunk = true;
45
+ inputBuffer;
46
+ outputBuffer;
47
+ stats = { chunkCounter: 0 };
48
+ compressionType;
49
+ dictionarySize;
50
+ dictionarySizeMask = -1;
51
+ streamEnded = false;
52
+ distCodes = structuredClone(DistCode);
53
+ distBits = structuredClone(DistBits);
54
+ startIndex = 0;
55
+ handledFirstTwoBytes = false;
56
+ outBits = 0;
57
+ nChBits = repeat(0, 0x3_06);
58
+ nChCodes = repeat(0, 0x3_06);
59
59
  constructor(compressionType, dictionarySize, config) {
60
- if (!(compressionType in constants_1.Compression) || compressionType === constants_1.Compression.Unknown) {
61
- throw new errors_1.InvalidCompressionTypeError();
60
+ if (!(compressionType in Compression) || compressionType === Compression.Unknown) {
61
+ throw new InvalidCompressionTypeError();
62
62
  }
63
- if (!(dictionarySize in constants_1.DictionarySize) || dictionarySize === constants_1.DictionarySize.Unknown) {
64
- throw new errors_1.InvalidDictionarySizeError();
63
+ if (!(dictionarySize in DictionarySize) || dictionarySize === DictionarySize.Unknown) {
64
+ throw new InvalidDictionarySizeError();
65
65
  }
66
- this.#compressionType = compressionType;
67
- this.#dictionarySize = dictionarySize;
68
- this.#verbose = config?.verbose ?? false;
69
- this.#inputBuffer = new ExpandingBuffer_1.ExpandingBuffer(config?.inputBufferSize ?? 0);
70
- this.#outputBuffer = new ExpandingBuffer_1.ExpandingBuffer(config?.outputBufferSize ?? 0);
66
+ this.compressionType = compressionType;
67
+ this.dictionarySize = dictionarySize;
68
+ this.verbose = config?.verbose ?? false;
69
+ this.inputBuffer = new ExpandingBuffer(config?.inputBufferSize ?? 0);
70
+ this.outputBuffer = new ExpandingBuffer(config?.outputBufferSize ?? 0);
71
71
  }
72
72
  getHandler() {
73
- const instance = this;
73
+ const implodeInstance = this;
74
74
  return function (chunk, encoding, callback) {
75
75
  try {
76
- instance.#inputBuffer.append(chunk);
77
- if (instance.#isFirstChunk) {
78
- instance.#isFirstChunk = false;
79
- this._flush = instance.#onInputFinished.bind(instance);
76
+ implodeInstance.inputBuffer.append(chunk);
77
+ if (implodeInstance.isFirstChunk) {
78
+ implodeInstance.isFirstChunk = false;
79
+ this._flush = implodeInstance.onInputFinished.bind(implodeInstance);
80
80
  }
81
- if (instance.#verbose) {
82
- instance.#stats.chunkCounter++;
83
- console.log(`implode: reading ${(0, functions_1.toHex)(chunk.length)} bytes from chunk #${instance.#stats.chunkCounter}`);
81
+ if (implodeInstance.verbose) {
82
+ implodeInstance.stats.chunkCounter++;
83
+ console.log(`implode: reading ${toHex(chunk.length)} bytes from chunk #${implodeInstance.stats.chunkCounter}`);
84
84
  }
85
- instance.#processChunkData();
86
- const blockSize = 0x800;
87
- if (instance.#outputBuffer.size() <= blockSize) {
88
- callback(null, constants_1.EMPTY_BUFFER);
85
+ implodeInstance.processChunkData();
86
+ const blockSize = 0x8_00;
87
+ if (implodeInstance.outputBuffer.size() <= blockSize) {
88
+ callback(null, EMPTY_BUFFER);
89
89
  return;
90
90
  }
91
- let [numberOfBlocks] = (0, functions_1.evenAndRemainder)(blockSize, instance.#outputBuffer.size());
91
+ let [numberOfBlocks] = evenAndRemainder(blockSize, implodeInstance.outputBuffer.size());
92
92
  // making sure to leave one block worth of data for lookback when processing chunk data
93
93
  numberOfBlocks--;
94
94
  const numberOfBytes = numberOfBlocks * blockSize;
95
95
  // make sure to create a copy of the output buffer slice as it will get flushed in the next line
96
- const output = node_buffer_1.Buffer.from(instance.#outputBuffer.read(0, numberOfBytes));
97
- instance.#outputBuffer.flushStart(numberOfBytes);
98
- if (instance.#outBits === 0) {
99
- instance.#outputBuffer.setByte(-1, 0);
96
+ const output = Buffer.from(implodeInstance.outputBuffer.read(0, numberOfBytes));
97
+ implodeInstance.outputBuffer.flushStart(numberOfBytes);
98
+ if (implodeInstance.outBits === 0) {
99
+ implodeInstance.outputBuffer.setByte(-1, 0);
100
100
  }
101
101
  callback(null, output);
102
102
  }
103
- catch (e) {
104
- callback(e);
103
+ catch (error) {
104
+ callback(error);
105
105
  }
106
106
  };
107
107
  }
108
- #onInputFinished(callback) {
109
- this.#streamEnded = true;
108
+ onInputFinished(callback) {
109
+ this.streamEnded = true;
110
110
  try {
111
- this.#processChunkData();
112
- if (this.#verbose) {
111
+ this.processChunkData();
112
+ if (this.verbose) {
113
113
  console.log('---------------');
114
- console.log('implode: total number of chunks read:', this.#stats.chunkCounter);
115
- console.log('implode: inputBuffer heap size', (0, functions_1.toHex)(this.#inputBuffer.heapSize()));
116
- console.log('implode: outputBuffer heap size', (0, functions_1.toHex)(this.#outputBuffer.heapSize()));
114
+ console.log('implode: total number of chunks read:', this.stats.chunkCounter);
115
+ console.log('implode: inputBuffer heap size', toHex(this.inputBuffer.heapSize()));
116
+ console.log('implode: outputBuffer heap size', toHex(this.outputBuffer.heapSize()));
117
117
  }
118
- callback(null, this.#outputBuffer.read());
118
+ callback(null, this.outputBuffer.read());
119
119
  }
120
- catch (e) {
121
- callback(e);
120
+ catch (error) {
121
+ callback(error);
122
122
  }
123
123
  }
124
- #processChunkData() {
125
- if (this.#dictionarySizeMask === -1) {
126
- this.#setup();
124
+ processChunkData() {
125
+ if (this.dictionarySizeMask === -1) {
126
+ this.setup();
127
127
  }
128
- if (!this.#inputBuffer.isEmpty()) {
129
- this.#startIndex = 0;
130
- if (!this.#handledFirstTwoBytes) {
131
- if (this.#inputBuffer.size() < 3) {
128
+ if (!this.inputBuffer.isEmpty()) {
129
+ this.startIndex = 0;
130
+ if (!this.handledFirstTwoBytes) {
131
+ if (this.inputBuffer.size() < 3) {
132
132
  return;
133
133
  }
134
- this.#handledFirstTwoBytes = true;
135
- this.#handleFirstTwoBytes();
134
+ this.handledFirstTwoBytes = true;
135
+ this.handleFirstTwoBytes();
136
136
  }
137
137
  // -------------------------------
138
+ // eslint-disable-next-line prefer-const -- this might get overriden while searching for repetitions
138
139
  let endOfLastMatch = 0; // used when searching for longer repetitions later
139
- while (this.#startIndex < this.#inputBuffer.size()) {
140
- let { size, distance } = findRepetitions(this.#inputBuffer.read(endOfLastMatch), endOfLastMatch, this.#startIndex);
141
- let isFlushable = this.#isRepetitionFlushable(size, distance);
140
+ while (this.startIndex < this.inputBuffer.size()) {
141
+ // eslint-disable-next-line prefer-const -- this might get overriden while searching for repetitions
142
+ let { size, distance } = findRepetitions(this.inputBuffer.read(endOfLastMatch), endOfLastMatch, this.startIndex);
143
+ // eslint-disable-next-line prefer-const -- this might get overriden while searching for repetitions
144
+ let isFlushable = this.isRepetitionFlushable(size, distance);
142
145
  if (isFlushable === false) {
143
- const byte = this.#inputBuffer.readByte(this.#startIndex);
144
- this.#outputBits(this.#nChBits[byte], this.#nChCodes[byte]);
145
- this.#startIndex += 1;
146
+ const byte = this.inputBuffer.readByte(this.startIndex);
147
+ this.outputBits(this.nChBits[byte], this.nChCodes[byte]);
148
+ this.startIndex = this.startIndex + 1;
146
149
  }
147
150
  else {
148
151
  if (isFlushable === null) {
149
152
  /*
150
153
  // Try to find better repetition 1 byte later.
151
154
  // stormlib/implode.c L517
152
- let cursor = this.#startIndex
155
+ let cursor = this.startIndex
153
156
  let newSize = size
154
157
  let newDistance = distance
155
158
  let currentSize
156
159
  let currentDistance
157
- while (newSize <= currentSize && this.#isRepetitionFlushable(newSize, newDistance)) {
160
+ while (newSize <= currentSize && this.isRepetitionFlushable(newSize, newDistance)) {
158
161
  currentSize = newSize
159
162
  currentDistance = newDistance
160
- const reps = findRepetitions(this.#inputBuffer.read(endOfLastMatch), endOfLastMatch, ++cursor)
163
+ const reps = findRepetitions(this.inputBuffer.read(endOfLastMatch), endOfLastMatch, ++cursor)
161
164
  newSize = reps.size
162
165
  newDistance = reps.distance
163
166
  }
@@ -166,44 +169,44 @@ class Implode {
166
169
  */
167
170
  }
168
171
  const byte = size + 0xfe;
169
- this.#outputBits(this.#nChBits[byte], this.#nChCodes[byte]);
172
+ this.outputBits(this.nChBits[byte], this.nChCodes[byte]);
170
173
  if (size === 2) {
171
174
  const byte = distance >> 2;
172
- this.#outputBits(this.#distBits[byte], this.#distCodes[byte]);
173
- this.#outputBits(2, distance & 3);
175
+ this.outputBits(this.distBits[byte], this.distCodes[byte]);
176
+ this.outputBits(2, distance & 3);
174
177
  }
175
178
  else {
176
- const byte = distance >> this.#dictionarySize;
177
- this.#outputBits(this.#distBits[byte], this.#distCodes[byte]);
178
- this.#outputBits(this.#dictionarySize, this.#dictionarySizeMask & distance);
179
+ const byte = distance >> this.dictionarySize;
180
+ this.outputBits(this.distBits[byte], this.distCodes[byte]);
181
+ this.outputBits(this.dictionarySize, this.dictionarySizeMask & distance);
179
182
  }
180
- this.#startIndex += size;
183
+ this.startIndex = this.startIndex + size;
181
184
  }
182
185
  /*
183
- this.#inputBuffer.dropStart(endOfLastMatch)
184
- this.#startIndex -= endOfLastMatch
186
+ this.inputBuffer.dropStart(endOfLastMatch)
187
+ this.startIndex -= endOfLastMatch
185
188
  endOfLastMatch = 0
186
189
  */
187
- if (this.#dictionarySize === constants_1.DictionarySize.Small && this.#startIndex >= 0x400) {
188
- this.#inputBuffer.dropStart(0x400);
189
- this.#startIndex -= 0x400;
190
+ if (this.dictionarySize === DictionarySize.Small && this.startIndex >= 0x4_00) {
191
+ this.inputBuffer.dropStart(0x4_00);
192
+ this.startIndex = this.startIndex - 0x4_00;
190
193
  }
191
- else if (this.#dictionarySize === constants_1.DictionarySize.Medium && this.#startIndex >= 0x800) {
192
- this.#inputBuffer.dropStart(0x800);
193
- this.#startIndex -= 0x800;
194
+ else if (this.dictionarySize === DictionarySize.Medium && this.startIndex >= 0x8_00) {
195
+ this.inputBuffer.dropStart(0x8_00);
196
+ this.startIndex = this.startIndex - 0x8_00;
194
197
  }
195
- else if (this.#dictionarySize === constants_1.DictionarySize.Large && this.#startIndex >= 0x1000) {
196
- this.#inputBuffer.dropStart(0x1000);
197
- this.#startIndex -= 0x1000;
198
+ else if (this.dictionarySize === DictionarySize.Large && this.startIndex >= 0x10_00) {
199
+ this.inputBuffer.dropStart(0x10_00);
200
+ this.startIndex = this.startIndex - 0x10_00;
198
201
  }
199
202
  }
200
203
  // -------------------------------
201
- // this.#inputBuffer.dropStart(this.#inputBuffer.size())
202
- this.#inputBuffer.clear();
204
+ // this.inputBuffer.dropStart(this.inputBuffer.size())
205
+ this.inputBuffer.clear();
203
206
  }
204
- if (this.#streamEnded) {
207
+ if (this.streamEnded) {
205
208
  // Write the termination literal
206
- this.#outputBits((0, functions_1.last)(this.#nChBits), (0, functions_1.last)(this.#nChCodes));
209
+ this.outputBits(this.nChBits.at(-1), this.nChCodes.at(-1));
207
210
  }
208
211
  }
209
212
  /**
@@ -211,17 +214,17 @@ class Implode {
211
214
  * @returns true - flushable
212
215
  * @returns null - flushable, but there might be a better repetition
213
216
  */
214
- #isRepetitionFlushable(size, distance) {
217
+ isRepetitionFlushable(size, distance) {
215
218
  if (size === 0) {
216
219
  return false;
217
220
  }
218
221
  // If we found repetition of 2 bytes, that is 0x100 or further back,
219
222
  // don't bother. Storing the distance of 0x100 bytes would actually
220
223
  // take more space than storing the 2 bytes as-is.
221
- if (size === 2 && distance >= 0x100) {
224
+ if (size === 2 && distance >= 0x1_00) {
222
225
  return false;
223
226
  }
224
- if (size >= 8 || this.#startIndex + 1 >= this.#inputBuffer.size()) {
227
+ if (size >= 8 || this.startIndex + 1 >= this.inputBuffer.size()) {
225
228
  return true;
226
229
  }
227
230
  return null;
@@ -230,76 +233,80 @@ class Implode {
230
233
  * repetitions are at least 2 bytes long,
231
234
  * so the initial 2 bytes can be moved to the output as is
232
235
  */
233
- #handleFirstTwoBytes() {
234
- const byte1 = this.#inputBuffer.readByte(0);
235
- const byte2 = this.#inputBuffer.readByte(1);
236
- this.#outputBits(this.#nChBits[byte1], this.#nChCodes[byte1]);
237
- this.#outputBits(this.#nChBits[byte2], this.#nChCodes[byte2]);
238
- this.#startIndex += 2;
236
+ handleFirstTwoBytes() {
237
+ const byte1 = this.inputBuffer.readByte(0);
238
+ const byte2 = this.inputBuffer.readByte(1);
239
+ this.outputBits(this.nChBits[byte1], this.nChCodes[byte1]);
240
+ this.outputBits(this.nChBits[byte2], this.nChCodes[byte2]);
241
+ this.startIndex = this.startIndex + 2;
239
242
  }
240
- #setup() {
241
- switch (this.#dictionarySize) {
242
- case constants_1.DictionarySize.Large:
243
- this.#dictionarySizeMask = (0, functions_1.nBitsOfOnes)(6);
243
+ setup() {
244
+ switch (this.dictionarySize) {
245
+ case DictionarySize.Large: {
246
+ this.dictionarySizeMask = nBitsOfOnes(6);
244
247
  break;
245
- case constants_1.DictionarySize.Medium:
246
- this.#dictionarySizeMask = (0, functions_1.nBitsOfOnes)(5);
248
+ }
249
+ case DictionarySize.Medium: {
250
+ this.dictionarySizeMask = nBitsOfOnes(5);
247
251
  break;
248
- case constants_1.DictionarySize.Small:
249
- this.#dictionarySizeMask = (0, functions_1.nBitsOfOnes)(4);
252
+ }
253
+ case DictionarySize.Small: {
254
+ this.dictionarySizeMask = nBitsOfOnes(4);
250
255
  break;
256
+ }
251
257
  }
252
- switch (this.#compressionType) {
253
- case constants_1.Compression.Binary:
258
+ switch (this.compressionType) {
259
+ case Compression.Binary: {
254
260
  let nChCode = 0;
255
- for (let nCount = 0; nCount < 0x100; nCount++) {
256
- this.#nChBits[nCount] = 9;
257
- this.#nChCodes[nCount] = nChCode;
258
- nChCode = (0, functions_1.getLowestNBits)(16, nChCode) + 2;
261
+ for (let nCount = 0; nCount < 0x1_00; nCount++) {
262
+ this.nChBits[nCount] = 9;
263
+ this.nChCodes[nCount] = nChCode;
264
+ nChCode = getLowestNBits(16, nChCode) + 2;
259
265
  }
260
266
  break;
261
- case constants_1.Compression.Ascii:
262
- for (let nCount = 0; nCount < 0x100; nCount++) {
263
- this.#nChBits[nCount] = constants_1.ChBitsAsc[nCount] + 1;
264
- this.#nChCodes[nCount] = constants_1.ChCodeAsc[nCount] * 2;
267
+ }
268
+ case Compression.Ascii: {
269
+ for (let nCount = 0; nCount < 0x1_00; nCount++) {
270
+ this.nChBits[nCount] = ChBitsAsc[nCount] + 1;
271
+ this.nChCodes[nCount] = ChCodeAsc[nCount] * 2;
265
272
  }
266
273
  break;
274
+ }
267
275
  }
268
- let nCount = 0x100;
276
+ let nCount = 0x1_00;
269
277
  for (let i = 0; i < 0x10; i++) {
270
- for (let nCount2 = 0; nCount2 < 1 << constants_1.ExLenBits[i]; nCount2++) {
271
- this.#nChBits[nCount] = constants_1.ExLenBits[i] + constants_1.LenBits[i] + 1;
272
- this.#nChCodes[nCount] = (nCount2 << (constants_1.LenBits[i] + 1)) | (constants_1.LenCode[i] * 2) | 1;
278
+ for (let nCount2 = 0; nCount2 < 1 << ExLenBits[i]; nCount2++) {
279
+ this.nChBits[nCount] = ExLenBits[i] + LenBits[i] + 1;
280
+ this.nChCodes[nCount] = (nCount2 << (LenBits[i] + 1)) | (LenCode[i] * 2) | 1;
273
281
  nCount++;
274
282
  }
275
283
  }
276
- this.#outputBuffer.appendByte(this.#compressionType);
277
- this.#outputBuffer.appendByte(this.#dictionarySize);
278
- this.#outputBuffer.appendByte(0);
279
- this.#outBits = 0;
284
+ this.outputBuffer.appendByte(this.compressionType);
285
+ this.outputBuffer.appendByte(this.dictionarySize);
286
+ this.outputBuffer.appendByte(0);
287
+ this.outBits = 0;
280
288
  }
281
- #outputBits(nBits, bitBuffer) {
289
+ outputBits(nBits, bitBuffer) {
282
290
  if (nBits > 8) {
283
- this.#outputBits(8, bitBuffer);
291
+ this.outputBits(8, bitBuffer);
284
292
  bitBuffer = bitBuffer >> 8;
285
293
  nBits = nBits - 8;
286
294
  }
287
- const outBits = this.#outBits;
288
- const lastBytes = this.#outputBuffer.readByte(this.#outputBuffer.size() - 1);
289
- this.#outputBuffer.setByte(-1, lastBytes | (0, functions_1.getLowestNBits)(8, bitBuffer << outBits));
290
- this.#outBits = this.#outBits + nBits;
291
- if (this.#outBits > 8) {
292
- this.#outBits = (0, functions_1.getLowestNBits)(3, this.#outBits);
295
+ const { outBits } = this;
296
+ const lastBytes = this.outputBuffer.readByte(this.outputBuffer.size() - 1);
297
+ this.outputBuffer.setByte(-1, lastBytes | getLowestNBits(8, bitBuffer << outBits));
298
+ this.outBits = this.outBits + nBits;
299
+ if (this.outBits > 8) {
300
+ this.outBits = getLowestNBits(3, this.outBits);
293
301
  bitBuffer = bitBuffer >> (8 - outBits);
294
- this.#outputBuffer.appendByte((0, functions_1.getLowestNBits)(8, bitBuffer));
302
+ this.outputBuffer.appendByte(getLowestNBits(8, bitBuffer));
295
303
  }
296
304
  else {
297
- this.#outBits = (0, functions_1.getLowestNBits)(3, this.#outBits);
298
- if (this.#outBits === 0) {
299
- this.#outputBuffer.appendByte(0);
305
+ this.outBits = getLowestNBits(3, this.outBits);
306
+ if (this.outBits === 0) {
307
+ this.outputBuffer.appendByte(0);
300
308
  }
301
309
  }
302
310
  }
303
311
  }
304
- exports.Implode = Implode;
305
312
  //# sourceMappingURL=Implode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Implode.js","sourceRoot":"","sources":["../src/Implode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Implode.js","sourceRoot":"","sources":["../src/Implode.ts"],"names":[],"mappings":"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"}
@@ -1,59 +1,58 @@
1
1
  #!/usr/bin/env -S node --enable-source-maps
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const minimist_lite_1 = __importDefault(require("minimist-lite"));
8
- const helpers_1 = require("./helpers");
9
- const stream_1 = require("../stream");
10
- const index_1 = require("../index");
11
- const args = (0, minimist_lite_1.default)(process.argv.slice(2), {
2
+ import process from 'node:process';
3
+ import minimist from 'minimist-lite';
4
+ import { transformEmpty, transformIdentity, transformSplitBy, splitAt, through } from '../stream.js';
5
+ import { explode } from '../index.js';
6
+ import { getPackageVersion, parseNumberString, getInputStream, getOutputStream } from './helpers.js';
7
+ const args = minimist(process.argv.slice(2), {
12
8
  string: ['output', 'offset', 'input-buffer-size', 'output-buffer-size'],
13
9
  boolean: ['version', 'drop-before-offset', 'verbose'],
14
10
  alias: {
15
11
  v: 'version',
16
12
  },
17
13
  });
18
- const decompress = (input, output, offset, keepHeader, config) => {
19
- const leftHandler = keepHeader ? (0, stream_1.transformIdentity)() : (0, stream_1.transformEmpty)();
20
- const rightHandler = (0, index_1.explode)(config);
21
- const handler = (0, stream_1.transformSplitBy)((0, stream_1.splitAt)(offset), leftHandler, rightHandler);
22
- return new Promise((resolve, reject) => {
23
- input.pipe((0, stream_1.through)(handler).on('error', reject)).pipe(output).on('finish', resolve).on('error', reject);
24
- });
25
- };
26
- (async () => {
27
- if (args.version) {
28
- const version = await (0, helpers_1.getPackageVersion)();
29
- console.log(`node-pkware - version ${version}`);
30
- process.exit(0);
14
+ async function decompress(input, output, offset, keepHeader, config) {
15
+ let leftHandler;
16
+ if (keepHeader) {
17
+ leftHandler = transformIdentity();
31
18
  }
32
- let input;
33
- let output;
34
- try {
35
- input = await (0, helpers_1.getInputStream)(args._[0]);
36
- output = await (0, helpers_1.getOutputStream)(args.output);
19
+ else {
20
+ leftHandler = transformEmpty();
37
21
  }
38
- catch (e) {
39
- const error = e;
40
- console.error('error:', error.message);
41
- process.exit(1);
42
- }
43
- const offset = (0, helpers_1.parseNumberString)(args.offset, 0);
44
- const keepHeader = !args['drop-before-offset'];
45
- const config = {
46
- verbose: args.verbose,
47
- inputBufferSize: (0, helpers_1.parseNumberString)(args['input-buffer-size'], 0x10000),
48
- outputBufferSize: (0, helpers_1.parseNumberString)(args['output-buffer-size'], 0x40000),
49
- };
50
- decompress(input, output, offset, keepHeader, config)
51
- .then(() => {
52
- process.exit(0);
53
- })
54
- .catch((e) => {
55
- console.error(`error: ${e.message}`);
56
- process.exit(1);
22
+ const rightHandler = explode(config);
23
+ const handler = transformSplitBy(splitAt(offset), leftHandler, rightHandler);
24
+ return new Promise((resolve, reject) => {
25
+ input.pipe(through(handler).on('error', reject)).pipe(output).on('finish', resolve).on('error', reject);
57
26
  });
58
- })();
27
+ }
28
+ if (args.version) {
29
+ const version = await getPackageVersion();
30
+ console.log(`node-pkware - version ${version}`);
31
+ process.exit(0);
32
+ }
33
+ let input;
34
+ let output;
35
+ try {
36
+ input = await getInputStream(args._[0]);
37
+ output = await getOutputStream(args.output);
38
+ }
39
+ catch (error) {
40
+ console.error('error:', error.message);
41
+ process.exit(1);
42
+ }
43
+ const offset = parseNumberString(args.offset, 0);
44
+ const keepHeader = !args['drop-before-offset'];
45
+ const config = {
46
+ verbose: args.verbose,
47
+ inputBufferSize: parseNumberString(args['input-buffer-size'], 0x1_00_00),
48
+ outputBufferSize: parseNumberString(args['output-buffer-size'], 0x4_00_00),
49
+ };
50
+ try {
51
+ await decompress(input, output, offset, keepHeader, config);
52
+ process.exit(0);
53
+ }
54
+ catch (error) {
55
+ console.error('error:', error.message);
56
+ process.exit(1);
57
+ }
59
58
  //# sourceMappingURL=explode.js.map