simple-zstd 2.0.0 → 2.1.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.
@@ -1,54 +1,41 @@
1
1
  "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _PeekPassThrough_instances, _PeekPassThrough_maxBuffer, _PeekPassThrough_buffer, _PeekPassThrough_bufferedLength, _PeekPassThrough_peeked, _PeekPassThrough_peekCallback, _PeekPassThrough_swappedStream, _PeekPassThrough_ended, _PeekPassThrough_performPeek;
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
3
  const node_stream_1 = require("node:stream");
16
4
  class PeekPassThrough extends node_stream_1.Duplex {
5
+ #maxBuffer;
6
+ #buffer;
7
+ #bufferedLength;
8
+ #peeked;
9
+ #peekCallback;
10
+ #swappedStream;
11
+ #ended;
17
12
  constructor(options, peekCallback) {
18
13
  super(options);
19
- _PeekPassThrough_instances.add(this);
20
- _PeekPassThrough_maxBuffer.set(this, void 0);
21
- _PeekPassThrough_buffer.set(this, void 0);
22
- _PeekPassThrough_bufferedLength.set(this, void 0);
23
- _PeekPassThrough_peeked.set(this, void 0);
24
- _PeekPassThrough_peekCallback.set(this, void 0);
25
- _PeekPassThrough_swappedStream.set(this, void 0);
26
- _PeekPassThrough_ended.set(this, void 0);
27
- __classPrivateFieldSet(this, _PeekPassThrough_maxBuffer, options.maxBuffer || 65536, "f");
28
- __classPrivateFieldSet(this, _PeekPassThrough_buffer, [], "f");
29
- __classPrivateFieldSet(this, _PeekPassThrough_bufferedLength, 0, "f");
30
- __classPrivateFieldSet(this, _PeekPassThrough_peeked, false, "f");
31
- __classPrivateFieldSet(this, _PeekPassThrough_peekCallback, peekCallback, "f");
32
- __classPrivateFieldSet(this, _PeekPassThrough_swappedStream, null, "f");
33
- __classPrivateFieldSet(this, _PeekPassThrough_ended, false, "f");
14
+ this.#maxBuffer = options.maxBuffer || 65536;
15
+ this.#buffer = [];
16
+ this.#bufferedLength = 0;
17
+ this.#peeked = false;
18
+ this.#peekCallback = peekCallback;
19
+ this.#swappedStream = null;
20
+ this.#ended = false;
34
21
  }
35
22
  _write(chunk, encoding, callback) {
36
23
  // If we already peeked and have a swapped stream, write to it
37
- if (__classPrivateFieldGet(this, _PeekPassThrough_peeked, "f") && __classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f")) {
38
- __classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").write(chunk, encoding, callback);
24
+ if (this.#peeked && this.#swappedStream) {
25
+ this.#swappedStream.write(chunk, encoding, callback);
39
26
  return;
40
27
  }
41
28
  // If we already peeked but no swap, just pass through
42
- if (__classPrivateFieldGet(this, _PeekPassThrough_peeked, "f")) {
29
+ if (this.#peeked) {
43
30
  this.push(chunk);
44
31
  callback();
45
32
  return;
46
33
  }
47
34
  // Buffer chunks until we have enough to peek
48
- __classPrivateFieldGet(this, _PeekPassThrough_buffer, "f").push(chunk);
49
- __classPrivateFieldSet(this, _PeekPassThrough_bufferedLength, __classPrivateFieldGet(this, _PeekPassThrough_bufferedLength, "f") + chunk.length, "f");
50
- if (__classPrivateFieldGet(this, _PeekPassThrough_bufferedLength, "f") >= __classPrivateFieldGet(this, _PeekPassThrough_maxBuffer, "f")) {
51
- __classPrivateFieldGet(this, _PeekPassThrough_instances, "m", _PeekPassThrough_performPeek).call(this, callback);
35
+ this.#buffer.push(chunk);
36
+ this.#bufferedLength += chunk.length;
37
+ if (this.#bufferedLength >= this.#maxBuffer) {
38
+ this.#performPeek(callback);
52
39
  }
53
40
  else {
54
41
  callback();
@@ -56,17 +43,17 @@ class PeekPassThrough extends node_stream_1.Duplex {
56
43
  }
57
44
  _final(callback) {
58
45
  // If we haven't peeked yet and stream is ending, peek now
59
- if (!__classPrivateFieldGet(this, _PeekPassThrough_peeked, "f")) {
60
- __classPrivateFieldGet(this, _PeekPassThrough_instances, "m", _PeekPassThrough_performPeek).call(this, callback);
46
+ if (!this.#peeked) {
47
+ this.#performPeek(callback);
61
48
  }
62
- else if (__classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f")) {
49
+ else if (this.#swappedStream) {
63
50
  // End the swapped stream
64
- __classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").end(callback);
51
+ this.#swappedStream.end(callback);
65
52
  }
66
53
  else {
67
54
  // No swap - signal EOF for passthrough case
68
- if (!__classPrivateFieldGet(this, _PeekPassThrough_ended, "f")) {
69
- __classPrivateFieldSet(this, _PeekPassThrough_ended, true, "f");
55
+ if (!this.#ended) {
56
+ this.#ended = true;
70
57
  this.push(null);
71
58
  }
72
59
  callback();
@@ -74,72 +61,72 @@ class PeekPassThrough extends node_stream_1.Duplex {
74
61
  }
75
62
  _read(_size) {
76
63
  // If we have a swapped stream, resume it if paused
77
- if (__classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f")) {
78
- if (__classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").isPaused && __classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").isPaused()) {
79
- __classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").resume();
64
+ if (this.#swappedStream) {
65
+ if (this.#swappedStream.isPaused && this.#swappedStream.isPaused()) {
66
+ this.#swappedStream.resume();
80
67
  }
81
68
  }
82
69
  }
83
- _destroy(error, callback) {
84
- if (__classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f") && !__classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").destroyed) {
85
- __classPrivateFieldGet(this, _PeekPassThrough_swappedStream, "f").destroy();
86
- }
87
- callback(error);
88
- }
89
- }
90
- _PeekPassThrough_maxBuffer = new WeakMap(), _PeekPassThrough_buffer = new WeakMap(), _PeekPassThrough_bufferedLength = new WeakMap(), _PeekPassThrough_peeked = new WeakMap(), _PeekPassThrough_peekCallback = new WeakMap(), _PeekPassThrough_swappedStream = new WeakMap(), _PeekPassThrough_ended = new WeakMap(), _PeekPassThrough_instances = new WeakSet(), _PeekPassThrough_performPeek = function _PeekPassThrough_performPeek(callback) {
91
- __classPrivateFieldSet(this, _PeekPassThrough_peeked, true, "f");
92
- const peekData = Buffer.concat(__classPrivateFieldGet(this, _PeekPassThrough_buffer, "f"));
93
- // Call the peek callback to determine which stream to use
94
- __classPrivateFieldGet(this, _PeekPassThrough_peekCallback, "f").call(this, peekData, (err, swappedStream) => {
95
- if (err) {
96
- callback(err);
97
- return;
98
- }
99
- if (swappedStream) {
100
- // We have a swapped stream
101
- __classPrivateFieldSet(this, _PeekPassThrough_swappedStream, swappedStream, "f");
102
- // Pipe swapped stream's output to our output
103
- swappedStream.on('data', (chunk) => {
104
- if (!this.push(chunk)) {
105
- swappedStream.pause();
106
- }
107
- });
108
- swappedStream.on('end', () => {
109
- if (!__classPrivateFieldGet(this, _PeekPassThrough_ended, "f")) {
110
- __classPrivateFieldSet(this, _PeekPassThrough_ended, true, "f");
111
- this.push(null);
70
+ #performPeek(callback) {
71
+ this.#peeked = true;
72
+ const peekData = Buffer.concat(this.#buffer);
73
+ // Call the peek callback to determine which stream to use
74
+ this.#peekCallback(peekData, (err, swappedStream) => {
75
+ if (err) {
76
+ callback(err);
77
+ return;
78
+ }
79
+ if (swappedStream) {
80
+ // We have a swapped stream
81
+ this.#swappedStream = swappedStream;
82
+ // Pipe swapped stream's output to our output
83
+ swappedStream.on('data', (chunk) => {
84
+ if (!this.push(chunk)) {
85
+ swappedStream.pause();
86
+ }
87
+ });
88
+ swappedStream.on('end', () => {
89
+ if (!this.#ended) {
90
+ this.#ended = true;
91
+ this.push(null);
92
+ }
93
+ });
94
+ swappedStream.on('error', (streamErr) => {
95
+ this.destroy(streamErr);
96
+ });
97
+ // Resume reading when downstream is ready
98
+ this.on('drain', () => {
99
+ if (swappedStream.isPaused && swappedStream.isPaused()) {
100
+ swappedStream.resume();
101
+ }
102
+ });
103
+ // Write all buffered data to the swapped stream
104
+ for (const bufferedChunk of this.#buffer) {
105
+ swappedStream.write(bufferedChunk);
112
106
  }
113
- });
114
- swappedStream.on('error', (streamErr) => {
115
- this.destroy(streamErr);
116
- });
117
- // Resume reading when downstream is ready
118
- this.on('drain', () => {
107
+ // Ensure the swapped stream is in flowing mode
119
108
  if (swappedStream.isPaused && swappedStream.isPaused()) {
120
109
  swappedStream.resume();
121
110
  }
122
- });
123
- // Write all buffered data to the swapped stream
124
- for (const bufferedChunk of __classPrivateFieldGet(this, _PeekPassThrough_buffer, "f")) {
125
- swappedStream.write(bufferedChunk);
126
- }
127
- // Ensure the swapped stream is in flowing mode
128
- if (swappedStream.isPaused && swappedStream.isPaused()) {
129
- swappedStream.resume();
130
111
  }
131
- }
132
- else {
133
- // No swap - just push buffered data through
134
- for (const bufferedChunk of __classPrivateFieldGet(this, _PeekPassThrough_buffer, "f")) {
135
- this.push(bufferedChunk);
112
+ else {
113
+ // No swap - just push buffered data through
114
+ for (const bufferedChunk of this.#buffer) {
115
+ this.push(bufferedChunk);
116
+ }
136
117
  }
118
+ // Clear the buffer
119
+ this.#buffer = [];
120
+ this.#bufferedLength = 0;
121
+ callback();
122
+ });
123
+ }
124
+ _destroy(error, callback) {
125
+ if (this.#swappedStream && !this.#swappedStream.destroyed) {
126
+ this.#swappedStream.destroy();
137
127
  }
138
- // Clear the buffer
139
- __classPrivateFieldSet(this, _PeekPassThrough_buffer, [], "f");
140
- __classPrivateFieldSet(this, _PeekPassThrough_bufferedLength, 0, "f");
141
- callback();
142
- });
143
- };
128
+ callback(error);
129
+ }
130
+ }
144
131
  exports.default = PeekPassThrough;
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlay10cmFuc2Zvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVlay10cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBcUM7QUFVckMsTUFBcUIsZUFBZ0IsU0FBUSxvQkFBTTtJQVNqRCxZQUFZLE9BQW9CLEVBQUUsWUFBMEI7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztRQVRqQiw2Q0FBbUI7UUFDbkIsMENBQWtCO1FBQ2xCLGtEQUF3QjtRQUN4QiwwQ0FBaUI7UUFDakIsZ0RBQTRCO1FBQzVCLGlEQUE4QjtRQUM5Qix5Q0FBZ0I7UUFJZCx1QkFBQSxJQUFJLDhCQUFjLE9BQU8sQ0FBQyxTQUFTLElBQUksS0FBSyxNQUFBLENBQUM7UUFDN0MsdUJBQUEsSUFBSSwyQkFBVyxFQUFFLE1BQUEsQ0FBQztRQUNsQix1QkFBQSxJQUFJLG1DQUFtQixDQUFDLE1BQUEsQ0FBQztRQUN6Qix1QkFBQSxJQUFJLDJCQUFXLEtBQUssTUFBQSxDQUFDO1FBQ3JCLHVCQUFBLElBQUksaUNBQWlCLFlBQVksTUFBQSxDQUFDO1FBQ2xDLHVCQUFBLElBQUksa0NBQWtCLElBQUksTUFBQSxDQUFDO1FBQzNCLHVCQUFBLElBQUksMEJBQVUsS0FBSyxNQUFBLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsUUFBd0IsRUFBRSxRQUF3QztRQUN0Riw4REFBOEQ7UUFDOUQsSUFBSSx1QkFBQSxJQUFJLCtCQUFRLElBQUksdUJBQUEsSUFBSSxzQ0FBZSxFQUFFLENBQUM7WUFDeEMsdUJBQUEsSUFBSSxzQ0FBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELE9BQU87UUFDVCxDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELElBQUksdUJBQUEsSUFBSSwrQkFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFD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
132
+ //# sourceMappingURL=peek-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peek-transform.js","sourceRoot":"","sources":["../../src/peek-transform.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
1
  import { Duplex } from 'node:stream';
2
- import { SpawnOptions } from 'node:child_process';
2
+ import { ChildProcess, SpawnOptions } from 'node:child_process';
3
3
  import type { DuplexOptions } from 'node:stream';
4
+ type SpawnProcessFn = (command: string, args: string[], options?: SpawnOptions) => ChildProcess;
5
+ type NonZeroExitPolicy = boolean | ((code: number | null, signal: NodeJS.Signals | null) => boolean);
6
+ interface ProcessDuplexOptions {
7
+ command: string;
8
+ args: string[];
9
+ spawnOptions?: SpawnOptions;
10
+ streamOptions?: DuplexOptions;
11
+ nonZeroExitPolicy?: NonZeroExitPolicy;
12
+ spawnProcess?: SpawnProcessFn;
13
+ }
4
14
  export default class ProcessDuplex extends Duplex {
5
15
  #private;
6
- constructor(command: string, args: string[], spawnOptions?: SpawnOptions, streamOptions?: DuplexOptions);
16
+ constructor(options: ProcessDuplexOptions);
7
17
  _read(_size: number): void;
8
18
  _write(chunk: Buffer, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
9
19
  _final(callback: (error?: Error | null) => void): void;
10
20
  _destroy(error: Error | null, callback: (error: Error | null) => void): void;
11
21
  }
22
+ export {};
@@ -1,87 +1,101 @@
1
1
  "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _ProcessDuplex_process, _ProcessDuplex_stdoutDataHandler, _ProcessDuplex_stdoutEndHandler, _ProcessDuplex_stdoutErrorHandler, _ProcessDuplex_stdoutCloseHandler, _ProcessDuplex_stderrDataHandler, _ProcessDuplex_processExitHandler, _ProcessDuplex_processErrorHandler;
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
3
  const node_stream_1 = require("node:stream");
16
4
  const node_child_process_1 = require("node:child_process");
17
5
  class ProcessDuplex extends node_stream_1.Duplex {
18
- constructor(command, args, spawnOptions, streamOptions) {
19
- super(streamOptions);
20
- _ProcessDuplex_process.set(this, void 0);
21
- _ProcessDuplex_stdoutDataHandler.set(this, void 0);
22
- _ProcessDuplex_stdoutEndHandler.set(this, void 0);
23
- _ProcessDuplex_stdoutErrorHandler.set(this, void 0);
24
- _ProcessDuplex_stdoutCloseHandler.set(this, void 0);
25
- _ProcessDuplex_stderrDataHandler.set(this, void 0);
26
- _ProcessDuplex_processExitHandler.set(this, void 0);
27
- _ProcessDuplex_processErrorHandler.set(this, void 0);
6
+ #process;
7
+ #nonZeroExitPolicy;
8
+ #stdoutDataHandler;
9
+ #stdoutErrorHandler;
10
+ #stderrDataHandler;
11
+ #processCloseHandler;
12
+ #processErrorHandler;
13
+ constructor(options) {
14
+ super(options.streamOptions);
15
+ const { command, args, spawnOptions } = options;
16
+ const spawnProcess = options.spawnProcess ?? node_child_process_1.spawn;
17
+ this.#nonZeroExitPolicy = options.nonZeroExitPolicy;
28
18
  // Spawn the child process
29
- __classPrivateFieldSet(this, _ProcessDuplex_process, (0, node_child_process_1.spawn)(command, args, spawnOptions || {}), "f");
30
- // Forward stdout to the readable side of this duplex
31
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout) {
32
- __classPrivateFieldSet(this, _ProcessDuplex_stdoutDataHandler, (chunk) => {
19
+ this.#process = spawnProcess(command, args, spawnOptions || {});
20
+ this.#setupProcessHandlers();
21
+ }
22
+ #setupProcessHandlers() {
23
+ this.#attachStdinHandler();
24
+ this.#attachStdoutHandler();
25
+ this.#attachStderrHandler();
26
+ this.#attachLifecycleHandlers();
27
+ }
28
+ #attachStdinHandler() {
29
+ if (this.#process.stdin) {
30
+ this.#process.stdin.on('error', (err) => {
31
+ if (!this.destroyed) {
32
+ this.destroy(err);
33
+ }
34
+ });
35
+ }
36
+ }
37
+ #attachStdoutHandler() {
38
+ if (this.#process.stdout) {
39
+ this.#stdoutDataHandler = (chunk) => {
33
40
  const canPushMore = this.push(chunk);
34
41
  if (!canPushMore) {
35
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout?.pause();
42
+ this.#process.stdout?.pause();
36
43
  }
37
- }, "f");
38
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.on('data', __classPrivateFieldGet(this, _ProcessDuplex_stdoutDataHandler, "f"));
39
- __classPrivateFieldSet(this, _ProcessDuplex_stdoutEndHandler, () => {
40
- // Signal end of readable side
41
- this.push(null);
42
- }, "f");
43
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.on('end', __classPrivateFieldGet(this, _ProcessDuplex_stdoutEndHandler, "f"));
44
- __classPrivateFieldSet(this, _ProcessDuplex_stdoutErrorHandler, (err) => {
44
+ };
45
+ this.#process.stdout.on('data', this.#stdoutDataHandler);
46
+ this.#stdoutErrorHandler = (err) => {
45
47
  this.destroy(err);
46
- }, "f");
47
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.on('error', __classPrivateFieldGet(this, _ProcessDuplex_stdoutErrorHandler, "f"));
48
- __classPrivateFieldSet(this, _ProcessDuplex_stdoutCloseHandler, () => {
49
- // Ensure we signal end if not already done
50
- this.push(null);
51
- }, "f");
52
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.on('close', __classPrivateFieldGet(this, _ProcessDuplex_stdoutCloseHandler, "f"));
48
+ };
49
+ this.#process.stdout.on('error', this.#stdoutErrorHandler);
53
50
  }
54
- // Forward stderr errors
55
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stderr) {
56
- __classPrivateFieldSet(this, _ProcessDuplex_stderrDataHandler, (chunk) => {
51
+ }
52
+ #attachStderrHandler() {
53
+ if (this.#process.stderr) {
54
+ this.#stderrDataHandler = (chunk) => {
57
55
  // Emit stderr as a warning or error event
58
56
  this.emit('stderr', chunk.toString());
59
- }, "f");
60
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stderr.on('data', __classPrivateFieldGet(this, _ProcessDuplex_stderrDataHandler, "f"));
57
+ };
58
+ this.#process.stderr.on('data', this.#stderrDataHandler);
61
59
  }
62
- // Handle process exit
63
- __classPrivateFieldSet(this, _ProcessDuplex_processExitHandler, (code, signal) => {
60
+ }
61
+ #attachLifecycleHandlers() {
62
+ this.#processCloseHandler = (code, signal) => {
64
63
  this.emit('exit', code, signal);
65
- }, "f");
66
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").on('exit', __classPrivateFieldGet(this, _ProcessDuplex_processExitHandler, "f"));
64
+ // Only end readable side after successful process completion.
65
+ if (code === 0 && signal === null && !this.readableEnded) {
66
+ this.push(null);
67
+ }
68
+ else if (this.#shouldErrorOnNonZeroExit(code, signal) && !this.destroyed) {
69
+ setImmediate(() => {
70
+ if (!this.destroyed) {
71
+ this.destroy(new Error(`zstd exited non zero. code: ${code} signal: ${signal}`));
72
+ }
73
+ });
74
+ }
75
+ };
76
+ this.#process.on('close', this.#processCloseHandler);
67
77
  // Handle process errors
68
- __classPrivateFieldSet(this, _ProcessDuplex_processErrorHandler, (err) => {
78
+ this.#processErrorHandler = (err) => {
69
79
  this.destroy(err);
70
- }, "f");
71
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").on('error', __classPrivateFieldGet(this, _ProcessDuplex_processErrorHandler, "f"));
80
+ };
81
+ this.#process.on('error', this.#processErrorHandler);
82
+ }
83
+ #shouldErrorOnNonZeroExit(code, signal) {
84
+ const policy = this.#nonZeroExitPolicy;
85
+ return typeof policy === 'function' ? policy(code, signal) : policy === true;
72
86
  }
73
87
  _read(_size) {
74
88
  // Resume stdout if it was paused
75
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout && __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.isPaused()) {
76
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.resume();
89
+ if (this.#process.stdout && this.#process.stdout.isPaused()) {
90
+ this.#process.stdout.resume();
77
91
  }
78
92
  }
79
93
  _write(chunk, encoding, callback) {
80
94
  // Write to the process stdin
81
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin) {
82
- if (!__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin.write(chunk, encoding)) {
95
+ if (this.#process.stdin) {
96
+ if (!this.#process.stdin.write(chunk, encoding)) {
83
97
  // If the write buffer is full, wait for drain
84
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin.once('drain', callback);
98
+ this.#process.stdin.once('drain', callback);
85
99
  }
86
100
  else {
87
101
  callback();
@@ -93,65 +107,71 @@ class ProcessDuplex extends node_stream_1.Duplex {
93
107
  }
94
108
  _final(callback) {
95
109
  // Close stdin when the writable side is finished
96
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin) {
97
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin.end(callback);
110
+ if (this.#process.stdin) {
111
+ this.#process.stdin.end(callback);
98
112
  }
99
113
  else {
100
114
  callback();
101
115
  }
102
116
  }
103
117
  _destroy(error, callback) {
104
- // Remove all event listeners to prevent memory leaks
105
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout) {
106
- if (__classPrivateFieldGet(this, _ProcessDuplex_stdoutDataHandler, "f"))
107
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.removeListener('data', __classPrivateFieldGet(this, _ProcessDuplex_stdoutDataHandler, "f"));
108
- if (__classPrivateFieldGet(this, _ProcessDuplex_stdoutEndHandler, "f"))
109
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.removeListener('end', __classPrivateFieldGet(this, _ProcessDuplex_stdoutEndHandler, "f"));
110
- if (__classPrivateFieldGet(this, _ProcessDuplex_stdoutErrorHandler, "f"))
111
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.removeListener('error', __classPrivateFieldGet(this, _ProcessDuplex_stdoutErrorHandler, "f"));
112
- if (__classPrivateFieldGet(this, _ProcessDuplex_stdoutCloseHandler, "f"))
113
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdout.removeListener('close', __classPrivateFieldGet(this, _ProcessDuplex_stdoutCloseHandler, "f"));
114
- }
115
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stderr && __classPrivateFieldGet(this, _ProcessDuplex_stderrDataHandler, "f")) {
116
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stderr.removeListener('data', __classPrivateFieldGet(this, _ProcessDuplex_stderrDataHandler, "f"));
117
- }
118
- if (__classPrivateFieldGet(this, _ProcessDuplex_processExitHandler, "f")) {
119
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").removeListener('exit', __classPrivateFieldGet(this, _ProcessDuplex_processExitHandler, "f"));
120
- }
121
- if (__classPrivateFieldGet(this, _ProcessDuplex_processErrorHandler, "f")) {
122
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").removeListener('error', __classPrivateFieldGet(this, _ProcessDuplex_processErrorHandler, "f"));
123
- }
124
- // Kill the child process and wait for it to exit
125
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f") && !__classPrivateFieldGet(this, _ProcessDuplex_process, "f").killed) {
126
- // Close stdin first so the process receives EOF and can exit cleanly
127
- if (__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin && !__classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin.destroyed) {
128
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").stdin.end();
129
- }
130
- // Wait for the process to fully exit before calling callback
131
- const onClose = () => {
132
- clearTimeout(forceKillTimeout);
133
- callback(error);
134
- };
135
- // Set up close listener
136
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").once('close', onClose);
137
- // Kill the process (should exit quickly now that stdin is closed)
138
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").kill();
139
- // Force kill if process doesn't exit within 1 second
140
- const forceKillTimeout = setTimeout(() => {
141
- if (!__classPrivateFieldGet(this, _ProcessDuplex_process, "f").killed) {
142
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").kill('SIGKILL');
143
- }
144
- // Remove the close listener and call callback
145
- __classPrivateFieldGet(this, _ProcessDuplex_process, "f").removeListener('close', onClose);
146
- callback(error);
147
- }, 1000);
118
+ this.#removeEventListeners();
119
+ if (this.#hasExited()) {
120
+ callback(error);
121
+ return;
122
+ }
123
+ if (this.#process && !this.#process.killed) {
124
+ this.#terminateProcess(error, callback);
148
125
  }
149
126
  else {
150
- // Process already killed or doesn't exist
151
127
  callback(error);
152
128
  }
153
129
  }
130
+ #removeEventListeners() {
131
+ if (this.#process.stdout) {
132
+ if (this.#stdoutDataHandler)
133
+ this.#process.stdout.removeListener('data', this.#stdoutDataHandler);
134
+ if (this.#stdoutErrorHandler)
135
+ this.#process.stdout.removeListener('error', this.#stdoutErrorHandler);
136
+ }
137
+ if (this.#process.stderr && this.#stderrDataHandler) {
138
+ this.#process.stderr.removeListener('data', this.#stderrDataHandler);
139
+ }
140
+ if (this.#processCloseHandler) {
141
+ this.#process.removeListener('close', this.#processCloseHandler);
142
+ }
143
+ if (this.#processErrorHandler) {
144
+ this.#process.removeListener('error', this.#processErrorHandler);
145
+ }
146
+ }
147
+ #hasExited() {
148
+ return this.#process.exitCode !== null || this.#process.signalCode !== null;
149
+ }
150
+ #terminateProcess(error, callback) {
151
+ let callbackCalled = false;
152
+ const finishDestroy = () => {
153
+ if (callbackCalled)
154
+ return;
155
+ callbackCalled = true;
156
+ this.#process.removeListener('close', onClose);
157
+ callback(error);
158
+ };
159
+ if (this.#process.stdin && !this.#process.stdin.destroyed) {
160
+ this.#process.stdin.end();
161
+ }
162
+ const onClose = () => {
163
+ clearTimeout(forceKillTimeout);
164
+ finishDestroy();
165
+ };
166
+ this.#process.once('close', onClose);
167
+ this.#process.kill();
168
+ const forceKillTimeout = setTimeout(() => {
169
+ if (!this.#hasExited()) {
170
+ this.#process.kill('SIGKILL');
171
+ }
172
+ setTimeout(finishDestroy, 100);
173
+ }, 1000);
174
+ }
154
175
  }
155
- _ProcessDuplex_process = new WeakMap(), _ProcessDuplex_stdoutDataHandler = new WeakMap(), _ProcessDuplex_stdoutEndHandler = new WeakMap(), _ProcessDuplex_stdoutErrorHandler = new WeakMap(), _ProcessDuplex_stdoutCloseHandler = new WeakMap(), _ProcessDuplex_stderrDataHandler = new WeakMap(), _ProcessDuplex_processExitHandler = new WeakMap(), _ProcessDuplex_processErrorHandler = new WeakMap();
156
176
  exports.default = ProcessDuplex;
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1kdXBsZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvY2Vzcy1kdXBsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBcUM7QUFDckMsMkRBQXVFO0FBR3ZFLE1BQXFCLGFBQWMsU0FBUSxvQkFBTTtJQVUvQyxZQUNFLE9BQWUsRUFDZixJQUFjLEVBQ2QsWUFBMkIsRUFDM0IsYUFBNkI7UUFFN0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBZnZCLHlDQUF1QjtRQUN2QixtREFBNkM7UUFDN0Msa0RBQStCO1FBQy9CLG9EQUEyQztRQUMzQyxvREFBaUM7UUFDakMsbURBQTZDO1FBQzdDLG9EQUFtRjtRQUNuRixxREFBNEM7UUFVMUMsMEJBQTBCO1FBQzFCLHVCQUFBLElBQUksMEJBQVksSUFBQSwwQkFBSyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxNQUFBLENBQUM7UUFFekQscURBQXFEO1FBQ3JELElBQUksdUJBQUEsSUFBSSw4QkFBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLHVCQUFBLElBQUksb0NBQXNCLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDakIsdUJBQUEsSUFBSSw4QkFBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUMsTUFBQSxDQUFDO1lBQ0YsdUJBQUEsSUFBSSw4QkFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLHVCQUFBLElBQUksd0NBQW1CLENBQUMsQ0FBQztZQUV6RCx1QkFBQSxJQUFJLG1DQUFxQixHQUFHLEVBQUU7Z0JBQzVCLDhCQUE4QjtnQkFDOUIsSUFBSSxD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
177
+ //# sourceMappingURL=process-duplex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-duplex.js","sourceRoot":"","sources":["../../src/process-duplex.ts"],"names":[],"mappings":"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"}