node-pty 0.11.0-beta9 → 1.1.0-beta1
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/README.md +5 -4
- package/binding.gyp +70 -29
- package/lib/conpty_console_list_agent.js.map +1 -1
- package/lib/terminal.js +10 -4
- package/lib/terminal.js.map +1 -1
- package/lib/terminal.test.js +3 -0
- package/lib/terminal.test.js.map +1 -1
- package/lib/unixTerminal.js +30 -4
- package/lib/unixTerminal.js.map +1 -1
- package/lib/unixTerminal.test.js +147 -18
- package/lib/unixTerminal.test.js.map +1 -1
- package/lib/windowsPtyAgent.js +13 -6
- package/lib/windowsPtyAgent.js.map +1 -1
- package/lib/windowsTerminal.js +21 -3
- package/lib/windowsTerminal.js.map +1 -1
- package/lib/windowsTerminal.test.js +98 -97
- package/lib/windowsTerminal.test.js.map +1 -1
- package/lib/worker/conoutSocketWorker.js +3 -0
- package/lib/worker/conoutSocketWorker.js.map +1 -1
- package/package.json +3 -4
- package/scripts/post-install.js +1 -0
- package/src/conpty_console_list_agent.ts +1 -1
- package/src/interfaces.ts +8 -2
- package/src/native.d.ts +6 -5
- package/src/terminal.test.ts +3 -0
- package/src/terminal.ts +21 -20
- package/src/tsconfig.json +1 -3
- package/src/unix/pty.cc +297 -205
- package/src/unix/spawn-helper.cc +23 -0
- package/src/unixTerminal.test.ts +117 -25
- package/src/unixTerminal.ts +31 -11
- package/src/win/conpty.cc +85 -38
- package/src/win/conpty_console_list.cc +3 -3
- package/src/win/path_util.cc +22 -3
- package/src/win/path_util.h +1 -0
- package/src/win/winpty.cc +118 -54
- package/src/windowsConoutConnection.ts +1 -1
- package/src/windowsPtyAgent.ts +16 -11
- package/src/windowsTerminal.test.ts +100 -99
- package/src/windowsTerminal.ts +23 -4
- package/src/worker/conoutSocketWorker.ts +4 -0
- package/typings/node-pty.d.ts +11 -20
- package/deps/winpty/.gitignore +0 -15
- package/deps/winpty/misc/.gitignore +0 -2
- package/scripts/install.js +0 -18
|
@@ -78,124 +78,125 @@ function pollForProcessTreeSize(pid, size, intervalMs, timeoutMs) {
|
|
|
78
78
|
if (tries * intervalMs >= timeoutMs) {
|
|
79
79
|
clearInterval(interval);
|
|
80
80
|
assert.fail("Bad process state, expected: " + size + ", actual: " + list.length);
|
|
81
|
-
resolve();
|
|
82
81
|
}
|
|
83
82
|
});
|
|
84
83
|
}, intervalMs);
|
|
85
84
|
});
|
|
86
85
|
}
|
|
87
86
|
if (process.platform === 'win32') {
|
|
88
|
-
|
|
89
|
-
describe(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// Add done call to deferred function queue to ensure the kill call has completed
|
|
94
|
-
term._defer(done);
|
|
95
|
-
});
|
|
96
|
-
it('should kill the process tree', function (done) {
|
|
97
|
-
this.timeout(5000);
|
|
98
|
-
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], {});
|
|
99
|
-
// Start sub-processes
|
|
100
|
-
term.write('powershell.exe\r');
|
|
101
|
-
term.write('notepad.exe\r');
|
|
102
|
-
term.write('node.exe\r');
|
|
103
|
-
pollForProcessTreeSize(term.pid, 4, 500, 5000).then(function (list) {
|
|
104
|
-
assert.equal(list[0].name, 'cmd.exe');
|
|
105
|
-
assert.equal(list[1].name, 'powershell.exe');
|
|
106
|
-
assert.equal(list[2].name, 'notepad.exe');
|
|
107
|
-
assert.equal(list[3].name, 'node.exe');
|
|
87
|
+
[true, false].forEach(function (useConpty) {
|
|
88
|
+
describe("WindowsTerminal (useConpty = " + useConpty + ")", function () {
|
|
89
|
+
describe('kill', function () {
|
|
90
|
+
it('should not crash parent process', function (done) {
|
|
91
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty });
|
|
108
92
|
term.kill();
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
93
|
+
// Add done call to deferred function queue to ensure the kill call has completed
|
|
94
|
+
term._defer(done);
|
|
95
|
+
});
|
|
96
|
+
it('should kill the process tree', function (done) {
|
|
97
|
+
this.timeout(5000);
|
|
98
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty });
|
|
99
|
+
// Start sub-processes
|
|
100
|
+
term.write('powershell.exe\r');
|
|
101
|
+
term.write('notepad.exe\r');
|
|
102
|
+
term.write('node.exe\r');
|
|
103
|
+
pollForProcessTreeSize(term.pid, 4, 500, 5000).then(function (list) {
|
|
104
|
+
assert.strictEqual(list[0].name.toLowerCase(), 'cmd.exe');
|
|
105
|
+
assert.strictEqual(list[1].name.toLowerCase(), 'powershell.exe');
|
|
106
|
+
assert.strictEqual(list[2].name.toLowerCase(), 'notepad.exe');
|
|
107
|
+
assert.strictEqual(list[3].name.toLowerCase(), 'node.exe');
|
|
108
|
+
term.kill();
|
|
109
|
+
var desiredState = {};
|
|
110
|
+
desiredState[list[0].pid] = false;
|
|
111
|
+
desiredState[list[1].pid] = false;
|
|
112
|
+
desiredState[list[2].pid] = true;
|
|
113
|
+
desiredState[list[3].pid] = false;
|
|
114
|
+
pollForProcessState(desiredState).then(function () {
|
|
115
|
+
// Kill notepad before done
|
|
116
|
+
process.kill(list[2].pid);
|
|
117
|
+
done();
|
|
118
|
+
});
|
|
118
119
|
});
|
|
119
120
|
});
|
|
120
121
|
});
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
122
|
+
describe('resize', function () {
|
|
123
|
+
it('should throw a non-native exception when resizing an invalid value', function () {
|
|
124
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty });
|
|
125
|
+
assert.throws(function () { return term.resize(-1, -1); });
|
|
126
|
+
assert.throws(function () { return term.resize(0, 0); });
|
|
127
|
+
assert.doesNotThrow(function () { return term.resize(1, 1); });
|
|
128
|
+
});
|
|
129
|
+
it('should throw a non-native exception when resizing a killed terminal', function (done) {
|
|
130
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', [], { useConpty: useConpty });
|
|
131
|
+
term._defer(function () {
|
|
132
|
+
term.on('exit', function () {
|
|
133
|
+
assert.throws(function () { return term.resize(1, 1); });
|
|
134
|
+
done();
|
|
135
|
+
});
|
|
136
|
+
term.destroy();
|
|
137
|
+
});
|
|
138
|
+
});
|
|
128
139
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
140
|
+
describe('Args as CommandLine', function () {
|
|
141
|
+
it('should not fail running a file containing a space in the path', function (done) {
|
|
142
|
+
var spaceFolder = path.resolve(__dirname, '..', 'fixtures', 'space folder');
|
|
143
|
+
if (!fs.existsSync(spaceFolder)) {
|
|
144
|
+
fs.mkdirSync(spaceFolder);
|
|
145
|
+
}
|
|
146
|
+
var cmdCopiedPath = path.resolve(spaceFolder, 'cmd.exe');
|
|
147
|
+
var data = fs.readFileSync(process.env.windir + "\\System32\\cmd.exe");
|
|
148
|
+
fs.writeFileSync(cmdCopiedPath, data);
|
|
149
|
+
if (!fs.existsSync(cmdCopiedPath)) {
|
|
150
|
+
// Skip test if git bash isn't installed
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
var term = new windowsTerminal_1.WindowsTerminal(cmdCopiedPath, '/c echo "hello world"', { useConpty: useConpty });
|
|
154
|
+
var result = '';
|
|
155
|
+
term.on('data', function (data) {
|
|
156
|
+
result += data;
|
|
157
|
+
});
|
|
132
158
|
term.on('exit', function () {
|
|
133
|
-
assert.
|
|
159
|
+
assert.ok(result.indexOf('hello world') >= 1);
|
|
134
160
|
done();
|
|
135
161
|
});
|
|
136
|
-
term.destroy();
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
describe('Args as CommandLine', function () {
|
|
141
|
-
it('should not fail running a file containing a space in the path', function (done) {
|
|
142
|
-
var spaceFolder = path.resolve(__dirname, '..', 'fixtures', 'space folder');
|
|
143
|
-
if (!fs.existsSync(spaceFolder)) {
|
|
144
|
-
fs.mkdirSync(spaceFolder);
|
|
145
|
-
}
|
|
146
|
-
var cmdCopiedPath = path.resolve(spaceFolder, 'cmd.exe');
|
|
147
|
-
var data = fs.readFileSync(process.env.windir + "\\System32\\cmd.exe");
|
|
148
|
-
fs.writeFileSync(cmdCopiedPath, data);
|
|
149
|
-
if (!fs.existsSync(cmdCopiedPath)) {
|
|
150
|
-
// Skip test if git bash isn't installed
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
var term = new windowsTerminal_1.WindowsTerminal(cmdCopiedPath, '/c echo "hello world"', {});
|
|
154
|
-
var result = '';
|
|
155
|
-
term.on('data', function (data) {
|
|
156
|
-
result += data;
|
|
157
|
-
});
|
|
158
|
-
term.on('exit', function () {
|
|
159
|
-
assert.ok(result.indexOf('hello world') >= 1);
|
|
160
|
-
done();
|
|
161
162
|
});
|
|
162
163
|
});
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
164
|
+
describe('env', function () {
|
|
165
|
+
it('should set environment variables of the shell', function (done) {
|
|
166
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '/C echo %FOO%', { env: { FOO: 'BAR' } });
|
|
167
|
+
var result = '';
|
|
168
|
+
term.on('data', function (data) {
|
|
169
|
+
result += data;
|
|
170
|
+
});
|
|
171
|
+
term.on('exit', function () {
|
|
172
|
+
assert.ok(result.indexOf('BAR') >= 0);
|
|
173
|
+
done();
|
|
174
|
+
});
|
|
174
175
|
});
|
|
175
176
|
});
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
177
|
+
describe('On close', function () {
|
|
178
|
+
it('should return process zero exit codes', function (done) {
|
|
179
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '/C exit', { useConpty: useConpty });
|
|
180
|
+
term.on('exit', function (code) {
|
|
181
|
+
assert.strictEqual(code, 0);
|
|
182
|
+
done();
|
|
183
|
+
});
|
|
183
184
|
});
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
185
|
+
it('should return process non-zero exit codes', function (done) {
|
|
186
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '/C exit 2', { useConpty: useConpty });
|
|
187
|
+
term.on('exit', function (code) {
|
|
188
|
+
assert.strictEqual(code, 2);
|
|
189
|
+
done();
|
|
190
|
+
});
|
|
190
191
|
});
|
|
191
192
|
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
193
|
+
describe('Write', function () {
|
|
194
|
+
it('should accept input', function (done) {
|
|
195
|
+
var term = new windowsTerminal_1.WindowsTerminal('cmd.exe', '', { useConpty: useConpty });
|
|
196
|
+
term.write('exit\r');
|
|
197
|
+
term.on('exit', function () {
|
|
198
|
+
done();
|
|
199
|
+
});
|
|
199
200
|
});
|
|
200
201
|
});
|
|
201
202
|
});
|
|
@@ -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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"}
|
|
@@ -14,6 +14,9 @@ conoutSocket.connect(conoutPipeName, function () {
|
|
|
14
14
|
conoutSocket.pipe(workerSocket);
|
|
15
15
|
});
|
|
16
16
|
server.listen(conout_1.getWorkerPipeName(conoutPipeName));
|
|
17
|
+
if (!worker_threads_1.parentPort) {
|
|
18
|
+
throw new Error('worker_threads parentPort is null');
|
|
19
|
+
}
|
|
17
20
|
worker_threads_1.parentPort.postMessage(1 /* READY */);
|
|
18
21
|
});
|
|
19
22
|
//# 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,YAAY,GAAG,IAAI,YAAM,EAAE,CAAC;AAClC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE;IACnC,IAAM,MAAM,GAAG,kBAAY,CAAC,UAAA,YAAY;QACtC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,0BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;
|
|
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,YAAY,GAAG,IAAI,YAAM,EAAE,CAAC;AAClC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE;IACnC,IAAM,MAAM,GAAG,kBAAY,CAAC,UAAA,YAAY;QACtC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,0BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAEjD,IAAI,CAAC,2BAAU,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;KACtD;IACD,2BAAU,CAAC,WAAW,eAA2B,CAAC;AACpD,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Microsoft Corporation"
|
|
6
6
|
},
|
|
7
|
-
"version": "
|
|
7
|
+
"version": "1.1.0-beta1",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"main": "./lib/index.js",
|
|
10
10
|
"types": "./typings/node-pty.d.ts",
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"build": "tsc -b ./src/tsconfig.json",
|
|
37
37
|
"watch": "tsc -b -w ./src/tsconfig.json",
|
|
38
38
|
"lint": "eslint -c .eslintrc.js --ext .ts src/",
|
|
39
|
-
"install": "node scripts/install.js",
|
|
40
39
|
"postinstall": "node scripts/post-install.js",
|
|
41
40
|
"test": "cross-env NODE_ENV=test mocha -R spec --exit lib/*.test.js",
|
|
42
41
|
"posttest": "npm run lint",
|
|
@@ -44,7 +43,7 @@
|
|
|
44
43
|
"prepublishOnly": "npm run build"
|
|
45
44
|
},
|
|
46
45
|
"dependencies": {
|
|
47
|
-
"nan": "^2.
|
|
46
|
+
"nan": "^2.17.0"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
|
50
49
|
"@types/mocha": "^7.0.2",
|
|
@@ -53,7 +52,7 @@
|
|
|
53
52
|
"@typescript-eslint/parser": "^2.27.0",
|
|
54
53
|
"cross-env": "^5.1.4",
|
|
55
54
|
"eslint": "^6.8.0",
|
|
56
|
-
"mocha": "
|
|
55
|
+
"mocha": "10",
|
|
57
56
|
"ps-list": "^6.0.0",
|
|
58
57
|
"typescript": "^3.8.3"
|
|
59
58
|
}
|
package/scripts/post-install.js
CHANGED
|
@@ -9,6 +9,7 @@ var BUILD_FILES = [
|
|
|
9
9
|
path.join(RELEASE_DIR, 'conpty_console_list.pdb'),
|
|
10
10
|
path.join(RELEASE_DIR, 'pty.node'),
|
|
11
11
|
path.join(RELEASE_DIR, 'pty.pdb'),
|
|
12
|
+
path.join(RELEASE_DIR, 'spawn-helper'),
|
|
12
13
|
path.join(RELEASE_DIR, 'winpty-agent.exe'),
|
|
13
14
|
path.join(RELEASE_DIR, 'winpty-agent.pdb'),
|
|
14
15
|
path.join(RELEASE_DIR, 'winpty.dll'),
|
package/src/interfaces.ts
CHANGED
|
@@ -31,6 +31,12 @@ export interface ITerminal {
|
|
|
31
31
|
*/
|
|
32
32
|
resize(cols: number, rows: number): void;
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Clears the pty's internal representation of its buffer. This is a no-op
|
|
36
|
+
* unless on Windows/ConPTY.
|
|
37
|
+
*/
|
|
38
|
+
clear(): void;
|
|
39
|
+
|
|
34
40
|
/**
|
|
35
41
|
* Close, kill and destroy the socket.
|
|
36
42
|
*/
|
|
@@ -100,7 +106,7 @@ interface IBasePtyForkOptions {
|
|
|
100
106
|
rows?: number;
|
|
101
107
|
cwd?: string;
|
|
102
108
|
env?: IProcessEnv;
|
|
103
|
-
encoding?: string;
|
|
109
|
+
encoding?: string | null;
|
|
104
110
|
handleFlowControl?: boolean;
|
|
105
111
|
flowControlPause?: string;
|
|
106
112
|
flowControlResume?: string;
|
|
@@ -119,5 +125,5 @@ export interface IWindowsPtyForkOptions extends IBasePtyForkOptions {
|
|
|
119
125
|
export interface IPtyOpenOptions {
|
|
120
126
|
cols?: number;
|
|
121
127
|
rows?: number;
|
|
122
|
-
encoding?: string;
|
|
128
|
+
encoding?: string | null;
|
|
123
129
|
}
|
package/src/native.d.ts
CHANGED
|
@@ -6,21 +6,23 @@ interface IConptyNative {
|
|
|
6
6
|
startProcess(file: string, cols: number, rows: number, debug: boolean, pipeName: string, conptyInheritCursor: boolean): IConptyProcess;
|
|
7
7
|
connect(ptyId: number, commandLine: string, cwd: string, env: string[], onExitCallback: (exitCode: number) => void): { pid: number };
|
|
8
8
|
resize(ptyId: number, cols: number, rows: number): void;
|
|
9
|
+
clear(ptyId: number): void;
|
|
9
10
|
kill(ptyId: number): void;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
interface IWinptyNative {
|
|
13
14
|
startProcess(file: string, commandLine: string, env: string[], cwd: string, cols: number, rows: number, debug: boolean): IWinptyProcess;
|
|
14
|
-
resize(
|
|
15
|
-
kill(pid: number,
|
|
15
|
+
resize(pid: number, cols: number, rows: number): void;
|
|
16
|
+
kill(pid: number, innerPid: number): void;
|
|
16
17
|
getProcessList(pid: number): number[];
|
|
17
|
-
getExitCode(
|
|
18
|
+
getExitCode(innerPid: number): number;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
interface IUnixNative {
|
|
21
|
-
fork(file: string, args: string[], parsedEnv: string[], cwd: string, cols: number, rows: number, uid: number, gid: number, useUtf8: boolean, onExitCallback: (code: number, signal: number) => void): IUnixProcess;
|
|
22
|
+
fork(file: string, args: string[], parsedEnv: string[], cwd: string, cols: number, rows: number, uid: number, gid: number, useUtf8: boolean, helperPath: string, onExitCallback: (code: number, signal: number) => void): IUnixProcess;
|
|
22
23
|
open(cols: number, rows: number): IUnixOpenProcess;
|
|
23
24
|
process(fd: number, pty: string): string;
|
|
25
|
+
process(pid: number): string;
|
|
24
26
|
resize(fd: number, cols: number, rows: number): void;
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -38,7 +40,6 @@ interface IWinptyProcess {
|
|
|
38
40
|
conout: string;
|
|
39
41
|
pid: number;
|
|
40
42
|
innerPid: number;
|
|
41
|
-
innerPidHandle: number;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
interface IUnixProcess {
|
package/src/terminal.test.ts
CHANGED
|
@@ -29,6 +29,9 @@ class TestTerminal extends Terminal {
|
|
|
29
29
|
public resize(cols: number, rows: number): void {
|
|
30
30
|
throw new Error('Method not implemented.');
|
|
31
31
|
}
|
|
32
|
+
public clear(): void {
|
|
33
|
+
throw new Error('Method not implemented.');
|
|
34
|
+
}
|
|
32
35
|
public destroy(): void {
|
|
33
36
|
throw new Error('Method not implemented.');
|
|
34
37
|
}
|
package/src/terminal.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { Socket } from 'net';
|
|
8
8
|
import { EventEmitter } from 'events';
|
|
9
|
-
import { ITerminal, IPtyForkOptions } from './interfaces';
|
|
9
|
+
import { ITerminal, IPtyForkOptions, IProcessEnv } from './interfaces';
|
|
10
10
|
import { EventEmitter2, IEvent } from './eventEmitter2';
|
|
11
11
|
import { IExitEvent } from './types';
|
|
12
12
|
|
|
@@ -22,18 +22,18 @@ const FLOW_CONTROL_PAUSE = '\x13'; // defaults to XOFF
|
|
|
22
22
|
const FLOW_CONTROL_RESUME = '\x11'; // defaults to XON
|
|
23
23
|
|
|
24
24
|
export abstract class Terminal implements ITerminal {
|
|
25
|
-
protected _socket
|
|
26
|
-
protected _pid: number;
|
|
27
|
-
protected _fd: number;
|
|
25
|
+
protected _socket!: Socket; // HACK: This is unsafe
|
|
26
|
+
protected _pid: number = 0;
|
|
27
|
+
protected _fd: number = 0;
|
|
28
28
|
protected _pty: any;
|
|
29
29
|
|
|
30
|
-
protected _file
|
|
31
|
-
protected _name
|
|
32
|
-
protected _cols: number;
|
|
33
|
-
protected _rows: number;
|
|
30
|
+
protected _file!: string; // HACK: This is unsafe
|
|
31
|
+
protected _name!: string; // HACK: This is unsafe
|
|
32
|
+
protected _cols: number = 0;
|
|
33
|
+
protected _rows: number = 0;
|
|
34
34
|
|
|
35
|
-
protected _readable: boolean;
|
|
36
|
-
protected _writable: boolean;
|
|
35
|
+
protected _readable: boolean = false;
|
|
36
|
+
protected _writable: boolean = false;
|
|
37
37
|
|
|
38
38
|
protected _internalee: EventEmitter;
|
|
39
39
|
private _flowControlPause: string;
|
|
@@ -53,6 +53,11 @@ export abstract class Terminal implements ITerminal {
|
|
|
53
53
|
// for 'close'
|
|
54
54
|
this._internalee = new EventEmitter();
|
|
55
55
|
|
|
56
|
+
// setup flow control handling
|
|
57
|
+
this.handleFlowControl = !!(opt?.handleFlowControl);
|
|
58
|
+
this._flowControlPause = opt?.flowControlPause || FLOW_CONTROL_PAUSE;
|
|
59
|
+
this._flowControlResume = opt?.flowControlResume || FLOW_CONTROL_RESUME;
|
|
60
|
+
|
|
56
61
|
if (!opt) {
|
|
57
62
|
return;
|
|
58
63
|
}
|
|
@@ -67,11 +72,6 @@ export abstract class Terminal implements ITerminal {
|
|
|
67
72
|
this._checkType('uid', opt.uid ? opt.uid : undefined, 'number');
|
|
68
73
|
this._checkType('gid', opt.gid ? opt.gid : undefined, 'number');
|
|
69
74
|
this._checkType('encoding', opt.encoding ? opt.encoding : undefined, 'string');
|
|
70
|
-
|
|
71
|
-
// setup flow control handling
|
|
72
|
-
this.handleFlowControl = !!(opt.handleFlowControl);
|
|
73
|
-
this._flowControlPause = opt.flowControlPause || FLOW_CONTROL_PAUSE;
|
|
74
|
-
this._flowControlResume = opt.flowControlResume || FLOW_CONTROL_RESUME;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
protected abstract _write(data: string): void;
|
|
@@ -157,9 +157,9 @@ export abstract class Terminal implements ITerminal {
|
|
|
157
157
|
|
|
158
158
|
public emit(eventName: string, ...args: any[]): any {
|
|
159
159
|
if (eventName === 'close') {
|
|
160
|
-
return this._internalee.emit.apply(this._internalee, arguments);
|
|
160
|
+
return this._internalee.emit.apply(this._internalee, arguments as any);
|
|
161
161
|
}
|
|
162
|
-
return this._socket.emit.apply(this._socket, arguments);
|
|
162
|
+
return this._socket.emit.apply(this._socket, arguments as any);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
public listeners(eventName: string): Function[] {
|
|
@@ -179,12 +179,13 @@ export abstract class Terminal implements ITerminal {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
public abstract resize(cols: number, rows: number): void;
|
|
182
|
+
public abstract clear(): void;
|
|
182
183
|
public abstract destroy(): void;
|
|
183
184
|
public abstract kill(signal?: string): void;
|
|
184
185
|
|
|
185
186
|
public abstract get process(): string;
|
|
186
|
-
public abstract get master(): Socket;
|
|
187
|
-
public abstract get slave(): Socket;
|
|
187
|
+
public abstract get master(): Socket| undefined;
|
|
188
|
+
public abstract get slave(): Socket | undefined;
|
|
188
189
|
|
|
189
190
|
protected _close(): void {
|
|
190
191
|
this._socket.readable = false;
|
|
@@ -194,7 +195,7 @@ export abstract class Terminal implements ITerminal {
|
|
|
194
195
|
this._readable = false;
|
|
195
196
|
}
|
|
196
197
|
|
|
197
|
-
protected _parseEnv(env:
|
|
198
|
+
protected _parseEnv(env: IProcessEnv): string[] {
|
|
198
199
|
const keys = Object.keys(env || {});
|
|
199
200
|
const pairs = [];
|
|
200
201
|
|