@shitiandmw/node-pty 1.1.0-agent.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.
- package/LICENSE +69 -0
- package/README.md +170 -0
- package/binding.gyp +111 -0
- package/deps/.editorconfig +2 -0
- package/deps/winpty/.drone.yml +17 -0
- package/deps/winpty/.gitattributes +19 -0
- package/deps/winpty/LICENSE +21 -0
- package/deps/winpty/Makefile +166 -0
- package/deps/winpty/README.md +151 -0
- package/deps/winpty/RELEASES.md +280 -0
- package/deps/winpty/VERSION.txt +1 -0
- package/deps/winpty/configure +167 -0
- package/deps/winpty/misc/BufferResizeTests.cc +90 -0
- package/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
- package/deps/winpty/misc/ClearConsole.cc +72 -0
- package/deps/winpty/misc/ConinMode.cc +117 -0
- package/deps/winpty/misc/ConinMode.ps1 +116 -0
- package/deps/winpty/misc/ConoutMode.cc +113 -0
- package/deps/winpty/misc/DebugClient.py +42 -0
- package/deps/winpty/misc/DebugServer.py +63 -0
- package/deps/winpty/misc/DumpLines.py +5 -0
- package/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
- package/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
- package/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
- package/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
- package/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
- package/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
- package/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
- package/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
- package/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
- package/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
- package/deps/winpty/misc/FontSurvey.cc +100 -0
- package/deps/winpty/misc/FormatChar.h +21 -0
- package/deps/winpty/misc/FreezePerfTest.cc +62 -0
- package/deps/winpty/misc/GetCh.cc +20 -0
- package/deps/winpty/misc/GetConsolePos.cc +41 -0
- package/deps/winpty/misc/GetFont.cc +261 -0
- package/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
- package/deps/winpty/misc/IsNewConsole.cc +87 -0
- package/deps/winpty/misc/MouseInputNotes.txt +90 -0
- package/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
- package/deps/winpty/misc/Notes.txt +219 -0
- package/deps/winpty/misc/OSVersion.cc +27 -0
- package/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
- package/deps/winpty/misc/ScreenBufferTest.cc +671 -0
- package/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
- package/deps/winpty/misc/SelectAllTest.cc +45 -0
- package/deps/winpty/misc/SetBufferSize.cc +32 -0
- package/deps/winpty/misc/SetCursorPos.cc +10 -0
- package/deps/winpty/misc/SetFont.cc +145 -0
- package/deps/winpty/misc/SetWindowRect.cc +36 -0
- package/deps/winpty/misc/ShowArgv.cc +12 -0
- package/deps/winpty/misc/ShowConsoleInput.cc +40 -0
- package/deps/winpty/misc/Spew.py +5 -0
- package/deps/winpty/misc/TestUtil.cc +172 -0
- package/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
- package/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
- package/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
- package/deps/winpty/misc/UnixEcho.cc +89 -0
- package/deps/winpty/misc/Utf16Echo.cc +46 -0
- package/deps/winpty/misc/VeryLargeRead.cc +122 -0
- package/deps/winpty/misc/VkEscapeTest.cc +56 -0
- package/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
- package/deps/winpty/misc/Win10WrapTest1.cc +57 -0
- package/deps/winpty/misc/Win10WrapTest2.cc +30 -0
- package/deps/winpty/misc/Win32Echo1.cc +26 -0
- package/deps/winpty/misc/Win32Echo2.cc +19 -0
- package/deps/winpty/misc/Win32Test1.cc +46 -0
- package/deps/winpty/misc/Win32Test2.cc +70 -0
- package/deps/winpty/misc/Win32Test3.cc +78 -0
- package/deps/winpty/misc/Win32Write1.cc +44 -0
- package/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
- package/deps/winpty/misc/WriteConsole.cc +106 -0
- package/deps/winpty/misc/build32.sh +9 -0
- package/deps/winpty/misc/build64.sh +9 -0
- package/deps/winpty/misc/color-test.sh +212 -0
- package/deps/winpty/misc/font-notes.txt +300 -0
- package/deps/winpty/misc/winbug-15048.cc +201 -0
- package/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
- package/deps/winpty/ship/common_ship.py +53 -0
- package/deps/winpty/ship/make_msvc_package.py +165 -0
- package/deps/winpty/ship/ship.py +108 -0
- package/deps/winpty/src/agent/Agent.cc +613 -0
- package/deps/winpty/src/agent/Agent.h +103 -0
- package/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
- package/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
- package/deps/winpty/src/agent/ConsoleFont.cc +632 -0
- package/deps/winpty/src/agent/ConsoleFont.h +28 -0
- package/deps/winpty/src/agent/ConsoleInput.cc +852 -0
- package/deps/winpty/src/agent/ConsoleInput.h +109 -0
- package/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
- package/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
- package/deps/winpty/src/agent/ConsoleLine.cc +152 -0
- package/deps/winpty/src/agent/ConsoleLine.h +41 -0
- package/deps/winpty/src/agent/Coord.h +87 -0
- package/deps/winpty/src/agent/DebugShowInput.cc +239 -0
- package/deps/winpty/src/agent/DebugShowInput.h +32 -0
- package/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
- package/deps/winpty/src/agent/DefaultInputMap.h +28 -0
- package/deps/winpty/src/agent/DsrSender.h +30 -0
- package/deps/winpty/src/agent/EventLoop.cc +99 -0
- package/deps/winpty/src/agent/EventLoop.h +47 -0
- package/deps/winpty/src/agent/InputMap.cc +246 -0
- package/deps/winpty/src/agent/InputMap.h +114 -0
- package/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
- package/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
- package/deps/winpty/src/agent/NamedPipe.cc +378 -0
- package/deps/winpty/src/agent/NamedPipe.h +125 -0
- package/deps/winpty/src/agent/Scraper.cc +699 -0
- package/deps/winpty/src/agent/Scraper.h +103 -0
- package/deps/winpty/src/agent/SimplePool.h +75 -0
- package/deps/winpty/src/agent/SmallRect.h +143 -0
- package/deps/winpty/src/agent/Terminal.cc +535 -0
- package/deps/winpty/src/agent/Terminal.h +69 -0
- package/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
- package/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
- package/deps/winpty/src/agent/Win32Console.cc +107 -0
- package/deps/winpty/src/agent/Win32Console.h +67 -0
- package/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
- package/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
- package/deps/winpty/src/agent/main.cc +114 -0
- package/deps/winpty/src/agent/subdir.mk +61 -0
- package/deps/winpty/src/configurations.gypi +60 -0
- package/deps/winpty/src/debugserver/DebugServer.cc +117 -0
- package/deps/winpty/src/debugserver/subdir.mk +41 -0
- package/deps/winpty/src/include/winpty.h +242 -0
- package/deps/winpty/src/include/winpty_constants.h +131 -0
- package/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
- package/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
- package/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
- package/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
- package/deps/winpty/src/libwinpty/subdir.mk +46 -0
- package/deps/winpty/src/libwinpty/winpty.cc +970 -0
- package/deps/winpty/src/shared/AgentMsg.h +38 -0
- package/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
- package/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
- package/deps/winpty/src/shared/Buffer.cc +103 -0
- package/deps/winpty/src/shared/Buffer.h +102 -0
- package/deps/winpty/src/shared/DebugClient.cc +187 -0
- package/deps/winpty/src/shared/DebugClient.h +38 -0
- package/deps/winpty/src/shared/GenRandom.cc +138 -0
- package/deps/winpty/src/shared/GenRandom.h +55 -0
- package/deps/winpty/src/shared/GetCommitHash.bat +13 -0
- package/deps/winpty/src/shared/Mutex.h +54 -0
- package/deps/winpty/src/shared/OsModule.h +63 -0
- package/deps/winpty/src/shared/OwnedHandle.cc +36 -0
- package/deps/winpty/src/shared/OwnedHandle.h +45 -0
- package/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
- package/deps/winpty/src/shared/StringBuilder.h +227 -0
- package/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
- package/deps/winpty/src/shared/StringUtil.cc +55 -0
- package/deps/winpty/src/shared/StringUtil.h +80 -0
- package/deps/winpty/src/shared/TimeMeasurement.h +63 -0
- package/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
- package/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
- package/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
- package/deps/winpty/src/shared/WindowsSecurity.h +104 -0
- package/deps/winpty/src/shared/WindowsVersion.cc +252 -0
- package/deps/winpty/src/shared/WindowsVersion.h +29 -0
- package/deps/winpty/src/shared/WinptyAssert.cc +55 -0
- package/deps/winpty/src/shared/WinptyAssert.h +64 -0
- package/deps/winpty/src/shared/WinptyException.cc +57 -0
- package/deps/winpty/src/shared/WinptyException.h +43 -0
- package/deps/winpty/src/shared/WinptyVersion.cc +42 -0
- package/deps/winpty/src/shared/WinptyVersion.h +27 -0
- package/deps/winpty/src/shared/winpty_snprintf.h +99 -0
- package/deps/winpty/src/subdir.mk +5 -0
- package/deps/winpty/src/tests/subdir.mk +28 -0
- package/deps/winpty/src/tests/trivial_test.cc +158 -0
- package/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
- package/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
- package/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
- package/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
- package/deps/winpty/src/unix-adapter/Util.cc +86 -0
- package/deps/winpty/src/unix-adapter/Util.h +31 -0
- package/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
- package/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
- package/deps/winpty/src/unix-adapter/main.cc +729 -0
- package/deps/winpty/src/unix-adapter/subdir.mk +41 -0
- package/deps/winpty/src/winpty.gyp +234 -0
- package/deps/winpty/vcbuild.bat +83 -0
- package/lib/conpty_console_list_agent.js +16 -0
- package/lib/conpty_console_list_agent.js.map +1 -0
- package/lib/eventEmitter2.js +47 -0
- package/lib/eventEmitter2.js.map +1 -0
- package/lib/eventEmitter2.test.js +30 -0
- package/lib/eventEmitter2.test.js.map +1 -0
- package/lib/index.js +52 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces.js +7 -0
- package/lib/interfaces.js.map +1 -0
- package/lib/shared/conout.js +11 -0
- package/lib/shared/conout.js.map +1 -0
- package/lib/terminal.js +190 -0
- package/lib/terminal.js.map +1 -0
- package/lib/terminal.test.js +139 -0
- package/lib/terminal.test.js.map +1 -0
- package/lib/testUtils.test.js +28 -0
- package/lib/testUtils.test.js.map +1 -0
- package/lib/types.js +7 -0
- package/lib/types.js.map +1 -0
- package/lib/unixTerminal.js +346 -0
- package/lib/unixTerminal.js.map +1 -0
- package/lib/unixTerminal.test.js +351 -0
- package/lib/unixTerminal.test.js.map +1 -0
- package/lib/utils.js +39 -0
- package/lib/utils.js.map +1 -0
- package/lib/windowsConoutConnection.js +125 -0
- package/lib/windowsConoutConnection.js.map +1 -0
- package/lib/windowsPtyAgent.js +320 -0
- package/lib/windowsPtyAgent.js.map +1 -0
- package/lib/windowsPtyAgent.test.js +90 -0
- package/lib/windowsPtyAgent.test.js.map +1 -0
- package/lib/windowsTerminal.js +199 -0
- package/lib/windowsTerminal.js.map +1 -0
- package/lib/windowsTerminal.test.js +219 -0
- package/lib/windowsTerminal.test.js.map +1 -0
- package/lib/worker/conoutSocketWorker.js +22 -0
- package/lib/worker/conoutSocketWorker.js.map +1 -0
- package/package.json +68 -0
- package/prebuilds/darwin-arm64/pty.node +0 -0
- package/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/prebuilds/darwin-x64/pty.node +0 -0
- package/prebuilds/darwin-x64/spawn-helper +0 -0
- package/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/prebuilds/win32-arm64/conpty.node +0 -0
- package/prebuilds/win32-arm64/conpty.pdb +0 -0
- package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
- package/prebuilds/win32-arm64/pty.node +0 -0
- package/prebuilds/win32-arm64/pty.pdb +0 -0
- package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
- package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
- package/prebuilds/win32-arm64/winpty.dll +0 -0
- package/prebuilds/win32-arm64/winpty.pdb +0 -0
- package/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/prebuilds/win32-x64/conpty.node +0 -0
- package/prebuilds/win32-x64/conpty.pdb +0 -0
- package/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
- package/prebuilds/win32-x64/pty.node +0 -0
- package/prebuilds/win32-x64/pty.pdb +0 -0
- package/prebuilds/win32-x64/winpty-agent.exe +0 -0
- package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
- package/prebuilds/win32-x64/winpty.dll +0 -0
- package/prebuilds/win32-x64/winpty.pdb +0 -0
- package/scripts/gen-compile-commands.js +8 -0
- package/scripts/increment-version.js +54 -0
- package/scripts/post-install.js +99 -0
- package/scripts/prebuild.js +39 -0
- package/scripts/sync-prebuild.js +31 -0
- package/scripts/verify-darwin-fd-leak.js +63 -0
- package/src/conpty_console_list_agent.ts +15 -0
- package/src/eventEmitter2.test.ts +30 -0
- package/src/eventEmitter2.ts +48 -0
- package/src/index.ts +52 -0
- package/src/interfaces.ts +130 -0
- package/src/native.d.ts +54 -0
- package/src/shared/conout.ts +15 -0
- package/src/terminal.test.ts +119 -0
- package/src/terminal.ts +211 -0
- package/src/testUtils.test.ts +23 -0
- package/src/tsconfig.json +22 -0
- package/src/types.ts +15 -0
- package/src/unix/pty.cc +808 -0
- package/src/unix/spawn-helper.cc +23 -0
- package/src/unixTerminal.test.ts +367 -0
- package/src/unixTerminal.ts +388 -0
- package/src/utils.ts +29 -0
- package/src/win/conpty.cc +583 -0
- package/src/win/conpty.h +41 -0
- package/src/win/conpty_console_list.cc +44 -0
- package/src/win/path_util.cc +95 -0
- package/src/win/path_util.h +26 -0
- package/src/win/winpty.cc +333 -0
- package/src/windowsConoutConnection.ts +82 -0
- package/src/windowsPtyAgent.test.ts +94 -0
- package/src/windowsPtyAgent.ts +321 -0
- package/src/windowsTerminal.test.ts +229 -0
- package/src/windowsTerminal.ts +203 -0
- package/src/worker/conoutSocketWorker.ts +22 -0
- package/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
- package/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
- package/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
- package/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
- package/typings/node-pty.d.ts +211 -0
package/src/terminal.ts
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2012-2015, Christopher Jeffrey (MIT License)
|
|
3
|
+
* Copyright (c) 2016, Daniel Imms (MIT License).
|
|
4
|
+
* Copyright (c) 2018, Microsoft Corporation (MIT License).
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Socket } from 'net';
|
|
8
|
+
import { EventEmitter } from 'events';
|
|
9
|
+
import { ITerminal, IPtyForkOptions, IProcessEnv } from './interfaces';
|
|
10
|
+
import { EventEmitter2, IEvent } from './eventEmitter2';
|
|
11
|
+
import { IExitEvent } from './types';
|
|
12
|
+
|
|
13
|
+
export const DEFAULT_COLS: number = 80;
|
|
14
|
+
export const DEFAULT_ROWS: number = 24;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Default messages to indicate PAUSE/RESUME for automatic flow control.
|
|
18
|
+
* To avoid conflicts with rebound XON/XOFF control codes (such as on-my-zsh),
|
|
19
|
+
* the sequences can be customized in `IPtyForkOptions`.
|
|
20
|
+
*/
|
|
21
|
+
const FLOW_CONTROL_PAUSE = '\x13'; // defaults to XOFF
|
|
22
|
+
const FLOW_CONTROL_RESUME = '\x11'; // defaults to XON
|
|
23
|
+
|
|
24
|
+
export abstract class Terminal implements ITerminal {
|
|
25
|
+
protected _socket!: Socket; // HACK: This is unsafe
|
|
26
|
+
protected _pid: number = 0;
|
|
27
|
+
protected _fd: number = 0;
|
|
28
|
+
protected _pty: any;
|
|
29
|
+
|
|
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
|
+
|
|
35
|
+
protected _readable: boolean = false;
|
|
36
|
+
protected _writable: boolean = false;
|
|
37
|
+
|
|
38
|
+
protected _internalee: EventEmitter;
|
|
39
|
+
private _flowControlPause: string;
|
|
40
|
+
private _flowControlResume: string;
|
|
41
|
+
public handleFlowControl: boolean;
|
|
42
|
+
|
|
43
|
+
private _onData = new EventEmitter2<string>();
|
|
44
|
+
public get onData(): IEvent<string> { return this._onData.event; }
|
|
45
|
+
private _onExit = new EventEmitter2<IExitEvent>();
|
|
46
|
+
public get onExit(): IEvent<IExitEvent> { return this._onExit.event; }
|
|
47
|
+
|
|
48
|
+
public get pid(): number { return this._pid; }
|
|
49
|
+
public get cols(): number { return this._cols; }
|
|
50
|
+
public get rows(): number { return this._rows; }
|
|
51
|
+
|
|
52
|
+
constructor(opt?: IPtyForkOptions) {
|
|
53
|
+
// for 'close'
|
|
54
|
+
this._internalee = new EventEmitter();
|
|
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
|
+
|
|
61
|
+
if (!opt) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Do basic type checks here in case node-pty is being used within JavaScript. If the wrong
|
|
66
|
+
// types go through to the C++ side it can lead to hard to diagnose exceptions.
|
|
67
|
+
this._checkType('name', opt.name ? opt.name : undefined, 'string');
|
|
68
|
+
this._checkType('cols', opt.cols ? opt.cols : undefined, 'number');
|
|
69
|
+
this._checkType('rows', opt.rows ? opt.rows : undefined, 'number');
|
|
70
|
+
this._checkType('cwd', opt.cwd ? opt.cwd : undefined, 'string');
|
|
71
|
+
this._checkType('env', opt.env ? opt.env : undefined, 'object');
|
|
72
|
+
this._checkType('uid', opt.uid ? opt.uid : undefined, 'number');
|
|
73
|
+
this._checkType('gid', opt.gid ? opt.gid : undefined, 'number');
|
|
74
|
+
this._checkType('encoding', opt.encoding ? opt.encoding : undefined, 'string');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
protected abstract _write(data: string | Buffer): void;
|
|
78
|
+
|
|
79
|
+
public write(data: string | Buffer): void {
|
|
80
|
+
if (this.handleFlowControl) {
|
|
81
|
+
// PAUSE/RESUME messages are not forwarded to the pty
|
|
82
|
+
if (data === this._flowControlPause) {
|
|
83
|
+
this.pause();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (data === this._flowControlResume) {
|
|
87
|
+
this.resume();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// everything else goes to the real pty
|
|
92
|
+
this._write(data);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
protected _forwardEvents(): void {
|
|
96
|
+
this.on('data', e => this._onData.fire(e));
|
|
97
|
+
this.on('exit', (exitCode, signal) => this._onExit.fire({ exitCode, signal }));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
protected _checkType<T>(name: string, value: T | undefined, type: string, allowArray: boolean = false): void {
|
|
101
|
+
if (value === undefined) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (allowArray) {
|
|
105
|
+
if (Array.isArray(value)) {
|
|
106
|
+
value.forEach((v, i) => {
|
|
107
|
+
if (typeof v !== type) {
|
|
108
|
+
throw new Error(`${name}[${i}] must be a ${type} (not a ${typeof v[i]})`);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (typeof value !== type) {
|
|
115
|
+
throw new Error(`${name} must be a ${type} (not a ${typeof value})`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** See net.Socket.end */
|
|
120
|
+
public end(data: string): void {
|
|
121
|
+
this._socket.end(data);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** See stream.Readable.pipe */
|
|
125
|
+
public pipe(dest: any, options: any): any {
|
|
126
|
+
return this._socket.pipe(dest, options);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** See net.Socket.pause */
|
|
130
|
+
public pause(): Socket {
|
|
131
|
+
return this._socket.pause();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** See net.Socket.resume */
|
|
135
|
+
public resume(): Socket {
|
|
136
|
+
return this._socket.resume();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** See net.Socket.setEncoding */
|
|
140
|
+
public setEncoding(encoding: string | null): void {
|
|
141
|
+
if ((this._socket as any)._decoder) {
|
|
142
|
+
delete (this._socket as any)._decoder;
|
|
143
|
+
}
|
|
144
|
+
if (encoding) {
|
|
145
|
+
this._socket.setEncoding(encoding);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
public addListener(eventName: string, listener: (...args: any[]) => any): void { this.on(eventName, listener); }
|
|
150
|
+
public on(eventName: string, listener: (...args: any[]) => any): void {
|
|
151
|
+
if (eventName === 'close') {
|
|
152
|
+
this._internalee.on('close', listener);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
this._socket.on(eventName, listener);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
public emit(eventName: string, ...args: any[]): any {
|
|
159
|
+
if (eventName === 'close') {
|
|
160
|
+
return this._internalee.emit.apply(this._internalee, arguments as any);
|
|
161
|
+
}
|
|
162
|
+
return this._socket.emit.apply(this._socket, arguments as any);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
public listeners(eventName: string): Function[] {
|
|
166
|
+
return this._socket.listeners(eventName);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
public removeListener(eventName: string, listener: (...args: any[]) => any): void {
|
|
170
|
+
this._socket.removeListener(eventName, listener);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
public removeAllListeners(eventName: string): void {
|
|
174
|
+
this._socket.removeAllListeners(eventName);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
public once(eventName: string, listener: (...args: any[]) => any): void {
|
|
178
|
+
this._socket.once(eventName, listener);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
public abstract resize(cols: number, rows: number): void;
|
|
182
|
+
public abstract clear(): void;
|
|
183
|
+
public abstract destroy(): void;
|
|
184
|
+
public abstract kill(signal?: string): void;
|
|
185
|
+
|
|
186
|
+
public abstract get process(): string;
|
|
187
|
+
public abstract get master(): Socket| undefined;
|
|
188
|
+
public abstract get slave(): Socket | undefined;
|
|
189
|
+
|
|
190
|
+
protected _close(): void {
|
|
191
|
+
this._socket.readable = false;
|
|
192
|
+
this.write = () => {};
|
|
193
|
+
this.end = () => {};
|
|
194
|
+
this._writable = false;
|
|
195
|
+
this._readable = false;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
protected _parseEnv(env: IProcessEnv): string[] {
|
|
199
|
+
const keys = Object.keys(env || {});
|
|
200
|
+
const pairs = [];
|
|
201
|
+
|
|
202
|
+
for (let i = 0; i < keys.length; i++) {
|
|
203
|
+
if (keys[i] === undefined) {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
pairs.push(keys[i] + '=' + env[keys[i]]);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return pairs;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019, Microsoft Corporation (MIT License).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export function pollUntil(cb: () => boolean, timeout: number, interval: number): Promise<void> {
|
|
6
|
+
return new Promise<void>((resolve, reject) => {
|
|
7
|
+
const intervalId = setInterval(() => {
|
|
8
|
+
if (cb()) {
|
|
9
|
+
clearInterval(intervalId);
|
|
10
|
+
clearTimeout(timeoutId);
|
|
11
|
+
resolve();
|
|
12
|
+
}
|
|
13
|
+
}, interval);
|
|
14
|
+
const timeoutId = setTimeout(() => {
|
|
15
|
+
clearInterval(intervalId);
|
|
16
|
+
if (cb()) {
|
|
17
|
+
resolve();
|
|
18
|
+
} else {
|
|
19
|
+
reject();
|
|
20
|
+
}
|
|
21
|
+
}, timeout);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"target": "es5",
|
|
5
|
+
"rootDir": ".",
|
|
6
|
+
"outDir": "../lib",
|
|
7
|
+
"sourceMap": true,
|
|
8
|
+
"lib": [
|
|
9
|
+
"es2015"
|
|
10
|
+
],
|
|
11
|
+
"strict": true
|
|
12
|
+
},
|
|
13
|
+
"exclude": [
|
|
14
|
+
"node_modules",
|
|
15
|
+
"scripts",
|
|
16
|
+
"index.js",
|
|
17
|
+
"demo.js",
|
|
18
|
+
"lib",
|
|
19
|
+
"test",
|
|
20
|
+
"examples"
|
|
21
|
+
]
|
|
22
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2017, Daniel Imms (MIT License).
|
|
3
|
+
* Copyright (c) 2018, Microsoft Corporation (MIT License).
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type ArgvOrCommandLine = string[] | string;
|
|
7
|
+
|
|
8
|
+
export interface IExitEvent {
|
|
9
|
+
exitCode: number;
|
|
10
|
+
signal: number | undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface IDisposable {
|
|
14
|
+
dispose(): void;
|
|
15
|
+
}
|