vibeman 0.0.13 → 0.0.16
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 +201 -0
- package/NOTICE +4 -0
- package/dist/api.js +1155 -300
- package/dist/commit.txt +1 -1
- package/dist/index.js +127 -48
- package/dist/node_modules/node-pty/LICENSE +69 -0
- package/dist/node_modules/node-pty/README.md +165 -0
- package/dist/node_modules/node-pty/binding.gyp +111 -0
- package/dist/node_modules/node-pty/deps/.editorconfig +2 -0
- package/dist/node_modules/node-pty/deps/winpty/.drone.yml +17 -0
- package/dist/node_modules/node-pty/deps/winpty/.gitattributes +19 -0
- package/dist/node_modules/node-pty/deps/winpty/LICENSE +21 -0
- package/dist/node_modules/node-pty/deps/winpty/Makefile +166 -0
- package/dist/node_modules/node-pty/deps/winpty/README.md +151 -0
- package/dist/node_modules/node-pty/deps/winpty/RELEASES.md +280 -0
- package/dist/node_modules/node-pty/deps/winpty/VERSION.txt +1 -0
- package/dist/node_modules/node-pty/deps/winpty/configure +167 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/BufferResizeTests.cc +90 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ClearConsole.cc +72 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ConinMode.cc +117 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ConinMode.ps1 +116 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ConoutMode.cc +113 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/DebugClient.py +42 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/DebugServer.py +63 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/DumpLines.py +5 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/FontSurvey.cc +100 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/FormatChar.h +21 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/FreezePerfTest.cc +62 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/GetCh.cc +20 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/GetConsolePos.cc +41 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/GetFont.cc +261 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/IsNewConsole.cc +87 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/MouseInputNotes.txt +90 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Notes.txt +219 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/OSVersion.cc +27 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ScreenBufferTest.cc +671 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/SelectAllTest.cc +45 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/SetBufferSize.cc +32 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/SetCursorPos.cc +10 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/SetFont.cc +145 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/SetWindowRect.cc +36 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ShowArgv.cc +12 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/ShowConsoleInput.cc +40 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Spew.py +5 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/TestUtil.cc +172 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/UnixEcho.cc +89 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Utf16Echo.cc +46 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/VeryLargeRead.cc +122 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/VkEscapeTest.cc +56 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win10WrapTest1.cc +57 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win10WrapTest2.cc +30 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win32Echo1.cc +26 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win32Echo2.cc +19 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win32Test1.cc +46 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win32Test2.cc +70 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win32Test3.cc +78 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/Win32Write1.cc +44 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/WriteConsole.cc +106 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/build32.sh +9 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/build64.sh +9 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/color-test.sh +212 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/font-notes.txt +300 -0
- package/dist/node_modules/node-pty/deps/winpty/misc/winbug-15048.cc +201 -0
- package/dist/node_modules/node-pty/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
- package/dist/node_modules/node-pty/deps/winpty/ship/common_ship.py +53 -0
- package/dist/node_modules/node-pty/deps/winpty/ship/make_msvc_package.py +165 -0
- package/dist/node_modules/node-pty/deps/winpty/ship/ship.py +108 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Agent.cc +613 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Agent.h +103 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleFont.cc +632 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleFont.h +28 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleInput.cc +852 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleInput.h +109 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleLine.cc +152 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/ConsoleLine.h +41 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Coord.h +87 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/DebugShowInput.cc +239 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/DebugShowInput.h +32 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/DefaultInputMap.h +28 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/DsrSender.h +30 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/EventLoop.cc +99 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/EventLoop.h +47 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/InputMap.cc +246 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/InputMap.h +114 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/NamedPipe.cc +378 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/NamedPipe.h +125 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Scraper.cc +699 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Scraper.h +103 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/SimplePool.h +75 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/SmallRect.h +143 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Terminal.cc +535 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Terminal.h +69 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Win32Console.cc +107 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Win32Console.h +67 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/main.cc +114 -0
- package/dist/node_modules/node-pty/deps/winpty/src/agent/subdir.mk +61 -0
- package/dist/node_modules/node-pty/deps/winpty/src/configurations.gypi +60 -0
- package/dist/node_modules/node-pty/deps/winpty/src/debugserver/DebugServer.cc +117 -0
- package/dist/node_modules/node-pty/deps/winpty/src/debugserver/subdir.mk +41 -0
- package/dist/node_modules/node-pty/deps/winpty/src/include/winpty.h +242 -0
- package/dist/node_modules/node-pty/deps/winpty/src/include/winpty_constants.h +131 -0
- package/dist/node_modules/node-pty/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
- package/dist/node_modules/node-pty/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
- package/dist/node_modules/node-pty/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
- package/dist/node_modules/node-pty/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
- package/dist/node_modules/node-pty/deps/winpty/src/libwinpty/subdir.mk +46 -0
- package/dist/node_modules/node-pty/deps/winpty/src/libwinpty/winpty.cc +970 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/AgentMsg.h +38 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/Buffer.cc +103 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/Buffer.h +102 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/DebugClient.cc +187 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/DebugClient.h +38 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/GenRandom.cc +138 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/GenRandom.h +55 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/GetCommitHash.bat +13 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/Mutex.h +54 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/OsModule.h +63 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/OwnedHandle.cc +36 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/OwnedHandle.h +45 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/StringBuilder.h +227 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/StringUtil.cc +55 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/StringUtil.h +80 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/TimeMeasurement.h +63 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WindowsSecurity.h +104 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WindowsVersion.cc +252 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WindowsVersion.h +29 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WinptyAssert.cc +55 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WinptyAssert.h +64 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WinptyException.cc +57 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WinptyException.h +43 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WinptyVersion.cc +42 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/WinptyVersion.h +27 -0
- package/dist/node_modules/node-pty/deps/winpty/src/shared/winpty_snprintf.h +99 -0
- package/dist/node_modules/node-pty/deps/winpty/src/subdir.mk +5 -0
- package/dist/node_modules/node-pty/deps/winpty/src/tests/subdir.mk +28 -0
- package/dist/node_modules/node-pty/deps/winpty/src/tests/trivial_test.cc +158 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/Util.cc +86 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/Util.h +31 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/main.cc +729 -0
- package/dist/node_modules/node-pty/deps/winpty/src/unix-adapter/subdir.mk +41 -0
- package/dist/node_modules/node-pty/deps/winpty/src/winpty.gyp +234 -0
- package/dist/node_modules/node-pty/deps/winpty/vcbuild.bat +83 -0
- package/dist/node_modules/node-pty/lib/conpty_console_list_agent.js +16 -0
- package/dist/node_modules/node-pty/lib/conpty_console_list_agent.js.map +1 -0
- package/dist/node_modules/node-pty/lib/eventEmitter2.js +47 -0
- package/dist/node_modules/node-pty/lib/eventEmitter2.js.map +1 -0
- package/dist/node_modules/node-pty/lib/eventEmitter2.test.js +30 -0
- package/dist/node_modules/node-pty/lib/eventEmitter2.test.js.map +1 -0
- package/dist/node_modules/node-pty/lib/index.js +52 -0
- package/dist/node_modules/node-pty/lib/index.js.map +1 -0
- package/dist/node_modules/node-pty/lib/interfaces.js +7 -0
- package/dist/node_modules/node-pty/lib/interfaces.js.map +1 -0
- package/dist/node_modules/node-pty/lib/shared/conout.js +11 -0
- package/dist/node_modules/node-pty/lib/shared/conout.js.map +1 -0
- package/dist/node_modules/node-pty/lib/terminal.js +190 -0
- package/dist/node_modules/node-pty/lib/terminal.js.map +1 -0
- package/dist/node_modules/node-pty/lib/terminal.test.js +139 -0
- package/dist/node_modules/node-pty/lib/terminal.test.js.map +1 -0
- package/dist/node_modules/node-pty/lib/testUtils.test.js +28 -0
- package/dist/node_modules/node-pty/lib/testUtils.test.js.map +1 -0
- package/dist/node_modules/node-pty/lib/types.js +7 -0
- package/dist/node_modules/node-pty/lib/types.js.map +1 -0
- package/dist/node_modules/node-pty/lib/unixTerminal.js +346 -0
- package/dist/node_modules/node-pty/lib/unixTerminal.js.map +1 -0
- package/dist/node_modules/node-pty/lib/unixTerminal.test.js +351 -0
- package/dist/node_modules/node-pty/lib/unixTerminal.test.js.map +1 -0
- package/dist/node_modules/node-pty/lib/utils.js +39 -0
- package/dist/node_modules/node-pty/lib/utils.js.map +1 -0
- package/dist/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
- package/dist/node_modules/node-pty/lib/windowsConoutConnection.js.map +1 -0
- package/dist/node_modules/node-pty/lib/windowsPtyAgent.js +320 -0
- package/dist/node_modules/node-pty/lib/windowsPtyAgent.js.map +1 -0
- package/dist/node_modules/node-pty/lib/windowsPtyAgent.test.js +90 -0
- package/dist/node_modules/node-pty/lib/windowsPtyAgent.test.js.map +1 -0
- package/dist/node_modules/node-pty/lib/windowsTerminal.js +199 -0
- package/dist/node_modules/node-pty/lib/windowsTerminal.js.map +1 -0
- package/dist/node_modules/node-pty/lib/windowsTerminal.test.js +219 -0
- package/dist/node_modules/node-pty/lib/windowsTerminal.test.js.map +1 -0
- package/dist/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
- package/dist/node_modules/node-pty/lib/worker/conoutSocketWorker.js.map +1 -0
- package/dist/node_modules/node-pty/package.json +64 -0
- package/dist/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/dist/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
- package/dist/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
- package/dist/node_modules/node-pty/scripts/gen-compile-commands.js +8 -0
- package/dist/node_modules/node-pty/scripts/increment-version.js +54 -0
- package/dist/node_modules/node-pty/scripts/post-install.js +80 -0
- package/dist/node_modules/node-pty/scripts/prebuild.js +34 -0
- package/dist/node_modules/node-pty/src/conpty_console_list_agent.ts +15 -0
- package/dist/node_modules/node-pty/src/eventEmitter2.test.ts +30 -0
- package/dist/node_modules/node-pty/src/eventEmitter2.ts +48 -0
- package/dist/node_modules/node-pty/src/index.ts +52 -0
- package/dist/node_modules/node-pty/src/interfaces.ts +130 -0
- package/dist/node_modules/node-pty/src/native.d.ts +54 -0
- package/dist/node_modules/node-pty/src/shared/conout.ts +15 -0
- package/dist/node_modules/node-pty/src/terminal.test.ts +119 -0
- package/dist/node_modules/node-pty/src/terminal.ts +211 -0
- package/dist/node_modules/node-pty/src/testUtils.test.ts +23 -0
- package/dist/node_modules/node-pty/src/tsconfig.json +22 -0
- package/dist/node_modules/node-pty/src/types.ts +15 -0
- package/dist/node_modules/node-pty/src/unix/pty.cc +799 -0
- package/dist/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
- package/dist/node_modules/node-pty/src/unixTerminal.test.ts +367 -0
- package/dist/node_modules/node-pty/src/unixTerminal.ts +388 -0
- package/dist/node_modules/node-pty/src/utils.ts +29 -0
- package/dist/node_modules/node-pty/src/win/conpty.cc +583 -0
- package/dist/node_modules/node-pty/src/win/conpty.h +41 -0
- package/dist/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
- package/dist/node_modules/node-pty/src/win/path_util.cc +95 -0
- package/dist/node_modules/node-pty/src/win/path_util.h +26 -0
- package/dist/node_modules/node-pty/src/win/winpty.cc +333 -0
- package/dist/node_modules/node-pty/src/windowsConoutConnection.ts +82 -0
- package/dist/node_modules/node-pty/src/windowsPtyAgent.test.ts +94 -0
- package/dist/node_modules/node-pty/src/windowsPtyAgent.ts +321 -0
- package/dist/node_modules/node-pty/src/windowsTerminal.test.ts +229 -0
- package/dist/node_modules/node-pty/src/windowsTerminal.ts +203 -0
- package/dist/node_modules/node-pty/src/worker/conoutSocketWorker.ts +22 -0
- package/dist/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
- package/dist/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
- package/dist/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
- package/dist/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
- package/dist/node_modules/node-pty/typings/node-pty.d.ts +211 -0
- package/dist/scripts/lib/test-fixtures.mjs +1 -1
- package/dist/ui/assets/{index-CWcSlUCR.js → index-B49cVd68.js} +1 -1
- package/dist/ui/assets/{index-BrOS5hPg.js → index-B77m9jwg.js} +1 -1
- package/dist/ui/assets/{index-DWT6BjYW.js → index-C61bzN1F.js} +1 -1
- package/dist/ui/assets/index-CEeUnKFj.js +1101 -0
- package/dist/ui/assets/{index-Btdv65e_.js → index-CHinfK5y.js} +1 -1
- package/dist/ui/assets/{index-DkFfIHJr.js → index-CdwIPvvC.js} +1 -1
- package/dist/ui/assets/{index-C-AZWfRD.js → index-CkMEKMtG.js} +1 -1
- package/dist/ui/assets/{index-B-SoOQ3F.js → index-Cl5D1lr0.js} +1 -1
- package/dist/ui/assets/{index-q7X3WW0-.js → index-CnWjvgnt.js} +1 -1
- package/dist/ui/assets/{index-B_lr0R8Z.js → index-CpEU6Vxs.js} +1 -1
- package/dist/ui/assets/{index-CBQN5qXY.js → index-D6YdKIji.js} +1 -1
- package/dist/ui/assets/{index-BK62XAzY.js → index-DARaaYLg.js} +1 -1
- package/dist/ui/assets/{index-D3gXfrX-.js → index-DErcnUD0.js} +1 -1
- package/dist/ui/assets/{index-D1F9nIOz.js → index-DJxs2IHl.js} +1 -1
- package/dist/ui/assets/{index-AacKgcwz.js → index-DKTHpT6c.js} +1 -1
- package/dist/ui/assets/{index-CXV7fZxu.js → index-DPgndyQt.js} +1 -1
- package/dist/ui/assets/{index-BvHGNf4Y.js → index-DRYG0hWl.js} +1 -1
- package/dist/ui/assets/{index-BCRvuZjU.js → index-D_--wkOk.js} +1 -1
- package/dist/ui/assets/{index-o8f2ilDp.js → index-Db2EhJOX.js} +1 -1
- package/dist/ui/assets/index-DcDF1o3A.css +1 -0
- package/dist/ui/assets/{index-BnaWildZ.js → index-Dck1mk1E.js} +1 -1
- package/dist/ui/assets/{index-Dhu8BZu7.js → index-b2CKrEE6.js} +1 -1
- package/dist/ui/assets/{index-cS068OSU.js → index-mhz4dktY.js} +1 -1
- package/dist/ui/assets/{index-CuieGJbi.js → index-ssu5S1KA.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +6 -3
- package/dist/ui/assets/index-C8FDQRxy.js +0 -1095
- package/dist/ui/assets/index-D_uhpUwJ.css +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019, Microsoft Corporation (MIT License).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { IDisposable } from './types';
|
|
6
|
+
|
|
7
|
+
interface IListener<T> {
|
|
8
|
+
(e: T): void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface IEvent<T> {
|
|
12
|
+
(listener: (e: T) => any): IDisposable;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class EventEmitter2<T> {
|
|
16
|
+
private _listeners: IListener<T>[] = [];
|
|
17
|
+
private _event?: IEvent<T>;
|
|
18
|
+
|
|
19
|
+
public get event(): IEvent<T> {
|
|
20
|
+
if (!this._event) {
|
|
21
|
+
this._event = (listener: (e: T) => any) => {
|
|
22
|
+
this._listeners.push(listener);
|
|
23
|
+
const disposable = {
|
|
24
|
+
dispose: () => {
|
|
25
|
+
for (let i = 0; i < this._listeners.length; i++) {
|
|
26
|
+
if (this._listeners[i] === listener) {
|
|
27
|
+
this._listeners.splice(i, 1);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return disposable;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return this._event;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public fire(data: T): void {
|
|
40
|
+
const queue: IListener<T>[] = [];
|
|
41
|
+
for (let i = 0; i < this._listeners.length; i++) {
|
|
42
|
+
queue.push(this._listeners[i]);
|
|
43
|
+
}
|
|
44
|
+
for (let i = 0; i < queue.length; i++) {
|
|
45
|
+
queue[i].call(undefined, data);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2012-2015, Christopher Jeffrey, Peter Sunde (MIT License)
|
|
3
|
+
* Copyright (c) 2016, Daniel Imms (MIT License).
|
|
4
|
+
* Copyright (c) 2018, Microsoft Corporation (MIT License).
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { ITerminal, IPtyOpenOptions, IPtyForkOptions, IWindowsPtyForkOptions } from './interfaces';
|
|
8
|
+
import { ArgvOrCommandLine } from './types';
|
|
9
|
+
import { loadNativeModule } from './utils';
|
|
10
|
+
|
|
11
|
+
let terminalCtor: any;
|
|
12
|
+
if (process.platform === 'win32') {
|
|
13
|
+
terminalCtor = require('./windowsTerminal').WindowsTerminal;
|
|
14
|
+
} else {
|
|
15
|
+
terminalCtor = require('./unixTerminal').UnixTerminal;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Forks a process as a pseudoterminal.
|
|
20
|
+
* @param file The file to launch.
|
|
21
|
+
* @param args The file's arguments as argv (string[]) or in a pre-escaped
|
|
22
|
+
* CommandLine format (string). Note that the CommandLine option is only
|
|
23
|
+
* available on Windows and is expected to be escaped properly.
|
|
24
|
+
* @param options The options of the terminal.
|
|
25
|
+
* @throws When the file passed to spawn with does not exists.
|
|
26
|
+
* @see CommandLineToArgvW https://msdn.microsoft.com/en-us/library/windows/desktop/bb776391(v=vs.85).aspx
|
|
27
|
+
* @see Parsing C++ Comamnd-Line Arguments https://msdn.microsoft.com/en-us/library/17w5ykft.aspx
|
|
28
|
+
* @see GetCommandLine https://msdn.microsoft.com/en-us/library/windows/desktop/ms683156.aspx
|
|
29
|
+
*/
|
|
30
|
+
export function spawn(file?: string, args?: ArgvOrCommandLine, opt?: IPtyForkOptions | IWindowsPtyForkOptions): ITerminal {
|
|
31
|
+
return new terminalCtor(file, args, opt);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** @deprecated */
|
|
35
|
+
export function fork(file?: string, args?: ArgvOrCommandLine, opt?: IPtyForkOptions | IWindowsPtyForkOptions): ITerminal {
|
|
36
|
+
return new terminalCtor(file, args, opt);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** @deprecated */
|
|
40
|
+
export function createTerminal(file?: string, args?: ArgvOrCommandLine, opt?: IPtyForkOptions | IWindowsPtyForkOptions): ITerminal {
|
|
41
|
+
return new terminalCtor(file, args, opt);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function open(options: IPtyOpenOptions): ITerminal {
|
|
45
|
+
return terminalCtor.open(options);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Expose the native API when not Windows, note that this is not public API and
|
|
50
|
+
* could be removed at any time.
|
|
51
|
+
*/
|
|
52
|
+
export const native = (process.platform !== 'win32' ? loadNativeModule('pty').module : null);
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016, Daniel Imms (MIT License).
|
|
3
|
+
* Copyright (c) 2018, Microsoft Corporation (MIT License).
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface IProcessEnv {
|
|
7
|
+
[key: string]: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ITerminal {
|
|
11
|
+
/**
|
|
12
|
+
* Gets the name of the process.
|
|
13
|
+
*/
|
|
14
|
+
process: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Gets the process ID.
|
|
18
|
+
*/
|
|
19
|
+
pid: number;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Writes data to the socket.
|
|
23
|
+
* @param data The data to write.
|
|
24
|
+
*/
|
|
25
|
+
write(data: string | Buffer): void;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Resize the pty.
|
|
29
|
+
* @param cols The number of columns.
|
|
30
|
+
* @param rows The number of rows.
|
|
31
|
+
*/
|
|
32
|
+
resize(cols: number, rows: number): void;
|
|
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
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Close, kill and destroy the socket.
|
|
42
|
+
*/
|
|
43
|
+
destroy(): void;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Kill the pty.
|
|
47
|
+
* @param signal The signal to send, by default this is SIGHUP. This is not
|
|
48
|
+
* supported on Windows.
|
|
49
|
+
*/
|
|
50
|
+
kill(signal?: string): void;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Set the pty socket encoding.
|
|
54
|
+
*/
|
|
55
|
+
setEncoding(encoding: string | null): void;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Resume the pty socket.
|
|
59
|
+
*/
|
|
60
|
+
resume(): void;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Pause the pty socket.
|
|
64
|
+
*/
|
|
65
|
+
pause(): void;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Alias for ITerminal.on(eventName, listener).
|
|
69
|
+
*/
|
|
70
|
+
addListener(eventName: string, listener: (...args: any[]) => any): void;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Adds the listener function to the end of the listeners array for the event
|
|
74
|
+
* named eventName.
|
|
75
|
+
* @param eventName The event name.
|
|
76
|
+
* @param listener The callback function
|
|
77
|
+
*/
|
|
78
|
+
on(eventName: string, listener: (...args: any[]) => any): void;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Returns a copy of the array of listeners for the event named eventName.
|
|
82
|
+
*/
|
|
83
|
+
listeners(eventName: string): Function[];
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Removes the specified listener from the listener array for the event named
|
|
87
|
+
* eventName.
|
|
88
|
+
*/
|
|
89
|
+
removeListener(eventName: string, listener: (...args: any[]) => any): void;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Removes all listeners, or those of the specified eventName.
|
|
93
|
+
*/
|
|
94
|
+
removeAllListeners(eventName: string): void;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Adds a one time listener function for the event named eventName. The next
|
|
98
|
+
* time eventName is triggered, this listener is removed and then invoked.
|
|
99
|
+
*/
|
|
100
|
+
once(eventName: string, listener: (...args: any[]) => any): void;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface IBasePtyForkOptions {
|
|
104
|
+
name?: string;
|
|
105
|
+
cols?: number;
|
|
106
|
+
rows?: number;
|
|
107
|
+
cwd?: string;
|
|
108
|
+
env?: IProcessEnv;
|
|
109
|
+
encoding?: string | null;
|
|
110
|
+
handleFlowControl?: boolean;
|
|
111
|
+
flowControlPause?: string;
|
|
112
|
+
flowControlResume?: string;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface IPtyForkOptions extends IBasePtyForkOptions {
|
|
116
|
+
uid?: number;
|
|
117
|
+
gid?: number;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface IWindowsPtyForkOptions extends IBasePtyForkOptions {
|
|
121
|
+
useConpty?: boolean;
|
|
122
|
+
useConptyDll?: boolean;
|
|
123
|
+
conptyInheritCursor?: boolean;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface IPtyOpenOptions {
|
|
127
|
+
cols?: number;
|
|
128
|
+
rows?: number;
|
|
129
|
+
encoding?: string | null;
|
|
130
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018, Microsoft Corporation (MIT License).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
interface IConptyNative {
|
|
6
|
+
startProcess(file: string, cols: number, rows: number, debug: boolean, pipeName: string, conptyInheritCursor: boolean, useConptyDll: boolean): IConptyProcess;
|
|
7
|
+
connect(ptyId: number, commandLine: string, cwd: string, env: string[], useConptyDll: boolean, onExitCallback: (exitCode: number) => void): { pid: number };
|
|
8
|
+
resize(ptyId: number, cols: number, rows: number, useConptyDll: boolean): void;
|
|
9
|
+
clear(ptyId: number, useConptyDll: boolean): void;
|
|
10
|
+
kill(ptyId: number, useConptyDll: boolean): void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface IWinptyNative {
|
|
14
|
+
startProcess(file: string, commandLine: string, env: string[], cwd: string, cols: number, rows: number, debug: boolean): IWinptyProcess;
|
|
15
|
+
resize(pid: number, cols: number, rows: number): void;
|
|
16
|
+
kill(pid: number, innerPid: number): void;
|
|
17
|
+
getProcessList(pid: number): number[];
|
|
18
|
+
getExitCode(innerPid: number): number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface IUnixNative {
|
|
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;
|
|
23
|
+
open(cols: number, rows: number): IUnixOpenProcess;
|
|
24
|
+
process(fd: number, pty?: string): string;
|
|
25
|
+
resize(fd: number, cols: number, rows: number): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface IConptyProcess {
|
|
29
|
+
pty: number;
|
|
30
|
+
fd: number;
|
|
31
|
+
conin: string;
|
|
32
|
+
conout: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface IWinptyProcess {
|
|
36
|
+
pty: number;
|
|
37
|
+
fd: number;
|
|
38
|
+
conin: string;
|
|
39
|
+
conout: string;
|
|
40
|
+
pid: number;
|
|
41
|
+
innerPid: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface IUnixProcess {
|
|
45
|
+
fd: number;
|
|
46
|
+
pid: number;
|
|
47
|
+
pty: string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface IUnixOpenProcess {
|
|
51
|
+
master: number;
|
|
52
|
+
slave: number;
|
|
53
|
+
pty: string;
|
|
54
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020, Microsoft Corporation (MIT License).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface IWorkerData {
|
|
6
|
+
conoutPipeName: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const enum ConoutWorkerMessage {
|
|
10
|
+
READY = 1
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function getWorkerPipeName(conoutPipeName: string): string {
|
|
14
|
+
return `${conoutPipeName}-worker`;
|
|
15
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2017, Daniel Imms (MIT License).
|
|
3
|
+
* Copyright (c) 2018, Microsoft Corporation (MIT License).
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import * as assert from 'assert';
|
|
7
|
+
import { WindowsTerminal } from './windowsTerminal';
|
|
8
|
+
import { UnixTerminal } from './unixTerminal';
|
|
9
|
+
import { Terminal } from './terminal';
|
|
10
|
+
import { Socket } from 'net';
|
|
11
|
+
|
|
12
|
+
const terminalConstructor = (process.platform === 'win32') ? WindowsTerminal : UnixTerminal;
|
|
13
|
+
const SHELL = (process.platform === 'win32') ? 'cmd.exe' : '/bin/bash';
|
|
14
|
+
|
|
15
|
+
let terminalCtor: WindowsTerminal | UnixTerminal;
|
|
16
|
+
if (process.platform === 'win32') {
|
|
17
|
+
terminalCtor = require('./windowsTerminal');
|
|
18
|
+
} else {
|
|
19
|
+
terminalCtor = require('./unixTerminal');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
class TestTerminal extends Terminal {
|
|
23
|
+
public checkType<T>(name: string, value: T, type: string, allowArray: boolean = false): void {
|
|
24
|
+
this._checkType(name, value, type, allowArray);
|
|
25
|
+
}
|
|
26
|
+
protected _write(data: string | Buffer): void {
|
|
27
|
+
throw new Error('Method not implemented.');
|
|
28
|
+
}
|
|
29
|
+
public resize(cols: number, rows: number): void {
|
|
30
|
+
throw new Error('Method not implemented.');
|
|
31
|
+
}
|
|
32
|
+
public clear(): void {
|
|
33
|
+
throw new Error('Method not implemented.');
|
|
34
|
+
}
|
|
35
|
+
public destroy(): void {
|
|
36
|
+
throw new Error('Method not implemented.');
|
|
37
|
+
}
|
|
38
|
+
public kill(signal?: string): void {
|
|
39
|
+
throw new Error('Method not implemented.');
|
|
40
|
+
}
|
|
41
|
+
public get process(): string {
|
|
42
|
+
throw new Error('Method not implemented.');
|
|
43
|
+
}
|
|
44
|
+
public get master(): Socket {
|
|
45
|
+
throw new Error('Method not implemented.');
|
|
46
|
+
}
|
|
47
|
+
public get slave(): Socket {
|
|
48
|
+
throw new Error('Method not implemented.');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
describe('Terminal', () => {
|
|
53
|
+
describe('constructor', () => {
|
|
54
|
+
it('should do basic type checks', () => {
|
|
55
|
+
assert.throws(
|
|
56
|
+
() => new (<any>terminalCtor)('a', 'b', { 'name': {} }),
|
|
57
|
+
'name must be a string (not a object)'
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
describe('checkType', () => {
|
|
63
|
+
it('should throw for the wrong type', () => {
|
|
64
|
+
const t = new TestTerminal();
|
|
65
|
+
assert.doesNotThrow(() => t.checkType('foo', 'test', 'string'));
|
|
66
|
+
assert.doesNotThrow(() => t.checkType('foo', 1, 'number'));
|
|
67
|
+
assert.doesNotThrow(() => t.checkType('foo', {}, 'object'));
|
|
68
|
+
|
|
69
|
+
assert.throws(() => t.checkType('foo', 'test', 'number'));
|
|
70
|
+
assert.throws(() => t.checkType('foo', 1, 'object'));
|
|
71
|
+
assert.throws(() => t.checkType('foo', {}, 'string'));
|
|
72
|
+
});
|
|
73
|
+
it('should throw for wrong types within arrays', () => {
|
|
74
|
+
const t = new TestTerminal();
|
|
75
|
+
assert.doesNotThrow(() => t.checkType('foo', ['test'], 'string', true));
|
|
76
|
+
assert.doesNotThrow(() => t.checkType('foo', [1], 'number', true));
|
|
77
|
+
assert.doesNotThrow(() => t.checkType('foo', [{}], 'object', true));
|
|
78
|
+
|
|
79
|
+
assert.throws(() => t.checkType('foo', ['test'], 'number', true));
|
|
80
|
+
assert.throws(() => t.checkType('foo', [1], 'object', true));
|
|
81
|
+
assert.throws(() => t.checkType('foo', [{}], 'string', true));
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('automatic flow control', () => {
|
|
86
|
+
it('should respect ctor flow control options', () => {
|
|
87
|
+
const pty = new terminalConstructor(SHELL, [], {handleFlowControl: true, flowControlPause: 'abc', flowControlResume: '123'});
|
|
88
|
+
assert.equal(pty.handleFlowControl, true);
|
|
89
|
+
assert.equal((pty as any)._flowControlPause, 'abc');
|
|
90
|
+
assert.equal((pty as any)._flowControlResume, '123');
|
|
91
|
+
});
|
|
92
|
+
// TODO: I don't think this test ever worked due to pollUntil being used incorrectly
|
|
93
|
+
// it('should do flow control automatically', async function(): Promise<void> {
|
|
94
|
+
// // Flow control doesn't work on Windows
|
|
95
|
+
// if (process.platform === 'win32') {
|
|
96
|
+
// return;
|
|
97
|
+
// }
|
|
98
|
+
|
|
99
|
+
// this.timeout(10000);
|
|
100
|
+
// const pty = new terminalConstructor(SHELL, [], {handleFlowControl: true, flowControlPause: 'PAUSE', flowControlResume: 'RESUME'});
|
|
101
|
+
// let read: string = '';
|
|
102
|
+
// pty.on('data', data => read += data);
|
|
103
|
+
// pty.on('pause', () => read += 'paused');
|
|
104
|
+
// pty.on('resume', () => read += 'resumed');
|
|
105
|
+
// pty.write('1');
|
|
106
|
+
// pty.write('PAUSE');
|
|
107
|
+
// pty.write('2');
|
|
108
|
+
// pty.write('RESUME');
|
|
109
|
+
// pty.write('3');
|
|
110
|
+
// await pollUntil(() => {
|
|
111
|
+
// return stripEscapeSequences(read).endsWith('1pausedresumed23');
|
|
112
|
+
// }, 100, 10);
|
|
113
|
+
// });
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
function stripEscapeSequences(data: string): string {
|
|
118
|
+
return data.replace(/\u001b\[0K/, '');
|
|
119
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -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
|
+
}
|