@procwire/transport 0.1.1 → 0.2.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.
Files changed (70) hide show
  1. package/README.md +130 -4
  2. package/dist/channel/builder.d.ts +23 -0
  3. package/dist/channel/builder.d.ts.map +1 -1
  4. package/dist/channel/builder.js +46 -0
  5. package/dist/channel/builder.js.map +1 -1
  6. package/dist/channel/index.d.ts +1 -1
  7. package/dist/channel/index.d.ts.map +1 -1
  8. package/dist/channel/index.js +1 -1
  9. package/dist/channel/index.js.map +1 -1
  10. package/dist/channel/quickstart.d.ts.map +1 -1
  11. package/dist/channel/quickstart.js +16 -10
  12. package/dist/channel/quickstart.js.map +1 -1
  13. package/dist/channel/request-channel.d.ts +10 -1
  14. package/dist/channel/request-channel.d.ts.map +1 -1
  15. package/dist/channel/request-channel.js +161 -35
  16. package/dist/channel/request-channel.js.map +1 -1
  17. package/dist/channel/types.d.ts +135 -7
  18. package/dist/channel/types.d.ts.map +1 -1
  19. package/dist/framing/length-prefixed.d.ts +5 -1
  20. package/dist/framing/length-prefixed.d.ts.map +1 -1
  21. package/dist/framing/length-prefixed.js +94 -15
  22. package/dist/framing/length-prefixed.js.map +1 -1
  23. package/dist/framing/line-delimited.d.ts +4 -1
  24. package/dist/framing/line-delimited.d.ts.map +1 -1
  25. package/dist/framing/line-delimited.js +89 -23
  26. package/dist/framing/line-delimited.js.map +1 -1
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/process/handle.d.ts.map +1 -1
  32. package/dist/process/handle.js.map +1 -1
  33. package/dist/process/manager.d.ts +16 -0
  34. package/dist/process/manager.d.ts.map +1 -1
  35. package/dist/process/manager.js +140 -81
  36. package/dist/process/manager.js.map +1 -1
  37. package/dist/process/types.d.ts +110 -1
  38. package/dist/process/types.d.ts.map +1 -1
  39. package/dist/protocol/jsonrpc.d.ts.map +1 -1
  40. package/dist/protocol/jsonrpc.js.map +1 -1
  41. package/dist/protocol/simple.d.ts.map +1 -1
  42. package/dist/protocol/simple.js.map +1 -1
  43. package/dist/serialization/json.d.ts.map +1 -1
  44. package/dist/serialization/json.js.map +1 -1
  45. package/dist/transport/socket-server.d.ts.map +1 -1
  46. package/dist/transport/socket-server.js.map +1 -1
  47. package/dist/transport/socket-transport.d.ts +11 -13
  48. package/dist/transport/socket-transport.d.ts.map +1 -1
  49. package/dist/transport/socket-transport.js +57 -26
  50. package/dist/transport/socket-transport.js.map +1 -1
  51. package/dist/transport/stdio-transport.d.ts +12 -19
  52. package/dist/transport/stdio-transport.d.ts.map +1 -1
  53. package/dist/transport/stdio-transport.js +54 -33
  54. package/dist/transport/stdio-transport.js.map +1 -1
  55. package/dist/utils/index.d.ts +1 -0
  56. package/dist/utils/index.d.ts.map +1 -1
  57. package/dist/utils/index.js +1 -0
  58. package/dist/utils/index.js.map +1 -1
  59. package/dist/utils/metrics.d.ts +6 -0
  60. package/dist/utils/metrics.d.ts.map +1 -0
  61. package/dist/utils/metrics.js +2 -0
  62. package/dist/utils/metrics.js.map +1 -0
  63. package/dist/utils/pipe-path.d.ts +8 -2
  64. package/dist/utils/pipe-path.d.ts.map +1 -1
  65. package/dist/utils/pipe-path.js +27 -4
  66. package/dist/utils/pipe-path.js.map +1 -1
  67. package/dist/utils/platform.d.ts.map +1 -1
  68. package/dist/utils/platform.js +1 -1
  69. package/dist/utils/platform.js.map +1 -1
  70. package/package.json +6 -5
@@ -17,11 +17,17 @@ import { FramingError } from "../utils/errors.js";
17
17
  export class LengthPrefixedFraming {
18
18
  static HEADER_SIZE = 4;
19
19
  maxMessageSize;
20
- buffer;
20
+ buffers;
21
+ totalLength;
21
22
  expectedLength;
22
23
  constructor(options = {}) {
24
+ // Validate options
25
+ if (options.maxMessageSize !== undefined && options.maxMessageSize <= 0) {
26
+ throw new Error("LengthPrefixedFraming: maxMessageSize must be positive");
27
+ }
23
28
  this.maxMessageSize = options.maxMessageSize ?? 32 * 1024 * 1024; // 32MB
24
- this.buffer = Buffer.allocUnsafe(0);
29
+ this.buffers = [];
30
+ this.totalLength = 0;
25
31
  this.expectedLength = null;
26
32
  }
27
33
  /**
@@ -37,19 +43,26 @@ export class LengthPrefixedFraming {
37
43
  * Buffers partial headers and payloads.
38
44
  */
39
45
  decode(chunk) {
40
- // Append chunk to buffer
41
- this.buffer = Buffer.concat([this.buffer, chunk]);
46
+ // Append chunk to buffer list
47
+ if (chunk.length > 0) {
48
+ this.buffers.push(chunk);
49
+ this.totalLength += chunk.length;
50
+ }
42
51
  const frames = [];
43
52
  // Process all complete frames in buffer
44
53
  while (true) {
45
54
  // Do we need to read the header?
46
55
  if (this.expectedLength === null) {
47
56
  // Need at least HEADER_SIZE bytes
48
- if (this.buffer.length < LengthPrefixedFraming.HEADER_SIZE) {
57
+ if (this.totalLength < LengthPrefixedFraming.HEADER_SIZE) {
49
58
  break; // Wait for more data
50
59
  }
51
60
  // Read length from header
52
- const length = this.buffer.readUInt32BE(0);
61
+ const header = this.peekBytes(LengthPrefixedFraming.HEADER_SIZE);
62
+ if (!header) {
63
+ break;
64
+ }
65
+ const length = header.readUInt32BE(0);
53
66
  // Validate length
54
67
  if (length > this.maxMessageSize) {
55
68
  const error = new FramingError(`Message length ${length} exceeds maximum ${this.maxMessageSize}`);
@@ -57,23 +70,22 @@ export class LengthPrefixedFraming {
57
70
  throw error;
58
71
  }
59
72
  this.expectedLength = length;
60
- this.buffer = this.buffer.subarray(LengthPrefixedFraming.HEADER_SIZE);
73
+ this.consumeBytes(LengthPrefixedFraming.HEADER_SIZE);
61
74
  }
62
75
  // Do we have the complete payload?
63
- if (this.buffer.length < this.expectedLength) {
76
+ if (this.totalLength < this.expectedLength) {
64
77
  break; // Wait for more data
65
78
  }
66
79
  // Extract frame
67
- const frame = this.buffer.subarray(0, this.expectedLength);
80
+ const frame = this.takeBytes(this.expectedLength);
68
81
  frames.push(frame);
69
82
  // Move past this frame
70
- this.buffer = this.buffer.subarray(this.expectedLength);
71
83
  this.expectedLength = null;
72
84
  }
73
85
  // Validate buffer doesn't grow unbounded
74
86
  const maxBufferSize = LengthPrefixedFraming.HEADER_SIZE + this.maxMessageSize;
75
- if (this.buffer.length > maxBufferSize) {
76
- const error = new FramingError(`Buffer size ${this.buffer.length} exceeds maximum ${maxBufferSize}`);
87
+ if (this.totalLength > maxBufferSize) {
88
+ const error = new FramingError(`Buffer size ${this.totalLength} exceeds maximum ${maxBufferSize}`);
77
89
  this.reset();
78
90
  throw error;
79
91
  }
@@ -83,20 +95,87 @@ export class LengthPrefixedFraming {
83
95
  * Resets internal buffer state.
84
96
  */
85
97
  reset() {
86
- this.buffer = Buffer.allocUnsafe(0);
98
+ this.buffers = [];
99
+ this.totalLength = 0;
87
100
  this.expectedLength = null;
88
101
  }
89
102
  /**
90
103
  * Returns true if there is buffered partial data.
91
104
  */
92
105
  hasBufferedData() {
93
- return this.buffer.length > 0 || this.expectedLength !== null;
106
+ return this.totalLength > 0 || this.expectedLength !== null;
94
107
  }
95
108
  /**
96
109
  * Returns current buffer size in bytes.
97
110
  */
98
111
  getBufferSize() {
99
- return this.buffer.length;
112
+ return this.totalLength;
113
+ }
114
+ peekBytes(length) {
115
+ if (length > this.totalLength || this.buffers.length === 0) {
116
+ return null;
117
+ }
118
+ const first = this.buffers[0];
119
+ if (first.length >= length) {
120
+ return first.subarray(0, length);
121
+ }
122
+ const parts = [];
123
+ let remaining = length;
124
+ for (const buffer of this.buffers) {
125
+ const slice = buffer.subarray(0, Math.min(buffer.length, remaining));
126
+ parts.push(slice);
127
+ remaining -= slice.length;
128
+ if (remaining === 0) {
129
+ break;
130
+ }
131
+ }
132
+ return Buffer.concat(parts, length);
133
+ }
134
+ takeBytes(length) {
135
+ if (length === 0) {
136
+ return Buffer.allocUnsafe(0);
137
+ }
138
+ if (length > this.totalLength) {
139
+ return Buffer.allocUnsafe(0);
140
+ }
141
+ const first = this.buffers[0];
142
+ if (first.length >= length) {
143
+ const slice = first.subarray(0, length);
144
+ this.consumeBytes(length);
145
+ return slice;
146
+ }
147
+ const parts = [];
148
+ let remaining = length;
149
+ while (remaining > 0 && this.buffers.length > 0) {
150
+ const buffer = this.buffers[0];
151
+ if (remaining >= buffer.length) {
152
+ parts.push(buffer);
153
+ this.buffers.shift();
154
+ remaining -= buffer.length;
155
+ }
156
+ else {
157
+ parts.push(buffer.subarray(0, remaining));
158
+ this.buffers[0] = buffer.subarray(remaining);
159
+ remaining = 0;
160
+ }
161
+ }
162
+ this.totalLength -= length;
163
+ return parts.length === 1 ? parts[0] : Buffer.concat(parts, length);
164
+ }
165
+ consumeBytes(length) {
166
+ let remaining = length;
167
+ while (remaining > 0 && this.buffers.length > 0) {
168
+ const buffer = this.buffers[0];
169
+ if (remaining >= buffer.length) {
170
+ this.buffers.shift();
171
+ remaining -= buffer.length;
172
+ }
173
+ else {
174
+ this.buffers[0] = buffer.subarray(remaining);
175
+ remaining = 0;
176
+ }
177
+ }
178
+ this.totalLength -= length;
100
179
  }
101
180
  }
102
181
  //# sourceMappingURL=length-prefixed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"length-prefixed.js","sourceRoot":"","sources":["../../src/framing/length-prefixed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"length-prefixed.js","sourceRoot":"","sources":["../../src/framing/length-prefixed.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,8 @@ export declare class LineDelimitedFraming implements FramingCodec {
33
33
  private readonly delimiter;
34
34
  private readonly maxBufferSize;
35
35
  private readonly stripDelimiter;
36
- private buffer;
36
+ private buffers;
37
+ private totalLength;
37
38
  constructor(options?: LineDelimitedFramingOptions);
38
39
  /**
39
40
  * Encodes a payload with delimiter.
@@ -57,5 +58,7 @@ export declare class LineDelimitedFraming implements FramingCodec {
57
58
  * Returns current buffer size in bytes.
58
59
  */
59
60
  getBufferSize(): number;
61
+ private buildFrame;
62
+ private compactBuffers;
60
63
  }
61
64
  //# sourceMappingURL=line-delimited.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"line-delimited.d.ts","sourceRoot":"","sources":["../../src/framing/line-delimited.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,GAAE,2BAAgC;IAOrD;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAa/B;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA0C/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"line-delimited.d.ts","sourceRoot":"","sources":["../../src/framing/line-delimited.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,2BAAgC;IAgBrD;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAa/B;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA6D/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,UAAU;IA8BlB,OAAO,CAAC,cAAc;CA4BvB"}
@@ -15,12 +15,21 @@ export class LineDelimitedFraming {
15
15
  delimiter;
16
16
  maxBufferSize;
17
17
  stripDelimiter;
18
- buffer;
18
+ buffers;
19
+ totalLength;
19
20
  constructor(options = {}) {
21
+ // Validate options
22
+ if (options.delimiter !== undefined && (options.delimiter < 0 || options.delimiter > 255)) {
23
+ throw new Error("LineDelimitedFraming: delimiter must be a byte value (0-255)");
24
+ }
25
+ if (options.maxBufferSize !== undefined && options.maxBufferSize <= 0) {
26
+ throw new Error("LineDelimitedFraming: maxBufferSize must be positive");
27
+ }
20
28
  this.delimiter = options.delimiter ?? 0x0a; // '\n'
21
29
  this.maxBufferSize = options.maxBufferSize ?? 8 * 1024 * 1024; // 8MB
22
30
  this.stripDelimiter = options.stripDelimiter ?? true;
23
- this.buffer = Buffer.allocUnsafe(0);
31
+ this.buffers = [];
32
+ this.totalLength = 0;
24
33
  }
25
34
  /**
26
35
  * Encodes a payload with delimiter.
@@ -42,53 +51,110 @@ export class LineDelimitedFraming {
42
51
  * Buffers partial data until delimiter is found.
43
52
  */
44
53
  decode(chunk) {
45
- // Append chunk to buffer
46
- this.buffer = Buffer.concat([this.buffer, chunk]);
54
+ // Append chunk to buffer list
55
+ if (chunk.length > 0) {
56
+ this.buffers.push(chunk);
57
+ this.totalLength += chunk.length;
58
+ }
47
59
  // Check buffer size limit
48
- if (this.buffer.length > this.maxBufferSize) {
49
- const error = new FramingError(`Buffer size ${this.buffer.length} exceeds maximum ${this.maxBufferSize}`);
60
+ if (this.totalLength > this.maxBufferSize) {
61
+ const error = new FramingError(`Buffer size ${this.totalLength} exceeds maximum ${this.maxBufferSize}`);
50
62
  this.reset();
51
63
  throw error;
52
64
  }
53
65
  const frames = [];
54
- let searchStart = 0;
66
+ let frameStartBufferIndex = 0;
67
+ let frameStartOffset = 0;
68
+ let bufferIndex = 0;
69
+ let searchOffset = 0;
55
70
  // Find all complete frames (terminated by delimiter)
56
- while (searchStart < this.buffer.length) {
57
- const delimiterIndex = this.buffer.indexOf(this.delimiter, searchStart);
71
+ while (bufferIndex < this.buffers.length) {
72
+ const buffer = this.buffers[bufferIndex];
73
+ const delimiterIndex = buffer.indexOf(this.delimiter, searchOffset);
58
74
  if (delimiterIndex === -1) {
59
- // No more delimiters found
60
- break;
75
+ bufferIndex++;
76
+ searchOffset = 0;
77
+ continue;
61
78
  }
62
- // Extract frame
63
- const frameEnd = this.stripDelimiter ? delimiterIndex : delimiterIndex + 1;
64
- const frame = this.buffer.subarray(searchStart, frameEnd);
65
- frames.push(frame);
79
+ const frameEndOffset = this.stripDelimiter ? delimiterIndex : delimiterIndex + 1;
80
+ frames.push(this.buildFrame(frameStartBufferIndex, frameStartOffset, bufferIndex, frameEndOffset));
66
81
  // Move past delimiter
67
- searchStart = delimiterIndex + 1;
68
- }
69
- // Keep remaining data in buffer
70
- if (searchStart > 0) {
71
- this.buffer = this.buffer.subarray(searchStart);
82
+ if (delimiterIndex + 1 < buffer.length) {
83
+ frameStartBufferIndex = bufferIndex;
84
+ frameStartOffset = delimiterIndex + 1;
85
+ searchOffset = frameStartOffset;
86
+ }
87
+ else {
88
+ frameStartBufferIndex = bufferIndex + 1;
89
+ frameStartOffset = 0;
90
+ bufferIndex = frameStartBufferIndex;
91
+ searchOffset = 0;
92
+ }
72
93
  }
94
+ this.compactBuffers(frameStartBufferIndex, frameStartOffset);
73
95
  return frames;
74
96
  }
75
97
  /**
76
98
  * Resets internal buffer state.
77
99
  */
78
100
  reset() {
79
- this.buffer = Buffer.allocUnsafe(0);
101
+ this.buffers = [];
102
+ this.totalLength = 0;
80
103
  }
81
104
  /**
82
105
  * Returns true if there is buffered partial data.
83
106
  */
84
107
  hasBufferedData() {
85
- return this.buffer.length > 0;
108
+ return this.totalLength > 0;
86
109
  }
87
110
  /**
88
111
  * Returns current buffer size in bytes.
89
112
  */
90
113
  getBufferSize() {
91
- return this.buffer.length;
114
+ return this.totalLength;
115
+ }
116
+ buildFrame(startIndex, startOffset, endIndex, endOffset) {
117
+ if (startIndex === endIndex) {
118
+ return this.buffers[startIndex].subarray(startOffset, endOffset);
119
+ }
120
+ const parts = [];
121
+ let totalLength = 0;
122
+ const first = this.buffers[startIndex].subarray(startOffset);
123
+ parts.push(first);
124
+ totalLength += first.length;
125
+ for (let i = startIndex + 1; i < endIndex; i++) {
126
+ const buffer = this.buffers[i];
127
+ parts.push(buffer);
128
+ totalLength += buffer.length;
129
+ }
130
+ const last = this.buffers[endIndex].subarray(0, endOffset);
131
+ parts.push(last);
132
+ totalLength += last.length;
133
+ return Buffer.concat(parts, totalLength);
134
+ }
135
+ compactBuffers(startIndex, startOffset) {
136
+ if (startIndex === 0 && startOffset === 0) {
137
+ return;
138
+ }
139
+ if (startIndex >= this.buffers.length) {
140
+ this.buffers = [];
141
+ this.totalLength = 0;
142
+ return;
143
+ }
144
+ const nextBuffers = [];
145
+ let nextLength = 0;
146
+ for (let i = startIndex; i < this.buffers.length; i++) {
147
+ let buffer = this.buffers[i];
148
+ if (i === startIndex && startOffset > 0) {
149
+ buffer = buffer.subarray(startOffset);
150
+ }
151
+ if (buffer.length > 0) {
152
+ nextBuffers.push(buffer);
153
+ nextLength += buffer.length;
154
+ }
155
+ }
156
+ this.buffers = nextBuffers;
157
+ this.totalLength = nextLength;
92
158
  }
93
159
  }
94
160
  //# sourceMappingURL=line-delimited.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"line-delimited.js","sourceRoot":"","sources":["../../src/framing/line-delimited.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"line-delimited.js","sourceRoot":"","sources":["../../src/framing/line-delimited.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  /**
2
+ *
3
+ *
2
4
  * @procwire/transport
3
5
  *
4
6
  * Core IPC transport library with zero runtime dependencies.
@@ -13,6 +15,7 @@
13
15
  * - Process: Child process lifecycle management
14
16
  *
15
17
  * @packageDocumentation
18
+ * @module Transport
16
19
  */
17
20
  export * from "./transport/index.js";
18
21
  export * from "./framing/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  /**
2
+ *
3
+ *
2
4
  * @procwire/transport
3
5
  *
4
6
  * Core IPC transport library with zero runtime dependencies.
@@ -13,6 +15,7 @@
13
15
  * - Process: Child process lifecycle management
14
16
  *
15
17
  * @packageDocumentation
18
+ * @module Transport
16
19
  */
17
20
  // Core types
18
21
  export * from "./transport/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,aAAa;AACb,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,YAAY;AACZ,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,aAAa;AACb,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,YAAY;AACZ,cAAc,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/process/handle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,cAAc,EAC/B,mBAAmB,EACnB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;GAGG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;gBAGhE,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,cAAc,EAAE,OAAO,EACvB,WAAW,GAAE,OAAO,GAAG,IAAW;IASpC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,WAAW,IAAI,OAAO,GAAG,IAAI,CAEhC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAUtC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInF;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;OAGG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;IAOnB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACpC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC9C,WAAW;IAId;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI1D;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAG9B"}
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/process/handle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,cAAc,EAC/B,mBAAmB,EACnB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;GAGG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;gBAGhE,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,cAAc,EAAE,OAAO,EACvB,WAAW,GAAE,OAAO,GAAG,IAAW;IASpC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,WAAW,IAAI,OAAO,GAAG,IAAI,CAEhC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAUtC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInF;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1F;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACpC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC9C,WAAW;IAId;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI1D;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAG9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/process/handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/process/handle.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,18 @@ export declare class ProcessManager implements IProcessManager {
9
9
  private readonly config;
10
10
  private readonly processes;
11
11
  private readonly events;
12
+ private signalHandler;
12
13
  constructor(config?: ProcessManagerConfig);
14
+ /**
15
+ * Sets up signal handlers for graceful shutdown.
16
+ * Called automatically if handleSignals is enabled.
17
+ */
18
+ private setupSignalHandlers;
19
+ /**
20
+ * Removes signal handlers.
21
+ * Useful for cleanup in tests or when you want to handle signals differently.
22
+ */
23
+ removeSignalHandlers(): void;
13
24
  /**
14
25
  * Spawns a new managed process.
15
26
  */
@@ -20,6 +31,8 @@ export declare class ProcessManager implements IProcessManager {
20
31
  terminate(id: string): Promise<void>;
21
32
  /**
22
33
  * Terminates all managed processes.
34
+ * Uses Promise.allSettled to ensure all processes are attempted to be terminated
35
+ * even if some fail. Emits error events for failed terminations.
23
36
  */
24
37
  terminateAll(): Promise<void>;
25
38
  /**
@@ -46,6 +59,9 @@ export declare class ProcessManager implements IProcessManager {
46
59
  * Cleans up process resources.
47
60
  */
48
61
  private cleanupProcess;
62
+ private createTransport;
63
+ private setupProcessListeners;
64
+ private startManagedProcess;
49
65
  /**
50
66
  * Builds control channel from stdio transport.
51
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/process/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,IAAI,eAAe,EACjC,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA8B3D;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;gBAEvD,MAAM,GAAE,oBAAyB;IAc7C;;OAEG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAsFvE;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI5C;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK9B;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACrC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC/C,WAAW;IAId;;OAEG;YACW,iBAAiB;IAiE/B;;OAEG;YACW,cAAc;IA+E5B;;OAEG;YACW,cAAc;IAiB5B;;OAEG;YACW,mBAAmB;IA6CjC;;OAEG;YACW,gBAAgB;CA2C/B"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/process/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,IAAI,eAAe,EACjC,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EAGb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA8C3D;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,aAAa,CAAsC;gBAE/C,MAAM,GAAE,oBAAyB;IAgD7C;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACH,oBAAoB,IAAI,IAAI;IAQ5B;;OAEG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAiDvE;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBnC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI5C;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK9B;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACrC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC/C,WAAW;IAId;;OAEG;YACW,iBAAiB;IA+D/B;;OAEG;YACW,cAAc;IAsC5B;;OAEG;YACW,cAAc;IAiB5B,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,qBAAqB;YAef,mBAAmB;IAuBjC;;OAEG;YACW,mBAAmB;IAoDjC;;OAEG;YACW,gBAAgB;CAqD/B"}