@hubspot/cli 6.2.1 → 6.2.2-beta.0

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 (343) hide show
  1. package/README.md +12 -95
  2. package/bin/cli.d.ts +2 -0
  3. package/bin/cli.js +107 -128
  4. package/commands/accounts/clean.d.ts +1 -0
  5. package/commands/accounts/clean.js +82 -116
  6. package/commands/accounts/info.d.ts +1 -0
  7. package/commands/accounts/info.js +32 -43
  8. package/commands/accounts/list.d.ts +1 -0
  9. package/commands/accounts/list.js +65 -92
  10. package/commands/accounts/remove.d.ts +1 -0
  11. package/commands/accounts/remove.js +43 -73
  12. package/commands/accounts/rename.d.ts +1 -0
  13. package/commands/accounts/rename.js +26 -41
  14. package/commands/accounts/use.d.ts +1 -0
  15. package/commands/accounts/use.js +36 -57
  16. package/commands/accounts.d.ts +1 -0
  17. package/commands/accounts.js +16 -18
  18. package/commands/auth.d.ts +1 -0
  19. package/commands/auth.js +133 -200
  20. package/commands/cms/convertFields.d.ts +1 -0
  21. package/commands/cms/convertFields.js +66 -81
  22. package/commands/cms/lighthouseScore.d.ts +1 -0
  23. package/commands/cms/lighthouseScore.js +236 -298
  24. package/commands/cms/reactModules.d.ts +1 -0
  25. package/commands/cms/reactModules.js +46 -53
  26. package/commands/cms.d.ts +1 -0
  27. package/commands/cms.js +11 -13
  28. package/commands/config/set.d.ts +1 -0
  29. package/commands/config/set.js +64 -79
  30. package/commands/config.d.ts +1 -0
  31. package/commands/config.js +7 -9
  32. package/commands/create/api-sample.d.ts +1 -0
  33. package/commands/create/api-sample.js +54 -72
  34. package/commands/create/app.d.ts +1 -0
  35. package/commands/create/app.js +8 -7
  36. package/commands/create/function.d.ts +1 -0
  37. package/commands/create/function.js +15 -14
  38. package/commands/create/index.d.ts +1 -0
  39. package/commands/create/index.js +12 -9
  40. package/commands/create/module.d.ts +1 -0
  41. package/commands/create/module.js +21 -19
  42. package/commands/create/react-app.d.ts +1 -0
  43. package/commands/create/react-app.js +7 -6
  44. package/commands/create/template.d.ts +1 -0
  45. package/commands/create/template.js +23 -24
  46. package/commands/create/vue-app.d.ts +1 -0
  47. package/commands/create/vue-app.js +7 -6
  48. package/commands/create/webpack-serverless.d.ts +1 -0
  49. package/commands/create/webpack-serverless.js +7 -6
  50. package/commands/create/website-theme.d.ts +1 -0
  51. package/commands/create/website-theme.js +15 -15
  52. package/commands/create.d.ts +24 -0
  53. package/commands/create.js +65 -80
  54. package/commands/customObject/create.d.ts +1 -0
  55. package/commands/customObject/create.js +33 -47
  56. package/commands/customObject/schema/create.d.ts +1 -0
  57. package/commands/customObject/schema/create.js +42 -67
  58. package/commands/customObject/schema/delete.d.ts +1 -0
  59. package/commands/customObject/schema/delete.js +28 -39
  60. package/commands/customObject/schema/fetch-all.d.ts +1 -0
  61. package/commands/customObject/schema/fetch-all.js +30 -39
  62. package/commands/customObject/schema/fetch.d.ts +1 -0
  63. package/commands/customObject/schema/fetch.js +48 -63
  64. package/commands/customObject/schema/list.d.ts +1 -0
  65. package/commands/customObject/schema/list.js +14 -17
  66. package/commands/customObject/schema/update.d.ts +1 -0
  67. package/commands/customObject/schema/update.js +46 -72
  68. package/commands/customObject/schema.d.ts +1 -0
  69. package/commands/customObject/schema.js +12 -12
  70. package/commands/customObject.d.ts +1 -0
  71. package/commands/customObject.js +14 -22
  72. package/commands/feedback.d.ts +1 -0
  73. package/commands/feedback.js +25 -33
  74. package/commands/fetch.d.ts +1 -0
  75. package/commands/fetch.js +53 -78
  76. package/commands/filemanager/fetch.d.ts +1 -0
  77. package/commands/filemanager/fetch.js +38 -56
  78. package/commands/filemanager/upload.d.ts +1 -0
  79. package/commands/filemanager/upload.js +88 -128
  80. package/commands/filemanager.d.ts +1 -0
  81. package/commands/filemanager.js +12 -18
  82. package/commands/functions/deploy.d.ts +1 -0
  83. package/commands/functions/deploy.js +73 -104
  84. package/commands/functions/list.d.ts +1 -0
  85. package/commands/functions/list.js +41 -48
  86. package/commands/functions/server.d.ts +1 -0
  87. package/commands/functions/server.js +50 -65
  88. package/commands/functions.d.ts +1 -0
  89. package/commands/functions.js +13 -15
  90. package/commands/hubdb/clear.d.ts +1 -0
  91. package/commands/hubdb/clear.js +37 -56
  92. package/commands/hubdb/create.d.ts +1 -0
  93. package/commands/hubdb/create.js +34 -57
  94. package/commands/hubdb/delete.d.ts +1 -0
  95. package/commands/hubdb/delete.js +29 -44
  96. package/commands/hubdb/fetch.d.ts +1 -0
  97. package/commands/hubdb/fetch.js +30 -46
  98. package/commands/hubdb.d.ts +1 -0
  99. package/commands/hubdb.js +12 -14
  100. package/commands/init.d.ts +1 -0
  101. package/commands/init.js +103 -160
  102. package/commands/lint.d.ts +1 -0
  103. package/commands/lint.js +34 -45
  104. package/commands/list.d.ts +1 -0
  105. package/commands/list.js +74 -101
  106. package/commands/logs.d.ts +1 -0
  107. package/commands/logs.js +98 -121
  108. package/commands/module/marketplace-validate.d.ts +1 -0
  109. package/commands/module/marketplace-validate.js +32 -57
  110. package/commands/module.d.ts +1 -0
  111. package/commands/module.js +7 -9
  112. package/commands/mv.d.ts +1 -0
  113. package/commands/mv.js +53 -71
  114. package/commands/open.d.ts +1 -0
  115. package/commands/open.js +48 -62
  116. package/commands/project/add.d.ts +1 -0
  117. package/commands/project/add.js +47 -70
  118. package/commands/project/cloneApp.d.ts +1 -0
  119. package/commands/project/cloneApp.js +119 -178
  120. package/commands/project/create.d.ts +1 -0
  121. package/commands/project/create.js +49 -81
  122. package/commands/project/deploy.d.ts +1 -0
  123. package/commands/project/deploy.js +105 -182
  124. package/commands/project/dev.d.ts +1 -0
  125. package/commands/project/dev.js +126 -227
  126. package/commands/project/download.d.ts +1 -0
  127. package/commands/project/download.js +73 -123
  128. package/commands/project/installDeps.d.ts +1 -0
  129. package/commands/project/installDeps.js +52 -59
  130. package/commands/project/listBuilds.d.ts +1 -0
  131. package/commands/project/listBuilds.js +97 -139
  132. package/commands/project/logs.d.ts +1 -0
  133. package/commands/project/logs.js +86 -128
  134. package/commands/project/migrateApp.d.ts +1 -0
  135. package/commands/project/migrateApp.js +158 -248
  136. package/commands/project/open.d.ts +1 -0
  137. package/commands/project/open.js +44 -68
  138. package/commands/project/upload.d.ts +1 -0
  139. package/commands/project/upload.js +72 -116
  140. package/commands/project/watch.d.ts +1 -0
  141. package/commands/project/watch.js +94 -152
  142. package/commands/project.d.ts +1 -0
  143. package/commands/project.js +21 -23
  144. package/commands/remove.d.ts +1 -0
  145. package/commands/remove.js +28 -43
  146. package/commands/sandbox/create.d.ts +1 -0
  147. package/commands/sandbox/create.js +143 -187
  148. package/commands/sandbox/delete.d.ts +1 -0
  149. package/commands/sandbox/delete.js +166 -221
  150. package/commands/sandbox.d.ts +1 -0
  151. package/commands/sandbox.js +10 -12
  152. package/commands/secrets/addSecret.d.ts +1 -0
  153. package/commands/secrets/addSecret.js +34 -52
  154. package/commands/secrets/deleteSecret.d.ts +1 -0
  155. package/commands/secrets/deleteSecret.js +33 -50
  156. package/commands/secrets/listSecrets.d.ts +1 -0
  157. package/commands/secrets/listSecrets.js +28 -42
  158. package/commands/secrets/updateSecret.d.ts +1 -0
  159. package/commands/secrets/updateSecret.js +35 -53
  160. package/commands/secrets.d.ts +1 -0
  161. package/commands/secrets.js +12 -13
  162. package/commands/theme/generate-selectors.d.ts +1 -0
  163. package/commands/theme/generate-selectors.js +129 -192
  164. package/commands/theme/marketplace-validate.d.ts +1 -0
  165. package/commands/theme/marketplace-validate.js +32 -57
  166. package/commands/theme/preview.d.ts +1 -0
  167. package/commands/theme/preview.js +170 -195
  168. package/commands/theme.d.ts +1 -0
  169. package/commands/theme.js +9 -11
  170. package/commands/upload.d.ts +1 -0
  171. package/commands/upload.js +199 -287
  172. package/commands/watch.d.ts +1 -0
  173. package/commands/watch.js +128 -172
  174. package/lib/DevServerManager.d.ts +1 -0
  175. package/lib/DevServerManager.js +99 -124
  176. package/lib/LocalDevManager.d.ts +1 -0
  177. package/lib/LocalDevManager.js +322 -490
  178. package/lib/accountTypes.d.ts +7 -0
  179. package/lib/accountTypes.js +32 -34
  180. package/lib/buildAccount.d.ts +1 -0
  181. package/lib/buildAccount.js +132 -179
  182. package/lib/commonOpts.d.ts +1 -0
  183. package/lib/commonOpts.js +60 -91
  184. package/lib/configOptions.d.ts +1 -0
  185. package/lib/configOptions.js +110 -0
  186. package/lib/constants.d.ts +84 -0
  187. package/lib/constants.js +64 -91
  188. package/lib/debugInfo.d.ts +1 -0
  189. package/lib/debugInfo.js +14 -13
  190. package/lib/dependencyManagement.d.ts +1 -0
  191. package/lib/dependencyManagement.js +92 -132
  192. package/lib/developerTestAccounts.d.ts +1 -0
  193. package/lib/developerTestAccounts.js +67 -91
  194. package/lib/enums/exitCodes.d.ts +5 -0
  195. package/lib/enums/exitCodes.js +7 -8
  196. package/lib/environment.d.ts +1 -0
  197. package/lib/environment.js +13 -14
  198. package/lib/errorHandlers/index.d.ts +1 -0
  199. package/lib/errorHandlers/index.js +66 -80
  200. package/lib/errorHandlers/suppressError.d.ts +1 -0
  201. package/lib/errorHandlers/suppressError.js +66 -106
  202. package/lib/filesystem.d.ts +2 -0
  203. package/lib/filesystem.js +22 -28
  204. package/lib/generate-selectors.d.ts +1 -0
  205. package/lib/generate-selectors.js +102 -138
  206. package/lib/hasFeature.d.ts +1 -0
  207. package/lib/hasFeature.js +8 -15
  208. package/lib/hasFlag.d.ts +1 -0
  209. package/lib/hasFlag.js +13 -13
  210. package/lib/hublValidate.d.ts +2 -0
  211. package/lib/hublValidate.js +28 -28
  212. package/lib/interpolation.d.ts +1 -0
  213. package/lib/interpolation.js +50 -92
  214. package/lib/interpolationHelpers.d.ts +10 -0
  215. package/lib/interpolationHelpers.js +30 -22
  216. package/lib/lang.d.ts +1 -0
  217. package/lib/lang.js +52 -78
  218. package/lib/links.d.ts +1 -0
  219. package/lib/links.js +94 -114
  220. package/lib/localDev.d.ts +1 -0
  221. package/lib/localDev.js +285 -439
  222. package/lib/marketplace-validate.d.ts +1 -0
  223. package/lib/marketplace-validate.js +105 -126
  224. package/lib/oauth.d.ts +1 -0
  225. package/lib/oauth.js +64 -78
  226. package/lib/polling.d.ts +1 -0
  227. package/lib/polling.js +26 -26
  228. package/lib/process.d.ts +1 -0
  229. package/lib/process.js +41 -53
  230. package/lib/projectLogsManager.d.ts +1 -0
  231. package/lib/projectLogsManager.js +78 -130
  232. package/lib/projectStructure.d.ts +1 -0
  233. package/lib/projectStructure.js +89 -109
  234. package/lib/projects.d.ts +1 -0
  235. package/lib/projects.js +595 -961
  236. package/lib/projectsWatch.d.ts +1 -0
  237. package/lib/projectsWatch.js +127 -228
  238. package/lib/prompts/accountNamePrompt.d.ts +1 -0
  239. package/lib/prompts/accountNamePrompt.js +60 -65
  240. package/lib/prompts/accountsPrompt.d.ts +1 -0
  241. package/lib/prompts/accountsPrompt.js +33 -37
  242. package/lib/prompts/activeInstallConfirmationPrompt.d.ts +1 -0
  243. package/lib/prompts/activeInstallConfirmationPrompt.js +13 -13
  244. package/lib/prompts/cleanUploadPrompt.d.ts +1 -0
  245. package/lib/prompts/cleanUploadPrompt.js +13 -13
  246. package/lib/prompts/cmsFieldPrompt.d.ts +1 -0
  247. package/lib/prompts/cmsFieldPrompt.js +37 -39
  248. package/lib/prompts/createApiSamplePrompt.d.ts +1 -0
  249. package/lib/prompts/createApiSamplePrompt.js +49 -52
  250. package/lib/prompts/createFunctionPrompt.d.ts +1 -0
  251. package/lib/prompts/createFunctionPrompt.js +57 -56
  252. package/lib/prompts/createModulePrompt.d.ts +1 -0
  253. package/lib/prompts/createModulePrompt.js +47 -50
  254. package/lib/prompts/createProjectPrompt.d.ts +1 -0
  255. package/lib/prompts/createProjectPrompt.js +95 -129
  256. package/lib/prompts/createTemplatePrompt.d.ts +1 -0
  257. package/lib/prompts/createTemplatePrompt.js +18 -19
  258. package/lib/prompts/deployBuildIdPrompt.d.ts +1 -0
  259. package/lib/prompts/deployBuildIdPrompt.js +15 -15
  260. package/lib/prompts/downloadProjectPrompt.d.ts +1 -0
  261. package/lib/prompts/downloadProjectPrompt.js +39 -41
  262. package/lib/prompts/feedbackPrompt.d.ts +1 -0
  263. package/lib/prompts/feedbackPrompt.js +29 -30
  264. package/lib/prompts/folderOverwritePrompt.d.ts +1 -0
  265. package/lib/prompts/folderOverwritePrompt.js +10 -10
  266. package/lib/prompts/installPublicAppPrompt.d.ts +1 -0
  267. package/lib/prompts/installPublicAppPrompt.js +29 -42
  268. package/lib/prompts/personalAccessKeyPrompt.d.ts +1 -0
  269. package/lib/prompts/personalAccessKeyPrompt.js +104 -110
  270. package/lib/prompts/previewPrompt.d.ts +1 -0
  271. package/lib/prompts/previewPrompt.js +46 -47
  272. package/lib/prompts/projectAddPrompt.d.ts +1 -0
  273. package/lib/prompts/projectAddPrompt.js +37 -38
  274. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  275. package/lib/prompts/projectDevTargetAccountPrompt.js +150 -193
  276. package/lib/prompts/projectNamePrompt.d.ts +1 -0
  277. package/lib/prompts/projectNamePrompt.js +25 -25
  278. package/lib/prompts/projectsLogsPrompt.d.ts +1 -0
  279. package/lib/prompts/projectsLogsPrompt.js +21 -27
  280. package/lib/prompts/promptUtils.d.ts +1 -0
  281. package/lib/prompts/promptUtils.js +17 -17
  282. package/lib/prompts/sandboxesPrompt.d.ts +1 -0
  283. package/lib/prompts/sandboxesPrompt.js +50 -59
  284. package/lib/prompts/secretPrompt.d.ts +1 -0
  285. package/lib/prompts/secretPrompt.js +15 -16
  286. package/lib/prompts/selectPublicAppPrompt.d.ts +1 -0
  287. package/lib/prompts/selectPublicAppPrompt.js +58 -84
  288. package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -0
  289. package/lib/prompts/setAsDefaultAccountPrompt.js +19 -24
  290. package/lib/prompts/uploadPrompt.d.ts +1 -0
  291. package/lib/prompts/uploadPrompt.js +30 -30
  292. package/lib/regex.d.ts +1 -0
  293. package/lib/regex.js +4 -5
  294. package/lib/sandboxSync.d.ts +1 -0
  295. package/lib/sandboxSync.js +100 -166
  296. package/lib/sandboxes.d.ts +1 -0
  297. package/lib/sandboxes.js +201 -316
  298. package/lib/schema.d.ts +3 -0
  299. package/lib/schema.js +29 -33
  300. package/lib/serverlessLogs.d.ts +1 -0
  301. package/lib/serverlessLogs.js +131 -173
  302. package/lib/ui/SpinniesManager.d.ts +1 -0
  303. package/lib/ui/SpinniesManager.js +198 -254
  304. package/lib/ui/git.d.ts +1 -0
  305. package/lib/ui/git.js +20 -19
  306. package/lib/ui/index.d.ts +1 -0
  307. package/lib/ui/index.js +117 -167
  308. package/lib/ui/serverlessFunctionLogs.d.ts +1 -0
  309. package/lib/ui/serverlessFunctionLogs.js +53 -70
  310. package/lib/ui/spinniesUtils.d.ts +1 -0
  311. package/lib/ui/spinniesUtils.js +111 -133
  312. package/lib/ui/supportHyperlinks.d.ts +1 -0
  313. package/lib/ui/supportHyperlinks.js +49 -62
  314. package/lib/ui/supportsColor.d.ts +1 -0
  315. package/lib/ui/supportsColor.js +81 -109
  316. package/lib/ui/table.d.ts +1 -0
  317. package/lib/ui/table.js +49 -55
  318. package/lib/upload.d.ts +1 -0
  319. package/lib/upload.js +40 -43
  320. package/lib/usageTracking.d.ts +1 -0
  321. package/lib/usageTracking.js +133 -155
  322. package/lib/validation.d.ts +1 -0
  323. package/lib/validation.js +144 -203
  324. package/package.json +84 -47
  325. package/CHANGELOG.md +0 -16
  326. package/commands/__tests__/projects.test.js +0 -105
  327. package/commands/config/set/allowUsageTracking.js +0 -52
  328. package/commands/config/set/defaultMode.js +0 -59
  329. package/commands/config/set/httpTimeout.js +0 -42
  330. package/commands/project/__tests__/deploy.test.js +0 -443
  331. package/commands/project/__tests__/installDeps.test.js +0 -168
  332. package/commands/project/__tests__/logs.test.js +0 -304
  333. package/hubspot.sample.config.yml +0 -28
  334. package/jest.config.js +0 -4
  335. package/lib/__tests__/commonOpts.test.js +0 -83
  336. package/lib/__tests__/dependencyManagement.test.js +0 -243
  337. package/lib/__tests__/downloadProjectPrompt.test.js +0 -31
  338. package/lib/__tests__/projectLogsManager.test.js +0 -212
  339. package/lib/__tests__/projects.test.js +0 -140
  340. package/lib/__tests__/serverlessLogs.test.js +0 -162
  341. package/lib/__tests__/validation.test.js +0 -140
  342. package/lib/getFunctionArrays.js +0 -18
  343. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -46
@@ -1,531 +1,363 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // @ts-nocheck
1
4
  const path = require('path');
2
5
  const chokidar = require('chokidar');
3
6
  const chalk = require('chalk');
4
7
  const { i18n } = require('./lang');
5
8
  const { handleKeypress } = require('./process');
6
9
  const { logger } = require('@hubspot/local-dev-lib/logger');
7
- const {
8
- fetchAppInstallationData,
9
- } = require('@hubspot/local-dev-lib/api/localDevAuth');
10
- const {
11
- fetchPublicAppsForPortal,
12
- fetchPublicAppProductionInstallCounts,
13
- } = require('@hubspot/local-dev-lib/api/appsDev');
14
- const {
15
- getAccountId,
16
- getConfigDefaultAccount,
17
- } = require('@hubspot/local-dev-lib/config');
10
+ const { fetchAppInstallationData, } = require('@hubspot/local-dev-lib/api/localDevAuth');
11
+ const { fetchPublicAppsForPortal, fetchPublicAppProductionInstallCounts, } = require('@hubspot/local-dev-lib/api/appsDev');
12
+ const { getAccountId, getConfigDefaultAccount, } = require('@hubspot/local-dev-lib/config');
18
13
  const { PROJECT_CONFIG_FILE } = require('./constants');
19
14
  const SpinniesManager = require('./ui/SpinniesManager');
20
15
  const DevServerManager = require('./DevServerManager');
21
16
  const { EXIT_CODES } = require('./enums/exitCodes');
22
17
  const { getProjectDetailUrl } = require('./projects');
23
18
  const { getAccountHomeUrl } = require('./localDev');
24
- const {
25
- CONFIG_FILES,
26
- COMPONENT_TYPES,
27
- getAppCardConfigs,
28
- } = require('./projectStructure');
29
- const {
30
- UI_COLORS,
31
- uiCommandReference,
32
- uiAccountDescription,
33
- uiBetaTag,
34
- uiLink,
35
- uiLine,
36
- } = require('./ui');
19
+ const { CONFIG_FILES, COMPONENT_TYPES, getAppCardConfigs, } = require('./projectStructure');
20
+ const { UI_COLORS, uiCommandReference, uiAccountDescription, uiBetaTag, uiLink, uiLine, } = require('./ui');
37
21
  const { logError } = require('./errorHandlers/index');
38
22
  const { installPublicAppPrompt } = require('./prompts/installPublicAppPrompt');
39
- const {
40
- activeInstallConfirmationPrompt,
41
- } = require('./prompts/activeInstallConfirmationPrompt');
42
-
23
+ const { activeInstallConfirmationPrompt, } = require('./prompts/activeInstallConfirmationPrompt');
43
24
  const WATCH_EVENTS = {
44
- add: 'add',
45
- change: 'change',
46
- unlink: 'unlink',
47
- unlinkDir: 'unlinkDir',
25
+ add: 'add',
26
+ change: 'change',
27
+ unlink: 'unlink',
28
+ unlinkDir: 'unlinkDir',
48
29
  };
49
-
50
30
  const i18nKey = 'lib.LocalDevManager';
51
-
52
31
  class LocalDevManager {
53
- constructor(options) {
54
- this.targetAccountId = options.targetAccountId;
55
- // The account that the project exists in. This is not always the targetAccountId
56
- this.targetProjectAccountId = options.parentAccountId || options.accountId;
57
-
58
- this.projectConfig = options.projectConfig;
59
- this.projectDir = options.projectDir;
60
- this.projectId = options.projectId;
61
- this.debug = options.debug || false;
62
- this.deployedBuild = options.deployedBuild;
63
- this.isGithubLinked = options.isGithubLinked;
64
- this.watcher = null;
65
- this.uploadWarnings = {};
66
- this.runnableComponents = options.runnableComponents;
67
- this.activeApp = null;
68
- this.activePublicAppData = null;
69
- this.env = options.env;
70
- this.publicAppActiveInstalls = null;
71
-
72
- this.projectSourceDir = path.join(
73
- this.projectDir,
74
- this.projectConfig.srcDir
75
- );
76
-
77
- if (!this.targetAccountId || !this.projectConfig || !this.projectDir) {
78
- logger.log(i18n(`${i18nKey}.failedToInitialize`));
79
- process.exit(EXIT_CODES.ERROR);
80
- }
81
- }
82
-
83
- async setActiveApp(appUid) {
84
- if (!appUid) {
85
- logger.error(
86
- i18n(`${i18nKey}.missingUid`, {
87
- devCommand: uiCommandReference('hs project dev'),
88
- })
89
- );
90
- process.exit(EXIT_CODES.ERROR);
91
- }
92
- this.activeApp = this.runnableComponents.find(component => {
93
- return component.config.uid === appUid;
94
- });
95
-
96
- if (this.activeApp.type === COMPONENT_TYPES.publicApp) {
97
- try {
98
- await this.setActivePublicAppData();
99
- await this.checkActivePublicAppInstalls();
100
- await this.checkPublicAppInstallation();
101
- } catch (e) {
102
- logError(e);
103
- }
32
+ constructor(options) {
33
+ this.targetAccountId = options.targetAccountId;
34
+ // The account that the project exists in. This is not always the targetAccountId
35
+ this.targetProjectAccountId = options.parentAccountId || options.accountId;
36
+ this.projectConfig = options.projectConfig;
37
+ this.projectDir = options.projectDir;
38
+ this.projectId = options.projectId;
39
+ this.debug = options.debug || false;
40
+ this.deployedBuild = options.deployedBuild;
41
+ this.isGithubLinked = options.isGithubLinked;
42
+ this.watcher = null;
43
+ this.uploadWarnings = {};
44
+ this.runnableComponents = options.runnableComponents;
45
+ this.activeApp = null;
46
+ this.activePublicAppData = null;
47
+ this.env = options.env;
48
+ this.publicAppActiveInstalls = null;
49
+ this.projectSourceDir = path.join(this.projectDir, this.projectConfig.srcDir);
50
+ if (!this.targetAccountId || !this.projectConfig || !this.projectDir) {
51
+ logger.log(i18n(`${i18nKey}.failedToInitialize`));
52
+ process.exit(EXIT_CODES.ERROR);
53
+ }
104
54
  }
105
- }
106
-
107
- async setActivePublicAppData() {
108
- if (!this.activeApp) {
109
- return;
55
+ async setActiveApp(appUid) {
56
+ if (!appUid) {
57
+ logger.error(i18n(`${i18nKey}.missingUid`, {
58
+ devCommand: uiCommandReference('hs project dev'),
59
+ }));
60
+ process.exit(EXIT_CODES.ERROR);
61
+ }
62
+ this.activeApp = this.runnableComponents.find(component => {
63
+ return component.config.uid === appUid;
64
+ });
65
+ if (this.activeApp.type === COMPONENT_TYPES.publicApp) {
66
+ try {
67
+ await this.setActivePublicAppData();
68
+ await this.checkActivePublicAppInstalls();
69
+ await this.checkPublicAppInstallation();
70
+ }
71
+ catch (e) {
72
+ logError(e);
73
+ }
74
+ }
110
75
  }
111
-
112
- const { data: portalPublicApps } = await fetchPublicAppsForPortal(
113
- this.targetProjectAccountId
114
- );
115
-
116
- const activePublicAppData = portalPublicApps.find(
117
- ({ sourceId }) => sourceId === this.activeApp.config.uid
118
- );
119
-
120
- // TODO: Update to account for new API with { data }
121
- const {
122
- data: { uniquePortalInstallCount },
123
- } = await fetchPublicAppProductionInstallCounts(
124
- activePublicAppData.id,
125
- this.targetProjectAccountId
126
- );
127
-
128
- this.activePublicAppData = activePublicAppData;
129
- this.publicAppActiveInstalls = uniquePortalInstallCount;
130
- }
131
-
132
- async checkActivePublicAppInstalls() {
133
- if (
134
- !this.activePublicAppData ||
135
- !this.publicAppActiveInstalls ||
136
- this.publicAppActiveInstalls < 1
137
- ) {
138
- return;
76
+ async setActivePublicAppData() {
77
+ if (!this.activeApp) {
78
+ return;
79
+ }
80
+ const { data: portalPublicApps } = await fetchPublicAppsForPortal(this.targetProjectAccountId);
81
+ const activePublicAppData = portalPublicApps.find(({ sourceId }) => sourceId === this.activeApp.config.uid);
82
+ // TODO: Update to account for new API with { data }
83
+ const { data: { uniquePortalInstallCount }, } = await fetchPublicAppProductionInstallCounts(activePublicAppData.id, this.targetProjectAccountId);
84
+ this.activePublicAppData = activePublicAppData;
85
+ this.publicAppActiveInstalls = uniquePortalInstallCount;
139
86
  }
140
- uiLine();
141
-
142
- logger.warn(
143
- i18n(`${i18nKey}.activeInstallWarning.installCount`, {
144
- appName: this.activePublicAppData.name,
145
- installCount: this.publicAppActiveInstalls,
146
- installText:
147
- this.publicAppActiveInstalls === 1 ? 'install' : 'installs',
148
- })
149
- );
150
- logger.log(i18n(`${i18nKey}.activeInstallWarning.explanation`));
151
- uiLine();
152
- const proceed = await activeInstallConfirmationPrompt();
153
-
154
- if (!proceed) {
155
- process.exit(EXIT_CODES.SUCCESS);
87
+ async checkActivePublicAppInstalls() {
88
+ if (!this.activePublicAppData ||
89
+ !this.publicAppActiveInstalls ||
90
+ this.publicAppActiveInstalls < 1) {
91
+ return;
92
+ }
93
+ uiLine();
94
+ logger.warn(i18n(`${i18nKey}.activeInstallWarning.installCount`, {
95
+ appName: this.activePublicAppData.name,
96
+ installCount: this.publicAppActiveInstalls,
97
+ installText: this.publicAppActiveInstalls === 1 ? 'install' : 'installs',
98
+ }));
99
+ logger.log(i18n(`${i18nKey}.activeInstallWarning.explanation`));
100
+ uiLine();
101
+ const proceed = await activeInstallConfirmationPrompt();
102
+ if (!proceed) {
103
+ process.exit(EXIT_CODES.SUCCESS);
104
+ }
156
105
  }
157
- }
158
-
159
- async start() {
160
- SpinniesManager.stopAll();
161
- SpinniesManager.init();
162
-
163
- // Local dev currently relies on the existence of a deployed build in the target account
164
- if (!this.deployedBuild) {
165
- logger.error(
166
- i18n(`${i18nKey}.noDeployedBuild`, {
167
- projectName: this.projectConfig.name,
168
- accountIdentifier: uiAccountDescription(this.targetProjectAccountId),
169
- uploadCommand: this.getUploadCommand(),
170
- })
171
- );
172
- logger.log();
173
- process.exit(EXIT_CODES.SUCCESS);
106
+ async start() {
107
+ SpinniesManager.stopAll();
108
+ SpinniesManager.init();
109
+ // Local dev currently relies on the existence of a deployed build in the target account
110
+ if (!this.deployedBuild) {
111
+ logger.error(i18n(`${i18nKey}.noDeployedBuild`, {
112
+ projectName: this.projectConfig.name,
113
+ accountIdentifier: uiAccountDescription(this.targetProjectAccountId),
114
+ uploadCommand: this.getUploadCommand(),
115
+ }));
116
+ logger.log();
117
+ process.exit(EXIT_CODES.SUCCESS);
118
+ }
119
+ const setupSucceeded = await this.devServerSetup();
120
+ if (!setupSucceeded) {
121
+ process.exit(EXIT_CODES.ERROR);
122
+ }
123
+ else if (!this.debug) {
124
+ console.clear();
125
+ }
126
+ uiBetaTag(i18n(`${i18nKey}.betaMessage`));
127
+ logger.log(uiLink(i18n(`${i18nKey}.learnMoreLocalDevServer`), 'https://developers.hubspot.com/docs/platform/project-cli-commands#start-a-local-development-server'));
128
+ logger.log();
129
+ logger.log(chalk.hex(UI_COLORS.SORBET)(i18n(`${i18nKey}.running`, {
130
+ accountIdentifier: uiAccountDescription(this.targetAccountId),
131
+ projectName: this.projectConfig.name,
132
+ })));
133
+ logger.log(uiLink(i18n(`${i18nKey}.viewProjectLink`), getProjectDetailUrl(this.projectConfig.name, this.targetProjectAccountId)));
134
+ if (this.activeApp.type === COMPONENT_TYPES.publicApp) {
135
+ logger.log(uiLink(i18n(`${i18nKey}.viewTestAccountLink`), getAccountHomeUrl(this.targetAccountId)));
136
+ }
137
+ logger.log();
138
+ logger.log(i18n(`${i18nKey}.quitHelper`));
139
+ uiLine();
140
+ logger.log();
141
+ await this.devServerStart();
142
+ // Initialize project file watcher to detect configuration file changes
143
+ this.startWatching();
144
+ this.updateKeypressListeners();
145
+ this.monitorConsoleOutput();
146
+ // Verify that there are no mismatches between components in the local project
147
+ // and components in the deployed build of the project.
148
+ this.compareLocalProjectToDeployed();
174
149
  }
175
-
176
- const setupSucceeded = await this.devServerSetup();
177
-
178
- if (!setupSucceeded) {
179
- process.exit(EXIT_CODES.ERROR);
180
- } else if (!this.debug) {
181
- console.clear();
150
+ async stop(showProgress = true) {
151
+ if (showProgress) {
152
+ SpinniesManager.add('cleanupMessage', {
153
+ text: i18n(`${i18nKey}.exitingStart`),
154
+ });
155
+ }
156
+ await this.stopWatching();
157
+ const cleanupSucceeded = await this.devServerCleanup();
158
+ if (!cleanupSucceeded) {
159
+ if (showProgress) {
160
+ SpinniesManager.fail('cleanupMessage', {
161
+ text: i18n(`${i18nKey}.exitingFail`),
162
+ });
163
+ }
164
+ process.exit(EXIT_CODES.ERROR);
165
+ }
166
+ if (showProgress) {
167
+ SpinniesManager.succeed('cleanupMessage', {
168
+ text: i18n(`${i18nKey}.exitingSucceed`),
169
+ });
170
+ }
171
+ process.exit(EXIT_CODES.SUCCESS);
182
172
  }
183
-
184
- uiBetaTag(i18n(`${i18nKey}.betaMessage`));
185
-
186
- logger.log(
187
- uiLink(
188
- i18n(`${i18nKey}.learnMoreLocalDevServer`),
189
- 'https://developers.hubspot.com/docs/platform/project-cli-commands#start-a-local-development-server'
190
- )
191
- );
192
-
193
- logger.log();
194
- logger.log(
195
- chalk.hex(UI_COLORS.SORBET)(
196
- i18n(`${i18nKey}.running`, {
197
- accountIdentifier: uiAccountDescription(this.targetAccountId),
198
- projectName: this.projectConfig.name,
199
- })
200
- )
201
- );
202
- logger.log(
203
- uiLink(
204
- i18n(`${i18nKey}.viewProjectLink`),
205
- getProjectDetailUrl(
206
- this.projectConfig.name,
207
- this.targetProjectAccountId
208
- )
209
- )
210
- );
211
-
212
- if (this.activeApp.type === COMPONENT_TYPES.publicApp) {
213
- logger.log(
214
- uiLink(
215
- i18n(`${i18nKey}.viewTestAccountLink`),
216
- getAccountHomeUrl(this.targetAccountId)
217
- )
218
- );
173
+ async getActiveAppInstallationData() {
174
+ const { data } = await fetchAppInstallationData(this.targetAccountId, this.projectId, this.activeApp.config.uid, this.activeApp.config.auth.requiredScopes, this.activeApp.config.auth.optionalScopes);
175
+ return data;
219
176
  }
220
-
221
- logger.log();
222
- logger.log(i18n(`${i18nKey}.quitHelper`));
223
- uiLine();
224
- logger.log();
225
-
226
- await this.devServerStart();
227
-
228
- // Initialize project file watcher to detect configuration file changes
229
- this.startWatching();
230
-
231
- this.updateKeypressListeners();
232
-
233
- this.monitorConsoleOutput();
234
-
235
- // Verify that there are no mismatches between components in the local project
236
- // and components in the deployed build of the project.
237
- this.compareLocalProjectToDeployed();
238
- }
239
-
240
- async stop(showProgress = true) {
241
- if (showProgress) {
242
- SpinniesManager.add('cleanupMessage', {
243
- text: i18n(`${i18nKey}.exitingStart`),
244
- });
177
+ async checkPublicAppInstallation() {
178
+ const { isInstalledWithScopeGroups, previouslyAuthorizedScopeGroups, } = await this.getActiveAppInstallationData();
179
+ const isReinstall = previouslyAuthorizedScopeGroups.length > 0;
180
+ if (!isInstalledWithScopeGroups) {
181
+ await installPublicAppPrompt(this.env, this.targetAccountId, this.activePublicAppData.clientId, this.activeApp.config.auth.requiredScopes, this.activeApp.config.auth.redirectUrls, isReinstall);
182
+ }
245
183
  }
246
- await this.stopWatching();
247
-
248
- const cleanupSucceeded = await this.devServerCleanup();
249
-
250
- if (!cleanupSucceeded) {
251
- if (showProgress) {
252
- SpinniesManager.fail('cleanupMessage', {
253
- text: i18n(`${i18nKey}.exitingFail`),
184
+ updateKeypressListeners() {
185
+ handleKeypress(async (key) => {
186
+ if ((key.ctrl && key.name === 'c') || key.name === 'q') {
187
+ this.stop();
188
+ }
254
189
  });
255
- }
256
- process.exit(EXIT_CODES.ERROR);
257
190
  }
258
-
259
- if (showProgress) {
260
- SpinniesManager.succeed('cleanupMessage', {
261
- text: i18n(`${i18nKey}.exitingSucceed`),
262
- });
191
+ getUploadCommand() {
192
+ const currentDefaultAccount = getConfigDefaultAccount();
193
+ return this.targetProjectAccountId !== getAccountId(currentDefaultAccount)
194
+ ? uiCommandReference(`hs project upload --account=${this.targetProjectAccountId}`)
195
+ : uiCommandReference('hs project upload');
263
196
  }
264
- process.exit(EXIT_CODES.SUCCESS);
265
- }
266
-
267
- async getActiveAppInstallationData() {
268
- const { data } = await fetchAppInstallationData(
269
- this.targetAccountId,
270
- this.projectId,
271
- this.activeApp.config.uid,
272
- this.activeApp.config.auth.requiredScopes,
273
- this.activeApp.config.auth.optionalScopes
274
- );
275
-
276
- return data;
277
- }
278
-
279
- async checkPublicAppInstallation() {
280
- const {
281
- isInstalledWithScopeGroups,
282
- previouslyAuthorizedScopeGroups,
283
- } = await this.getActiveAppInstallationData();
284
-
285
- const isReinstall = previouslyAuthorizedScopeGroups.length > 0;
286
-
287
- if (!isInstalledWithScopeGroups) {
288
- await installPublicAppPrompt(
289
- this.env,
290
- this.targetAccountId,
291
- this.activePublicAppData.clientId,
292
- this.activeApp.config.auth.requiredScopes,
293
- this.activeApp.config.auth.redirectUrls,
294
- isReinstall
295
- );
296
- }
297
- }
298
-
299
- updateKeypressListeners() {
300
- handleKeypress(async key => {
301
- if ((key.ctrl && key.name === 'c') || key.name === 'q') {
302
- this.stop();
303
- }
304
- });
305
- }
306
-
307
- getUploadCommand() {
308
- const currentDefaultAccount = getConfigDefaultAccount();
309
-
310
- return this.targetProjectAccountId !== getAccountId(currentDefaultAccount)
311
- ? uiCommandReference(
312
- `hs project upload --account=${this.targetProjectAccountId}`
313
- )
314
- : uiCommandReference('hs project upload');
315
- }
316
-
317
- logUploadWarning(reason) {
318
- let warning = reason;
319
- if (!reason) {
320
- warning =
321
- this.activeApp.type === COMPONENT_TYPES.publicApp &&
322
- this.publicAppActiveInstalls > 0
323
- ? i18n(`${i18nKey}.uploadWarning.defaultPublicAppWarning`, {
324
- installCount: this.publicAppActiveInstalls,
325
- installText:
326
- this.publicAppActiveInstalls === 1 ? 'install' : 'installs',
327
- })
328
- : i18n(`${i18nKey}.uploadWarning.defaultWarning`);
197
+ logUploadWarning(reason) {
198
+ let warning = reason;
199
+ if (!reason) {
200
+ warning =
201
+ this.activeApp.type === COMPONENT_TYPES.publicApp &&
202
+ this.publicAppActiveInstalls > 0
203
+ ? i18n(`${i18nKey}.uploadWarning.defaultPublicAppWarning`, {
204
+ installCount: this.publicAppActiveInstalls,
205
+ installText: this.publicAppActiveInstalls === 1 ? 'install' : 'installs',
206
+ })
207
+ : i18n(`${i18nKey}.uploadWarning.defaultWarning`);
208
+ }
209
+ // Avoid logging the warning to the console if it is currently the most
210
+ // recently logged warning. We do not want to spam the console with the same message.
211
+ if (!this.uploadWarnings[warning]) {
212
+ logger.log();
213
+ logger.warn(i18n(`${i18nKey}.uploadWarning.header`, { warning }));
214
+ logger.log(i18n(`${i18nKey}.uploadWarning.stopDev`, {
215
+ command: uiCommandReference('hs project dev'),
216
+ }));
217
+ if (this.isGithubLinked) {
218
+ logger.log(i18n(`${i18nKey}.uploadWarning.pushToGithub`));
219
+ }
220
+ else {
221
+ logger.log(i18n(`${i18nKey}.uploadWarning.runUpload`, {
222
+ command: this.getUploadCommand(),
223
+ }));
224
+ }
225
+ logger.log(i18n(`${i18nKey}.uploadWarning.restartDev`, {
226
+ command: uiCommandReference('hs project dev'),
227
+ }));
228
+ this.mostRecentUploadWarning = warning;
229
+ this.uploadWarnings[warning] = true;
230
+ }
329
231
  }
330
-
331
- // Avoid logging the warning to the console if it is currently the most
332
- // recently logged warning. We do not want to spam the console with the same message.
333
- if (!this.uploadWarnings[warning]) {
334
- logger.log();
335
- logger.warn(i18n(`${i18nKey}.uploadWarning.header`, { warning }));
336
- logger.log(
337
- i18n(`${i18nKey}.uploadWarning.stopDev`, {
338
- command: uiCommandReference('hs project dev'),
339
- })
340
- );
341
- if (this.isGithubLinked) {
342
- logger.log(i18n(`${i18nKey}.uploadWarning.pushToGithub`));
343
- } else {
344
- logger.log(
345
- i18n(`${i18nKey}.uploadWarning.runUpload`, {
346
- command: this.getUploadCommand(),
347
- })
348
- );
349
- }
350
- logger.log(
351
- i18n(`${i18nKey}.uploadWarning.restartDev`, {
352
- command: uiCommandReference('hs project dev'),
353
- })
354
- );
355
-
356
- this.mostRecentUploadWarning = warning;
357
- this.uploadWarnings[warning] = true;
232
+ monitorConsoleOutput() {
233
+ const originalStdoutWrite = process.stdout.write.bind(process.stdout);
234
+ process.stdout.write = function (chunk, encoding, callback) {
235
+ // Reset the most recently logged warning
236
+ if (this.mostRecentUploadWarning &&
237
+ this.uploadWarnings[this.mostRecentUploadWarning]) {
238
+ delete this.uploadWarnings[this.mostRecentUploadWarning];
239
+ }
240
+ return originalStdoutWrite(chunk, encoding, callback);
241
+ }.bind(this);
358
242
  }
359
- }
360
-
361
- monitorConsoleOutput() {
362
- const originalStdoutWrite = process.stdout.write.bind(process.stdout);
363
-
364
- process.stdout.write = function(chunk, encoding, callback) {
365
- // Reset the most recently logged warning
366
- if (
367
- this.mostRecentUploadWarning &&
368
- this.uploadWarnings[this.mostRecentUploadWarning]
369
- ) {
370
- delete this.uploadWarnings[this.mostRecentUploadWarning];
371
- }
372
-
373
- return originalStdoutWrite(chunk, encoding, callback);
374
- }.bind(this);
375
- }
376
-
377
- compareLocalProjectToDeployed() {
378
- const deployedComponentNames = this.deployedBuild.subbuildStatuses.map(
379
- subbuildStatus => subbuildStatus.buildName
380
- );
381
-
382
- let missingComponents = [];
383
-
384
- this.runnableComponents.forEach(({ type, config, path }) => {
385
- if (Object.values(COMPONENT_TYPES).includes(type)) {
386
- const cardConfigs = getAppCardConfigs(config, path);
387
-
388
- if (!deployedComponentNames.includes(config.name)) {
389
- missingComponents.push(
390
- `${i18n(`${i18nKey}.uploadWarning.appLabel`)} ${config.name}`
391
- );
243
+ compareLocalProjectToDeployed() {
244
+ const deployedComponentNames = this.deployedBuild.subbuildStatuses.map(subbuildStatus => subbuildStatus.buildName);
245
+ const missingComponents = [];
246
+ this.runnableComponents.forEach(({ type, config, path }) => {
247
+ if (Object.values(COMPONENT_TYPES).includes(type)) {
248
+ const cardConfigs = getAppCardConfigs(config, path);
249
+ if (!deployedComponentNames.includes(config.name)) {
250
+ missingComponents.push(`${i18n(`${i18nKey}.uploadWarning.appLabel`)} ${config.name}`);
251
+ }
252
+ cardConfigs.forEach(cardConfig => {
253
+ if (cardConfig.data &&
254
+ cardConfig.data.title &&
255
+ !deployedComponentNames.includes(cardConfig.data.title)) {
256
+ missingComponents.push(`${i18n(`${i18nKey}.uploadWarning.uiExtensionLabel`)} ${cardConfig.data.title}`);
257
+ }
258
+ });
259
+ }
260
+ });
261
+ if (missingComponents.length) {
262
+ this.logUploadWarning(i18n(`${i18nKey}.uploadWarning.missingComponents`, {
263
+ missingComponents: missingComponents.join(', '),
264
+ }));
392
265
  }
393
-
394
- cardConfigs.forEach(cardConfig => {
395
- if (
396
- cardConfig.data &&
397
- cardConfig.data.title &&
398
- !deployedComponentNames.includes(cardConfig.data.title)
399
- ) {
400
- missingComponents.push(
401
- `${i18n(`${i18nKey}.uploadWarning.uiExtensionLabel`)} ${
402
- cardConfig.data.title
403
- }`
404
- );
405
- }
266
+ }
267
+ startWatching() {
268
+ this.watcher = chokidar.watch(this.projectDir, {
269
+ ignoreInitial: true,
270
+ });
271
+ const configPaths = this.runnableComponents
272
+ .filter(({ type }) => Object.values(COMPONENT_TYPES).includes(type))
273
+ .map(component => {
274
+ const appConfigPath = path.join(component.path, CONFIG_FILES[component.type]);
275
+ return appConfigPath;
276
+ });
277
+ const projectConfigPath = path.join(this.projectDir, PROJECT_CONFIG_FILE);
278
+ configPaths.push(projectConfigPath);
279
+ this.watcher.on('add', filePath => {
280
+ this.handleWatchEvent(filePath, WATCH_EVENTS.add, configPaths);
281
+ });
282
+ this.watcher.on('change', filePath => {
283
+ this.handleWatchEvent(filePath, WATCH_EVENTS.change, configPaths);
284
+ });
285
+ this.watcher.on('unlink', filePath => {
286
+ this.handleWatchEvent(filePath, WATCH_EVENTS.unlink, configPaths);
287
+ });
288
+ this.watcher.on('unlinkDir', filePath => {
289
+ this.handleWatchEvent(filePath, WATCH_EVENTS.unlinkDir, configPaths);
406
290
  });
407
- }
408
- });
409
-
410
- if (missingComponents.length) {
411
- this.logUploadWarning(
412
- i18n(`${i18nKey}.uploadWarning.missingComponents`, {
413
- missingComponents: missingComponents.join(', '),
414
- })
415
- );
416
291
  }
417
- }
418
-
419
- startWatching() {
420
- this.watcher = chokidar.watch(this.projectDir, {
421
- ignoreInitial: true,
422
- });
423
-
424
- const configPaths = this.runnableComponents
425
- .filter(({ type }) => Object.values(COMPONENT_TYPES).includes(type))
426
- .map(component => {
427
- const appConfigPath = path.join(
428
- component.path,
429
- CONFIG_FILES[component.type]
430
- );
431
- return appConfigPath;
432
- });
433
-
434
- const projectConfigPath = path.join(this.projectDir, PROJECT_CONFIG_FILE);
435
- configPaths.push(projectConfigPath);
436
-
437
- this.watcher.on('add', filePath => {
438
- this.handleWatchEvent(filePath, WATCH_EVENTS.add, configPaths);
439
- });
440
- this.watcher.on('change', filePath => {
441
- this.handleWatchEvent(filePath, WATCH_EVENTS.change, configPaths);
442
- });
443
- this.watcher.on('unlink', filePath => {
444
- this.handleWatchEvent(filePath, WATCH_EVENTS.unlink, configPaths);
445
- });
446
- this.watcher.on('unlinkDir', filePath => {
447
- this.handleWatchEvent(filePath, WATCH_EVENTS.unlinkDir, configPaths);
448
- });
449
- }
450
-
451
- async stopWatching() {
452
- await this.watcher.close();
453
- }
454
-
455
- handleWatchEvent(filePath, event, configPaths) {
456
- if (configPaths.includes(filePath)) {
457
- this.logUploadWarning();
458
- } else {
459
- this.devServerFileChange(filePath, event);
292
+ async stopWatching() {
293
+ await this.watcher.close();
460
294
  }
461
- }
462
-
463
- async devServerSetup() {
464
- try {
465
- await DevServerManager.setup({
466
- components: this.runnableComponents,
467
- onUploadRequired: this.logUploadWarning.bind(this),
468
- accountId: this.targetAccountId,
469
- setActiveApp: this.setActiveApp.bind(this),
470
- });
471
- return true;
472
- } catch (e) {
473
- if (this.debug) {
474
- logger.error(e);
475
- }
476
- logger.error(
477
- i18n(`${i18nKey}.devServer.setupError`, { message: e.message })
478
- );
479
- return false;
295
+ handleWatchEvent(filePath, event, configPaths) {
296
+ if (configPaths.includes(filePath)) {
297
+ this.logUploadWarning();
298
+ }
299
+ else {
300
+ this.devServerFileChange(filePath, event);
301
+ }
480
302
  }
481
- }
482
-
483
- async devServerStart() {
484
- try {
485
- await DevServerManager.start({
486
- accountId: this.targetAccountId,
487
- projectConfig: this.projectConfig,
488
- });
489
- } catch (e) {
490
- if (this.debug) {
491
- logger.error(e);
492
- }
493
- logger.error(
494
- i18n(`${i18nKey}.devServer.startError`, { message: e.message })
495
- );
496
- process.exit(EXIT_CODES.ERROR);
303
+ async devServerSetup() {
304
+ try {
305
+ await DevServerManager.setup({
306
+ components: this.runnableComponents,
307
+ onUploadRequired: this.logUploadWarning.bind(this),
308
+ accountId: this.targetAccountId,
309
+ setActiveApp: this.setActiveApp.bind(this),
310
+ });
311
+ return true;
312
+ }
313
+ catch (e) {
314
+ if (this.debug) {
315
+ logger.error(e);
316
+ }
317
+ logger.error(i18n(`${i18nKey}.devServer.setupError`, { message: e.message }));
318
+ return false;
319
+ }
497
320
  }
498
- }
499
-
500
- devServerFileChange(filePath, event) {
501
- try {
502
- DevServerManager.fileChange({ filePath, event });
503
- } catch (e) {
504
- if (this.debug) {
505
- logger.error(e);
506
- }
507
- logger.error(
508
- i18n(`${i18nKey}.devServer.fileChangeError`, {
509
- message: e.message,
510
- })
511
- );
321
+ async devServerStart() {
322
+ try {
323
+ await DevServerManager.start({
324
+ accountId: this.targetAccountId,
325
+ projectConfig: this.projectConfig,
326
+ });
327
+ }
328
+ catch (e) {
329
+ if (this.debug) {
330
+ logger.error(e);
331
+ }
332
+ logger.error(i18n(`${i18nKey}.devServer.startError`, { message: e.message }));
333
+ process.exit(EXIT_CODES.ERROR);
334
+ }
512
335
  }
513
- }
514
-
515
- async devServerCleanup() {
516
- try {
517
- await DevServerManager.cleanup();
518
- return true;
519
- } catch (e) {
520
- if (this.debug) {
521
- logger.error(e);
522
- }
523
- logger.error(
524
- i18n(`${i18nKey}.devServer.cleanupError`, { message: e.message })
525
- );
526
- return false;
336
+ devServerFileChange(filePath, event) {
337
+ try {
338
+ DevServerManager.fileChange({ filePath, event });
339
+ }
340
+ catch (e) {
341
+ if (this.debug) {
342
+ logger.error(e);
343
+ }
344
+ logger.error(i18n(`${i18nKey}.devServer.fileChangeError`, {
345
+ message: e.message,
346
+ }));
347
+ }
348
+ }
349
+ async devServerCleanup() {
350
+ try {
351
+ await DevServerManager.cleanup();
352
+ return true;
353
+ }
354
+ catch (e) {
355
+ if (this.debug) {
356
+ logger.error(e);
357
+ }
358
+ logger.error(i18n(`${i18nKey}.devServer.cleanupError`, { message: e.message }));
359
+ return false;
360
+ }
527
361
  }
528
- }
529
362
  }
530
-
531
363
  module.exports = LocalDevManager;