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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/widget-ios.md +24 -0
  3. package/docs/man_pages/project/configuration/widget.md +24 -0
  4. package/docs/man_pages/start.md +1 -1
  5. package/lib/android-tools-info.js +11 -22
  6. package/lib/base-package-manager.js +53 -70
  7. package/lib/bun-package-manager.js +75 -98
  8. package/lib/color.js +4 -4
  9. package/lib/commands/add-platform.js +14 -30
  10. package/lib/commands/apple-login.js +18 -29
  11. package/lib/commands/appstore-list.js +34 -45
  12. package/lib/commands/appstore-upload.js +54 -67
  13. package/lib/commands/build.js +55 -87
  14. package/lib/commands/clean.js +169 -184
  15. package/lib/commands/command-base.js +14 -27
  16. package/lib/commands/config.js +49 -68
  17. package/lib/commands/create-project.js +215 -234
  18. package/lib/commands/debug.js +66 -88
  19. package/lib/commands/deploy.js +28 -44
  20. package/lib/commands/embedding/embed.js +37 -56
  21. package/lib/commands/extensibility/install-extension.js +5 -16
  22. package/lib/commands/extensibility/list-extensions.js +13 -24
  23. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  24. package/lib/commands/fonts.js +30 -41
  25. package/lib/commands/generate-assets.js +13 -28
  26. package/lib/commands/generate-help.js +2 -13
  27. package/lib/commands/generate.js +49 -60
  28. package/lib/commands/info.js +2 -13
  29. package/lib/commands/install.js +34 -49
  30. package/lib/commands/list-platforms.js +14 -25
  31. package/lib/commands/migrate.js +15 -26
  32. package/lib/commands/native-add.js +23 -46
  33. package/lib/commands/platform-clean.js +19 -32
  34. package/lib/commands/plugin/add-plugin.js +12 -25
  35. package/lib/commands/plugin/build-plugin.js +31 -44
  36. package/lib/commands/plugin/create-plugin.js +114 -137
  37. package/lib/commands/plugin/list-plugins.js +22 -33
  38. package/lib/commands/plugin/remove-plugin.js +21 -34
  39. package/lib/commands/plugin/update-plugin.js +20 -33
  40. package/lib/commands/post-install.js +25 -38
  41. package/lib/commands/prepare.js +19 -35
  42. package/lib/commands/preview.js +50 -63
  43. package/lib/commands/remove-platform.js +7 -18
  44. package/lib/commands/resources/resources-update.js +14 -27
  45. package/lib/commands/run.js +55 -76
  46. package/lib/commands/start.js +6 -19
  47. package/lib/commands/test-init.js +126 -137
  48. package/lib/commands/test.js +72 -95
  49. package/lib/commands/typings.js +126 -142
  50. package/lib/commands/update-platform.js +26 -39
  51. package/lib/commands/update.js +31 -44
  52. package/lib/commands/widget.js +408 -357
  53. package/lib/common/child-process.js +53 -72
  54. package/lib/common/codeGeneration/code-entity.js +1 -1
  55. package/lib/common/codeGeneration/code-printer.js +1 -1
  56. package/lib/common/command-params.js +7 -18
  57. package/lib/common/commands/analytics.js +29 -42
  58. package/lib/common/commands/autocompletion.js +41 -58
  59. package/lib/common/commands/device/device-log-stream.js +12 -23
  60. package/lib/common/commands/device/get-file.js +23 -34
  61. package/lib/common/commands/device/list-applications.js +12 -23
  62. package/lib/common/commands/device/list-devices.js +72 -87
  63. package/lib/common/commands/device/list-files.js +24 -35
  64. package/lib/common/commands/device/put-file.js +23 -34
  65. package/lib/common/commands/device/run-application.js +12 -25
  66. package/lib/common/commands/device/stop-application.js +11 -22
  67. package/lib/common/commands/device/uninstall-application.js +6 -17
  68. package/lib/common/commands/generate-messages.js +17 -28
  69. package/lib/common/commands/help.js +20 -33
  70. package/lib/common/commands/package-manager-get.js +6 -17
  71. package/lib/common/commands/package-manager-set.js +9 -20
  72. package/lib/common/commands/post-install.js +2 -13
  73. package/lib/common/commands/preuninstall.js +27 -42
  74. package/lib/common/commands/proxy/proxy-base.js +11 -22
  75. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  76. package/lib/common/commands/proxy/proxy-get.js +3 -14
  77. package/lib/common/commands/proxy/proxy-set.js +87 -100
  78. package/lib/common/constants.js +11 -11
  79. package/lib/common/decorators.js +10 -22
  80. package/lib/common/dispatchers.js +84 -101
  81. package/lib/common/errors.js +92 -107
  82. package/lib/common/file-system.js +110 -132
  83. package/lib/common/header.js +1 -2
  84. package/lib/common/helpers.js +149 -178
  85. package/lib/common/host-info.js +40 -53
  86. package/lib/common/http-client.js +104 -119
  87. package/lib/common/logger/appenders/cli-appender.js +1 -2
  88. package/lib/common/logger/appenders/emit-appender.js +1 -2
  89. package/lib/common/logger/layouts/cli-layout.js +1 -2
  90. package/lib/common/logger/logger.js +4 -4
  91. package/lib/common/mobile/android/android-application-manager.js +138 -159
  92. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  93. package/lib/common/mobile/android/android-debug-bridge.js +92 -117
  94. package/lib/common/mobile/android/android-device-file-system.js +101 -134
  95. package/lib/common/mobile/android/android-device-hash-service.js +52 -77
  96. package/lib/common/mobile/android/android-device.js +73 -90
  97. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  98. package/lib/common/mobile/android/android-log-filter.js +1 -1
  99. package/lib/common/mobile/android/android-virtual-device-service.js +78 -99
  100. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  101. package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
  102. package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
  103. package/lib/common/mobile/android/logcat-helper.js +114 -133
  104. package/lib/common/mobile/application-manager-base.js +89 -112
  105. package/lib/common/mobile/device-log-provider-base.js +7 -18
  106. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  107. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  108. package/lib/common/mobile/ios/device/ios-device-operations.js +106 -143
  109. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  110. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  111. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +66 -95
  112. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  113. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
  114. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
  115. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  116. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  117. package/lib/common/mobile/mobile-core/android-device-discovery.js +44 -63
  118. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
  119. package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
  120. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  121. package/lib/common/mobile/mobile-core/devices-service.js +400 -450
  122. package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
  123. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
  124. package/lib/common/mobile/mobile-helper.js +15 -26
  125. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  126. package/lib/common/opener.js +2 -2
  127. package/lib/common/prompter.js +91 -106
  128. package/lib/common/queue.js +9 -20
  129. package/lib/common/services/auto-completion-service.js +40 -53
  130. package/lib/common/services/cancellation.js +17 -28
  131. package/lib/common/services/commands-service.js +156 -179
  132. package/lib/common/services/help-service.js +130 -155
  133. package/lib/common/services/hooks-service.js +99 -114
  134. package/lib/common/services/ios-notification-service.js +21 -34
  135. package/lib/common/services/json-file-settings-service.js +56 -75
  136. package/lib/common/services/lock-service.js +35 -52
  137. package/lib/common/services/message-contract-generator.js +35 -46
  138. package/lib/common/services/micro-templating-service.js +6 -17
  139. package/lib/common/services/net-service.js +92 -109
  140. package/lib/common/services/project-files-manager.js +10 -23
  141. package/lib/common/services/proxy-service.js +13 -24
  142. package/lib/common/services/qr.js +13 -24
  143. package/lib/common/services/settings-service.js +1 -1
  144. package/lib/common/services/xcode-select-service.js +20 -35
  145. package/lib/common/utils.js +2 -2
  146. package/lib/common/validators/project-name-validator.js +1 -1
  147. package/lib/common/validators/validation-result.js +1 -1
  148. package/lib/common/verify-node-version.js +2 -3
  149. package/lib/common/yok.js +25 -38
  150. package/lib/config.js +41 -56
  151. package/lib/constants.js +24 -24
  152. package/lib/controllers/build-controller.js +82 -99
  153. package/lib/controllers/debug-controller.js +111 -132
  154. package/lib/controllers/deploy-controller.js +15 -23
  155. package/lib/controllers/migrate-controller.js +780 -853
  156. package/lib/controllers/platform-controller.js +74 -89
  157. package/lib/controllers/prepare-controller.js +241 -270
  158. package/lib/controllers/run-controller.js +411 -425
  159. package/lib/controllers/update-controller-base.js +16 -29
  160. package/lib/controllers/update-controller.js +101 -126
  161. package/lib/data/prepare-data.js +4 -1
  162. package/lib/definitions/project.d.ts +24 -24
  163. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  164. package/lib/detached-processes/cleanup-process.js +16 -25
  165. package/lib/device-path-provider.js +23 -34
  166. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +155 -170
  167. package/lib/device-sockets/ios/notification.js +1 -1
  168. package/lib/device-sockets/ios/socket-request-executor.js +26 -41
  169. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  170. package/lib/helpers/deploy-command-helper.js +44 -49
  171. package/lib/helpers/key-command-helper.js +4 -13
  172. package/lib/helpers/livesync-command-helper.js +138 -153
  173. package/lib/helpers/network-connectivity-validator.js +6 -17
  174. package/lib/helpers/options-track-helper.js +6 -17
  175. package/lib/helpers/platform-command-helper.js +103 -124
  176. package/lib/key-commands/index.js +150 -200
  177. package/lib/nativescript-cli.js +5 -14
  178. package/lib/node-package-manager.js +90 -113
  179. package/lib/options.js +4 -13
  180. package/lib/package-installation-manager.js +132 -167
  181. package/lib/package-manager.js +64 -87
  182. package/lib/platform-command-param.js +4 -15
  183. package/lib/pnpm-package-manager.js +60 -79
  184. package/lib/project-data.js +1 -1
  185. package/lib/providers/project-files-provider.js +1 -1
  186. package/lib/services/analytics/analytics-broker-process.js +13 -22
  187. package/lib/services/analytics/analytics-broker.js +17 -30
  188. package/lib/services/analytics/analytics-service.js +165 -201
  189. package/lib/services/analytics/google-analytics-provider.js +41 -56
  190. package/lib/services/analytics-settings-service.js +15 -32
  191. package/lib/services/android/android-bundle-tool-service.js +43 -60
  192. package/lib/services/android/gradle-build-args-service.js +10 -21
  193. package/lib/services/android/gradle-build-service.js +22 -35
  194. package/lib/services/android/gradle-command-service.js +22 -35
  195. package/lib/services/android-device-debug-service.js +92 -119
  196. package/lib/services/android-plugin-build-service.js +219 -245
  197. package/lib/services/android-project-service.js +134 -179
  198. package/lib/services/android-resources-migration-service.js +57 -70
  199. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  200. package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
  201. package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
  202. package/lib/services/assets-generation/assets-generation-service.js +114 -128
  203. package/lib/services/build-artifacts-service.js +9 -20
  204. package/lib/services/build-info-file-service.js +20 -35
  205. package/lib/services/cleanup-service.js +47 -76
  206. package/lib/services/cocoapods-service.js +124 -145
  207. package/lib/services/device/device-install-app-service.js +54 -71
  208. package/lib/services/doctor-service.js +106 -125
  209. package/lib/services/extensibility-service.js +87 -106
  210. package/lib/services/files-hash-service.js +26 -43
  211. package/lib/services/hmr-status-service.js +1 -1
  212. package/lib/services/initialize-service.js +38 -51
  213. package/lib/services/ios/export-options-plist-service.js +41 -54
  214. package/lib/services/ios/ios-signing-service.js +171 -190
  215. package/lib/services/ios/spm-service.js +52 -65
  216. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  217. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  218. package/lib/services/ios/xcodebuild-service.js +52 -71
  219. package/lib/services/ios-debugger-port-service.js +24 -37
  220. package/lib/services/ios-device-debug-service.js +75 -102
  221. package/lib/services/ios-entitlements-service.js +31 -42
  222. package/lib/services/ios-extensions-service.js +18 -29
  223. package/lib/services/ios-project-service.js +530 -591
  224. package/lib/services/ios-provision-service.js +110 -131
  225. package/lib/services/ios-watch-app-service.js +21 -32
  226. package/lib/services/ip-service.js +39 -54
  227. package/lib/services/itmstransporter-service.js +129 -152
  228. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  229. package/lib/services/livesync/android-device-livesync-service.js +121 -150
  230. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
  231. package/lib/services/livesync/android-livesync-service.js +14 -35
  232. package/lib/services/livesync/android-livesync-tool.js +90 -113
  233. package/lib/services/livesync/device-livesync-service-base.js +16 -29
  234. package/lib/services/livesync/ios-device-livesync-service.js +120 -149
  235. package/lib/services/livesync/ios-livesync-service.js +43 -59
  236. package/lib/services/livesync/platform-livesync-service-base.js +98 -123
  237. package/lib/services/log-parser-service.js +1 -1
  238. package/lib/services/log-source-map-service.js +31 -42
  239. package/lib/services/marking-mode-service.js +17 -30
  240. package/lib/services/npm-config-service.js +1 -1
  241. package/lib/services/pacote-service.js +54 -69
  242. package/lib/services/performance-service.js +1 -1
  243. package/lib/services/platform/add-platform-service.js +57 -78
  244. package/lib/services/platform/platform-validation-service.js +22 -33
  245. package/lib/services/platform/prepare-native-platform-service.js +51 -64
  246. package/lib/services/platform-environment-requirements.js +27 -38
  247. package/lib/services/plugins-service.js +126 -151
  248. package/lib/services/project-backup-service.js +1 -1
  249. package/lib/services/project-changes-service.js +126 -143
  250. package/lib/services/project-cleanup-service.js +65 -78
  251. package/lib/services/project-config-service.js +78 -88
  252. package/lib/services/project-data-service.js +112 -129
  253. package/lib/services/project-name-service.js +28 -43
  254. package/lib/services/project-service.js +90 -109
  255. package/lib/services/project-templates-service.js +52 -67
  256. package/lib/services/start-service.js +41 -59
  257. package/lib/services/temp-service.js +8 -21
  258. package/lib/services/terminal-spinner-service.js +15 -26
  259. package/lib/services/test-execution-service.js +64 -77
  260. package/lib/services/test-initialization-service.js +2 -2
  261. package/lib/services/timeline-profiler-service.js +1 -1
  262. package/lib/services/versions-service.js +120 -139
  263. package/lib/services/webpack/webpack-compiler-service.js +228 -251
  264. package/lib/services/xcconfig-service.js +8 -19
  265. package/lib/sys-info.js +45 -62
  266. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  267. package/lib/yarn-package-manager.js +59 -78
  268. package/lib/yarn2-package-manager.js +62 -81
  269. package/package.json +67 -82
  270. package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
  271. package/node_modules/@npmcli/move-file/README.md +0 -69
  272. package/node_modules/@npmcli/move-file/lib/index.js +0 -185
  273. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
  274. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
  275. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
  276. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
  277. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  278. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  279. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
  280. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
  281. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
  282. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
  283. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
  284. package/node_modules/@npmcli/move-file/package.json +0 -47
  285. package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  286. package/node_modules/balanced-match/LICENSE.md +0 -21
  287. package/node_modules/balanced-match/README.md +0 -97
  288. package/node_modules/balanced-match/index.js +0 -62
  289. package/node_modules/balanced-match/package.json +0 -48
  290. package/node_modules/concat-map/.travis.yml +0 -4
  291. package/node_modules/concat-map/LICENSE +0 -18
  292. package/node_modules/concat-map/README.markdown +0 -62
  293. package/node_modules/concat-map/example/map.js +0 -6
  294. package/node_modules/concat-map/index.js +0 -13
  295. package/node_modules/concat-map/package.json +0 -43
  296. package/node_modules/concat-map/test/map.js +0 -39
  297. package/node_modules/fs.realpath/LICENSE +0 -43
  298. package/node_modules/fs.realpath/README.md +0 -33
  299. package/node_modules/fs.realpath/index.js +0 -66
  300. package/node_modules/fs.realpath/old.js +0 -303
  301. package/node_modules/fs.realpath/package.json +0 -26
  302. package/node_modules/inflight/LICENSE +0 -15
  303. package/node_modules/inflight/README.md +0 -37
  304. package/node_modules/inflight/inflight.js +0 -54
  305. package/node_modules/inflight/package.json +0 -29
  306. package/node_modules/inherits/LICENSE +0 -16
  307. package/node_modules/inherits/README.md +0 -42
  308. package/node_modules/inherits/inherits.js +0 -9
  309. package/node_modules/inherits/inherits_browser.js +0 -27
  310. package/node_modules/inherits/package.json +0 -29
  311. package/node_modules/once/LICENSE +0 -15
  312. package/node_modules/once/README.md +0 -79
  313. package/node_modules/once/once.js +0 -42
  314. package/node_modules/once/package.json +0 -33
  315. package/node_modules/path-is-absolute/index.js +0 -20
  316. package/node_modules/path-is-absolute/license +0 -21
  317. package/node_modules/path-is-absolute/package.json +0 -43
  318. package/node_modules/path-is-absolute/readme.md +0 -59
  319. package/node_modules/rimraf/LICENSE +0 -15
  320. package/node_modules/rimraf/README.md +0 -101
  321. package/node_modules/rimraf/bin.js +0 -68
  322. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
  323. package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
  324. package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
  325. package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
  326. package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
  327. package/node_modules/rimraf/node_modules/glob/README.md +0 -378
  328. package/node_modules/rimraf/node_modules/glob/common.js +0 -238
  329. package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
  330. package/node_modules/rimraf/node_modules/glob/package.json +0 -55
  331. package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
  332. package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
  333. package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
  334. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
  335. package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
  336. package/node_modules/rimraf/package.json +0 -32
  337. package/node_modules/rimraf/rimraf.js +0 -360
  338. package/node_modules/stringify-package/LICENSE +0 -13
  339. package/node_modules/stringify-package/README.md +0 -55
  340. package/node_modules/stringify-package/index.js +0 -18
  341. package/node_modules/stringify-package/package.json +0 -38
  342. package/node_modules/wrappy/LICENSE +0 -15
  343. package/node_modules/wrappy/README.md +0 -36
  344. package/node_modules/wrappy/package.json +0 -29
  345. package/node_modules/wrappy/wrappy.js +0 -33
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.CleanCommand = void 0;
13
4
  const color_1 = require("../color");
@@ -75,197 +66,191 @@ class CleanCommand {
75
66
  this.$staticConfig = $staticConfig;
76
67
  this.allowedParameters = [];
77
68
  }
78
- execute(args) {
69
+ async execute(args) {
79
70
  var _a, _b;
80
- return __awaiter(this, void 0, void 0, function* () {
81
- const isDryRun = (_a = this.$options.dryRun) !== null && _a !== void 0 ? _a : false;
82
- const isJSON = (_b = this.$options.json) !== null && _b !== void 0 ? _b : false;
83
- const spinner = this.$terminalSpinnerService.createSpinner({
84
- isSilent: isJSON,
85
- });
86
- if (!this.$projectService.isValidNativeScriptProject()) {
87
- return this.cleanMultipleProjects(spinner);
88
- }
89
- spinner.start("Cleaning project...\n");
90
- let pathsToClean = [
91
- constants.HOOKS_DIR_NAME,
92
- constants.PLATFORMS_DIR_NAME,
93
- constants.NODE_MODULES_FOLDER_NAME,
94
- constants.PACKAGE_LOCK_JSON_FILE_NAME,
95
- ];
96
- try {
97
- const overridePathsToClean = this.$projectConfigService.getValue("cli.pathsToClean");
98
- const additionalPaths = this.$projectConfigService.getValue("cli.additionalPathsToClean");
99
- // allow overriding default paths to clean
100
- if (Array.isArray(overridePathsToClean)) {
101
- pathsToClean = overridePathsToClean;
102
- }
103
- if (Array.isArray(additionalPaths)) {
104
- pathsToClean.push(...additionalPaths);
105
- }
71
+ const isDryRun = (_a = this.$options.dryRun) !== null && _a !== void 0 ? _a : false;
72
+ const isJSON = (_b = this.$options.json) !== null && _b !== void 0 ? _b : false;
73
+ const spinner = this.$terminalSpinnerService.createSpinner({
74
+ isSilent: isJSON,
75
+ });
76
+ if (!this.$projectService.isValidNativeScriptProject()) {
77
+ return this.cleanMultipleProjects(spinner);
78
+ }
79
+ spinner.start("Cleaning project...\n");
80
+ let pathsToClean = [
81
+ constants.HOOKS_DIR_NAME,
82
+ constants.PLATFORMS_DIR_NAME,
83
+ constants.NODE_MODULES_FOLDER_NAME,
84
+ constants.PACKAGE_LOCK_JSON_FILE_NAME,
85
+ ];
86
+ try {
87
+ const overridePathsToClean = this.$projectConfigService.getValue("cli.pathsToClean");
88
+ const additionalPaths = this.$projectConfigService.getValue("cli.additionalPathsToClean");
89
+ // allow overriding default paths to clean
90
+ if (Array.isArray(overridePathsToClean)) {
91
+ pathsToClean = overridePathsToClean;
106
92
  }
107
- catch (err) {
108
- // ignore
93
+ if (Array.isArray(additionalPaths)) {
94
+ pathsToClean.push(...additionalPaths);
109
95
  }
110
- const res = yield this.$projectCleanupService.clean(pathsToClean, {
96
+ }
97
+ catch (err) {
98
+ // ignore
99
+ }
100
+ const res = await this.$projectCleanupService.clean(pathsToClean, {
101
+ dryRun: isDryRun,
102
+ silent: isJSON,
103
+ stats: isJSON,
104
+ });
105
+ if (res.stats && isJSON) {
106
+ console.log(JSON.stringify({
107
+ ok: res.ok,
111
108
  dryRun: isDryRun,
112
- silent: isJSON,
113
- stats: isJSON,
109
+ stats: Object.fromEntries(res.stats.entries()),
110
+ }, null, 2));
111
+ return;
112
+ }
113
+ if (res.ok) {
114
+ spinner.succeed("Project successfully cleaned.");
115
+ }
116
+ else {
117
+ spinner.fail(color_1.color.red("Project unsuccessfully cleaned."));
118
+ }
119
+ }
120
+ async cleanMultipleProjects(spinner) {
121
+ if (!(0, helpers_1.isInteractive)() || this.$options.json) {
122
+ // interactive terminal is required, and we can't output json in an interactive command.
123
+ this.$logger.warn("No project found in the current directory.");
124
+ return;
125
+ }
126
+ const shouldScan = await this.$prompter.confirm("No project found in the current directory. Would you like to scan for all projects in sub-directories instead?");
127
+ if (!shouldScan) {
128
+ return;
129
+ }
130
+ spinner.start("Scanning for projects... Please wait.");
131
+ const paths = await this.getNSProjectPathsInDirectory();
132
+ spinner.succeed(`Found ${paths.length} projects.`);
133
+ let computed = 0;
134
+ const updateProgress = () => {
135
+ const current = color_1.color.grey(`${computed}/${paths.length}`);
136
+ spinner.start(`Gathering cleanable sizes. This may take a while... ${current}`);
137
+ };
138
+ // update the progress initially
139
+ updateProgress();
140
+ const projects = new Map();
141
+ await promiseMap(paths, (p) => {
142
+ return this.$childProcess
143
+ .exec(`node ${this.$staticConfig.cliBinPath} clean --dry-run --json --disable-analytics`, {
144
+ cwd: p,
145
+ })
146
+ .then((res) => {
147
+ const paths = JSON.parse(res).stats;
148
+ return Object.values(paths).reduce((a, b) => a + b, 0);
149
+ })
150
+ .catch((err) => {
151
+ this.$logger.trace("Failed to get project size for %s, Error is:", p, err);
152
+ return -1;
153
+ })
154
+ .then((size) => {
155
+ if (size > 0 || size === -1) {
156
+ // only store size if it's larger than 0 or -1 (error while getting size)
157
+ projects.set(p, size);
158
+ }
159
+ // update the progress after each processed project
160
+ computed++;
161
+ updateProgress();
114
162
  });
115
- if (res.stats && isJSON) {
116
- console.log(JSON.stringify({
117
- ok: res.ok,
118
- dryRun: isDryRun,
119
- stats: Object.fromEntries(res.stats.entries()),
120
- }, null, 2));
121
- return;
122
- }
123
- if (res.ok) {
124
- spinner.succeed("Project successfully cleaned.");
163
+ }, os.cpus().length);
164
+ spinner.clear();
165
+ spinner.stop();
166
+ this.$logger.clearScreen();
167
+ const totalSize = Array.from(projects.values())
168
+ .filter((s) => s > 0)
169
+ .reduce((a, b) => a + b, 0);
170
+ const pathsToClean = await this.$prompter.promptForChoice(`Found ${projects.size} cleanable project(s) with a total size of: ${color_1.color.green(bytesToHumanReadable(totalSize))}. Select projects to clean`, Array.from(projects.keys()).map((p) => {
171
+ const size = projects.get(p);
172
+ let description;
173
+ if (size === -1) {
174
+ description = " - could not get size";
125
175
  }
126
176
  else {
127
- spinner.fail(color_1.color.red("Project unsuccessfully cleaned."));
177
+ description = ` - ${bytesToHumanReadable(size)}`;
128
178
  }
179
+ return {
180
+ title: `${p}${color_1.color.grey(description)}`,
181
+ value: p,
182
+ };
183
+ }), true, {
184
+ optionsPerPage: process.stdout.rows - 6, // 6 lines are taken up by the instructions
129
185
  });
130
- }
131
- cleanMultipleProjects(spinner) {
132
- return __awaiter(this, void 0, void 0, function* () {
133
- if (!(0, helpers_1.isInteractive)() || this.$options.json) {
134
- // interactive terminal is required, and we can't output json in an interactive command.
135
- this.$logger.warn("No project found in the current directory.");
136
- return;
186
+ this.$logger.clearScreen();
187
+ spinner.warn(`This will run "${color_1.color.yellow(`ns clean`)}" in all the selected projects and ${color_1.color.red.bold("delete files from your system")}!`);
188
+ spinner.warn(`This action cannot be undone!`);
189
+ let confirmed = await this.$prompter.confirm("Are you sure you want to clean the selected projects?");
190
+ if (!confirmed) {
191
+ return;
192
+ }
193
+ spinner.info("Cleaning... This might take a while...");
194
+ let totalSizeCleaned = 0;
195
+ for (let i = 0; i < pathsToClean.length; i++) {
196
+ const currentPath = pathsToClean[i];
197
+ spinner.start(`Cleaning ${color_1.color.cyan(currentPath)}... ${i + 1}/${pathsToClean.length}`);
198
+ const ok = await this.$childProcess
199
+ .exec(`node ${this.$staticConfig.cliBinPath} clean ${this.$options.dryRun ? "--dry-run" : ""} --json --disable-analytics`, {
200
+ cwd: currentPath,
201
+ })
202
+ .then((res) => {
203
+ const cleanupRes = JSON.parse(res);
204
+ return cleanupRes.ok;
205
+ })
206
+ .catch((err) => {
207
+ this.$logger.trace('Failed to clean project "%s"', currentPath, err);
208
+ return false;
209
+ });
210
+ if (ok) {
211
+ const cleanedSize = projects.get(currentPath);
212
+ const cleanedSizeStr = color_1.color.grey(`- ${bytesToHumanReadable(cleanedSize)}`);
213
+ spinner.succeed(`Cleaned ${color_1.color.cyan(currentPath)} ${cleanedSizeStr}`);
214
+ totalSizeCleaned += cleanedSize;
215
+ }
216
+ else {
217
+ spinner.fail(`Failed to clean ${color_1.color.cyan(currentPath)} - skipped`);
137
218
  }
138
- const shouldScan = yield this.$prompter.confirm("No project found in the current directory. Would you like to scan for all projects in sub-directories instead?");
139
- if (!shouldScan) {
219
+ }
220
+ spinner.clear();
221
+ spinner.stop();
222
+ spinner.succeed(`Done! We've just freed up ${color_1.color.green(bytesToHumanReadable(totalSizeCleaned))}! Woohoo! 🎉`);
223
+ if (this.$options.dryRun) {
224
+ spinner.info('Note: the "--dry-run" flag was used, so no files were actually deleted.');
225
+ }
226
+ }
227
+ async getNSProjectPathsInDirectory(dir = process.cwd()) {
228
+ let nsDirs = [];
229
+ const getFiles = async (dir) => {
230
+ if (dir.includes("node_modules")) {
231
+ // skip traversing node_modules
140
232
  return;
141
233
  }
142
- spinner.start("Scanning for projects... Please wait.");
143
- const paths = yield this.getNSProjectPathsInDirectory();
144
- spinner.succeed(`Found ${paths.length} projects.`);
145
- let computed = 0;
146
- const updateProgress = () => {
147
- const current = color_1.color.grey(`${computed}/${paths.length}`);
148
- spinner.start(`Gathering cleanable sizes. This may take a while... ${current}`);
149
- };
150
- // update the progress initially
151
- updateProgress();
152
- const projects = new Map();
153
- yield promiseMap(paths, (p) => {
154
- return this.$childProcess
155
- .exec(`node ${this.$staticConfig.cliBinPath} clean --dry-run --json --disable-analytics`, {
156
- cwd: p,
157
- })
158
- .then((res) => {
159
- const paths = JSON.parse(res).stats;
160
- return Object.values(paths).reduce((a, b) => a + b, 0);
161
- })
162
- .catch((err) => {
163
- this.$logger.trace("Failed to get project size for %s, Error is:", p, err);
164
- return -1;
165
- })
166
- .then((size) => {
167
- if (size > 0 || size === -1) {
168
- // only store size if it's larger than 0 or -1 (error while getting size)
169
- projects.set(p, size);
170
- }
171
- // update the progress after each processed project
172
- computed++;
173
- updateProgress();
174
- });
175
- }, os.cpus().length);
176
- spinner.clear();
177
- spinner.stop();
178
- this.$logger.clearScreen();
179
- const totalSize = Array.from(projects.values())
180
- .filter((s) => s > 0)
181
- .reduce((a, b) => a + b, 0);
182
- const pathsToClean = yield this.$prompter.promptForChoice(`Found ${projects.size} cleanable project(s) with a total size of: ${color_1.color.green(bytesToHumanReadable(totalSize))}. Select projects to clean`, Array.from(projects.keys()).map((p) => {
183
- const size = projects.get(p);
184
- let description;
185
- if (size === -1) {
186
- description = " - could not get size";
187
- }
188
- else {
189
- description = ` - ${bytesToHumanReadable(size)}`;
190
- }
191
- return {
192
- title: `${p}${color_1.color.grey(description)}`,
193
- value: p,
194
- };
195
- }), true, {
196
- optionsPerPage: process.stdout.rows - 6, // 6 lines are taken up by the instructions
234
+ const dirents = await (0, promises_1.readdir)(dir, { withFileTypes: true }).catch((err) => {
235
+ this.$logger.trace('Failed to read directory "%s". Error is:', dir, err);
236
+ return [];
197
237
  });
198
- this.$logger.clearScreen();
199
- spinner.warn(`This will run "${color_1.color.yellow(`ns clean`)}" in all the selected projects and ${color_1.color.red.bold("delete files from your system")}!`);
200
- spinner.warn(`This action cannot be undone!`);
201
- let confirmed = yield this.$prompter.confirm("Are you sure you want to clean the selected projects?");
202
- if (!confirmed) {
238
+ const hasNSConfig = dirents.some((ent) => ent.name.includes("nativescript.config.ts") ||
239
+ ent.name.includes("nativescript.config.js"));
240
+ if (hasNSConfig) {
241
+ nsDirs.push(dir);
242
+ // found a NativeScript project, stop traversing
203
243
  return;
204
244
  }
205
- spinner.info("Cleaning... This might take a while...");
206
- let totalSizeCleaned = 0;
207
- for (let i = 0; i < pathsToClean.length; i++) {
208
- const currentPath = pathsToClean[i];
209
- spinner.start(`Cleaning ${color_1.color.cyan(currentPath)}... ${i + 1}/${pathsToClean.length}`);
210
- const ok = yield this.$childProcess
211
- .exec(`node ${this.$staticConfig.cliBinPath} clean ${this.$options.dryRun ? "--dry-run" : ""} --json --disable-analytics`, {
212
- cwd: currentPath,
213
- })
214
- .then((res) => {
215
- const cleanupRes = JSON.parse(res);
216
- return cleanupRes.ok;
217
- })
218
- .catch((err) => {
219
- this.$logger.trace('Failed to clean project "%s"', currentPath, err);
220
- return false;
221
- });
222
- if (ok) {
223
- const cleanedSize = projects.get(currentPath);
224
- const cleanedSizeStr = color_1.color.grey(`- ${bytesToHumanReadable(cleanedSize)}`);
225
- spinner.succeed(`Cleaned ${color_1.color.cyan(currentPath)} ${cleanedSizeStr}`);
226
- totalSizeCleaned += cleanedSize;
227
- }
228
- else {
229
- spinner.fail(`Failed to clean ${color_1.color.cyan(currentPath)} - skipped`);
230
- }
231
- }
232
- spinner.clear();
233
- spinner.stop();
234
- spinner.succeed(`Done! We've just freed up ${color_1.color.green(bytesToHumanReadable(totalSizeCleaned))}! Woohoo! 🎉`);
235
- if (this.$options.dryRun) {
236
- spinner.info('Note: the "--dry-run" flag was used, so no files were actually deleted.');
237
- }
238
- });
239
- }
240
- getNSProjectPathsInDirectory(dir = process.cwd()) {
241
- return __awaiter(this, void 0, void 0, function* () {
242
- let nsDirs = [];
243
- const getFiles = (dir) => __awaiter(this, void 0, void 0, function* () {
244
- if (dir.includes("node_modules")) {
245
- // skip traversing node_modules
246
- return;
245
+ await Promise.all(dirents.map((dirent) => {
246
+ const res = (0, path_1.resolve)(dir, dirent.name);
247
+ if (dirent.isDirectory()) {
248
+ return getFiles(res);
247
249
  }
248
- const dirents = yield (0, promises_1.readdir)(dir, { withFileTypes: true }).catch((err) => {
249
- this.$logger.trace('Failed to read directory "%s". Error is:', dir, err);
250
- return [];
251
- });
252
- const hasNSConfig = dirents.some((ent) => ent.name.includes("nativescript.config.ts") ||
253
- ent.name.includes("nativescript.config.js"));
254
- if (hasNSConfig) {
255
- nsDirs.push(dir);
256
- // found a NativeScript project, stop traversing
257
- return;
258
- }
259
- yield Promise.all(dirents.map((dirent) => {
260
- const res = (0, path_1.resolve)(dir, dirent.name);
261
- if (dirent.isDirectory()) {
262
- return getFiles(res);
263
- }
264
- }));
265
- });
266
- yield getFiles(dir);
267
- return nsDirs;
268
- });
250
+ }));
251
+ };
252
+ await getFiles(dir);
253
+ return nsDirs;
269
254
  }
270
255
  }
271
256
  exports.CleanCommand = CleanCommand;
@@ -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.ValidatePlatformCommandBase = void 0;
13
4
  class ValidatePlatformCommandBase {
@@ -17,25 +8,21 @@ class ValidatePlatformCommandBase {
17
8
  this.$platformValidationService = $platformValidationService;
18
9
  this.$projectData = $projectData;
19
10
  }
20
- canExecuteCommandBase(platform, options) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- options = options || {};
23
- const validatePlatformOutput = yield this.validatePlatformBase(platform, options.notConfiguredEnvOptions);
24
- const canExecute = this.canExecuteCommand(validatePlatformOutput);
25
- let result = canExecute;
26
- if (canExecute && options.validateOptions) {
27
- result = yield this.$platformValidationService.validateOptions(this.$options.provision, this.$options.teamId, this.$projectData, platform);
28
- }
29
- return result;
30
- });
11
+ async canExecuteCommandBase(platform, options) {
12
+ options = options || {};
13
+ const validatePlatformOutput = await this.validatePlatformBase(platform, options.notConfiguredEnvOptions);
14
+ const canExecute = this.canExecuteCommand(validatePlatformOutput);
15
+ let result = canExecute;
16
+ if (canExecute && options.validateOptions) {
17
+ result = await this.$platformValidationService.validateOptions(this.$options.provision, this.$options.teamId, this.$projectData, platform);
18
+ }
19
+ return result;
31
20
  }
32
- validatePlatformBase(platform, notConfiguredEnvOptions) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- const platformData = this.$platformsDataService.getPlatformData(platform, this.$projectData);
35
- const platformProjectService = platformData.platformProjectService;
36
- const result = yield platformProjectService.validate(this.$projectData, this.$options, notConfiguredEnvOptions);
37
- return result;
38
- });
21
+ async validatePlatformBase(platform, notConfiguredEnvOptions) {
22
+ const platformData = this.$platformsDataService.getPlatformData(platform, this.$projectData);
23
+ const platformProjectService = platformData.platformProjectService;
24
+ const result = await platformProjectService.validate(this.$projectData, this.$options, notConfiguredEnvOptions);
25
+ return result;
39
26
  }
40
27
  canExecuteCommand(validatePlatformOutput) {
41
28
  return (validatePlatformOutput &&
@@ -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.ConfigSetCommand = exports.ConfigGetCommand = exports.ConfigListCommand = void 0;
13
4
  const yok_1 = require("../common/yok");
@@ -18,16 +9,14 @@ class ConfigListCommand {
18
9
  this.$logger = $logger;
19
10
  this.allowedParameters = [];
20
11
  }
21
- execute(args) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- try {
24
- const config = this.$projectConfigService.readConfig();
25
- this.$logger.info(this.getValueString(config));
26
- }
27
- catch (error) {
28
- this.$logger.info("Failed to read config. Error is: ", error);
29
- }
30
- });
12
+ async execute(args) {
13
+ try {
14
+ const config = this.$projectConfigService.readConfig();
15
+ this.$logger.info(this.getValueString(config));
16
+ }
17
+ catch (error) {
18
+ this.$logger.info("Failed to read config. Error is: ", error);
19
+ }
31
20
  }
32
21
  getValueString(value, depth = 0) {
33
22
  const indent = () => " ".repeat(depth);
@@ -54,25 +43,21 @@ class ConfigGetCommand {
54
43
  this.$errors = $errors;
55
44
  this.allowedParameters = [];
56
45
  }
57
- execute(args) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- try {
60
- const [key] = args;
61
- const current = this.$projectConfigService.getValue(key);
62
- this.$logger.info(current);
63
- }
64
- catch (err) {
65
- // ignore
66
- }
67
- });
46
+ async execute(args) {
47
+ try {
48
+ const [key] = args;
49
+ const current = this.$projectConfigService.getValue(key);
50
+ this.$logger.info(current);
51
+ }
52
+ catch (err) {
53
+ // ignore
54
+ }
68
55
  }
69
- canExecute(args) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- if (!args[0]) {
72
- this.$errors.failWithHelp("You must specify a key. Eg: ios.id");
73
- }
74
- return true;
75
- });
56
+ async canExecute(args) {
57
+ if (!args[0]) {
58
+ this.$errors.failWithHelp("You must specify a key. Eg: ios.id");
59
+ }
60
+ return true;
76
61
  }
77
62
  }
78
63
  exports.ConfigGetCommand = ConfigGetCommand;
@@ -83,38 +68,34 @@ class ConfigSetCommand {
83
68
  this.$errors = $errors;
84
69
  this.allowedParameters = [];
85
70
  }
86
- execute(args) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- const [key, value] = args;
89
- const current = this.$projectConfigService.getValue(key);
90
- if (current && typeof current === "object") {
91
- this.$errors.fail(`Unable to change object values. Please update individual values instead.\nEg: ns config set android.codeCache true`);
92
- }
93
- const convertedValue = this.getConvertedValue(value);
94
- const existingKey = current !== undefined;
95
- const keyDisplay = color_1.color.green(key);
96
- const currentDisplay = color_1.color.yellow(current);
97
- const updatedDisplay = color_1.color.cyan(convertedValue);
98
- this.$logger.info(`${existingKey ? "Updating" : "Setting"} ${keyDisplay}${existingKey ? ` from ${currentDisplay} ` : " "}to ${updatedDisplay}`);
99
- try {
100
- yield this.$projectConfigService.setValue(key, convertedValue);
101
- this.$logger.info("Done");
102
- }
103
- catch (error) {
104
- this.$logger.info("Could not update conifg. Error is: ", error);
105
- }
106
- });
71
+ async execute(args) {
72
+ const [key, value] = args;
73
+ const current = this.$projectConfigService.getValue(key);
74
+ if (current && typeof current === "object") {
75
+ this.$errors.fail(`Unable to change object values. Please update individual values instead.\nEg: ns config set android.codeCache true`);
76
+ }
77
+ const convertedValue = this.getConvertedValue(value);
78
+ const existingKey = current !== undefined;
79
+ const keyDisplay = color_1.color.green(key);
80
+ const currentDisplay = color_1.color.yellow(current);
81
+ const updatedDisplay = color_1.color.cyan(convertedValue);
82
+ this.$logger.info(`${existingKey ? "Updating" : "Setting"} ${keyDisplay}${existingKey ? ` from ${currentDisplay} ` : " "}to ${updatedDisplay}`);
83
+ try {
84
+ await this.$projectConfigService.setValue(key, convertedValue);
85
+ this.$logger.info("Done");
86
+ }
87
+ catch (error) {
88
+ this.$logger.info("Could not update conifg. Error is: ", error);
89
+ }
107
90
  }
108
- canExecute(args) {
109
- return __awaiter(this, void 0, void 0, function* () {
110
- if (!args[0]) {
111
- this.$errors.failWithHelp("You must specify a key. Eg: ios.id");
112
- }
113
- if (!args[1]) {
114
- this.$errors.failWithHelp("You must specify a value.");
115
- }
116
- return true;
117
- });
91
+ async canExecute(args) {
92
+ if (!args[0]) {
93
+ this.$errors.failWithHelp("You must specify a key. Eg: ios.id");
94
+ }
95
+ if (!args[1]) {
96
+ this.$errors.failWithHelp("You must specify a value.");
97
+ }
98
+ return true;
118
99
  }
119
100
  getConvertedValue(v) {
120
101
  try {