projen 0.99.71 → 0.99.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/.jsii +3 -3
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +2 -2
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +4 -4
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/awscdk/private/feature-flags-v2.const.d.ts +1 -1
  18. package/lib/awscdk/private/feature-flags-v2.const.js +2 -2
  19. package/lib/build/build-workflow.js +1 -1
  20. package/lib/cdk/auto-discover-base.js +2 -2
  21. package/lib/cdk/construct-lib.js +1 -1
  22. package/lib/cdk/integration-test-base.js +1 -1
  23. package/lib/cdk/jsii-build.js +1 -1
  24. package/lib/cdk/jsii-docgen.js +1 -1
  25. package/lib/cdk/jsii-project.js +1 -1
  26. package/lib/cdk8s/auto-discover.js +2 -2
  27. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  28. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  29. package/lib/cdk8s/cdk8s-construct.js +1 -1
  30. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  31. package/lib/cdk8s/cdk8s-deps.js +1 -1
  32. package/lib/cdk8s/integration-test.js +1 -1
  33. package/lib/cdktf/cdktf-construct.js +1 -1
  34. package/lib/circleci/circleci.js +1 -1
  35. package/lib/component.js +1 -1
  36. package/lib/dependencies.js +1 -1
  37. package/lib/dev-env.js +1 -1
  38. package/lib/docker-compose/docker-compose-service.js +1 -1
  39. package/lib/docker-compose/docker-compose.js +1 -1
  40. package/lib/file.js +1 -1
  41. package/lib/gitattributes.js +1 -1
  42. package/lib/github/actions-provider.js +1 -1
  43. package/lib/github/auto-approve.js +1 -1
  44. package/lib/github/auto-merge.js +1 -1
  45. package/lib/github/auto-queue.js +1 -1
  46. package/lib/github/dependabot.js +1 -1
  47. package/lib/github/dependency-review.js +1 -1
  48. package/lib/github/github-credentials.js +1 -1
  49. package/lib/github/github-project.js +1 -1
  50. package/lib/github/github.js +1 -1
  51. package/lib/github/merge-queue.js +1 -1
  52. package/lib/github/mergify.js +1 -1
  53. package/lib/github/pr-template.js +1 -1
  54. package/lib/github/pull-request-backport.js +1 -1
  55. package/lib/github/pull-request-lint.js +1 -1
  56. package/lib/github/stale.js +1 -1
  57. package/lib/github/task-workflow-job.js +1 -1
  58. package/lib/github/task-workflow.js +1 -1
  59. package/lib/github/workflow-actions.js +1 -1
  60. package/lib/github/workflow-jobs.js +1 -1
  61. package/lib/github/workflow-steps.js +1 -1
  62. package/lib/github/workflows.js +1 -1
  63. package/lib/gitlab/configuration.js +1 -1
  64. package/lib/gitlab/gitlab-configuration.js +1 -1
  65. package/lib/gitlab/nested-configuration.js +1 -1
  66. package/lib/gitpod.js +1 -1
  67. package/lib/ignore-file.js +1 -1
  68. package/lib/ini.js +1 -1
  69. package/lib/java/java-project.js +1 -1
  70. package/lib/java/junit.js +1 -1
  71. package/lib/java/maven-compile.js +1 -1
  72. package/lib/java/maven-packaging.js +1 -1
  73. package/lib/java/maven-sample.js +1 -1
  74. package/lib/java/pom.js +2 -2
  75. package/lib/java/projenrc.js +1 -1
  76. package/lib/javascript/biome/biome.js +1 -1
  77. package/lib/javascript/bundler.js +1 -1
  78. package/lib/javascript/eslint.js +1 -1
  79. package/lib/javascript/jest.js +4 -4
  80. package/lib/javascript/license-checker.js +1 -1
  81. package/lib/javascript/node-package.js +1 -1
  82. package/lib/javascript/node-project.js +1 -1
  83. package/lib/javascript/npm-config.js +1 -1
  84. package/lib/javascript/prettier.js +1 -1
  85. package/lib/javascript/projenrc.js +1 -1
  86. package/lib/javascript/typescript-config.js +2 -2
  87. package/lib/javascript/upgrade-dependencies.js +2 -2
  88. package/lib/javascript/yarnrc.js +1 -1
  89. package/lib/json-patch.js +1 -1
  90. package/lib/json.js +1 -1
  91. package/lib/license.js +1 -1
  92. package/lib/logger.js +1 -1
  93. package/lib/makefile.js +1 -1
  94. package/lib/object-file.js +1 -1
  95. package/lib/project-build.js +1 -1
  96. package/lib/project-tree.js +1 -1
  97. package/lib/project.js +1 -1
  98. package/lib/projects.js +1 -1
  99. package/lib/projenrc-json.js +2 -2
  100. package/lib/projenrc.js +1 -1
  101. package/lib/python/pip.js +1 -1
  102. package/lib/python/poetry.js +2 -2
  103. package/lib/python/projenrc.js +1 -1
  104. package/lib/python/pyproject-toml-file.js +1 -1
  105. package/lib/python/pytest-sample.js +1 -1
  106. package/lib/python/pytest.js +1 -1
  107. package/lib/python/python-project.js +1 -1
  108. package/lib/python/python-sample.js +1 -1
  109. package/lib/python/requirements-file.js +1 -1
  110. package/lib/python/setuppy.js +1 -1
  111. package/lib/python/setuptools.js +1 -1
  112. package/lib/python/uv.js +1 -1
  113. package/lib/python/venv.js +1 -1
  114. package/lib/readme.js +1 -1
  115. package/lib/release/publisher.js +1 -1
  116. package/lib/release/release-trigger.js +1 -1
  117. package/lib/release/release.js +1 -1
  118. package/lib/renovatebot.js +1 -1
  119. package/lib/sample-file.js +2 -2
  120. package/lib/semver.js +1 -1
  121. package/lib/source-code.js +1 -1
  122. package/lib/task-runtime.js +1 -1
  123. package/lib/task.js +1 -1
  124. package/lib/tasks.js +1 -1
  125. package/lib/testing.js +1 -1
  126. package/lib/textfile.js +1 -1
  127. package/lib/toml.js +1 -1
  128. package/lib/typescript/projenrc-ts.js +1 -1
  129. package/lib/typescript/projenrc.js +1 -1
  130. package/lib/typescript/typescript-typedoc.js +1 -1
  131. package/lib/typescript/typescript.js +6 -6
  132. package/lib/version.js +2 -2
  133. package/lib/vscode/devcontainer.js +1 -1
  134. package/lib/vscode/extensions.js +1 -1
  135. package/lib/vscode/launch-config.js +1 -1
  136. package/lib/vscode/settings.js +1 -1
  137. package/lib/vscode/vscode.js +1 -1
  138. package/lib/web/next.js +3 -3
  139. package/lib/web/postcss.js +1 -1
  140. package/lib/web/react.js +4 -4
  141. package/lib/web/tailwind.js +1 -1
  142. package/lib/xmlfile.js +1 -1
  143. package/lib/yaml.js +1 -1
  144. package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/README.md +10 -15
  145. package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/lib/enoent.js +1 -1
  146. package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/lib/parse.js +1 -35
  147. package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/lib/util/readShebang.js +1 -10
  148. package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/lib/util/resolveCommand.js +4 -3
  149. package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/package.json +23 -25
  150. package/node_modules/execa/index.d.ts +564 -0
  151. package/node_modules/execa/index.js +268 -0
  152. package/node_modules/execa/lib/command.js +52 -0
  153. package/node_modules/execa/lib/error.js +88 -0
  154. package/node_modules/execa/lib/kill.js +115 -0
  155. package/node_modules/execa/lib/promise.js +46 -0
  156. package/node_modules/execa/lib/stdio.js +52 -0
  157. package/node_modules/execa/lib/stream.js +97 -0
  158. package/node_modules/execa/license +9 -0
  159. package/node_modules/execa/package.json +74 -0
  160. package/node_modules/execa/readme.md +663 -0
  161. package/node_modules/fastq/README.md +0 -2
  162. package/node_modules/fastq/eslint.config.js +11 -0
  163. package/node_modules/fastq/example.mjs +0 -2
  164. package/node_modules/fastq/index.d.ts +2 -0
  165. package/node_modules/fastq/package.json +5 -9
  166. package/node_modules/fastq/queue.js +36 -1
  167. package/node_modules/fastq/test/promise.js +34 -0
  168. package/node_modules/fastq/test/test.js +80 -0
  169. package/node_modules/get-stream/buffer-stream.js +52 -0
  170. package/node_modules/get-stream/index.d.ts +105 -0
  171. package/node_modules/get-stream/index.js +61 -0
  172. package/node_modules/get-stream/license +9 -0
  173. package/node_modules/{shelljs/node_modules/get-stream → get-stream}/package.json +11 -10
  174. package/node_modules/{shelljs/node_modules/get-stream → get-stream}/readme.md +19 -18
  175. package/node_modules/human-signals/LICENSE +201 -0
  176. package/node_modules/human-signals/README.md +165 -0
  177. package/node_modules/human-signals/build/src/core.js +273 -0
  178. package/node_modules/human-signals/build/src/core.js.map +1 -0
  179. package/node_modules/human-signals/build/src/main.d.ts +52 -0
  180. package/node_modules/human-signals/build/src/main.js +71 -0
  181. package/node_modules/human-signals/build/src/main.js.map +1 -0
  182. package/node_modules/human-signals/build/src/realtime.js +19 -0
  183. package/node_modules/human-signals/build/src/realtime.js.map +1 -0
  184. package/node_modules/human-signals/build/src/signals.js +35 -0
  185. package/node_modules/human-signals/build/src/signals.js.map +1 -0
  186. package/node_modules/human-signals/package.json +64 -0
  187. package/node_modules/is-stream/index.d.ts +79 -0
  188. package/node_modules/is-stream/index.js +28 -0
  189. package/node_modules/is-stream/license +9 -0
  190. package/node_modules/is-stream/package.json +42 -0
  191. package/node_modules/is-stream/readme.md +60 -0
  192. package/node_modules/js-yaml/README.md +4 -20
  193. package/node_modules/js-yaml/bin/js-yaml.js +53 -62
  194. package/node_modules/js-yaml/dist/js-yaml.js +2404 -3880
  195. package/node_modules/js-yaml/dist/js-yaml.js.map +1 -0
  196. package/node_modules/js-yaml/dist/js-yaml.min.js +33 -2
  197. package/node_modules/js-yaml/dist/js-yaml.min.js.map +1 -0
  198. package/node_modules/js-yaml/dist/js-yaml.mjs +2381 -3855
  199. package/node_modules/js-yaml/dist/js-yaml.mjs.map +1 -0
  200. package/node_modules/js-yaml/index.js +32 -35
  201. package/node_modules/js-yaml/lib/common.js +28 -37
  202. package/node_modules/js-yaml/lib/dumper.js +450 -478
  203. package/node_modules/js-yaml/lib/exception.js +23 -27
  204. package/node_modules/js-yaml/lib/index_vite_proxy.tmp.mjs +37 -0
  205. package/node_modules/js-yaml/lib/loader.js +927 -866
  206. package/node_modules/js-yaml/lib/schema/core.js +2 -4
  207. package/node_modules/js-yaml/lib/schema/default.js +2 -4
  208. package/node_modules/js-yaml/lib/schema/failsafe.js +3 -6
  209. package/node_modules/js-yaml/lib/schema/json.js +2 -4
  210. package/node_modules/js-yaml/lib/schema.js +56 -68
  211. package/node_modules/js-yaml/lib/snippet.js +47 -52
  212. package/node_modules/js-yaml/lib/type/binary.js +61 -64
  213. package/node_modules/js-yaml/lib/type/bool.js +14 -14
  214. package/node_modules/js-yaml/lib/type/float.js +47 -45
  215. package/node_modules/js-yaml/lib/type/int.js +65 -79
  216. package/node_modules/js-yaml/lib/type/map.js +4 -4
  217. package/node_modules/js-yaml/lib/type/merge.js +5 -5
  218. package/node_modules/js-yaml/lib/type/null.js +16 -16
  219. package/node_modules/js-yaml/lib/type/omap.js +22 -21
  220. package/node_modules/js-yaml/lib/type/pairs.js +24 -27
  221. package/node_modules/js-yaml/lib/type/seq.js +4 -4
  222. package/node_modules/js-yaml/lib/type/set.js +12 -12
  223. package/node_modules/js-yaml/lib/type/str.js +4 -4
  224. package/node_modules/js-yaml/lib/type/timestamp.js +53 -53
  225. package/node_modules/js-yaml/lib/type.js +30 -30
  226. package/node_modules/js-yaml/package.json +32 -21
  227. package/node_modules/{nice-try → merge-stream}/LICENSE +1 -1
  228. package/node_modules/merge-stream/README.md +78 -0
  229. package/node_modules/merge-stream/index.js +41 -0
  230. package/node_modules/merge-stream/package.json +19 -0
  231. package/node_modules/mimic-fn/index.d.ts +54 -0
  232. package/node_modules/mimic-fn/index.js +13 -0
  233. package/node_modules/mimic-fn/package.json +42 -0
  234. package/node_modules/mimic-fn/readme.md +69 -0
  235. package/node_modules/npm-run-path/index.d.ts +89 -0
  236. package/node_modules/npm-run-path/index.js +47 -0
  237. package/node_modules/npm-run-path/package.json +44 -0
  238. package/node_modules/{shelljs/node_modules/npm-run-path → npm-run-path}/readme.md +39 -5
  239. package/node_modules/onetime/index.d.ts +64 -0
  240. package/node_modules/onetime/index.js +44 -0
  241. package/node_modules/onetime/license +9 -0
  242. package/node_modules/onetime/package.json +43 -0
  243. package/node_modules/onetime/readme.md +94 -0
  244. package/node_modules/path-key/index.d.ts +40 -0
  245. package/node_modules/path-key/index.js +16 -0
  246. package/node_modules/path-key/license +9 -0
  247. package/node_modules/path-key/package.json +39 -0
  248. package/node_modules/{shelljs/node_modules/path-key → path-key}/readme.md +15 -5
  249. package/node_modules/semver/classes/range.js +11 -2
  250. package/node_modules/semver/package.json +2 -2
  251. package/node_modules/shebang-command/index.js +19 -0
  252. package/node_modules/shebang-command/license +9 -0
  253. package/node_modules/shebang-command/package.json +34 -0
  254. package/node_modules/{shelljs/node_modules/shebang-command → shebang-command}/readme.md +1 -6
  255. package/node_modules/shebang-regex/index.d.ts +22 -0
  256. package/node_modules/shebang-regex/index.js +2 -0
  257. package/node_modules/shebang-regex/license +9 -0
  258. package/node_modules/shebang-regex/package.json +35 -0
  259. package/node_modules/shebang-regex/readme.md +33 -0
  260. package/node_modules/shelljs/README.md +7 -1
  261. package/node_modules/shelljs/global.js +4 -1
  262. package/node_modules/shelljs/package.json +8 -13
  263. package/node_modules/shelljs/shell.js +9 -7
  264. package/node_modules/shelljs/src/cat.js +1 -1
  265. package/node_modules/shelljs/src/chmod.js +1 -1
  266. package/node_modules/shelljs/src/cmd.js +25 -9
  267. package/node_modules/shelljs/src/common.js +11 -8
  268. package/node_modules/shelljs/src/dirs.js +1 -1
  269. package/node_modules/shelljs/src/exec.js +6 -6
  270. package/node_modules/shelljs/src/grep.js +121 -7
  271. package/node_modules/shelljs/src/head.js +1 -1
  272. package/node_modules/shelljs/src/ls.js +1 -1
  273. package/node_modules/shelljs/src/mkdir.js +1 -1
  274. package/node_modules/shelljs/src/rm.js +1 -1
  275. package/node_modules/shelljs/src/sed.js +1 -1
  276. package/node_modules/shelljs/src/sort.js +1 -1
  277. package/node_modules/shelljs/src/tail.js +1 -1
  278. package/node_modules/shelljs/src/tempdir.js +1 -1
  279. package/node_modules/shelljs/src/test.js +1 -1
  280. package/node_modules/shelljs/src/to.js +1 -1
  281. package/node_modules/shelljs/src/toEnd.js +1 -1
  282. package/node_modules/shelljs/src/touch.js +1 -1
  283. package/node_modules/shelljs/src/uniq.js +1 -1
  284. package/node_modules/shelljs/src/which.js +1 -1
  285. package/node_modules/strip-final-newline/index.js +16 -0
  286. package/node_modules/strip-final-newline/license +9 -0
  287. package/node_modules/strip-final-newline/package.json +40 -0
  288. package/node_modules/strip-final-newline/readme.md +30 -0
  289. package/node_modules/{shelljs/node_modules/which → which}/README.md +3 -0
  290. package/node_modules/which/package.json +43 -0
  291. package/node_modules/which/which.js +125 -0
  292. package/package.json +5 -2
  293. package/node_modules/end-of-stream/LICENSE +0 -21
  294. package/node_modules/end-of-stream/README.md +0 -54
  295. package/node_modules/end-of-stream/index.js +0 -96
  296. package/node_modules/end-of-stream/package.json +0 -37
  297. package/node_modules/fastq/.github/dependabot.yml +0 -11
  298. package/node_modules/fastq/.github/workflows/ci.yml +0 -75
  299. package/node_modules/function-bind/.eslintrc +0 -21
  300. package/node_modules/function-bind/.github/FUNDING.yml +0 -12
  301. package/node_modules/function-bind/.github/SECURITY.md +0 -3
  302. package/node_modules/function-bind/.nycrc +0 -13
  303. package/node_modules/function-bind/CHANGELOG.md +0 -136
  304. package/node_modules/function-bind/LICENSE +0 -20
  305. package/node_modules/function-bind/README.md +0 -46
  306. package/node_modules/function-bind/implementation.js +0 -84
  307. package/node_modules/function-bind/index.js +0 -5
  308. package/node_modules/function-bind/package.json +0 -87
  309. package/node_modules/function-bind/test/.eslintrc +0 -9
  310. package/node_modules/function-bind/test/index.js +0 -252
  311. package/node_modules/hasown/.eslintrc +0 -5
  312. package/node_modules/hasown/.github/FUNDING.yml +0 -12
  313. package/node_modules/hasown/.nycrc +0 -13
  314. package/node_modules/hasown/CHANGELOG.md +0 -40
  315. package/node_modules/hasown/LICENSE +0 -21
  316. package/node_modules/hasown/README.md +0 -40
  317. package/node_modules/hasown/index.d.ts +0 -3
  318. package/node_modules/hasown/index.js +0 -8
  319. package/node_modules/hasown/package.json +0 -92
  320. package/node_modules/hasown/tsconfig.json +0 -6
  321. package/node_modules/interpret/LICENSE +0 -22
  322. package/node_modules/interpret/README.md +0 -187
  323. package/node_modules/interpret/index.js +0 -168
  324. package/node_modules/interpret/mjs-stub.js +0 -1
  325. package/node_modules/interpret/package.json +0 -75
  326. package/node_modules/is-core-module/.eslintrc +0 -18
  327. package/node_modules/is-core-module/.nycrc +0 -9
  328. package/node_modules/is-core-module/CHANGELOG.md +0 -218
  329. package/node_modules/is-core-module/LICENSE +0 -20
  330. package/node_modules/is-core-module/README.md +0 -40
  331. package/node_modules/is-core-module/core.json +0 -162
  332. package/node_modules/is-core-module/index.js +0 -69
  333. package/node_modules/is-core-module/package.json +0 -76
  334. package/node_modules/is-core-module/test/index.js +0 -157
  335. package/node_modules/nice-try/README.md +0 -32
  336. package/node_modules/nice-try/package.json +0 -33
  337. package/node_modules/nice-try/src/index.js +0 -12
  338. package/node_modules/once/README.md +0 -79
  339. package/node_modules/once/once.js +0 -42
  340. package/node_modules/once/package.json +0 -33
  341. package/node_modules/p-finally/index.js +0 -15
  342. package/node_modules/p-finally/license +0 -21
  343. package/node_modules/p-finally/package.json +0 -42
  344. package/node_modules/p-finally/readme.md +0 -47
  345. package/node_modules/path-parse/LICENSE +0 -21
  346. package/node_modules/path-parse/README.md +0 -42
  347. package/node_modules/path-parse/index.js +0 -75
  348. package/node_modules/path-parse/package.json +0 -33
  349. package/node_modules/pump/.github/FUNDING.yml +0 -2
  350. package/node_modules/pump/.travis.yml +0 -5
  351. package/node_modules/pump/LICENSE +0 -21
  352. package/node_modules/pump/README.md +0 -74
  353. package/node_modules/pump/SECURITY.md +0 -5
  354. package/node_modules/pump/index.js +0 -86
  355. package/node_modules/pump/package.json +0 -24
  356. package/node_modules/pump/test-browser.js +0 -66
  357. package/node_modules/pump/test-node.js +0 -53
  358. package/node_modules/rechoir/.npmignore +0 -1
  359. package/node_modules/rechoir/.travis.yml +0 -24
  360. package/node_modules/rechoir/CHANGELOG +0 -38
  361. package/node_modules/rechoir/LICENSE +0 -22
  362. package/node_modules/rechoir/README.md +0 -42
  363. package/node_modules/rechoir/index.js +0 -59
  364. package/node_modules/rechoir/lib/extension.js +0 -11
  365. package/node_modules/rechoir/lib/normalize.js +0 -15
  366. package/node_modules/rechoir/lib/register.js +0 -15
  367. package/node_modules/rechoir/package.json +0 -88
  368. package/node_modules/resolve/.editorconfig +0 -37
  369. package/node_modules/resolve/.eslintrc +0 -65
  370. package/node_modules/resolve/.github/FUNDING.yml +0 -12
  371. package/node_modules/resolve/.github/INCIDENT_RESPONSE_PROCESS.md +0 -119
  372. package/node_modules/resolve/.github/THREAT_MODEL.md +0 -74
  373. package/node_modules/resolve/LICENSE +0 -21
  374. package/node_modules/resolve/SECURITY.md +0 -11
  375. package/node_modules/resolve/async.js +0 -3
  376. package/node_modules/resolve/bin/resolve +0 -50
  377. package/node_modules/resolve/example/async.js +0 -5
  378. package/node_modules/resolve/example/sync.js +0 -3
  379. package/node_modules/resolve/index.js +0 -6
  380. package/node_modules/resolve/lib/async.js +0 -333
  381. package/node_modules/resolve/lib/caller.js +0 -8
  382. package/node_modules/resolve/lib/core.js +0 -12
  383. package/node_modules/resolve/lib/core.json +0 -162
  384. package/node_modules/resolve/lib/homedir.js +0 -24
  385. package/node_modules/resolve/lib/is-core.js +0 -5
  386. package/node_modules/resolve/lib/node-modules-paths.js +0 -45
  387. package/node_modules/resolve/lib/normalize-options.js +0 -10
  388. package/node_modules/resolve/lib/sync.js +0 -212
  389. package/node_modules/resolve/package.json +0 -75
  390. package/node_modules/resolve/readme.markdown +0 -301
  391. package/node_modules/resolve/sync.js +0 -3
  392. package/node_modules/resolve/test/core.js +0 -88
  393. package/node_modules/resolve/test/dotdot/abc/index.js +0 -2
  394. package/node_modules/resolve/test/dotdot/index.js +0 -1
  395. package/node_modules/resolve/test/dotdot.js +0 -29
  396. package/node_modules/resolve/test/faulty_basedir.js +0 -29
  397. package/node_modules/resolve/test/filter.js +0 -34
  398. package/node_modules/resolve/test/filter_sync.js +0 -33
  399. package/node_modules/resolve/test/home_paths.js +0 -127
  400. package/node_modules/resolve/test/home_paths_sync.js +0 -114
  401. package/node_modules/resolve/test/mock.js +0 -315
  402. package/node_modules/resolve/test/mock_sync.js +0 -214
  403. package/node_modules/resolve/test/module_dir/xmodules/aaa/index.js +0 -1
  404. package/node_modules/resolve/test/module_dir/ymodules/aaa/index.js +0 -1
  405. package/node_modules/resolve/test/module_dir/zmodules/bbb/main.js +0 -1
  406. package/node_modules/resolve/test/module_dir/zmodules/bbb/package.json +0 -3
  407. package/node_modules/resolve/test/module_dir.js +0 -56
  408. package/node_modules/resolve/test/node-modules-paths.js +0 -143
  409. package/node_modules/resolve/test/node_path/x/aaa/index.js +0 -1
  410. package/node_modules/resolve/test/node_path/x/ccc/index.js +0 -1
  411. package/node_modules/resolve/test/node_path/y/bbb/index.js +0 -1
  412. package/node_modules/resolve/test/node_path/y/ccc/index.js +0 -1
  413. package/node_modules/resolve/test/node_path.js +0 -70
  414. package/node_modules/resolve/test/nonstring.js +0 -9
  415. package/node_modules/resolve/test/pathfilter/deep_ref/main.js +0 -0
  416. package/node_modules/resolve/test/pathfilter.js +0 -75
  417. package/node_modules/resolve/test/precedence/aaa/index.js +0 -1
  418. package/node_modules/resolve/test/precedence/aaa/main.js +0 -1
  419. package/node_modules/resolve/test/precedence/aaa.js +0 -1
  420. package/node_modules/resolve/test/precedence/bbb/main.js +0 -1
  421. package/node_modules/resolve/test/precedence/bbb.js +0 -1
  422. package/node_modules/resolve/test/precedence.js +0 -23
  423. package/node_modules/resolve/test/resolver/baz/doom.js +0 -0
  424. package/node_modules/resolve/test/resolver/baz/package.json +0 -4
  425. package/node_modules/resolve/test/resolver/baz/quux.js +0 -1
  426. package/node_modules/resolve/test/resolver/browser_field/a.js +0 -0
  427. package/node_modules/resolve/test/resolver/browser_field/b.js +0 -0
  428. package/node_modules/resolve/test/resolver/browser_field/package.json +0 -5
  429. package/node_modules/resolve/test/resolver/cup.coffee +0 -1
  430. package/node_modules/resolve/test/resolver/dot_main/index.js +0 -1
  431. package/node_modules/resolve/test/resolver/dot_main/package.json +0 -3
  432. package/node_modules/resolve/test/resolver/dot_slash_main/index.js +0 -1
  433. package/node_modules/resolve/test/resolver/dot_slash_main/package.json +0 -3
  434. package/node_modules/resolve/test/resolver/false_main/index.js +0 -0
  435. package/node_modules/resolve/test/resolver/false_main/package.json +0 -4
  436. package/node_modules/resolve/test/resolver/foo.js +0 -1
  437. package/node_modules/resolve/test/resolver/incorrect_main/index.js +0 -2
  438. package/node_modules/resolve/test/resolver/incorrect_main/package.json +0 -3
  439. package/node_modules/resolve/test/resolver/invalid_main/package.json +0 -7
  440. package/node_modules/resolve/test/resolver/mug.coffee +0 -0
  441. package/node_modules/resolve/test/resolver/mug.js +0 -0
  442. package/node_modules/resolve/test/resolver/multirepo/lerna.json +0 -6
  443. package/node_modules/resolve/test/resolver/multirepo/package.json +0 -20
  444. package/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js +0 -35
  445. package/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json +0 -14
  446. package/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js +0 -0
  447. package/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json +0 -14
  448. package/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js +0 -26
  449. package/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json +0 -15
  450. package/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js +0 -12
  451. package/node_modules/resolve/test/resolver/other_path/lib/other-lib.js +0 -0
  452. package/node_modules/resolve/test/resolver/other_path/root.js +0 -0
  453. package/node_modules/resolve/test/resolver/quux/foo/index.js +0 -1
  454. package/node_modules/resolve/test/resolver/same_names/foo/index.js +0 -1
  455. package/node_modules/resolve/test/resolver/same_names/foo.js +0 -1
  456. package/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js +0 -0
  457. package/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep +0 -0
  458. package/node_modules/resolve/test/resolver/symlinked/package/bar.js +0 -1
  459. package/node_modules/resolve/test/resolver/symlinked/package/package.json +0 -3
  460. package/node_modules/resolve/test/resolver/without_basedir/main.js +0 -5
  461. package/node_modules/resolve/test/resolver.js +0 -597
  462. package/node_modules/resolve/test/resolver_sync.js +0 -730
  463. package/node_modules/resolve/test/shadowed_core/node_modules/util/index.js +0 -0
  464. package/node_modules/resolve/test/shadowed_core.js +0 -54
  465. package/node_modules/resolve/test/subdirs.js +0 -13
  466. package/node_modules/resolve/test/symlinks.js +0 -176
  467. package/node_modules/shelljs/bin/shjs +0 -48
  468. package/node_modules/shelljs/node_modules/execa/index.js +0 -361
  469. package/node_modules/shelljs/node_modules/execa/lib/errname.js +0 -39
  470. package/node_modules/shelljs/node_modules/execa/lib/stdio.js +0 -41
  471. package/node_modules/shelljs/node_modules/execa/package.json +0 -69
  472. package/node_modules/shelljs/node_modules/execa/readme.md +0 -327
  473. package/node_modules/shelljs/node_modules/get-stream/buffer-stream.js +0 -51
  474. package/node_modules/shelljs/node_modules/get-stream/index.js +0 -50
  475. package/node_modules/shelljs/node_modules/is-stream/index.js +0 -21
  476. package/node_modules/shelljs/node_modules/is-stream/license +0 -21
  477. package/node_modules/shelljs/node_modules/is-stream/package.json +0 -38
  478. package/node_modules/shelljs/node_modules/is-stream/readme.md +0 -42
  479. package/node_modules/shelljs/node_modules/npm-run-path/index.js +0 -39
  480. package/node_modules/shelljs/node_modules/npm-run-path/license +0 -21
  481. package/node_modules/shelljs/node_modules/npm-run-path/package.json +0 -45
  482. package/node_modules/shelljs/node_modules/path-key/index.js +0 -13
  483. package/node_modules/shelljs/node_modules/path-key/license +0 -21
  484. package/node_modules/shelljs/node_modules/path-key/package.json +0 -39
  485. package/node_modules/shelljs/node_modules/semver/LICENSE +0 -15
  486. package/node_modules/shelljs/node_modules/semver/README.md +0 -412
  487. package/node_modules/shelljs/node_modules/semver/bin/semver +0 -160
  488. package/node_modules/shelljs/node_modules/semver/package.json +0 -38
  489. package/node_modules/shelljs/node_modules/semver/range.bnf +0 -16
  490. package/node_modules/shelljs/node_modules/semver/semver.js +0 -1525
  491. package/node_modules/shelljs/node_modules/shebang-command/index.js +0 -19
  492. package/node_modules/shelljs/node_modules/shebang-command/license +0 -21
  493. package/node_modules/shelljs/node_modules/shebang-command/package.json +0 -39
  494. package/node_modules/shelljs/node_modules/shebang-regex/index.js +0 -2
  495. package/node_modules/shelljs/node_modules/shebang-regex/license +0 -21
  496. package/node_modules/shelljs/node_modules/shebang-regex/package.json +0 -32
  497. package/node_modules/shelljs/node_modules/shebang-regex/readme.md +0 -29
  498. package/node_modules/shelljs/node_modules/which/LICENSE +0 -15
  499. package/node_modules/shelljs/node_modules/which/package.json +0 -30
  500. package/node_modules/shelljs/node_modules/which/which.js +0 -135
  501. package/node_modules/strip-eof/index.js +0 -15
  502. package/node_modules/strip-eof/license +0 -21
  503. package/node_modules/strip-eof/package.json +0 -39
  504. package/node_modules/strip-eof/readme.md +0 -28
  505. package/node_modules/supports-preserve-symlinks-flag/.eslintrc +0 -14
  506. package/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml +0 -12
  507. package/node_modules/supports-preserve-symlinks-flag/.nycrc +0 -9
  508. package/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md +0 -22
  509. package/node_modules/supports-preserve-symlinks-flag/LICENSE +0 -21
  510. package/node_modules/supports-preserve-symlinks-flag/README.md +0 -42
  511. package/node_modules/supports-preserve-symlinks-flag/browser.js +0 -3
  512. package/node_modules/supports-preserve-symlinks-flag/index.js +0 -9
  513. package/node_modules/supports-preserve-symlinks-flag/package.json +0 -70
  514. package/node_modules/supports-preserve-symlinks-flag/test/index.js +0 -29
  515. package/node_modules/wrappy/LICENSE +0 -15
  516. package/node_modules/wrappy/README.md +0 -36
  517. package/node_modules/wrappy/package.json +0 -29
  518. package/node_modules/wrappy/wrappy.js +0 -33
  519. /package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/LICENSE +0 -0
  520. /package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/index.js +0 -0
  521. /package/node_modules/{shelljs/node_modules/cross-spawn → cross-spawn}/lib/util/escape.js +0 -0
  522. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/LICENSE +0 -0
  523. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/README.md +0 -0
  524. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/index.js +0 -0
  525. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/lib/constants.js +0 -0
  526. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/lib/parse.js +0 -0
  527. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/lib/picomatch.js +0 -0
  528. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/lib/scan.js +0 -0
  529. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/lib/utils.js +0 -0
  530. /package/node_modules/{picomatch → micromatch/node_modules/picomatch}/package.json +0 -0
  531. /package/node_modules/{shelljs/node_modules/execa → mimic-fn}/license +0 -0
  532. /package/node_modules/{shelljs/node_modules/get-stream → npm-run-path}/license +0 -0
  533. /package/node_modules/{once → which}/LICENSE +0 -0
  534. /package/node_modules/{shelljs/node_modules/which/bin/which → which/bin/node-which} +0 -0
@@ -0,0 +1,268 @@
1
+ 'use strict';
2
+ const path = require('path');
3
+ const childProcess = require('child_process');
4
+ const crossSpawn = require('cross-spawn');
5
+ const stripFinalNewline = require('strip-final-newline');
6
+ const npmRunPath = require('npm-run-path');
7
+ const onetime = require('onetime');
8
+ const makeError = require('./lib/error');
9
+ const normalizeStdio = require('./lib/stdio');
10
+ const {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} = require('./lib/kill');
11
+ const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = require('./lib/stream');
12
+ const {mergePromise, getSpawnedPromise} = require('./lib/promise');
13
+ const {joinCommand, parseCommand, getEscapedCommand} = require('./lib/command');
14
+
15
+ const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;
16
+
17
+ const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {
18
+ const env = extendEnv ? {...process.env, ...envOption} : envOption;
19
+
20
+ if (preferLocal) {
21
+ return npmRunPath.env({env, cwd: localDir, execPath});
22
+ }
23
+
24
+ return env;
25
+ };
26
+
27
+ const handleArguments = (file, args, options = {}) => {
28
+ const parsed = crossSpawn._parse(file, args, options);
29
+ file = parsed.command;
30
+ args = parsed.args;
31
+ options = parsed.options;
32
+
33
+ options = {
34
+ maxBuffer: DEFAULT_MAX_BUFFER,
35
+ buffer: true,
36
+ stripFinalNewline: true,
37
+ extendEnv: true,
38
+ preferLocal: false,
39
+ localDir: options.cwd || process.cwd(),
40
+ execPath: process.execPath,
41
+ encoding: 'utf8',
42
+ reject: true,
43
+ cleanup: true,
44
+ all: false,
45
+ windowsHide: true,
46
+ ...options
47
+ };
48
+
49
+ options.env = getEnv(options);
50
+
51
+ options.stdio = normalizeStdio(options);
52
+
53
+ if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {
54
+ // #116
55
+ args.unshift('/q');
56
+ }
57
+
58
+ return {file, args, options, parsed};
59
+ };
60
+
61
+ const handleOutput = (options, value, error) => {
62
+ if (typeof value !== 'string' && !Buffer.isBuffer(value)) {
63
+ // When `execa.sync()` errors, we normalize it to '' to mimic `execa()`
64
+ return error === undefined ? undefined : '';
65
+ }
66
+
67
+ if (options.stripFinalNewline) {
68
+ return stripFinalNewline(value);
69
+ }
70
+
71
+ return value;
72
+ };
73
+
74
+ const execa = (file, args, options) => {
75
+ const parsed = handleArguments(file, args, options);
76
+ const command = joinCommand(file, args);
77
+ const escapedCommand = getEscapedCommand(file, args);
78
+
79
+ validateTimeout(parsed.options);
80
+
81
+ let spawned;
82
+ try {
83
+ spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);
84
+ } catch (error) {
85
+ // Ensure the returned error is always both a promise and a child process
86
+ const dummySpawned = new childProcess.ChildProcess();
87
+ const errorPromise = Promise.reject(makeError({
88
+ error,
89
+ stdout: '',
90
+ stderr: '',
91
+ all: '',
92
+ command,
93
+ escapedCommand,
94
+ parsed,
95
+ timedOut: false,
96
+ isCanceled: false,
97
+ killed: false
98
+ }));
99
+ return mergePromise(dummySpawned, errorPromise);
100
+ }
101
+
102
+ const spawnedPromise = getSpawnedPromise(spawned);
103
+ const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);
104
+ const processDone = setExitHandler(spawned, parsed.options, timedPromise);
105
+
106
+ const context = {isCanceled: false};
107
+
108
+ spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));
109
+ spawned.cancel = spawnedCancel.bind(null, spawned, context);
110
+
111
+ const handlePromise = async () => {
112
+ const [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);
113
+ const stdout = handleOutput(parsed.options, stdoutResult);
114
+ const stderr = handleOutput(parsed.options, stderrResult);
115
+ const all = handleOutput(parsed.options, allResult);
116
+
117
+ if (error || exitCode !== 0 || signal !== null) {
118
+ const returnedError = makeError({
119
+ error,
120
+ exitCode,
121
+ signal,
122
+ stdout,
123
+ stderr,
124
+ all,
125
+ command,
126
+ escapedCommand,
127
+ parsed,
128
+ timedOut,
129
+ isCanceled: context.isCanceled,
130
+ killed: spawned.killed
131
+ });
132
+
133
+ if (!parsed.options.reject) {
134
+ return returnedError;
135
+ }
136
+
137
+ throw returnedError;
138
+ }
139
+
140
+ return {
141
+ command,
142
+ escapedCommand,
143
+ exitCode: 0,
144
+ stdout,
145
+ stderr,
146
+ all,
147
+ failed: false,
148
+ timedOut: false,
149
+ isCanceled: false,
150
+ killed: false
151
+ };
152
+ };
153
+
154
+ const handlePromiseOnce = onetime(handlePromise);
155
+
156
+ handleInput(spawned, parsed.options.input);
157
+
158
+ spawned.all = makeAllStream(spawned, parsed.options);
159
+
160
+ return mergePromise(spawned, handlePromiseOnce);
161
+ };
162
+
163
+ module.exports = execa;
164
+
165
+ module.exports.sync = (file, args, options) => {
166
+ const parsed = handleArguments(file, args, options);
167
+ const command = joinCommand(file, args);
168
+ const escapedCommand = getEscapedCommand(file, args);
169
+
170
+ validateInputSync(parsed.options);
171
+
172
+ let result;
173
+ try {
174
+ result = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);
175
+ } catch (error) {
176
+ throw makeError({
177
+ error,
178
+ stdout: '',
179
+ stderr: '',
180
+ all: '',
181
+ command,
182
+ escapedCommand,
183
+ parsed,
184
+ timedOut: false,
185
+ isCanceled: false,
186
+ killed: false
187
+ });
188
+ }
189
+
190
+ const stdout = handleOutput(parsed.options, result.stdout, result.error);
191
+ const stderr = handleOutput(parsed.options, result.stderr, result.error);
192
+
193
+ if (result.error || result.status !== 0 || result.signal !== null) {
194
+ const error = makeError({
195
+ stdout,
196
+ stderr,
197
+ error: result.error,
198
+ signal: result.signal,
199
+ exitCode: result.status,
200
+ command,
201
+ escapedCommand,
202
+ parsed,
203
+ timedOut: result.error && result.error.code === 'ETIMEDOUT',
204
+ isCanceled: false,
205
+ killed: result.signal !== null
206
+ });
207
+
208
+ if (!parsed.options.reject) {
209
+ return error;
210
+ }
211
+
212
+ throw error;
213
+ }
214
+
215
+ return {
216
+ command,
217
+ escapedCommand,
218
+ exitCode: 0,
219
+ stdout,
220
+ stderr,
221
+ failed: false,
222
+ timedOut: false,
223
+ isCanceled: false,
224
+ killed: false
225
+ };
226
+ };
227
+
228
+ module.exports.command = (command, options) => {
229
+ const [file, ...args] = parseCommand(command);
230
+ return execa(file, args, options);
231
+ };
232
+
233
+ module.exports.commandSync = (command, options) => {
234
+ const [file, ...args] = parseCommand(command);
235
+ return execa.sync(file, args, options);
236
+ };
237
+
238
+ module.exports.node = (scriptPath, args, options = {}) => {
239
+ if (args && !Array.isArray(args) && typeof args === 'object') {
240
+ options = args;
241
+ args = [];
242
+ }
243
+
244
+ const stdio = normalizeStdio.node(options);
245
+ const defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));
246
+
247
+ const {
248
+ nodePath = process.execPath,
249
+ nodeOptions = defaultExecArgv
250
+ } = options;
251
+
252
+ return execa(
253
+ nodePath,
254
+ [
255
+ ...nodeOptions,
256
+ scriptPath,
257
+ ...(Array.isArray(args) ? args : [])
258
+ ],
259
+ {
260
+ ...options,
261
+ stdin: undefined,
262
+ stdout: undefined,
263
+ stderr: undefined,
264
+ stdio,
265
+ shell: false
266
+ }
267
+ );
268
+ };
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+ const normalizeArgs = (file, args = []) => {
3
+ if (!Array.isArray(args)) {
4
+ return [file];
5
+ }
6
+
7
+ return [file, ...args];
8
+ };
9
+
10
+ const NO_ESCAPE_REGEXP = /^[\w.-]+$/;
11
+ const DOUBLE_QUOTES_REGEXP = /"/g;
12
+
13
+ const escapeArg = arg => {
14
+ if (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {
15
+ return arg;
16
+ }
17
+
18
+ return `"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\"')}"`;
19
+ };
20
+
21
+ const joinCommand = (file, args) => {
22
+ return normalizeArgs(file, args).join(' ');
23
+ };
24
+
25
+ const getEscapedCommand = (file, args) => {
26
+ return normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');
27
+ };
28
+
29
+ const SPACES_REGEXP = / +/g;
30
+
31
+ // Handle `execa.command()`
32
+ const parseCommand = command => {
33
+ const tokens = [];
34
+ for (const token of command.trim().split(SPACES_REGEXP)) {
35
+ // Allow spaces to be escaped by a backslash if not meant as a delimiter
36
+ const previousToken = tokens[tokens.length - 1];
37
+ if (previousToken && previousToken.endsWith('\\')) {
38
+ // Merge previous token with current one
39
+ tokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;
40
+ } else {
41
+ tokens.push(token);
42
+ }
43
+ }
44
+
45
+ return tokens;
46
+ };
47
+
48
+ module.exports = {
49
+ joinCommand,
50
+ getEscapedCommand,
51
+ parseCommand
52
+ };
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+ const {signalsByName} = require('human-signals');
3
+
4
+ const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {
5
+ if (timedOut) {
6
+ return `timed out after ${timeout} milliseconds`;
7
+ }
8
+
9
+ if (isCanceled) {
10
+ return 'was canceled';
11
+ }
12
+
13
+ if (errorCode !== undefined) {
14
+ return `failed with ${errorCode}`;
15
+ }
16
+
17
+ if (signal !== undefined) {
18
+ return `was killed with ${signal} (${signalDescription})`;
19
+ }
20
+
21
+ if (exitCode !== undefined) {
22
+ return `failed with exit code ${exitCode}`;
23
+ }
24
+
25
+ return 'failed';
26
+ };
27
+
28
+ const makeError = ({
29
+ stdout,
30
+ stderr,
31
+ all,
32
+ error,
33
+ signal,
34
+ exitCode,
35
+ command,
36
+ escapedCommand,
37
+ timedOut,
38
+ isCanceled,
39
+ killed,
40
+ parsed: {options: {timeout}}
41
+ }) => {
42
+ // `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.
43
+ // We normalize them to `undefined`
44
+ exitCode = exitCode === null ? undefined : exitCode;
45
+ signal = signal === null ? undefined : signal;
46
+ const signalDescription = signal === undefined ? undefined : signalsByName[signal].description;
47
+
48
+ const errorCode = error && error.code;
49
+
50
+ const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});
51
+ const execaMessage = `Command ${prefix}: ${command}`;
52
+ const isError = Object.prototype.toString.call(error) === '[object Error]';
53
+ const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage;
54
+ const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n');
55
+
56
+ if (isError) {
57
+ error.originalMessage = error.message;
58
+ error.message = message;
59
+ } else {
60
+ error = new Error(message);
61
+ }
62
+
63
+ error.shortMessage = shortMessage;
64
+ error.command = command;
65
+ error.escapedCommand = escapedCommand;
66
+ error.exitCode = exitCode;
67
+ error.signal = signal;
68
+ error.signalDescription = signalDescription;
69
+ error.stdout = stdout;
70
+ error.stderr = stderr;
71
+
72
+ if (all !== undefined) {
73
+ error.all = all;
74
+ }
75
+
76
+ if ('bufferedData' in error) {
77
+ delete error.bufferedData;
78
+ }
79
+
80
+ error.failed = true;
81
+ error.timedOut = Boolean(timedOut);
82
+ error.isCanceled = isCanceled;
83
+ error.killed = killed && !timedOut;
84
+
85
+ return error;
86
+ };
87
+
88
+ module.exports = makeError;
@@ -0,0 +1,115 @@
1
+ 'use strict';
2
+ const os = require('os');
3
+ const onExit = require('signal-exit');
4
+
5
+ const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;
6
+
7
+ // Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior
8
+ const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {
9
+ const killResult = kill(signal);
10
+ setKillTimeout(kill, signal, options, killResult);
11
+ return killResult;
12
+ };
13
+
14
+ const setKillTimeout = (kill, signal, options, killResult) => {
15
+ if (!shouldForceKill(signal, options, killResult)) {
16
+ return;
17
+ }
18
+
19
+ const timeout = getForceKillAfterTimeout(options);
20
+ const t = setTimeout(() => {
21
+ kill('SIGKILL');
22
+ }, timeout);
23
+
24
+ // Guarded because there's no `.unref()` when `execa` is used in the renderer
25
+ // process in Electron. This cannot be tested since we don't run tests in
26
+ // Electron.
27
+ // istanbul ignore else
28
+ if (t.unref) {
29
+ t.unref();
30
+ }
31
+ };
32
+
33
+ const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {
34
+ return isSigterm(signal) && forceKillAfterTimeout !== false && killResult;
35
+ };
36
+
37
+ const isSigterm = signal => {
38
+ return signal === os.constants.signals.SIGTERM ||
39
+ (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');
40
+ };
41
+
42
+ const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {
43
+ if (forceKillAfterTimeout === true) {
44
+ return DEFAULT_FORCE_KILL_TIMEOUT;
45
+ }
46
+
47
+ if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {
48
+ throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`);
49
+ }
50
+
51
+ return forceKillAfterTimeout;
52
+ };
53
+
54
+ // `childProcess.cancel()`
55
+ const spawnedCancel = (spawned, context) => {
56
+ const killResult = spawned.kill();
57
+
58
+ if (killResult) {
59
+ context.isCanceled = true;
60
+ }
61
+ };
62
+
63
+ const timeoutKill = (spawned, signal, reject) => {
64
+ spawned.kill(signal);
65
+ reject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));
66
+ };
67
+
68
+ // `timeout` option handling
69
+ const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {
70
+ if (timeout === 0 || timeout === undefined) {
71
+ return spawnedPromise;
72
+ }
73
+
74
+ let timeoutId;
75
+ const timeoutPromise = new Promise((resolve, reject) => {
76
+ timeoutId = setTimeout(() => {
77
+ timeoutKill(spawned, killSignal, reject);
78
+ }, timeout);
79
+ });
80
+
81
+ const safeSpawnedPromise = spawnedPromise.finally(() => {
82
+ clearTimeout(timeoutId);
83
+ });
84
+
85
+ return Promise.race([timeoutPromise, safeSpawnedPromise]);
86
+ };
87
+
88
+ const validateTimeout = ({timeout}) => {
89
+ if (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {
90
+ throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`);
91
+ }
92
+ };
93
+
94
+ // `cleanup` option handling
95
+ const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {
96
+ if (!cleanup || detached) {
97
+ return timedPromise;
98
+ }
99
+
100
+ const removeExitHandler = onExit(() => {
101
+ spawned.kill();
102
+ });
103
+
104
+ return timedPromise.finally(() => {
105
+ removeExitHandler();
106
+ });
107
+ };
108
+
109
+ module.exports = {
110
+ spawnedKill,
111
+ spawnedCancel,
112
+ setupTimeout,
113
+ validateTimeout,
114
+ setExitHandler
115
+ };
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ const nativePromisePrototype = (async () => {})().constructor.prototype;
4
+ const descriptors = ['then', 'catch', 'finally'].map(property => [
5
+ property,
6
+ Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property)
7
+ ]);
8
+
9
+ // The return value is a mixin of `childProcess` and `Promise`
10
+ const mergePromise = (spawned, promise) => {
11
+ for (const [property, descriptor] of descriptors) {
12
+ // Starting the main `promise` is deferred to avoid consuming streams
13
+ const value = typeof promise === 'function' ?
14
+ (...args) => Reflect.apply(descriptor.value, promise(), args) :
15
+ descriptor.value.bind(promise);
16
+
17
+ Reflect.defineProperty(spawned, property, {...descriptor, value});
18
+ }
19
+
20
+ return spawned;
21
+ };
22
+
23
+ // Use promises instead of `child_process` events
24
+ const getSpawnedPromise = spawned => {
25
+ return new Promise((resolve, reject) => {
26
+ spawned.on('exit', (exitCode, signal) => {
27
+ resolve({exitCode, signal});
28
+ });
29
+
30
+ spawned.on('error', error => {
31
+ reject(error);
32
+ });
33
+
34
+ if (spawned.stdin) {
35
+ spawned.stdin.on('error', error => {
36
+ reject(error);
37
+ });
38
+ }
39
+ });
40
+ };
41
+
42
+ module.exports = {
43
+ mergePromise,
44
+ getSpawnedPromise
45
+ };
46
+
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+ const aliases = ['stdin', 'stdout', 'stderr'];
3
+
4
+ const hasAlias = options => aliases.some(alias => options[alias] !== undefined);
5
+
6
+ const normalizeStdio = options => {
7
+ if (!options) {
8
+ return;
9
+ }
10
+
11
+ const {stdio} = options;
12
+
13
+ if (stdio === undefined) {
14
+ return aliases.map(alias => options[alias]);
15
+ }
16
+
17
+ if (hasAlias(options)) {
18
+ throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`);
19
+ }
20
+
21
+ if (typeof stdio === 'string') {
22
+ return stdio;
23
+ }
24
+
25
+ if (!Array.isArray(stdio)) {
26
+ throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
27
+ }
28
+
29
+ const length = Math.max(stdio.length, aliases.length);
30
+ return Array.from({length}, (value, index) => stdio[index]);
31
+ };
32
+
33
+ module.exports = normalizeStdio;
34
+
35
+ // `ipc` is pushed unless it is already present
36
+ module.exports.node = options => {
37
+ const stdio = normalizeStdio(options);
38
+
39
+ if (stdio === 'ipc') {
40
+ return 'ipc';
41
+ }
42
+
43
+ if (stdio === undefined || typeof stdio === 'string') {
44
+ return [stdio, stdio, stdio, 'ipc'];
45
+ }
46
+
47
+ if (stdio.includes('ipc')) {
48
+ return stdio;
49
+ }
50
+
51
+ return [...stdio, 'ipc'];
52
+ };
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+ const isStream = require('is-stream');
3
+ const getStream = require('get-stream');
4
+ const mergeStream = require('merge-stream');
5
+
6
+ // `input` option
7
+ const handleInput = (spawned, input) => {
8
+ // Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852
9
+ // @todo remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0
10
+ if (input === undefined || spawned.stdin === undefined) {
11
+ return;
12
+ }
13
+
14
+ if (isStream(input)) {
15
+ input.pipe(spawned.stdin);
16
+ } else {
17
+ spawned.stdin.end(input);
18
+ }
19
+ };
20
+
21
+ // `all` interleaves `stdout` and `stderr`
22
+ const makeAllStream = (spawned, {all}) => {
23
+ if (!all || (!spawned.stdout && !spawned.stderr)) {
24
+ return;
25
+ }
26
+
27
+ const mixed = mergeStream();
28
+
29
+ if (spawned.stdout) {
30
+ mixed.add(spawned.stdout);
31
+ }
32
+
33
+ if (spawned.stderr) {
34
+ mixed.add(spawned.stderr);
35
+ }
36
+
37
+ return mixed;
38
+ };
39
+
40
+ // On failure, `result.stdout|stderr|all` should contain the currently buffered stream
41
+ const getBufferedData = async (stream, streamPromise) => {
42
+ if (!stream) {
43
+ return;
44
+ }
45
+
46
+ stream.destroy();
47
+
48
+ try {
49
+ return await streamPromise;
50
+ } catch (error) {
51
+ return error.bufferedData;
52
+ }
53
+ };
54
+
55
+ const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {
56
+ if (!stream || !buffer) {
57
+ return;
58
+ }
59
+
60
+ if (encoding) {
61
+ return getStream(stream, {encoding, maxBuffer});
62
+ }
63
+
64
+ return getStream.buffer(stream, {maxBuffer});
65
+ };
66
+
67
+ // Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)
68
+ const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {
69
+ const stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});
70
+ const stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});
71
+ const allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});
72
+
73
+ try {
74
+ return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);
75
+ } catch (error) {
76
+ return Promise.all([
77
+ {error, signal: error.signal, timedOut: error.timedOut},
78
+ getBufferedData(stdout, stdoutPromise),
79
+ getBufferedData(stderr, stderrPromise),
80
+ getBufferedData(all, allPromise)
81
+ ]);
82
+ }
83
+ };
84
+
85
+ const validateInputSync = ({input}) => {
86
+ if (isStream(input)) {
87
+ throw new TypeError('The `input` option cannot be a stream in sync mode');
88
+ }
89
+ };
90
+
91
+ module.exports = {
92
+ handleInput,
93
+ makeAllStream,
94
+ getSpawnedResult,
95
+ validateInputSync
96
+ };
97
+