node-pty 1.1.0-beta28 → 1.1.0-beta29
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/lib/windowsConoutConnection.js +0 -4
- package/lib/windowsConoutConnection.js.map +1 -1
- package/lib/windowsPtyAgent.js +23 -6
- package/lib/windowsPtyAgent.js.map +1 -1
- package/lib/windowsTerminal.test.js +24 -15
- package/lib/windowsTerminal.test.js.map +1 -1
- package/lib/worker/conoutSocketWorker.js +13 -10
- package/lib/worker/conoutSocketWorker.js.map +1 -1
- package/package.json +1 -1
- package/src/win/conpty.cc +13 -46
- package/src/windowsConoutConnection.ts +0 -4
- package/src/windowsPtyAgent.ts +21 -6
- package/src/windowsTerminal.test.ts +30 -21
- package/src/worker/conoutSocketWorker.ts +14 -11
- package/third_party/conpty/1.22.250204002/win10-arm64/OpenConsole.exe +0 -0
- package/third_party/conpty/1.22.250204002/win10-arm64/conpty.dll +0 -0
- package/third_party/conpty/1.22.250204002/win10-x64/OpenConsole.exe +0 -0
- package/third_party/conpty/1.22.250204002/win10-x64/conpty.dll +0 -0
- package/third_party/conpty/1.20.240626001/win10-arm64/OpenConsole.exe +0 -0
- package/third_party/conpty/1.20.240626001/win10-arm64/conpty.dll +0 -0
- package/third_party/conpty/1.20.240626001/win10-x64/OpenConsole.exe +0 -0
- package/third_party/conpty/1.20.240626001/win10-x64/conpty.dll +0 -0
|
@@ -87,10 +87,6 @@ var ConoutConnection = /** @class */ (function () {
|
|
|
87
87
|
configurable: true
|
|
88
88
|
});
|
|
89
89
|
ConoutConnection.prototype.dispose = function () {
|
|
90
|
-
if (this._isDisposed) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
this._isDisposed = true;
|
|
94
90
|
// Drain all data from the socket before closing
|
|
95
91
|
this._drainDataAndClose();
|
|
96
92
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowsConoutConnection.js","sourceRoot":"","sources":["../src/windowsConoutConnection.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAwC;AAGxC,0CAAsF;AACtF,6BAA4B;AAC5B,iDAAwD;AAExD;;;;GAIG;AACH,IAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH;IAQE,0BACU,eAAuB;QADjC,iBAeC;QAdS,oBAAe,GAAf,eAAe,CAAQ;QANzB,gBAAW,GAAY,KAAK,CAAC;QAE7B,aAAQ,GAAG,IAAI,6BAAa,EAAQ,CAAC;QAM3C,IAAM,UAAU,GAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;QACpE,IAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAM,CAAC,WAAI,CAAC,UAAU,EAAE,8BAA8B,CAAC,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,OAA4B;YACtD,QAAQ,OAAO,EAAE;gBACf;oBACE,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO;gBACT;oBACE,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;aAC3D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAjBD,sBAAW,qCAAO;aAAlB,cAAqC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;;;OAAA;IAmBlE,kCAAO,GAAP;QACE,
|
|
1
|
+
{"version":3,"file":"windowsConoutConnection.js","sourceRoot":"","sources":["../src/windowsConoutConnection.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAwC;AAGxC,0CAAsF;AACtF,6BAA4B;AAC5B,iDAAwD;AAExD;;;;GAIG;AACH,IAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH;IAQE,0BACU,eAAuB;QADjC,iBAeC;QAdS,oBAAe,GAAf,eAAe,CAAQ;QANzB,gBAAW,GAAY,KAAK,CAAC;QAE7B,aAAQ,GAAG,IAAI,6BAAa,EAAQ,CAAC;QAM3C,IAAM,UAAU,GAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;QACpE,IAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAM,CAAC,WAAI,CAAC,UAAU,EAAE,8BAA8B,CAAC,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,OAA4B;YACtD,QAAQ,OAAO,EAAE;gBACf;oBACE,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO;gBACT;oBACE,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;aAC3D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAjBD,sBAAW,qCAAO;aAAlB,cAAqC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;;;OAAA;IAmBlE,kCAAO,GAAP;QACE,gDAAgD;QAChD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,wCAAa,GAAb,UAAc,MAAc;QAC1B,MAAM,CAAC,OAAO,CAAC,0BAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,6CAAkB,GAA1B;QAAA,iBAKC;QAJC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,cAAc,EAAE,EAArB,CAAqB,EAAE,mBAAmB,CAAC,CAAC;IACpF,CAAC;IAEa,yCAAc,GAA5B;;;;4BACE,qBAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAA;;wBAA9B,SAA8B,CAAC;;;;;KAChC;IACH,uBAAC;AAAD,CAAC,AA5CD,IA4CC;AA5CY,4CAAgB"}
|
package/lib/windowsPtyAgent.js
CHANGED
|
@@ -154,11 +154,12 @@ var WindowsPtyAgent = /** @class */ (function () {
|
|
|
154
154
|
}
|
|
155
155
|
};
|
|
156
156
|
WindowsPtyAgent.prototype.kill = function () {
|
|
157
|
-
|
|
158
|
-
this._outSocket.readable = false;
|
|
157
|
+
var _this = this;
|
|
159
158
|
// Tell the agent to kill the pty, this releases handles to the process
|
|
160
159
|
if (this._useConpty) {
|
|
161
160
|
if (!this._useConptyDll) {
|
|
161
|
+
this._inSocket.readable = false;
|
|
162
|
+
this._outSocket.readable = false;
|
|
162
163
|
this._getConsoleProcessList().then(function (consoleProcessList) {
|
|
163
164
|
consoleProcessList.forEach(function (pid) {
|
|
164
165
|
try {
|
|
@@ -169,8 +170,17 @@ var WindowsPtyAgent = /** @class */ (function () {
|
|
|
169
170
|
}
|
|
170
171
|
});
|
|
171
172
|
});
|
|
173
|
+
this._ptyNative.kill(this._pty, this._useConptyDll);
|
|
174
|
+
this._conoutSocketWorker.dispose();
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Close the input write handle to signal the end of session.
|
|
178
|
+
this._inSocket.destroy();
|
|
179
|
+
this._ptyNative.kill(this._pty, this._useConptyDll);
|
|
180
|
+
this._outSocket.on('data', function () {
|
|
181
|
+
_this._conoutSocketWorker.dispose();
|
|
182
|
+
});
|
|
172
183
|
}
|
|
173
|
-
this._ptyNative.kill(this._pty, this._useConptyDll);
|
|
174
184
|
}
|
|
175
185
|
else {
|
|
176
186
|
// Because pty.kill closes the handle, it will kill most processes by itself.
|
|
@@ -190,7 +200,6 @@ var WindowsPtyAgent = /** @class */ (function () {
|
|
|
190
200
|
}
|
|
191
201
|
});
|
|
192
202
|
}
|
|
193
|
-
this._conoutSocketWorker.dispose();
|
|
194
203
|
};
|
|
195
204
|
WindowsPtyAgent.prototype._getConsoleProcessList = function () {
|
|
196
205
|
var _this = this;
|
|
@@ -235,17 +244,25 @@ var WindowsPtyAgent = /** @class */ (function () {
|
|
|
235
244
|
WindowsPtyAgent.prototype._$onProcessExit = function (exitCode) {
|
|
236
245
|
var _this = this;
|
|
237
246
|
this._exitCode = exitCode;
|
|
238
|
-
this.
|
|
239
|
-
|
|
247
|
+
if (!this._useConptyDll) {
|
|
248
|
+
this._flushDataAndCleanUp();
|
|
249
|
+
this._outSocket.on('data', function () { return _this._flushDataAndCleanUp(); });
|
|
250
|
+
}
|
|
240
251
|
};
|
|
241
252
|
WindowsPtyAgent.prototype._flushDataAndCleanUp = function () {
|
|
242
253
|
var _this = this;
|
|
254
|
+
if (this._useConptyDll) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
243
257
|
if (this._closeTimeout) {
|
|
244
258
|
clearTimeout(this._closeTimeout);
|
|
245
259
|
}
|
|
246
260
|
this._closeTimeout = setTimeout(function () { return _this._cleanUpProcess(); }, FLUSH_DATA_INTERVAL);
|
|
247
261
|
};
|
|
248
262
|
WindowsPtyAgent.prototype._cleanUpProcess = function () {
|
|
263
|
+
if (this._useConptyDll) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
249
266
|
this._inSocket.readable = false;
|
|
250
267
|
this._outSocket.readable = false;
|
|
251
268
|
this._outSocket.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowsPtyAgent.js","sourceRoot":"","sources":["../src/windowsPtyAgent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"windowsPtyAgent.js","sourceRoot":"","sources":["../src/windowsPtyAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,14 +18,17 @@ function pollForProcessState(desiredState, intervalMs, timeoutMs) {
|
|
|
18
18
|
psList({ all: true }).then(function (ps) {
|
|
19
19
|
var success = true;
|
|
20
20
|
var pids = Object.keys(desiredState).map(function (k) { return parseInt(k, 10); });
|
|
21
|
+
console.log('expected pids', JSON.stringify(pids));
|
|
21
22
|
pids.forEach(function (pid) {
|
|
22
23
|
if (desiredState[pid]) {
|
|
23
24
|
if (!ps.some(function (p) { return p.pid === pid; })) {
|
|
25
|
+
console.log("pid " + pid + " does not exist");
|
|
24
26
|
success = false;
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
else {
|
|
28
30
|
if (ps.some(function (p) { return p.pid === pid; })) {
|
|
31
|
+
console.log("pid " + pid + " still exists");
|
|
29
32
|
success = false;
|
|
30
33
|
}
|
|
31
34
|
}
|
|
@@ -68,6 +71,7 @@ function pollForProcessTreeSize(pid, size, intervalMs, timeoutMs) {
|
|
|
68
71
|
while (openList.length) {
|
|
69
72
|
_loop_1();
|
|
70
73
|
}
|
|
74
|
+
console.log('list', JSON.stringify(list));
|
|
71
75
|
var success = list.length === size;
|
|
72
76
|
if (success) {
|
|
73
77
|
clearInterval(interval);
|
|
@@ -84,38 +88,34 @@ function pollForProcessTreeSize(pid, size, intervalMs, timeoutMs) {
|
|
|
84
88
|
});
|
|
85
89
|
}
|
|
86
90
|
if (process.platform === 'win32') {
|
|
87
|
-
[[
|
|
91
|
+
[[false, false], [true, false], [true, true]].forEach(function (_a) {
|
|
88
92
|
var useConpty = _a[0], useConptyDll = _a[1];
|
|
89
93
|
describe("WindowsTerminal (useConpty = " + useConpty + ", useConptyDll = " + useConptyDll + ")", function () {
|
|
90
94
|
describe('kill', function () {
|
|
91
95
|
it('should not crash parent process', function (done) {
|
|
96
|
+
this.timeout(20000);
|
|
92
97
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
98
|
+
term.on('exit', function () { return done(); });
|
|
93
99
|
term.kill();
|
|
94
|
-
// Add done call to deferred function queue to ensure the kill call has completed
|
|
95
|
-
term._defer(done);
|
|
96
100
|
});
|
|
97
101
|
it('should kill the process tree', function (done) {
|
|
98
|
-
this.timeout(
|
|
102
|
+
this.timeout(20000);
|
|
99
103
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
100
104
|
// Start sub-processes
|
|
101
105
|
term.write('powershell.exe\r');
|
|
102
|
-
term.write('notepad.exe\r');
|
|
103
106
|
term.write('node.exe\r');
|
|
104
|
-
|
|
107
|
+
console.log('start poll for tree size');
|
|
108
|
+
pollForProcessTreeSize(term.pid, 3, 500, 5000).then(function (list) {
|
|
105
109
|
assert.strictEqual(list[0].name.toLowerCase(), 'cmd.exe');
|
|
106
110
|
assert.strictEqual(list[1].name.toLowerCase(), 'powershell.exe');
|
|
107
|
-
assert.strictEqual(list[2].name.toLowerCase(), '
|
|
108
|
-
assert.strictEqual(list[3].name.toLowerCase(), 'node.exe');
|
|
111
|
+
assert.strictEqual(list[2].name.toLowerCase(), 'node.exe');
|
|
109
112
|
term.kill();
|
|
110
113
|
var desiredState = {};
|
|
111
114
|
desiredState[list[0].pid] = false;
|
|
112
115
|
desiredState[list[1].pid] = false;
|
|
113
|
-
desiredState[list[2].pid] =
|
|
114
|
-
desiredState[list[3].pid] = false;
|
|
116
|
+
desiredState[list[2].pid] = false;
|
|
115
117
|
term.on('exit', function () {
|
|
116
|
-
pollForProcessState(desiredState).then(function () {
|
|
117
|
-
// Kill notepad before done
|
|
118
|
-
process.kill(list[2].pid);
|
|
118
|
+
pollForProcessState(desiredState, 1000, 5000).then(function () {
|
|
119
119
|
done();
|
|
120
120
|
});
|
|
121
121
|
});
|
|
@@ -123,11 +123,15 @@ if (process.platform === 'win32') {
|
|
|
123
123
|
});
|
|
124
124
|
});
|
|
125
125
|
describe('resize', function () {
|
|
126
|
-
it('should throw a non-native exception when resizing an invalid value', function () {
|
|
126
|
+
it('should throw a non-native exception when resizing an invalid value', function (done) {
|
|
127
127
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
128
128
|
assert.throws(function () { return term.resize(-1, -1); });
|
|
129
129
|
assert.throws(function () { return term.resize(0, 0); });
|
|
130
130
|
assert.doesNotThrow(function () { return term.resize(1, 1); });
|
|
131
|
+
term.on('exit', function () {
|
|
132
|
+
done();
|
|
133
|
+
});
|
|
134
|
+
term.kill();
|
|
131
135
|
});
|
|
132
136
|
it('should throw a non-native exception when resizing a killed terminal', function (done) {
|
|
133
137
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
@@ -142,6 +146,7 @@ if (process.platform === 'win32') {
|
|
|
142
146
|
});
|
|
143
147
|
describe('Args as CommandLine', function () {
|
|
144
148
|
it('should not fail running a file containing a space in the path', function (done) {
|
|
149
|
+
this.timeout(10000);
|
|
145
150
|
var spaceFolder = path.resolve(__dirname, '..', 'fixtures', 'space folder');
|
|
146
151
|
if (!fs.existsSync(spaceFolder)) {
|
|
147
152
|
fs.mkdirSync(spaceFolder);
|
|
@@ -166,7 +171,8 @@ if (process.platform === 'win32') {
|
|
|
166
171
|
});
|
|
167
172
|
describe('env', function () {
|
|
168
173
|
it('should set environment variables of the shell', function (done) {
|
|
169
|
-
|
|
174
|
+
this.timeout(10000);
|
|
175
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '/C echo %FOO%', { useConpty: useConpty, useConptyDll: useConptyDll, env: { FOO: 'BAR' } });
|
|
170
176
|
var result = '';
|
|
171
177
|
term.on('data', function (data) {
|
|
172
178
|
result += data;
|
|
@@ -179,6 +185,7 @@ if (process.platform === 'win32') {
|
|
|
179
185
|
});
|
|
180
186
|
describe('On close', function () {
|
|
181
187
|
it('should return process zero exit codes', function (done) {
|
|
188
|
+
this.timeout(10000);
|
|
182
189
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '/C exit', { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
183
190
|
term.on('exit', function (code) {
|
|
184
191
|
assert.strictEqual(code, 0);
|
|
@@ -186,6 +193,7 @@ if (process.platform === 'win32') {
|
|
|
186
193
|
});
|
|
187
194
|
});
|
|
188
195
|
it('should return process non-zero exit codes', function (done) {
|
|
196
|
+
this.timeout(10000);
|
|
189
197
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '/C exit 2', { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
190
198
|
term.on('exit', function (code) {
|
|
191
199
|
assert.strictEqual(code, 2);
|
|
@@ -195,6 +203,7 @@ if (process.platform === 'win32') {
|
|
|
195
203
|
});
|
|
196
204
|
describe('Write', function () {
|
|
197
205
|
it('should accept input', function (done) {
|
|
206
|
+
this.timeout(10000);
|
|
198
207
|
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '', { useConpty: useConpty, useConptyDll: useConptyDll });
|
|
199
208
|
term.write('exit\r');
|
|
200
209
|
term.on('exit', function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowsTerminal.test.js","sourceRoot":"","sources":["../src/windowsTerminal.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"windowsTerminal.test.js","sourceRoot":"","sources":["../src/windowsTerminal.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,18 +5,21 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var worker_threads_1 = require("worker_threads");
|
|
7
7
|
var net_1 = require("net");
|
|
8
|
+
var fs = require("fs");
|
|
8
9
|
var conout_1 = require("../shared/conout");
|
|
9
10
|
var conoutPipeName = worker_threads_1.workerData.conoutPipeName;
|
|
10
|
-
var
|
|
11
|
+
var outSocketFD = fs.openSync(conoutPipeName, 'r');
|
|
12
|
+
var conoutSocket = new net_1.Socket({
|
|
13
|
+
fd: outSocketFD,
|
|
14
|
+
readable: true
|
|
15
|
+
});
|
|
11
16
|
conoutSocket.setEncoding('utf8');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
conoutSocket.pipe(workerSocket);
|
|
15
|
-
});
|
|
16
|
-
server.listen(conout_1.getWorkerPipeName(conoutPipeName));
|
|
17
|
-
if (!worker_threads_1.parentPort) {
|
|
18
|
-
throw new Error('worker_threads parentPort is null');
|
|
19
|
-
}
|
|
20
|
-
worker_threads_1.parentPort.postMessage(1 /* READY */);
|
|
17
|
+
var server = net_1.createServer(function (workerSocket) {
|
|
18
|
+
conoutSocket.pipe(workerSocket);
|
|
21
19
|
});
|
|
20
|
+
server.listen(conout_1.getWorkerPipeName(conoutPipeName));
|
|
21
|
+
if (!worker_threads_1.parentPort) {
|
|
22
|
+
throw new Error('worker_threads parentPort is null');
|
|
23
|
+
}
|
|
24
|
+
worker_threads_1.parentPort.postMessage(1 /* READY */);
|
|
22
25
|
//# sourceMappingURL=conoutSocketWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conoutSocketWorker.js","sourceRoot":"","sources":["../../src/worker/conoutSocketWorker.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,iDAAwD;AACxD,2BAA2C;AAC3C,2CAAuF;AAEvF,IAAM,cAAc,GAAI,2BAA0B,CAAC,cAAc,CAAC;AAClE,IAAM,
|
|
1
|
+
{"version":3,"file":"conoutSocketWorker.js","sourceRoot":"","sources":["../../src/worker/conoutSocketWorker.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,iDAAwD;AACxD,2BAA2C;AAC3C,uBAAyB;AACzB,2CAAuF;AAEvF,IAAM,cAAc,GAAI,2BAA0B,CAAC,cAAc,CAAC;AAClE,IAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACrD,IAAM,YAAY,GAAG,IAAI,YAAM,CAAC;IAC9B,EAAE,EAAE,WAAW;IACf,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AACH,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,IAAM,MAAM,GAAG,kBAAY,CAAC,UAAA,YAAY;IACtC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,CAAC,0BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;AAEjD,IAAI,CAAC,2BAAU,EAAE;IACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;CACtD;AACD,2BAAU,CAAC,WAAW,eAA2B,CAAC"}
|
package/package.json
CHANGED
package/src/win/conpty.cc
CHANGED
|
@@ -34,16 +34,10 @@ typedef HRESULT (__stdcall *PFNCREATEPSEUDOCONSOLE)(COORD c, HANDLE hIn, HANDLE
|
|
|
34
34
|
typedef HRESULT (__stdcall *PFNRESIZEPSEUDOCONSOLE)(HPCON hpc, COORD newSize);
|
|
35
35
|
typedef HRESULT (__stdcall *PFNCLEARPSEUDOCONSOLE)(HPCON hpc);
|
|
36
36
|
typedef void (__stdcall *PFNCLOSEPSEUDOCONSOLE)(HPCON hpc);
|
|
37
|
+
typedef void (__stdcall *PFNRELEASEPSEUDOCONSOLE)(HPCON hpc);
|
|
37
38
|
|
|
38
39
|
#endif
|
|
39
40
|
|
|
40
|
-
typedef struct _PseudoConsole
|
|
41
|
-
{
|
|
42
|
-
HANDLE hSignal;
|
|
43
|
-
HANDLE hPtyReference;
|
|
44
|
-
HANDLE hConPtyProcess;
|
|
45
|
-
} PseudoConsole;
|
|
46
|
-
|
|
47
41
|
struct pty_baton {
|
|
48
42
|
int id;
|
|
49
43
|
HANDLE hIn;
|
|
@@ -51,7 +45,6 @@ struct pty_baton {
|
|
|
51
45
|
HPCON hpc;
|
|
52
46
|
|
|
53
47
|
HANDLE hShell;
|
|
54
|
-
HANDLE pty_job_handle;
|
|
55
48
|
|
|
56
49
|
pty_baton(int _id, HANDLE _hIn, HANDLE _hOut, HPCON _hpc) : id(_id), hIn(_hIn), hOut(_hOut), hpc(_hpc) {};
|
|
57
50
|
};
|
|
@@ -80,27 +73,6 @@ static bool remove_pty_baton(int id) {
|
|
|
80
73
|
return false;
|
|
81
74
|
}
|
|
82
75
|
|
|
83
|
-
static BOOL InitPtyJobHandle(HANDLE* pty_job_handle) {
|
|
84
|
-
SECURITY_ATTRIBUTES attr;
|
|
85
|
-
memset(&attr, 0, sizeof(attr));
|
|
86
|
-
attr.bInheritHandle = FALSE;
|
|
87
|
-
*pty_job_handle = CreateJobObjectW(&attr, nullptr);
|
|
88
|
-
if (*pty_job_handle == NULL) {
|
|
89
|
-
return FALSE;
|
|
90
|
-
}
|
|
91
|
-
JOBOBJECT_EXTENDED_LIMIT_INFORMATION limits = {};
|
|
92
|
-
limits.BasicLimitInformation.LimitFlags =
|
|
93
|
-
JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION |
|
|
94
|
-
JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
|
|
95
|
-
if (!SetInformationJobObject(*pty_job_handle,
|
|
96
|
-
JobObjectExtendedLimitInformation,
|
|
97
|
-
&limits,
|
|
98
|
-
sizeof(limits))) {
|
|
99
|
-
return FALSE;
|
|
100
|
-
}
|
|
101
|
-
return TRUE;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
76
|
struct ExitEvent {
|
|
105
77
|
int exit_code = 0;
|
|
106
78
|
};
|
|
@@ -130,11 +102,6 @@ void SetupExitCallback(Napi::Env env, Napi::Function cb, pty_baton* baton) {
|
|
|
130
102
|
// Get process exit code.
|
|
131
103
|
GetExitCodeProcess(baton->hShell, (LPDWORD)(&exit_event->exit_code));
|
|
132
104
|
// Clean up handles
|
|
133
|
-
// Calling DisconnectNamedPipes here or in PtyKill results in a crash,
|
|
134
|
-
// ref https://github.com/microsoft/node-pty/issues/512,
|
|
135
|
-
// so we only call CloseHandle for now.
|
|
136
|
-
CloseHandle(baton->hIn);
|
|
137
|
-
CloseHandle(baton->hOut);
|
|
138
105
|
CloseHandle(baton->hShell);
|
|
139
106
|
assert(remove_pty_baton(baton->id));
|
|
140
107
|
|
|
@@ -459,14 +426,15 @@ static Napi::Value PtyConnect(const Napi::CallbackInfo& info) {
|
|
|
459
426
|
throw errorWithCode(info, "Cannot create process");
|
|
460
427
|
}
|
|
461
428
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
if (
|
|
469
|
-
|
|
429
|
+
HANDLE hLibrary = LoadConptyDll(info, useConptyDll);
|
|
430
|
+
bool fLoadedDll = hLibrary != nullptr;
|
|
431
|
+
if (fLoadedDll)
|
|
432
|
+
{
|
|
433
|
+
PFNRELEASEPSEUDOCONSOLE const pfnReleasePseudoConsole = (PFNRELEASEPSEUDOCONSOLE)GetProcAddress(
|
|
434
|
+
(HMODULE)hLibrary, "ConptyReleasePseudoConsole");
|
|
435
|
+
if (pfnReleasePseudoConsole)
|
|
436
|
+
{
|
|
437
|
+
pfnReleasePseudoConsole(handle->hpc);
|
|
470
438
|
}
|
|
471
439
|
}
|
|
472
440
|
|
|
@@ -475,6 +443,9 @@ static Napi::Value PtyConnect(const Napi::CallbackInfo& info) {
|
|
|
475
443
|
|
|
476
444
|
// Close the thread handle to avoid resource leak
|
|
477
445
|
CloseHandle(piClient.hThread);
|
|
446
|
+
// Close the input read and output write handle of the pseudoconsole
|
|
447
|
+
CloseHandle(handle->hIn);
|
|
448
|
+
CloseHandle(handle->hOut);
|
|
478
449
|
|
|
479
450
|
SetupExitCallback(env, exitCallback, handle);
|
|
480
451
|
|
|
@@ -588,11 +559,7 @@ static Napi::Value PtyKill(const Napi::CallbackInfo& info) {
|
|
|
588
559
|
pfnClosePseudoConsole(handle->hpc);
|
|
589
560
|
}
|
|
590
561
|
}
|
|
591
|
-
|
|
592
562
|
TerminateProcess(handle->hShell, 1);
|
|
593
|
-
if (useConptyDll) {
|
|
594
|
-
CloseHandle(handle->pty_job_handle);
|
|
595
|
-
}
|
|
596
563
|
}
|
|
597
564
|
|
|
598
565
|
return env.Undefined();
|
package/src/windowsPtyAgent.ts
CHANGED
|
@@ -158,11 +158,11 @@ export class WindowsPtyAgent {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
public kill(): void {
|
|
161
|
-
this._inSocket.readable = false;
|
|
162
|
-
this._outSocket.readable = false;
|
|
163
161
|
// Tell the agent to kill the pty, this releases handles to the process
|
|
164
162
|
if (this._useConpty) {
|
|
165
163
|
if (!this._useConptyDll) {
|
|
164
|
+
this._inSocket.readable = false;
|
|
165
|
+
this._outSocket.readable = false;
|
|
166
166
|
this._getConsoleProcessList().then(consoleProcessList => {
|
|
167
167
|
consoleProcessList.forEach((pid: number) => {
|
|
168
168
|
try {
|
|
@@ -172,8 +172,16 @@ export class WindowsPtyAgent {
|
|
|
172
172
|
}
|
|
173
173
|
});
|
|
174
174
|
});
|
|
175
|
+
(this._ptyNative as IConptyNative).kill(this._pty, this._useConptyDll);
|
|
176
|
+
this._conoutSocketWorker.dispose();
|
|
177
|
+
} else {
|
|
178
|
+
// Close the input write handle to signal the end of session.
|
|
179
|
+
this._inSocket.destroy();
|
|
180
|
+
(this._ptyNative as IConptyNative).kill(this._pty, this._useConptyDll);
|
|
181
|
+
this._outSocket.on('data', () => {
|
|
182
|
+
this._conoutSocketWorker.dispose();
|
|
183
|
+
});
|
|
175
184
|
}
|
|
176
|
-
(this._ptyNative as IConptyNative).kill(this._pty, this._useConptyDll);
|
|
177
185
|
} else {
|
|
178
186
|
// Because pty.kill closes the handle, it will kill most processes by itself.
|
|
179
187
|
// Process IDs can be reused as soon as all handles to them are
|
|
@@ -191,7 +199,6 @@ export class WindowsPtyAgent {
|
|
|
191
199
|
}
|
|
192
200
|
});
|
|
193
201
|
}
|
|
194
|
-
this._conoutSocketWorker.dispose();
|
|
195
202
|
}
|
|
196
203
|
|
|
197
204
|
private _getConsoleProcessList(): Promise<number[]> {
|
|
@@ -235,11 +242,16 @@ export class WindowsPtyAgent {
|
|
|
235
242
|
*/
|
|
236
243
|
private _$onProcessExit(exitCode: number): void {
|
|
237
244
|
this._exitCode = exitCode;
|
|
238
|
-
this.
|
|
239
|
-
|
|
245
|
+
if (!this._useConptyDll) {
|
|
246
|
+
this._flushDataAndCleanUp();
|
|
247
|
+
this._outSocket.on('data', () => this._flushDataAndCleanUp());
|
|
248
|
+
}
|
|
240
249
|
}
|
|
241
250
|
|
|
242
251
|
private _flushDataAndCleanUp(): void {
|
|
252
|
+
if (this._useConptyDll) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
243
255
|
if (this._closeTimeout) {
|
|
244
256
|
clearTimeout(this._closeTimeout);
|
|
245
257
|
}
|
|
@@ -247,6 +259,9 @@ export class WindowsPtyAgent {
|
|
|
247
259
|
}
|
|
248
260
|
|
|
249
261
|
private _cleanUpProcess(): void {
|
|
262
|
+
if (this._useConptyDll) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
250
265
|
this._inSocket.readable = false;
|
|
251
266
|
this._outSocket.readable = false;
|
|
252
267
|
this._outSocket.destroy();
|
|
@@ -26,13 +26,16 @@ function pollForProcessState(desiredState: IProcessState, intervalMs: number = 1
|
|
|
26
26
|
psList({ all: true }).then(ps => {
|
|
27
27
|
let success = true;
|
|
28
28
|
const pids = Object.keys(desiredState).map(k => parseInt(k, 10));
|
|
29
|
+
console.log('expected pids', JSON.stringify(pids));
|
|
29
30
|
pids.forEach(pid => {
|
|
30
31
|
if (desiredState[pid]) {
|
|
31
32
|
if (!ps.some(p => p.pid === pid)) {
|
|
33
|
+
console.log(`pid ${pid} does not exist`);
|
|
32
34
|
success = false;
|
|
33
35
|
}
|
|
34
36
|
} else {
|
|
35
37
|
if (ps.some(p => p.pid === pid)) {
|
|
38
|
+
console.log(`pid ${pid} still exists`);
|
|
36
39
|
success = false;
|
|
37
40
|
}
|
|
38
41
|
}
|
|
@@ -71,6 +74,7 @@ function pollForProcessTreeSize(pid: number, size: number, intervalMs: number =
|
|
|
71
74
|
}).forEach(p => openList.push(p));
|
|
72
75
|
list.push(current);
|
|
73
76
|
}
|
|
77
|
+
console.log('list', JSON.stringify(list));
|
|
74
78
|
const success = list.length === size;
|
|
75
79
|
if (success) {
|
|
76
80
|
clearInterval(interval);
|
|
@@ -88,37 +92,33 @@ function pollForProcessTreeSize(pid: number, size: number, intervalMs: number =
|
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
if (process.platform === 'win32') {
|
|
91
|
-
[[
|
|
95
|
+
[[false, false], [true, false], [true, true]].forEach(([useConpty, useConptyDll]) => {
|
|
92
96
|
describe(`WindowsTerminal (useConpty = ${useConpty}, useConptyDll = ${useConptyDll})`, () => {
|
|
93
97
|
describe('kill', () => {
|
|
94
|
-
it('should not crash parent process', (done)
|
|
98
|
+
it('should not crash parent process', function (done) {
|
|
99
|
+
this.timeout(20000);
|
|
95
100
|
const term = new WindowsTerminal('cmd.exe', [], { useConpty, useConptyDll });
|
|
101
|
+
term.on('exit', () => done());
|
|
96
102
|
term.kill();
|
|
97
|
-
// Add done call to deferred function queue to ensure the kill call has completed
|
|
98
|
-
(<any>term)._defer(done);
|
|
99
103
|
});
|
|
100
104
|
it('should kill the process tree', function (done: Mocha.Done): void {
|
|
101
|
-
this.timeout(
|
|
105
|
+
this.timeout(20000);
|
|
102
106
|
const term = new WindowsTerminal('cmd.exe', [], { useConpty, useConptyDll });
|
|
103
107
|
// Start sub-processes
|
|
104
108
|
term.write('powershell.exe\r');
|
|
105
|
-
term.write('notepad.exe\r');
|
|
106
109
|
term.write('node.exe\r');
|
|
107
|
-
|
|
110
|
+
console.log('start poll for tree size');
|
|
111
|
+
pollForProcessTreeSize(term.pid, 3, 500, 5000).then(list => {
|
|
108
112
|
assert.strictEqual(list[0].name.toLowerCase(), 'cmd.exe');
|
|
109
113
|
assert.strictEqual(list[1].name.toLowerCase(), 'powershell.exe');
|
|
110
|
-
assert.strictEqual(list[2].name.toLowerCase(), '
|
|
111
|
-
assert.strictEqual(list[3].name.toLowerCase(), 'node.exe');
|
|
114
|
+
assert.strictEqual(list[2].name.toLowerCase(), 'node.exe');
|
|
112
115
|
term.kill();
|
|
113
116
|
const desiredState: IProcessState = {};
|
|
114
117
|
desiredState[list[0].pid] = false;
|
|
115
118
|
desiredState[list[1].pid] = false;
|
|
116
|
-
desiredState[list[2].pid] =
|
|
117
|
-
desiredState[list[3].pid] = false;
|
|
119
|
+
desiredState[list[2].pid] = false;
|
|
118
120
|
term.on('exit', () => {
|
|
119
|
-
pollForProcessState(desiredState).then(() => {
|
|
120
|
-
// Kill notepad before done
|
|
121
|
-
process.kill(list[2].pid);
|
|
121
|
+
pollForProcessState(desiredState, 1000, 5000).then(() => {
|
|
122
122
|
done();
|
|
123
123
|
});
|
|
124
124
|
});
|
|
@@ -127,11 +127,15 @@ if (process.platform === 'win32') {
|
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
describe('resize', () => {
|
|
130
|
-
it('should throw a non-native exception when resizing an invalid value', () => {
|
|
130
|
+
it('should throw a non-native exception when resizing an invalid value', (done) => {
|
|
131
131
|
const term = new WindowsTerminal('cmd.exe', [], { useConpty, useConptyDll });
|
|
132
132
|
assert.throws(() => term.resize(-1, -1));
|
|
133
133
|
assert.throws(() => term.resize(0, 0));
|
|
134
134
|
assert.doesNotThrow(() => term.resize(1, 1));
|
|
135
|
+
term.on('exit', () => {
|
|
136
|
+
done();
|
|
137
|
+
});
|
|
138
|
+
term.kill();
|
|
135
139
|
});
|
|
136
140
|
it('should throw a non-native exception when resizing a killed terminal', (done) => {
|
|
137
141
|
const term = new WindowsTerminal('cmd.exe', [], { useConpty, useConptyDll });
|
|
@@ -146,7 +150,8 @@ if (process.platform === 'win32') {
|
|
|
146
150
|
});
|
|
147
151
|
|
|
148
152
|
describe('Args as CommandLine', () => {
|
|
149
|
-
it('should not fail running a file containing a space in the path', (done)
|
|
153
|
+
it('should not fail running a file containing a space in the path', function (done) {
|
|
154
|
+
this.timeout(10000);
|
|
150
155
|
const spaceFolder = path.resolve(__dirname, '..', 'fixtures', 'space folder');
|
|
151
156
|
if (!fs.existsSync(spaceFolder)) {
|
|
152
157
|
fs.mkdirSync(spaceFolder);
|
|
@@ -173,8 +178,9 @@ if (process.platform === 'win32') {
|
|
|
173
178
|
});
|
|
174
179
|
|
|
175
180
|
describe('env', () => {
|
|
176
|
-
it('should set environment variables of the shell', (done)
|
|
177
|
-
|
|
181
|
+
it('should set environment variables of the shell', function (done) {
|
|
182
|
+
this.timeout(10000);
|
|
183
|
+
const term = new WindowsTerminal('cmd.exe', '/C echo %FOO%', { useConpty, useConptyDll, env: { FOO: 'BAR' }});
|
|
178
184
|
let result = '';
|
|
179
185
|
term.on('data', (data) => {
|
|
180
186
|
result += data;
|
|
@@ -187,7 +193,8 @@ if (process.platform === 'win32') {
|
|
|
187
193
|
});
|
|
188
194
|
|
|
189
195
|
describe('On close', () => {
|
|
190
|
-
it('should return process zero exit codes', (done)
|
|
196
|
+
it('should return process zero exit codes', function (done) {
|
|
197
|
+
this.timeout(10000);
|
|
191
198
|
const term = new WindowsTerminal('cmd.exe', '/C exit', { useConpty, useConptyDll });
|
|
192
199
|
term.on('exit', (code) => {
|
|
193
200
|
assert.strictEqual(code, 0);
|
|
@@ -195,7 +202,8 @@ if (process.platform === 'win32') {
|
|
|
195
202
|
});
|
|
196
203
|
});
|
|
197
204
|
|
|
198
|
-
it('should return process non-zero exit codes', (done)
|
|
205
|
+
it('should return process non-zero exit codes', function (done) {
|
|
206
|
+
this.timeout(10000);
|
|
199
207
|
const term = new WindowsTerminal('cmd.exe', '/C exit 2', { useConpty, useConptyDll });
|
|
200
208
|
term.on('exit', (code) => {
|
|
201
209
|
assert.strictEqual(code, 2);
|
|
@@ -205,7 +213,8 @@ if (process.platform === 'win32') {
|
|
|
205
213
|
});
|
|
206
214
|
|
|
207
215
|
describe('Write', () => {
|
|
208
|
-
it('should accept input', (done)
|
|
216
|
+
it('should accept input', function (done) {
|
|
217
|
+
this.timeout(10000);
|
|
209
218
|
const term = new WindowsTerminal('cmd.exe', '', { useConpty, useConptyDll });
|
|
210
219
|
term.write('exit\r');
|
|
211
220
|
term.on('exit', () => {
|
|
@@ -4,19 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
import { parentPort, workerData } from 'worker_threads';
|
|
6
6
|
import { Socket, createServer } from 'net';
|
|
7
|
+
import * as fs from 'fs';
|
|
7
8
|
import { ConoutWorkerMessage, IWorkerData, getWorkerPipeName } from '../shared/conout';
|
|
8
9
|
|
|
9
10
|
const conoutPipeName = (workerData as IWorkerData).conoutPipeName;
|
|
10
|
-
const
|
|
11
|
+
const outSocketFD = fs.openSync(conoutPipeName, 'r');
|
|
12
|
+
const conoutSocket = new Socket({
|
|
13
|
+
fd: outSocketFD,
|
|
14
|
+
readable: true
|
|
15
|
+
});
|
|
11
16
|
conoutSocket.setEncoding('utf8');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
conoutSocket.pipe(workerSocket);
|
|
15
|
-
});
|
|
16
|
-
server.listen(getWorkerPipeName(conoutPipeName));
|
|
17
|
-
|
|
18
|
-
if (!parentPort) {
|
|
19
|
-
throw new Error('worker_threads parentPort is null');
|
|
20
|
-
}
|
|
21
|
-
parentPort.postMessage(ConoutWorkerMessage.READY);
|
|
17
|
+
const server = createServer(workerSocket => {
|
|
18
|
+
conoutSocket.pipe(workerSocket);
|
|
22
19
|
});
|
|
20
|
+
server.listen(getWorkerPipeName(conoutPipeName));
|
|
21
|
+
|
|
22
|
+
if (!parentPort) {
|
|
23
|
+
throw new Error('worker_threads parentPort is null');
|
|
24
|
+
}
|
|
25
|
+
parentPort.postMessage(ConoutWorkerMessage.READY);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|