nativescript 8.9.0-dev.0 → 8.9.0-dev.2

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 (405) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/lib/.d.ts +1 -0
  3. package/lib/android-tools-info.js +32 -9
  4. package/lib/base-package-manager.js +71 -47
  5. package/lib/bootstrap.js +6 -1
  6. package/lib/bun-package-manager.js +104 -65
  7. package/lib/color.js +5 -2
  8. package/lib/commands/add-platform.js +31 -14
  9. package/lib/commands/apple-login.js +30 -18
  10. package/lib/commands/appstore-list.js +46 -34
  11. package/lib/commands/appstore-upload.js +68 -52
  12. package/lib/commands/build.js +90 -57
  13. package/lib/commands/clean.js +197 -161
  14. package/lib/commands/command-base.js +28 -14
  15. package/lib/commands/config.js +71 -48
  16. package/lib/commands/create-project.js +235 -210
  17. package/lib/commands/debug.js +93 -66
  18. package/lib/commands/deploy.js +47 -30
  19. package/lib/commands/embedding/embed.js +59 -33
  20. package/lib/commands/extensibility/install-extension.js +17 -5
  21. package/lib/commands/extensibility/list-extensions.js +25 -13
  22. package/lib/commands/extensibility/uninstall-extension.js +16 -4
  23. package/lib/commands/fonts.js +42 -30
  24. package/lib/commands/generate-assets.js +29 -13
  25. package/lib/commands/generate-help.js +14 -2
  26. package/lib/commands/generate.js +70 -12
  27. package/lib/commands/info.js +14 -2
  28. package/lib/commands/install.js +50 -34
  29. package/lib/commands/list-platforms.js +26 -14
  30. package/lib/commands/migrate.js +27 -15
  31. package/lib/commands/native-add.js +51 -23
  32. package/lib/commands/platform-clean.js +33 -19
  33. package/lib/commands/plugin/add-plugin.js +26 -12
  34. package/lib/commands/plugin/build-plugin.js +45 -31
  35. package/lib/commands/plugin/create-plugin.js +138 -110
  36. package/lib/commands/plugin/list-plugins.js +34 -22
  37. package/lib/commands/plugin/remove-plugin.js +35 -20
  38. package/lib/commands/plugin/update-plugin.js +34 -20
  39. package/lib/commands/post-install.js +39 -20
  40. package/lib/commands/prepare.js +39 -22
  41. package/lib/commands/preview.js +64 -49
  42. package/lib/commands/remove-platform.js +19 -7
  43. package/lib/commands/resources/resources-update.js +28 -13
  44. package/lib/commands/run.js +77 -55
  45. package/lib/commands/setup.js +1 -0
  46. package/lib/commands/start.js +20 -6
  47. package/lib/commands/test-init.js +138 -123
  48. package/lib/commands/test.js +97 -67
  49. package/lib/commands/typings.js +143 -126
  50. package/lib/commands/update-platform.js +40 -22
  51. package/lib/commands/update.js +45 -30
  52. package/lib/commands/widget.js +767 -0
  53. package/lib/common/bootstrap.js +1 -0
  54. package/lib/common/child-process.js +75 -53
  55. package/lib/common/codeGeneration/code-entity.js +2 -1
  56. package/lib/common/codeGeneration/code-printer.js +2 -1
  57. package/lib/common/command-params.js +19 -7
  58. package/lib/common/commands/analytics.js +43 -27
  59. package/lib/common/commands/autocompletion.js +59 -39
  60. package/lib/common/commands/device/device-log-stream.js +24 -12
  61. package/lib/common/commands/device/get-file.js +35 -22
  62. package/lib/common/commands/device/list-applications.js +24 -12
  63. package/lib/common/commands/device/list-devices.js +90 -72
  64. package/lib/common/commands/device/list-files.js +36 -23
  65. package/lib/common/commands/device/put-file.js +35 -22
  66. package/lib/common/commands/device/run-application.js +26 -12
  67. package/lib/common/commands/device/stop-application.js +23 -11
  68. package/lib/common/commands/device/uninstall-application.js +18 -6
  69. package/lib/common/commands/doctor.js +3 -2
  70. package/lib/common/commands/generate-messages.js +29 -17
  71. package/lib/common/commands/help.js +34 -20
  72. package/lib/common/commands/package-manager-get.js +18 -6
  73. package/lib/common/commands/package-manager-set.js +21 -9
  74. package/lib/common/commands/post-install.js +14 -2
  75. package/lib/common/commands/preuninstall.js +48 -24
  76. package/lib/common/commands/proxy/proxy-base.js +23 -8
  77. package/lib/common/commands/proxy/proxy-clear.js +16 -4
  78. package/lib/common/commands/proxy/proxy-get.js +15 -3
  79. package/lib/common/commands/proxy/proxy-set.js +101 -87
  80. package/lib/common/common-lib.js +1 -0
  81. package/lib/common/constants.js +22 -11
  82. package/lib/common/decorators.js +70 -10
  83. package/lib/common/dispatchers.js +106 -80
  84. package/lib/common/errors.js +116 -91
  85. package/lib/common/file-system.js +141 -108
  86. package/lib/common/header.js +5 -1
  87. package/lib/common/helpers.js +267 -152
  88. package/lib/common/host-info.js +54 -37
  89. package/lib/common/http-client.js +128 -93
  90. package/lib/common/logger/appenders/cli-appender.js +6 -1
  91. package/lib/common/logger/appenders/emit-appender.js +6 -1
  92. package/lib/common/logger/layouts/cli-layout.js +3 -1
  93. package/lib/common/logger/logger.js +9 -4
  94. package/lib/common/messages/messages.js +6 -0
  95. package/lib/common/mobile/android/android-application-manager.js +162 -122
  96. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +2 -1
  97. package/lib/common/mobile/android/android-debug-bridge.js +118 -87
  98. package/lib/common/mobile/android/android-device-file-system.js +135 -98
  99. package/lib/common/mobile/android/android-device-hash-service.js +78 -50
  100. package/lib/common/mobile/android/android-device.js +93 -68
  101. package/lib/common/mobile/android/android-emulator-services.js +131 -105
  102. package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
  103. package/lib/common/mobile/android/android-log-filter.js +5 -1
  104. package/lib/common/mobile/android/android-virtual-device-service.js +123 -76
  105. package/lib/common/mobile/android/device-android-debug-bridge.js +30 -13
  106. package/lib/common/mobile/android/genymotion/genymotion-service.js +123 -91
  107. package/lib/common/mobile/android/genymotion/virtualbox-service.js +92 -64
  108. package/lib/common/mobile/android/logcat-helper.js +140 -108
  109. package/lib/common/mobile/application-manager-base.js +113 -84
  110. package/lib/common/mobile/device-emitter.js +4 -0
  111. package/lib/common/mobile/device-log-emitter.js +1 -0
  112. package/lib/common/mobile/device-log-provider-base.js +19 -7
  113. package/lib/common/mobile/device-log-provider.js +23 -0
  114. package/lib/common/mobile/device-platforms-constants.js +1 -0
  115. package/lib/common/mobile/emulator-helper.js +3 -0
  116. package/lib/common/mobile/ios/device/ios-application-manager.js +111 -79
  117. package/lib/common/mobile/ios/device/ios-device-file-system.js +106 -78
  118. package/lib/common/mobile/ios/device/ios-device-operations.js +146 -105
  119. package/lib/common/mobile/ios/device/ios-device.js +40 -20
  120. package/lib/common/mobile/ios/ios-device-base.js +82 -58
  121. package/lib/common/mobile/ios/ios-device-product-name-mapper.js +2 -0
  122. package/lib/common/mobile/ios/ios-log-filter.js +1 -0
  123. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +96 -63
  124. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +2 -1
  125. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +95 -60
  126. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +48 -27
  127. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +63 -37
  128. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +36 -24
  129. package/lib/common/mobile/local-to-device-path-data-factory.js +1 -0
  130. package/lib/common/mobile/log-filter.js +2 -0
  131. package/lib/common/mobile/logging-levels.js +1 -0
  132. package/lib/common/mobile/mobile-core/android-device-discovery.js +64 -43
  133. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +35 -21
  134. package/lib/common/mobile/mobile-core/android-process-service.js +214 -143
  135. package/lib/common/mobile/mobile-core/device-discovery.js +14 -2
  136. package/lib/common/mobile/mobile-core/devices-service.js +505 -386
  137. package/lib/common/mobile/mobile-core/ios-device-discovery.js +37 -24
  138. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +65 -47
  139. package/lib/common/mobile/mobile-helper.js +27 -15
  140. package/lib/common/mobile/wp8/wp8-emulator-services.js +53 -25
  141. package/lib/common/opener.js +3 -2
  142. package/lib/common/os-info.js +1 -0
  143. package/lib/common/plist-parser.js +1 -0
  144. package/lib/common/project-helper.js +1 -0
  145. package/lib/common/prompter.js +114 -91
  146. package/lib/common/queue.js +21 -9
  147. package/lib/common/resource-loader.js +1 -0
  148. package/lib/common/services/auto-completion-service.js +65 -40
  149. package/lib/common/services/cancellation.js +29 -17
  150. package/lib/common/services/commands-service.js +180 -146
  151. package/lib/common/services/help-service.js +166 -133
  152. package/lib/common/services/hooks-service.js +121 -93
  153. package/lib/common/services/ios-notification-service.js +35 -21
  154. package/lib/common/services/json-file-settings-service.js +77 -52
  155. package/lib/common/services/lock-service.js +58 -35
  156. package/lib/common/services/message-contract-generator.js +47 -35
  157. package/lib/common/services/messages-service.js +1 -0
  158. package/lib/common/services/micro-templating-service.js +21 -4
  159. package/lib/common/services/net-service.js +110 -90
  160. package/lib/common/services/project-files-manager.js +28 -10
  161. package/lib/common/services/project-files-provider-base.js +1 -0
  162. package/lib/common/services/proxy-service.js +25 -13
  163. package/lib/common/services/qr.js +25 -13
  164. package/lib/common/services/settings-service.js +2 -1
  165. package/lib/common/services/xcode-select-service.js +36 -20
  166. package/lib/common/utils.js +3 -2
  167. package/lib/common/validators/project-name-validator.js +2 -1
  168. package/lib/common/validators/validation-result.js +2 -1
  169. package/lib/common/verify-node-version.js +11 -3
  170. package/lib/common/yok.js +69 -35
  171. package/lib/config.js +72 -36
  172. package/lib/constants-provider.js +1 -0
  173. package/lib/constants.js +78 -25
  174. package/lib/controllers/build-controller.js +100 -82
  175. package/lib/controllers/debug-controller.js +133 -107
  176. package/lib/controllers/deploy-controller.js +24 -15
  177. package/lib/controllers/migrate-controller.js +884 -723
  178. package/lib/controllers/platform-controller.js +94 -71
  179. package/lib/controllers/prepare-controller.js +274 -232
  180. package/lib/controllers/run-controller.js +427 -397
  181. package/lib/controllers/update-controller-base.js +30 -16
  182. package/lib/controllers/update-controller.js +130 -94
  183. package/lib/data/build-data.js +1 -0
  184. package/lib/data/controller-data-base.js +1 -0
  185. package/lib/data/debug-data.js +1 -0
  186. package/lib/data/platform-data.js +1 -0
  187. package/lib/data/prepare-data.js +2 -4
  188. package/lib/data/run-data.js +1 -0
  189. package/lib/definitions/ios.d.ts +4 -2
  190. package/lib/definitions/project.d.ts +26 -0
  191. package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
  192. package/lib/detached-processes/cleanup-process.js +43 -30
  193. package/lib/detached-processes/file-log-service.js +2 -1
  194. package/lib/device-path-provider.js +35 -23
  195. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
  196. package/lib/device-sockets/ios/notification.js +4 -1
  197. package/lib/device-sockets/ios/socket-request-executor.js +42 -24
  198. package/lib/helpers/android-bundle-validator-helper.js +3 -2
  199. package/lib/helpers/deploy-command-helper.js +50 -44
  200. package/lib/helpers/key-command-helper.js +17 -6
  201. package/lib/helpers/livesync-command-helper.js +155 -137
  202. package/lib/helpers/network-connectivity-validator.js +18 -6
  203. package/lib/helpers/options-track-helper.js +19 -7
  204. package/lib/helpers/package-path-helper.js +1 -0
  205. package/lib/helpers/platform-command-helper.js +127 -101
  206. package/lib/helpers/version-validator-helper.js +1 -0
  207. package/lib/key-commands/bootstrap.js +3 -2
  208. package/lib/key-commands/index.js +205 -154
  209. package/lib/nativescript-cli-lib-bootstrap.js +4 -0
  210. package/lib/nativescript-cli-lib.js +1 -0
  211. package/lib/nativescript-cli.js +24 -6
  212. package/lib/node/pbxproj-dom-xcode.js +1 -0
  213. package/lib/node/xcode.js +1 -0
  214. package/lib/node-package-manager.js +114 -81
  215. package/lib/options.js +156 -122
  216. package/lib/package-installation-manager.js +172 -130
  217. package/lib/package-manager.js +88 -63
  218. package/lib/platform-command-param.js +16 -4
  219. package/lib/pnpm-package-manager.js +81 -59
  220. package/lib/project-data.js +13 -1
  221. package/lib/providers/project-files-provider.js +2 -1
  222. package/lib/resolvers/livesync-service-resolver.js +1 -0
  223. package/lib/services/analytics/analytics-broker-process.js +32 -19
  224. package/lib/services/analytics/analytics-broker.js +31 -17
  225. package/lib/services/analytics/analytics-service.js +210 -170
  226. package/lib/services/analytics/google-analytics-provider.js +59 -43
  227. package/lib/services/analytics-settings-service.js +37 -15
  228. package/lib/services/android/android-bundle-tool-service.js +61 -43
  229. package/lib/services/android/gradle-build-args-service.js +23 -9
  230. package/lib/services/android/gradle-build-service.js +36 -22
  231. package/lib/services/android/gradle-command-service.js +36 -22
  232. package/lib/services/android-device-debug-service.js +123 -90
  233. package/lib/services/android-plugin-build-service.js +260 -205
  234. package/lib/services/android-project-service.js +241 -129
  235. package/lib/services/android-resources-migration-service.js +71 -51
  236. package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
  237. package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
  238. package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
  239. package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
  240. package/lib/services/assets-generation/assets-generation-service.js +128 -103
  241. package/lib/services/build-artifacts-service.js +22 -10
  242. package/lib/services/build-data-service.js +1 -0
  243. package/lib/services/build-info-file-service.js +36 -20
  244. package/lib/services/cleanup-service.js +81 -48
  245. package/lib/services/cocoapods-platform-manager.js +9 -0
  246. package/lib/services/cocoapods-service.js +153 -112
  247. package/lib/services/debug-data-service.js +1 -0
  248. package/lib/services/debug-service-base.js +7 -0
  249. package/lib/services/device/device-install-app-service.js +72 -54
  250. package/lib/services/doctor-service.js +135 -101
  251. package/lib/services/extensibility-service.js +108 -81
  252. package/lib/services/files-hash-service.js +44 -26
  253. package/lib/services/hmr-status-service.js +3 -1
  254. package/lib/services/info-service.js +1 -0
  255. package/lib/services/initialize-service.js +54 -37
  256. package/lib/services/ios/export-options-plist-service.js +55 -38
  257. package/lib/services/ios/ios-signing-service.js +191 -168
  258. package/lib/services/ios/spm-service.js +73 -43
  259. package/lib/services/ios/xcodebuild-args-service.js +103 -77
  260. package/lib/services/ios/xcodebuild-command-service.js +26 -14
  261. package/lib/services/ios/xcodebuild-service.js +72 -52
  262. package/lib/services/ios-debugger-port-service.js +38 -24
  263. package/lib/services/ios-device-debug-service.js +103 -75
  264. package/lib/services/ios-entitlements-service.js +43 -31
  265. package/lib/services/ios-extensions-service.js +30 -18
  266. package/lib/services/ios-log-filter.js +20 -0
  267. package/lib/services/ios-native-target-service.js +6 -4
  268. package/lib/services/ios-project-service.js +605 -437
  269. package/lib/services/ios-provision-service.js +132 -108
  270. package/lib/services/ios-watch-app-service.js +33 -21
  271. package/lib/services/ip-service.js +55 -38
  272. package/lib/services/itmstransporter-service.js +153 -129
  273. package/lib/services/karma-execution.js +2 -0
  274. package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
  275. package/lib/services/livesync/android-device-livesync-service.js +151 -120
  276. package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
  277. package/lib/services/livesync/android-livesync-service.js +36 -14
  278. package/lib/services/livesync/android-livesync-tool.js +117 -90
  279. package/lib/services/livesync/device-livesync-service-base.js +30 -15
  280. package/lib/services/livesync/ios-device-livesync-service.js +150 -114
  281. package/lib/services/livesync/ios-livesync-service.js +60 -42
  282. package/lib/services/livesync/livesync-socket.js +1 -0
  283. package/lib/services/livesync/platform-livesync-service-base.js +124 -94
  284. package/lib/services/livesync-process-data-service.js +1 -0
  285. package/lib/services/log-parser-service.js +2 -1
  286. package/lib/services/log-source-map-service.js +56 -30
  287. package/lib/services/marking-mode-service.js +33 -17
  288. package/lib/services/metadata-filtering-service.js +1 -0
  289. package/lib/services/npm-config-service.js +5 -1
  290. package/lib/services/pacote-service.js +73 -51
  291. package/lib/services/performance-service.js +4 -2
  292. package/lib/services/platform/add-platform-service.js +119 -51
  293. package/lib/services/platform/platform-validation-service.js +34 -22
  294. package/lib/services/platform/prepare-native-platform-service.js +65 -49
  295. package/lib/services/platform-environment-requirements.js +43 -27
  296. package/lib/services/platform-project-service-base.js +1 -0
  297. package/lib/services/platforms-data-service.js +1 -0
  298. package/lib/services/plugins-service.js +168 -125
  299. package/lib/services/prepare-data-service.js +1 -0
  300. package/lib/services/project-backup-service.js +5 -1
  301. package/lib/services/project-changes-service.js +152 -124
  302. package/lib/services/project-cleanup-service.js +79 -64
  303. package/lib/services/project-config-service.js +111 -73
  304. package/lib/services/project-data-service.js +154 -108
  305. package/lib/services/project-name-service.js +44 -28
  306. package/lib/services/project-service.js +113 -84
  307. package/lib/services/project-templates-service.js +68 -52
  308. package/lib/services/qr-code-terminal-service.js +1 -0
  309. package/lib/services/require-service.js +1 -0
  310. package/lib/services/start-service.js +60 -41
  311. package/lib/services/temp-service.js +22 -8
  312. package/lib/services/terminal-spinner-service.js +28 -15
  313. package/lib/services/test-execution-service.js +79 -59
  314. package/lib/services/test-initialization-service.js +6 -2
  315. package/lib/services/timeline-profiler-service.js +2 -1
  316. package/lib/services/user-settings-service.js +1 -0
  317. package/lib/services/versions-service.js +140 -119
  318. package/lib/services/watch-ignore-list-service.js +1 -0
  319. package/lib/services/webpack/webpack-compiler-service.js +279 -215
  320. package/lib/services/xcconfig-service.js +21 -8
  321. package/lib/services/xcproj-service.js +1 -0
  322. package/lib/shared-event-bus.js +6 -0
  323. package/lib/sys-info.js +63 -45
  324. package/lib/tools/config-manipulation/config-transformer.js +21 -0
  325. package/lib/tools/node-modules/node-modules-builder.js +28 -16
  326. package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
  327. package/lib/yarn-package-manager.js +79 -59
  328. package/lib/yarn2-package-manager.js +82 -60
  329. package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
  330. package/node_modules/@npmcli/move-file/README.md +69 -0
  331. package/node_modules/@npmcli/move-file/lib/index.js +185 -0
  332. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
  333. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
  334. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
  335. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
  336. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
  337. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
  338. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
  339. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
  340. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
  341. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
  342. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
  343. package/node_modules/@npmcli/move-file/package.json +47 -0
  344. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  345. package/node_modules/balanced-match/LICENSE.md +21 -0
  346. package/node_modules/balanced-match/README.md +97 -0
  347. package/node_modules/balanced-match/index.js +62 -0
  348. package/node_modules/balanced-match/package.json +48 -0
  349. package/node_modules/concat-map/.travis.yml +4 -0
  350. package/node_modules/concat-map/LICENSE +18 -0
  351. package/node_modules/concat-map/README.markdown +62 -0
  352. package/node_modules/concat-map/example/map.js +6 -0
  353. package/node_modules/concat-map/index.js +13 -0
  354. package/node_modules/concat-map/package.json +43 -0
  355. package/node_modules/concat-map/test/map.js +39 -0
  356. package/node_modules/fs.realpath/LICENSE +43 -0
  357. package/node_modules/fs.realpath/README.md +33 -0
  358. package/node_modules/fs.realpath/index.js +66 -0
  359. package/node_modules/fs.realpath/old.js +303 -0
  360. package/node_modules/fs.realpath/package.json +26 -0
  361. package/node_modules/inflight/LICENSE +15 -0
  362. package/node_modules/inflight/README.md +37 -0
  363. package/node_modules/inflight/inflight.js +54 -0
  364. package/node_modules/inflight/package.json +29 -0
  365. package/node_modules/inherits/LICENSE +16 -0
  366. package/node_modules/inherits/README.md +42 -0
  367. package/node_modules/inherits/inherits.js +9 -0
  368. package/node_modules/inherits/inherits_browser.js +27 -0
  369. package/node_modules/inherits/package.json +29 -0
  370. package/node_modules/once/LICENSE +15 -0
  371. package/node_modules/once/README.md +79 -0
  372. package/node_modules/once/once.js +42 -0
  373. package/node_modules/once/package.json +33 -0
  374. package/node_modules/path-is-absolute/index.js +20 -0
  375. package/node_modules/path-is-absolute/license +21 -0
  376. package/node_modules/path-is-absolute/package.json +43 -0
  377. package/node_modules/path-is-absolute/readme.md +59 -0
  378. package/node_modules/rimraf/LICENSE +15 -0
  379. package/node_modules/rimraf/README.md +101 -0
  380. package/node_modules/rimraf/bin.js +68 -0
  381. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
  382. package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
  383. package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
  384. package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
  385. package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
  386. package/node_modules/rimraf/node_modules/glob/README.md +378 -0
  387. package/node_modules/rimraf/node_modules/glob/common.js +238 -0
  388. package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
  389. package/node_modules/rimraf/node_modules/glob/package.json +55 -0
  390. package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
  391. package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
  392. package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
  393. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
  394. package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
  395. package/node_modules/rimraf/package.json +32 -0
  396. package/node_modules/rimraf/rimraf.js +360 -0
  397. package/node_modules/stringify-package/LICENSE +13 -0
  398. package/node_modules/stringify-package/README.md +55 -0
  399. package/node_modules/stringify-package/index.js +18 -0
  400. package/node_modules/stringify-package/package.json +38 -0
  401. package/node_modules/wrappy/LICENSE +15 -0
  402. package/node_modules/wrappy/README.md +36 -0
  403. package/node_modules/wrappy/package.json +29 -0
  404. package/node_modules/wrappy/wrappy.js +33 -0
  405. package/package.json +79 -64
@@ -1,5 +1,16 @@
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
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ // NOTE: This file is used to clean up resources used by CLI, when the CLI is killed.
13
+ // The instances here are not shared with the ones in main CLI process.
3
14
  const fs = require("fs");
4
15
  const path = require("path");
5
16
  const shelljs = require("shelljs");
@@ -11,6 +22,7 @@ if (!pathToBootstrap || !fs.existsSync(pathToBootstrap)) {
11
22
  throw new Error("Invalid path to bootstrap.");
12
23
  }
13
24
  const logFile = process.argv[3];
25
+ // After requiring the bootstrap we can use $injector
14
26
  require(pathToBootstrap);
15
27
  const fileLogService = yok_1.injector.resolve(file_log_service_1.FileLogService, {
16
28
  logFile,
@@ -20,13 +32,13 @@ const commandsInfos = [];
20
32
  const filesToDelete = [];
21
33
  const jsCommands = [];
22
34
  const requests = [];
23
- const executeRequest = async (request) => {
35
+ const executeRequest = (request) => __awaiter(void 0, void 0, void 0, function* () {
24
36
  const $httpClient = yok_1.injector.resolve("httpClient");
25
37
  try {
26
38
  fileLogService.logData({
27
39
  message: `Start executing request: ${request.method} ${request.url}`,
28
40
  });
29
- const response = await $httpClient.httpRequest({
41
+ const response = yield $httpClient.httpRequest({
30
42
  url: request.url,
31
43
  method: request.method,
32
44
  headers: request.headers,
@@ -42,14 +54,14 @@ const executeRequest = async (request) => {
42
54
  message: `Unable to execute request: ${request.method} ${request.url}`,
43
55
  });
44
56
  }
45
- };
46
- const executeJSCleanup = async (jsCommand) => {
57
+ });
58
+ const executeJSCleanup = (jsCommand) => __awaiter(void 0, void 0, void 0, function* () {
47
59
  const $childProcess = yok_1.injector.resolve("childProcess");
48
60
  try {
49
61
  fileLogService.logData({
50
62
  message: `Start executing action for file: ${jsCommand.filePath} and data ${JSON.stringify(jsCommand.data)}`,
51
63
  });
52
- await $childProcess.trySpawnFromCloseEvent(process.execPath, [
64
+ yield $childProcess.trySpawnFromCloseEvent(process.execPath, [
53
65
  path.join(__dirname, "cleanup-js-subprocess.js"),
54
66
  pathToBootstrap,
55
67
  logFile,
@@ -63,24 +75,24 @@ const executeJSCleanup = async (jsCommand) => {
63
75
  catch (err) {
64
76
  fileLogService.logData({
65
77
  message: `Unable to execute action for file ${jsCommand.filePath} with data ${JSON.stringify(jsCommand.data)}. Error is: ${err}.`,
66
- type: "Error",
78
+ type: "Error" /* FileLogMessageType.Error */,
67
79
  });
68
80
  }
69
- };
70
- const executeCleanup = async () => {
81
+ });
82
+ const executeCleanup = () => __awaiter(void 0, void 0, void 0, function* () {
71
83
  const $childProcess = yok_1.injector.resolve("childProcess");
72
84
  for (const request of requests) {
73
- await executeRequest(request);
85
+ yield executeRequest(request);
74
86
  }
75
87
  for (const jsCommand of jsCommands) {
76
- await executeJSCleanup(jsCommand);
88
+ yield executeJSCleanup(jsCommand);
77
89
  }
78
90
  for (const commandInfo of commandsInfos) {
79
91
  try {
80
92
  fileLogService.logData({
81
93
  message: `Start executing command: ${JSON.stringify(commandInfo)}`,
82
94
  });
83
- await $childProcess.trySpawnFromCloseEvent(commandInfo.command, commandInfo.args, commandInfo.options || {}, { throwError: true, timeout: commandInfo.timeout || 3000 });
95
+ yield $childProcess.trySpawnFromCloseEvent(commandInfo.command, commandInfo.args, commandInfo.options || {}, { throwError: true, timeout: commandInfo.timeout || 3000 });
84
96
  fileLogService.logData({
85
97
  message: `Successfully executed command: ${JSON.stringify(commandInfo)}`,
86
98
  });
@@ -88,7 +100,7 @@ const executeCleanup = async () => {
88
100
  catch (err) {
89
101
  fileLogService.logData({
90
102
  message: `Unable to execute command: ${JSON.stringify(commandInfo)}. Error is: ${err}.`,
91
- type: "Error",
103
+ type: "Error" /* FileLogMessageType.Error */,
92
104
  });
93
105
  }
94
106
  }
@@ -102,13 +114,13 @@ const executeCleanup = async () => {
102
114
  catch (err) {
103
115
  fileLogService.logData({
104
116
  message: `Unable to delete files: ${JSON.stringify(filesToDelete)}. Error is: ${err}.`,
105
- type: "Error",
117
+ type: "Error" /* FileLogMessageType.Error */,
106
118
  });
107
119
  }
108
120
  }
109
121
  fileLogService.logData({ message: `cleanup-process finished` });
110
122
  process.exit();
111
- };
123
+ });
112
124
  const addCleanupAction = (commandInfo) => {
113
125
  if (_.some(commandsInfos, (currentCommandInfo) => _.isEqual(currentCommandInfo, commandInfo))) {
114
126
  fileLogService.logData({
@@ -219,54 +231,55 @@ const removeJSFile = (jsCommand) => {
219
231
  });
220
232
  }
221
233
  };
222
- process.on("message", async (cleanupProcessMessage) => {
234
+ process.on("message", (cleanupProcessMessage) => __awaiter(void 0, void 0, void 0, function* () {
223
235
  fileLogService.logData({
224
236
  message: `cleanup-process received message of type: ${JSON.stringify(cleanupProcessMessage)}`,
225
237
  });
226
238
  switch (cleanupProcessMessage.messageType) {
227
- case "AddCleanCommand":
239
+ case "AddCleanCommand" /* CleanupProcessMessage.AddCleanCommand */:
228
240
  addCleanupAction(cleanupProcessMessage.commandInfo);
229
241
  break;
230
- case "RemoveCleanCommand":
242
+ case "RemoveCleanCommand" /* CleanupProcessMessage.RemoveCleanCommand */:
231
243
  removeCleanupAction(cleanupProcessMessage.commandInfo);
232
244
  break;
233
- case "AddRequest":
245
+ case "AddRequest" /* CleanupProcessMessage.AddRequest */:
234
246
  addRequest(cleanupProcessMessage.requestInfo);
235
247
  break;
236
- case "RemoveRequest":
248
+ case "RemoveRequest" /* CleanupProcessMessage.RemoveRequest */:
237
249
  removeRequest(cleanupProcessMessage.requestInfo);
238
250
  break;
239
- case "AddDeleteFileAction":
251
+ case "AddDeleteFileAction" /* CleanupProcessMessage.AddDeleteFileAction */:
240
252
  addDeleteAction(cleanupProcessMessage.filePath);
241
253
  break;
242
- case "RemoveDeleteFileAction":
254
+ case "RemoveDeleteFileAction" /* CleanupProcessMessage.RemoveDeleteFileAction */:
243
255
  removeDeleteAction(cleanupProcessMessage.filePath);
244
256
  break;
245
- case "AddJSFileToRequire":
257
+ case "AddJSFileToRequire" /* CleanupProcessMessage.AddJSFileToRequire */:
246
258
  const jsCleanupMessage = cleanupProcessMessage;
247
259
  addJSFile(jsCleanupMessage.jsCommand);
248
260
  break;
249
- case "RemoveJSFileToRequire":
261
+ case "RemoveJSFileToRequire" /* CleanupProcessMessage.RemoveJSFileToRequire */:
250
262
  const msgToRemove = cleanupProcessMessage;
251
263
  removeJSFile(msgToRemove.jsCommand);
252
264
  break;
253
265
  default:
254
266
  fileLogService.logData({
255
267
  message: `Unable to handle message of type ${cleanupProcessMessage.messageType}. Full message is ${JSON.stringify(cleanupProcessMessage)}`,
256
- type: "Error",
268
+ type: "Error" /* FileLogMessageType.Error */,
257
269
  });
258
270
  break;
259
271
  }
260
- });
261
- process.on("disconnect", async () => {
272
+ }));
273
+ process.on("disconnect", () => __awaiter(void 0, void 0, void 0, function* () {
262
274
  fileLogService.logData({
263
275
  message: "cleanup-process received process.disconnect event",
264
276
  });
265
- await executeCleanup();
277
+ yield executeCleanup();
266
278
  yok_1.injector.dispose();
267
279
  process.exit();
268
- });
280
+ }));
269
281
  fileLogService.logData({
270
- message: `cleanup-process will send ${"ProcessReadyToReceive"} message`,
282
+ message: `cleanup-process will send ${"ProcessReadyToReceive" /* DetachedProcessMessages.ProcessReadyToReceive */} message`,
271
283
  });
272
- process.send("ProcessReadyToReceive");
284
+ process.send("ProcessReadyToReceive" /* DetachedProcessMessages.ProcessReadyToReceive */);
285
+ //# sourceMappingURL=cleanup-process.js.map
@@ -11,10 +11,11 @@ class FileLogService {
11
11
  logData(fileLoggingMessage) {
12
12
  if (this.logFile && fileLoggingMessage && fileLoggingMessage.message) {
13
13
  fileLoggingMessage.type =
14
- fileLoggingMessage.type || "Info";
14
+ fileLoggingMessage.type || "Info" /* FileLogMessageType.Info */;
15
15
  const formattedDate = (0, helpers_1.getFixedLengthDateString)();
16
16
  this.$fs.appendFile(this.logFile, `[${formattedDate}] [${fileLoggingMessage.type}] ${fileLoggingMessage.message}${os_1.EOL}`);
17
17
  }
18
18
  }
19
19
  }
20
20
  exports.FileLogService = FileLogService;
21
+ //# sourceMappingURL=file-log-service.js.map
@@ -1,4 +1,13 @@
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
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.DevicePathProvider = void 0;
4
13
  const helpers_1 = require("./common/helpers");
@@ -12,31 +21,33 @@ class DevicePathProvider {
12
21
  this.$iOSSimResolver = $iOSSimResolver;
13
22
  this.$errors = $errors;
14
23
  }
15
- async getDeviceProjectRootPath(device, options) {
16
- let projectRoot = "";
17
- if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform)) {
18
- projectRoot = device.isEmulator
19
- ? await this.$iOSSimResolver.iOSSim.getApplicationPath(device.deviceInfo.identifier, options.appIdentifier)
20
- : constants_2.LiveSyncPaths.IOS_DEVICE_PROJECT_ROOT_PATH;
21
- if (!projectRoot) {
22
- this.$errors.fail("Unable to get application path on device.");
24
+ getDeviceProjectRootPath(device, options) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ let projectRoot = "";
27
+ if (this.$mobileHelper.isApplePlatform(device.deviceInfo.platform)) {
28
+ projectRoot = device.isEmulator
29
+ ? yield this.$iOSSimResolver.iOSSim.getApplicationPath(device.deviceInfo.identifier, options.appIdentifier)
30
+ : constants_2.LiveSyncPaths.IOS_DEVICE_PROJECT_ROOT_PATH;
31
+ if (!projectRoot) {
32
+ this.$errors.fail("Unable to get application path on device.");
33
+ }
34
+ if (!options.getDirname) {
35
+ projectRoot = path.join(projectRoot, constants_1.APP_FOLDER_NAME);
36
+ }
23
37
  }
24
- if (!options.getDirname) {
25
- projectRoot = path.join(projectRoot, constants_1.APP_FOLDER_NAME);
38
+ else if (this.$mobileHelper.isAndroidPlatform(device.deviceInfo.platform)) {
39
+ projectRoot = `${constants_2.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${options.appIdentifier}`;
40
+ if (!options.getDirname) {
41
+ const hashService = (device).fileSystem.getDeviceHashService(options.appIdentifier);
42
+ const hashFile = yield hashService.doesShasumFileExistsOnDevice();
43
+ const syncFolderName = options.watch || hashFile
44
+ ? constants_2.LiveSyncPaths.SYNC_DIR_NAME
45
+ : constants_2.LiveSyncPaths.FULLSYNC_DIR_NAME;
46
+ projectRoot = path.join(projectRoot, syncFolderName);
47
+ }
26
48
  }
27
- }
28
- else if (this.$mobileHelper.isAndroidPlatform(device.deviceInfo.platform)) {
29
- projectRoot = `${constants_2.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${options.appIdentifier}`;
30
- if (!options.getDirname) {
31
- const hashService = (device).fileSystem.getDeviceHashService(options.appIdentifier);
32
- const hashFile = await hashService.doesShasumFileExistsOnDevice();
33
- const syncFolderName = options.watch || hashFile
34
- ? constants_2.LiveSyncPaths.SYNC_DIR_NAME
35
- : constants_2.LiveSyncPaths.FULLSYNC_DIR_NAME;
36
- projectRoot = path.join(projectRoot, syncFolderName);
37
- }
38
- }
39
- return (0, helpers_1.fromWindowsRelativePathToUnix)(projectRoot);
49
+ return (0, helpers_1.fromWindowsRelativePathToUnix)(projectRoot);
50
+ });
40
51
  }
41
52
  getDeviceSyncZipPath(device) {
42
53
  return this.$mobileHelper.isApplePlatform(device.deviceInfo.platform) &&
@@ -47,3 +58,4 @@ class DevicePathProvider {
47
58
  }
48
59
  exports.DevicePathProvider = DevicePathProvider;
49
60
  yok_1.injector.register("devicePathProvider", DevicePathProvider);
61
+ //# sourceMappingURL=device-path-provider.js.map
@@ -1,4 +1,13 @@
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
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.AppDebugSocketProxyFactory = void 0;
4
13
  const events_1 = require("events");
@@ -22,169 +31,181 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
22
31
  getTCPSocketProxy(deviceIdentifier, appId) {
23
32
  return this.deviceTcpServers[`${deviceIdentifier}-${appId}`];
24
33
  }
25
- async addTCPSocketProxy(device, appId, projectName, projectDir) {
26
- const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
27
- const existingServer = this.deviceTcpServers[cacheKey];
28
- if (existingServer) {
29
- this.$errors.fail(`TCP socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
30
- }
31
- this.$logger.info("\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
32
- const server = net.createServer({
33
- allowHalfOpen: true,
34
- });
35
- this.deviceTcpServers[cacheKey] = server;
36
- server.on("connection", async (frontendSocket) => {
37
- this.$logger.info("Frontend client connected.");
38
- frontendSocket.on("end", () => {
39
- this.$logger.info("Frontend socket closed!");
40
- if (!this.$options.watch) {
41
- process.exit(0);
42
- }
43
- });
44
- const appDebugSocket = await device.getDebugSocket(appId, projectName, projectDir);
45
- this.$logger.info("Backend socket created.");
46
- appDebugSocket.on("end", () => {
47
- this.$logger.info("Backend socket closed!");
48
- if (!this.$options.watch) {
49
- process.exit(0);
50
- }
34
+ addTCPSocketProxy(device, appId, projectName, projectDir) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
37
+ const existingServer = this.deviceTcpServers[cacheKey];
38
+ if (existingServer) {
39
+ this.$errors.fail(`TCP socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
40
+ }
41
+ this.$logger.info("\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
42
+ const server = net.createServer({
43
+ allowHalfOpen: true,
51
44
  });
52
- frontendSocket.on("close", async () => {
53
- this.$logger.info("Frontend socket closed");
54
- await device.destroyDebugSocket(appId);
55
- });
56
- appDebugSocket.on("close", () => {
57
- this.$logger.info("Backend socket closed");
58
- frontendSocket.destroy();
59
- server.close();
60
- delete this.deviceTcpServers[cacheKey];
45
+ this.deviceTcpServers[cacheKey] = server;
46
+ server.on("connection", (frontendSocket) => __awaiter(this, void 0, void 0, function* () {
47
+ this.$logger.info("Frontend client connected.");
48
+ frontendSocket.on("end", () => {
49
+ this.$logger.info("Frontend socket closed!");
50
+ if (!this.$options.watch) {
51
+ process.exit(0);
52
+ }
53
+ });
54
+ const appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
55
+ this.$logger.info("Backend socket created.");
56
+ appDebugSocket.on("end", () => {
57
+ this.$logger.info("Backend socket closed!");
58
+ if (!this.$options.watch) {
59
+ process.exit(0);
60
+ }
61
+ });
62
+ frontendSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
63
+ this.$logger.info("Frontend socket closed");
64
+ yield device.destroyDebugSocket(appId);
65
+ }));
66
+ appDebugSocket.on("close", () => {
67
+ this.$logger.info("Backend socket closed");
68
+ frontendSocket.destroy();
69
+ server.close();
70
+ delete this.deviceTcpServers[cacheKey];
71
+ });
72
+ appDebugSocket.pipe(frontendSocket);
73
+ frontendSocket.pipe(appDebugSocket);
74
+ frontendSocket.resume();
75
+ }));
76
+ const socketFileLocation = yield this.$tempService.path({
77
+ suffix: ".sock",
61
78
  });
62
- appDebugSocket.pipe(frontendSocket);
63
- frontendSocket.pipe(appDebugSocket);
64
- frontendSocket.resume();
79
+ server.listen(socketFileLocation);
80
+ if (!this.$options.client) {
81
+ this.$logger.info("socket-file-location: " + socketFileLocation);
82
+ }
83
+ return server;
65
84
  });
66
- const socketFileLocation = await this.$tempService.path({
67
- suffix: ".sock",
68
- });
69
- server.listen(socketFileLocation);
70
- if (!this.$options.client) {
71
- this.$logger.info("socket-file-location: " + socketFileLocation);
72
- }
73
- return server;
74
85
  }
75
- async ensureWebSocketProxy(device, appId, projectName, projectDir) {
76
- const existingWebProxy = this.deviceWebServers[`${device.deviceInfo.identifier}-${appId}`];
77
- const result = existingWebProxy ||
78
- (await this.addWebSocketProxy(device, appId, projectName, projectDir));
79
- this.$logger.info("Opened localhost " + result.options.port);
80
- return result;
86
+ ensureWebSocketProxy(device, appId, projectName, projectDir) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ const existingWebProxy = this.deviceWebServers[`${device.deviceInfo.identifier}-${appId}`];
89
+ const result = existingWebProxy ||
90
+ (yield this.addWebSocketProxy(device, appId, projectName, projectDir));
91
+ // TODO: do not remove till VSCode waits for this message in order to reattach
92
+ this.$logger.info("Opened localhost " + result.options.port);
93
+ return result;
94
+ });
81
95
  }
82
- async addWebSocketProxy(device, appId, projectName, projectDir) {
83
- let clientConnectionLockRelease;
84
- const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
85
- const existingServer = this.deviceWebServers[cacheKey];
86
- if (existingServer) {
87
- this.$errors.fail(`Web socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
88
- }
89
- const localPort = await this.$net.getAvailablePortInRange(41000);
90
- this.$logger.info("\nSetting up debugger proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
91
- let currentAppSocket = null;
92
- let currentWebSocket = null;
93
- const server = new ws.Server({
94
- port: localPort,
95
- verifyClient: async (info, callback) => {
96
- let acceptHandshake = true;
97
- clientConnectionLockRelease = null;
98
- try {
99
- clientConnectionLockRelease = await this.$lockService.lock(`debug-connection-${device.deviceInfo.identifier}-${appId}.lock`);
100
- this.$logger.info("Frontend client connected.");
101
- let appDebugSocket;
102
- if (currentAppSocket) {
103
- currentAppSocket.removeAllListeners();
104
- currentAppSocket = null;
105
- if (currentWebSocket) {
106
- currentWebSocket.removeAllListeners();
107
- currentWebSocket.close();
108
- currentWebSocket = null;
96
+ addWebSocketProxy(device, appId, projectName, projectDir) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ let clientConnectionLockRelease;
99
+ const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
100
+ const existingServer = this.deviceWebServers[cacheKey];
101
+ if (existingServer) {
102
+ this.$errors.fail(`Web socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
103
+ }
104
+ // NOTE: We will try to provide command line options to select ports, at least on the localhost.
105
+ const localPort = yield this.$net.getAvailablePortInRange(41000);
106
+ this.$logger.info("\nSetting up debugger proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
107
+ // NB: When the inspector frontend connects we might not have connected to the inspector backend yet.
108
+ // That's why we use the verifyClient callback of the websocket server to stall the upgrade request until we connect.
109
+ // We store the socket that connects us to the device in the upgrade request object itself and later on retrieve it
110
+ // in the connection callback.
111
+ let currentAppSocket = null;
112
+ let currentWebSocket = null;
113
+ const server = new ws.Server({
114
+ port: localPort,
115
+ verifyClient: (info, callback) => __awaiter(this, void 0, void 0, function* () {
116
+ let acceptHandshake = true;
117
+ clientConnectionLockRelease = null;
118
+ try {
119
+ clientConnectionLockRelease = yield this.$lockService.lock(`debug-connection-${device.deviceInfo.identifier}-${appId}.lock`);
120
+ this.$logger.info("Frontend client connected.");
121
+ let appDebugSocket;
122
+ if (currentAppSocket) {
123
+ currentAppSocket.removeAllListeners();
124
+ currentAppSocket = null;
125
+ if (currentWebSocket) {
126
+ currentWebSocket.removeAllListeners();
127
+ currentWebSocket.close();
128
+ currentWebSocket = null;
129
+ }
130
+ yield device.destroyDebugSocket(appId);
131
+ }
132
+ appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
133
+ currentAppSocket = appDebugSocket;
134
+ this.$logger.info("Backend socket created.");
135
+ info.req["__deviceSocket"] = appDebugSocket;
136
+ }
137
+ catch (err) {
138
+ if (clientConnectionLockRelease) {
139
+ clientConnectionLockRelease();
140
+ }
141
+ err.deviceIdentifier = device.deviceInfo.identifier;
142
+ this.$logger.trace(err);
143
+ this.emit(constants_1.CONNECTION_ERROR_EVENT_NAME, err);
144
+ acceptHandshake = false;
145
+ this.$logger.warn(`Cannot connect to device socket. The error message is '${err.message}'.`);
146
+ }
147
+ callback(acceptHandshake);
148
+ }),
149
+ });
150
+ this.deviceWebServers[cacheKey] = server;
151
+ server.on("connection", (webSocket, req) => {
152
+ currentWebSocket = webSocket;
153
+ const encoding = "utf16le";
154
+ const appDebugSocket = req["__deviceSocket"];
155
+ const packets = new ios_device_lib_1.MessageUnpackStream();
156
+ appDebugSocket.pipe(packets);
157
+ packets.on("data", (buffer) => {
158
+ const message = buffer.toString(encoding);
159
+ if (webSocket.readyState === webSocket.OPEN) {
160
+ if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
161
+ console.log({
162
+ msgFromRuntime: JSON.parse(message),
163
+ });
109
164
  }
110
- await device.destroyDebugSocket(appId);
165
+ webSocket.send(message);
111
166
  }
112
- appDebugSocket = await device.getDebugSocket(appId, projectName, projectDir);
113
- currentAppSocket = appDebugSocket;
114
- this.$logger.info("Backend socket created.");
115
- info.req["__deviceSocket"] = appDebugSocket;
116
- }
117
- catch (err) {
118
- if (clientConnectionLockRelease) {
119
- clientConnectionLockRelease();
167
+ else {
168
+ this.$logger.trace(`Received message ${message}, but unable to send it to webSocket as its state is: ${webSocket.readyState}`);
120
169
  }
121
- err.deviceIdentifier = device.deviceInfo.identifier;
122
- this.$logger.trace(err);
123
- this.emit(constants_1.CONNECTION_ERROR_EVENT_NAME, err);
124
- acceptHandshake = false;
125
- this.$logger.warn(`Cannot connect to device socket. The error message is '${err.message}'.`);
126
- }
127
- callback(acceptHandshake);
128
- },
129
- });
130
- this.deviceWebServers[cacheKey] = server;
131
- server.on("connection", (webSocket, req) => {
132
- currentWebSocket = webSocket;
133
- const encoding = "utf16le";
134
- const appDebugSocket = req["__deviceSocket"];
135
- const packets = new ios_device_lib_1.MessageUnpackStream();
136
- appDebugSocket.pipe(packets);
137
- packets.on("data", (buffer) => {
138
- const message = buffer.toString(encoding);
139
- if (webSocket.readyState === webSocket.OPEN) {
170
+ });
171
+ webSocket.on("error", (err) => {
172
+ this.$logger.trace("Error on debugger websocket", err);
173
+ });
174
+ appDebugSocket.on("error", (err) => {
175
+ this.$logger.trace("Error on debugger deviceSocket", err);
176
+ });
177
+ webSocket.on("message", (message) => {
178
+ const msg = message.toString();
140
179
  if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
141
180
  console.log({
142
- msgFromRuntime: JSON.parse(message),
181
+ msgFromDevtools: JSON.parse(msg),
143
182
  });
144
183
  }
145
- webSocket.send(message);
146
- }
147
- else {
148
- this.$logger.trace(`Received message ${message}, but unable to send it to webSocket as its state is: ${webSocket.readyState}`);
149
- }
150
- });
151
- webSocket.on("error", (err) => {
152
- this.$logger.trace("Error on debugger websocket", err);
153
- });
154
- appDebugSocket.on("error", (err) => {
155
- this.$logger.trace("Error on debugger deviceSocket", err);
156
- });
157
- webSocket.on("message", (message) => {
158
- const msg = message.toString();
159
- if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
160
- console.log({
161
- msgFromDevtools: JSON.parse(msg),
162
- });
163
- }
164
- const length = Buffer.byteLength(msg, encoding);
165
- const payload = Buffer.allocUnsafe(length + 4);
166
- payload.writeInt32BE(length, 0);
167
- payload.write(msg, 4, length, encoding);
168
- appDebugSocket.write(payload);
169
- });
170
- appDebugSocket.on("close", () => {
171
- currentAppSocket = null;
172
- this.$logger.trace("Backend socket closed!");
173
- webSocket.close();
174
- });
175
- webSocket.on("close", async () => {
176
- currentWebSocket = null;
177
- this.$logger.trace("Frontend socket closed!");
178
- appDebugSocket.unpipe(packets);
179
- packets.destroy();
180
- await device.destroyDebugSocket(appId);
181
- if (!this.$options.watch) {
182
- process.exit(0);
183
- }
184
+ const length = Buffer.byteLength(msg, encoding);
185
+ const payload = Buffer.allocUnsafe(length + 4);
186
+ payload.writeInt32BE(length, 0);
187
+ payload.write(msg, 4, length, encoding);
188
+ appDebugSocket.write(payload);
189
+ });
190
+ appDebugSocket.on("close", () => {
191
+ currentAppSocket = null;
192
+ this.$logger.trace("Backend socket closed!");
193
+ webSocket.close();
194
+ });
195
+ webSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
196
+ currentWebSocket = null;
197
+ this.$logger.trace("Frontend socket closed!");
198
+ appDebugSocket.unpipe(packets);
199
+ packets.destroy();
200
+ yield device.destroyDebugSocket(appId);
201
+ if (!this.$options.watch) {
202
+ process.exit(0);
203
+ }
204
+ }));
205
+ clientConnectionLockRelease();
184
206
  });
185
- clientConnectionLockRelease();
207
+ return server;
186
208
  });
187
- return server;
188
209
  }
189
210
  removeAllProxies() {
190
211
  let deviceId;
@@ -200,3 +221,4 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
200
221
  }
201
222
  exports.AppDebugSocketProxyFactory = AppDebugSocketProxyFactory;
202
223
  yok_1.injector.register("appDebugSocketProxyFactory", AppDebugSocketProxyFactory);
224
+ //# sourceMappingURL=app-debug-socket-proxy-factory.js.map
@@ -6,6 +6,8 @@ const constants_1 = require("../../common/constants");
6
6
  const yok_1 = require("../../common/yok");
7
7
  class IOSNotification extends events_1.EventEmitter {
8
8
  getAttachRequest(appId, deviceId) {
9
+ // It could be too early to emit this event, but we rely that if you construct attach request,
10
+ // you will execute it immediately.
9
11
  this.emit(constants_1.ATTACH_REQUEST_EVENT_NAME, { deviceId, appId });
10
12
  return this.formatNotification(IOSNotification.ATTACH_REQUEST_NOTIFICATION_NAME, appId);
11
13
  }
@@ -22,9 +24,10 @@ class IOSNotification extends events_1.EventEmitter {
22
24
  return `${appId}:NativeScript.Debug.${notification}`;
23
25
  }
24
26
  }
25
- exports.IOSNotification = IOSNotification;
26
27
  IOSNotification.REFRESH_REQUEST_NOTIFICATION_NAME = "RefreshRequest";
27
28
  IOSNotification.APP_REFRESH_STARTED_NOTIFICATION_NAME = "AppRefreshStarted";
28
29
  IOSNotification.ATTACH_REQUEST_NOTIFICATION_NAME = "AttachRequest";
29
30
  IOSNotification.READY_FOR_ATTACH_NOTIFICATION_NAME = "ReadyForAttach";
31
+ exports.IOSNotification = IOSNotification;
30
32
  yok_1.injector.register("iOSNotification", IOSNotification);
33
+ //# sourceMappingURL=notification.js.map