node-pty 1.2.0-beta.1 → 1.2.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +4 -5
  2. package/binding.gyp +76 -37
  3. package/lib/conpty_console_list_agent.js +10 -1
  4. package/lib/unixTerminal.js +6 -3
  5. package/lib/utils.js +1 -1
  6. package/lib/windowsPtyAgent.js +62 -95
  7. package/lib/windowsTerminal.js +4 -2
  8. package/package.json +6 -5
  9. package/prebuilds/darwin-arm64/pty.node +0 -0
  10. package/prebuilds/darwin-arm64/spawn-helper +0 -0
  11. package/prebuilds/darwin-x64/pty.node +0 -0
  12. package/prebuilds/darwin-x64/spawn-helper +0 -0
  13. package/prebuilds/linux-arm64/pty.node +0 -0
  14. package/prebuilds/linux-x64/pty.node +0 -0
  15. package/prebuilds/win32-arm64/conpty.node +0 -0
  16. package/prebuilds/win32-arm64/conpty.pdb +0 -0
  17. package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  18. package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  19. package/prebuilds/win32-x64/conpty.node +0 -0
  20. package/prebuilds/win32-x64/conpty.pdb +0 -0
  21. package/prebuilds/win32-x64/conpty_console_list.node +0 -0
  22. package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  23. package/scripts/post-install.js +1 -5
  24. package/src/unix/pty.cc +111 -35
  25. package/src/win/conpty.cc +1 -2
  26. package/typings/node-pty.d.ts +13 -9
  27. package/deps/.editorconfig +0 -2
  28. package/deps/winpty/.drone.yml +0 -17
  29. package/deps/winpty/.gitattributes +0 -19
  30. package/deps/winpty/LICENSE +0 -21
  31. package/deps/winpty/Makefile +0 -166
  32. package/deps/winpty/README.md +0 -151
  33. package/deps/winpty/RELEASES.md +0 -280
  34. package/deps/winpty/VERSION.txt +0 -1
  35. package/deps/winpty/configure +0 -167
  36. package/deps/winpty/misc/BufferResizeTests.cc +0 -90
  37. package/deps/winpty/misc/ChangeScreenBuffer.cc +0 -53
  38. package/deps/winpty/misc/ClearConsole.cc +0 -72
  39. package/deps/winpty/misc/ConinMode.cc +0 -117
  40. package/deps/winpty/misc/ConinMode.ps1 +0 -116
  41. package/deps/winpty/misc/ConoutMode.cc +0 -113
  42. package/deps/winpty/misc/DebugClient.py +0 -42
  43. package/deps/winpty/misc/DebugServer.py +0 -63
  44. package/deps/winpty/misc/DumpLines.py +0 -5
  45. package/deps/winpty/misc/EnableExtendedFlags.txt +0 -46
  46. package/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +0 -528
  47. package/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +0 -633
  48. package/deps/winpty/misc/Font-Report-June2016/CP932.txt +0 -630
  49. package/deps/winpty/misc/Font-Report-June2016/CP936.txt +0 -630
  50. package/deps/winpty/misc/Font-Report-June2016/CP949.txt +0 -630
  51. package/deps/winpty/misc/Font-Report-June2016/CP950.txt +0 -630
  52. package/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +0 -16
  53. package/deps/winpty/misc/Font-Report-June2016/Results.txt +0 -4
  54. package/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +0 -144
  55. package/deps/winpty/misc/FontSurvey.cc +0 -100
  56. package/deps/winpty/misc/FormatChar.h +0 -21
  57. package/deps/winpty/misc/FreezePerfTest.cc +0 -62
  58. package/deps/winpty/misc/GetCh.cc +0 -20
  59. package/deps/winpty/misc/GetConsolePos.cc +0 -41
  60. package/deps/winpty/misc/GetFont.cc +0 -261
  61. package/deps/winpty/misc/IdentifyConsoleWindow.ps1 +0 -51
  62. package/deps/winpty/misc/IsNewConsole.cc +0 -87
  63. package/deps/winpty/misc/MouseInputNotes.txt +0 -90
  64. package/deps/winpty/misc/MoveConsoleWindow.cc +0 -34
  65. package/deps/winpty/misc/Notes.txt +0 -219
  66. package/deps/winpty/misc/OSVersion.cc +0 -27
  67. package/deps/winpty/misc/ScreenBufferFreezeInactive.cc +0 -101
  68. package/deps/winpty/misc/ScreenBufferTest.cc +0 -671
  69. package/deps/winpty/misc/ScreenBufferTest2.cc +0 -151
  70. package/deps/winpty/misc/SelectAllTest.cc +0 -45
  71. package/deps/winpty/misc/SetBufferSize.cc +0 -32
  72. package/deps/winpty/misc/SetCursorPos.cc +0 -10
  73. package/deps/winpty/misc/SetFont.cc +0 -145
  74. package/deps/winpty/misc/SetWindowRect.cc +0 -36
  75. package/deps/winpty/misc/ShowArgv.cc +0 -12
  76. package/deps/winpty/misc/ShowConsoleInput.cc +0 -40
  77. package/deps/winpty/misc/Spew.py +0 -5
  78. package/deps/winpty/misc/TestUtil.cc +0 -172
  79. package/deps/winpty/misc/UnicodeDoubleWidthTest.cc +0 -102
  80. package/deps/winpty/misc/UnicodeWideTest1.cc +0 -246
  81. package/deps/winpty/misc/UnicodeWideTest2.cc +0 -130
  82. package/deps/winpty/misc/UnixEcho.cc +0 -89
  83. package/deps/winpty/misc/Utf16Echo.cc +0 -46
  84. package/deps/winpty/misc/VeryLargeRead.cc +0 -122
  85. package/deps/winpty/misc/VkEscapeTest.cc +0 -56
  86. package/deps/winpty/misc/Win10ResizeWhileFrozen.cc +0 -52
  87. package/deps/winpty/misc/Win10WrapTest1.cc +0 -57
  88. package/deps/winpty/misc/Win10WrapTest2.cc +0 -30
  89. package/deps/winpty/misc/Win32Echo1.cc +0 -26
  90. package/deps/winpty/misc/Win32Echo2.cc +0 -19
  91. package/deps/winpty/misc/Win32Test1.cc +0 -46
  92. package/deps/winpty/misc/Win32Test2.cc +0 -70
  93. package/deps/winpty/misc/Win32Test3.cc +0 -78
  94. package/deps/winpty/misc/Win32Write1.cc +0 -44
  95. package/deps/winpty/misc/WindowsBugCrashReader.cc +0 -27
  96. package/deps/winpty/misc/WriteConsole.cc +0 -106
  97. package/deps/winpty/misc/build32.sh +0 -9
  98. package/deps/winpty/misc/build64.sh +0 -9
  99. package/deps/winpty/misc/color-test.sh +0 -212
  100. package/deps/winpty/misc/font-notes.txt +0 -300
  101. package/deps/winpty/misc/winbug-15048.cc +0 -201
  102. package/deps/winpty/ship/build-pty4j-libpty.bat +0 -36
  103. package/deps/winpty/ship/common_ship.py +0 -53
  104. package/deps/winpty/ship/make_msvc_package.py +0 -165
  105. package/deps/winpty/ship/ship.py +0 -108
  106. package/deps/winpty/src/agent/Agent.cc +0 -613
  107. package/deps/winpty/src/agent/Agent.h +0 -103
  108. package/deps/winpty/src/agent/AgentCreateDesktop.cc +0 -84
  109. package/deps/winpty/src/agent/AgentCreateDesktop.h +0 -28
  110. package/deps/winpty/src/agent/ConsoleFont.cc +0 -632
  111. package/deps/winpty/src/agent/ConsoleFont.h +0 -28
  112. package/deps/winpty/src/agent/ConsoleInput.cc +0 -852
  113. package/deps/winpty/src/agent/ConsoleInput.h +0 -109
  114. package/deps/winpty/src/agent/ConsoleInputReencoding.cc +0 -121
  115. package/deps/winpty/src/agent/ConsoleInputReencoding.h +0 -36
  116. package/deps/winpty/src/agent/ConsoleLine.cc +0 -152
  117. package/deps/winpty/src/agent/ConsoleLine.h +0 -41
  118. package/deps/winpty/src/agent/Coord.h +0 -87
  119. package/deps/winpty/src/agent/DebugShowInput.cc +0 -239
  120. package/deps/winpty/src/agent/DebugShowInput.h +0 -32
  121. package/deps/winpty/src/agent/DefaultInputMap.cc +0 -422
  122. package/deps/winpty/src/agent/DefaultInputMap.h +0 -28
  123. package/deps/winpty/src/agent/DsrSender.h +0 -30
  124. package/deps/winpty/src/agent/EventLoop.cc +0 -99
  125. package/deps/winpty/src/agent/EventLoop.h +0 -47
  126. package/deps/winpty/src/agent/InputMap.cc +0 -246
  127. package/deps/winpty/src/agent/InputMap.h +0 -114
  128. package/deps/winpty/src/agent/LargeConsoleRead.cc +0 -71
  129. package/deps/winpty/src/agent/LargeConsoleRead.h +0 -68
  130. package/deps/winpty/src/agent/NamedPipe.cc +0 -378
  131. package/deps/winpty/src/agent/NamedPipe.h +0 -125
  132. package/deps/winpty/src/agent/Scraper.cc +0 -699
  133. package/deps/winpty/src/agent/Scraper.h +0 -103
  134. package/deps/winpty/src/agent/SimplePool.h +0 -75
  135. package/deps/winpty/src/agent/SmallRect.h +0 -143
  136. package/deps/winpty/src/agent/Terminal.cc +0 -535
  137. package/deps/winpty/src/agent/Terminal.h +0 -69
  138. package/deps/winpty/src/agent/UnicodeEncoding.h +0 -157
  139. package/deps/winpty/src/agent/UnicodeEncodingTest.cc +0 -189
  140. package/deps/winpty/src/agent/Win32Console.cc +0 -107
  141. package/deps/winpty/src/agent/Win32Console.h +0 -67
  142. package/deps/winpty/src/agent/Win32ConsoleBuffer.cc +0 -193
  143. package/deps/winpty/src/agent/Win32ConsoleBuffer.h +0 -99
  144. package/deps/winpty/src/agent/main.cc +0 -114
  145. package/deps/winpty/src/agent/subdir.mk +0 -61
  146. package/deps/winpty/src/configurations.gypi +0 -60
  147. package/deps/winpty/src/debugserver/DebugServer.cc +0 -117
  148. package/deps/winpty/src/debugserver/subdir.mk +0 -41
  149. package/deps/winpty/src/include/winpty.h +0 -242
  150. package/deps/winpty/src/include/winpty_constants.h +0 -131
  151. package/deps/winpty/src/libwinpty/AgentLocation.cc +0 -75
  152. package/deps/winpty/src/libwinpty/AgentLocation.h +0 -28
  153. package/deps/winpty/src/libwinpty/LibWinptyException.h +0 -54
  154. package/deps/winpty/src/libwinpty/WinptyInternal.h +0 -72
  155. package/deps/winpty/src/libwinpty/subdir.mk +0 -46
  156. package/deps/winpty/src/libwinpty/winpty.cc +0 -970
  157. package/deps/winpty/src/shared/AgentMsg.h +0 -38
  158. package/deps/winpty/src/shared/BackgroundDesktop.cc +0 -122
  159. package/deps/winpty/src/shared/BackgroundDesktop.h +0 -73
  160. package/deps/winpty/src/shared/Buffer.cc +0 -103
  161. package/deps/winpty/src/shared/Buffer.h +0 -102
  162. package/deps/winpty/src/shared/DebugClient.cc +0 -187
  163. package/deps/winpty/src/shared/DebugClient.h +0 -38
  164. package/deps/winpty/src/shared/GenRandom.cc +0 -138
  165. package/deps/winpty/src/shared/GenRandom.h +0 -55
  166. package/deps/winpty/src/shared/GetCommitHash.bat +0 -13
  167. package/deps/winpty/src/shared/Mutex.h +0 -54
  168. package/deps/winpty/src/shared/OsModule.h +0 -63
  169. package/deps/winpty/src/shared/OwnedHandle.cc +0 -36
  170. package/deps/winpty/src/shared/OwnedHandle.h +0 -45
  171. package/deps/winpty/src/shared/PrecompiledHeader.h +0 -43
  172. package/deps/winpty/src/shared/StringBuilder.h +0 -227
  173. package/deps/winpty/src/shared/StringBuilderTest.cc +0 -114
  174. package/deps/winpty/src/shared/StringUtil.cc +0 -55
  175. package/deps/winpty/src/shared/StringUtil.h +0 -80
  176. package/deps/winpty/src/shared/TimeMeasurement.h +0 -63
  177. package/deps/winpty/src/shared/UnixCtrlChars.h +0 -45
  178. package/deps/winpty/src/shared/UpdateGenVersion.bat +0 -20
  179. package/deps/winpty/src/shared/WindowsSecurity.cc +0 -460
  180. package/deps/winpty/src/shared/WindowsSecurity.h +0 -104
  181. package/deps/winpty/src/shared/WindowsVersion.cc +0 -252
  182. package/deps/winpty/src/shared/WindowsVersion.h +0 -29
  183. package/deps/winpty/src/shared/WinptyAssert.cc +0 -55
  184. package/deps/winpty/src/shared/WinptyAssert.h +0 -64
  185. package/deps/winpty/src/shared/WinptyException.cc +0 -57
  186. package/deps/winpty/src/shared/WinptyException.h +0 -43
  187. package/deps/winpty/src/shared/WinptyVersion.cc +0 -42
  188. package/deps/winpty/src/shared/WinptyVersion.h +0 -27
  189. package/deps/winpty/src/shared/winpty_snprintf.h +0 -99
  190. package/deps/winpty/src/subdir.mk +0 -5
  191. package/deps/winpty/src/tests/subdir.mk +0 -28
  192. package/deps/winpty/src/tests/trivial_test.cc +0 -158
  193. package/deps/winpty/src/unix-adapter/InputHandler.cc +0 -114
  194. package/deps/winpty/src/unix-adapter/InputHandler.h +0 -56
  195. package/deps/winpty/src/unix-adapter/OutputHandler.cc +0 -80
  196. package/deps/winpty/src/unix-adapter/OutputHandler.h +0 -53
  197. package/deps/winpty/src/unix-adapter/Util.cc +0 -86
  198. package/deps/winpty/src/unix-adapter/Util.h +0 -31
  199. package/deps/winpty/src/unix-adapter/WakeupFd.cc +0 -70
  200. package/deps/winpty/src/unix-adapter/WakeupFd.h +0 -42
  201. package/deps/winpty/src/unix-adapter/main.cc +0 -729
  202. package/deps/winpty/src/unix-adapter/subdir.mk +0 -41
  203. package/deps/winpty/src/winpty.gyp +0 -234
  204. package/deps/winpty/vcbuild.bat +0 -83
  205. package/lib/conpty_console_list_agent.js.map +0 -1
  206. package/lib/eventEmitter2.js.map +0 -1
  207. package/lib/eventEmitter2.test.js +0 -30
  208. package/lib/eventEmitter2.test.js.map +0 -1
  209. package/lib/index.js.map +0 -1
  210. package/lib/interfaces.js.map +0 -1
  211. package/lib/shared/conout.js.map +0 -1
  212. package/lib/terminal.js.map +0 -1
  213. package/lib/terminal.test.js +0 -139
  214. package/lib/terminal.test.js.map +0 -1
  215. package/lib/testUtils.test.js +0 -28
  216. package/lib/testUtils.test.js.map +0 -1
  217. package/lib/types.js.map +0 -1
  218. package/lib/unixTerminal.js.map +0 -1
  219. package/lib/unixTerminal.test.js +0 -351
  220. package/lib/unixTerminal.test.js.map +0 -1
  221. package/lib/utils.js.map +0 -1
  222. package/lib/windowsConoutConnection.js.map +0 -1
  223. package/lib/windowsPtyAgent.js.map +0 -1
  224. package/lib/windowsPtyAgent.test.js +0 -90
  225. package/lib/windowsPtyAgent.test.js.map +0 -1
  226. package/lib/windowsTerminal.js.map +0 -1
  227. package/lib/windowsTerminal.test.js +0 -219
  228. package/lib/windowsTerminal.test.js.map +0 -1
  229. package/lib/worker/conoutSocketWorker.js.map +0 -1
  230. package/prebuilds/win32-arm64/pty.node +0 -0
  231. package/prebuilds/win32-arm64/pty.pdb +0 -0
  232. package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  233. package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  234. package/prebuilds/win32-arm64/winpty.dll +0 -0
  235. package/prebuilds/win32-arm64/winpty.pdb +0 -0
  236. package/prebuilds/win32-x64/pty.node +0 -0
  237. package/prebuilds/win32-x64/pty.pdb +0 -0
  238. package/prebuilds/win32-x64/winpty-agent.exe +0 -0
  239. package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  240. package/prebuilds/win32-x64/winpty.dll +0 -0
  241. package/prebuilds/win32-x64/winpty.pdb +0 -0
  242. package/scripts/gen-compile-commands.js +0 -8
  243. package/scripts/increment-version.js +0 -54
  244. package/src/conpty_console_list_agent.ts +0 -15
  245. package/src/eventEmitter2.test.ts +0 -30
  246. package/src/eventEmitter2.ts +0 -48
  247. package/src/index.ts +0 -52
  248. package/src/interfaces.ts +0 -130
  249. package/src/native.d.ts +0 -54
  250. package/src/shared/conout.ts +0 -15
  251. package/src/terminal.test.ts +0 -119
  252. package/src/terminal.ts +0 -211
  253. package/src/testUtils.test.ts +0 -23
  254. package/src/tsconfig.json +0 -22
  255. package/src/types.ts +0 -15
  256. package/src/unixTerminal.test.ts +0 -367
  257. package/src/unixTerminal.ts +0 -388
  258. package/src/utils.ts +0 -29
  259. package/src/win/winpty.cc +0 -333
  260. package/src/windowsConoutConnection.ts +0 -82
  261. package/src/windowsPtyAgent.test.ts +0 -94
  262. package/src/windowsPtyAgent.ts +0 -321
  263. package/src/windowsTerminal.test.ts +0 -229
  264. package/src/windowsTerminal.ts +0 -203
  265. package/src/worker/conoutSocketWorker.ts +0 -22
package/README.md CHANGED
@@ -9,7 +9,9 @@ This is useful for:
9
9
  - Writing a terminal emulator (eg. via [xterm.js](https://github.com/sourcelair/xterm.js)).
10
10
  - Getting certain programs to *think* you're a terminal, such as when you need a program to send you control sequences.
11
11
 
12
- `node-pty` supports Linux, macOS and Windows. Windows support is possible by utilizing the [Windows conpty API](https://blogs.msdn.microsoft.com/commandline/2018/08/02/windows-command-line-introducing-the-windows-pseudo-console-conpty/) on Windows 1809+ and the [winpty](https://github.com/rprichard/winpty) library in older version.
12
+ `node-pty` supports Linux, macOS and Windows. Windows support is possible by utilizing the [Windows conpty API](https://blogs.msdn.microsoft.com/commandline/2018/08/02/windows-command-line-introducing-the-windows-pseudo-console-conpty/) on Windows 1809+.
13
+
14
+ > **Note:** Support for the `winpty` library has been removed. Windows 10 version 1809 (build 18309) or later is now required.
13
15
 
14
16
  ## API
15
17
 
@@ -68,6 +70,7 @@ ptyProcess.write('ls\r');
68
70
  - [NxShell](https://nxshell.github.io/): An easy to use new terminal for Windows/Linux/MacOS platform.
69
71
  - [OpenSumi](https://github.com/opensumi/core): A framework helps you quickly build Cloud or Desktop IDE products.
70
72
  - [Enjoy Git](https://github.com/huangcs427/enjoy-git-release): A modern Git client featuring an intuitive user interface, built with Electron, Vue 3, and TypeScript.
73
+ - [Logos](https://github.com/zixiao-labs/logos): A Modern, Lightweight Code Editor, built with Electron, Vue 3, and TypeScript.
71
74
 
72
75
  Do you use node-pty in your application as well? Please open a [Pull Request](https://github.com/Tyriar/node-pty/pulls) to include it here. We would love to have it in our list.
73
76
 
@@ -150,10 +153,6 @@ By default `PAUSE` and `RESUME` are XON/XOFF control codes (as shown above). To
150
153
 
151
154
  This happens when PowerShell is launched with no `SystemRoot` environment variable present.
152
155
 
153
- ### ConnectNamedPipe failed: Windows error 232
154
-
155
- This error can occur due to anti-virus software intercepting winpty from creating a pty. To workaround this you can exclude this file from your anti-virus scanning `node-pty\build\Release\winpty-agent.exe`
156
-
157
156
  ## pty.js
158
157
 
159
158
  This project is forked from [chjj/pty.js](https://github.com/chjj/pty.js) with the primary goals being to provide better support for later Node.js versions and Windows.
package/binding.gyp CHANGED
@@ -9,23 +9,26 @@
9
9
  'SpectreMitigation': 'Spectre'
10
10
  },
11
11
  'msvs_settings': {
12
- 'VCCLCompilerTool': {
13
- 'AdditionalOptions': [
14
- '/guard:cf',
15
- '/sdl',
16
- '/W3',
17
- '/w34244',
18
- '/w34267',
19
- '/ZH:SHA_256'
20
- ]
21
- },
22
- 'VCLinkerTool': {
23
- 'AdditionalOptions': [
24
- '/DYNAMICBASE',
25
- '/guard:cf'
26
- ]
27
- }
12
+ 'VCCLCompilerTool': {
13
+ 'AdditionalOptions': [
14
+ '/guard:cf',
15
+ '/sdl',
16
+ '/W3',
17
+ '/we4146',
18
+ '/we4244',
19
+ '/we4267',
20
+ '/ZH:SHA_256'
21
+ ]
28
22
  },
23
+ 'VCLinkerTool': {
24
+ 'AdditionalOptions': [
25
+ '/DYNAMICBASE',
26
+ '/guard:cf'
27
+ ]
28
+ }
29
+ },
30
+ }, {
31
+ 'cflags': ['-O2', '-fstack-protector-strong'],
29
32
  }],
30
33
  ],
31
34
  },
@@ -47,26 +50,6 @@
47
50
  'sources' : [
48
51
  'src/win/conpty_console_list.cc'
49
52
  ],
50
- },
51
- {
52
- 'target_name': 'pty',
53
- 'include_dirs' : [
54
- '<!(node -p "require(\'node-addon-api\').include_dir")',
55
- 'deps/winpty/src/include',
56
- ],
57
- # Disabled due to winpty
58
- 'msvs_disabled_warnings': [ 4506, 4530 ],
59
- 'dependencies' : [
60
- 'deps/winpty/src/winpty.gyp:winpty-agent',
61
- 'deps/winpty/src/winpty.gyp:winpty',
62
- ],
63
- 'sources' : [
64
- 'src/win/winpty.cc',
65
- 'src/win/path_util.cc'
66
- ],
67
- 'libraries': [
68
- '-lshlwapi'
69
- ],
70
53
  }
71
54
  ]
72
55
  }, { # OS!="win"
@@ -79,7 +62,8 @@
79
62
  'libraries': [
80
63
  '-lutil'
81
64
  ],
82
- 'cflags': ['-Wall', '-O2', '-D_FORTIFY_SOURCE=2'],
65
+ 'cflags': ['-Wall'],
66
+ 'ldflags': [],
83
67
  'conditions': [
84
68
  # http://www.gnu.org/software/gnulib/manual/html_node/forkpty.html
85
69
  # One some systems (at least including Cygwin, Interix,
@@ -88,6 +72,61 @@
88
72
  'libraries!': [
89
73
  '-lutil'
90
74
  ]
75
+ }],
76
+ ['OS=="linux"', {
77
+ 'variables': {
78
+ 'sysroot%': '<!(node -p "process.env.SYSROOT_PATH || \'\'")',
79
+ 'target_arch%': '<!(node -p "process.env.npm_config_arch || process.arch")',
80
+ },
81
+ 'conditions': [
82
+ ['sysroot!=""', {
83
+ 'variables': {
84
+ 'gcc_include%': '<!(${CXX:-g++} -print-file-name=include)',
85
+ },
86
+ 'conditions': [
87
+ ['target_arch=="x64"', {
88
+ 'cflags': [
89
+ '--sysroot=<(sysroot)',
90
+ '-nostdinc',
91
+ '-isystem<(gcc_include)',
92
+ '-isystem<(sysroot)/usr/include',
93
+ '-isystem<(sysroot)/usr/include/x86_64-linux-gnu'
94
+ ],
95
+ 'cflags_cc': [
96
+ '-nostdinc++',
97
+ '-isystem<(sysroot)/../include/c++/10.5.0',
98
+ '-isystem<(sysroot)/../include/c++/10.5.0/x86_64-linux-gnu',
99
+ '-isystem<(sysroot)/../include/c++/10.5.0/backward'
100
+ ],
101
+ 'ldflags': [
102
+ '--sysroot=<(sysroot)',
103
+ '-L<(sysroot)/lib',
104
+ '-L<(sysroot)/usr/lib'
105
+ ],
106
+ }],
107
+ ['target_arch=="arm64"', {
108
+ 'cflags': [
109
+ '--sysroot=<(sysroot)',
110
+ '-nostdinc',
111
+ '-isystem<(gcc_include)',
112
+ '-isystem<(sysroot)/usr/include',
113
+ '-isystem<(sysroot)/usr/include/aarch64-linux-gnu'
114
+ ],
115
+ 'cflags_cc': [
116
+ '-nostdinc++',
117
+ '-isystem<(sysroot)/../include/c++/10.5.0',
118
+ '-isystem<(sysroot)/../include/c++/10.5.0/aarch64-linux-gnu',
119
+ '-isystem<(sysroot)/../include/c++/10.5.0/backward'
120
+ ],
121
+ 'ldflags': [
122
+ '--sysroot=<(sysroot)',
123
+ '-L<(sysroot)/lib',
124
+ '-L<(sysroot)/usr/lib'
125
+ ],
126
+ }]
127
+ ]
128
+ }]
129
+ ]
91
130
  }]
92
131
  ]
93
132
  }
@@ -10,7 +10,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  var utils_1 = require("./utils");
11
11
  var getConsoleProcessList = utils_1.loadNativeModule('conpty_console_list').module.getConsoleProcessList;
12
12
  var shellPid = parseInt(process.argv[2], 10);
13
- var consoleProcessList = getConsoleProcessList(shellPid);
13
+ var consoleProcessList = [];
14
+ if (shellPid > 0) {
15
+ try {
16
+ consoleProcessList = getConsoleProcessList(shellPid);
17
+ }
18
+ catch (_a) {
19
+ // AttachConsole can fail if the process already exited or is invalid.
20
+ consoleProcessList = [];
21
+ }
22
+ }
14
23
  process.send({ consoleProcessList: consoleProcessList });
15
24
  process.exit(0);
16
25
  //# sourceMappingURL=conpty_console_list_agent.js.map
@@ -236,7 +236,7 @@ var UnixTerminal = /** @class */ (function (_super) {
236
236
  get: function () {
237
237
  if (process.platform === 'darwin') {
238
238
  var title = pty.process(this._fd);
239
- return (title !== 'kernel_task') ? title : this._file;
239
+ return (title !== 'kernel_task' && title !== 'spawn_helper') ? title : this._file;
240
240
  }
241
241
  return pty.process(this._fd, this._pty) || this._file;
242
242
  },
@@ -246,11 +246,14 @@ var UnixTerminal = /** @class */ (function (_super) {
246
246
  /**
247
247
  * TTY
248
248
  */
249
- UnixTerminal.prototype.resize = function (cols, rows) {
249
+ UnixTerminal.prototype.resize = function (cols, rows, pixelSize) {
250
+ var _a, _b;
250
251
  if (cols <= 0 || rows <= 0 || isNaN(cols) || isNaN(rows) || cols === Infinity || rows === Infinity) {
251
252
  throw new Error('resizing must be done using positive cols and rows');
252
253
  }
253
- pty.resize(this._fd, cols, rows);
254
+ var pixelWidth = (_a = pixelSize === null || pixelSize === void 0 ? void 0 : pixelSize.width) !== null && _a !== void 0 ? _a : 0;
255
+ var pixelHeight = (_b = pixelSize === null || pixelSize === void 0 ? void 0 : pixelSize.height) !== null && _b !== void 0 ? _b : 0;
256
+ pty.resize(this._fd, cols, rows, pixelWidth, pixelHeight);
254
257
  this._cols = cols;
255
258
  this._rows = rows;
256
259
  };
package/lib/utils.js CHANGED
@@ -24,7 +24,7 @@ function loadNativeModule(name) {
24
24
  var d = dirs_1[_i];
25
25
  for (var _a = 0, relative_1 = relative; _a < relative_1.length; _a++) {
26
26
  var r = relative_1[_a];
27
- var dir = r + "/" + d + "/";
27
+ var dir = r + "/" + d;
28
28
  try {
29
29
  return { dir: dir, module: require(dir + "/" + name + ".node") };
30
30
  }
@@ -7,14 +7,12 @@
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.argsToCommandLine = exports.WindowsPtyAgent = void 0;
9
9
  var fs = require("fs");
10
- var os = require("os");
11
10
  var path = require("path");
12
11
  var child_process_1 = require("child_process");
13
12
  var net_1 = require("net");
14
13
  var windowsConoutConnection_1 = require("./windowsConoutConnection");
15
14
  var utils_1 = require("./utils");
16
15
  var conptyNative;
17
- var winptyNative;
18
16
  /**
19
17
  * The amount of time to wait for additional data after the conpty shell process has exited before
20
18
  * shutting down the socket. The timer will be reset if a new data event comes in after the timer
@@ -22,46 +20,25 @@ var winptyNative;
22
20
  */
23
21
  var FLUSH_DATA_INTERVAL = 1000;
24
22
  /**
25
- * This agent sits between the WindowsTerminal class and provides a common interface for both conpty
26
- * and winpty.
23
+ * This agent sits between the WindowsTerminal class and provides an interface for conpty.
27
24
  */
28
25
  var WindowsPtyAgent = /** @class */ (function () {
29
- function WindowsPtyAgent(file, args, env, cwd, cols, rows, debug, _useConpty, _useConptyDll, conptyInheritCursor) {
26
+ function WindowsPtyAgent(file, args, env, cwd, cols, rows, debug, _useConptyDll, conptyInheritCursor) {
30
27
  var _this = this;
31
28
  if (_useConptyDll === void 0) { _useConptyDll = false; }
32
29
  if (conptyInheritCursor === void 0) { conptyInheritCursor = false; }
33
- this._useConpty = _useConpty;
34
30
  this._useConptyDll = _useConptyDll;
35
- this._pid = 0;
36
31
  this._innerPid = 0;
37
- if (this._useConpty === undefined || this._useConpty === true) {
38
- this._useConpty = this._getWindowsBuildNumber() >= 18309;
32
+ if (!conptyNative) {
33
+ conptyNative = utils_1.loadNativeModule('conpty').module;
39
34
  }
40
- if (this._useConpty) {
41
- if (!conptyNative) {
42
- conptyNative = utils_1.loadNativeModule('conpty').module;
43
- }
44
- }
45
- else {
46
- if (!winptyNative) {
47
- winptyNative = utils_1.loadNativeModule('pty').module;
48
- }
49
- }
50
- this._ptyNative = this._useConpty ? conptyNative : winptyNative;
35
+ this._ptyNative = conptyNative;
51
36
  // Sanitize input variable.
52
37
  cwd = path.resolve(cwd);
53
38
  // Compose command line
54
39
  var commandLine = argsToCommandLine(file, args);
55
40
  // Open pty session.
56
- var term;
57
- if (this._useConpty) {
58
- term = this._ptyNative.startProcess(file, cols, rows, debug, this._generatePipeName(), conptyInheritCursor, this._useConptyDll);
59
- }
60
- else {
61
- term = this._ptyNative.startProcess(file, commandLine, env, cwd, cols, rows, debug);
62
- this._pid = term.pid;
63
- this._innerPid = term.innerPid;
64
- }
41
+ var term = conptyNative.startProcess(file, cols, rows, debug, this._generatePipeName(), conptyInheritCursor, this._useConptyDll);
65
42
  // Not available on windows.
66
43
  this._fd = term.fd;
67
44
  // Generated incremental number that has no real purpose besides using it
@@ -71,9 +48,26 @@ var WindowsPtyAgent = /** @class */ (function () {
71
48
  this._outSocket = new net_1.Socket();
72
49
  this._outSocket.setEncoding('utf8');
73
50
  // The conout socket must be ready out on another thread to avoid deadlocks
51
+ // We must wait for the worker to connect before calling conptyNative.connect()
52
+ // to avoid blocking the Node.js event loop in ConnectNamedPipe.
53
+ // See https://github.com/microsoft/node-pty/issues/763
74
54
  this._conoutSocketWorker = new windowsConoutConnection_1.ConoutConnection(term.conout, this._useConptyDll);
55
+ // Store pending connection info - we'll complete the connection when worker is ready
56
+ this._pendingPtyInfo = { pty: this._pty, commandLine: commandLine, cwd: cwd, env: env };
57
+ // Timeout to ensure connection completes even if worker fails to signal ready
58
+ var connectionTimeout = setTimeout(function () {
59
+ if (_this._pendingPtyInfo) {
60
+ // Worker never signaled ready - complete connection anyway to avoid zombie state
61
+ _this._completePtyConnection();
62
+ }
63
+ }, 5000);
75
64
  this._conoutSocketWorker.onReady(function () {
65
+ clearTimeout(connectionTimeout);
76
66
  _this._conoutSocketWorker.connectSocket(_this._outSocket);
67
+ // Now that the worker has connected to the output pipe, we can safely call
68
+ // conptyNative.connect() which calls ConnectNamedPipe - it won't block because
69
+ // the client (worker) is already connected
70
+ _this._completePtyConnection();
77
71
  });
78
72
  this._outSocket.on('connect', function () {
79
73
  _this._outSocket.emit('ready_datapipe');
@@ -85,10 +79,6 @@ var WindowsPtyAgent = /** @class */ (function () {
85
79
  writable: true
86
80
  });
87
81
  this._inSocket.setEncoding('utf8');
88
- if (this._useConpty) {
89
- var connect = this._ptyNative.connect(this._pty, commandLine, cwd, env, this._useConptyDll, function (c) { return _this._$onProcessExit(c); });
90
- this._innerPid = connect.pid;
91
- }
92
82
  }
93
83
  Object.defineProperty(WindowsPtyAgent.prototype, "inSocket", {
94
84
  get: function () { return this._inSocket; },
@@ -115,71 +105,60 @@ var WindowsPtyAgent = /** @class */ (function () {
115
105
  enumerable: false,
116
106
  configurable: true
117
107
  });
118
- WindowsPtyAgent.prototype.resize = function (cols, rows) {
119
- if (this._useConpty) {
120
- if (this._exitCode !== undefined) {
121
- throw new Error('Cannot resize a pty that has already exited');
122
- }
123
- this._ptyNative.resize(this._pty, cols, rows, this._useConptyDll);
108
+ WindowsPtyAgent.prototype._completePtyConnection = function () {
109
+ var _this = this;
110
+ if (!this._pendingPtyInfo) {
124
111
  return;
125
112
  }
126
- this._ptyNative.resize(this._pid, cols, rows);
113
+ var _a = this._pendingPtyInfo, pty = _a.pty, commandLine = _a.commandLine, cwd = _a.cwd, env = _a.env;
114
+ this._pendingPtyInfo = undefined;
115
+ var connect = conptyNative.connect(pty, commandLine, cwd, env, this._useConptyDll, function (c) { return _this._$onProcessExit(c); });
116
+ this._innerPid = connect.pid;
127
117
  };
128
- WindowsPtyAgent.prototype.clear = function () {
129
- if (this._useConpty) {
130
- this._ptyNative.clear(this._pty, this._useConptyDll);
118
+ WindowsPtyAgent.prototype.resize = function (cols, rows) {
119
+ if (this._exitCode !== undefined) {
120
+ throw new Error('Cannot resize a pty that has already exited');
131
121
  }
122
+ this._ptyNative.resize(this._pty, cols, rows, this._useConptyDll);
123
+ };
124
+ WindowsPtyAgent.prototype.clear = function () {
125
+ this._ptyNative.clear(this._pty, this._useConptyDll);
132
126
  };
133
127
  WindowsPtyAgent.prototype.kill = function () {
134
128
  var _this = this;
129
+ // Prevent deferred connection from completing after kill
130
+ this._pendingPtyInfo = undefined;
135
131
  // Tell the agent to kill the pty, this releases handles to the process
136
- if (this._useConpty) {
137
- if (!this._useConptyDll) {
138
- this._inSocket.readable = false;
139
- this._outSocket.readable = false;
140
- this._getConsoleProcessList().then(function (consoleProcessList) {
141
- consoleProcessList.forEach(function (pid) {
142
- try {
143
- process.kill(pid);
144
- }
145
- catch (e) {
146
- // Ignore if process cannot be found (kill ESRCH error)
147
- }
148
- });
149
- });
150
- this._ptyNative.kill(this._pty, this._useConptyDll);
151
- this._conoutSocketWorker.dispose();
152
- }
153
- else {
154
- // Close the input write handle to signal the end of session.
155
- this._inSocket.destroy();
156
- this._ptyNative.kill(this._pty, this._useConptyDll);
157
- this._outSocket.on('data', function () {
158
- _this._conoutSocketWorker.dispose();
132
+ if (!this._useConptyDll) {
133
+ this._inSocket.readable = false;
134
+ this._outSocket.readable = false;
135
+ this._getConsoleProcessList().then(function (consoleProcessList) {
136
+ consoleProcessList.forEach(function (pid) {
137
+ try {
138
+ process.kill(pid);
139
+ }
140
+ catch (e) {
141
+ // Ignore if process cannot be found (kill ESRCH error)
142
+ }
159
143
  });
160
- }
144
+ });
145
+ this._ptyNative.kill(this._pty, this._useConptyDll);
146
+ this._conoutSocketWorker.dispose();
161
147
  }
162
148
  else {
163
- // Because pty.kill closes the handle, it will kill most processes by itself.
164
- // Process IDs can be reused as soon as all handles to them are
165
- // dropped, so we want to immediately kill the entire console process list.
166
- // If we do not force kill all processes here, node servers in particular
167
- // seem to become detached and remain running (see
168
- // Microsoft/vscode#26807).
169
- var processList = this._ptyNative.getProcessList(this._pid);
170
- this._ptyNative.kill(this._pid, this._innerPid);
171
- processList.forEach(function (pid) {
172
- try {
173
- process.kill(pid);
174
- }
175
- catch (e) {
176
- // Ignore if process cannot be found (kill ESRCH error)
177
- }
149
+ // Close the input write handle to signal the end of session.
150
+ this._inSocket.destroy();
151
+ this._ptyNative.kill(this._pty, this._useConptyDll);
152
+ this._outSocket.on('data', function () {
153
+ _this._conoutSocketWorker.dispose();
178
154
  });
179
155
  }
180
156
  };
181
157
  WindowsPtyAgent.prototype._getConsoleProcessList = function () {
182
158
  var _this = this;
159
+ if (this._innerPid <= 0) {
160
+ return Promise.resolve([]);
161
+ }
183
162
  return new Promise(function (resolve) {
184
163
  var agent = child_process_1.fork(path.join(__dirname, 'conpty_console_list_agent'), [_this._innerPid.toString()]);
185
164
  agent.on('message', function (message) {
@@ -195,23 +174,11 @@ var WindowsPtyAgent = /** @class */ (function () {
195
174
  };
196
175
  Object.defineProperty(WindowsPtyAgent.prototype, "exitCode", {
197
176
  get: function () {
198
- if (this._useConpty) {
199
- return this._exitCode;
200
- }
201
- var winptyExitCode = this._ptyNative.getExitCode(this._innerPid);
202
- return winptyExitCode === -1 ? undefined : winptyExitCode;
177
+ return this._exitCode;
203
178
  },
204
179
  enumerable: false,
205
180
  configurable: true
206
181
  });
207
- WindowsPtyAgent.prototype._getWindowsBuildNumber = function () {
208
- var osVersion = (/(\d+)\.(\d+)\.(\d+)/g).exec(os.release());
209
- var buildNumber = 0;
210
- if (osVersion && osVersion.length === 4) {
211
- buildNumber = parseInt(osVersion[3]);
212
- }
213
- return buildNumber;
214
- };
215
182
  WindowsPtyAgent.prototype._generatePipeName = function () {
216
183
  return "conpty-" + Math.random() * 10000000;
217
184
  };
@@ -48,7 +48,7 @@ var WindowsTerminal = /** @class */ (function (_super) {
48
48
  // Functions that need to run after `ready` event is emitted.
49
49
  _this._deferreds = [];
50
50
  // Create new termal.
51
- _this._agent = new windowsPtyAgent_1.WindowsPtyAgent(file, args, parsedEnv, cwd, _this._cols, _this._rows, false, opt.useConpty, opt.useConptyDll, opt.conptyInheritCursor);
51
+ _this._agent = new windowsPtyAgent_1.WindowsPtyAgent(file, args, parsedEnv, cwd, _this._cols, _this._rows, false, opt.useConptyDll, opt.conptyInheritCursor);
52
52
  _this._socket = _this._agent.outSocket;
53
53
  // Not available until `ready` event emitted.
54
54
  _this._pid = _this._agent.innerPid;
@@ -57,6 +57,8 @@ var WindowsTerminal = /** @class */ (function (_super) {
57
57
  // The forked windows terminal is not available until `ready` event is
58
58
  // emitted.
59
59
  _this._socket.on('ready_datapipe', function () {
60
+ // Update pid now that the agent has connected
61
+ _this._pid = _this._agent.innerPid;
60
62
  // Run deferreds and set ready state once the first data event is received.
61
63
  _this._socket.once('data', function () {
62
64
  // Wait until the first data event is fired then we can run deferreds.
@@ -121,7 +123,7 @@ var WindowsTerminal = /** @class */ (function (_super) {
121
123
  /**
122
124
  * TTY
123
125
  */
124
- WindowsTerminal.prototype.resize = function (cols, rows) {
126
+ WindowsTerminal.prototype.resize = function (cols, rows, pixelSize) {
125
127
  var _this = this;
126
128
  if (cols <= 0 || rows <= 0 || isNaN(cols) || isNaN(rows) || cols === Infinity || rows === Infinity) {
127
129
  throw new Error('resizing must be done using positive cols and rows');
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "author": {
5
5
  "name": "Microsoft Corporation"
6
6
  },
7
- "version": "1.2.0-beta.1",
7
+ "version": "1.2.0-beta.11",
8
8
  "license": "MIT",
9
9
  "main": "./lib/index.js",
10
10
  "types": "./typings/node-pty.d.ts",
@@ -14,10 +14,11 @@
14
14
  },
15
15
  "files": [
16
16
  "binding.gyp",
17
- "lib/",
18
- "scripts/",
19
- "src/",
20
- "deps/",
17
+ "lib/**/*.js",
18
+ "!lib/**/*.test.js",
19
+ "scripts/post-install.js",
20
+ "scripts/prebuild.js",
21
+ "src/**/*.{cc,h}",
21
22
  "prebuilds/",
22
23
  "third_party/",
23
24
  "typings/"
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -12,11 +12,7 @@ const BUILD_FILES = [
12
12
  path.join(RELEASE_DIR, 'conpty_console_list.pdb'),
13
13
  path.join(RELEASE_DIR, 'pty.node'),
14
14
  path.join(RELEASE_DIR, 'pty.pdb'),
15
- path.join(RELEASE_DIR, 'spawn-helper'),
16
- path.join(RELEASE_DIR, 'winpty-agent.exe'),
17
- path.join(RELEASE_DIR, 'winpty-agent.pdb'),
18
- path.join(RELEASE_DIR, 'winpty.dll'),
19
- path.join(RELEASE_DIR, 'winpty.pdb')
15
+ path.join(RELEASE_DIR, 'spawn-helper')
20
16
  ];
21
17
  const CONPTY_DIR = path.join(__dirname, '../third_party/conpty');
22
18
  const CONPTY_SUPPORTED_ARCH = ['x64', 'arm64'];