nativescript 8.9.0-dev.2 → 8.9.0-dev.4

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 (345) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/widget-ios.md +24 -0
  3. package/docs/man_pages/project/configuration/widget.md +24 -0
  4. package/docs/man_pages/start.md +1 -1
  5. package/lib/android-tools-info.js +11 -22
  6. package/lib/base-package-manager.js +53 -70
  7. package/lib/bun-package-manager.js +75 -98
  8. package/lib/color.js +4 -4
  9. package/lib/commands/add-platform.js +14 -30
  10. package/lib/commands/apple-login.js +18 -29
  11. package/lib/commands/appstore-list.js +34 -45
  12. package/lib/commands/appstore-upload.js +54 -67
  13. package/lib/commands/build.js +55 -87
  14. package/lib/commands/clean.js +169 -184
  15. package/lib/commands/command-base.js +14 -27
  16. package/lib/commands/config.js +49 -68
  17. package/lib/commands/create-project.js +215 -234
  18. package/lib/commands/debug.js +66 -88
  19. package/lib/commands/deploy.js +28 -44
  20. package/lib/commands/embedding/embed.js +37 -56
  21. package/lib/commands/extensibility/install-extension.js +5 -16
  22. package/lib/commands/extensibility/list-extensions.js +13 -24
  23. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  24. package/lib/commands/fonts.js +30 -41
  25. package/lib/commands/generate-assets.js +13 -28
  26. package/lib/commands/generate-help.js +2 -13
  27. package/lib/commands/generate.js +49 -60
  28. package/lib/commands/info.js +2 -13
  29. package/lib/commands/install.js +34 -49
  30. package/lib/commands/list-platforms.js +14 -25
  31. package/lib/commands/migrate.js +15 -26
  32. package/lib/commands/native-add.js +23 -46
  33. package/lib/commands/platform-clean.js +19 -32
  34. package/lib/commands/plugin/add-plugin.js +12 -25
  35. package/lib/commands/plugin/build-plugin.js +31 -44
  36. package/lib/commands/plugin/create-plugin.js +114 -137
  37. package/lib/commands/plugin/list-plugins.js +22 -33
  38. package/lib/commands/plugin/remove-plugin.js +21 -34
  39. package/lib/commands/plugin/update-plugin.js +20 -33
  40. package/lib/commands/post-install.js +25 -38
  41. package/lib/commands/prepare.js +19 -35
  42. package/lib/commands/preview.js +50 -63
  43. package/lib/commands/remove-platform.js +7 -18
  44. package/lib/commands/resources/resources-update.js +14 -27
  45. package/lib/commands/run.js +55 -76
  46. package/lib/commands/start.js +6 -19
  47. package/lib/commands/test-init.js +126 -137
  48. package/lib/commands/test.js +72 -95
  49. package/lib/commands/typings.js +126 -142
  50. package/lib/commands/update-platform.js +26 -39
  51. package/lib/commands/update.js +31 -44
  52. package/lib/commands/widget.js +408 -357
  53. package/lib/common/child-process.js +53 -72
  54. package/lib/common/codeGeneration/code-entity.js +1 -1
  55. package/lib/common/codeGeneration/code-printer.js +1 -1
  56. package/lib/common/command-params.js +7 -18
  57. package/lib/common/commands/analytics.js +29 -42
  58. package/lib/common/commands/autocompletion.js +41 -58
  59. package/lib/common/commands/device/device-log-stream.js +12 -23
  60. package/lib/common/commands/device/get-file.js +23 -34
  61. package/lib/common/commands/device/list-applications.js +12 -23
  62. package/lib/common/commands/device/list-devices.js +72 -87
  63. package/lib/common/commands/device/list-files.js +24 -35
  64. package/lib/common/commands/device/put-file.js +23 -34
  65. package/lib/common/commands/device/run-application.js +12 -25
  66. package/lib/common/commands/device/stop-application.js +11 -22
  67. package/lib/common/commands/device/uninstall-application.js +6 -17
  68. package/lib/common/commands/generate-messages.js +17 -28
  69. package/lib/common/commands/help.js +20 -33
  70. package/lib/common/commands/package-manager-get.js +6 -17
  71. package/lib/common/commands/package-manager-set.js +9 -20
  72. package/lib/common/commands/post-install.js +2 -13
  73. package/lib/common/commands/preuninstall.js +27 -42
  74. package/lib/common/commands/proxy/proxy-base.js +11 -22
  75. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  76. package/lib/common/commands/proxy/proxy-get.js +3 -14
  77. package/lib/common/commands/proxy/proxy-set.js +87 -100
  78. package/lib/common/constants.js +11 -11
  79. package/lib/common/decorators.js +10 -22
  80. package/lib/common/dispatchers.js +84 -101
  81. package/lib/common/errors.js +92 -107
  82. package/lib/common/file-system.js +110 -132
  83. package/lib/common/header.js +1 -2
  84. package/lib/common/helpers.js +149 -178
  85. package/lib/common/host-info.js +40 -53
  86. package/lib/common/http-client.js +104 -119
  87. package/lib/common/logger/appenders/cli-appender.js +1 -2
  88. package/lib/common/logger/appenders/emit-appender.js +1 -2
  89. package/lib/common/logger/layouts/cli-layout.js +1 -2
  90. package/lib/common/logger/logger.js +4 -4
  91. package/lib/common/mobile/android/android-application-manager.js +138 -159
  92. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  93. package/lib/common/mobile/android/android-debug-bridge.js +92 -117
  94. package/lib/common/mobile/android/android-device-file-system.js +101 -134
  95. package/lib/common/mobile/android/android-device-hash-service.js +52 -77
  96. package/lib/common/mobile/android/android-device.js +73 -90
  97. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  98. package/lib/common/mobile/android/android-log-filter.js +1 -1
  99. package/lib/common/mobile/android/android-virtual-device-service.js +78 -99
  100. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  101. package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
  102. package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
  103. package/lib/common/mobile/android/logcat-helper.js +114 -133
  104. package/lib/common/mobile/application-manager-base.js +89 -112
  105. package/lib/common/mobile/device-log-provider-base.js +7 -18
  106. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  107. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  108. package/lib/common/mobile/ios/device/ios-device-operations.js +106 -143
  109. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  110. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  111. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +66 -95
  112. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  113. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
  114. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
  115. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  116. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  117. package/lib/common/mobile/mobile-core/android-device-discovery.js +44 -63
  118. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
  119. package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
  120. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  121. package/lib/common/mobile/mobile-core/devices-service.js +400 -450
  122. package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
  123. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
  124. package/lib/common/mobile/mobile-helper.js +15 -26
  125. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  126. package/lib/common/opener.js +2 -2
  127. package/lib/common/prompter.js +91 -106
  128. package/lib/common/queue.js +9 -20
  129. package/lib/common/services/auto-completion-service.js +40 -53
  130. package/lib/common/services/cancellation.js +17 -28
  131. package/lib/common/services/commands-service.js +156 -179
  132. package/lib/common/services/help-service.js +130 -155
  133. package/lib/common/services/hooks-service.js +99 -114
  134. package/lib/common/services/ios-notification-service.js +21 -34
  135. package/lib/common/services/json-file-settings-service.js +56 -75
  136. package/lib/common/services/lock-service.js +35 -52
  137. package/lib/common/services/message-contract-generator.js +35 -46
  138. package/lib/common/services/micro-templating-service.js +6 -17
  139. package/lib/common/services/net-service.js +92 -109
  140. package/lib/common/services/project-files-manager.js +10 -23
  141. package/lib/common/services/proxy-service.js +13 -24
  142. package/lib/common/services/qr.js +13 -24
  143. package/lib/common/services/settings-service.js +1 -1
  144. package/lib/common/services/xcode-select-service.js +20 -35
  145. package/lib/common/utils.js +2 -2
  146. package/lib/common/validators/project-name-validator.js +1 -1
  147. package/lib/common/validators/validation-result.js +1 -1
  148. package/lib/common/verify-node-version.js +2 -3
  149. package/lib/common/yok.js +25 -38
  150. package/lib/config.js +41 -56
  151. package/lib/constants.js +24 -24
  152. package/lib/controllers/build-controller.js +82 -99
  153. package/lib/controllers/debug-controller.js +111 -132
  154. package/lib/controllers/deploy-controller.js +15 -23
  155. package/lib/controllers/migrate-controller.js +780 -853
  156. package/lib/controllers/platform-controller.js +74 -89
  157. package/lib/controllers/prepare-controller.js +241 -270
  158. package/lib/controllers/run-controller.js +411 -425
  159. package/lib/controllers/update-controller-base.js +16 -29
  160. package/lib/controllers/update-controller.js +101 -126
  161. package/lib/data/prepare-data.js +4 -1
  162. package/lib/definitions/project.d.ts +24 -24
  163. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  164. package/lib/detached-processes/cleanup-process.js +16 -25
  165. package/lib/device-path-provider.js +23 -34
  166. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +155 -170
  167. package/lib/device-sockets/ios/notification.js +1 -1
  168. package/lib/device-sockets/ios/socket-request-executor.js +26 -41
  169. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  170. package/lib/helpers/deploy-command-helper.js +44 -49
  171. package/lib/helpers/key-command-helper.js +4 -13
  172. package/lib/helpers/livesync-command-helper.js +138 -153
  173. package/lib/helpers/network-connectivity-validator.js +6 -17
  174. package/lib/helpers/options-track-helper.js +6 -17
  175. package/lib/helpers/platform-command-helper.js +103 -124
  176. package/lib/key-commands/index.js +150 -200
  177. package/lib/nativescript-cli.js +5 -14
  178. package/lib/node-package-manager.js +90 -113
  179. package/lib/options.js +4 -13
  180. package/lib/package-installation-manager.js +132 -167
  181. package/lib/package-manager.js +64 -87
  182. package/lib/platform-command-param.js +4 -15
  183. package/lib/pnpm-package-manager.js +60 -79
  184. package/lib/project-data.js +1 -1
  185. package/lib/providers/project-files-provider.js +1 -1
  186. package/lib/services/analytics/analytics-broker-process.js +13 -22
  187. package/lib/services/analytics/analytics-broker.js +17 -30
  188. package/lib/services/analytics/analytics-service.js +165 -201
  189. package/lib/services/analytics/google-analytics-provider.js +41 -56
  190. package/lib/services/analytics-settings-service.js +15 -32
  191. package/lib/services/android/android-bundle-tool-service.js +43 -60
  192. package/lib/services/android/gradle-build-args-service.js +10 -21
  193. package/lib/services/android/gradle-build-service.js +22 -35
  194. package/lib/services/android/gradle-command-service.js +22 -35
  195. package/lib/services/android-device-debug-service.js +92 -119
  196. package/lib/services/android-plugin-build-service.js +219 -245
  197. package/lib/services/android-project-service.js +134 -179
  198. package/lib/services/android-resources-migration-service.js +57 -70
  199. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  200. package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
  201. package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
  202. package/lib/services/assets-generation/assets-generation-service.js +114 -128
  203. package/lib/services/build-artifacts-service.js +9 -20
  204. package/lib/services/build-info-file-service.js +20 -35
  205. package/lib/services/cleanup-service.js +47 -76
  206. package/lib/services/cocoapods-service.js +124 -145
  207. package/lib/services/device/device-install-app-service.js +54 -71
  208. package/lib/services/doctor-service.js +106 -125
  209. package/lib/services/extensibility-service.js +87 -106
  210. package/lib/services/files-hash-service.js +26 -43
  211. package/lib/services/hmr-status-service.js +1 -1
  212. package/lib/services/initialize-service.js +38 -51
  213. package/lib/services/ios/export-options-plist-service.js +41 -54
  214. package/lib/services/ios/ios-signing-service.js +171 -190
  215. package/lib/services/ios/spm-service.js +52 -65
  216. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  217. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  218. package/lib/services/ios/xcodebuild-service.js +52 -71
  219. package/lib/services/ios-debugger-port-service.js +24 -37
  220. package/lib/services/ios-device-debug-service.js +75 -102
  221. package/lib/services/ios-entitlements-service.js +31 -42
  222. package/lib/services/ios-extensions-service.js +18 -29
  223. package/lib/services/ios-project-service.js +530 -591
  224. package/lib/services/ios-provision-service.js +110 -131
  225. package/lib/services/ios-watch-app-service.js +21 -32
  226. package/lib/services/ip-service.js +39 -54
  227. package/lib/services/itmstransporter-service.js +129 -152
  228. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  229. package/lib/services/livesync/android-device-livesync-service.js +121 -150
  230. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
  231. package/lib/services/livesync/android-livesync-service.js +14 -35
  232. package/lib/services/livesync/android-livesync-tool.js +90 -113
  233. package/lib/services/livesync/device-livesync-service-base.js +16 -29
  234. package/lib/services/livesync/ios-device-livesync-service.js +120 -149
  235. package/lib/services/livesync/ios-livesync-service.js +43 -59
  236. package/lib/services/livesync/platform-livesync-service-base.js +98 -123
  237. package/lib/services/log-parser-service.js +1 -1
  238. package/lib/services/log-source-map-service.js +31 -42
  239. package/lib/services/marking-mode-service.js +17 -30
  240. package/lib/services/npm-config-service.js +1 -1
  241. package/lib/services/pacote-service.js +54 -69
  242. package/lib/services/performance-service.js +1 -1
  243. package/lib/services/platform/add-platform-service.js +57 -78
  244. package/lib/services/platform/platform-validation-service.js +22 -33
  245. package/lib/services/platform/prepare-native-platform-service.js +51 -64
  246. package/lib/services/platform-environment-requirements.js +27 -38
  247. package/lib/services/plugins-service.js +126 -151
  248. package/lib/services/project-backup-service.js +1 -1
  249. package/lib/services/project-changes-service.js +126 -143
  250. package/lib/services/project-cleanup-service.js +65 -78
  251. package/lib/services/project-config-service.js +78 -88
  252. package/lib/services/project-data-service.js +112 -129
  253. package/lib/services/project-name-service.js +28 -43
  254. package/lib/services/project-service.js +90 -109
  255. package/lib/services/project-templates-service.js +52 -67
  256. package/lib/services/start-service.js +41 -59
  257. package/lib/services/temp-service.js +8 -21
  258. package/lib/services/terminal-spinner-service.js +15 -26
  259. package/lib/services/test-execution-service.js +64 -77
  260. package/lib/services/test-initialization-service.js +2 -2
  261. package/lib/services/timeline-profiler-service.js +1 -1
  262. package/lib/services/versions-service.js +120 -139
  263. package/lib/services/webpack/webpack-compiler-service.js +228 -251
  264. package/lib/services/xcconfig-service.js +8 -19
  265. package/lib/sys-info.js +45 -62
  266. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  267. package/lib/yarn-package-manager.js +59 -78
  268. package/lib/yarn2-package-manager.js +62 -81
  269. package/package.json +67 -82
  270. package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
  271. package/node_modules/@npmcli/move-file/README.md +0 -69
  272. package/node_modules/@npmcli/move-file/lib/index.js +0 -185
  273. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
  274. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
  275. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
  276. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
  277. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  278. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  279. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
  280. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
  281. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
  282. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
  283. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
  284. package/node_modules/@npmcli/move-file/package.json +0 -47
  285. package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  286. package/node_modules/balanced-match/LICENSE.md +0 -21
  287. package/node_modules/balanced-match/README.md +0 -97
  288. package/node_modules/balanced-match/index.js +0 -62
  289. package/node_modules/balanced-match/package.json +0 -48
  290. package/node_modules/concat-map/.travis.yml +0 -4
  291. package/node_modules/concat-map/LICENSE +0 -18
  292. package/node_modules/concat-map/README.markdown +0 -62
  293. package/node_modules/concat-map/example/map.js +0 -6
  294. package/node_modules/concat-map/index.js +0 -13
  295. package/node_modules/concat-map/package.json +0 -43
  296. package/node_modules/concat-map/test/map.js +0 -39
  297. package/node_modules/fs.realpath/LICENSE +0 -43
  298. package/node_modules/fs.realpath/README.md +0 -33
  299. package/node_modules/fs.realpath/index.js +0 -66
  300. package/node_modules/fs.realpath/old.js +0 -303
  301. package/node_modules/fs.realpath/package.json +0 -26
  302. package/node_modules/inflight/LICENSE +0 -15
  303. package/node_modules/inflight/README.md +0 -37
  304. package/node_modules/inflight/inflight.js +0 -54
  305. package/node_modules/inflight/package.json +0 -29
  306. package/node_modules/inherits/LICENSE +0 -16
  307. package/node_modules/inherits/README.md +0 -42
  308. package/node_modules/inherits/inherits.js +0 -9
  309. package/node_modules/inherits/inherits_browser.js +0 -27
  310. package/node_modules/inherits/package.json +0 -29
  311. package/node_modules/once/LICENSE +0 -15
  312. package/node_modules/once/README.md +0 -79
  313. package/node_modules/once/once.js +0 -42
  314. package/node_modules/once/package.json +0 -33
  315. package/node_modules/path-is-absolute/index.js +0 -20
  316. package/node_modules/path-is-absolute/license +0 -21
  317. package/node_modules/path-is-absolute/package.json +0 -43
  318. package/node_modules/path-is-absolute/readme.md +0 -59
  319. package/node_modules/rimraf/LICENSE +0 -15
  320. package/node_modules/rimraf/README.md +0 -101
  321. package/node_modules/rimraf/bin.js +0 -68
  322. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
  323. package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
  324. package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
  325. package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
  326. package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
  327. package/node_modules/rimraf/node_modules/glob/README.md +0 -378
  328. package/node_modules/rimraf/node_modules/glob/common.js +0 -238
  329. package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
  330. package/node_modules/rimraf/node_modules/glob/package.json +0 -55
  331. package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
  332. package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
  333. package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
  334. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
  335. package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
  336. package/node_modules/rimraf/package.json +0 -32
  337. package/node_modules/rimraf/rimraf.js +0 -360
  338. package/node_modules/stringify-package/LICENSE +0 -13
  339. package/node_modules/stringify-package/README.md +0 -55
  340. package/node_modules/stringify-package/index.js +0 -18
  341. package/node_modules/stringify-package/package.json +0 -38
  342. package/node_modules/wrappy/LICENSE +0 -15
  343. package/node_modules/wrappy/README.md +0 -36
  344. package/node_modules/wrappy/package.json +0 -29
  345. package/node_modules/wrappy/wrappy.js +0 -33
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.HelpService = void 0;
13
4
  const path = require("path");
@@ -44,155 +35,141 @@ class HelpService {
44
35
  this.pathToHtmlPages = this.$staticConfig.HTML_PAGES_DIR;
45
36
  this.pathToManPages = this.$staticConfig.MAN_PAGES_DIR;
46
37
  }
47
- openHelpForCommandInBrowser(commandData) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- const { commandName } = commandData;
50
- const htmlPage = (yield this.convertCommandNameToFileName(commandData)) +
51
- HelpService.HTML_FILE_EXTENSION;
52
- this.$logger.trace("Opening help for command '%s'. FileName is '%s'.", commandName, htmlPage);
53
- this.$fs.ensureDirectoryExists(this.pathToHtmlPages);
38
+ async openHelpForCommandInBrowser(commandData) {
39
+ const { commandName } = commandData;
40
+ const htmlPage = (await this.convertCommandNameToFileName(commandData)) +
41
+ HelpService.HTML_FILE_EXTENSION;
42
+ this.$logger.trace("Opening help for command '%s'. FileName is '%s'.", commandName, htmlPage);
43
+ this.$fs.ensureDirectoryExists(this.pathToHtmlPages);
44
+ if (!this.tryOpeningSelectedPage(htmlPage)) {
45
+ // HTML pages may have been skipped on post-install, lets generate them.
46
+ this.$logger.trace("Required HTML file '%s' is missing. Let's try generating HTML files and see if we'll find it.", htmlPage);
47
+ await this.generateHtmlPages();
54
48
  if (!this.tryOpeningSelectedPage(htmlPage)) {
55
- // HTML pages may have been skipped on post-install, lets generate them.
56
- this.$logger.trace("Required HTML file '%s' is missing. Let's try generating HTML files and see if we'll find it.", htmlPage);
57
- yield this.generateHtmlPages();
58
- if (!this.tryOpeningSelectedPage(htmlPage)) {
59
- this.$errors.fail("Unable to find help for '%s'", commandName);
60
- }
49
+ this.$errors.fail("Unable to find help for '%s'", commandName);
61
50
  }
62
- });
51
+ }
63
52
  }
64
- generateHtmlPages() {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- const mdFiles = this.$fs.enumerateFilesInDirectorySync(this.pathToManPages);
67
- const basicHtmlPage = this.$fs.readText(this.pathToBasicPage);
68
- yield Promise.all(_.map(mdFiles, (markdownFile) => {
69
- const htmlPageGenerationData = {
70
- basicHtmlPage,
71
- pathToMdFile: markdownFile,
72
- pathToMdPages: this.pathToManPages,
73
- pathToHtmlPages: this.pathToHtmlPages,
74
- };
75
- return this.createHtmlPage(htmlPageGenerationData);
76
- }));
77
- const installedExtensionsData = this.$extensibilityService.getInstalledExtensionsData();
78
- const basicHtmlPageForExtensions = this.$fs.readText(this.pathToBasicPageForExtensions);
79
- for (const extensionData of installedExtensionsData) {
80
- const docsDir = extensionData.docs;
81
- if (docsDir) {
82
- this.$logger.trace(`Start generation of html help content for extension ${extensionData.extensionName}`);
83
- if (!this.$fs.exists(docsDir)) {
84
- this.$logger.warn(`Unable to generate html help pages for extension ${extensionData.extensionName} as the docs directory ${docsDir} does not exist.`);
85
- continue;
86
- }
87
- const htmlDirFullPath = HelpService.getHtmlDirFullPath(docsDir);
88
- this.$fs.ensureDirectoryExists(htmlDirFullPath);
89
- const extensionMdFiles = this.$fs.enumerateFilesInDirectorySync(docsDir);
90
- try {
91
- yield Promise.all(_.map(extensionMdFiles, (markdownFile) => {
92
- const htmlPageGenerationData = {
93
- basicHtmlPage: basicHtmlPageForExtensions,
94
- pathToMdFile: markdownFile,
95
- pathToMdPages: docsDir,
96
- pathToHtmlPages: htmlDirFullPath,
97
- extensionName: extensionData.extensionName,
98
- };
99
- return this.createHtmlPage(htmlPageGenerationData);
100
- }));
101
- }
102
- catch (err) {
103
- this.$logger.warn(`Unable to generate html help for extension ${extensionData.extensionName}. Error is: ${err.message}`);
104
- }
105
- this.$logger.trace(`Finished generation of html help content for extension ${extensionData.extensionName}`);
53
+ async generateHtmlPages() {
54
+ const mdFiles = this.$fs.enumerateFilesInDirectorySync(this.pathToManPages);
55
+ const basicHtmlPage = this.$fs.readText(this.pathToBasicPage);
56
+ await Promise.all(_.map(mdFiles, (markdownFile) => {
57
+ const htmlPageGenerationData = {
58
+ basicHtmlPage,
59
+ pathToMdFile: markdownFile,
60
+ pathToMdPages: this.pathToManPages,
61
+ pathToHtmlPages: this.pathToHtmlPages,
62
+ };
63
+ return this.createHtmlPage(htmlPageGenerationData);
64
+ }));
65
+ const installedExtensionsData = this.$extensibilityService.getInstalledExtensionsData();
66
+ const basicHtmlPageForExtensions = this.$fs.readText(this.pathToBasicPageForExtensions);
67
+ for (const extensionData of installedExtensionsData) {
68
+ const docsDir = extensionData.docs;
69
+ if (docsDir) {
70
+ this.$logger.trace(`Start generation of html help content for extension ${extensionData.extensionName}`);
71
+ if (!this.$fs.exists(docsDir)) {
72
+ this.$logger.warn(`Unable to generate html help pages for extension ${extensionData.extensionName} as the docs directory ${docsDir} does not exist.`);
73
+ continue;
106
74
  }
75
+ const htmlDirFullPath = HelpService.getHtmlDirFullPath(docsDir);
76
+ this.$fs.ensureDirectoryExists(htmlDirFullPath);
77
+ const extensionMdFiles = this.$fs.enumerateFilesInDirectorySync(docsDir);
78
+ try {
79
+ await Promise.all(_.map(extensionMdFiles, (markdownFile) => {
80
+ const htmlPageGenerationData = {
81
+ basicHtmlPage: basicHtmlPageForExtensions,
82
+ pathToMdFile: markdownFile,
83
+ pathToMdPages: docsDir,
84
+ pathToHtmlPages: htmlDirFullPath,
85
+ extensionName: extensionData.extensionName,
86
+ };
87
+ return this.createHtmlPage(htmlPageGenerationData);
88
+ }));
89
+ }
90
+ catch (err) {
91
+ this.$logger.warn(`Unable to generate html help for extension ${extensionData.extensionName}. Error is: ${err.message}`);
92
+ }
93
+ this.$logger.trace(`Finished generation of html help content for extension ${extensionData.extensionName}`);
107
94
  }
108
- this.$logger.trace("Finished generating HTML files.");
109
- });
95
+ }
96
+ this.$logger.trace("Finished generating HTML files.");
110
97
  }
111
- showCommandLineHelp(commandData) {
112
- return __awaiter(this, void 0, void 0, function* () {
113
- const help = yield this.getCommandLineHelpForCommand(commandData);
114
- this.$logger.printMarkdown(help);
115
- });
98
+ async showCommandLineHelp(commandData) {
99
+ const help = await this.getCommandLineHelpForCommand(commandData);
100
+ this.$logger.printMarkdown(help);
116
101
  }
117
102
  /**
118
103
  * Gets the help content for a specific command that should be shown on the terminal.
119
104
  * @param {string} commandName Name of the command for which to read the help.
120
105
  * @returns {Promise<string>} Help content of the command parsed with all terminal rules applied (stripped content that should be shown only for html help).
121
106
  */
122
- getCommandLineHelpForCommand(commandData) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const helpText = yield this.readMdFileForCommand(commandData);
125
- const commandLineHelp = (yield this.$microTemplateService.parseContent(helpText, { isHtml: false }))
126
- .replace(/&nbsp;/g, " ")
127
- .replace(HelpService.MARKDOWN_LINK_REGEX, "$1")
128
- .replace(HelpService.SPAN_REGEX, (matchingSubstring, textBeforeSpan, textInsideSpan, index, fullString) => {
129
- return textBeforeSpan + textInsideSpan.replace(this.newLineRegex, "");
130
- })
131
- .replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
132
- return commandLineHelp;
133
- });
107
+ async getCommandLineHelpForCommand(commandData) {
108
+ const helpText = await this.readMdFileForCommand(commandData);
109
+ const commandLineHelp = (await this.$microTemplateService.parseContent(helpText, { isHtml: false }))
110
+ .replace(/&nbsp;/g, " ")
111
+ .replace(HelpService.MARKDOWN_LINK_REGEX, "$1")
112
+ .replace(HelpService.SPAN_REGEX, (matchingSubstring, textBeforeSpan, textInsideSpan, index, fullString) => {
113
+ return textBeforeSpan + textInsideSpan.replace(this.newLineRegex, "");
114
+ })
115
+ .replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
116
+ return commandLineHelp;
134
117
  }
135
118
  // This method should return Promise in order to generate all html pages simultaneously.
136
- createHtmlPage(htmlPageGenerationData) {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
139
- const mdFileName = path.basename(pathToMdFile);
140
- const htmlFileName = mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, HelpService.HTML_FILE_EXTENSION);
141
- this.$logger.trace("Generating '%s' help topic.", htmlFileName);
142
- const helpText = this.$fs.readText(pathToMdFile);
143
- const outputText = yield this.$microTemplateService.parseContent(helpText, {
144
- isHtml: true,
145
- });
146
- const htmlText = (0, marked_1.marked)(outputText);
147
- const filePath = pathToMdFile
148
- .replace(path.basename(pathToMdPages), path.basename(pathToHtmlPages))
149
- .replace(mdFileName, htmlFileName);
150
- this.$logger.trace("HTML file path for '%s' man page is: '%s'.", mdFileName, filePath);
151
- let outputHtml = basicHtmlPage
152
- .replace(HelpService.MAN_PAGE_NAME_REGEX, mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, ""))
153
- .replace(HelpService.HTML_COMMAND_HELP_REGEX, htmlText)
154
- .replace(HelpService.RELATIVE_PATH_TO_STYLES_CSS_REGEX, path.relative(path.dirname(filePath), this.pathToStylesCss))
155
- .replace(HelpService.RELATIVE_PATH_TO_IMAGES_REGEX, path.relative(path.dirname(filePath), this.pathToImages))
156
- .replace(HelpService.RELATIVE_PATH_TO_INDEX_REGEX, path.relative(path.dirname(filePath), this.pathToIndexHtml));
157
- if (extensionName) {
158
- outputHtml = outputHtml.replace(HelpService.EXTENSION_NAME_REGEX, extensionName);
159
- }
160
- this.$fs.writeFile(filePath, outputHtml);
161
- this.$logger.trace("Finished writing file '%s'.", filePath);
162
- });
163
- }
164
- convertCommandNameToFileName(commandData) {
165
- return __awaiter(this, void 0, void 0, function* () {
166
- let { commandName } = commandData;
167
- const defaultCommandMatch = commandName && commandName.match(/([\w-]+?)\|\*/);
168
- if (defaultCommandMatch) {
169
- this.$logger.trace("Default command found. Replace current command name '%s' with '%s'.", commandName, defaultCommandMatch[1]);
170
- commandName = defaultCommandMatch[1];
171
- }
172
- const availableCommands = this.$injector
173
- .getRegisteredCommandsNames(true)
174
- .sort();
175
- this.$logger.trace("List of registered commands: %s", availableCommands.join(", "));
176
- if (commandName && !_.includes(availableCommands, commandName)) {
177
- yield this.throwMissingCommandError(commandData);
178
- }
179
- return (commandName && commandName.replace(/\|/g, "-")) || "start";
180
- });
181
- }
182
- throwMissingCommandError(commandData) {
183
- return __awaiter(this, void 0, void 0, function* () {
184
- const commandName = commandData.commandName;
185
- const commandInfo = {
186
- inputStrings: [commandName, ...commandData.commandArguments],
187
- commandDelimiter: "|" /* CommandsDelimiters.HierarchicalCommand */,
188
- defaultCommandDelimiter: "|*" /* CommandsDelimiters.DefaultHierarchicalCommand */,
189
- };
190
- const extensionData = yield this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
191
- if (extensionData) {
192
- this.$errors.fail(extensionData.installationMessage);
193
- }
194
- this.$errors.fail("Unknown command '%s'. Try '$ %s help' for a full list of supported commands.", commandName, this.$staticConfig.CLIENT_NAME.toLowerCase());
119
+ async createHtmlPage(htmlPageGenerationData) {
120
+ const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
121
+ const mdFileName = path.basename(pathToMdFile);
122
+ const htmlFileName = mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, HelpService.HTML_FILE_EXTENSION);
123
+ this.$logger.trace("Generating '%s' help topic.", htmlFileName);
124
+ const helpText = this.$fs.readText(pathToMdFile);
125
+ const outputText = await this.$microTemplateService.parseContent(helpText, {
126
+ isHtml: true,
195
127
  });
128
+ const htmlText = await (0, marked_1.marked)(outputText);
129
+ const filePath = pathToMdFile
130
+ .replace(path.basename(pathToMdPages), path.basename(pathToHtmlPages))
131
+ .replace(mdFileName, htmlFileName);
132
+ this.$logger.trace("HTML file path for '%s' man page is: '%s'.", mdFileName, filePath);
133
+ let outputHtml = basicHtmlPage
134
+ .replace(HelpService.MAN_PAGE_NAME_REGEX, mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, ""))
135
+ .replace(HelpService.HTML_COMMAND_HELP_REGEX, htmlText)
136
+ .replace(HelpService.RELATIVE_PATH_TO_STYLES_CSS_REGEX, path.relative(path.dirname(filePath), this.pathToStylesCss))
137
+ .replace(HelpService.RELATIVE_PATH_TO_IMAGES_REGEX, path.relative(path.dirname(filePath), this.pathToImages))
138
+ .replace(HelpService.RELATIVE_PATH_TO_INDEX_REGEX, path.relative(path.dirname(filePath), this.pathToIndexHtml));
139
+ if (extensionName) {
140
+ outputHtml = outputHtml.replace(HelpService.EXTENSION_NAME_REGEX, extensionName);
141
+ }
142
+ this.$fs.writeFile(filePath, outputHtml);
143
+ this.$logger.trace("Finished writing file '%s'.", filePath);
144
+ }
145
+ async convertCommandNameToFileName(commandData) {
146
+ let { commandName } = commandData;
147
+ const defaultCommandMatch = commandName && commandName.match(/([\w-]+?)\|\*/);
148
+ if (defaultCommandMatch) {
149
+ this.$logger.trace("Default command found. Replace current command name '%s' with '%s'.", commandName, defaultCommandMatch[1]);
150
+ commandName = defaultCommandMatch[1];
151
+ }
152
+ const availableCommands = this.$injector
153
+ .getRegisteredCommandsNames(true)
154
+ .sort();
155
+ this.$logger.trace("List of registered commands: %s", availableCommands.join(", "));
156
+ if (commandName && !_.includes(availableCommands, commandName)) {
157
+ await this.throwMissingCommandError(commandData);
158
+ }
159
+ return (commandName && commandName.replace(/\|/g, "-")) || "start";
160
+ }
161
+ async throwMissingCommandError(commandData) {
162
+ const commandName = commandData.commandName;
163
+ const commandInfo = {
164
+ inputStrings: [commandName, ...commandData.commandArguments],
165
+ commandDelimiter: "|" /* CommandsDelimiters.HierarchicalCommand */,
166
+ defaultCommandDelimiter: "|*" /* CommandsDelimiters.DefaultHierarchicalCommand */,
167
+ };
168
+ const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
169
+ if (extensionData) {
170
+ this.$errors.fail(extensionData.installationMessage);
171
+ }
172
+ this.$errors.fail("Unknown command '%s'. Try '$ %s help' for a full list of supported commands.", commandName, this.$staticConfig.CLIENT_NAME.toLowerCase());
196
173
  }
197
174
  static getHtmlDirFullPath(docsDir) {
198
175
  return path.join(path.dirname(docsDir), "html");
@@ -231,19 +208,18 @@ class HelpService {
231
208
  this.$logger.trace("Unable to find file: '%s'", htmlPage);
232
209
  return false;
233
210
  }
234
- readMdFileForCommand(commandData) {
235
- return __awaiter(this, void 0, void 0, function* () {
236
- const mdFileName = (yield this.convertCommandNameToFileName(commandData)) +
237
- HelpService.MARKDOWN_FILE_EXTENSION;
238
- this.$logger.trace("Reading help for command '%s'. FileName is '%s'.", commandData.commandName, mdFileName);
239
- const markdownFile = this.getHelpFile(mdFileName, this.pathToManPages);
240
- if (markdownFile) {
241
- return this.$fs.readText(markdownFile);
242
- }
243
- yield this.throwMissingCommandError(commandData);
244
- });
211
+ async readMdFileForCommand(commandData) {
212
+ const mdFileName = (await this.convertCommandNameToFileName(commandData)) +
213
+ HelpService.MARKDOWN_FILE_EXTENSION;
214
+ this.$logger.trace("Reading help for command '%s'. FileName is '%s'.", commandData.commandName, mdFileName);
215
+ const markdownFile = this.getHelpFile(mdFileName, this.pathToManPages);
216
+ if (markdownFile) {
217
+ return this.$fs.readText(markdownFile);
218
+ }
219
+ await this.throwMissingCommandError(commandData);
245
220
  }
246
221
  }
222
+ exports.HelpService = HelpService;
247
223
  HelpService.MARKDOWN_FILE_EXTENSION = ".md";
248
224
  HelpService.HTML_FILE_EXTENSION = ".html";
249
225
  HelpService.MAN_PAGE_NAME_REGEX = /@MAN_PAGE_NAME@/g;
@@ -255,6 +231,5 @@ HelpService.EXTENSION_NAME_REGEX = /@EXTENSION_NAME@/g;
255
231
  HelpService.MARKDOWN_LINK_REGEX = /\[([\w \-\`\<\>\*\:\\]+?)\]\([\s\S]+?\)/g;
256
232
  HelpService.SPAN_REGEX = /([\s\S]*?)(?:\r?\n)?<span.*?>([\s\S]*?)<\/span>(?:\r?\n)*/g;
257
233
  HelpService.NEW_LINE_REGEX = /<\/?\s*?br\s*?\/?>/g; // <br>, <br > <br/> <br />
258
- exports.HelpService = HelpService;
259
234
  yok_1.injector.register("helpService", HelpService);
260
235
  //# sourceMappingURL=help-service.js.map
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  Object.defineProperty(exports, "__esModule", { value: true });
18
9
  exports.HooksService = void 0;
19
10
  const path = require("path");
@@ -74,123 +65,117 @@ class HooksService {
74
65
  const traceMessage = `AfterHookName for command ${commandName} is ${afterHookName}`;
75
66
  return this.executeHooks(afterHookName, traceMessage, hookArguments);
76
67
  }
77
- executeHooks(hookName, traceMessage, hookArguments) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- if (this.$config.DISABLE_HOOKS || !this.$options.hooks) {
80
- return;
68
+ async executeHooks(hookName, traceMessage, hookArguments) {
69
+ if (this.$config.DISABLE_HOOKS || !this.$options.hooks) {
70
+ return;
71
+ }
72
+ const hookArgs = hookArguments && hookArguments[this.hookArgsName];
73
+ let projectDir = hookArgs && hookArgs.projectDir;
74
+ if (!projectDir && hookArgs) {
75
+ const candidate = (0, helpers_1.getValueFromNestedObject)(hookArgs, "projectDir");
76
+ projectDir = candidate && candidate.projectDir;
77
+ }
78
+ this.$logger.trace(`Project dir from hooksArgs is: ${projectDir}.`);
79
+ this.initialize(projectDir);
80
+ this.$logger.trace(traceMessage);
81
+ const results = [];
82
+ try {
83
+ for (const hooksDirectory of this.hooksDirectories) {
84
+ results.push(await this.executeHooksInDirectory(hooksDirectory, hookName, hookArguments));
81
85
  }
82
- const hookArgs = hookArguments && hookArguments[this.hookArgsName];
83
- let projectDir = hookArgs && hookArgs.projectDir;
84
- if (!projectDir && hookArgs) {
85
- const candidate = (0, helpers_1.getValueFromNestedObject)(hookArgs, "projectDir");
86
- projectDir = candidate && candidate.projectDir;
86
+ const customHooks = this.getCustomHooksByName(hookName);
87
+ for (const hook of customHooks) {
88
+ results.push(await this.executeHook(this.$projectHelper.projectDir, hookName, hook, hookArguments));
87
89
  }
88
- this.$logger.trace(`Project dir from hooksArgs is: ${projectDir}.`);
89
- this.initialize(projectDir);
90
- this.$logger.trace(traceMessage);
91
- const results = [];
92
- try {
93
- for (const hooksDirectory of this.hooksDirectories) {
94
- results.push(yield this.executeHooksInDirectory(hooksDirectory, hookName, hookArguments));
95
- }
96
- const customHooks = this.getCustomHooksByName(hookName);
97
- for (const hook of customHooks) {
98
- results.push(yield this.executeHook(this.$projectHelper.projectDir, hookName, hook, hookArguments));
99
- }
90
+ }
91
+ catch (err) {
92
+ this.$logger.trace(`Failed during hook execution ${hookName}.`);
93
+ this.$errors.fail(err.message || err);
94
+ }
95
+ return _.flatten(results);
96
+ }
97
+ async executeHook(directoryPath, hookName, hook, hookArguments) {
98
+ hookArguments = hookArguments || {};
99
+ let result;
100
+ const relativePath = path.relative(directoryPath, hook.fullPath);
101
+ const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
102
+ let command = this.getSheBangInterpreter(hook);
103
+ let inProc = false;
104
+ if (!command) {
105
+ command = hook.fullPath;
106
+ if (path.extname(hook.fullPath).toLowerCase() === ".js") {
107
+ command = process.argv[0];
108
+ inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
100
109
  }
101
- catch (err) {
102
- this.$logger.trace(`Failed during hook execution ${hookName}.`);
103
- this.$errors.fail(err.message || err);
110
+ }
111
+ const startTime = this.$performanceService.now();
112
+ if (inProc) {
113
+ this.$logger.trace("Executing %s hook at location %s in-process", hookName, hook.fullPath);
114
+ const hookEntryPoint = require(hook.fullPath);
115
+ this.$logger.trace(`Validating ${hookName} arguments.`);
116
+ const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
117
+ if (invalidArguments.length) {
118
+ this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
119
+ return;
104
120
  }
105
- return _.flatten(results);
106
- });
107
- }
108
- executeHook(directoryPath, hookName, hook, hookArguments) {
109
- return __awaiter(this, void 0, void 0, function* () {
110
- hookArguments = hookArguments || {};
111
- let result;
112
- const relativePath = path.relative(directoryPath, hook.fullPath);
113
- const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
114
- let command = this.getSheBangInterpreter(hook);
115
- let inProc = false;
116
- if (!command) {
117
- command = hook.fullPath;
118
- if (path.extname(hook.fullPath).toLowerCase() === ".js") {
119
- command = process.argv[0];
120
- inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
121
- }
121
+ // HACK for backwards compatibility:
122
+ // In case $projectData wasn't resolved by the time we got here (most likely we got here without running a command but through a service directly)
123
+ // then it is probably passed as a hookArg
124
+ // if that is the case then pass it directly to the hook instead of trying to resolve $projectData via injector
125
+ // This helps make hooks stateless
126
+ const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
127
+ if (projectDataHookArg) {
128
+ hookArguments["projectData"] = hookArguments["$projectData"] = projectDataHookArg;
122
129
  }
123
- const startTime = this.$performanceService.now();
124
- if (inProc) {
125
- this.$logger.trace("Executing %s hook at location %s in-process", hookName, hook.fullPath);
126
- const hookEntryPoint = require(hook.fullPath);
127
- this.$logger.trace(`Validating ${hookName} arguments.`);
128
- const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
129
- if (invalidArguments.length) {
130
- this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
131
- return;
130
+ const maybePromise = this.$injector.resolve(hookEntryPoint, hookArguments);
131
+ if (maybePromise) {
132
+ this.$logger.trace("Hook promises to signal completion");
133
+ try {
134
+ result = await maybePromise;
132
135
  }
133
- // HACK for backwards compatibility:
134
- // In case $projectData wasn't resolved by the time we got here (most likely we got here without running a command but through a service directly)
135
- // then it is probably passed as a hookArg
136
- // if that is the case then pass it directly to the hook instead of trying to resolve $projectData via injector
137
- // This helps make hooks stateless
138
- const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
139
- if (projectDataHookArg) {
140
- hookArguments["projectData"] = hookArguments["$projectData"] = projectDataHookArg;
141
- }
142
- const maybePromise = this.$injector.resolve(hookEntryPoint, hookArguments);
143
- if (maybePromise) {
144
- this.$logger.trace("Hook promises to signal completion");
145
- try {
146
- result = yield maybePromise;
136
+ catch (err) {
137
+ if (err &&
138
+ _.isBoolean(err.stopExecution) &&
139
+ err.errorAsWarning === true) {
140
+ this.$logger.warn(err.message || err);
147
141
  }
148
- catch (err) {
149
- if (err &&
150
- _.isBoolean(err.stopExecution) &&
151
- err.errorAsWarning === true) {
152
- this.$logger.warn(err.message || err);
153
- }
154
- else {
155
- // Print the actual error with its callstack, so it is easy to find out which hooks is causing troubles.
156
- this.$logger.error(err);
157
- throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
158
- }
142
+ else {
143
+ // Print the actual error with its callstack, so it is easy to find out which hooks is causing troubles.
144
+ this.$logger.error(err);
145
+ throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
159
146
  }
160
- this.$logger.trace("Hook completed");
161
147
  }
148
+ this.$logger.trace("Hook completed");
162
149
  }
163
- else {
164
- const environment = this.prepareEnvironment(hook.fullPath);
165
- this.$logger.trace("Executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
166
- const output = yield this.$childProcess.spawnFromEvent(command, [hook.fullPath], "close", environment, { throwError: false });
167
- result = output;
168
- if (output.exitCode !== 0) {
169
- throw new Error(output.stdout + output.stderr);
170
- }
171
- this.$logger.trace("Finished executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
150
+ }
151
+ else {
152
+ const environment = this.prepareEnvironment(hook.fullPath);
153
+ this.$logger.trace("Executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
154
+ const output = await this.$childProcess.spawnFromEvent(command, [hook.fullPath], "close", environment, { throwError: false });
155
+ result = output;
156
+ if (output.exitCode !== 0) {
157
+ throw new Error(output.stdout + output.stderr);
172
158
  }
173
- const endTime = this.$performanceService.now();
174
- this.$performanceService.processExecutionData(trackId, startTime, endTime, [
175
- hookArguments,
176
- ]);
177
- return result;
178
- });
159
+ this.$logger.trace("Finished executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
160
+ }
161
+ const endTime = this.$performanceService.now();
162
+ this.$performanceService.processExecutionData(trackId, startTime, endTime, [
163
+ hookArguments,
164
+ ]);
165
+ return result;
179
166
  }
180
- executeHooksInDirectory(directoryPath, hookName, hookArguments) {
181
- return __awaiter(this, void 0, void 0, function* () {
182
- hookArguments = hookArguments || {};
183
- const results = [];
184
- const hooks = this.getHooksByName(directoryPath, hookName);
185
- for (let i = 0; i < hooks.length; ++i) {
186
- const hook = hooks[i];
187
- const result = yield this.executeHook(directoryPath, hookName, hook, hookArguments);
188
- if (result) {
189
- results.push(result);
190
- }
167
+ async executeHooksInDirectory(directoryPath, hookName, hookArguments) {
168
+ hookArguments = hookArguments || {};
169
+ const results = [];
170
+ const hooks = this.getHooksByName(directoryPath, hookName);
171
+ for (let i = 0; i < hooks.length; ++i) {
172
+ const hook = hooks[i];
173
+ const result = await this.executeHook(directoryPath, hookName, hook, hookArguments);
174
+ if (result) {
175
+ results.push(result);
191
176
  }
192
- return results;
193
- });
177
+ }
178
+ return results;
194
179
  }
195
180
  getCustomHooksByName(hookName) {
196
181
  const hooks = [];
@@ -315,6 +300,7 @@ class HooksService {
315
300
  return invalidArguments;
316
301
  }
317
302
  }
303
+ exports.HooksService = HooksService;
318
304
  HooksService.HOOKS_DIRECTORY_NAME = "hooks";
319
305
  __decorate([
320
306
  (0, decorators_1.memoize)({
@@ -326,6 +312,5 @@ __decorate([
326
312
  },
327
313
  })
328
314
  ], HooksService.prototype, "initialize", null);
329
- exports.HooksService = HooksService;
330
315
  yok_1.injector.register("hooksService", HooksService);
331
316
  //# sourceMappingURL=hooks-service.js.map