@push.rocks/smartarchive 4.0.13 → 4.0.16

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartarchive',
6
- version: '4.0.13',
6
+ version: '4.0.16',
7
7
  description: 'work with archives'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSwwQkFBMEI7SUFDaEMsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLG9CQUFvQjtDQUNsQyxDQUFBIn0=
@@ -47,12 +47,16 @@ export function unbzip2Stream() {
47
47
  catch (e) {
48
48
  console.error(e);
49
49
  broken = true;
50
- return false;
51
50
  }
52
51
  };
52
+ let counter = 0;
53
53
  return new plugins.smartstream.SmartDuplex({
54
+ objectMode: true,
55
+ name: 'bzip2',
56
+ // debug: true,
57
+ highWaterMark: 1,
54
58
  writeFunction: async function (data, streamTools) {
55
- //console.error('received', data.length,'bytes in', typeof data);
59
+ // console.log(`got chunk ${counter++}`)
56
60
  bufferQueue.push(data);
57
61
  hasBytes += data.length;
58
62
  if (bitReader === null) {
@@ -63,6 +67,10 @@ export function unbzip2Stream() {
63
67
  while (!broken && hasBytes - bitReader.bytesRead + 1 >= (25000 + 100000 * blockSize || 4)) {
64
68
  //console.error('decompressing with', hasBytes - bitReader.bytesRead + 1, 'bytes in buffer');
65
69
  const result = await decompressAndPush();
70
+ if (!result) {
71
+ continue;
72
+ }
73
+ // console.log(result.toString());
66
74
  await streamTools.push(result);
67
75
  }
68
76
  },
@@ -70,14 +78,13 @@ export function unbzip2Stream() {
70
78
  //console.error(x,'last compressing with', hasBytes, 'bytes in buffer');
71
79
  while (!broken && bitReader && hasBytes > bitReader.bytesRead) {
72
80
  const result = await decompressAndPush();
73
- streamTools.push(result);
81
+ await streamTools.push(result);
74
82
  }
75
83
  if (!broken) {
76
84
  if (streamCRC !== null)
77
85
  this.emit('error', new Error('input stream ended prematurely'));
78
- this.queue(null);
79
86
  }
80
87
  },
81
88
  });
82
89
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9iemlwMi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLFVBQVUsYUFBYTtJQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ2xDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNyQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztJQUVyQixTQUFTLGVBQWU7UUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLFNBQVMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDZjthQUFNO1lBQ0wsSUFBSSxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDO1lBRUYsU0FBUyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzVFLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtnQkFDdEIsOEJBQThCO2dCQUM5QixTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE9BQU87YUFDUjtpQkFBTTtnQkFDTCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNuQyxJQUFJLE1BQU07WUFBRSxPQUFPO1FBQ25CLElBQUk7WUFDRixNQUFNLFdBQVcsR0FBRyxlQUFlLEVBQUUsQ0FBQztZQUN0QyxJQUFJLFdBQVcsRUFBRTtnQkFDZixTQUFTLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQzthQUNqQztZQUNELE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ3pDLGFBQWEsRUFBRSxLQUFLLFdBQVcsSUFBSSxFQUFFLFdBQVc7WUFDOUMsaUVBQWlFO1lBQ2pFLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDeEIsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO2dCQUN0QixTQUFTLEdBQUcsV0FBVyxDQUFDO29CQUN0QixPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUNELE9BQU8sQ0FBQyxNQUFNLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pGLDZGQUE2RjtnQkFDN0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDO1FBQ0QsYUFBYSxFQUFFLEtBQUssV0FBVyxXQUFXO1lBQ3hDLHdFQUF3RTtZQUN4RSxPQUFPLENBQUMsTUFBTSxJQUFJLFNBQVMsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxJQUFJLFNBQVMsS0FBSyxJQUFJO29CQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztnQkFDeEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQjtRQUNILENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIn0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9iemlwMi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLFVBQVUsYUFBYTtJQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ2xDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNyQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztJQUVyQixTQUFTLGVBQWU7UUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLFNBQVMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDZjthQUFNO1lBQ0wsSUFBSSxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDO1lBRUYsU0FBUyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxH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
@@ -5,7 +5,7 @@ import * as plugins from './plugins.js';
5
5
  export interface IAnalyzedResult {
6
6
  fileType: plugins.fileType.FileTypeResult;
7
7
  isArchive: boolean;
8
- resultStream: plugins.smartstream.PassThrough;
8
+ resultStream: plugins.smartstream.SmartDuplex;
9
9
  decompressionStream: plugins.stream.Transform | plugins.stream.Duplex | plugins.tarStream.Extract;
10
10
  }
11
11
  export declare class ArchiveAnalyzer {
@@ -25,12 +25,12 @@ export class ArchiveAnalyzer {
25
25
  return this.smartArchiveRef.tarTools.getDecompressionStream(); // replace with your own tar decompression stream
26
26
  default:
27
27
  // Handle unsupported formats or no decompression needed
28
- return new plugins.smartstream.PassThrough();
28
+ return plugins.smartstream.createPassThrough();
29
29
  }
30
30
  }
31
31
  getAnalyzedStream() {
32
32
  let firstRun = true;
33
- const resultStream = new plugins.smartstream.PassThrough();
33
+ const resultStream = plugins.smartstream.createPassThrough();
34
34
  const analyzerstream = new plugins.smartstream.SmartDuplex({
35
35
  readableObjectMode: true,
36
36
  writeFunction: async (chunkArg, streamtools) => {
@@ -45,8 +45,7 @@ export class ArchiveAnalyzer {
45
45
  resultStream,
46
46
  decompressionStream,
47
47
  };
48
- streamtools.push(result);
49
- streamtools.push(null);
48
+ await streamtools.push(result);
50
49
  return null;
51
50
  }
52
51
  },
@@ -58,4 +57,4 @@ export class ArchiveAnalyzer {
58
57
  return analyzerstream;
59
58
  }
60
59
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hcmNoaXZlYW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmFyY2hpdmVhbmFseXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVN4QyxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFZLGtCQUFnQztRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBZ0IsSUFBSSxHQUFHLENBQUM7WUFDNUMsaUJBQWlCO1lBQ2pCLDhCQUE4QjtZQUM5QixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLDZCQUE2QjtZQUM3QixxQkFBcUI7WUFDckIsb0NBQW9DO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFHTyxLQUFLLENBQUMsc0JBQXNCLENBQ2xDLFdBQW9EO1FBRXBELFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDakUsS0FBSyxxQkFBcUI7Z0JBQ3hCLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsbURBQW1EO1lBQzVILEtBQUssbUJBQW1CO2dCQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxpREFBaUQ7WUFDbEg7Z0JBQ0Usd0RBQXdEO2dCQUN4RCxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRCxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUEwQjtZQUNsRixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxXQUFXLEVBQUUsRUFBRTtnQkFDckQsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxJQUFXLENBQUMsQ0FBQztnQkFDckYsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDakIsTUFBTSxNQUFNLEdBQW9CO3dCQUM5QixRQUFRO3dCQUNSLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO3dCQUN2RCxZQUFZO3dCQUNaLG1CQUFtQjtxQkFDcEIsQ0FBQztvQkFDRixXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QixPQUFPLElBQUksQ0FBQztpQkFDYjtZQUNILENBQUM7WUFDRCxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUM3QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0NBQ0YifQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hcmNoaXZlYW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmFyY2hpdmVhbmFseXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVN4QyxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFZLGtCQUFnQztRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBZ0IsSUFBSSxHQUFHLENBQUM7WUFDNUMsaUJBQWlCO1lBQ2pCLDhCQUE4QjtZQUM5QixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLDZCQUE2QjtZQUM3QixxQkFBcUI7WUFDckIsb0NBQW9DO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFHTyxLQUFLLENBQUMsc0JBQXNCLENBQ2xDLFdBQW9EO1FBRXBELFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDakUsS0FBSyxxQkFBcUI7Z0JBQ3hCLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsbURBQW1EO1lBQzVILEtBQUssbUJBQW1CO2dCQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxpREFBaUQ7WUFDbEg7Z0JBQ0Usd0RBQXdEO2dCQUN4RCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3RCxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUEwQjtZQUNsRixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxXQUFXLEVBQUUsRUFBRTtnQkFDckQsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxJQUFXLENBQUMsQ0FBQztnQkFDckYsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDakIsTUFBTSxNQUFNLEdBQW9CO3dCQUM5QixRQUFRO3dCQUNSLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO3dCQUN2RCxZQUFZO3dCQUNaLG1CQUFtQjtxQkFDcEIsQ0FBQztvQkFDRixNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9CLE9BQU8sSUFBSSxDQUFDO2lCQUNiO1lBQ0gsQ0FBQztZQUNELGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartarchive",
3
- "version": "4.0.13",
3
+ "version": "4.0.16",
4
4
  "description": "work with archives",
5
5
  "main": "dist_ts/index.js",
6
6
  "typings": "dist_ts/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  "@push.rocks/smartpromise": "^4.0.3",
27
27
  "@push.rocks/smartrequest": "^2.0.21",
28
28
  "@push.rocks/smartrx": "^3.0.7",
29
- "@push.rocks/smartstream": "^3.0.25",
29
+ "@push.rocks/smartstream": "^3.0.27",
30
30
  "@push.rocks/smartunique": "^3.0.6",
31
31
  "@push.rocks/smarturl": "^3.0.7",
32
32
  "@types/tar-stream": "^3.1.3",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartarchive',
6
- version: '4.0.13',
6
+ version: '4.0.16',
7
7
  description: 'work with archives'
8
8
  }
package/ts/bzip2/index.ts CHANGED
@@ -49,13 +49,16 @@ export function unbzip2Stream() {
49
49
  } catch (e) {
50
50
  console.error(e);
51
51
  broken = true;
52
- return false;
53
52
  }
54
53
  };
55
-
54
+ let counter = 0;
56
55
  return new plugins.smartstream.SmartDuplex({
56
+ objectMode: true,
57
+ name: 'bzip2',
58
+ // debug: true,
59
+ highWaterMark: 1,
57
60
  writeFunction: async function (data, streamTools) {
58
- //console.error('received', data.length,'bytes in', typeof data);
61
+ // console.log(`got chunk ${counter++}`)
59
62
  bufferQueue.push(data);
60
63
  hasBytes += data.length;
61
64
  if (bitReader === null) {
@@ -66,6 +69,10 @@ export function unbzip2Stream() {
66
69
  while (!broken && hasBytes - bitReader.bytesRead + 1 >= (25000 + 100000 * blockSize || 4)) {
67
70
  //console.error('decompressing with', hasBytes - bitReader.bytesRead + 1, 'bytes in buffer');
68
71
  const result = await decompressAndPush();
72
+ if (!result) {
73
+ continue;
74
+ }
75
+ // console.log(result.toString());
69
76
  await streamTools.push(result);
70
77
  }
71
78
  },
@@ -73,11 +80,10 @@ export function unbzip2Stream() {
73
80
  //console.error(x,'last compressing with', hasBytes, 'bytes in buffer');
74
81
  while (!broken && bitReader && hasBytes > bitReader.bytesRead) {
75
82
  const result = await decompressAndPush();
76
- streamTools.push(result);
83
+ await streamTools.push(result);
77
84
  }
78
85
  if (!broken) {
79
86
  if (streamCRC !== null) this.emit('error', new Error('input stream ended prematurely'));
80
- this.queue(null);
81
87
  }
82
88
  },
83
89
  });
@@ -4,7 +4,7 @@ import * as plugins from './plugins.js';
4
4
  export interface IAnalyzedResult {
5
5
  fileType: plugins.fileType.FileTypeResult;
6
6
  isArchive: boolean;
7
- resultStream: plugins.smartstream.PassThrough;
7
+ resultStream: plugins.smartstream.SmartDuplex;
8
8
  decompressionStream: plugins.stream.Transform | plugins.stream.Duplex | plugins.tarStream.Extract;
9
9
  }
10
10
 
@@ -42,13 +42,13 @@ export class ArchiveAnalyzer {
42
42
  return this.smartArchiveRef.tarTools.getDecompressionStream(); // replace with your own tar decompression stream
43
43
  default:
44
44
  // Handle unsupported formats or no decompression needed
45
- return new plugins.smartstream.PassThrough();
45
+ return plugins.smartstream.createPassThrough();
46
46
  }
47
47
  }
48
48
 
49
49
  public getAnalyzedStream() {
50
50
  let firstRun = true;
51
- const resultStream = new plugins.smartstream.PassThrough();
51
+ const resultStream = plugins.smartstream.createPassThrough();
52
52
  const analyzerstream = new plugins.smartstream.SmartDuplex<Buffer, IAnalyzedResult>({
53
53
  readableObjectMode: true,
54
54
  writeFunction: async (chunkArg: Buffer, streamtools) => {
@@ -63,8 +63,7 @@ export class ArchiveAnalyzer {
63
63
  resultStream,
64
64
  decompressionStream,
65
65
  };
66
- streamtools.push(result);
67
- streamtools.push(null);
66
+ await streamtools.push(result);
68
67
  return null;
69
68
  }
70
69
  },