@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
package/lib/localDev.js CHANGED
@@ -1,491 +1,337 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // @ts-nocheck
1
4
  const { logger } = require('@hubspot/local-dev-lib/logger');
2
- const {
3
- HUBSPOT_ACCOUNT_TYPES,
4
- HUBSPOT_ACCOUNT_TYPE_STRINGS,
5
- } = require('@hubspot/local-dev-lib/constants/config');
6
- const {
7
- isMissingScopeError,
8
- isSpecifiedError,
9
- } = require('@hubspot/local-dev-lib/errors/index');
5
+ const { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } = require('@hubspot/local-dev-lib/constants/config');
6
+ const { isMissingScopeError, isSpecifiedError, } = require('@hubspot/local-dev-lib/errors/index');
10
7
  const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
11
8
  const { getAccountConfig, getEnv } = require('@hubspot/local-dev-lib/config');
12
9
  const { createProject } = require('@hubspot/local-dev-lib/api/projects');
13
- const {
14
- ENVIRONMENTS,
15
- } = require('@hubspot/local-dev-lib/constants/environments');
16
- const {
17
- confirmDefaultAccountPrompt,
18
- selectSandboxTargetAccountPrompt,
19
- selectDeveloperTestTargetAccountPrompt,
20
- confirmUseExistingDeveloperTestAccountPrompt,
21
- } = require('./prompts/projectDevTargetAccountPrompt');
10
+ const { ENVIRONMENTS, } = require('@hubspot/local-dev-lib/constants/environments');
11
+ const { confirmDefaultAccountPrompt, selectSandboxTargetAccountPrompt, selectDeveloperTestTargetAccountPrompt, confirmUseExistingDeveloperTestAccountPrompt, } = require('./prompts/projectDevTargetAccountPrompt');
22
12
  const { confirmPrompt } = require('./prompts/promptUtils');
23
- const {
24
- validateSandboxUsageLimits,
25
- getAvailableSyncTypes,
26
- } = require('./sandboxes');
13
+ const { validateSandboxUsageLimits, getAvailableSyncTypes, } = require('./sandboxes');
27
14
  const { syncSandbox } = require('./sandboxSync');
28
- const {
29
- validateDevTestAccountUsageLimits,
30
- } = require('./developerTestAccounts');
15
+ const { validateDevTestAccountUsageLimits, } = require('./developerTestAccounts');
31
16
  const { uiCommandReference, uiLine, uiAccountDescription } = require('./ui');
32
17
  const SpinniesManager = require('./ui/SpinniesManager');
33
18
  const { i18n } = require('./lang');
34
19
  const { EXIT_CODES } = require('./enums/exitCodes');
35
20
  const { trackCommandMetadataUsage } = require('./usageTracking');
36
- const {
37
- isAppDeveloperAccount,
38
- isDeveloperTestAccount,
39
- } = require('./accountTypes');
40
- const {
41
- handleProjectUpload,
42
- pollProjectBuildAndDeploy,
43
- } = require('./projects');
44
- const {
45
- PROJECT_ERROR_TYPES,
46
- PROJECT_BUILD_TEXT,
47
- PROJECT_DEPLOY_TEXT,
48
- } = require('./constants');
21
+ const { isAppDeveloperAccount, isDeveloperTestAccount, } = require('./accountTypes');
22
+ const { handleProjectUpload, pollProjectBuildAndDeploy, } = require('./projects');
23
+ const { PROJECT_ERROR_TYPES, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, } = require('./constants');
49
24
  const { logError, ApiErrorContext } = require('./errorHandlers/index');
50
- const {
51
- PERSONAL_ACCESS_KEY_AUTH_METHOD,
52
- } = require('@hubspot/local-dev-lib/constants/auth');
25
+ const { PERSONAL_ACCESS_KEY_AUTH_METHOD, } = require('@hubspot/local-dev-lib/constants/auth');
53
26
  const { buildNewAccount, saveAccountToConfig } = require('./buildAccount');
54
27
  const { hubspotAccountNamePrompt } = require('./prompts/accountNamePrompt');
55
-
56
28
  const i18nKey = 'lib.localDev';
57
-
58
29
  // If the user passed in the --account flag, confirm they want to use that account as
59
30
  // their target account, otherwise exit
60
- const confirmDefaultAccountIsTarget = async accountConfig => {
61
- logger.log();
62
- const useDefaultAccount = await confirmDefaultAccountPrompt(
63
- accountConfig.name,
64
- HUBSPOT_ACCOUNT_TYPE_STRINGS[accountConfig.accountType]
65
- );
66
-
67
- if (!useDefaultAccount) {
68
- logger.log(
69
- i18n(
70
- `${i18nKey}.confirmDefaultAccountIsTarget.declineDefaultAccountExplanation`,
71
- {
72
- useCommand: uiCommandReference('hs accounts use'),
73
- devCommand: uiCommandReference('hs project dev'),
74
- }
75
- )
76
- );
77
- process.exit(EXIT_CODES.SUCCESS);
78
- }
31
+ const confirmDefaultAccountIsTarget = async (accountConfig) => {
32
+ logger.log();
33
+ const useDefaultAccount = await confirmDefaultAccountPrompt(accountConfig.name, HUBSPOT_ACCOUNT_TYPE_STRINGS[accountConfig.accountType]);
34
+ if (!useDefaultAccount) {
35
+ logger.log(i18n(`${i18nKey}.confirmDefaultAccountIsTarget.declineDefaultAccountExplanation`, {
36
+ useCommand: uiCommandReference('hs accounts use'),
37
+ devCommand: uiCommandReference('hs project dev'),
38
+ }));
39
+ process.exit(EXIT_CODES.SUCCESS);
40
+ }
79
41
  };
80
-
81
42
  // Confirm the default account is supported for the type of apps being developed
82
43
  const checkIfDefaultAccountIsSupported = (accountConfig, hasPublicApps) => {
83
- if (
84
- hasPublicApps &&
85
- !(
86
- isAppDeveloperAccount(accountConfig) ||
87
- isDeveloperTestAccount(accountConfig)
88
- )
89
- ) {
90
- logger.error(
91
- i18n(`${i18nKey}.checkIfDefaultAccountIsSupported.publicApp`, {
92
- useCommand: uiCommandReference('hs accounts use'),
93
- authCommand: uiCommandReference('hs auth'),
94
- })
95
- );
96
- process.exit(EXIT_CODES.SUCCESS);
97
- } else if (!hasPublicApps && isAppDeveloperAccount(accountConfig)) {
98
- logger.error(
99
- i18n(`${i18nKey}.checkIfDefaultAccountIsSupported.privateApp`, {
100
- useCommand: uiCommandReference('hs accounts use'),
101
- authCommand: uiCommandReference('hs auth'),
102
- })
103
- );
104
- process.exit(EXIT_CODES.SUCCESS);
105
- }
44
+ if (hasPublicApps &&
45
+ !(isAppDeveloperAccount(accountConfig) ||
46
+ isDeveloperTestAccount(accountConfig))) {
47
+ logger.error(i18n(`${i18nKey}.checkIfDefaultAccountIsSupported.publicApp`, {
48
+ useCommand: uiCommandReference('hs accounts use'),
49
+ authCommand: uiCommandReference('hs auth'),
50
+ }));
51
+ process.exit(EXIT_CODES.SUCCESS);
52
+ }
53
+ else if (!hasPublicApps && isAppDeveloperAccount(accountConfig)) {
54
+ logger.error(i18n(`${i18nKey}.checkIfDefaultAccountIsSupported.privateApp`, {
55
+ useCommand: uiCommandReference('hs accounts use'),
56
+ authCommand: uiCommandReference('hs auth'),
57
+ }));
58
+ process.exit(EXIT_CODES.SUCCESS);
59
+ }
106
60
  };
107
-
108
61
  const checkIfParentAccountIsAuthed = accountConfig => {
109
- if (!getAccountConfig(accountConfig.parentAccountId)) {
110
- logger.error(
111
- i18n(`${i18nKey}.checkIfParentAccountIsAuthed.notAuthedError`, {
112
- accountId: accountConfig.parentAccountId,
113
- accountIdentifier: uiAccountDescription(accountConfig.portalId),
114
- authCommand: uiCommandReference(
115
- `hs auth --account=${accountConfig.parentAccountId}`
116
- ),
117
- })
118
- );
119
- process.exit(EXIT_CODES.SUCCESS);
120
- }
62
+ if (!getAccountConfig(accountConfig.parentAccountId)) {
63
+ logger.error(i18n(`${i18nKey}.checkIfParentAccountIsAuthed.notAuthedError`, {
64
+ accountId: accountConfig.parentAccountId,
65
+ accountIdentifier: uiAccountDescription(accountConfig.portalId),
66
+ authCommand: uiCommandReference(`hs auth --account=${accountConfig.parentAccountId}`),
67
+ }));
68
+ process.exit(EXIT_CODES.SUCCESS);
69
+ }
121
70
  };
122
-
123
71
  // Confirm the default account is a developer account if developing public apps
124
72
  const checkIfAccountFlagIsSupported = (accountConfig, hasPublicApps) => {
125
- if (hasPublicApps) {
126
- if (!isDeveloperTestAccount) {
127
- logger.error(
128
- i18n(`${i18nKey}.validateAccountOption.invalidPublicAppAccount`, {
129
- useCommand: uiCommandReference('hs accounts use'),
130
- devCommand: uiCommandReference('hs project dev'),
131
- })
132
- );
133
- process.exit(EXIT_CODES.SUCCESS);
73
+ if (hasPublicApps) {
74
+ if (!isDeveloperTestAccount) {
75
+ logger.error(i18n(`${i18nKey}.validateAccountOption.invalidPublicAppAccount`, {
76
+ useCommand: uiCommandReference('hs accounts use'),
77
+ devCommand: uiCommandReference('hs project dev'),
78
+ }));
79
+ process.exit(EXIT_CODES.SUCCESS);
80
+ }
81
+ checkIfParentAccountIsAuthed(accountConfig);
82
+ }
83
+ else if (isAppDeveloperAccount(accountConfig)) {
84
+ logger.error(i18n(`${i18nKey}.validateAccountOption.invalidPrivateAppAccount`, {
85
+ useCommand: uiCommandReference('hs accounts use'),
86
+ }));
87
+ process.exit(EXIT_CODES.SUCCESS);
134
88
  }
135
- checkIfParentAccountIsAuthed(accountConfig);
136
- } else if (isAppDeveloperAccount(accountConfig)) {
137
- logger.error(
138
- i18n(`${i18nKey}.validateAccountOption.invalidPrivateAppAccount`, {
139
- useCommand: uiCommandReference('hs accounts use'),
140
- })
141
- );
142
- process.exit(EXIT_CODES.SUCCESS);
143
- }
144
89
  };
145
-
146
90
  // If the user isn't using the recommended account type, prompt them to use or create one
147
- const suggestRecommendedNestedAccount = async (
148
- accounts,
149
- accountConfig,
150
- hasPublicApps
151
- ) => {
152
- logger.log();
153
- uiLine();
154
- if (hasPublicApps) {
155
- logger.log(
156
- i18n(
157
- `${i18nKey}.validateAccountOption.publicAppNonDeveloperTestAccountWarning`
158
- )
159
- );
160
- } else {
161
- logger.log(i18n(`${i18nKey}.validateAccountOption.nonSandboxWarning`));
162
- }
163
- uiLine();
164
- logger.log();
165
-
166
- const targetAccountPrompt = isAppDeveloperAccount(accountConfig)
167
- ? selectDeveloperTestTargetAccountPrompt
168
- : selectSandboxTargetAccountPrompt;
169
-
170
- return targetAccountPrompt(accounts, accountConfig, hasPublicApps);
91
+ const suggestRecommendedNestedAccount = async (accounts, accountConfig, hasPublicApps) => {
92
+ logger.log();
93
+ uiLine();
94
+ if (hasPublicApps) {
95
+ logger.log(i18n(`${i18nKey}.validateAccountOption.publicAppNonDeveloperTestAccountWarning`));
96
+ }
97
+ else {
98
+ logger.log(i18n(`${i18nKey}.validateAccountOption.nonSandboxWarning`));
99
+ }
100
+ uiLine();
101
+ logger.log();
102
+ const targetAccountPrompt = isAppDeveloperAccount(accountConfig)
103
+ ? selectDeveloperTestTargetAccountPrompt
104
+ : selectSandboxTargetAccountPrompt;
105
+ return targetAccountPrompt(accounts, accountConfig, hasPublicApps);
171
106
  };
172
-
173
107
  // Create a new sandbox and return its accountId
174
108
  const createSandboxForLocalDev = async (accountId, accountConfig, env) => {
175
- try {
176
- await validateSandboxUsageLimits(
177
- accountConfig,
178
- HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
179
- env
180
- );
181
- } catch (err) {
182
- if (isMissingScopeError(err)) {
183
- logger.error(
184
- i18n('lib.sandbox.create.failure.scopes.message', {
185
- accountName: accountConfig.name || accountId,
186
- })
187
- );
188
- const websiteOrigin = getHubSpotWebsiteOrigin(env);
189
- const url = `${websiteOrigin}/personal-access-key/${accountId}`;
190
- logger.info(
191
- i18n('lib.sandbox.create.failure.scopes.instructions', {
192
- accountName: accountConfig.name || accountId,
193
- url,
194
- })
195
- );
196
- } else {
197
- logError(err);
109
+ try {
110
+ await validateSandboxUsageLimits(accountConfig, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, env);
111
+ }
112
+ catch (err) {
113
+ if (isMissingScopeError(err)) {
114
+ logger.error(i18n('lib.sandbox.create.failure.scopes.message', {
115
+ accountName: accountConfig.name || accountId,
116
+ }));
117
+ const websiteOrigin = getHubSpotWebsiteOrigin(env);
118
+ const url = `${websiteOrigin}/personal-access-key/${accountId}`;
119
+ logger.info(i18n('lib.sandbox.create.failure.scopes.instructions', {
120
+ accountName: accountConfig.name || accountId,
121
+ url,
122
+ }));
123
+ }
124
+ else {
125
+ logError(err);
126
+ }
127
+ process.exit(EXIT_CODES.ERROR);
128
+ }
129
+ try {
130
+ const { name } = await hubspotAccountNamePrompt({
131
+ accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
132
+ });
133
+ trackCommandMetadataUsage('sandbox-create', { step: 'project-dev' }, accountId);
134
+ const { result } = await buildNewAccount({
135
+ name,
136
+ accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
137
+ accountConfig,
138
+ env,
139
+ });
140
+ const targetAccountId = result.sandbox.sandboxHubId;
141
+ const sandboxAccountConfig = getAccountConfig(result.sandbox.sandboxHubId);
142
+ const syncTasks = await getAvailableSyncTypes(accountConfig, sandboxAccountConfig);
143
+ // For v1 sandboxes, keep sync here. Once we migrate to v2, this will be handled by BE automatically
144
+ await syncSandbox({
145
+ accountConfig: sandboxAccountConfig,
146
+ parentAccountConfig: accountConfig,
147
+ env,
148
+ syncTasks,
149
+ slimInfoMessage: true,
150
+ });
151
+ return targetAccountId;
152
+ }
153
+ catch (err) {
154
+ logError(err);
155
+ process.exit(EXIT_CODES.ERROR);
198
156
  }
199
- process.exit(EXIT_CODES.ERROR);
200
- }
201
- try {
202
- const { name } = await hubspotAccountNamePrompt({
203
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
204
- });
205
-
206
- trackCommandMetadataUsage(
207
- 'sandbox-create',
208
- { step: 'project-dev' },
209
- accountId
210
- );
211
-
212
- const { result } = await buildNewAccount({
213
- name,
214
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
215
- accountConfig,
216
- env,
217
- });
218
-
219
- const targetAccountId = result.sandbox.sandboxHubId;
220
-
221
- const sandboxAccountConfig = getAccountConfig(result.sandbox.sandboxHubId);
222
- const syncTasks = await getAvailableSyncTypes(
223
- accountConfig,
224
- sandboxAccountConfig
225
- );
226
- // For v1 sandboxes, keep sync here. Once we migrate to v2, this will be handled by BE automatically
227
- await syncSandbox({
228
- accountConfig: sandboxAccountConfig,
229
- parentAccountConfig: accountConfig,
230
- env,
231
- syncTasks,
232
- slimInfoMessage: true,
233
- });
234
- return targetAccountId;
235
- } catch (err) {
236
- logError(err);
237
- process.exit(EXIT_CODES.ERROR);
238
- }
239
157
  };
240
-
241
158
  // Create a developer test account and return its accountId
242
- const createDeveloperTestAccountForLocalDev = async (
243
- accountId,
244
- accountConfig,
245
- env
246
- ) => {
247
- let currentPortalCount = 0;
248
- let maxTestPortals = 10;
249
- try {
250
- const validateResult = await validateDevTestAccountUsageLimits(
251
- accountConfig
252
- );
253
- if (validateResult) {
254
- currentPortalCount = validateResult.results
255
- ? validateResult.results.length
256
- : 0;
257
- maxTestPortals = validateResult.maxTestPortals;
159
+ const createDeveloperTestAccountForLocalDev = async (accountId, accountConfig, env) => {
160
+ let currentPortalCount = 0;
161
+ let maxTestPortals = 10;
162
+ try {
163
+ const validateResult = await validateDevTestAccountUsageLimits(accountConfig);
164
+ if (validateResult) {
165
+ currentPortalCount = validateResult.results
166
+ ? validateResult.results.length
167
+ : 0;
168
+ maxTestPortals = validateResult.maxTestPortals;
169
+ }
258
170
  }
259
- } catch (err) {
260
- if (isMissingScopeError(err)) {
261
- logger.error(
262
- i18n('lib.developerTestAccount.create.failure.scopes.message', {
263
- accountName: accountConfig.name || accountId,
264
- })
265
- );
266
- const websiteOrigin = getHubSpotWebsiteOrigin(env);
267
- const url = `${websiteOrigin}/personal-access-key/${accountId}`;
268
- logger.info(
269
- i18n('lib.developerTestAccount.create.failure.scopes.instructions', {
270
- accountName: accountConfig.name || accountId,
271
- url,
272
- })
273
- );
274
- } else {
275
- logError(err);
171
+ catch (err) {
172
+ if (isMissingScopeError(err)) {
173
+ logger.error(i18n('lib.developerTestAccount.create.failure.scopes.message', {
174
+ accountName: accountConfig.name || accountId,
175
+ }));
176
+ const websiteOrigin = getHubSpotWebsiteOrigin(env);
177
+ const url = `${websiteOrigin}/personal-access-key/${accountId}`;
178
+ logger.info(i18n('lib.developerTestAccount.create.failure.scopes.instructions', {
179
+ accountName: accountConfig.name || accountId,
180
+ url,
181
+ }));
182
+ }
183
+ else {
184
+ logError(err);
185
+ }
186
+ process.exit(EXIT_CODES.ERROR);
187
+ }
188
+ try {
189
+ const { name } = await hubspotAccountNamePrompt({
190
+ currentPortalCount,
191
+ accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
192
+ });
193
+ trackCommandMetadataUsage('developer-test-account-create', { step: 'project-dev' }, accountId);
194
+ const { result } = await buildNewAccount({
195
+ name,
196
+ accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
197
+ accountConfig,
198
+ env,
199
+ portalLimit: maxTestPortals,
200
+ });
201
+ return result.id;
202
+ }
203
+ catch (err) {
204
+ logError(err);
205
+ process.exit(EXIT_CODES.ERROR);
276
206
  }
277
- process.exit(EXIT_CODES.ERROR);
278
- }
279
-
280
- try {
281
- const { name } = await hubspotAccountNamePrompt({
282
- currentPortalCount,
283
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
284
- });
285
- trackCommandMetadataUsage(
286
- 'developer-test-account-create',
287
- { step: 'project-dev' },
288
- accountId
289
- );
290
-
291
- const { result } = await buildNewAccount({
292
- name,
293
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
294
- accountConfig,
295
- env,
296
- portalLimit: maxTestPortals,
297
- });
298
-
299
- return result.id;
300
- } catch (err) {
301
- logError(err);
302
- process.exit(EXIT_CODES.ERROR);
303
- }
304
207
  };
305
-
306
208
  // Prompt user to confirm usage of an existing developer test account that is not currently in the config
307
209
  const useExistingDevTestAccount = async (env, account) => {
308
- const useExistingDevTestAcct = await confirmUseExistingDeveloperTestAccountPrompt(
309
- account
310
- );
311
- if (!useExistingDevTestAcct) {
312
- logger.log('');
313
- logger.log(
314
- i18n(
315
- `${i18nKey}.confirmDefaultAccountIsTarget.declineDefaultAccountExplanation`,
316
- {
317
- useCommand: uiCommandReference('hs accounts use'),
318
- devCommand: uiCommandReference('hs project dev'),
319
- }
320
- )
321
- );
322
- logger.log('');
323
- process.exit(EXIT_CODES.SUCCESS);
324
- }
325
- const devTestAcctConfigName = await saveAccountToConfig({
326
- env,
327
- accountName: account.accountName,
328
- accountId: account.id,
329
- });
330
- logger.success(
331
- i18n(`lib.developerTestAccount.create.success.configFileUpdated`, {
332
- accountName: devTestAcctConfigName,
333
- authType: PERSONAL_ACCESS_KEY_AUTH_METHOD.name,
334
- })
335
- );
210
+ const useExistingDevTestAcct = await confirmUseExistingDeveloperTestAccountPrompt(account);
211
+ if (!useExistingDevTestAcct) {
212
+ logger.log('');
213
+ logger.log(i18n(`${i18nKey}.confirmDefaultAccountIsTarget.declineDefaultAccountExplanation`, {
214
+ useCommand: uiCommandReference('hs accounts use'),
215
+ devCommand: uiCommandReference('hs project dev'),
216
+ }));
217
+ logger.log('');
218
+ process.exit(EXIT_CODES.SUCCESS);
219
+ }
220
+ const devTestAcctConfigName = await saveAccountToConfig({
221
+ env,
222
+ accountName: account.accountName,
223
+ accountId: account.id,
224
+ });
225
+ logger.success(i18n(`lib.developerTestAccount.create.success.configFileUpdated`, {
226
+ accountName: devTestAcctConfigName,
227
+ authType: PERSONAL_ACCESS_KEY_AUTH_METHOD.name,
228
+ }));
336
229
  };
337
-
338
230
  // Prompt the user to create a new project if one doesn't exist on their target account
339
- const createNewProjectForLocalDev = async (
340
- projectConfig,
341
- targetAccountId,
342
- shouldCreateWithoutConfirmation,
343
- hasPublicApps
344
- ) => {
345
- // Create the project without prompting if this is a newly created sandbox
346
- let shouldCreateProject = shouldCreateWithoutConfirmation;
347
-
348
- if (!shouldCreateProject) {
349
- const explanationString = i18n(
350
- hasPublicApps
351
- ? `${i18nKey}.createNewProjectForLocalDev.publicAppProjectMustExistExplanation`
352
- : `${i18nKey}.createNewProjectForLocalDev.projectMustExistExplanation`,
353
- {
354
- accountIdentifier: uiAccountDescription(targetAccountId),
355
- projectName: projectConfig.name,
356
- }
357
- );
358
- logger.log();
359
- uiLine();
360
- logger.log(explanationString);
361
- uiLine();
362
-
363
- shouldCreateProject = await confirmPrompt(
364
- i18n(`${i18nKey}.createNewProjectForLocalDev.createProject`, {
365
- accountIdentifier: uiAccountDescription(targetAccountId),
366
- projectName: projectConfig.name,
367
- })
368
- );
369
- }
370
-
371
- if (shouldCreateProject) {
372
- SpinniesManager.add('createProject', {
373
- text: i18n(`${i18nKey}.createNewProjectForLocalDev.creatingProject`, {
374
- accountIdentifier: uiAccountDescription(targetAccountId),
375
- projectName: projectConfig.name,
376
- }),
377
- });
378
-
379
- try {
380
- const { data: project } = await createProject(
381
- targetAccountId,
382
- projectConfig.name
383
- );
384
- SpinniesManager.succeed('createProject', {
385
- text: i18n(`${i18nKey}.createNewProjectForLocalDev.createdProject`, {
386
- accountIdentifier: uiAccountDescription(targetAccountId),
387
- projectName: projectConfig.name,
388
- }),
389
- succeedColor: 'white',
390
- });
391
- return project;
392
- } catch (err) {
393
- SpinniesManager.fail('createProject');
394
- logger.log(
395
- i18n(`${i18nKey}.createNewProjectForLocalDev.failedToCreateProject`)
396
- );
397
- process.exit(EXIT_CODES.ERROR);
231
+ const createNewProjectForLocalDev = async (projectConfig, targetAccountId, shouldCreateWithoutConfirmation, hasPublicApps) => {
232
+ // Create the project without prompting if this is a newly created sandbox
233
+ let shouldCreateProject = shouldCreateWithoutConfirmation;
234
+ if (!shouldCreateProject) {
235
+ const explanationString = i18n(hasPublicApps
236
+ ? `${i18nKey}.createNewProjectForLocalDev.publicAppProjectMustExistExplanation`
237
+ : `${i18nKey}.createNewProjectForLocalDev.projectMustExistExplanation`, {
238
+ accountIdentifier: uiAccountDescription(targetAccountId),
239
+ projectName: projectConfig.name,
240
+ });
241
+ logger.log();
242
+ uiLine();
243
+ logger.log(explanationString);
244
+ uiLine();
245
+ shouldCreateProject = await confirmPrompt(i18n(`${i18nKey}.createNewProjectForLocalDev.createProject`, {
246
+ accountIdentifier: uiAccountDescription(targetAccountId),
247
+ projectName: projectConfig.name,
248
+ }));
249
+ }
250
+ if (shouldCreateProject) {
251
+ SpinniesManager.add('createProject', {
252
+ text: i18n(`${i18nKey}.createNewProjectForLocalDev.creatingProject`, {
253
+ accountIdentifier: uiAccountDescription(targetAccountId),
254
+ projectName: projectConfig.name,
255
+ }),
256
+ });
257
+ try {
258
+ const { data: project } = await createProject(targetAccountId, projectConfig.name);
259
+ SpinniesManager.succeed('createProject', {
260
+ text: i18n(`${i18nKey}.createNewProjectForLocalDev.createdProject`, {
261
+ accountIdentifier: uiAccountDescription(targetAccountId),
262
+ projectName: projectConfig.name,
263
+ }),
264
+ succeedColor: 'white',
265
+ });
266
+ return project;
267
+ }
268
+ catch (err) {
269
+ SpinniesManager.fail('createProject');
270
+ logger.log(i18n(`${i18nKey}.createNewProjectForLocalDev.failedToCreateProject`));
271
+ process.exit(EXIT_CODES.ERROR);
272
+ }
273
+ }
274
+ else {
275
+ // We cannot continue if the project does not exist in the target account
276
+ logger.log();
277
+ logger.log(i18n(`${i18nKey}.createNewProjectForLocalDev.choseNotToCreateProject`));
278
+ process.exit(EXIT_CODES.SUCCESS);
398
279
  }
399
- } else {
400
- // We cannot continue if the project does not exist in the target account
401
- logger.log();
402
- logger.log(
403
- i18n(`${i18nKey}.createNewProjectForLocalDev.choseNotToCreateProject`)
404
- );
405
- process.exit(EXIT_CODES.SUCCESS);
406
- }
407
280
  };
408
-
409
281
  // Create an initial build if the project was newly created in the account
410
282
  // Return the newly deployed build
411
- const createInitialBuildForNewProject = async (
412
- projectConfig,
413
- projectDir,
414
- targetAccountId
415
- ) => {
416
- const initialUploadResult = await handleProjectUpload(
417
- targetAccountId,
418
- projectConfig,
419
- projectDir,
420
- (...args) => pollProjectBuildAndDeploy(...args, true),
421
- i18n(`${i18nKey}.createInitialBuildForNewProject.initialUploadMessage`)
422
- );
423
-
424
- if (initialUploadResult.uploadError) {
425
- if (
426
- isSpecifiedError(initialUploadResult.uploadError, {
427
- subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
428
- })
429
- ) {
430
- logger.log();
431
- logger.error(
432
- i18n(`${i18nKey}.createInitialBuildForNewProject.projectLockedError`)
433
- );
434
- logger.log();
435
- } else {
436
- logError(
437
- initialUploadResult.uploadError,
438
- new ApiErrorContext({
439
- accountId: targetAccountId,
440
- projectName: projectConfig.name,
441
- })
442
- );
283
+ const createInitialBuildForNewProject = async (projectConfig, projectDir, targetAccountId) => {
284
+ const initialUploadResult = await handleProjectUpload(targetAccountId, projectConfig, projectDir, (...args) => pollProjectBuildAndDeploy(...args, true), i18n(`${i18nKey}.createInitialBuildForNewProject.initialUploadMessage`));
285
+ if (initialUploadResult.uploadError) {
286
+ if (isSpecifiedError(initialUploadResult.uploadError, {
287
+ subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
288
+ })) {
289
+ logger.log();
290
+ logger.error(i18n(`${i18nKey}.createInitialBuildForNewProject.projectLockedError`));
291
+ logger.log();
292
+ }
293
+ else {
294
+ logError(initialUploadResult.uploadError, new ApiErrorContext({
295
+ accountId: targetAccountId,
296
+ projectName: projectConfig.name,
297
+ }));
298
+ }
299
+ process.exit(EXIT_CODES.ERROR);
443
300
  }
444
- process.exit(EXIT_CODES.ERROR);
445
- }
446
-
447
- if (!initialUploadResult.succeeded) {
448
- let subTasks = [];
449
-
450
- if (initialUploadResult.buildResult.status === 'FAILURE') {
451
- subTasks =
452
- initialUploadResult.buildResult[PROJECT_BUILD_TEXT.SUBTASK_KEY];
453
- } else if (initialUploadResult.deployResult.status === 'FAILURE') {
454
- subTasks =
455
- initialUploadResult.deployResult[PROJECT_DEPLOY_TEXT.SUBTASK_KEY];
301
+ if (!initialUploadResult.succeeded) {
302
+ let subTasks = [];
303
+ if (initialUploadResult.buildResult.status === 'FAILURE') {
304
+ subTasks =
305
+ initialUploadResult.buildResult[PROJECT_BUILD_TEXT.SUBTASK_KEY];
306
+ }
307
+ else if (initialUploadResult.deployResult.status === 'FAILURE') {
308
+ subTasks =
309
+ initialUploadResult.deployResult[PROJECT_DEPLOY_TEXT.SUBTASK_KEY];
310
+ }
311
+ const failedSubTasks = subTasks.filter(task => task.status === 'FAILURE');
312
+ logger.log();
313
+ failedSubTasks.forEach(failedSubTask => {
314
+ logger.error(failedSubTask.errorMessage);
315
+ });
316
+ logger.log();
317
+ process.exit(EXIT_CODES.ERROR);
456
318
  }
457
-
458
- const failedSubTasks = subTasks.filter(task => task.status === 'FAILURE');
459
-
460
- logger.log();
461
- failedSubTasks.forEach(failedSubTask => {
462
- logger.error(failedSubTask.errorMessage);
463
- });
464
- logger.log();
465
-
466
- process.exit(EXIT_CODES.ERROR);
467
- }
468
-
469
- return initialUploadResult.buildResult;
319
+ return initialUploadResult.buildResult;
470
320
  };
471
-
472
321
  const getAccountHomeUrl = accountId => {
473
- const baseUrl = getHubSpotWebsiteOrigin(
474
- getEnv(accountId) === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD
475
- );
476
- return `${baseUrl}/home?portalId=${accountId}`;
322
+ const baseUrl = getHubSpotWebsiteOrigin(getEnv(accountId) === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
323
+ return `${baseUrl}/home?portalId=${accountId}`;
477
324
  };
478
-
479
325
  module.exports = {
480
- confirmDefaultAccountIsTarget,
481
- checkIfDefaultAccountIsSupported,
482
- checkIfAccountFlagIsSupported,
483
- suggestRecommendedNestedAccount,
484
- createSandboxForLocalDev,
485
- createDeveloperTestAccountForLocalDev,
486
- useExistingDevTestAccount,
487
- createNewProjectForLocalDev,
488
- createInitialBuildForNewProject,
489
- getAccountHomeUrl,
490
- checkIfParentAccountIsAuthed,
326
+ confirmDefaultAccountIsTarget,
327
+ checkIfDefaultAccountIsSupported,
328
+ checkIfAccountFlagIsSupported,
329
+ suggestRecommendedNestedAccount,
330
+ createSandboxForLocalDev,
331
+ createDeveloperTestAccountForLocalDev,
332
+ useExistingDevTestAccount,
333
+ createNewProjectForLocalDev,
334
+ createInitialBuildForNewProject,
335
+ getAccountHomeUrl,
336
+ checkIfParentAccountIsAuthed,
491
337
  };