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