isomorfeus-puppetmaster 0.5.3 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (802) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -17
  3. data/lib/isomorfeus/puppetmaster/console_message.rb +18 -18
  4. data/lib/isomorfeus/puppetmaster/cookie.rb +46 -46
  5. data/lib/isomorfeus/puppetmaster/driver/puppeteer.rb +413 -403
  6. data/lib/isomorfeus/puppetmaster/driver/puppeteer_document.rb +953 -953
  7. data/lib/isomorfeus/puppetmaster/driver/puppeteer_node.rb +851 -851
  8. data/lib/isomorfeus/puppetmaster/errors.rb +90 -90
  9. data/lib/isomorfeus/puppetmaster/iframe.rb +16 -16
  10. data/lib/isomorfeus/puppetmaster/node/content_editable.rb +17 -17
  11. data/lib/isomorfeus/puppetmaster/node/input.rb +20 -20
  12. data/lib/isomorfeus/puppetmaster/node/select.rb +35 -35
  13. data/lib/isomorfeus/puppetmaster/node.rb +279 -279
  14. data/lib/isomorfeus/puppetmaster/request.rb +16 -16
  15. data/lib/isomorfeus/puppetmaster/response.rb +25 -25
  16. data/lib/isomorfeus/puppetmaster/self_forwardable.rb +38 -38
  17. data/lib/isomorfeus/puppetmaster/server/checker.rb +1 -3
  18. data/lib/isomorfeus/puppetmaster/server.rb +1 -1
  19. data/lib/isomorfeus/puppetmaster/version.rb +3 -3
  20. data/lib/isomorfeus/puppetmaster.rb +85 -85
  21. data/lib/isomorfeus-puppetmaster.rb +1 -0
  22. data/node_modules/.bin/extract-zip +12 -12
  23. data/node_modules/.bin/extract-zip.ps1 +28 -28
  24. data/node_modules/.bin/rimraf +12 -12
  25. data/node_modules/.bin/rimraf.ps1 +28 -28
  26. data/node_modules/.package-lock.json +530 -574
  27. data/node_modules/@types/node/LICENSE +21 -21
  28. data/node_modules/@types/node/assert/strict.d.ts +8 -8
  29. data/node_modules/@types/node/assert.d.ts +912 -912
  30. data/node_modules/@types/node/async_hooks.d.ts +497 -497
  31. data/node_modules/@types/node/buffer.d.ts +2142 -2142
  32. data/node_modules/@types/node/child_process.d.ts +1355 -1355
  33. data/node_modules/@types/node/cluster.d.ts +414 -414
  34. data/node_modules/@types/node/console.d.ts +407 -407
  35. data/node_modules/@types/node/constants.d.ts +18 -18
  36. data/node_modules/@types/node/crypto.d.ts +3224 -3224
  37. data/node_modules/@types/node/dgram.d.ts +545 -545
  38. data/node_modules/@types/node/diagnostics_channel.d.ts +128 -128
  39. data/node_modules/@types/node/dns/promises.d.ts +357 -357
  40. data/node_modules/@types/node/dns.d.ts +643 -643
  41. data/node_modules/@types/node/domain.d.ts +169 -169
  42. data/node_modules/@types/node/events.d.ts +623 -623
  43. data/node_modules/@types/node/fs/promises.d.ts +997 -997
  44. data/node_modules/@types/node/fs.d.ts +3723 -3723
  45. data/node_modules/@types/node/globals.d.ts +285 -285
  46. data/node_modules/@types/node/globals.global.d.ts +1 -1
  47. data/node_modules/@types/node/http.d.ts +1358 -1358
  48. data/node_modules/@types/node/http2.d.ts +2100 -2100
  49. data/node_modules/@types/node/https.d.ts +391 -391
  50. data/node_modules/@types/node/index.d.ts +131 -131
  51. data/node_modules/@types/node/inspector.d.ts +2738 -2738
  52. data/node_modules/@types/node/module.d.ts +114 -114
  53. data/node_modules/@types/node/net.d.ts +783 -783
  54. data/node_modules/@types/node/os.d.ts +455 -455
  55. data/node_modules/@types/node/package.json +229 -229
  56. data/node_modules/@types/node/path.d.ts +172 -172
  57. data/node_modules/@types/node/perf_hooks.d.ts +555 -555
  58. data/node_modules/@types/node/process.d.ts +1477 -1477
  59. data/node_modules/@types/node/punycode.d.ts +117 -117
  60. data/node_modules/@types/node/querystring.d.ts +131 -131
  61. data/node_modules/@types/node/readline.d.ts +542 -542
  62. data/node_modules/@types/node/repl.d.ts +424 -424
  63. data/node_modules/@types/node/stream/consumers.d.ts +24 -24
  64. data/node_modules/@types/node/stream/promises.d.ts +42 -42
  65. data/node_modules/@types/node/stream/web.d.ts +6 -6
  66. data/node_modules/@types/node/stream.d.ts +1181 -1181
  67. data/node_modules/@types/node/string_decoder.d.ts +67 -67
  68. data/node_modules/@types/node/timers/promises.d.ts +68 -68
  69. data/node_modules/@types/node/timers.d.ts +94 -94
  70. data/node_modules/@types/node/tls.d.ts +1019 -1019
  71. data/node_modules/@types/node/trace_events.d.ts +161 -161
  72. data/node_modules/@types/node/tty.d.ts +206 -206
  73. data/node_modules/@types/node/url.d.ts +798 -798
  74. data/node_modules/@types/node/util.d.ts +1556 -1556
  75. data/node_modules/@types/node/v8.d.ts +378 -378
  76. data/node_modules/@types/node/vm.d.ts +504 -504
  77. data/node_modules/@types/node/wasi.d.ts +153 -153
  78. data/node_modules/@types/node/worker_threads.d.ts +649 -649
  79. data/node_modules/@types/node/zlib.d.ts +517 -517
  80. data/node_modules/@types/yauzl/LICENSE +21 -21
  81. data/node_modules/@types/yauzl/index.d.ts +98 -98
  82. data/node_modules/@types/yauzl/package.json +26 -26
  83. data/node_modules/agent-base/README.md +145 -145
  84. data/node_modules/agent-base/dist/src/index.d.ts +78 -78
  85. data/node_modules/agent-base/dist/src/index.js +202 -202
  86. data/node_modules/agent-base/dist/src/promisify.d.ts +4 -4
  87. data/node_modules/agent-base/dist/src/promisify.js +17 -17
  88. data/node_modules/agent-base/package.json +64 -64
  89. data/node_modules/agent-base/src/index.ts +345 -345
  90. data/node_modules/agent-base/src/promisify.ts +33 -33
  91. data/node_modules/balanced-match/.github/FUNDING.yml +2 -2
  92. data/node_modules/balanced-match/LICENSE.md +21 -21
  93. data/node_modules/balanced-match/README.md +97 -97
  94. data/node_modules/balanced-match/index.js +62 -62
  95. data/node_modules/balanced-match/package.json +48 -48
  96. data/node_modules/base64-js/LICENSE +21 -21
  97. data/node_modules/base64-js/README.md +34 -34
  98. data/node_modules/base64-js/index.d.ts +3 -3
  99. data/node_modules/base64-js/index.js +150 -150
  100. data/node_modules/base64-js/package.json +47 -47
  101. data/node_modules/bl/.travis.yml +17 -17
  102. data/node_modules/bl/BufferList.js +396 -396
  103. data/node_modules/bl/LICENSE.md +13 -13
  104. data/node_modules/bl/README.md +247 -247
  105. data/node_modules/bl/bl.js +84 -84
  106. data/node_modules/bl/package.json +37 -37
  107. data/node_modules/bl/test/convert.js +21 -21
  108. data/node_modules/bl/test/indexOf.js +492 -492
  109. data/node_modules/bl/test/isBufferList.js +32 -32
  110. data/node_modules/bl/test/test.js +869 -869
  111. data/node_modules/brace-expansion/LICENSE +21 -21
  112. data/node_modules/brace-expansion/README.md +129 -129
  113. data/node_modules/brace-expansion/index.js +201 -201
  114. data/node_modules/brace-expansion/package.json +47 -47
  115. data/node_modules/buffer/AUTHORS.md +70 -70
  116. data/node_modules/buffer/LICENSE +21 -21
  117. data/node_modules/buffer/README.md +410 -410
  118. data/node_modules/buffer/index.d.ts +186 -186
  119. data/node_modules/buffer/index.js +1817 -1817
  120. data/node_modules/buffer/package.json +96 -96
  121. data/node_modules/buffer-crc32/LICENSE +19 -19
  122. data/node_modules/buffer-crc32/README.md +47 -47
  123. data/node_modules/buffer-crc32/index.js +111 -111
  124. data/node_modules/buffer-crc32/package.json +39 -39
  125. data/node_modules/chownr/LICENSE +15 -15
  126. data/node_modules/chownr/README.md +3 -3
  127. data/node_modules/chownr/chownr.js +167 -167
  128. data/node_modules/chownr/package.json +29 -29
  129. data/node_modules/concat-map/.travis.yml +4 -4
  130. data/node_modules/concat-map/LICENSE +18 -18
  131. data/node_modules/concat-map/README.markdown +62 -62
  132. data/node_modules/concat-map/example/map.js +6 -6
  133. data/node_modules/concat-map/index.js +13 -13
  134. data/node_modules/concat-map/package.json +43 -43
  135. data/node_modules/concat-map/test/map.js +39 -39
  136. data/node_modules/debug/LICENSE +19 -19
  137. data/node_modules/debug/README.md +455 -455
  138. data/node_modules/debug/package.json +59 -59
  139. data/node_modules/debug/src/browser.js +269 -269
  140. data/node_modules/debug/src/common.js +274 -261
  141. data/node_modules/debug/src/index.js +10 -10
  142. data/node_modules/debug/src/node.js +263 -263
  143. data/node_modules/devtools-protocol/LICENSE +27 -27
  144. data/node_modules/devtools-protocol/README.md +12 -12
  145. data/node_modules/devtools-protocol/json/browser_protocol.json +20985 -20640
  146. data/node_modules/devtools-protocol/json/js_protocol.json +3531 -3580
  147. data/node_modules/devtools-protocol/package.json +17 -18
  148. data/node_modules/devtools-protocol/pdl/browser_protocol.pdl +9849 -9637
  149. data/node_modules/devtools-protocol/pdl/js_protocol.pdl +1653 -1678
  150. data/node_modules/devtools-protocol/types/protocol-mapping.d.ts +4333 -4321
  151. data/node_modules/devtools-protocol/types/protocol-proxy-api.d.ts +3695 -3683
  152. data/node_modules/devtools-protocol/types/protocol.d.ts +15714 -15538
  153. data/node_modules/end-of-stream/LICENSE +20 -20
  154. data/node_modules/end-of-stream/README.md +54 -54
  155. data/node_modules/end-of-stream/index.js +94 -94
  156. data/node_modules/end-of-stream/package.json +37 -37
  157. data/node_modules/extract-zip/LICENSE +23 -23
  158. data/node_modules/extract-zip/cli.js +19 -19
  159. data/node_modules/extract-zip/index.d.ts +21 -21
  160. data/node_modules/extract-zip/index.js +173 -173
  161. data/node_modules/extract-zip/package.json +80 -80
  162. data/node_modules/extract-zip/readme.md +57 -57
  163. data/node_modules/fd-slicer/.npmignore +2 -2
  164. data/node_modules/fd-slicer/.travis.yml +7 -7
  165. data/node_modules/fd-slicer/CHANGELOG.md +49 -49
  166. data/node_modules/fd-slicer/LICENSE +21 -21
  167. data/node_modules/fd-slicer/README.md +199 -199
  168. data/node_modules/fd-slicer/index.js +296 -296
  169. data/node_modules/fd-slicer/package.json +36 -36
  170. data/node_modules/fd-slicer/test/test.js +350 -350
  171. data/node_modules/find-up/index.d.ts +137 -137
  172. data/node_modules/find-up/index.js +89 -89
  173. data/node_modules/find-up/license +9 -9
  174. data/node_modules/find-up/package.json +53 -53
  175. data/node_modules/find-up/readme.md +156 -156
  176. data/node_modules/fs-constants/LICENSE +21 -21
  177. data/node_modules/fs-constants/README.md +26 -26
  178. data/node_modules/fs-constants/browser.js +1 -1
  179. data/node_modules/fs-constants/index.js +1 -1
  180. data/node_modules/fs-constants/package.json +19 -19
  181. data/node_modules/fs.realpath/LICENSE +43 -43
  182. data/node_modules/fs.realpath/README.md +33 -33
  183. data/node_modules/fs.realpath/index.js +66 -66
  184. data/node_modules/fs.realpath/old.js +303 -303
  185. data/node_modules/fs.realpath/package.json +26 -26
  186. data/node_modules/get-stream/buffer-stream.js +52 -52
  187. data/node_modules/get-stream/index.d.ts +108 -108
  188. data/node_modules/get-stream/index.js +60 -60
  189. data/node_modules/get-stream/license +9 -9
  190. data/node_modules/get-stream/package.json +50 -50
  191. data/node_modules/get-stream/readme.md +124 -124
  192. data/node_modules/glob/LICENSE +21 -21
  193. data/node_modules/glob/README.md +375 -375
  194. data/node_modules/glob/changelog.md +67 -67
  195. data/node_modules/glob/common.js +234 -234
  196. data/node_modules/glob/glob.js +788 -788
  197. data/node_modules/glob/package.json +51 -51
  198. data/node_modules/glob/sync.js +484 -484
  199. data/node_modules/https-proxy-agent/README.md +137 -137
  200. data/node_modules/https-proxy-agent/dist/agent.d.ts +30 -30
  201. data/node_modules/https-proxy-agent/dist/agent.js +179 -179
  202. data/node_modules/https-proxy-agent/dist/index.d.ts +23 -23
  203. data/node_modules/https-proxy-agent/dist/index.js +13 -13
  204. data/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -7
  205. data/node_modules/https-proxy-agent/dist/parse-proxy-response.js +65 -65
  206. data/node_modules/https-proxy-agent/package.json +56 -56
  207. data/node_modules/ieee754/LICENSE +11 -11
  208. data/node_modules/ieee754/README.md +51 -51
  209. data/node_modules/ieee754/index.d.ts +9 -9
  210. data/node_modules/ieee754/index.js +85 -85
  211. data/node_modules/ieee754/package.json +52 -52
  212. data/node_modules/inflight/LICENSE +15 -15
  213. data/node_modules/inflight/README.md +37 -37
  214. data/node_modules/inflight/inflight.js +54 -54
  215. data/node_modules/inflight/package.json +29 -29
  216. data/node_modules/inherits/LICENSE +16 -16
  217. data/node_modules/inherits/README.md +42 -42
  218. data/node_modules/inherits/inherits.js +9 -9
  219. data/node_modules/inherits/inherits_browser.js +27 -27
  220. data/node_modules/inherits/package.json +29 -29
  221. data/node_modules/locate-path/index.d.ts +83 -83
  222. data/node_modules/locate-path/index.js +65 -65
  223. data/node_modules/locate-path/license +9 -9
  224. data/node_modules/locate-path/package.json +45 -45
  225. data/node_modules/locate-path/readme.md +122 -122
  226. data/node_modules/minimatch/LICENSE +15 -15
  227. data/node_modules/minimatch/README.md +209 -209
  228. data/node_modules/minimatch/minimatch.js +923 -923
  229. data/node_modules/minimatch/package.json +30 -30
  230. data/node_modules/{mkdirp → mkdirp-classic}/LICENSE +21 -21
  231. data/node_modules/mkdirp-classic/README.md +18 -0
  232. data/node_modules/{mkdirp → mkdirp-classic}/index.js +98 -99
  233. data/node_modules/mkdirp-classic/package.json +18 -0
  234. data/node_modules/ms/index.js +162 -162
  235. data/node_modules/ms/license.md +21 -21
  236. data/node_modules/ms/package.json +37 -37
  237. data/node_modules/ms/readme.md +60 -60
  238. data/node_modules/node-fetch/LICENSE.md +22 -22
  239. data/node_modules/node-fetch/README.md +590 -590
  240. data/node_modules/node-fetch/browser.js +24 -24
  241. data/node_modules/node-fetch/lib/index.es.js +1662 -1640
  242. data/node_modules/node-fetch/lib/index.js +1671 -1649
  243. data/node_modules/node-fetch/lib/index.mjs +1660 -1638
  244. data/node_modules/node-fetch/package.json +68 -66
  245. data/node_modules/once/LICENSE +15 -15
  246. data/node_modules/once/README.md +79 -79
  247. data/node_modules/once/once.js +42 -42
  248. data/node_modules/once/package.json +33 -33
  249. data/node_modules/p-limit/index.d.ts +38 -38
  250. data/node_modules/p-limit/index.js +57 -57
  251. data/node_modules/p-limit/license +9 -9
  252. data/node_modules/p-limit/package.json +52 -52
  253. data/node_modules/p-limit/readme.md +101 -101
  254. data/node_modules/p-locate/index.d.ts +64 -64
  255. data/node_modules/p-locate/index.js +52 -52
  256. data/node_modules/p-locate/license +9 -9
  257. data/node_modules/p-locate/package.json +53 -53
  258. data/node_modules/p-locate/readme.md +90 -90
  259. data/node_modules/p-try/index.d.ts +39 -39
  260. data/node_modules/p-try/index.js +9 -9
  261. data/node_modules/p-try/license +9 -9
  262. data/node_modules/p-try/package.json +42 -42
  263. data/node_modules/p-try/readme.md +58 -58
  264. data/node_modules/path-exists/index.d.ts +28 -28
  265. data/node_modules/path-exists/index.js +23 -23
  266. data/node_modules/path-exists/license +9 -9
  267. data/node_modules/path-exists/package.json +39 -39
  268. data/node_modules/path-exists/readme.md +52 -52
  269. data/node_modules/path-is-absolute/index.js +20 -20
  270. data/node_modules/path-is-absolute/license +21 -21
  271. data/node_modules/path-is-absolute/package.json +43 -43
  272. data/node_modules/path-is-absolute/readme.md +59 -59
  273. data/node_modules/pend/LICENSE +23 -23
  274. data/node_modules/pend/README.md +41 -41
  275. data/node_modules/pend/index.js +55 -55
  276. data/node_modules/pend/package.json +18 -18
  277. data/node_modules/pend/test.js +137 -137
  278. data/node_modules/pkg-dir/index.d.ts +44 -44
  279. data/node_modules/pkg-dir/index.js +17 -17
  280. data/node_modules/pkg-dir/license +9 -9
  281. data/node_modules/pkg-dir/package.json +56 -56
  282. data/node_modules/pkg-dir/readme.md +66 -66
  283. data/node_modules/progress/CHANGELOG.md +115 -115
  284. data/node_modules/progress/LICENSE +22 -22
  285. data/node_modules/progress/Makefile +8 -8
  286. data/node_modules/progress/Readme.md +146 -146
  287. data/node_modules/progress/index.js +1 -1
  288. data/node_modules/progress/lib/node-progress.js +236 -235
  289. data/node_modules/progress/package.json +26 -26
  290. data/node_modules/proxy-from-env/.eslintrc +29 -29
  291. data/node_modules/proxy-from-env/.travis.yml +10 -10
  292. data/node_modules/proxy-from-env/LICENSE +20 -20
  293. data/node_modules/proxy-from-env/README.md +131 -131
  294. data/node_modules/proxy-from-env/index.js +108 -108
  295. data/node_modules/proxy-from-env/package.json +34 -34
  296. data/node_modules/proxy-from-env/test.js +483 -483
  297. data/node_modules/pump/.travis.yml +5 -5
  298. data/node_modules/pump/LICENSE +20 -20
  299. data/node_modules/pump/README.md +65 -65
  300. data/node_modules/pump/index.js +82 -82
  301. data/node_modules/pump/package.json +24 -24
  302. data/node_modules/pump/test-browser.js +66 -66
  303. data/node_modules/pump/test-node.js +53 -53
  304. data/node_modules/puppeteer-core/CHANGELOG.md +319 -261
  305. data/node_modules/puppeteer-core/LICENSE +202 -202
  306. data/node_modules/puppeteer-core/README.md +481 -483
  307. data/node_modules/puppeteer-core/cjs-entry-core.js +29 -29
  308. data/node_modules/puppeteer-core/cjs-entry.js +29 -29
  309. data/node_modules/puppeteer-core/install.js +89 -89
  310. data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.d.ts +110 -110
  311. data/node_modules/puppeteer-core/lib/cjs/puppeteer/api-docs-entry.js +80 -80
  312. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.d.ts +175 -175
  313. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Accessibility.js +360 -360
  314. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.d.ts +20 -20
  315. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js +84 -84
  316. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/AriaQueryHandler.js.map +1 -1
  317. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts +455 -453
  318. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.d.ts.map +1 -1
  319. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.js +540 -532
  320. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.js.map +1 -1
  321. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.d.ts +53 -53
  322. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js +97 -97
  323. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  324. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
  325. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/BrowserWebSocketTransport.js +34 -34
  326. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts +135 -129
  327. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.d.ts.map +1 -1
  328. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js +298 -280
  329. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js.map +1 -1
  330. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.d.ts +24 -24
  331. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConnectionTransport.js +17 -17
  332. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +72 -72
  333. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ConsoleMessage.js +64 -64
  334. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.d.ts +204 -204
  335. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js +335 -335
  336. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Coverage.js.map +1 -1
  337. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.d.ts +175 -173
  338. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.d.ts.map +1 -1
  339. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.js +662 -658
  340. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DOMWorld.js.map +1 -1
  341. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.d.ts +52 -52
  342. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Debug.js +81 -81
  343. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts +40 -40
  344. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/DeviceDescriptors.js +1070 -1070
  345. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.d.ts +74 -74
  346. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js +97 -97
  347. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Dialog.js.map +1 -1
  348. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.d.ts +24 -24
  349. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EmulationManager.js +37 -37
  350. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts +50 -41
  351. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
  352. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.js +56 -48
  353. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Errors.js.map +1 -1
  354. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.d.ts +60 -60
  355. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EvalTypes.js +17 -17
  356. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.d.ts +92 -92
  357. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js +116 -116
  358. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js.map +1 -1
  359. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.d.ts +81 -81
  360. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Events.js +86 -86
  361. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.d.ts +193 -193
  362. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js +321 -321
  363. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js.map +1 -1
  364. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.d.ts +58 -58
  365. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js +71 -71
  366. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FileChooser.js.map +1 -1
  367. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts +744 -732
  368. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.d.ts.map +1 -1
  369. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js +1047 -964
  370. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
  371. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts +350 -340
  372. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  373. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js +549 -546
  374. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPRequest.js.map +1 -1
  375. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts +134 -125
  376. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  377. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js +184 -154
  378. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
  379. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts +358 -359
  380. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.d.ts.map +1 -1
  381. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.js +543 -544
  382. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Input.js.map +1 -1
  383. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts +490 -490
  384. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.d.ts.map +1 -1
  385. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js +827 -826
  386. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/JSHandle.js.map +1 -1
  387. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts +65 -65
  388. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
  389. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js +149 -148
  390. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js.map +1 -1
  391. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.d.ts +26 -26
  392. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkConditions.js +33 -33
  393. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts +126 -97
  394. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.d.ts.map +1 -1
  395. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js +467 -345
  396. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/NetworkManager.js.map +1 -1
  397. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.d.ts +161 -161
  398. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PDFOptions.js +34 -34
  399. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts +2055 -2026
  400. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.d.ts.map +1 -1
  401. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js +2533 -2487
  402. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js.map +1 -1
  403. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.d.ts +20 -20
  404. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Product.js +17 -17
  405. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.d.ts +159 -159
  406. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js +161 -161
  407. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Puppeteer.js.map +1 -1
  408. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.d.ts +51 -51
  409. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/PuppeteerViewport.js +2 -2
  410. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.d.ts +64 -64
  411. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/QueryHandler.js +165 -165
  412. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.d.ts +60 -60
  413. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/SecurityDetails.js +76 -76
  414. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts +100 -98
  415. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.d.ts.map +1 -1
  416. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.js +145 -144
  417. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Target.js.map +1 -1
  418. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts +21 -0
  419. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.d.ts.map +1 -0
  420. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js +30 -0
  421. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TaskQueue.js.map +1 -0
  422. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.d.ts +27 -27
  423. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/TimeoutSettings.js +47 -47
  424. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.d.ts +46 -46
  425. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js +109 -109
  426. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Tracing.js.map +1 -1
  427. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.d.ts +39 -39
  428. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/USKeyboardLayout.js +406 -406
  429. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.d.ts +98 -98
  430. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/WebWorker.js +112 -112
  431. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.d.ts +22 -22
  432. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/assert.js +33 -33
  433. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.d.ts +16 -16
  434. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/fetch.js +43 -43
  435. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.d.ts +84 -84
  436. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.js +327 -327
  437. data/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.js.map +1 -1
  438. data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.d.ts +16 -16
  439. data/node_modules/puppeteer-core/lib/cjs/puppeteer/environment.js +19 -19
  440. data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.d.ts +16 -16
  441. data/node_modules/puppeteer-core/lib/cjs/puppeteer/global.js +2 -2
  442. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.d.ts +17 -17
  443. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-node.js +44 -44
  444. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.d.ts +17 -17
  445. data/node_modules/puppeteer-core/lib/cjs/puppeteer/initialize-web.js +26 -26
  446. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.d.ts +133 -133
  447. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js +500 -500
  448. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js.map +1 -1
  449. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts +40 -39
  450. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  451. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js +256 -224
  452. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
  453. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts +134 -130
  454. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  455. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/LaunchOptions.js +17 -17
  456. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts +16 -16
  457. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
  458. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js +655 -573
  459. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
  460. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
  461. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js +47 -47
  462. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.d.ts +29 -29
  463. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PipeTransport.js +64 -64
  464. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.d.ts +153 -153
  465. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.js +188 -188
  466. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Puppeteer.js.map +1 -1
  467. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.d.ts +17 -17
  468. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.js +173 -173
  469. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node/install.js.map +1 -1
  470. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.d.ts +17 -17
  471. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.js +24 -24
  472. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node-puppeteer-core.js.map +1 -1
  473. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.d.ts +17 -17
  474. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.js +23 -23
  475. data/node_modules/puppeteer-core/lib/cjs/puppeteer/node.js.map +1 -1
  476. data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.d.ts +21 -21
  477. data/node_modules/puppeteer-core/lib/cjs/puppeteer/revisions.js +22 -22
  478. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.d.ts +17 -17
  479. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.js +23 -23
  480. data/node_modules/puppeteer-core/lib/cjs/puppeteer/web.js.map +1 -1
  481. data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.d.ts +27 -27
  482. data/node_modules/puppeteer-core/lib/cjs/vendor/mitt/src/index.js +56 -56
  483. data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.d.ts +110 -110
  484. data/node_modules/puppeteer-core/lib/esm/puppeteer/api-docs-entry.js +80 -80
  485. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.d.ts +175 -175
  486. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Accessibility.js +356 -356
  487. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.d.ts +20 -20
  488. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js +81 -81
  489. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/AriaQueryHandler.js.map +1 -1
  490. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts +455 -453
  491. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.d.ts.map +1 -1
  492. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.js +535 -527
  493. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Browser.js.map +1 -1
  494. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.d.ts +53 -53
  495. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserConnector.js +74 -74
  496. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.d.ts +25 -25
  497. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/BrowserWebSocketTransport.js +30 -30
  498. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts +135 -129
  499. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.d.ts.map +1 -1
  500. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.js +293 -275
  501. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Connection.js.map +1 -1
  502. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.d.ts +24 -24
  503. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConnectionTransport.js +16 -16
  504. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.d.ts +72 -72
  505. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ConsoleMessage.js +60 -60
  506. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.d.ts +204 -204
  507. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Coverage.js +329 -329
  508. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.d.ts +175 -173
  509. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.d.ts.map +1 -1
  510. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.js +657 -653
  511. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DOMWorld.js.map +1 -1
  512. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.d.ts +52 -52
  513. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Debug.js +77 -77
  514. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.d.ts +40 -40
  515. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/DeviceDescriptors.js +1067 -1067
  516. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.d.ts +74 -74
  517. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Dialog.js +93 -93
  518. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.d.ts +24 -24
  519. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EmulationManager.js +33 -33
  520. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts +50 -41
  521. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
  522. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js +50 -43
  523. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Errors.js.map +1 -1
  524. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.d.ts +60 -60
  525. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EvalTypes.js +16 -16
  526. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.d.ts +92 -92
  527. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/EventEmitter.js +109 -109
  528. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.d.ts +81 -81
  529. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Events.js +83 -83
  530. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.d.ts +193 -193
  531. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/ExecutionContext.js +317 -317
  532. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.d.ts +58 -58
  533. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FileChooser.js +67 -67
  534. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts +744 -732
  535. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.d.ts.map +1 -1
  536. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js +1042 -959
  537. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
  538. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts +350 -340
  539. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.d.ts.map +1 -1
  540. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js +545 -542
  541. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPRequest.js.map +1 -1
  542. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts +134 -125
  543. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  544. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js +180 -150
  545. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
  546. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts +358 -359
  547. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.d.ts.map +1 -1
  548. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.js +537 -538
  549. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Input.js.map +1 -1
  550. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts +490 -490
  551. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.d.ts.map +1 -1
  552. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js +802 -801
  553. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/JSHandle.js.map +1 -1
  554. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts +65 -65
  555. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.d.ts.map +1 -1
  556. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js +145 -144
  557. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/LifecycleWatcher.js.map +1 -1
  558. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.d.ts +26 -26
  559. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkConditions.js +30 -30
  560. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts +126 -97
  561. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.d.ts.map +1 -1
  562. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js +463 -341
  563. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/NetworkManager.js.map +1 -1
  564. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.d.ts +161 -161
  565. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PDFOptions.js +31 -31
  566. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts +2055 -2026
  567. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.d.ts.map +1 -1
  568. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.js +2529 -2483
  569. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Page.js.map +1 -1
  570. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.d.ts +20 -20
  571. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Product.js +16 -16
  572. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.d.ts +159 -159
  573. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Puppeteer.js +157 -157
  574. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.d.ts +51 -51
  575. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/PuppeteerViewport.js +1 -1
  576. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.d.ts +64 -64
  577. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/QueryHandler.js +157 -157
  578. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.d.ts +60 -60
  579. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/SecurityDetails.js +72 -72
  580. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts +100 -98
  581. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.d.ts.map +1 -1
  582. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.js +141 -140
  583. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Target.js.map +1 -1
  584. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts +21 -0
  585. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.d.ts.map +1 -0
  586. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js +26 -0
  587. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TaskQueue.js.map +1 -0
  588. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.d.ts +27 -27
  589. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/TimeoutSettings.js +43 -43
  590. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.d.ts +46 -46
  591. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/Tracing.js +105 -105
  592. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.d.ts +39 -39
  593. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/USKeyboardLayout.js +403 -403
  594. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.d.ts +98 -98
  595. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/WebWorker.js +108 -108
  596. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.d.ts +22 -22
  597. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/assert.js +28 -28
  598. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.d.ts +16 -16
  599. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/fetch.js +20 -20
  600. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.d.ts +84 -84
  601. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.js +305 -305
  602. data/node_modules/puppeteer-core/lib/esm/puppeteer/common/helper.js.map +1 -1
  603. data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.d.ts +16 -16
  604. data/node_modules/puppeteer-core/lib/esm/puppeteer/environment.js +16 -16
  605. data/node_modules/puppeteer-core/lib/esm/puppeteer/global.d.ts +16 -16
  606. data/node_modules/puppeteer-core/lib/esm/puppeteer/global.js +1 -1
  607. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.d.ts +17 -17
  608. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-node.js +37 -37
  609. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.d.ts +17 -17
  610. data/node_modules/puppeteer-core/lib/esm/puppeteer/initialize-web.js +22 -22
  611. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.d.ts +133 -133
  612. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js +474 -474
  613. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserFetcher.js.map +1 -1
  614. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts +40 -39
  615. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  616. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js +230 -198
  617. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
  618. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts +134 -130
  619. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  620. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/LaunchOptions.js +16 -16
  621. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts +16 -16
  622. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
  623. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js +633 -551
  624. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Launcher.js.map +1 -1
  625. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.d.ts +26 -26
  626. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/NodeWebSocketTransport.js +40 -40
  627. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.d.ts +29 -29
  628. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/PipeTransport.js +60 -60
  629. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.d.ts +153 -153
  630. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/Puppeteer.js +181 -181
  631. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.d.ts +17 -17
  632. data/node_modules/puppeteer-core/lib/esm/puppeteer/node/install.js +165 -165
  633. data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.d.ts +17 -17
  634. data/node_modules/puppeteer-core/lib/esm/puppeteer/node-puppeteer-core.js +22 -22
  635. data/node_modules/puppeteer-core/lib/esm/puppeteer/node.d.ts +17 -17
  636. data/node_modules/puppeteer-core/lib/esm/puppeteer/node.js +21 -21
  637. data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.d.ts +21 -21
  638. data/node_modules/puppeteer-core/lib/esm/puppeteer/revisions.js +19 -19
  639. data/node_modules/puppeteer-core/lib/esm/puppeteer/web.d.ts +17 -17
  640. data/node_modules/puppeteer-core/lib/esm/puppeteer/web.js +21 -21
  641. data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.d.ts +27 -27
  642. data/node_modules/puppeteer-core/lib/esm/vendor/mitt/src/index.js +53 -53
  643. data/node_modules/puppeteer-core/lib/types.d.ts +3899 -3766
  644. data/node_modules/puppeteer-core/package.json +115 -122
  645. data/node_modules/puppeteer-core/typescript-if-required.js +61 -61
  646. data/node_modules/readable-stream/CONTRIBUTING.md +38 -38
  647. data/node_modules/readable-stream/GOVERNANCE.md +136 -136
  648. data/node_modules/readable-stream/LICENSE +47 -47
  649. data/node_modules/readable-stream/README.md +106 -106
  650. data/node_modules/readable-stream/errors-browser.js +127 -127
  651. data/node_modules/readable-stream/errors.js +116 -116
  652. data/node_modules/readable-stream/experimentalWarning.js +17 -17
  653. data/node_modules/readable-stream/lib/_stream_duplex.js +138 -138
  654. data/node_modules/readable-stream/lib/_stream_passthrough.js +38 -38
  655. data/node_modules/readable-stream/lib/_stream_readable.js +1123 -1123
  656. data/node_modules/readable-stream/lib/_stream_transform.js +200 -200
  657. data/node_modules/readable-stream/lib/_stream_writable.js +696 -696
  658. data/node_modules/readable-stream/lib/internal/streams/async_iterator.js +206 -206
  659. data/node_modules/readable-stream/lib/internal/streams/buffer_list.js +209 -209
  660. data/node_modules/readable-stream/lib/internal/streams/destroy.js +104 -104
  661. data/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +103 -103
  662. data/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -3
  663. data/node_modules/readable-stream/lib/internal/streams/from.js +63 -63
  664. data/node_modules/readable-stream/lib/internal/streams/pipeline.js +96 -96
  665. data/node_modules/readable-stream/lib/internal/streams/state.js +26 -26
  666. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -1
  667. data/node_modules/readable-stream/lib/internal/streams/stream.js +1 -1
  668. data/node_modules/readable-stream/package.json +68 -68
  669. data/node_modules/readable-stream/readable-browser.js +9 -9
  670. data/node_modules/readable-stream/readable.js +16 -16
  671. data/node_modules/rimraf/CHANGELOG.md +65 -65
  672. data/node_modules/rimraf/LICENSE +15 -15
  673. data/node_modules/rimraf/README.md +101 -101
  674. data/node_modules/rimraf/bin.js +68 -68
  675. data/node_modules/rimraf/package.json +32 -32
  676. data/node_modules/rimraf/rimraf.js +360 -360
  677. data/node_modules/safe-buffer/LICENSE +21 -21
  678. data/node_modules/safe-buffer/README.md +584 -584
  679. data/node_modules/safe-buffer/index.d.ts +186 -186
  680. data/node_modules/safe-buffer/index.js +65 -65
  681. data/node_modules/safe-buffer/package.json +51 -51
  682. data/node_modules/string_decoder/LICENSE +48 -48
  683. data/node_modules/string_decoder/README.md +47 -47
  684. data/node_modules/string_decoder/lib/string_decoder.js +295 -295
  685. data/node_modules/string_decoder/package.json +34 -34
  686. data/node_modules/tar-fs/.travis.yml +6 -5
  687. data/node_modules/tar-fs/LICENSE +20 -20
  688. data/node_modules/tar-fs/README.md +165 -163
  689. data/node_modules/tar-fs/index.js +351 -348
  690. data/node_modules/tar-fs/package.json +41 -41
  691. data/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -1
  692. data/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -1
  693. data/node_modules/tar-fs/test/index.js +346 -346
  694. data/node_modules/tar-stream/LICENSE +20 -20
  695. data/node_modules/tar-stream/README.md +168 -168
  696. data/node_modules/tar-stream/extract.js +257 -257
  697. data/node_modules/tar-stream/headers.js +295 -295
  698. data/node_modules/tar-stream/index.js +2 -2
  699. data/node_modules/tar-stream/pack.js +255 -255
  700. data/node_modules/tar-stream/package.json +58 -58
  701. data/node_modules/tar-stream/sandbox.js +11 -11
  702. data/node_modules/through/.travis.yml +5 -5
  703. data/node_modules/through/LICENSE.APACHE2 +15 -15
  704. data/node_modules/through/LICENSE.MIT +24 -24
  705. data/node_modules/through/index.js +108 -108
  706. data/node_modules/through/package.json +36 -36
  707. data/node_modules/through/readme.markdown +64 -64
  708. data/node_modules/through/test/async.js +28 -28
  709. data/node_modules/through/test/auto-destroy.js +30 -30
  710. data/node_modules/through/test/buffering.js +71 -71
  711. data/node_modules/through/test/end.js +45 -45
  712. data/node_modules/through/test/index.js +133 -133
  713. data/node_modules/tr46/.npmignore +4 -0
  714. data/node_modules/tr46/index.js +193 -0
  715. data/node_modules/tr46/lib/.gitkeep +0 -0
  716. data/node_modules/tr46/lib/mappingTable.json +1 -0
  717. data/node_modules/tr46/package.json +31 -0
  718. data/node_modules/unbzip2-stream/LICENSE +24 -24
  719. data/node_modules/unbzip2-stream/README.md +59 -59
  720. data/node_modules/unbzip2-stream/dist/unbzip2-stream.min.js +1 -1
  721. data/node_modules/unbzip2-stream/index.js +93 -92
  722. data/node_modules/unbzip2-stream/lib/bit_iterator.js +39 -39
  723. data/node_modules/unbzip2-stream/lib/bzip2.js +365 -367
  724. data/node_modules/unbzip2-stream/package.json +51 -51
  725. data/node_modules/util-deprecate/History.md +16 -16
  726. data/node_modules/util-deprecate/LICENSE +24 -24
  727. data/node_modules/util-deprecate/README.md +53 -53
  728. data/node_modules/util-deprecate/browser.js +67 -67
  729. data/node_modules/util-deprecate/node.js +6 -6
  730. data/node_modules/util-deprecate/package.json +27 -27
  731. data/node_modules/webidl-conversions/LICENSE.md +12 -0
  732. data/node_modules/webidl-conversions/README.md +53 -0
  733. data/node_modules/webidl-conversions/lib/index.js +189 -0
  734. data/node_modules/webidl-conversions/package.json +23 -0
  735. data/node_modules/whatwg-url/LICENSE.txt +21 -0
  736. data/node_modules/whatwg-url/README.md +67 -0
  737. data/node_modules/whatwg-url/lib/URL-impl.js +200 -0
  738. data/node_modules/whatwg-url/lib/URL.js +196 -0
  739. data/node_modules/whatwg-url/lib/public-api.js +11 -0
  740. data/node_modules/whatwg-url/lib/url-state-machine.js +1297 -0
  741. data/node_modules/whatwg-url/lib/utils.js +20 -0
  742. data/node_modules/whatwg-url/package.json +32 -0
  743. data/node_modules/wrappy/LICENSE +15 -15
  744. data/node_modules/wrappy/README.md +36 -36
  745. data/node_modules/wrappy/package.json +29 -29
  746. data/node_modules/wrappy/wrappy.js +33 -33
  747. data/node_modules/ws/LICENSE +19 -21
  748. data/node_modules/ws/README.md +493 -496
  749. data/node_modules/ws/browser.js +8 -8
  750. data/node_modules/ws/index.js +13 -10
  751. data/node_modules/ws/lib/buffer-util.js +126 -129
  752. data/node_modules/ws/lib/constants.js +12 -10
  753. data/node_modules/ws/lib/event-target.js +266 -184
  754. data/node_modules/ws/lib/extension.js +203 -223
  755. data/node_modules/ws/lib/limiter.js +55 -55
  756. data/node_modules/ws/lib/permessage-deflate.js +511 -517
  757. data/node_modules/ws/lib/receiver.js +612 -507
  758. data/node_modules/ws/lib/sender.js +422 -405
  759. data/node_modules/ws/lib/stream.js +180 -165
  760. data/node_modules/ws/lib/subprotocol.js +62 -0
  761. data/node_modules/ws/lib/validation.js +124 -104
  762. data/node_modules/ws/lib/websocket-server.js +485 -418
  763. data/node_modules/ws/lib/websocket.js +1149 -942
  764. data/node_modules/ws/package.json +61 -56
  765. data/node_modules/ws/wrapper.mjs +8 -0
  766. data/node_modules/yauzl/LICENSE +21 -21
  767. data/node_modules/yauzl/README.md +658 -658
  768. data/node_modules/yauzl/index.js +796 -796
  769. data/node_modules/yauzl/package.json +40 -40
  770. data/package.json +1 -1
  771. metadata +59 -61
  772. data/node_modules/.bin/mkdirp +0 -12
  773. data/node_modules/.bin/mkdirp.cmd +0 -17
  774. data/node_modules/.bin/mkdirp.ps1 +0 -28
  775. data/node_modules/devtools-protocol/changelog.md +0 -10491
  776. data/node_modules/devtools-protocol/externs/protocol_externs.js +0 -9734
  777. data/node_modules/minimist/.travis.yml +0 -8
  778. data/node_modules/minimist/LICENSE +0 -18
  779. data/node_modules/minimist/example/parse.js +0 -2
  780. data/node_modules/minimist/index.js +0 -245
  781. data/node_modules/minimist/package.json +0 -45
  782. data/node_modules/minimist/readme.markdown +0 -95
  783. data/node_modules/minimist/test/all_bool.js +0 -32
  784. data/node_modules/minimist/test/bool.js +0 -178
  785. data/node_modules/minimist/test/dash.js +0 -31
  786. data/node_modules/minimist/test/default_bool.js +0 -35
  787. data/node_modules/minimist/test/dotted.js +0 -22
  788. data/node_modules/minimist/test/kv_short.js +0 -16
  789. data/node_modules/minimist/test/long.js +0 -31
  790. data/node_modules/minimist/test/num.js +0 -36
  791. data/node_modules/minimist/test/parse.js +0 -197
  792. data/node_modules/minimist/test/parse_modified.js +0 -9
  793. data/node_modules/minimist/test/proto.js +0 -44
  794. data/node_modules/minimist/test/short.js +0 -67
  795. data/node_modules/minimist/test/stop_early.js +0 -15
  796. data/node_modules/minimist/test/unknown.js +0 -102
  797. data/node_modules/minimist/test/whitespace.js +0 -8
  798. data/node_modules/mkdirp/bin/cmd.js +0 -33
  799. data/node_modules/mkdirp/bin/usage.txt +0 -12
  800. data/node_modules/mkdirp/package.json +0 -34
  801. data/node_modules/mkdirp/readme.markdown +0 -100
  802. data/node_modules/node-fetch/CHANGELOG.md +0 -272
@@ -1,1355 +1,1355 @@
1
- /**
2
- * The `child_process` module provides the ability to spawn subprocesses in
3
- * a manner that is similar, but not identical, to [`popen(3)`](http://man7.org/linux/man-pages/man3/popen.3.html). This capability
4
- * is primarily provided by the {@link spawn} function:
5
- *
6
- * ```js
7
- * const { spawn } = require('child_process');
8
- * const ls = spawn('ls', ['-lh', '/usr']);
9
- *
10
- * ls.stdout.on('data', (data) => {
11
- * console.log(`stdout: ${data}`);
12
- * });
13
- *
14
- * ls.stderr.on('data', (data) => {
15
- * console.error(`stderr: ${data}`);
16
- * });
17
- *
18
- * ls.on('close', (code) => {
19
- * console.log(`child process exited with code ${code}`);
20
- * });
21
- * ```
22
- *
23
- * By default, pipes for `stdin`, `stdout`, and `stderr` are established between
24
- * the parent Node.js process and the spawned subprocess. These pipes have
25
- * limited (and platform-specific) capacity. If the subprocess writes to
26
- * stdout in excess of that limit without the output being captured, the
27
- * subprocess blocks waiting for the pipe buffer to accept more data. This is
28
- * identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }`option if the output will not be consumed.
29
- *
30
- * The command lookup is performed using the `options.env.PATH` environment
31
- * variable if it is in the `options` object. Otherwise, `process.env.PATH` is
32
- * used.
33
- *
34
- * On Windows, environment variables are case-insensitive. Node.js
35
- * lexicographically sorts the `env` keys and uses the first one that
36
- * case-insensitively matches. Only first (in lexicographic order) entry will be
37
- * passed to the subprocess. This might lead to issues on Windows when passing
38
- * objects to the `env` option that have multiple variants of the same key, such as`PATH` and `Path`.
39
- *
40
- * The {@link spawn} method spawns the child process asynchronously,
41
- * without blocking the Node.js event loop. The {@link spawnSync} function provides equivalent functionality in a synchronous manner that blocks
42
- * the event loop until the spawned process either exits or is terminated.
43
- *
44
- * For convenience, the `child_process` module provides a handful of synchronous
45
- * and asynchronous alternatives to {@link spawn} and {@link spawnSync}. Each of these alternatives are implemented on
46
- * top of {@link spawn} or {@link spawnSync}.
47
- *
48
- * * {@link exec}: spawns a shell and runs a command within that
49
- * shell, passing the `stdout` and `stderr` to a callback function when
50
- * complete.
51
- * * {@link execFile}: similar to {@link exec} except
52
- * that it spawns the command directly without first spawning a shell by
53
- * default.
54
- * * {@link fork}: spawns a new Node.js process and invokes a
55
- * specified module with an IPC communication channel established that allows
56
- * sending messages between parent and child.
57
- * * {@link execSync}: a synchronous version of {@link exec} that will block the Node.js event loop.
58
- * * {@link execFileSync}: a synchronous version of {@link execFile} that will block the Node.js event loop.
59
- *
60
- * For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however,
61
- * the synchronous methods can have significant impact on performance due to
62
- * stalling the event loop while spawned processes complete.
63
- * @see [source](https://github.com/nodejs/node/blob/v16.7.0/lib/child_process.js)
64
- */
65
- declare module 'child_process' {
66
- import { ObjectEncodingOptions } from 'node:fs';
67
- import { EventEmitter, Abortable } from 'node:events';
68
- import * as net from 'node:net';
69
- import { Writable, Readable, Stream, Pipe } from 'node:stream';
70
- import { URL } from 'node:url';
71
- type Serializable = string | object | number | boolean | bigint;
72
- type SendHandle = net.Socket | net.Server;
73
- class ChildProcess extends EventEmitter {
74
- /**
75
- * A `Writable Stream` that represents the child process's `stdin`.
76
- *
77
- * If a child process waits to read all of its input, the child will not continue
78
- * until this stream has been closed via `end()`.
79
- *
80
- * If the child was spawned with `stdio[0]` set to anything other than `'pipe'`,
81
- * then this will be `null`.
82
- *
83
- * `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will
84
- * refer to the same value.
85
- *
86
- * The `subprocess.stdin` property can be `undefined` if the child process could
87
- * not be successfully spawned.
88
- * @since v0.1.90
89
- */
90
- stdin: Writable | null;
91
- /**
92
- * A `Readable Stream` that represents the child process's `stdout`.
93
- *
94
- * If the child was spawned with `stdio[1]` set to anything other than `'pipe'`,
95
- * then this will be `null`.
96
- *
97
- * `subprocess.stdout` is an alias for `subprocess.stdio[1]`. Both properties will
98
- * refer to the same value.
99
- *
100
- * ```js
101
- * const { spawn } = require('child_process');
102
- *
103
- * const subprocess = spawn('ls');
104
- *
105
- * subprocess.stdout.on('data', (data) => {
106
- * console.log(`Received chunk ${data}`);
107
- * });
108
- * ```
109
- *
110
- * The `subprocess.stdout` property can be `null` if the child process could
111
- * not be successfully spawned.
112
- * @since v0.1.90
113
- */
114
- stdout: Readable | null;
115
- /**
116
- * A `Readable Stream` that represents the child process's `stderr`.
117
- *
118
- * If the child was spawned with `stdio[2]` set to anything other than `'pipe'`,
119
- * then this will be `null`.
120
- *
121
- * `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will
122
- * refer to the same value.
123
- *
124
- * The `subprocess.stderr` property can be `null` if the child process could
125
- * not be successfully spawned.
126
- * @since v0.1.90
127
- */
128
- stderr: Readable | null;
129
- /**
130
- * The `subprocess.channel` property is a reference to the child's IPC channel. If
131
- * no IPC channel currently exists, this property is `undefined`.
132
- * @since v7.1.0
133
- */
134
- readonly channel?: Pipe | null | undefined;
135
- /**
136
- * A sparse array of pipes to the child process, corresponding with positions in
137
- * the `stdio` option passed to {@link spawn} that have been set
138
- * to the value `'pipe'`. `subprocess.stdio[0]`, `subprocess.stdio[1]`, and`subprocess.stdio[2]` are also available as `subprocess.stdin`,`subprocess.stdout`, and `subprocess.stderr`,
139
- * respectively.
140
- *
141
- * In the following example, only the child's fd `1` (stdout) is configured as a
142
- * pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values
143
- * in the array are `null`.
144
- *
145
- * ```js
146
- * const assert = require('assert');
147
- * const fs = require('fs');
148
- * const child_process = require('child_process');
149
- *
150
- * const subprocess = child_process.spawn('ls', {
151
- * stdio: [
152
- * 0, // Use parent's stdin for child.
153
- * 'pipe', // Pipe child's stdout to parent.
154
- * fs.openSync('err.out', 'w'), // Direct child's stderr to a file.
155
- * ]
156
- * });
157
- *
158
- * assert.strictEqual(subprocess.stdio[0], null);
159
- * assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
160
- *
161
- * assert(subprocess.stdout);
162
- * assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
163
- *
164
- * assert.strictEqual(subprocess.stdio[2], null);
165
- * assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
166
- * ```
167
- *
168
- * The `subprocess.stdio` property can be `undefined` if the child process could
169
- * not be successfully spawned.
170
- * @since v0.7.10
171
- */
172
- readonly stdio: [
173
- Writable | null,
174
- // stdin
175
- Readable | null,
176
- // stdout
177
- Readable | null,
178
- // stderr
179
- Readable | Writable | null | undefined,
180
- // extra
181
- Readable | Writable | null | undefined // extra
182
- ];
183
- /**
184
- * The `subprocess.killed` property indicates whether the child process
185
- * successfully received a signal from `subprocess.kill()`. The `killed` property
186
- * does not indicate that the child process has been terminated.
187
- * @since v0.5.10
188
- */
189
- readonly killed: boolean;
190
- /**
191
- * Returns the process identifier (PID) of the child process. If the child process
192
- * fails to spawn due to errors, then the value is `undefined` and `error` is
193
- * emitted.
194
- *
195
- * ```js
196
- * const { spawn } = require('child_process');
197
- * const grep = spawn('grep', ['ssh']);
198
- *
199
- * console.log(`Spawned child pid: ${grep.pid}`);
200
- * grep.stdin.end();
201
- * ```
202
- * @since v0.1.90
203
- */
204
- readonly pid?: number | undefined;
205
- /**
206
- * The `subprocess.connected` property indicates whether it is still possible to
207
- * send and receive messages from a child process. When `subprocess.connected` is`false`, it is no longer possible to send or receive messages.
208
- * @since v0.7.2
209
- */
210
- readonly connected: boolean;
211
- /**
212
- * The `subprocess.exitCode` property indicates the exit code of the child process.
213
- * If the child process is still running, the field will be `null`.
214
- */
215
- readonly exitCode: number | null;
216
- /**
217
- * The `subprocess.signalCode` property indicates the signal received by
218
- * the child process if any, else `null`.
219
- */
220
- readonly signalCode: NodeJS.Signals | null;
221
- /**
222
- * The `subprocess.spawnargs` property represents the full list of command-line
223
- * arguments the child process was launched with.
224
- */
225
- readonly spawnargs: string[];
226
- /**
227
- * The `subprocess.spawnfile` property indicates the executable file name of
228
- * the child process that is launched.
229
- *
230
- * For {@link fork}, its value will be equal to `process.execPath`.
231
- * For {@link spawn}, its value will be the name of
232
- * the executable file.
233
- * For {@link exec}, its value will be the name of the shell
234
- * in which the child process is launched.
235
- */
236
- readonly spawnfile: string;
237
- /**
238
- * The `subprocess.kill()` method sends a signal to the child process. If no
239
- * argument is given, the process will be sent the `'SIGTERM'` signal. See[`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) for a list of available signals. This function
240
- * returns `true` if[`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) succeeds, and `false` otherwise.
241
- *
242
- * ```js
243
- * const { spawn } = require('child_process');
244
- * const grep = spawn('grep', ['ssh']);
245
- *
246
- * grep.on('close', (code, signal) => {
247
- * console.log(
248
- * `child process terminated due to receipt of signal ${signal}`);
249
- * });
250
- *
251
- * // Send SIGHUP to process.
252
- * grep.kill('SIGHUP');
253
- * ```
254
- *
255
- * The `ChildProcess` object may emit an `'error'` event if the signal
256
- * cannot be delivered. Sending a signal to a child process that has already exited
257
- * is not an error but may have unforeseen consequences. Specifically, if the
258
- * process identifier (PID) has been reassigned to another process, the signal will
259
- * be delivered to that process instead which can have unexpected results.
260
- *
261
- * While the function is called `kill`, the signal delivered to the child process
262
- * may not actually terminate the process.
263
- *
264
- * See [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for reference.
265
- *
266
- * On Windows, where POSIX signals do not exist, the `signal` argument will be
267
- * ignored, and the process will be killed forcefully and abruptly (similar to`'SIGKILL'`).
268
- * See `Signal Events` for more details.
269
- *
270
- * On Linux, child processes of child processes will not be terminated
271
- * when attempting to kill their parent. This is likely to happen when running a
272
- * new process in a shell or with the use of the `shell` option of `ChildProcess`:
273
- *
274
- * ```js
275
- * 'use strict';
276
- * const { spawn } = require('child_process');
277
- *
278
- * const subprocess = spawn(
279
- * 'sh',
280
- * [
281
- * '-c',
282
- * `node -e "setInterval(() => {
283
- * console.log(process.pid, 'is alive')
284
- * }, 500);"`,
285
- * ], {
286
- * stdio: ['inherit', 'inherit', 'inherit']
287
- * }
288
- * );
289
- *
290
- * setTimeout(() => {
291
- * subprocess.kill(); // Does not terminate the Node.js process in the shell.
292
- * }, 2000);
293
- * ```
294
- * @since v0.1.90
295
- */
296
- kill(signal?: NodeJS.Signals | number): boolean;
297
- /**
298
- * When an IPC channel has been established between the parent and child (
299
- * i.e. when using {@link fork}), the `subprocess.send()` method can
300
- * be used to send messages to the child process. When the child process is a
301
- * Node.js instance, these messages can be received via the `'message'` event.
302
- *
303
- * The message goes through serialization and parsing. The resulting
304
- * message might not be the same as what is originally sent.
305
- *
306
- * For example, in the parent script:
307
- *
308
- * ```js
309
- * const cp = require('child_process');
310
- * const n = cp.fork(`${__dirname}/sub.js`);
311
- *
312
- * n.on('message', (m) => {
313
- * console.log('PARENT got message:', m);
314
- * });
315
- *
316
- * // Causes the child to print: CHILD got message: { hello: 'world' }
317
- * n.send({ hello: 'world' });
318
- * ```
319
- *
320
- * And then the child script, `'sub.js'` might look like this:
321
- *
322
- * ```js
323
- * process.on('message', (m) => {
324
- * console.log('CHILD got message:', m);
325
- * });
326
- *
327
- * // Causes the parent to print: PARENT got message: { foo: 'bar', baz: null }
328
- * process.send({ foo: 'bar', baz: NaN });
329
- * ```
330
- *
331
- * Child Node.js processes will have a `process.send()` method of their own
332
- * that allows the child to send messages back to the parent.
333
- *
334
- * There is a special case when sending a `{cmd: 'NODE_foo'}` message. Messages
335
- * containing a `NODE_` prefix in the `cmd` property are reserved for use within
336
- * Node.js core and will not be emitted in the child's `'message'` event. Rather, such messages are emitted using the`'internalMessage'` event and are consumed internally by Node.js.
337
- * Applications should avoid using such messages or listening for`'internalMessage'` events as it is subject to change without notice.
338
- *
339
- * The optional `sendHandle` argument that may be passed to `subprocess.send()` is
340
- * for passing a TCP server or socket object to the child process. The child will
341
- * receive the object as the second argument passed to the callback function
342
- * registered on the `'message'` event. Any data that is received
343
- * and buffered in the socket will not be sent to the child.
344
- *
345
- * The optional `callback` is a function that is invoked after the message is
346
- * sent but before the child may have received it. The function is called with a
347
- * single argument: `null` on success, or an `Error` object on failure.
348
- *
349
- * If no `callback` function is provided and the message cannot be sent, an`'error'` event will be emitted by the `ChildProcess` object. This can
350
- * happen, for instance, when the child process has already exited.
351
- *
352
- * `subprocess.send()` will return `false` if the channel has closed or when the
353
- * backlog of unsent messages exceeds a threshold that makes it unwise to send
354
- * more. Otherwise, the method returns `true`. The `callback` function can be
355
- * used to implement flow control.
356
- *
357
- * #### Example: sending a server object
358
- *
359
- * The `sendHandle` argument can be used, for instance, to pass the handle of
360
- * a TCP server object to the child process as illustrated in the example below:
361
- *
362
- * ```js
363
- * const subprocess = require('child_process').fork('subprocess.js');
364
- *
365
- * // Open up the server object and send the handle.
366
- * const server = require('net').createServer();
367
- * server.on('connection', (socket) => {
368
- * socket.end('handled by parent');
369
- * });
370
- * server.listen(1337, () => {
371
- * subprocess.send('server', server);
372
- * });
373
- * ```
374
- *
375
- * The child would then receive the server object as:
376
- *
377
- * ```js
378
- * process.on('message', (m, server) => {
379
- * if (m === 'server') {
380
- * server.on('connection', (socket) => {
381
- * socket.end('handled by child');
382
- * });
383
- * }
384
- * });
385
- * ```
386
- *
387
- * Once the server is now shared between the parent and child, some connections
388
- * can be handled by the parent and some by the child.
389
- *
390
- * While the example above uses a server created using the `net` module, `dgram`module servers use exactly the same workflow with the exceptions of listening on
391
- * a `'message'` event instead of `'connection'` and using `server.bind()` instead
392
- * of `server.listen()`. This is, however, currently only supported on Unix
393
- * platforms.
394
- *
395
- * #### Example: sending a socket object
396
- *
397
- * Similarly, the `sendHandler` argument can be used to pass the handle of a
398
- * socket to the child process. The example below spawns two children that each
399
- * handle connections with "normal" or "special" priority:
400
- *
401
- * ```js
402
- * const { fork } = require('child_process');
403
- * const normal = fork('subprocess.js', ['normal']);
404
- * const special = fork('subprocess.js', ['special']);
405
- *
406
- * // Open up the server and send sockets to child. Use pauseOnConnect to prevent
407
- * // the sockets from being read before they are sent to the child process.
408
- * const server = require('net').createServer({ pauseOnConnect: true });
409
- * server.on('connection', (socket) => {
410
- *
411
- * // If this is special priority...
412
- * if (socket.remoteAddress === '74.125.127.100') {
413
- * special.send('socket', socket);
414
- * return;
415
- * }
416
- * // This is normal priority.
417
- * normal.send('socket', socket);
418
- * });
419
- * server.listen(1337);
420
- * ```
421
- *
422
- * The `subprocess.js` would receive the socket handle as the second argument
423
- * passed to the event callback function:
424
- *
425
- * ```js
426
- * process.on('message', (m, socket) => {
427
- * if (m === 'socket') {
428
- * if (socket) {
429
- * // Check that the client socket exists.
430
- * // It is possible for the socket to be closed between the time it is
431
- * // sent and the time it is received in the child process.
432
- * socket.end(`Request handled with ${process.argv[2]} priority`);
433
- * }
434
- * }
435
- * });
436
- * ```
437
- *
438
- * Do not use `.maxConnections` on a socket that has been passed to a subprocess.
439
- * The parent cannot track when the socket is destroyed.
440
- *
441
- * Any `'message'` handlers in the subprocess should verify that `socket` exists,
442
- * as the connection may have been closed during the time it takes to send the
443
- * connection to the child.
444
- * @since v0.5.9
445
- * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties:
446
- */
447
- send(message: Serializable, callback?: (error: Error | null) => void): boolean;
448
- send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
449
- send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
450
- /**
451
- * Closes the IPC channel between parent and child, allowing the child to exit
452
- * gracefully once there are no other connections keeping it alive. After calling
453
- * this method the `subprocess.connected` and `process.connected` properties in
454
- * both the parent and child (respectively) will be set to `false`, and it will be
455
- * no longer possible to pass messages between the processes.
456
- *
457
- * The `'disconnect'` event will be emitted when there are no messages in the
458
- * process of being received. This will most often be triggered immediately after
459
- * calling `subprocess.disconnect()`.
460
- *
461
- * When the child process is a Node.js instance (e.g. spawned using {@link fork}), the `process.disconnect()` method can be invoked
462
- * within the child process to close the IPC channel as well.
463
- * @since v0.7.2
464
- */
465
- disconnect(): void;
466
- /**
467
- * By default, the parent will wait for the detached child to exit. To prevent the
468
- * parent from waiting for a given `subprocess` to exit, use the`subprocess.unref()` method. Doing so will cause the parent's event loop to not
469
- * include the child in its reference count, allowing the parent to exit
470
- * independently of the child, unless there is an established IPC channel between
471
- * the child and the parent.
472
- *
473
- * ```js
474
- * const { spawn } = require('child_process');
475
- *
476
- * const subprocess = spawn(process.argv[0], ['child_program.js'], {
477
- * detached: true,
478
- * stdio: 'ignore'
479
- * });
480
- *
481
- * subprocess.unref();
482
- * ```
483
- * @since v0.7.10
484
- */
485
- unref(): void;
486
- /**
487
- * Calling `subprocess.ref()` after making a call to `subprocess.unref()` will
488
- * restore the removed reference count for the child process, forcing the parent
489
- * to wait for the child to exit before exiting itself.
490
- *
491
- * ```js
492
- * const { spawn } = require('child_process');
493
- *
494
- * const subprocess = spawn(process.argv[0], ['child_program.js'], {
495
- * detached: true,
496
- * stdio: 'ignore'
497
- * });
498
- *
499
- * subprocess.unref();
500
- * subprocess.ref();
501
- * ```
502
- * @since v0.7.10
503
- */
504
- ref(): void;
505
- /**
506
- * events.EventEmitter
507
- * 1. close
508
- * 2. disconnect
509
- * 3. error
510
- * 4. exit
511
- * 5. message
512
- * 6. spawn
513
- */
514
- addListener(event: string, listener: (...args: any[]) => void): this;
515
- addListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
516
- addListener(event: 'disconnect', listener: () => void): this;
517
- addListener(event: 'error', listener: (err: Error) => void): this;
518
- addListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
519
- addListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
520
- addListener(event: 'spawn', listener: () => void): this;
521
- emit(event: string | symbol, ...args: any[]): boolean;
522
- emit(event: 'close', code: number | null, signal: NodeJS.Signals | null): boolean;
523
- emit(event: 'disconnect'): boolean;
524
- emit(event: 'error', err: Error): boolean;
525
- emit(event: 'exit', code: number | null, signal: NodeJS.Signals | null): boolean;
526
- emit(event: 'message', message: Serializable, sendHandle: SendHandle): boolean;
527
- emit(event: 'spawn', listener: () => void): boolean;
528
- on(event: string, listener: (...args: any[]) => void): this;
529
- on(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
530
- on(event: 'disconnect', listener: () => void): this;
531
- on(event: 'error', listener: (err: Error) => void): this;
532
- on(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
533
- on(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
534
- on(event: 'spawn', listener: () => void): this;
535
- once(event: string, listener: (...args: any[]) => void): this;
536
- once(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
537
- once(event: 'disconnect', listener: () => void): this;
538
- once(event: 'error', listener: (err: Error) => void): this;
539
- once(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
540
- once(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
541
- once(event: 'spawn', listener: () => void): this;
542
- prependListener(event: string, listener: (...args: any[]) => void): this;
543
- prependListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
544
- prependListener(event: 'disconnect', listener: () => void): this;
545
- prependListener(event: 'error', listener: (err: Error) => void): this;
546
- prependListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
547
- prependListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
548
- prependListener(event: 'spawn', listener: () => void): this;
549
- prependOnceListener(event: string, listener: (...args: any[]) => void): this;
550
- prependOnceListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
551
- prependOnceListener(event: 'disconnect', listener: () => void): this;
552
- prependOnceListener(event: 'error', listener: (err: Error) => void): this;
553
- prependOnceListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
554
- prependOnceListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
555
- prependOnceListener(event: 'spawn', listener: () => void): this;
556
- }
557
- // return this object when stdio option is undefined or not specified
558
- interface ChildProcessWithoutNullStreams extends ChildProcess {
559
- stdin: Writable;
560
- stdout: Readable;
561
- stderr: Readable;
562
- readonly stdio: [
563
- Writable,
564
- Readable,
565
- Readable,
566
- // stderr
567
- Readable | Writable | null | undefined,
568
- // extra, no modification
569
- Readable | Writable | null | undefined // extra, no modification
570
- ];
571
- }
572
- // return this object when stdio option is a tuple of 3
573
- interface ChildProcessByStdio<I extends null | Writable, O extends null | Readable, E extends null | Readable> extends ChildProcess {
574
- stdin: I;
575
- stdout: O;
576
- stderr: E;
577
- readonly stdio: [
578
- I,
579
- O,
580
- E,
581
- Readable | Writable | null | undefined,
582
- // extra, no modification
583
- Readable | Writable | null | undefined // extra, no modification
584
- ];
585
- }
586
- interface MessageOptions {
587
- keepOpen?: boolean | undefined;
588
- }
589
- type IOType = 'overlapped' | 'pipe' | 'ignore' | 'inherit';
590
- type StdioOptions = IOType | Array<IOType | 'ipc' | Stream | number | null | undefined>;
591
- type SerializationType = 'json' | 'advanced';
592
- interface MessagingOptions extends Abortable {
593
- /**
594
- * Specify the kind of serialization used for sending messages between processes.
595
- * @default 'json'
596
- */
597
- serialization?: SerializationType | undefined;
598
- /**
599
- * The signal value to be used when the spawned process will be killed by the abort signal.
600
- * @default 'SIGTERM'
601
- */
602
- killSignal?: NodeJS.Signals | number | undefined;
603
- /**
604
- * In milliseconds the maximum amount of time the process is allowed to run.
605
- */
606
- timeout?: number | undefined;
607
- }
608
- interface ProcessEnvOptions {
609
- uid?: number | undefined;
610
- gid?: number | undefined;
611
- cwd?: string | URL | undefined;
612
- env?: NodeJS.ProcessEnv | undefined;
613
- }
614
- interface CommonOptions extends ProcessEnvOptions {
615
- /**
616
- * @default true
617
- */
618
- windowsHide?: boolean | undefined;
619
- /**
620
- * @default 0
621
- */
622
- timeout?: number | undefined;
623
- }
624
- interface CommonSpawnOptions extends CommonOptions, MessagingOptions, Abortable {
625
- argv0?: string | undefined;
626
- stdio?: StdioOptions | undefined;
627
- shell?: boolean | string | undefined;
628
- windowsVerbatimArguments?: boolean | undefined;
629
- }
630
- interface SpawnOptions extends CommonSpawnOptions {
631
- detached?: boolean | undefined;
632
- }
633
- interface SpawnOptionsWithoutStdio extends SpawnOptions {
634
- stdio?: StdioPipeNamed | StdioPipe[] | undefined;
635
- }
636
- type StdioNull = 'inherit' | 'ignore' | Stream;
637
- type StdioPipeNamed = 'pipe' | 'overlapped';
638
- type StdioPipe = undefined | null | StdioPipeNamed;
639
- interface SpawnOptionsWithStdioTuple<Stdin extends StdioNull | StdioPipe, Stdout extends StdioNull | StdioPipe, Stderr extends StdioNull | StdioPipe> extends SpawnOptions {
640
- stdio: [Stdin, Stdout, Stderr];
641
- }
642
- /**
643
- * The `child_process.spawn()` method spawns a new process using the given`command`, with command-line arguments in `args`. If omitted, `args` defaults
644
- * to an empty array.
645
- *
646
- * **If the `shell` option is enabled, do not pass unsanitized user input to this**
647
- * **function. Any input containing shell metacharacters may be used to trigger**
648
- * **arbitrary command execution.**
649
- *
650
- * A third argument may be used to specify additional options, with these defaults:
651
- *
652
- * ```js
653
- * const defaults = {
654
- * cwd: undefined,
655
- * env: process.env
656
- * };
657
- * ```
658
- *
659
- * Use `cwd` to specify the working directory from which the process is spawned.
660
- * If not given, the default is to inherit the current working directory. If given,
661
- * but the path does not exist, the child process emits an `ENOENT` error
662
- * and exits immediately. `ENOENT` is also emitted when the command
663
- * does not exist.
664
- *
665
- * Use `env` to specify environment variables that will be visible to the new
666
- * process, the default is `process.env`.
667
- *
668
- * `undefined` values in `env` will be ignored.
669
- *
670
- * Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the
671
- * exit code:
672
- *
673
- * ```js
674
- * const { spawn } = require('child_process');
675
- * const ls = spawn('ls', ['-lh', '/usr']);
676
- *
677
- * ls.stdout.on('data', (data) => {
678
- * console.log(`stdout: ${data}`);
679
- * });
680
- *
681
- * ls.stderr.on('data', (data) => {
682
- * console.error(`stderr: ${data}`);
683
- * });
684
- *
685
- * ls.on('close', (code) => {
686
- * console.log(`child process exited with code ${code}`);
687
- * });
688
- * ```
689
- *
690
- * Example: A very elaborate way to run `ps ax | grep ssh`
691
- *
692
- * ```js
693
- * const { spawn } = require('child_process');
694
- * const ps = spawn('ps', ['ax']);
695
- * const grep = spawn('grep', ['ssh']);
696
- *
697
- * ps.stdout.on('data', (data) => {
698
- * grep.stdin.write(data);
699
- * });
700
- *
701
- * ps.stderr.on('data', (data) => {
702
- * console.error(`ps stderr: ${data}`);
703
- * });
704
- *
705
- * ps.on('close', (code) => {
706
- * if (code !== 0) {
707
- * console.log(`ps process exited with code ${code}`);
708
- * }
709
- * grep.stdin.end();
710
- * });
711
- *
712
- * grep.stdout.on('data', (data) => {
713
- * console.log(data.toString());
714
- * });
715
- *
716
- * grep.stderr.on('data', (data) => {
717
- * console.error(`grep stderr: ${data}`);
718
- * });
719
- *
720
- * grep.on('close', (code) => {
721
- * if (code !== 0) {
722
- * console.log(`grep process exited with code ${code}`);
723
- * }
724
- * });
725
- * ```
726
- *
727
- * Example of checking for failed `spawn`:
728
- *
729
- * ```js
730
- * const { spawn } = require('child_process');
731
- * const subprocess = spawn('bad_command');
732
- *
733
- * subprocess.on('error', (err) => {
734
- * console.error('Failed to start subprocess.');
735
- * });
736
- * ```
737
- *
738
- * Certain platforms (macOS, Linux) will use the value of `argv[0]` for the process
739
- * title while others (Windows, SunOS) will use `command`.
740
- *
741
- * Node.js currently overwrites `argv[0]` with `process.execPath` on startup, so`process.argv[0]` in a Node.js child process will not match the `argv0`parameter passed to `spawn` from the parent,
742
- * retrieve it with the`process.argv0` property instead.
743
- *
744
- * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
745
- * the error passed to the callback will be an `AbortError`:
746
- *
747
- * ```js
748
- * const { spawn } = require('child_process');
749
- * const controller = new AbortController();
750
- * const { signal } = controller;
751
- * const grep = spawn('grep', ['ssh'], { signal });
752
- * grep.on('error', (err) => {
753
- * // This will be called with err being an AbortError if the controller aborts
754
- * });
755
- * controller.abort(); // Stops the child process
756
- * ```
757
- * @since v0.1.90
758
- * @param command The command to run.
759
- * @param args List of string arguments.
760
- */
761
- function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
762
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>): ChildProcessByStdio<Writable, Readable, Readable>;
763
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>): ChildProcessByStdio<Writable, Readable, null>;
764
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>): ChildProcessByStdio<Writable, null, Readable>;
765
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>): ChildProcessByStdio<null, Readable, Readable>;
766
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>): ChildProcessByStdio<Writable, null, null>;
767
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>): ChildProcessByStdio<null, Readable, null>;
768
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>): ChildProcessByStdio<null, null, Readable>;
769
- function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>): ChildProcessByStdio<null, null, null>;
770
- function spawn(command: string, options: SpawnOptions): ChildProcess;
771
- // overloads of spawn with 'args'
772
- function spawn(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
773
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>): ChildProcessByStdio<Writable, Readable, Readable>;
774
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>): ChildProcessByStdio<Writable, Readable, null>;
775
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>): ChildProcessByStdio<Writable, null, Readable>;
776
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>): ChildProcessByStdio<null, Readable, Readable>;
777
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>): ChildProcessByStdio<Writable, null, null>;
778
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>): ChildProcessByStdio<null, Readable, null>;
779
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>): ChildProcessByStdio<null, null, Readable>;
780
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>): ChildProcessByStdio<null, null, null>;
781
- function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptions): ChildProcess;
782
- interface ExecOptions extends CommonOptions {
783
- shell?: string | undefined;
784
- maxBuffer?: number | undefined;
785
- killSignal?: NodeJS.Signals | number | undefined;
786
- }
787
- interface ExecOptionsWithStringEncoding extends ExecOptions {
788
- encoding: BufferEncoding;
789
- }
790
- interface ExecOptionsWithBufferEncoding extends ExecOptions {
791
- encoding: BufferEncoding | null; // specify `null`.
792
- }
793
- interface ExecException extends Error {
794
- cmd?: string | undefined;
795
- killed?: boolean | undefined;
796
- code?: number | undefined;
797
- signal?: NodeJS.Signals | undefined;
798
- }
799
- /**
800
- * Spawns a shell then executes the `command` within that shell, buffering any
801
- * generated output. The `command` string passed to the exec function is processed
802
- * directly by the shell and special characters (vary based on[shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters))
803
- * need to be dealt with accordingly:
804
- *
805
- * ```js
806
- * const { exec } = require('child_process');
807
- *
808
- * exec('"/path/to/test file/test.sh" arg1 arg2');
809
- * // Double quotes are used so that the space in the path is not interpreted as
810
- * // a delimiter of multiple arguments.
811
- *
812
- * exec('echo "The \\$HOME variable is $HOME"');
813
- * // The $HOME variable is escaped in the first instance, but not in the second.
814
- * ```
815
- *
816
- * **Never pass unsanitized user input to this function. Any input containing shell**
817
- * **metacharacters may be used to trigger arbitrary command execution.**
818
- *
819
- * If a `callback` function is provided, it is called with the arguments`(error, stdout, stderr)`. On success, `error` will be `null`. On error,`error` will be an instance of `Error`. The
820
- * `error.code` property will be
821
- * the exit code of the process. By convention, any exit code other than `0`indicates an error. `error.signal` will be the signal that terminated the
822
- * process.
823
- *
824
- * The `stdout` and `stderr` arguments passed to the callback will contain the
825
- * stdout and stderr output of the child process. By default, Node.js will decode
826
- * the output as UTF-8 and pass strings to the callback. The `encoding` option
827
- * can be used to specify the character encoding used to decode the stdout and
828
- * stderr output. If `encoding` is `'buffer'`, or an unrecognized character
829
- * encoding, `Buffer` objects will be passed to the callback instead.
830
- *
831
- * ```js
832
- * const { exec } = require('child_process');
833
- * exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => {
834
- * if (error) {
835
- * console.error(`exec error: ${error}`);
836
- * return;
837
- * }
838
- * console.log(`stdout: ${stdout}`);
839
- * console.error(`stderr: ${stderr}`);
840
- * });
841
- * ```
842
- *
843
- * If `timeout` is greater than `0`, the parent will send the signal
844
- * identified by the `killSignal` property (the default is `'SIGTERM'`) if the
845
- * child runs longer than `timeout` milliseconds.
846
- *
847
- * Unlike the [`exec(3)`](http://man7.org/linux/man-pages/man3/exec.3.html) POSIX system call, `child_process.exec()` does not replace
848
- * the existing process and uses a shell to execute the command.
849
- *
850
- * If this method is invoked as its `util.promisify()` ed version, it returns
851
- * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In
852
- * case of an error (including any error resulting in an exit code other than 0), a
853
- * rejected promise is returned, with the same `error` object given in the
854
- * callback, but with two additional properties `stdout` and `stderr`.
855
- *
856
- * ```js
857
- * const util = require('util');
858
- * const exec = util.promisify(require('child_process').exec);
859
- *
860
- * async function lsExample() {
861
- * const { stdout, stderr } = await exec('ls');
862
- * console.log('stdout:', stdout);
863
- * console.error('stderr:', stderr);
864
- * }
865
- * lsExample();
866
- * ```
867
- *
868
- * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
869
- * the error passed to the callback will be an `AbortError`:
870
- *
871
- * ```js
872
- * const { exec } = require('child_process');
873
- * const controller = new AbortController();
874
- * const { signal } = controller;
875
- * const child = exec('grep ssh', { signal }, (error) => {
876
- * console.log(error); // an AbortError
877
- * });
878
- * controller.abort();
879
- * ```
880
- * @since v0.1.90
881
- * @param command The command to run, with space-separated arguments.
882
- * @param callback called with the output when process terminates.
883
- */
884
- function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
885
- // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
886
- function exec(
887
- command: string,
888
- options: {
889
- encoding: 'buffer' | null;
890
- } & ExecOptions,
891
- callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void
892
- ): ChildProcess;
893
- // `options` with well known `encoding` means stdout/stderr are definitely `string`.
894
- function exec(
895
- command: string,
896
- options: {
897
- encoding: BufferEncoding;
898
- } & ExecOptions,
899
- callback?: (error: ExecException | null, stdout: string, stderr: string) => void
900
- ): ChildProcess;
901
- // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
902
- // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
903
- function exec(
904
- command: string,
905
- options: {
906
- encoding: BufferEncoding;
907
- } & ExecOptions,
908
- callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void
909
- ): ChildProcess;
910
- // `options` without an `encoding` means stdout/stderr are definitely `string`.
911
- function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
912
- // fallback if nothing else matches. Worst case is always `string | Buffer`.
913
- function exec(
914
- command: string,
915
- options: (ObjectEncodingOptions & ExecOptions) | undefined | null,
916
- callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void
917
- ): ChildProcess;
918
- interface PromiseWithChild<T> extends Promise<T> {
919
- child: ChildProcess;
920
- }
921
- namespace exec {
922
- function __promisify__(command: string): PromiseWithChild<{
923
- stdout: string;
924
- stderr: string;
925
- }>;
926
- function __promisify__(
927
- command: string,
928
- options: {
929
- encoding: 'buffer' | null;
930
- } & ExecOptions
931
- ): PromiseWithChild<{
932
- stdout: Buffer;
933
- stderr: Buffer;
934
- }>;
935
- function __promisify__(
936
- command: string,
937
- options: {
938
- encoding: BufferEncoding;
939
- } & ExecOptions
940
- ): PromiseWithChild<{
941
- stdout: string;
942
- stderr: string;
943
- }>;
944
- function __promisify__(
945
- command: string,
946
- options: ExecOptions
947
- ): PromiseWithChild<{
948
- stdout: string;
949
- stderr: string;
950
- }>;
951
- function __promisify__(
952
- command: string,
953
- options?: (ObjectEncodingOptions & ExecOptions) | null
954
- ): PromiseWithChild<{
955
- stdout: string | Buffer;
956
- stderr: string | Buffer;
957
- }>;
958
- }
959
- interface ExecFileOptions extends CommonOptions, Abortable {
960
- maxBuffer?: number | undefined;
961
- killSignal?: NodeJS.Signals | number | undefined;
962
- windowsVerbatimArguments?: boolean | undefined;
963
- shell?: boolean | string | undefined;
964
- signal?: AbortSignal | undefined;
965
- }
966
- interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
967
- encoding: BufferEncoding;
968
- }
969
- interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
970
- encoding: 'buffer' | null;
971
- }
972
- interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
973
- encoding: BufferEncoding;
974
- }
975
- type ExecFileException = ExecException & NodeJS.ErrnoException;
976
- /**
977
- * The `child_process.execFile()` function is similar to {@link exec} except that it does not spawn a shell by default. Rather, the specified
978
- * executable `file` is spawned directly as a new process making it slightly more
979
- * efficient than {@link exec}.
980
- *
981
- * The same options as {@link exec} are supported. Since a shell is
982
- * not spawned, behaviors such as I/O redirection and file globbing are not
983
- * supported.
984
- *
985
- * ```js
986
- * const { execFile } = require('child_process');
987
- * const child = execFile('node', ['--version'], (error, stdout, stderr) => {
988
- * if (error) {
989
- * throw error;
990
- * }
991
- * console.log(stdout);
992
- * });
993
- * ```
994
- *
995
- * The `stdout` and `stderr` arguments passed to the callback will contain the
996
- * stdout and stderr output of the child process. By default, Node.js will decode
997
- * the output as UTF-8 and pass strings to the callback. The `encoding` option
998
- * can be used to specify the character encoding used to decode the stdout and
999
- * stderr output. If `encoding` is `'buffer'`, or an unrecognized character
1000
- * encoding, `Buffer` objects will be passed to the callback instead.
1001
- *
1002
- * If this method is invoked as its `util.promisify()` ed version, it returns
1003
- * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In
1004
- * case of an error (including any error resulting in an exit code other than 0), a
1005
- * rejected promise is returned, with the same `error` object given in the
1006
- * callback, but with two additional properties `stdout` and `stderr`.
1007
- *
1008
- * ```js
1009
- * const util = require('util');
1010
- * const execFile = util.promisify(require('child_process').execFile);
1011
- * async function getVersion() {
1012
- * const { stdout } = await execFile('node', ['--version']);
1013
- * console.log(stdout);
1014
- * }
1015
- * getVersion();
1016
- * ```
1017
- *
1018
- * **If the `shell` option is enabled, do not pass unsanitized user input to this**
1019
- * **function. Any input containing shell metacharacters may be used to trigger**
1020
- * **arbitrary command execution.**
1021
- *
1022
- * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
1023
- * the error passed to the callback will be an `AbortError`:
1024
- *
1025
- * ```js
1026
- * const { execFile } = require('child_process');
1027
- * const controller = new AbortController();
1028
- * const { signal } = controller;
1029
- * const child = execFile('node', ['--version'], { signal }, (error) => {
1030
- * console.log(error); // an AbortError
1031
- * });
1032
- * controller.abort();
1033
- * ```
1034
- * @since v0.1.91
1035
- * @param file The name or path of the executable file to run.
1036
- * @param args List of string arguments.
1037
- * @param callback Called with the output when process terminates.
1038
- */
1039
- function execFile(file: string): ChildProcess;
1040
- function execFile(file: string, options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
1041
- function execFile(file: string, args?: ReadonlyArray<string> | null): ChildProcess;
1042
- function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
1043
- // no `options` definitely means stdout/stderr are `string`.
1044
- function execFile(file: string, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1045
- function execFile(file: string, args: ReadonlyArray<string> | undefined | null, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1046
- // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
1047
- function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
1048
- function execFile(
1049
- file: string,
1050
- args: ReadonlyArray<string> | undefined | null,
1051
- options: ExecFileOptionsWithBufferEncoding,
1052
- callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void
1053
- ): ChildProcess;
1054
- // `options` with well known `encoding` means stdout/stderr are definitely `string`.
1055
- function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1056
- function execFile(
1057
- file: string,
1058
- args: ReadonlyArray<string> | undefined | null,
1059
- options: ExecFileOptionsWithStringEncoding,
1060
- callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
1061
- ): ChildProcess;
1062
- // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
1063
- // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
1064
- function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;
1065
- function execFile(
1066
- file: string,
1067
- args: ReadonlyArray<string> | undefined | null,
1068
- options: ExecFileOptionsWithOtherEncoding,
1069
- callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void
1070
- ): ChildProcess;
1071
- // `options` without an `encoding` means stdout/stderr are definitely `string`.
1072
- function execFile(file: string, options: ExecFileOptions, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1073
- function execFile(
1074
- file: string,
1075
- args: ReadonlyArray<string> | undefined | null,
1076
- options: ExecFileOptions,
1077
- callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
1078
- ): ChildProcess;
1079
- // fallback if nothing else matches. Worst case is always `string | Buffer`.
1080
- function execFile(
1081
- file: string,
1082
- options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null,
1083
- callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null
1084
- ): ChildProcess;
1085
- function execFile(
1086
- file: string,
1087
- args: ReadonlyArray<string> | undefined | null,
1088
- options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null,
1089
- callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null
1090
- ): ChildProcess;
1091
- namespace execFile {
1092
- function __promisify__(file: string): PromiseWithChild<{
1093
- stdout: string;
1094
- stderr: string;
1095
- }>;
1096
- function __promisify__(
1097
- file: string,
1098
- args: ReadonlyArray<string> | undefined | null
1099
- ): PromiseWithChild<{
1100
- stdout: string;
1101
- stderr: string;
1102
- }>;
1103
- function __promisify__(
1104
- file: string,
1105
- options: ExecFileOptionsWithBufferEncoding
1106
- ): PromiseWithChild<{
1107
- stdout: Buffer;
1108
- stderr: Buffer;
1109
- }>;
1110
- function __promisify__(
1111
- file: string,
1112
- args: ReadonlyArray<string> | undefined | null,
1113
- options: ExecFileOptionsWithBufferEncoding
1114
- ): PromiseWithChild<{
1115
- stdout: Buffer;
1116
- stderr: Buffer;
1117
- }>;
1118
- function __promisify__(
1119
- file: string,
1120
- options: ExecFileOptionsWithStringEncoding
1121
- ): PromiseWithChild<{
1122
- stdout: string;
1123
- stderr: string;
1124
- }>;
1125
- function __promisify__(
1126
- file: string,
1127
- args: ReadonlyArray<string> | undefined | null,
1128
- options: ExecFileOptionsWithStringEncoding
1129
- ): PromiseWithChild<{
1130
- stdout: string;
1131
- stderr: string;
1132
- }>;
1133
- function __promisify__(
1134
- file: string,
1135
- options: ExecFileOptionsWithOtherEncoding
1136
- ): PromiseWithChild<{
1137
- stdout: string | Buffer;
1138
- stderr: string | Buffer;
1139
- }>;
1140
- function __promisify__(
1141
- file: string,
1142
- args: ReadonlyArray<string> | undefined | null,
1143
- options: ExecFileOptionsWithOtherEncoding
1144
- ): PromiseWithChild<{
1145
- stdout: string | Buffer;
1146
- stderr: string | Buffer;
1147
- }>;
1148
- function __promisify__(
1149
- file: string,
1150
- options: ExecFileOptions
1151
- ): PromiseWithChild<{
1152
- stdout: string;
1153
- stderr: string;
1154
- }>;
1155
- function __promisify__(
1156
- file: string,
1157
- args: ReadonlyArray<string> | undefined | null,
1158
- options: ExecFileOptions
1159
- ): PromiseWithChild<{
1160
- stdout: string;
1161
- stderr: string;
1162
- }>;
1163
- function __promisify__(
1164
- file: string,
1165
- options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null
1166
- ): PromiseWithChild<{
1167
- stdout: string | Buffer;
1168
- stderr: string | Buffer;
1169
- }>;
1170
- function __promisify__(
1171
- file: string,
1172
- args: ReadonlyArray<string> | undefined | null,
1173
- options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null
1174
- ): PromiseWithChild<{
1175
- stdout: string | Buffer;
1176
- stderr: string | Buffer;
1177
- }>;
1178
- }
1179
- interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable {
1180
- execPath?: string | undefined;
1181
- execArgv?: string[] | undefined;
1182
- silent?: boolean | undefined;
1183
- stdio?: StdioOptions | undefined;
1184
- detached?: boolean | undefined;
1185
- windowsVerbatimArguments?: boolean | undefined;
1186
- }
1187
- /**
1188
- * The `child_process.fork()` method is a special case of {@link spawn} used specifically to spawn new Node.js processes.
1189
- * Like {@link spawn}, a `ChildProcess` object is returned. The
1190
- * returned `ChildProcess` will have an additional communication channel
1191
- * built-in that allows messages to be passed back and forth between the parent and
1192
- * child. See `subprocess.send()` for details.
1193
- *
1194
- * Keep in mind that spawned Node.js child processes are
1195
- * independent of the parent with exception of the IPC communication channel
1196
- * that is established between the two. Each process has its own memory, with
1197
- * their own V8 instances. Because of the additional resource allocations
1198
- * required, spawning a large number of child Node.js processes is not
1199
- * recommended.
1200
- *
1201
- * By default, `child_process.fork()` will spawn new Node.js instances using the `process.execPath` of the parent process. The `execPath` property in the`options` object allows for an alternative
1202
- * execution path to be used.
1203
- *
1204
- * Node.js processes launched with a custom `execPath` will communicate with the
1205
- * parent process using the file descriptor (fd) identified using the
1206
- * environment variable `NODE_CHANNEL_FD` on the child process.
1207
- *
1208
- * Unlike the [`fork(2)`](http://man7.org/linux/man-pages/man2/fork.2.html) POSIX system call, `child_process.fork()` does not clone the
1209
- * current process.
1210
- *
1211
- * The `shell` option available in {@link spawn} is not supported by`child_process.fork()` and will be ignored if set.
1212
- *
1213
- * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
1214
- * the error passed to the callback will be an `AbortError`:
1215
- *
1216
- * ```js
1217
- * if (process.argv[2] === 'child') {
1218
- * setTimeout(() => {
1219
- * console.log(`Hello from ${process.argv[2]}!`);
1220
- * }, 1_000);
1221
- * } else {
1222
- * const { fork } = require('child_process');
1223
- * const controller = new AbortController();
1224
- * const { signal } = controller;
1225
- * const child = fork(__filename, ['child'], { signal });
1226
- * child.on('error', (err) => {
1227
- * // This will be called with err being an AbortError if the controller aborts
1228
- * });
1229
- * controller.abort(); // Stops the child process
1230
- * }
1231
- * ```
1232
- * @since v0.5.0
1233
- * @param modulePath The module to run in the child.
1234
- * @param args List of string arguments.
1235
- */
1236
- function fork(modulePath: string, options?: ForkOptions): ChildProcess;
1237
- function fork(modulePath: string, args?: ReadonlyArray<string>, options?: ForkOptions): ChildProcess;
1238
- interface SpawnSyncOptions extends CommonSpawnOptions {
1239
- input?: string | NodeJS.ArrayBufferView | undefined;
1240
- maxBuffer?: number | undefined;
1241
- encoding?: BufferEncoding | 'buffer' | null | undefined;
1242
- }
1243
- interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
1244
- encoding: BufferEncoding;
1245
- }
1246
- interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
1247
- encoding?: 'buffer' | null | undefined;
1248
- }
1249
- interface SpawnSyncReturns<T> {
1250
- pid: number;
1251
- output: Array<T | null>;
1252
- stdout: T;
1253
- stderr: T;
1254
- status: number | null;
1255
- signal: NodeJS.Signals | null;
1256
- error?: Error | undefined;
1257
- }
1258
- /**
1259
- * The `child_process.spawnSync()` method is generally identical to {@link spawn} with the exception that the function will not return
1260
- * until the child process has fully closed. When a timeout has been encountered
1261
- * and `killSignal` is sent, the method won't return until the process has
1262
- * completely exited. If the process intercepts and handles the `SIGTERM` signal
1263
- * and doesn't exit, the parent process will wait until the child process has
1264
- * exited.
1265
- *
1266
- * **If the `shell` option is enabled, do not pass unsanitized user input to this**
1267
- * **function. Any input containing shell metacharacters may be used to trigger**
1268
- * **arbitrary command execution.**
1269
- * @since v0.11.12
1270
- * @param command The command to run.
1271
- * @param args List of string arguments.
1272
- */
1273
- function spawnSync(command: string): SpawnSyncReturns<Buffer>;
1274
- function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
1275
- function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
1276
- function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
1277
- function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
1278
- function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
1279
- function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
1280
- interface CommonExecOptions extends CommonOptions {
1281
- input?: string | NodeJS.ArrayBufferView | undefined;
1282
- stdio?: StdioOptions | undefined;
1283
- killSignal?: NodeJS.Signals | number | undefined;
1284
- maxBuffer?: number | undefined;
1285
- encoding?: BufferEncoding | 'buffer' | null | undefined;
1286
- }
1287
- interface ExecSyncOptions extends CommonExecOptions {
1288
- shell?: string | undefined;
1289
- }
1290
- interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
1291
- encoding: BufferEncoding;
1292
- }
1293
- interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
1294
- encoding?: 'buffer' | null | undefined;
1295
- }
1296
- /**
1297
- * The `child_process.execSync()` method is generally identical to {@link exec} with the exception that the method will not return
1298
- * until the child process has fully closed. When a timeout has been encountered
1299
- * and `killSignal` is sent, the method won't return until the process has
1300
- * completely exited. If the child process intercepts and handles the `SIGTERM`signal and doesn't exit, the parent process will wait until the child process
1301
- * has exited.
1302
- *
1303
- * If the process times out or has a non-zero exit code, this method will throw.
1304
- * The `Error` object will contain the entire result from {@link spawnSync}.
1305
- *
1306
- * **Never pass unsanitized user input to this function. Any input containing shell**
1307
- * **metacharacters may be used to trigger arbitrary command execution.**
1308
- * @since v0.11.12
1309
- * @param command The command to run.
1310
- * @return The stdout from the command.
1311
- */
1312
- function execSync(command: string): Buffer;
1313
- function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;
1314
- function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;
1315
- function execSync(command: string, options?: ExecSyncOptions): Buffer;
1316
- interface ExecFileSyncOptions extends CommonExecOptions {
1317
- shell?: boolean | string | undefined;
1318
- }
1319
- interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
1320
- encoding: BufferEncoding;
1321
- }
1322
- interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
1323
- encoding: BufferEncoding; // specify `null`.
1324
- }
1325
- /**
1326
- * The `child_process.execFileSync()` method is generally identical to {@link execFile} with the exception that the method will not
1327
- * return until the child process has fully closed. When a timeout has been
1328
- * encountered and `killSignal` is sent, the method won't return until the process
1329
- * has completely exited.
1330
- *
1331
- * If the child process intercepts and handles the `SIGTERM` signal and
1332
- * does not exit, the parent process will still wait until the child process has
1333
- * exited.
1334
- *
1335
- * If the process times out or has a non-zero exit code, this method will throw an `Error` that will include the full result of the underlying {@link spawnSync}.
1336
- *
1337
- * **If the `shell` option is enabled, do not pass unsanitized user input to this**
1338
- * **function. Any input containing shell metacharacters may be used to trigger**
1339
- * **arbitrary command execution.**
1340
- * @since v0.11.12
1341
- * @param file The name or path of the executable file to run.
1342
- * @param args List of string arguments.
1343
- * @return The stdout from the command.
1344
- */
1345
- function execFileSync(file: string): Buffer;
1346
- function execFileSync(file: string, options?: ExecFileSyncOptionsWithStringEncoding): string;
1347
- function execFileSync(file: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
1348
- function execFileSync(file: string, options?: ExecFileSyncOptions): Buffer;
1349
- function execFileSync(file: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithStringEncoding): string;
1350
- function execFileSync(file: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
1351
- function execFileSync(file: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptions): Buffer;
1352
- }
1353
- declare module 'node:child_process' {
1354
- export * from 'child_process';
1355
- }
1
+ /**
2
+ * The `child_process` module provides the ability to spawn subprocesses in
3
+ * a manner that is similar, but not identical, to [`popen(3)`](http://man7.org/linux/man-pages/man3/popen.3.html). This capability
4
+ * is primarily provided by the {@link spawn} function:
5
+ *
6
+ * ```js
7
+ * const { spawn } = require('child_process');
8
+ * const ls = spawn('ls', ['-lh', '/usr']);
9
+ *
10
+ * ls.stdout.on('data', (data) => {
11
+ * console.log(`stdout: ${data}`);
12
+ * });
13
+ *
14
+ * ls.stderr.on('data', (data) => {
15
+ * console.error(`stderr: ${data}`);
16
+ * });
17
+ *
18
+ * ls.on('close', (code) => {
19
+ * console.log(`child process exited with code ${code}`);
20
+ * });
21
+ * ```
22
+ *
23
+ * By default, pipes for `stdin`, `stdout`, and `stderr` are established between
24
+ * the parent Node.js process and the spawned subprocess. These pipes have
25
+ * limited (and platform-specific) capacity. If the subprocess writes to
26
+ * stdout in excess of that limit without the output being captured, the
27
+ * subprocess blocks waiting for the pipe buffer to accept more data. This is
28
+ * identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }`option if the output will not be consumed.
29
+ *
30
+ * The command lookup is performed using the `options.env.PATH` environment
31
+ * variable if it is in the `options` object. Otherwise, `process.env.PATH` is
32
+ * used.
33
+ *
34
+ * On Windows, environment variables are case-insensitive. Node.js
35
+ * lexicographically sorts the `env` keys and uses the first one that
36
+ * case-insensitively matches. Only first (in lexicographic order) entry will be
37
+ * passed to the subprocess. This might lead to issues on Windows when passing
38
+ * objects to the `env` option that have multiple variants of the same key, such as`PATH` and `Path`.
39
+ *
40
+ * The {@link spawn} method spawns the child process asynchronously,
41
+ * without blocking the Node.js event loop. The {@link spawnSync} function provides equivalent functionality in a synchronous manner that blocks
42
+ * the event loop until the spawned process either exits or is terminated.
43
+ *
44
+ * For convenience, the `child_process` module provides a handful of synchronous
45
+ * and asynchronous alternatives to {@link spawn} and {@link spawnSync}. Each of these alternatives are implemented on
46
+ * top of {@link spawn} or {@link spawnSync}.
47
+ *
48
+ * * {@link exec}: spawns a shell and runs a command within that
49
+ * shell, passing the `stdout` and `stderr` to a callback function when
50
+ * complete.
51
+ * * {@link execFile}: similar to {@link exec} except
52
+ * that it spawns the command directly without first spawning a shell by
53
+ * default.
54
+ * * {@link fork}: spawns a new Node.js process and invokes a
55
+ * specified module with an IPC communication channel established that allows
56
+ * sending messages between parent and child.
57
+ * * {@link execSync}: a synchronous version of {@link exec} that will block the Node.js event loop.
58
+ * * {@link execFileSync}: a synchronous version of {@link execFile} that will block the Node.js event loop.
59
+ *
60
+ * For certain use cases, such as automating shell scripts, the `synchronous counterparts` may be more convenient. In many cases, however,
61
+ * the synchronous methods can have significant impact on performance due to
62
+ * stalling the event loop while spawned processes complete.
63
+ * @see [source](https://github.com/nodejs/node/blob/v16.7.0/lib/child_process.js)
64
+ */
65
+ declare module 'child_process' {
66
+ import { ObjectEncodingOptions } from 'node:fs';
67
+ import { EventEmitter, Abortable } from 'node:events';
68
+ import * as net from 'node:net';
69
+ import { Writable, Readable, Stream, Pipe } from 'node:stream';
70
+ import { URL } from 'node:url';
71
+ type Serializable = string | object | number | boolean | bigint;
72
+ type SendHandle = net.Socket | net.Server;
73
+ class ChildProcess extends EventEmitter {
74
+ /**
75
+ * A `Writable Stream` that represents the child process's `stdin`.
76
+ *
77
+ * If a child process waits to read all of its input, the child will not continue
78
+ * until this stream has been closed via `end()`.
79
+ *
80
+ * If the child was spawned with `stdio[0]` set to anything other than `'pipe'`,
81
+ * then this will be `null`.
82
+ *
83
+ * `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will
84
+ * refer to the same value.
85
+ *
86
+ * The `subprocess.stdin` property can be `undefined` if the child process could
87
+ * not be successfully spawned.
88
+ * @since v0.1.90
89
+ */
90
+ stdin: Writable | null;
91
+ /**
92
+ * A `Readable Stream` that represents the child process's `stdout`.
93
+ *
94
+ * If the child was spawned with `stdio[1]` set to anything other than `'pipe'`,
95
+ * then this will be `null`.
96
+ *
97
+ * `subprocess.stdout` is an alias for `subprocess.stdio[1]`. Both properties will
98
+ * refer to the same value.
99
+ *
100
+ * ```js
101
+ * const { spawn } = require('child_process');
102
+ *
103
+ * const subprocess = spawn('ls');
104
+ *
105
+ * subprocess.stdout.on('data', (data) => {
106
+ * console.log(`Received chunk ${data}`);
107
+ * });
108
+ * ```
109
+ *
110
+ * The `subprocess.stdout` property can be `null` if the child process could
111
+ * not be successfully spawned.
112
+ * @since v0.1.90
113
+ */
114
+ stdout: Readable | null;
115
+ /**
116
+ * A `Readable Stream` that represents the child process's `stderr`.
117
+ *
118
+ * If the child was spawned with `stdio[2]` set to anything other than `'pipe'`,
119
+ * then this will be `null`.
120
+ *
121
+ * `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will
122
+ * refer to the same value.
123
+ *
124
+ * The `subprocess.stderr` property can be `null` if the child process could
125
+ * not be successfully spawned.
126
+ * @since v0.1.90
127
+ */
128
+ stderr: Readable | null;
129
+ /**
130
+ * The `subprocess.channel` property is a reference to the child's IPC channel. If
131
+ * no IPC channel currently exists, this property is `undefined`.
132
+ * @since v7.1.0
133
+ */
134
+ readonly channel?: Pipe | null | undefined;
135
+ /**
136
+ * A sparse array of pipes to the child process, corresponding with positions in
137
+ * the `stdio` option passed to {@link spawn} that have been set
138
+ * to the value `'pipe'`. `subprocess.stdio[0]`, `subprocess.stdio[1]`, and`subprocess.stdio[2]` are also available as `subprocess.stdin`,`subprocess.stdout`, and `subprocess.stderr`,
139
+ * respectively.
140
+ *
141
+ * In the following example, only the child's fd `1` (stdout) is configured as a
142
+ * pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values
143
+ * in the array are `null`.
144
+ *
145
+ * ```js
146
+ * const assert = require('assert');
147
+ * const fs = require('fs');
148
+ * const child_process = require('child_process');
149
+ *
150
+ * const subprocess = child_process.spawn('ls', {
151
+ * stdio: [
152
+ * 0, // Use parent's stdin for child.
153
+ * 'pipe', // Pipe child's stdout to parent.
154
+ * fs.openSync('err.out', 'w'), // Direct child's stderr to a file.
155
+ * ]
156
+ * });
157
+ *
158
+ * assert.strictEqual(subprocess.stdio[0], null);
159
+ * assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
160
+ *
161
+ * assert(subprocess.stdout);
162
+ * assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
163
+ *
164
+ * assert.strictEqual(subprocess.stdio[2], null);
165
+ * assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
166
+ * ```
167
+ *
168
+ * The `subprocess.stdio` property can be `undefined` if the child process could
169
+ * not be successfully spawned.
170
+ * @since v0.7.10
171
+ */
172
+ readonly stdio: [
173
+ Writable | null,
174
+ // stdin
175
+ Readable | null,
176
+ // stdout
177
+ Readable | null,
178
+ // stderr
179
+ Readable | Writable | null | undefined,
180
+ // extra
181
+ Readable | Writable | null | undefined // extra
182
+ ];
183
+ /**
184
+ * The `subprocess.killed` property indicates whether the child process
185
+ * successfully received a signal from `subprocess.kill()`. The `killed` property
186
+ * does not indicate that the child process has been terminated.
187
+ * @since v0.5.10
188
+ */
189
+ readonly killed: boolean;
190
+ /**
191
+ * Returns the process identifier (PID) of the child process. If the child process
192
+ * fails to spawn due to errors, then the value is `undefined` and `error` is
193
+ * emitted.
194
+ *
195
+ * ```js
196
+ * const { spawn } = require('child_process');
197
+ * const grep = spawn('grep', ['ssh']);
198
+ *
199
+ * console.log(`Spawned child pid: ${grep.pid}`);
200
+ * grep.stdin.end();
201
+ * ```
202
+ * @since v0.1.90
203
+ */
204
+ readonly pid?: number | undefined;
205
+ /**
206
+ * The `subprocess.connected` property indicates whether it is still possible to
207
+ * send and receive messages from a child process. When `subprocess.connected` is`false`, it is no longer possible to send or receive messages.
208
+ * @since v0.7.2
209
+ */
210
+ readonly connected: boolean;
211
+ /**
212
+ * The `subprocess.exitCode` property indicates the exit code of the child process.
213
+ * If the child process is still running, the field will be `null`.
214
+ */
215
+ readonly exitCode: number | null;
216
+ /**
217
+ * The `subprocess.signalCode` property indicates the signal received by
218
+ * the child process if any, else `null`.
219
+ */
220
+ readonly signalCode: NodeJS.Signals | null;
221
+ /**
222
+ * The `subprocess.spawnargs` property represents the full list of command-line
223
+ * arguments the child process was launched with.
224
+ */
225
+ readonly spawnargs: string[];
226
+ /**
227
+ * The `subprocess.spawnfile` property indicates the executable file name of
228
+ * the child process that is launched.
229
+ *
230
+ * For {@link fork}, its value will be equal to `process.execPath`.
231
+ * For {@link spawn}, its value will be the name of
232
+ * the executable file.
233
+ * For {@link exec}, its value will be the name of the shell
234
+ * in which the child process is launched.
235
+ */
236
+ readonly spawnfile: string;
237
+ /**
238
+ * The `subprocess.kill()` method sends a signal to the child process. If no
239
+ * argument is given, the process will be sent the `'SIGTERM'` signal. See[`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) for a list of available signals. This function
240
+ * returns `true` if[`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) succeeds, and `false` otherwise.
241
+ *
242
+ * ```js
243
+ * const { spawn } = require('child_process');
244
+ * const grep = spawn('grep', ['ssh']);
245
+ *
246
+ * grep.on('close', (code, signal) => {
247
+ * console.log(
248
+ * `child process terminated due to receipt of signal ${signal}`);
249
+ * });
250
+ *
251
+ * // Send SIGHUP to process.
252
+ * grep.kill('SIGHUP');
253
+ * ```
254
+ *
255
+ * The `ChildProcess` object may emit an `'error'` event if the signal
256
+ * cannot be delivered. Sending a signal to a child process that has already exited
257
+ * is not an error but may have unforeseen consequences. Specifically, if the
258
+ * process identifier (PID) has been reassigned to another process, the signal will
259
+ * be delivered to that process instead which can have unexpected results.
260
+ *
261
+ * While the function is called `kill`, the signal delivered to the child process
262
+ * may not actually terminate the process.
263
+ *
264
+ * See [`kill(2)`](http://man7.org/linux/man-pages/man2/kill.2.html) for reference.
265
+ *
266
+ * On Windows, where POSIX signals do not exist, the `signal` argument will be
267
+ * ignored, and the process will be killed forcefully and abruptly (similar to`'SIGKILL'`).
268
+ * See `Signal Events` for more details.
269
+ *
270
+ * On Linux, child processes of child processes will not be terminated
271
+ * when attempting to kill their parent. This is likely to happen when running a
272
+ * new process in a shell or with the use of the `shell` option of `ChildProcess`:
273
+ *
274
+ * ```js
275
+ * 'use strict';
276
+ * const { spawn } = require('child_process');
277
+ *
278
+ * const subprocess = spawn(
279
+ * 'sh',
280
+ * [
281
+ * '-c',
282
+ * `node -e "setInterval(() => {
283
+ * console.log(process.pid, 'is alive')
284
+ * }, 500);"`,
285
+ * ], {
286
+ * stdio: ['inherit', 'inherit', 'inherit']
287
+ * }
288
+ * );
289
+ *
290
+ * setTimeout(() => {
291
+ * subprocess.kill(); // Does not terminate the Node.js process in the shell.
292
+ * }, 2000);
293
+ * ```
294
+ * @since v0.1.90
295
+ */
296
+ kill(signal?: NodeJS.Signals | number): boolean;
297
+ /**
298
+ * When an IPC channel has been established between the parent and child (
299
+ * i.e. when using {@link fork}), the `subprocess.send()` method can
300
+ * be used to send messages to the child process. When the child process is a
301
+ * Node.js instance, these messages can be received via the `'message'` event.
302
+ *
303
+ * The message goes through serialization and parsing. The resulting
304
+ * message might not be the same as what is originally sent.
305
+ *
306
+ * For example, in the parent script:
307
+ *
308
+ * ```js
309
+ * const cp = require('child_process');
310
+ * const n = cp.fork(`${__dirname}/sub.js`);
311
+ *
312
+ * n.on('message', (m) => {
313
+ * console.log('PARENT got message:', m);
314
+ * });
315
+ *
316
+ * // Causes the child to print: CHILD got message: { hello: 'world' }
317
+ * n.send({ hello: 'world' });
318
+ * ```
319
+ *
320
+ * And then the child script, `'sub.js'` might look like this:
321
+ *
322
+ * ```js
323
+ * process.on('message', (m) => {
324
+ * console.log('CHILD got message:', m);
325
+ * });
326
+ *
327
+ * // Causes the parent to print: PARENT got message: { foo: 'bar', baz: null }
328
+ * process.send({ foo: 'bar', baz: NaN });
329
+ * ```
330
+ *
331
+ * Child Node.js processes will have a `process.send()` method of their own
332
+ * that allows the child to send messages back to the parent.
333
+ *
334
+ * There is a special case when sending a `{cmd: 'NODE_foo'}` message. Messages
335
+ * containing a `NODE_` prefix in the `cmd` property are reserved for use within
336
+ * Node.js core and will not be emitted in the child's `'message'` event. Rather, such messages are emitted using the`'internalMessage'` event and are consumed internally by Node.js.
337
+ * Applications should avoid using such messages or listening for`'internalMessage'` events as it is subject to change without notice.
338
+ *
339
+ * The optional `sendHandle` argument that may be passed to `subprocess.send()` is
340
+ * for passing a TCP server or socket object to the child process. The child will
341
+ * receive the object as the second argument passed to the callback function
342
+ * registered on the `'message'` event. Any data that is received
343
+ * and buffered in the socket will not be sent to the child.
344
+ *
345
+ * The optional `callback` is a function that is invoked after the message is
346
+ * sent but before the child may have received it. The function is called with a
347
+ * single argument: `null` on success, or an `Error` object on failure.
348
+ *
349
+ * If no `callback` function is provided and the message cannot be sent, an`'error'` event will be emitted by the `ChildProcess` object. This can
350
+ * happen, for instance, when the child process has already exited.
351
+ *
352
+ * `subprocess.send()` will return `false` if the channel has closed or when the
353
+ * backlog of unsent messages exceeds a threshold that makes it unwise to send
354
+ * more. Otherwise, the method returns `true`. The `callback` function can be
355
+ * used to implement flow control.
356
+ *
357
+ * #### Example: sending a server object
358
+ *
359
+ * The `sendHandle` argument can be used, for instance, to pass the handle of
360
+ * a TCP server object to the child process as illustrated in the example below:
361
+ *
362
+ * ```js
363
+ * const subprocess = require('child_process').fork('subprocess.js');
364
+ *
365
+ * // Open up the server object and send the handle.
366
+ * const server = require('net').createServer();
367
+ * server.on('connection', (socket) => {
368
+ * socket.end('handled by parent');
369
+ * });
370
+ * server.listen(1337, () => {
371
+ * subprocess.send('server', server);
372
+ * });
373
+ * ```
374
+ *
375
+ * The child would then receive the server object as:
376
+ *
377
+ * ```js
378
+ * process.on('message', (m, server) => {
379
+ * if (m === 'server') {
380
+ * server.on('connection', (socket) => {
381
+ * socket.end('handled by child');
382
+ * });
383
+ * }
384
+ * });
385
+ * ```
386
+ *
387
+ * Once the server is now shared between the parent and child, some connections
388
+ * can be handled by the parent and some by the child.
389
+ *
390
+ * While the example above uses a server created using the `net` module, `dgram`module servers use exactly the same workflow with the exceptions of listening on
391
+ * a `'message'` event instead of `'connection'` and using `server.bind()` instead
392
+ * of `server.listen()`. This is, however, currently only supported on Unix
393
+ * platforms.
394
+ *
395
+ * #### Example: sending a socket object
396
+ *
397
+ * Similarly, the `sendHandler` argument can be used to pass the handle of a
398
+ * socket to the child process. The example below spawns two children that each
399
+ * handle connections with "normal" or "special" priority:
400
+ *
401
+ * ```js
402
+ * const { fork } = require('child_process');
403
+ * const normal = fork('subprocess.js', ['normal']);
404
+ * const special = fork('subprocess.js', ['special']);
405
+ *
406
+ * // Open up the server and send sockets to child. Use pauseOnConnect to prevent
407
+ * // the sockets from being read before they are sent to the child process.
408
+ * const server = require('net').createServer({ pauseOnConnect: true });
409
+ * server.on('connection', (socket) => {
410
+ *
411
+ * // If this is special priority...
412
+ * if (socket.remoteAddress === '74.125.127.100') {
413
+ * special.send('socket', socket);
414
+ * return;
415
+ * }
416
+ * // This is normal priority.
417
+ * normal.send('socket', socket);
418
+ * });
419
+ * server.listen(1337);
420
+ * ```
421
+ *
422
+ * The `subprocess.js` would receive the socket handle as the second argument
423
+ * passed to the event callback function:
424
+ *
425
+ * ```js
426
+ * process.on('message', (m, socket) => {
427
+ * if (m === 'socket') {
428
+ * if (socket) {
429
+ * // Check that the client socket exists.
430
+ * // It is possible for the socket to be closed between the time it is
431
+ * // sent and the time it is received in the child process.
432
+ * socket.end(`Request handled with ${process.argv[2]} priority`);
433
+ * }
434
+ * }
435
+ * });
436
+ * ```
437
+ *
438
+ * Do not use `.maxConnections` on a socket that has been passed to a subprocess.
439
+ * The parent cannot track when the socket is destroyed.
440
+ *
441
+ * Any `'message'` handlers in the subprocess should verify that `socket` exists,
442
+ * as the connection may have been closed during the time it takes to send the
443
+ * connection to the child.
444
+ * @since v0.5.9
445
+ * @param options The `options` argument, if present, is an object used to parameterize the sending of certain types of handles. `options` supports the following properties:
446
+ */
447
+ send(message: Serializable, callback?: (error: Error | null) => void): boolean;
448
+ send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
449
+ send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
450
+ /**
451
+ * Closes the IPC channel between parent and child, allowing the child to exit
452
+ * gracefully once there are no other connections keeping it alive. After calling
453
+ * this method the `subprocess.connected` and `process.connected` properties in
454
+ * both the parent and child (respectively) will be set to `false`, and it will be
455
+ * no longer possible to pass messages between the processes.
456
+ *
457
+ * The `'disconnect'` event will be emitted when there are no messages in the
458
+ * process of being received. This will most often be triggered immediately after
459
+ * calling `subprocess.disconnect()`.
460
+ *
461
+ * When the child process is a Node.js instance (e.g. spawned using {@link fork}), the `process.disconnect()` method can be invoked
462
+ * within the child process to close the IPC channel as well.
463
+ * @since v0.7.2
464
+ */
465
+ disconnect(): void;
466
+ /**
467
+ * By default, the parent will wait for the detached child to exit. To prevent the
468
+ * parent from waiting for a given `subprocess` to exit, use the`subprocess.unref()` method. Doing so will cause the parent's event loop to not
469
+ * include the child in its reference count, allowing the parent to exit
470
+ * independently of the child, unless there is an established IPC channel between
471
+ * the child and the parent.
472
+ *
473
+ * ```js
474
+ * const { spawn } = require('child_process');
475
+ *
476
+ * const subprocess = spawn(process.argv[0], ['child_program.js'], {
477
+ * detached: true,
478
+ * stdio: 'ignore'
479
+ * });
480
+ *
481
+ * subprocess.unref();
482
+ * ```
483
+ * @since v0.7.10
484
+ */
485
+ unref(): void;
486
+ /**
487
+ * Calling `subprocess.ref()` after making a call to `subprocess.unref()` will
488
+ * restore the removed reference count for the child process, forcing the parent
489
+ * to wait for the child to exit before exiting itself.
490
+ *
491
+ * ```js
492
+ * const { spawn } = require('child_process');
493
+ *
494
+ * const subprocess = spawn(process.argv[0], ['child_program.js'], {
495
+ * detached: true,
496
+ * stdio: 'ignore'
497
+ * });
498
+ *
499
+ * subprocess.unref();
500
+ * subprocess.ref();
501
+ * ```
502
+ * @since v0.7.10
503
+ */
504
+ ref(): void;
505
+ /**
506
+ * events.EventEmitter
507
+ * 1. close
508
+ * 2. disconnect
509
+ * 3. error
510
+ * 4. exit
511
+ * 5. message
512
+ * 6. spawn
513
+ */
514
+ addListener(event: string, listener: (...args: any[]) => void): this;
515
+ addListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
516
+ addListener(event: 'disconnect', listener: () => void): this;
517
+ addListener(event: 'error', listener: (err: Error) => void): this;
518
+ addListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
519
+ addListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
520
+ addListener(event: 'spawn', listener: () => void): this;
521
+ emit(event: string | symbol, ...args: any[]): boolean;
522
+ emit(event: 'close', code: number | null, signal: NodeJS.Signals | null): boolean;
523
+ emit(event: 'disconnect'): boolean;
524
+ emit(event: 'error', err: Error): boolean;
525
+ emit(event: 'exit', code: number | null, signal: NodeJS.Signals | null): boolean;
526
+ emit(event: 'message', message: Serializable, sendHandle: SendHandle): boolean;
527
+ emit(event: 'spawn', listener: () => void): boolean;
528
+ on(event: string, listener: (...args: any[]) => void): this;
529
+ on(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
530
+ on(event: 'disconnect', listener: () => void): this;
531
+ on(event: 'error', listener: (err: Error) => void): this;
532
+ on(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
533
+ on(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
534
+ on(event: 'spawn', listener: () => void): this;
535
+ once(event: string, listener: (...args: any[]) => void): this;
536
+ once(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
537
+ once(event: 'disconnect', listener: () => void): this;
538
+ once(event: 'error', listener: (err: Error) => void): this;
539
+ once(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
540
+ once(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
541
+ once(event: 'spawn', listener: () => void): this;
542
+ prependListener(event: string, listener: (...args: any[]) => void): this;
543
+ prependListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
544
+ prependListener(event: 'disconnect', listener: () => void): this;
545
+ prependListener(event: 'error', listener: (err: Error) => void): this;
546
+ prependListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
547
+ prependListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
548
+ prependListener(event: 'spawn', listener: () => void): this;
549
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
550
+ prependOnceListener(event: 'close', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
551
+ prependOnceListener(event: 'disconnect', listener: () => void): this;
552
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
553
+ prependOnceListener(event: 'exit', listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
554
+ prependOnceListener(event: 'message', listener: (message: Serializable, sendHandle: SendHandle) => void): this;
555
+ prependOnceListener(event: 'spawn', listener: () => void): this;
556
+ }
557
+ // return this object when stdio option is undefined or not specified
558
+ interface ChildProcessWithoutNullStreams extends ChildProcess {
559
+ stdin: Writable;
560
+ stdout: Readable;
561
+ stderr: Readable;
562
+ readonly stdio: [
563
+ Writable,
564
+ Readable,
565
+ Readable,
566
+ // stderr
567
+ Readable | Writable | null | undefined,
568
+ // extra, no modification
569
+ Readable | Writable | null | undefined // extra, no modification
570
+ ];
571
+ }
572
+ // return this object when stdio option is a tuple of 3
573
+ interface ChildProcessByStdio<I extends null | Writable, O extends null | Readable, E extends null | Readable> extends ChildProcess {
574
+ stdin: I;
575
+ stdout: O;
576
+ stderr: E;
577
+ readonly stdio: [
578
+ I,
579
+ O,
580
+ E,
581
+ Readable | Writable | null | undefined,
582
+ // extra, no modification
583
+ Readable | Writable | null | undefined // extra, no modification
584
+ ];
585
+ }
586
+ interface MessageOptions {
587
+ keepOpen?: boolean | undefined;
588
+ }
589
+ type IOType = 'overlapped' | 'pipe' | 'ignore' | 'inherit';
590
+ type StdioOptions = IOType | Array<IOType | 'ipc' | Stream | number | null | undefined>;
591
+ type SerializationType = 'json' | 'advanced';
592
+ interface MessagingOptions extends Abortable {
593
+ /**
594
+ * Specify the kind of serialization used for sending messages between processes.
595
+ * @default 'json'
596
+ */
597
+ serialization?: SerializationType | undefined;
598
+ /**
599
+ * The signal value to be used when the spawned process will be killed by the abort signal.
600
+ * @default 'SIGTERM'
601
+ */
602
+ killSignal?: NodeJS.Signals | number | undefined;
603
+ /**
604
+ * In milliseconds the maximum amount of time the process is allowed to run.
605
+ */
606
+ timeout?: number | undefined;
607
+ }
608
+ interface ProcessEnvOptions {
609
+ uid?: number | undefined;
610
+ gid?: number | undefined;
611
+ cwd?: string | URL | undefined;
612
+ env?: NodeJS.ProcessEnv | undefined;
613
+ }
614
+ interface CommonOptions extends ProcessEnvOptions {
615
+ /**
616
+ * @default true
617
+ */
618
+ windowsHide?: boolean | undefined;
619
+ /**
620
+ * @default 0
621
+ */
622
+ timeout?: number | undefined;
623
+ }
624
+ interface CommonSpawnOptions extends CommonOptions, MessagingOptions, Abortable {
625
+ argv0?: string | undefined;
626
+ stdio?: StdioOptions | undefined;
627
+ shell?: boolean | string | undefined;
628
+ windowsVerbatimArguments?: boolean | undefined;
629
+ }
630
+ interface SpawnOptions extends CommonSpawnOptions {
631
+ detached?: boolean | undefined;
632
+ }
633
+ interface SpawnOptionsWithoutStdio extends SpawnOptions {
634
+ stdio?: StdioPipeNamed | StdioPipe[] | undefined;
635
+ }
636
+ type StdioNull = 'inherit' | 'ignore' | Stream;
637
+ type StdioPipeNamed = 'pipe' | 'overlapped';
638
+ type StdioPipe = undefined | null | StdioPipeNamed;
639
+ interface SpawnOptionsWithStdioTuple<Stdin extends StdioNull | StdioPipe, Stdout extends StdioNull | StdioPipe, Stderr extends StdioNull | StdioPipe> extends SpawnOptions {
640
+ stdio: [Stdin, Stdout, Stderr];
641
+ }
642
+ /**
643
+ * The `child_process.spawn()` method spawns a new process using the given`command`, with command-line arguments in `args`. If omitted, `args` defaults
644
+ * to an empty array.
645
+ *
646
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
647
+ * **function. Any input containing shell metacharacters may be used to trigger**
648
+ * **arbitrary command execution.**
649
+ *
650
+ * A third argument may be used to specify additional options, with these defaults:
651
+ *
652
+ * ```js
653
+ * const defaults = {
654
+ * cwd: undefined,
655
+ * env: process.env
656
+ * };
657
+ * ```
658
+ *
659
+ * Use `cwd` to specify the working directory from which the process is spawned.
660
+ * If not given, the default is to inherit the current working directory. If given,
661
+ * but the path does not exist, the child process emits an `ENOENT` error
662
+ * and exits immediately. `ENOENT` is also emitted when the command
663
+ * does not exist.
664
+ *
665
+ * Use `env` to specify environment variables that will be visible to the new
666
+ * process, the default is `process.env`.
667
+ *
668
+ * `undefined` values in `env` will be ignored.
669
+ *
670
+ * Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the
671
+ * exit code:
672
+ *
673
+ * ```js
674
+ * const { spawn } = require('child_process');
675
+ * const ls = spawn('ls', ['-lh', '/usr']);
676
+ *
677
+ * ls.stdout.on('data', (data) => {
678
+ * console.log(`stdout: ${data}`);
679
+ * });
680
+ *
681
+ * ls.stderr.on('data', (data) => {
682
+ * console.error(`stderr: ${data}`);
683
+ * });
684
+ *
685
+ * ls.on('close', (code) => {
686
+ * console.log(`child process exited with code ${code}`);
687
+ * });
688
+ * ```
689
+ *
690
+ * Example: A very elaborate way to run `ps ax | grep ssh`
691
+ *
692
+ * ```js
693
+ * const { spawn } = require('child_process');
694
+ * const ps = spawn('ps', ['ax']);
695
+ * const grep = spawn('grep', ['ssh']);
696
+ *
697
+ * ps.stdout.on('data', (data) => {
698
+ * grep.stdin.write(data);
699
+ * });
700
+ *
701
+ * ps.stderr.on('data', (data) => {
702
+ * console.error(`ps stderr: ${data}`);
703
+ * });
704
+ *
705
+ * ps.on('close', (code) => {
706
+ * if (code !== 0) {
707
+ * console.log(`ps process exited with code ${code}`);
708
+ * }
709
+ * grep.stdin.end();
710
+ * });
711
+ *
712
+ * grep.stdout.on('data', (data) => {
713
+ * console.log(data.toString());
714
+ * });
715
+ *
716
+ * grep.stderr.on('data', (data) => {
717
+ * console.error(`grep stderr: ${data}`);
718
+ * });
719
+ *
720
+ * grep.on('close', (code) => {
721
+ * if (code !== 0) {
722
+ * console.log(`grep process exited with code ${code}`);
723
+ * }
724
+ * });
725
+ * ```
726
+ *
727
+ * Example of checking for failed `spawn`:
728
+ *
729
+ * ```js
730
+ * const { spawn } = require('child_process');
731
+ * const subprocess = spawn('bad_command');
732
+ *
733
+ * subprocess.on('error', (err) => {
734
+ * console.error('Failed to start subprocess.');
735
+ * });
736
+ * ```
737
+ *
738
+ * Certain platforms (macOS, Linux) will use the value of `argv[0]` for the process
739
+ * title while others (Windows, SunOS) will use `command`.
740
+ *
741
+ * Node.js currently overwrites `argv[0]` with `process.execPath` on startup, so`process.argv[0]` in a Node.js child process will not match the `argv0`parameter passed to `spawn` from the parent,
742
+ * retrieve it with the`process.argv0` property instead.
743
+ *
744
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
745
+ * the error passed to the callback will be an `AbortError`:
746
+ *
747
+ * ```js
748
+ * const { spawn } = require('child_process');
749
+ * const controller = new AbortController();
750
+ * const { signal } = controller;
751
+ * const grep = spawn('grep', ['ssh'], { signal });
752
+ * grep.on('error', (err) => {
753
+ * // This will be called with err being an AbortError if the controller aborts
754
+ * });
755
+ * controller.abort(); // Stops the child process
756
+ * ```
757
+ * @since v0.1.90
758
+ * @param command The command to run.
759
+ * @param args List of string arguments.
760
+ */
761
+ function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
762
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>): ChildProcessByStdio<Writable, Readable, Readable>;
763
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>): ChildProcessByStdio<Writable, Readable, null>;
764
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>): ChildProcessByStdio<Writable, null, Readable>;
765
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>): ChildProcessByStdio<null, Readable, Readable>;
766
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>): ChildProcessByStdio<Writable, null, null>;
767
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>): ChildProcessByStdio<null, Readable, null>;
768
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>): ChildProcessByStdio<null, null, Readable>;
769
+ function spawn(command: string, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>): ChildProcessByStdio<null, null, null>;
770
+ function spawn(command: string, options: SpawnOptions): ChildProcess;
771
+ // overloads of spawn with 'args'
772
+ function spawn(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
773
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>): ChildProcessByStdio<Writable, Readable, Readable>;
774
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>): ChildProcessByStdio<Writable, Readable, null>;
775
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>): ChildProcessByStdio<Writable, null, Readable>;
776
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>): ChildProcessByStdio<null, Readable, Readable>;
777
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>): ChildProcessByStdio<Writable, null, null>;
778
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>): ChildProcessByStdio<null, Readable, null>;
779
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>): ChildProcessByStdio<null, null, Readable>;
780
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>): ChildProcessByStdio<null, null, null>;
781
+ function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptions): ChildProcess;
782
+ interface ExecOptions extends CommonOptions {
783
+ shell?: string | undefined;
784
+ maxBuffer?: number | undefined;
785
+ killSignal?: NodeJS.Signals | number | undefined;
786
+ }
787
+ interface ExecOptionsWithStringEncoding extends ExecOptions {
788
+ encoding: BufferEncoding;
789
+ }
790
+ interface ExecOptionsWithBufferEncoding extends ExecOptions {
791
+ encoding: BufferEncoding | null; // specify `null`.
792
+ }
793
+ interface ExecException extends Error {
794
+ cmd?: string | undefined;
795
+ killed?: boolean | undefined;
796
+ code?: number | undefined;
797
+ signal?: NodeJS.Signals | undefined;
798
+ }
799
+ /**
800
+ * Spawns a shell then executes the `command` within that shell, buffering any
801
+ * generated output. The `command` string passed to the exec function is processed
802
+ * directly by the shell and special characters (vary based on[shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters))
803
+ * need to be dealt with accordingly:
804
+ *
805
+ * ```js
806
+ * const { exec } = require('child_process');
807
+ *
808
+ * exec('"/path/to/test file/test.sh" arg1 arg2');
809
+ * // Double quotes are used so that the space in the path is not interpreted as
810
+ * // a delimiter of multiple arguments.
811
+ *
812
+ * exec('echo "The \\$HOME variable is $HOME"');
813
+ * // The $HOME variable is escaped in the first instance, but not in the second.
814
+ * ```
815
+ *
816
+ * **Never pass unsanitized user input to this function. Any input containing shell**
817
+ * **metacharacters may be used to trigger arbitrary command execution.**
818
+ *
819
+ * If a `callback` function is provided, it is called with the arguments`(error, stdout, stderr)`. On success, `error` will be `null`. On error,`error` will be an instance of `Error`. The
820
+ * `error.code` property will be
821
+ * the exit code of the process. By convention, any exit code other than `0`indicates an error. `error.signal` will be the signal that terminated the
822
+ * process.
823
+ *
824
+ * The `stdout` and `stderr` arguments passed to the callback will contain the
825
+ * stdout and stderr output of the child process. By default, Node.js will decode
826
+ * the output as UTF-8 and pass strings to the callback. The `encoding` option
827
+ * can be used to specify the character encoding used to decode the stdout and
828
+ * stderr output. If `encoding` is `'buffer'`, or an unrecognized character
829
+ * encoding, `Buffer` objects will be passed to the callback instead.
830
+ *
831
+ * ```js
832
+ * const { exec } = require('child_process');
833
+ * exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => {
834
+ * if (error) {
835
+ * console.error(`exec error: ${error}`);
836
+ * return;
837
+ * }
838
+ * console.log(`stdout: ${stdout}`);
839
+ * console.error(`stderr: ${stderr}`);
840
+ * });
841
+ * ```
842
+ *
843
+ * If `timeout` is greater than `0`, the parent will send the signal
844
+ * identified by the `killSignal` property (the default is `'SIGTERM'`) if the
845
+ * child runs longer than `timeout` milliseconds.
846
+ *
847
+ * Unlike the [`exec(3)`](http://man7.org/linux/man-pages/man3/exec.3.html) POSIX system call, `child_process.exec()` does not replace
848
+ * the existing process and uses a shell to execute the command.
849
+ *
850
+ * If this method is invoked as its `util.promisify()` ed version, it returns
851
+ * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In
852
+ * case of an error (including any error resulting in an exit code other than 0), a
853
+ * rejected promise is returned, with the same `error` object given in the
854
+ * callback, but with two additional properties `stdout` and `stderr`.
855
+ *
856
+ * ```js
857
+ * const util = require('util');
858
+ * const exec = util.promisify(require('child_process').exec);
859
+ *
860
+ * async function lsExample() {
861
+ * const { stdout, stderr } = await exec('ls');
862
+ * console.log('stdout:', stdout);
863
+ * console.error('stderr:', stderr);
864
+ * }
865
+ * lsExample();
866
+ * ```
867
+ *
868
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
869
+ * the error passed to the callback will be an `AbortError`:
870
+ *
871
+ * ```js
872
+ * const { exec } = require('child_process');
873
+ * const controller = new AbortController();
874
+ * const { signal } = controller;
875
+ * const child = exec('grep ssh', { signal }, (error) => {
876
+ * console.log(error); // an AbortError
877
+ * });
878
+ * controller.abort();
879
+ * ```
880
+ * @since v0.1.90
881
+ * @param command The command to run, with space-separated arguments.
882
+ * @param callback called with the output when process terminates.
883
+ */
884
+ function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
885
+ // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
886
+ function exec(
887
+ command: string,
888
+ options: {
889
+ encoding: 'buffer' | null;
890
+ } & ExecOptions,
891
+ callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void
892
+ ): ChildProcess;
893
+ // `options` with well known `encoding` means stdout/stderr are definitely `string`.
894
+ function exec(
895
+ command: string,
896
+ options: {
897
+ encoding: BufferEncoding;
898
+ } & ExecOptions,
899
+ callback?: (error: ExecException | null, stdout: string, stderr: string) => void
900
+ ): ChildProcess;
901
+ // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
902
+ // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
903
+ function exec(
904
+ command: string,
905
+ options: {
906
+ encoding: BufferEncoding;
907
+ } & ExecOptions,
908
+ callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void
909
+ ): ChildProcess;
910
+ // `options` without an `encoding` means stdout/stderr are definitely `string`.
911
+ function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
912
+ // fallback if nothing else matches. Worst case is always `string | Buffer`.
913
+ function exec(
914
+ command: string,
915
+ options: (ObjectEncodingOptions & ExecOptions) | undefined | null,
916
+ callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void
917
+ ): ChildProcess;
918
+ interface PromiseWithChild<T> extends Promise<T> {
919
+ child: ChildProcess;
920
+ }
921
+ namespace exec {
922
+ function __promisify__(command: string): PromiseWithChild<{
923
+ stdout: string;
924
+ stderr: string;
925
+ }>;
926
+ function __promisify__(
927
+ command: string,
928
+ options: {
929
+ encoding: 'buffer' | null;
930
+ } & ExecOptions
931
+ ): PromiseWithChild<{
932
+ stdout: Buffer;
933
+ stderr: Buffer;
934
+ }>;
935
+ function __promisify__(
936
+ command: string,
937
+ options: {
938
+ encoding: BufferEncoding;
939
+ } & ExecOptions
940
+ ): PromiseWithChild<{
941
+ stdout: string;
942
+ stderr: string;
943
+ }>;
944
+ function __promisify__(
945
+ command: string,
946
+ options: ExecOptions
947
+ ): PromiseWithChild<{
948
+ stdout: string;
949
+ stderr: string;
950
+ }>;
951
+ function __promisify__(
952
+ command: string,
953
+ options?: (ObjectEncodingOptions & ExecOptions) | null
954
+ ): PromiseWithChild<{
955
+ stdout: string | Buffer;
956
+ stderr: string | Buffer;
957
+ }>;
958
+ }
959
+ interface ExecFileOptions extends CommonOptions, Abortable {
960
+ maxBuffer?: number | undefined;
961
+ killSignal?: NodeJS.Signals | number | undefined;
962
+ windowsVerbatimArguments?: boolean | undefined;
963
+ shell?: boolean | string | undefined;
964
+ signal?: AbortSignal | undefined;
965
+ }
966
+ interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
967
+ encoding: BufferEncoding;
968
+ }
969
+ interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
970
+ encoding: 'buffer' | null;
971
+ }
972
+ interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
973
+ encoding: BufferEncoding;
974
+ }
975
+ type ExecFileException = ExecException & NodeJS.ErrnoException;
976
+ /**
977
+ * The `child_process.execFile()` function is similar to {@link exec} except that it does not spawn a shell by default. Rather, the specified
978
+ * executable `file` is spawned directly as a new process making it slightly more
979
+ * efficient than {@link exec}.
980
+ *
981
+ * The same options as {@link exec} are supported. Since a shell is
982
+ * not spawned, behaviors such as I/O redirection and file globbing are not
983
+ * supported.
984
+ *
985
+ * ```js
986
+ * const { execFile } = require('child_process');
987
+ * const child = execFile('node', ['--version'], (error, stdout, stderr) => {
988
+ * if (error) {
989
+ * throw error;
990
+ * }
991
+ * console.log(stdout);
992
+ * });
993
+ * ```
994
+ *
995
+ * The `stdout` and `stderr` arguments passed to the callback will contain the
996
+ * stdout and stderr output of the child process. By default, Node.js will decode
997
+ * the output as UTF-8 and pass strings to the callback. The `encoding` option
998
+ * can be used to specify the character encoding used to decode the stdout and
999
+ * stderr output. If `encoding` is `'buffer'`, or an unrecognized character
1000
+ * encoding, `Buffer` objects will be passed to the callback instead.
1001
+ *
1002
+ * If this method is invoked as its `util.promisify()` ed version, it returns
1003
+ * a `Promise` for an `Object` with `stdout` and `stderr` properties. The returned`ChildProcess` instance is attached to the `Promise` as a `child` property. In
1004
+ * case of an error (including any error resulting in an exit code other than 0), a
1005
+ * rejected promise is returned, with the same `error` object given in the
1006
+ * callback, but with two additional properties `stdout` and `stderr`.
1007
+ *
1008
+ * ```js
1009
+ * const util = require('util');
1010
+ * const execFile = util.promisify(require('child_process').execFile);
1011
+ * async function getVersion() {
1012
+ * const { stdout } = await execFile('node', ['--version']);
1013
+ * console.log(stdout);
1014
+ * }
1015
+ * getVersion();
1016
+ * ```
1017
+ *
1018
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
1019
+ * **function. Any input containing shell metacharacters may be used to trigger**
1020
+ * **arbitrary command execution.**
1021
+ *
1022
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
1023
+ * the error passed to the callback will be an `AbortError`:
1024
+ *
1025
+ * ```js
1026
+ * const { execFile } = require('child_process');
1027
+ * const controller = new AbortController();
1028
+ * const { signal } = controller;
1029
+ * const child = execFile('node', ['--version'], { signal }, (error) => {
1030
+ * console.log(error); // an AbortError
1031
+ * });
1032
+ * controller.abort();
1033
+ * ```
1034
+ * @since v0.1.91
1035
+ * @param file The name or path of the executable file to run.
1036
+ * @param args List of string arguments.
1037
+ * @param callback Called with the output when process terminates.
1038
+ */
1039
+ function execFile(file: string): ChildProcess;
1040
+ function execFile(file: string, options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
1041
+ function execFile(file: string, args?: ReadonlyArray<string> | null): ChildProcess;
1042
+ function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
1043
+ // no `options` definitely means stdout/stderr are `string`.
1044
+ function execFile(file: string, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1045
+ function execFile(file: string, args: ReadonlyArray<string> | undefined | null, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1046
+ // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
1047
+ function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
1048
+ function execFile(
1049
+ file: string,
1050
+ args: ReadonlyArray<string> | undefined | null,
1051
+ options: ExecFileOptionsWithBufferEncoding,
1052
+ callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void
1053
+ ): ChildProcess;
1054
+ // `options` with well known `encoding` means stdout/stderr are definitely `string`.
1055
+ function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1056
+ function execFile(
1057
+ file: string,
1058
+ args: ReadonlyArray<string> | undefined | null,
1059
+ options: ExecFileOptionsWithStringEncoding,
1060
+ callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
1061
+ ): ChildProcess;
1062
+ // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
1063
+ // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
1064
+ function execFile(file: string, options: ExecFileOptionsWithOtherEncoding, callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;
1065
+ function execFile(
1066
+ file: string,
1067
+ args: ReadonlyArray<string> | undefined | null,
1068
+ options: ExecFileOptionsWithOtherEncoding,
1069
+ callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void
1070
+ ): ChildProcess;
1071
+ // `options` without an `encoding` means stdout/stderr are definitely `string`.
1072
+ function execFile(file: string, options: ExecFileOptions, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
1073
+ function execFile(
1074
+ file: string,
1075
+ args: ReadonlyArray<string> | undefined | null,
1076
+ options: ExecFileOptions,
1077
+ callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
1078
+ ): ChildProcess;
1079
+ // fallback if nothing else matches. Worst case is always `string | Buffer`.
1080
+ function execFile(
1081
+ file: string,
1082
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null,
1083
+ callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null
1084
+ ): ChildProcess;
1085
+ function execFile(
1086
+ file: string,
1087
+ args: ReadonlyArray<string> | undefined | null,
1088
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null,
1089
+ callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null
1090
+ ): ChildProcess;
1091
+ namespace execFile {
1092
+ function __promisify__(file: string): PromiseWithChild<{
1093
+ stdout: string;
1094
+ stderr: string;
1095
+ }>;
1096
+ function __promisify__(
1097
+ file: string,
1098
+ args: ReadonlyArray<string> | undefined | null
1099
+ ): PromiseWithChild<{
1100
+ stdout: string;
1101
+ stderr: string;
1102
+ }>;
1103
+ function __promisify__(
1104
+ file: string,
1105
+ options: ExecFileOptionsWithBufferEncoding
1106
+ ): PromiseWithChild<{
1107
+ stdout: Buffer;
1108
+ stderr: Buffer;
1109
+ }>;
1110
+ function __promisify__(
1111
+ file: string,
1112
+ args: ReadonlyArray<string> | undefined | null,
1113
+ options: ExecFileOptionsWithBufferEncoding
1114
+ ): PromiseWithChild<{
1115
+ stdout: Buffer;
1116
+ stderr: Buffer;
1117
+ }>;
1118
+ function __promisify__(
1119
+ file: string,
1120
+ options: ExecFileOptionsWithStringEncoding
1121
+ ): PromiseWithChild<{
1122
+ stdout: string;
1123
+ stderr: string;
1124
+ }>;
1125
+ function __promisify__(
1126
+ file: string,
1127
+ args: ReadonlyArray<string> | undefined | null,
1128
+ options: ExecFileOptionsWithStringEncoding
1129
+ ): PromiseWithChild<{
1130
+ stdout: string;
1131
+ stderr: string;
1132
+ }>;
1133
+ function __promisify__(
1134
+ file: string,
1135
+ options: ExecFileOptionsWithOtherEncoding
1136
+ ): PromiseWithChild<{
1137
+ stdout: string | Buffer;
1138
+ stderr: string | Buffer;
1139
+ }>;
1140
+ function __promisify__(
1141
+ file: string,
1142
+ args: ReadonlyArray<string> | undefined | null,
1143
+ options: ExecFileOptionsWithOtherEncoding
1144
+ ): PromiseWithChild<{
1145
+ stdout: string | Buffer;
1146
+ stderr: string | Buffer;
1147
+ }>;
1148
+ function __promisify__(
1149
+ file: string,
1150
+ options: ExecFileOptions
1151
+ ): PromiseWithChild<{
1152
+ stdout: string;
1153
+ stderr: string;
1154
+ }>;
1155
+ function __promisify__(
1156
+ file: string,
1157
+ args: ReadonlyArray<string> | undefined | null,
1158
+ options: ExecFileOptions
1159
+ ): PromiseWithChild<{
1160
+ stdout: string;
1161
+ stderr: string;
1162
+ }>;
1163
+ function __promisify__(
1164
+ file: string,
1165
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null
1166
+ ): PromiseWithChild<{
1167
+ stdout: string | Buffer;
1168
+ stderr: string | Buffer;
1169
+ }>;
1170
+ function __promisify__(
1171
+ file: string,
1172
+ args: ReadonlyArray<string> | undefined | null,
1173
+ options: (ObjectEncodingOptions & ExecFileOptions) | undefined | null
1174
+ ): PromiseWithChild<{
1175
+ stdout: string | Buffer;
1176
+ stderr: string | Buffer;
1177
+ }>;
1178
+ }
1179
+ interface ForkOptions extends ProcessEnvOptions, MessagingOptions, Abortable {
1180
+ execPath?: string | undefined;
1181
+ execArgv?: string[] | undefined;
1182
+ silent?: boolean | undefined;
1183
+ stdio?: StdioOptions | undefined;
1184
+ detached?: boolean | undefined;
1185
+ windowsVerbatimArguments?: boolean | undefined;
1186
+ }
1187
+ /**
1188
+ * The `child_process.fork()` method is a special case of {@link spawn} used specifically to spawn new Node.js processes.
1189
+ * Like {@link spawn}, a `ChildProcess` object is returned. The
1190
+ * returned `ChildProcess` will have an additional communication channel
1191
+ * built-in that allows messages to be passed back and forth between the parent and
1192
+ * child. See `subprocess.send()` for details.
1193
+ *
1194
+ * Keep in mind that spawned Node.js child processes are
1195
+ * independent of the parent with exception of the IPC communication channel
1196
+ * that is established between the two. Each process has its own memory, with
1197
+ * their own V8 instances. Because of the additional resource allocations
1198
+ * required, spawning a large number of child Node.js processes is not
1199
+ * recommended.
1200
+ *
1201
+ * By default, `child_process.fork()` will spawn new Node.js instances using the `process.execPath` of the parent process. The `execPath` property in the`options` object allows for an alternative
1202
+ * execution path to be used.
1203
+ *
1204
+ * Node.js processes launched with a custom `execPath` will communicate with the
1205
+ * parent process using the file descriptor (fd) identified using the
1206
+ * environment variable `NODE_CHANNEL_FD` on the child process.
1207
+ *
1208
+ * Unlike the [`fork(2)`](http://man7.org/linux/man-pages/man2/fork.2.html) POSIX system call, `child_process.fork()` does not clone the
1209
+ * current process.
1210
+ *
1211
+ * The `shell` option available in {@link spawn} is not supported by`child_process.fork()` and will be ignored if set.
1212
+ *
1213
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.kill()` on the child process except
1214
+ * the error passed to the callback will be an `AbortError`:
1215
+ *
1216
+ * ```js
1217
+ * if (process.argv[2] === 'child') {
1218
+ * setTimeout(() => {
1219
+ * console.log(`Hello from ${process.argv[2]}!`);
1220
+ * }, 1_000);
1221
+ * } else {
1222
+ * const { fork } = require('child_process');
1223
+ * const controller = new AbortController();
1224
+ * const { signal } = controller;
1225
+ * const child = fork(__filename, ['child'], { signal });
1226
+ * child.on('error', (err) => {
1227
+ * // This will be called with err being an AbortError if the controller aborts
1228
+ * });
1229
+ * controller.abort(); // Stops the child process
1230
+ * }
1231
+ * ```
1232
+ * @since v0.5.0
1233
+ * @param modulePath The module to run in the child.
1234
+ * @param args List of string arguments.
1235
+ */
1236
+ function fork(modulePath: string, options?: ForkOptions): ChildProcess;
1237
+ function fork(modulePath: string, args?: ReadonlyArray<string>, options?: ForkOptions): ChildProcess;
1238
+ interface SpawnSyncOptions extends CommonSpawnOptions {
1239
+ input?: string | NodeJS.ArrayBufferView | undefined;
1240
+ maxBuffer?: number | undefined;
1241
+ encoding?: BufferEncoding | 'buffer' | null | undefined;
1242
+ }
1243
+ interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
1244
+ encoding: BufferEncoding;
1245
+ }
1246
+ interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
1247
+ encoding?: 'buffer' | null | undefined;
1248
+ }
1249
+ interface SpawnSyncReturns<T> {
1250
+ pid: number;
1251
+ output: Array<T | null>;
1252
+ stdout: T;
1253
+ stderr: T;
1254
+ status: number | null;
1255
+ signal: NodeJS.Signals | null;
1256
+ error?: Error | undefined;
1257
+ }
1258
+ /**
1259
+ * The `child_process.spawnSync()` method is generally identical to {@link spawn} with the exception that the function will not return
1260
+ * until the child process has fully closed. When a timeout has been encountered
1261
+ * and `killSignal` is sent, the method won't return until the process has
1262
+ * completely exited. If the process intercepts and handles the `SIGTERM` signal
1263
+ * and doesn't exit, the parent process will wait until the child process has
1264
+ * exited.
1265
+ *
1266
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
1267
+ * **function. Any input containing shell metacharacters may be used to trigger**
1268
+ * **arbitrary command execution.**
1269
+ * @since v0.11.12
1270
+ * @param command The command to run.
1271
+ * @param args List of string arguments.
1272
+ */
1273
+ function spawnSync(command: string): SpawnSyncReturns<Buffer>;
1274
+ function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
1275
+ function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
1276
+ function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
1277
+ function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
1278
+ function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
1279
+ function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
1280
+ interface CommonExecOptions extends CommonOptions {
1281
+ input?: string | NodeJS.ArrayBufferView | undefined;
1282
+ stdio?: StdioOptions | undefined;
1283
+ killSignal?: NodeJS.Signals | number | undefined;
1284
+ maxBuffer?: number | undefined;
1285
+ encoding?: BufferEncoding | 'buffer' | null | undefined;
1286
+ }
1287
+ interface ExecSyncOptions extends CommonExecOptions {
1288
+ shell?: string | undefined;
1289
+ }
1290
+ interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
1291
+ encoding: BufferEncoding;
1292
+ }
1293
+ interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
1294
+ encoding?: 'buffer' | null | undefined;
1295
+ }
1296
+ /**
1297
+ * The `child_process.execSync()` method is generally identical to {@link exec} with the exception that the method will not return
1298
+ * until the child process has fully closed. When a timeout has been encountered
1299
+ * and `killSignal` is sent, the method won't return until the process has
1300
+ * completely exited. If the child process intercepts and handles the `SIGTERM`signal and doesn't exit, the parent process will wait until the child process
1301
+ * has exited.
1302
+ *
1303
+ * If the process times out or has a non-zero exit code, this method will throw.
1304
+ * The `Error` object will contain the entire result from {@link spawnSync}.
1305
+ *
1306
+ * **Never pass unsanitized user input to this function. Any input containing shell**
1307
+ * **metacharacters may be used to trigger arbitrary command execution.**
1308
+ * @since v0.11.12
1309
+ * @param command The command to run.
1310
+ * @return The stdout from the command.
1311
+ */
1312
+ function execSync(command: string): Buffer;
1313
+ function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;
1314
+ function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;
1315
+ function execSync(command: string, options?: ExecSyncOptions): Buffer;
1316
+ interface ExecFileSyncOptions extends CommonExecOptions {
1317
+ shell?: boolean | string | undefined;
1318
+ }
1319
+ interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
1320
+ encoding: BufferEncoding;
1321
+ }
1322
+ interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
1323
+ encoding: BufferEncoding; // specify `null`.
1324
+ }
1325
+ /**
1326
+ * The `child_process.execFileSync()` method is generally identical to {@link execFile} with the exception that the method will not
1327
+ * return until the child process has fully closed. When a timeout has been
1328
+ * encountered and `killSignal` is sent, the method won't return until the process
1329
+ * has completely exited.
1330
+ *
1331
+ * If the child process intercepts and handles the `SIGTERM` signal and
1332
+ * does not exit, the parent process will still wait until the child process has
1333
+ * exited.
1334
+ *
1335
+ * If the process times out or has a non-zero exit code, this method will throw an `Error` that will include the full result of the underlying {@link spawnSync}.
1336
+ *
1337
+ * **If the `shell` option is enabled, do not pass unsanitized user input to this**
1338
+ * **function. Any input containing shell metacharacters may be used to trigger**
1339
+ * **arbitrary command execution.**
1340
+ * @since v0.11.12
1341
+ * @param file The name or path of the executable file to run.
1342
+ * @param args List of string arguments.
1343
+ * @return The stdout from the command.
1344
+ */
1345
+ function execFileSync(file: string): Buffer;
1346
+ function execFileSync(file: string, options?: ExecFileSyncOptionsWithStringEncoding): string;
1347
+ function execFileSync(file: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
1348
+ function execFileSync(file: string, options?: ExecFileSyncOptions): Buffer;
1349
+ function execFileSync(file: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithStringEncoding): string;
1350
+ function execFileSync(file: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
1351
+ function execFileSync(file: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptions): Buffer;
1352
+ }
1353
+ declare module 'node:child_process' {
1354
+ export * from 'child_process';
1355
+ }