@akylas/nativescript-cli 8.8.2 → 8.8.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 (275) hide show
  1. package/lib/android-tools-info.js +9 -20
  2. package/lib/base-package-manager.js +47 -64
  3. package/lib/bun-package-manager.js +65 -88
  4. package/lib/color.js +2 -2
  5. package/lib/commands/add-platform.js +14 -30
  6. package/lib/commands/apple-login.js +18 -29
  7. package/lib/commands/appstore-list.js +34 -45
  8. package/lib/commands/appstore-upload.js +55 -68
  9. package/lib/commands/build.js +57 -86
  10. package/lib/commands/clean.js +161 -176
  11. package/lib/commands/command-base.js +14 -27
  12. package/lib/commands/config.js +51 -70
  13. package/lib/commands/create-project.js +210 -229
  14. package/lib/commands/debug.js +66 -88
  15. package/lib/commands/deploy.js +28 -44
  16. package/lib/commands/embedding/embed.js +33 -52
  17. package/lib/commands/extensibility/install-extension.js +5 -16
  18. package/lib/commands/extensibility/list-extensions.js +13 -24
  19. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  20. package/lib/commands/fonts.js +30 -41
  21. package/lib/commands/generate-assets.js +13 -28
  22. package/lib/commands/generate-help.js +2 -13
  23. package/lib/commands/generate.js +17 -26
  24. package/lib/commands/info.js +2 -13
  25. package/lib/commands/install.js +34 -49
  26. package/lib/commands/list-platforms.js +14 -25
  27. package/lib/commands/migrate.js +15 -26
  28. package/lib/commands/native-add.js +23 -46
  29. package/lib/commands/platform-clean.js +19 -32
  30. package/lib/commands/plugin/add-plugin.js +12 -25
  31. package/lib/commands/plugin/build-plugin.js +34 -39
  32. package/lib/commands/plugin/create-plugin.js +110 -133
  33. package/lib/commands/plugin/list-plugins.js +22 -33
  34. package/lib/commands/plugin/remove-plugin.js +20 -33
  35. package/lib/commands/plugin/update-plugin.js +20 -33
  36. package/lib/commands/post-install.js +20 -33
  37. package/lib/commands/prepare.js +19 -35
  38. package/lib/commands/preview.js +49 -62
  39. package/lib/commands/remove-platform.js +7 -18
  40. package/lib/commands/resources/resources-update.js +13 -26
  41. package/lib/commands/run.js +55 -76
  42. package/lib/commands/start.js +6 -19
  43. package/lib/commands/test-init.js +123 -134
  44. package/lib/commands/test.js +66 -89
  45. package/lib/commands/typings.js +126 -142
  46. package/lib/commands/update-platform.js +22 -35
  47. package/lib/commands/update.js +30 -43
  48. package/lib/common/child-process.js +53 -72
  49. package/lib/common/codeGeneration/code-entity.js +1 -1
  50. package/lib/common/codeGeneration/code-printer.js +1 -1
  51. package/lib/common/command-params.js +7 -18
  52. package/lib/common/commands/analytics.js +27 -40
  53. package/lib/common/commands/autocompletion.js +39 -56
  54. package/lib/common/commands/device/device-log-stream.js +12 -23
  55. package/lib/common/commands/device/get-file.js +22 -33
  56. package/lib/common/commands/device/list-applications.js +12 -23
  57. package/lib/common/commands/device/list-devices.js +72 -87
  58. package/lib/common/commands/device/list-files.js +23 -34
  59. package/lib/common/commands/device/put-file.js +22 -33
  60. package/lib/common/commands/device/run-application.js +12 -25
  61. package/lib/common/commands/device/stop-application.js +11 -22
  62. package/lib/common/commands/device/uninstall-application.js +6 -17
  63. package/lib/common/commands/generate-messages.js +17 -28
  64. package/lib/common/commands/help.js +20 -33
  65. package/lib/common/commands/package-manager-get.js +6 -17
  66. package/lib/common/commands/package-manager-set.js +9 -20
  67. package/lib/common/commands/post-install.js +2 -13
  68. package/lib/common/commands/preuninstall.js +23 -38
  69. package/lib/common/commands/proxy/proxy-base.js +8 -19
  70. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  71. package/lib/common/commands/proxy/proxy-get.js +3 -14
  72. package/lib/common/commands/proxy/proxy-set.js +87 -100
  73. package/lib/common/constants.js +11 -11
  74. package/lib/common/decorators.js +10 -22
  75. package/lib/common/dispatchers.js +79 -96
  76. package/lib/common/errors.js +89 -104
  77. package/lib/common/file-system.js +106 -127
  78. package/lib/common/header.js +1 -2
  79. package/lib/common/helpers.js +149 -178
  80. package/lib/common/host-info.js +37 -50
  81. package/lib/common/http-client.js +93 -108
  82. package/lib/common/logger/appenders/cli-appender.js +1 -2
  83. package/lib/common/logger/appenders/emit-appender.js +1 -2
  84. package/lib/common/logger/layouts/cli-layout.js +1 -2
  85. package/lib/common/logger/logger.js +1 -1
  86. package/lib/common/mobile/android/android-application-manager.js +121 -142
  87. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  88. package/lib/common/mobile/android/android-debug-bridge.js +87 -112
  89. package/lib/common/mobile/android/android-device-file-system.js +98 -131
  90. package/lib/common/mobile/android/android-device-hash-service.js +50 -75
  91. package/lib/common/mobile/android/android-device.js +74 -91
  92. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  93. package/lib/common/mobile/android/android-log-filter.js +1 -1
  94. package/lib/common/mobile/android/android-virtual-device-service.js +76 -97
  95. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  96. package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
  97. package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
  98. package/lib/common/mobile/android/logcat-helper.js +108 -127
  99. package/lib/common/mobile/application-manager-base.js +84 -107
  100. package/lib/common/mobile/device-log-provider-base.js +7 -18
  101. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  102. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  103. package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
  104. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  105. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  106. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
  107. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  108. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
  109. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
  110. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  111. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  112. package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
  113. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
  114. package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
  115. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  116. package/lib/common/mobile/mobile-core/devices-service.js +385 -436
  117. package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
  118. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
  119. package/lib/common/mobile/mobile-helper.js +15 -26
  120. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  121. package/lib/common/opener.js +2 -2
  122. package/lib/common/plist-parser.js +3 -3
  123. package/lib/common/prompter.js +90 -105
  124. package/lib/common/queue.js +9 -20
  125. package/lib/common/services/auto-completion-service.js +39 -52
  126. package/lib/common/services/cancellation.js +17 -28
  127. package/lib/common/services/commands-service.js +146 -169
  128. package/lib/common/services/help-service.js +132 -157
  129. package/lib/common/services/hooks-service.js +93 -108
  130. package/lib/common/services/ios-notification-service.js +21 -34
  131. package/lib/common/services/json-file-settings-service.js +52 -71
  132. package/lib/common/services/lock-service.js +35 -52
  133. package/lib/common/services/message-contract-generator.js +35 -46
  134. package/lib/common/services/micro-templating-service.js +4 -15
  135. package/lib/common/services/net-service.js +90 -107
  136. package/lib/common/services/project-files-manager.js +10 -23
  137. package/lib/common/services/proxy-service.js +13 -24
  138. package/lib/common/services/qr.js +13 -24
  139. package/lib/common/services/settings-service.js +1 -1
  140. package/lib/common/services/xcode-select-service.js +20 -35
  141. package/lib/common/utils.js +2 -2
  142. package/lib/common/validators/project-name-validator.js +1 -1
  143. package/lib/common/validators/validation-result.js +1 -1
  144. package/lib/common/verify-node-version.js +2 -3
  145. package/lib/common/yok.js +23 -36
  146. package/lib/config.js +7 -58
  147. package/lib/constants.js +24 -24
  148. package/lib/controllers/build-controller.js +82 -99
  149. package/lib/controllers/debug-controller.js +107 -128
  150. package/lib/controllers/deploy-controller.js +17 -22
  151. package/lib/controllers/migrate-controller.js +722 -795
  152. package/lib/controllers/platform-controller.js +72 -87
  153. package/lib/controllers/prepare-controller.js +266 -299
  154. package/lib/controllers/run-controller.js +392 -406
  155. package/lib/controllers/update-controller-base.js +16 -29
  156. package/lib/controllers/update-controller.js +94 -119
  157. package/lib/data/prepare-data.js +4 -1
  158. package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
  159. package/lib/definitions/livesync.d.ts +1 -1
  160. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  161. package/lib/detached-processes/cleanup-process.js +16 -25
  162. package/lib/device-path-provider.js +23 -34
  163. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
  164. package/lib/device-sockets/ios/notification.js +1 -1
  165. package/lib/device-sockets/ios/socket-request-executor.js +24 -39
  166. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  167. package/lib/helpers/deploy-command-helper.js +45 -49
  168. package/lib/helpers/key-command-helper.js +4 -13
  169. package/lib/helpers/livesync-command-helper.js +137 -152
  170. package/lib/helpers/network-connectivity-validator.js +6 -17
  171. package/lib/helpers/options-track-helper.js +6 -17
  172. package/lib/helpers/platform-command-helper.js +99 -120
  173. package/lib/key-commands/index.js +161 -211
  174. package/lib/nativescript-cli.js +5 -14
  175. package/lib/node-package-manager.js +81 -104
  176. package/lib/options.js +3 -12
  177. package/lib/package-installation-manager.js +130 -165
  178. package/lib/package-manager.js +63 -86
  179. package/lib/platform-command-param.js +4 -15
  180. package/lib/pnpm-package-manager.js +59 -78
  181. package/lib/project-data.js +1 -1
  182. package/lib/providers/project-files-provider.js +1 -1
  183. package/lib/services/analytics/analytics-broker-process.js +13 -22
  184. package/lib/services/analytics/analytics-broker.js +17 -30
  185. package/lib/services/analytics/analytics-service.js +161 -198
  186. package/lib/services/analytics/google-analytics-provider.js +41 -56
  187. package/lib/services/analytics-settings-service.js +15 -32
  188. package/lib/services/android/android-bundle-tool-service.js +43 -60
  189. package/lib/services/android/gradle-build-args-service.js +9 -20
  190. package/lib/services/android/gradle-build-service.js +34 -47
  191. package/lib/services/android/gradle-command-service.js +22 -35
  192. package/lib/services/android-device-debug-service.js +90 -117
  193. package/lib/services/android-plugin-build-service.js +230 -256
  194. package/lib/services/android-project-service.js +163 -199
  195. package/lib/services/android-resources-migration-service.js +51 -64
  196. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  197. package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
  198. package/lib/services/assets-generation/assets-generation-service.js +98 -115
  199. package/lib/services/build-artifacts-service.js +9 -20
  200. package/lib/services/build-info-file-service.js +20 -35
  201. package/lib/services/cleanup-service.js +47 -76
  202. package/lib/services/cocoapods-service.js +115 -136
  203. package/lib/services/device/device-install-app-service.js +73 -90
  204. package/lib/services/doctor-service.js +99 -118
  205. package/lib/services/extensibility-service.js +81 -100
  206. package/lib/services/files-hash-service.js +26 -43
  207. package/lib/services/hmr-status-service.js +1 -1
  208. package/lib/services/initialize-service.js +37 -50
  209. package/lib/services/ios/export-options-plist-service.js +38 -51
  210. package/lib/services/ios/ios-signing-service.js +161 -180
  211. package/lib/services/ios/spm-service.js +40 -53
  212. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  213. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  214. package/lib/services/ios/xcodebuild-service.js +50 -69
  215. package/lib/services/ios-debugger-port-service.js +23 -36
  216. package/lib/services/ios-device-debug-service.js +75 -102
  217. package/lib/services/ios-entitlements-service.js +31 -42
  218. package/lib/services/ios-extensions-service.js +18 -29
  219. package/lib/services/ios-project-service.js +405 -460
  220. package/lib/services/ios-provision-service.js +108 -129
  221. package/lib/services/ios-watch-app-service.js +21 -32
  222. package/lib/services/ip-service.js +38 -53
  223. package/lib/services/itmstransporter-service.js +129 -152
  224. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  225. package/lib/services/livesync/android-device-livesync-service.js +120 -149
  226. package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -152
  227. package/lib/services/livesync/android-livesync-service.js +14 -35
  228. package/lib/services/livesync/android-livesync-tool.js +89 -112
  229. package/lib/services/livesync/device-livesync-service-base.js +15 -28
  230. package/lib/services/livesync/ios-device-livesync-service.js +114 -143
  231. package/lib/services/livesync/ios-livesync-service.js +42 -58
  232. package/lib/services/livesync/platform-livesync-service-base.js +94 -119
  233. package/lib/services/log-parser-service.js +1 -1
  234. package/lib/services/log-source-map-service.js +30 -41
  235. package/lib/services/marking-mode-service.js +15 -28
  236. package/lib/services/npm-config-service.js +1 -1
  237. package/lib/services/pacote-service.js +49 -64
  238. package/lib/services/performance-service.js +1 -1
  239. package/lib/services/platform/add-platform-service.js +50 -71
  240. package/lib/services/platform/platform-validation-service.js +22 -33
  241. package/lib/services/platform/prepare-native-platform-service.js +49 -62
  242. package/lib/services/platform-environment-requirements.js +26 -37
  243. package/lib/services/plugins-service.js +122 -147
  244. package/lib/services/project-backup-service.js +1 -1
  245. package/lib/services/project-changes-service.js +124 -141
  246. package/lib/services/project-cleanup-service.js +64 -77
  247. package/lib/services/project-config-service.js +71 -80
  248. package/lib/services/project-data-service.js +101 -118
  249. package/lib/services/project-name-service.js +28 -43
  250. package/lib/services/project-service.js +84 -103
  251. package/lib/services/project-templates-service.js +52 -67
  252. package/lib/services/start-service.js +41 -59
  253. package/lib/services/temp-service.js +8 -21
  254. package/lib/services/terminal-spinner-service.js +13 -24
  255. package/lib/services/test-execution-service.js +59 -72
  256. package/lib/services/test-initialization-service.js +2 -2
  257. package/lib/services/timeline-profiler-service.js +1 -1
  258. package/lib/services/versions-service.js +119 -138
  259. package/lib/services/webpack/webpack-compiler-service.js +211 -231
  260. package/lib/services/xcconfig-service.js +8 -19
  261. package/lib/sys-info.js +45 -62
  262. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  263. package/lib/yarn-package-manager.js +59 -78
  264. package/lib/yarn2-package-manager.js +60 -79
  265. package/package.json +56 -54
  266. package/vendor/aab-tool/bundletool.jar +0 -0
  267. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
  268. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  269. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
  270. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  271. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  272. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  273. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
  274. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  275. package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
@@ -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.AppDebugSocketProxyFactory = void 0;
13
4
  const events_1 = require("events");
@@ -31,175 +22,169 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
31
22
  getTCPSocketProxy(deviceIdentifier, appId) {
32
23
  return this.deviceTcpServers[`${deviceIdentifier}-${appId}`];
33
24
  }
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,
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
+ }
44
43
  });
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",
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
+ }
51
+ });
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];
78
61
  });
79
- server.listen(socketFileLocation);
80
- if (!this.$options.client) {
81
- this.$logger.info("socket-file-location: " + socketFileLocation);
82
- }
83
- return server;
62
+ appDebugSocket.pipe(frontendSocket);
63
+ frontendSocket.pipe(appDebugSocket);
64
+ frontendSocket.resume();
84
65
  });
85
- }
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
- this.$logger.info("Opened localhost " + result.options.port);
92
- return result;
66
+ const socketFileLocation = await this.$tempService.path({
67
+ suffix: ".sock",
93
68
  });
69
+ server.listen(socketFileLocation);
70
+ if (!this.$options.client) {
71
+ this.$logger.info("socket-file-location: " + socketFileLocation);
72
+ }
73
+ return server;
94
74
  }
95
- addWebSocketProxy(device, appId, projectName, projectDir) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- let clientConnectionLockRelease;
98
- const cacheKey = `${device.deviceInfo.identifier}-${appId}`;
99
- const existingServer = this.deviceWebServers[cacheKey];
100
- if (existingServer) {
101
- this.$errors.fail(`Web socket proxy is already running for device '${device.deviceInfo.identifier}' and app '${appId}'`);
102
- }
103
- const localPort = yield this.$net.getAvailablePortInRange(41000);
104
- this.$logger.info("\nSetting up debugger proxy...\nPress Ctrl + C to terminate, or disconnect.\n");
105
- let currentAppSocket = null;
106
- let currentWebSocket = null;
107
- const server = new ws.Server({
108
- port: localPort,
109
- verifyClient: (info, callback) => __awaiter(this, void 0, void 0, function* () {
110
- let acceptHandshake = true;
111
- clientConnectionLockRelease = null;
112
- try {
113
- clientConnectionLockRelease = yield this.$lockService.lock(`debug-connection-${device.deviceInfo.identifier}-${appId}.lock`);
114
- this.$logger.info("Frontend client connected.");
115
- let appDebugSocket;
116
- if (currentAppSocket) {
117
- currentAppSocket.removeAllListeners();
118
- currentAppSocket = null;
119
- if (currentWebSocket) {
120
- currentWebSocket.removeAllListeners();
121
- currentWebSocket.close();
122
- currentWebSocket = null;
123
- }
124
- yield device.destroyDebugSocket(appId);
125
- }
126
- appDebugSocket = yield device.getDebugSocket(appId, projectName, projectDir);
127
- currentAppSocket = appDebugSocket;
128
- this.$logger.info("Backend socket created.");
129
- info.req["__deviceSocket"] = appDebugSocket;
130
- }
131
- catch (err) {
132
- if (clientConnectionLockRelease) {
133
- clientConnectionLockRelease();
134
- }
135
- err.deviceIdentifier = device.deviceInfo.identifier;
136
- this.$logger.trace(err);
137
- this.emit(constants_1.CONNECTION_ERROR_EVENT_NAME, err);
138
- acceptHandshake = false;
139
- this.$logger.warn(`Cannot connect to device socket. The error message is '${err.message}'.`);
140
- }
141
- callback(acceptHandshake);
142
- }),
143
- });
144
- this.deviceWebServers[cacheKey] = server;
145
- server.on("connection", (webSocket, req) => {
146
- currentWebSocket = webSocket;
147
- const encoding = "utf16le";
148
- const appDebugSocket = req["__deviceSocket"];
149
- const packets = new ios_device_lib_1.MessageUnpackStream();
150
- appDebugSocket.pipe(packets);
151
- packets.on("data", (buffer) => {
152
- const message = buffer.toString(encoding);
153
- if (webSocket.readyState === webSocket.OPEN) {
154
- if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
155
- console.log({
156
- msgFromRuntime: JSON.parse(message),
157
- });
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;
81
+ }
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;
158
109
  }
159
- webSocket.send(message);
110
+ await device.destroyDebugSocket(appId);
160
111
  }
161
- else {
162
- this.$logger.trace(`Received message ${message}, but unable to send it to webSocket as its state is: ${webSocket.readyState}`);
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();
163
120
  }
164
- });
165
- webSocket.on("error", (err) => {
166
- this.$logger.trace("Error on debugger websocket", err);
167
- });
168
- appDebugSocket.on("error", (err) => {
169
- this.$logger.trace("Error on debugger deviceSocket", err);
170
- });
171
- webSocket.on("message", (message) => {
172
- const msg = message.toString();
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) {
173
140
  if (process.env.DEBUG_DEVTOOLS_SOCKETS) {
174
141
  console.log({
175
- msgFromDevtools: JSON.parse(msg),
142
+ msgFromRuntime: JSON.parse(message),
176
143
  });
177
144
  }
178
- const length = Buffer.byteLength(msg, encoding);
179
- const payload = Buffer.allocUnsafe(length + 4);
180
- payload.writeInt32BE(length, 0);
181
- payload.write(msg, 4, length, encoding);
182
- appDebugSocket.write(payload);
183
- });
184
- appDebugSocket.on("close", () => {
185
- currentAppSocket = null;
186
- this.$logger.trace("Backend socket closed!");
187
- webSocket.close();
188
- });
189
- webSocket.on("close", () => __awaiter(this, void 0, void 0, function* () {
190
- currentWebSocket = null;
191
- this.$logger.trace("Frontend socket closed!");
192
- appDebugSocket.unpipe(packets);
193
- packets.destroy();
194
- yield device.destroyDebugSocket(appId);
195
- if (!this.$options.watch) {
196
- process.exit(0);
197
- }
198
- }));
199
- clientConnectionLockRelease();
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
+ }
200
184
  });
201
- return server;
185
+ clientConnectionLockRelease();
202
186
  });
187
+ return server;
203
188
  }
204
189
  removeAllProxies() {
205
190
  let deviceId;
@@ -22,9 +22,9 @@ class IOSNotification extends events_1.EventEmitter {
22
22
  return `${appId}:NativeScript.Debug.${notification}`;
23
23
  }
24
24
  }
25
+ exports.IOSNotification = IOSNotification;
25
26
  IOSNotification.REFRESH_REQUEST_NOTIFICATION_NAME = "RefreshRequest";
26
27
  IOSNotification.APP_REFRESH_STARTED_NOTIFICATION_NAME = "AppRefreshStarted";
27
28
  IOSNotification.ATTACH_REQUEST_NOTIFICATION_NAME = "AttachRequest";
28
29
  IOSNotification.READY_FOR_ATTACH_NOTIFICATION_NAME = "ReadyForAttach";
29
- exports.IOSNotification = IOSNotification;
30
30
  yok_1.injector.register("iOSNotification", IOSNotification);
@@ -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.IOSSocketRequestExecutor = void 0;
13
4
  const constants = require("../../common/constants");
@@ -18,38 +9,32 @@ class IOSSocketRequestExecutor {
18
9
  this.$iOSNotification = $iOSNotification;
19
10
  this.$iOSNotificationService = $iOSNotificationService;
20
11
  }
21
- executeAttachRequest(device, timeout, appId) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const deviceId = device.deviceInfo.identifier;
24
- const mainRequestName = this.$iOSNotification.getAttachRequest(appId, deviceId);
25
- const readyRequestName = this.$iOSNotification.getReadyForAttach(appId);
26
- yield this.executeRequest(mainRequestName, readyRequestName, appId, deviceId, timeout);
27
- });
12
+ async executeAttachRequest(device, timeout, appId) {
13
+ const deviceId = device.deviceInfo.identifier;
14
+ const mainRequestName = this.$iOSNotification.getAttachRequest(appId, deviceId);
15
+ const readyRequestName = this.$iOSNotification.getReadyForAttach(appId);
16
+ await this.executeRequest(mainRequestName, readyRequestName, appId, deviceId, timeout);
28
17
  }
29
- executeRefreshRequest(device, timeout, appId) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- const deviceId = device.deviceInfo.identifier;
32
- const mainRequestName = this.$iOSNotification.getRefreshRequest(appId);
33
- const refreshRequestStartedName = this.$iOSNotification.getAppRefreshStarted(appId);
34
- const result = yield this.executeRequest(mainRequestName, refreshRequestStartedName, appId, deviceId, timeout);
35
- return result;
36
- });
18
+ async executeRefreshRequest(device, timeout, appId) {
19
+ const deviceId = device.deviceInfo.identifier;
20
+ const mainRequestName = this.$iOSNotification.getRefreshRequest(appId);
21
+ const refreshRequestStartedName = this.$iOSNotification.getAppRefreshStarted(appId);
22
+ const result = await this.executeRequest(mainRequestName, refreshRequestStartedName, appId, deviceId, timeout);
23
+ return result;
37
24
  }
38
- executeRequest(mainRequestName, successfulyExecutedNotificationName, appId, deviceId, timeout) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- let isSuccessful = false;
41
- try {
42
- const socket = yield this.$iOSNotificationService.postNotification(deviceId, successfulyExecutedNotificationName, constants.IOS_OBSERVE_NOTIFICATION_COMMAND_TYPE);
43
- const notificationPromise = this.$iOSNotificationService.awaitNotification(deviceId, +socket, timeout);
44
- yield this.$iOSNotificationService.postNotification(deviceId, mainRequestName);
45
- yield notificationPromise;
46
- isSuccessful = true;
47
- }
48
- catch (e) {
49
- this.$errors.fail(`The application ${appId} does not appear to be running on ${deviceId} or is not built with debugging enabled. Try starting the application manually.`);
50
- }
51
- return isSuccessful;
52
- });
25
+ async executeRequest(mainRequestName, successfulyExecutedNotificationName, appId, deviceId, timeout) {
26
+ let isSuccessful = false;
27
+ try {
28
+ const socket = await this.$iOSNotificationService.postNotification(deviceId, successfulyExecutedNotificationName, constants.IOS_OBSERVE_NOTIFICATION_COMMAND_TYPE);
29
+ const notificationPromise = this.$iOSNotificationService.awaitNotification(deviceId, +socket, timeout);
30
+ await this.$iOSNotificationService.postNotification(deviceId, mainRequestName);
31
+ await notificationPromise;
32
+ isSuccessful = true;
33
+ }
34
+ catch (e) {
35
+ this.$errors.fail(`The application ${appId} does not appear to be running on ${deviceId} or is not built with debugging enabled. Try starting the application manually.`);
36
+ }
37
+ return isSuccessful;
53
38
  }
54
39
  }
55
40
  exports.IOSSocketRequestExecutor = IOSSocketRequestExecutor;
@@ -46,7 +46,7 @@ class AndroidBundleValidatorHelper extends version_validator_helper_1.VersionVal
46
46
  }
47
47
  }
48
48
  }
49
+ exports.AndroidBundleValidatorHelper = AndroidBundleValidatorHelper;
49
50
  AndroidBundleValidatorHelper.MIN_RUNTIME_VERSION = "5.0.0";
50
51
  AndroidBundleValidatorHelper.MIN_ANDROID_WITH_AAB_SUPPORT = "4.4.0";
51
- exports.AndroidBundleValidatorHelper = AndroidBundleValidatorHelper;
52
52
  yok_1.injector.register("androidBundleValidatorHelper", AndroidBundleValidatorHelper);
@@ -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.DeployCommandHelper = void 0;
13
4
  const yok_1 = require("../common/yok");
@@ -21,49 +12,54 @@ class DeployCommandHelper {
21
12
  this.$options = $options;
22
13
  this.$projectData = $projectData;
23
14
  }
24
- deploy(platform, additionalOptions) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const emulator = this.$options.emulator;
27
- yield this.$devicesService.initialize({
28
- deviceId: this.$options.device,
29
- platform,
30
- emulator,
31
- skipInferPlatform: !platform,
32
- sdk: this.$options.sdk,
33
- });
34
- const devices = this.$devicesService
35
- .getDeviceInstances()
36
- .filter((d) => !platform ||
37
- d.deviceInfo.platform.toLowerCase() === platform.toLowerCase());
38
- const deviceDescriptors = devices.map((d) => {
39
- const outputPath = additionalOptions &&
40
- additionalOptions.getOutputDirectory &&
41
- additionalOptions.getOutputDirectory({
42
- platform: d.deviceInfo.platform,
43
- emulator: d.isEmulator,
44
- projectDir: this.$projectData.projectDir,
45
- });
46
- const buildData = this.$buildDataService.getBuildData(this.$projectData.projectDir, d.deviceInfo.platform, Object.assign(Object.assign({}, this.$options.argv), { outputPath, buildFilterDevicesArch: false, buildForDevice: !d.isEmulator, skipWatcher: !this.$options.watch, nativePrepare: {
47
- skipNativePrepare: additionalOptions && additionalOptions.skipNativePrepare,
48
- } }));
49
- this.$androidBundleValidatorHelper.validateDeviceApiLevel(d, buildData);
50
- const buildAction = additionalOptions && additionalOptions.buildPlatform
51
- ? additionalOptions.buildPlatform.bind(additionalOptions.buildPlatform, d.deviceInfo.platform, buildData, this.$projectData)
52
- : this.$buildController.build.bind(this.$buildController, buildData);
53
- const info = {
54
- identifier: d.deviceInfo.identifier,
55
- buildAction,
56
- debuggingEnabled: additionalOptions &&
57
- additionalOptions.deviceDebugMap &&
58
- additionalOptions.deviceDebugMap[d.deviceInfo.identifier],
59
- debugOptions: this.$options,
15
+ async deploy(platform, additionalOptions) {
16
+ const emulator = this.$options.emulator;
17
+ await this.$devicesService.initialize({
18
+ deviceId: this.$options.device,
19
+ platform,
20
+ emulator,
21
+ skipInferPlatform: !platform,
22
+ sdk: this.$options.sdk,
23
+ });
24
+ const devices = this.$devicesService
25
+ .getDeviceInstances()
26
+ .filter((d) => !platform ||
27
+ d.deviceInfo.platform.toLowerCase() === platform.toLowerCase());
28
+ const deviceDescriptors = devices.map((d) => {
29
+ const outputPath = additionalOptions &&
30
+ additionalOptions.getOutputDirectory &&
31
+ additionalOptions.getOutputDirectory({
32
+ platform: d.deviceInfo.platform,
33
+ emulator: d.isEmulator,
34
+ projectDir: this.$projectData.projectDir,
35
+ });
36
+ const buildData = this.$buildDataService.getBuildData(this.$projectData.projectDir, d.deviceInfo.platform, {
37
+ ...this.$options.argv,
38
+ outputPath,
39
+ buildFilterDevicesArch: false,
40
+ buildForDevice: !d.isEmulator,
41
+ skipWatcher: !this.$options.watch,
42
+ nativePrepare: {
60
43
  skipNativePrepare: additionalOptions && additionalOptions.skipNativePrepare,
61
- buildData,
62
- };
63
- return info;
44
+ },
64
45
  });
65
- yield this.$deployController.deploy({ deviceDescriptors });
46
+ this.$androidBundleValidatorHelper.validateDeviceApiLevel(d, buildData);
47
+ const buildAction = additionalOptions && additionalOptions.buildPlatform
48
+ ? additionalOptions.buildPlatform.bind(additionalOptions.buildPlatform, d.deviceInfo.platform, buildData, this.$projectData)
49
+ : this.$buildController.build.bind(this.$buildController, buildData);
50
+ const info = {
51
+ identifier: d.deviceInfo.identifier,
52
+ buildAction,
53
+ debuggingEnabled: additionalOptions &&
54
+ additionalOptions.deviceDebugMap &&
55
+ additionalOptions.deviceDebugMap[d.deviceInfo.identifier],
56
+ debugOptions: this.$options,
57
+ skipNativePrepare: additionalOptions && additionalOptions.skipNativePrepare,
58
+ buildData,
59
+ };
60
+ return info;
66
61
  });
62
+ await this.$deployController.deploy({ deviceDescriptors });
67
63
  }
68
64
  }
69
65
  exports.DeployCommandHelper = DeployCommandHelper;
@@ -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
  const color_1 = require("../color");
13
4
  const yok_1 = require("../common/yok");
@@ -15,7 +6,7 @@ class KeyCommandHelper {
15
6
  constructor() {
16
7
  this.platform = "all";
17
8
  this.overrides = {};
18
- this.onKeyPressed = (data) => __awaiter(this, void 0, void 0, function* () {
9
+ this.onKeyPressed = async (data) => {
19
10
  const key = data.toString();
20
11
  if (this.keyCommandExecutionBlocked && key !== "\u0003")
21
12
  return;
@@ -34,7 +25,7 @@ class KeyCommandHelper {
34
25
  if (keyCommand.willBlockKeyCommandExecution)
35
26
  this.keyCommandExecutionBlocked = true;
36
27
  if (this.overrides[key]) {
37
- if (!(yield this.overrides[key]())) {
28
+ if (!(await this.overrides[key]())) {
38
29
  this.keyCommandExecutionBlocked = false;
39
30
  process.stdin.resume();
40
31
  return;
@@ -48,7 +39,7 @@ class KeyCommandHelper {
48
39
  console.log(color_1.color.dim(` └${"─".repeat(lineLength)}┘`));
49
40
  console.log("");
50
41
  }
51
- const result = yield keyCommand.execute(this.platform);
42
+ const result = await keyCommand.execute(this.platform);
52
43
  this.keyCommandExecutionBlocked = false;
53
44
  if (process.stdin.setRawMode) {
54
45
  process.stdin.resume();
@@ -62,7 +53,7 @@ class KeyCommandHelper {
62
53
  const $logger = yok_1.injector.resolve("logger");
63
54
  $logger.error(e.message);
64
55
  }
65
- });
56
+ };
66
57
  }
67
58
  addOverride(key, execute) {
68
59
  this.overrides[key] = execute;