@hubspot/cli 7.5.11-experimental.0 → 7.6.0-beta.1

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 (352) hide show
  1. package/bin/cli.js +102 -95
  2. package/commands/account/auth.d.ts +5 -7
  3. package/commands/account/auth.js +74 -87
  4. package/commands/account/clean.d.ts +3 -7
  5. package/commands/account/clean.js +16 -9
  6. package/commands/account/createOverride.d.ts +3 -7
  7. package/commands/account/createOverride.js +23 -6
  8. package/commands/account/info.d.ts +3 -7
  9. package/commands/account/info.js +13 -5
  10. package/commands/account/list.d.ts +3 -7
  11. package/commands/account/list.js +15 -8
  12. package/commands/account/remove.d.ts +3 -7
  13. package/commands/account/remove.js +21 -9
  14. package/commands/account/removeOverride.d.ts +3 -7
  15. package/commands/account/removeOverride.js +23 -6
  16. package/commands/account/rename.d.ts +3 -7
  17. package/commands/account/rename.js +16 -9
  18. package/commands/account/use.d.ts +5 -9
  19. package/commands/account/use.js +14 -6
  20. package/commands/account.d.ts +3 -4
  21. package/commands/account.js +33 -58
  22. package/commands/app/migrate.d.ts +1 -2
  23. package/commands/app/migrate.js +7 -8
  24. package/commands/app/secret/add.d.ts +7 -0
  25. package/commands/app/secret/add.js +64 -0
  26. package/commands/app/secret/delete.d.ts +8 -0
  27. package/commands/app/secret/delete.js +87 -0
  28. package/commands/app/secret/list.d.ts +6 -0
  29. package/commands/app/secret/list.js +64 -0
  30. package/commands/app/secret/update.d.ts +7 -0
  31. package/commands/app/secret/update.js +77 -0
  32. package/commands/app/secret.d.ts +3 -0
  33. package/commands/app/secret.js +30 -0
  34. package/commands/app.d.ts +2 -5
  35. package/commands/app.js +10 -8
  36. package/commands/auth.d.ts +5 -7
  37. package/commands/auth.js +29 -28
  38. package/commands/cms/convertFields.d.ts +7 -1
  39. package/commands/cms/convertFields.js +57 -41
  40. package/commands/cms/getReactModule.d.ts +7 -1
  41. package/commands/cms/getReactModule.js +52 -34
  42. package/commands/cms/lighthouseScore.d.ts +8 -1
  43. package/commands/cms/lighthouseScore.js +129 -100
  44. package/commands/cms.d.ts +3 -1
  45. package/commands/cms.js +22 -15
  46. package/commands/completion.d.ts +3 -1
  47. package/commands/completion.js +23 -12
  48. package/commands/config/migrate.d.ts +3 -7
  49. package/commands/config/migrate.js +37 -46
  50. package/commands/config/set.d.ts +5 -6
  51. package/commands/config/set.js +38 -14
  52. package/commands/config.d.ts +3 -4
  53. package/commands/config.js +18 -44
  54. package/commands/create/api-sample.d.ts +3 -1
  55. package/commands/create/api-sample.js +34 -38
  56. package/commands/create/app.d.ts +3 -1
  57. package/commands/create/app.js +9 -7
  58. package/commands/create/function.d.ts +3 -1
  59. package/commands/create/function.js +11 -10
  60. package/commands/create/index.d.ts +5 -1
  61. package/commands/create/index.js +23 -11
  62. package/commands/create/module.d.ts +3 -1
  63. package/commands/create/module.js +14 -13
  64. package/commands/create/react-app.d.ts +3 -1
  65. package/commands/create/react-app.js +10 -7
  66. package/commands/create/template.d.ts +3 -1
  67. package/commands/create/template.js +14 -14
  68. package/commands/create/vue-app.d.ts +3 -1
  69. package/commands/create/vue-app.js +10 -7
  70. package/commands/create/webpack-serverless.d.ts +3 -1
  71. package/commands/create/webpack-serverless.js +10 -7
  72. package/commands/create/website-theme.d.ts +3 -1
  73. package/commands/create/website-theme.js +10 -9
  74. package/commands/create.d.ts +4 -24
  75. package/commands/create.js +62 -74
  76. package/commands/customObject/create.d.ts +4 -9
  77. package/commands/customObject/create.js +17 -10
  78. package/commands/customObject/schema/create.d.ts +4 -9
  79. package/commands/customObject/schema/create.js +18 -11
  80. package/commands/customObject/schema/delete.d.ts +4 -9
  81. package/commands/customObject/schema/delete.js +17 -10
  82. package/commands/customObject/schema/fetch-all.d.ts +4 -9
  83. package/commands/customObject/schema/fetch-all.js +17 -10
  84. package/commands/customObject/schema/fetch.d.ts +4 -9
  85. package/commands/customObject/schema/fetch.js +17 -10
  86. package/commands/customObject/schema/list.d.ts +4 -8
  87. package/commands/customObject/schema/list.js +17 -10
  88. package/commands/customObject/schema/update.d.ts +4 -9
  89. package/commands/customObject/schema/update.js +18 -11
  90. package/commands/customObject/schema.d.ts +3 -5
  91. package/commands/customObject/schema.js +27 -54
  92. package/commands/customObject.d.ts +3 -4
  93. package/commands/customObject.js +18 -45
  94. package/commands/doctor.d.ts +6 -8
  95. package/commands/doctor.js +30 -21
  96. package/commands/feedback.d.ts +4 -1
  97. package/commands/feedback.js +38 -47
  98. package/commands/fetch.d.ts +12 -1
  99. package/commands/fetch.js +49 -33
  100. package/commands/filemanager/fetch.d.ts +4 -9
  101. package/commands/filemanager/fetch.js +18 -11
  102. package/commands/filemanager/upload.d.ts +4 -9
  103. package/commands/filemanager/upload.js +17 -11
  104. package/commands/filemanager.d.ts +3 -4
  105. package/commands/filemanager.js +18 -41
  106. package/commands/function/deploy.d.ts +6 -1
  107. package/commands/function/deploy.js +70 -50
  108. package/commands/function/list.d.ts +6 -1
  109. package/commands/function/list.js +44 -32
  110. package/commands/function/server.d.ts +10 -1
  111. package/commands/function/server.js +49 -38
  112. package/commands/function.d.ts +5 -1
  113. package/commands/function.js +22 -10
  114. package/commands/getStarted.d.ts +9 -0
  115. package/commands/getStarted.js +227 -0
  116. package/commands/hubdb/clear.d.ts +4 -9
  117. package/commands/hubdb/clear.js +17 -10
  118. package/commands/hubdb/create.d.ts +4 -9
  119. package/commands/hubdb/create.js +17 -10
  120. package/commands/hubdb/delete.d.ts +4 -9
  121. package/commands/hubdb/delete.js +17 -10
  122. package/commands/hubdb/fetch.d.ts +4 -9
  123. package/commands/hubdb/fetch.js +17 -10
  124. package/commands/hubdb/list.d.ts +4 -0
  125. package/commands/hubdb/list.js +83 -0
  126. package/commands/hubdb.d.ts +3 -2
  127. package/commands/hubdb.js +23 -45
  128. package/commands/init.d.ts +3 -7
  129. package/commands/init.js +17 -8
  130. package/commands/lint.d.ts +6 -4
  131. package/commands/lint.js +42 -43
  132. package/commands/list.d.ts +3 -7
  133. package/commands/list.js +17 -11
  134. package/commands/logs.d.ts +10 -1
  135. package/commands/logs.js +53 -44
  136. package/commands/mcp/setup.d.ts +7 -0
  137. package/commands/mcp/setup.js +52 -0
  138. package/commands/mcp/start.d.ts +3 -0
  139. package/commands/mcp/start.js +77 -0
  140. package/commands/mcp.d.ts +3 -0
  141. package/commands/mcp.js +26 -0
  142. package/commands/module/marketplace-validate.d.ts +6 -1
  143. package/commands/module/marketplace-validate.js +39 -29
  144. package/commands/module.d.ts +3 -1
  145. package/commands/module.js +23 -10
  146. package/commands/mv.d.ts +3 -7
  147. package/commands/mv.js +17 -11
  148. package/commands/open.d.ts +3 -7
  149. package/commands/open.js +17 -11
  150. package/commands/project/add.d.ts +5 -2
  151. package/commands/project/add.js +43 -80
  152. package/commands/project/cloneApp.d.ts +1 -1
  153. package/commands/project/cloneApp.js +2 -2
  154. package/commands/project/create.d.ts +2 -8
  155. package/commands/project/create.js +84 -55
  156. package/commands/project/deploy.d.ts +2 -0
  157. package/commands/project/deploy.js +67 -13
  158. package/commands/project/dev/deprecatedFlow.d.ts +8 -2
  159. package/commands/project/dev/deprecatedFlow.js +9 -1
  160. package/commands/project/dev/index.d.ts +1 -4
  161. package/commands/project/dev/index.js +88 -31
  162. package/commands/project/dev/unifiedFlow.d.ts +11 -2
  163. package/commands/project/dev/unifiedFlow.js +81 -41
  164. package/commands/project/listBuilds.js +2 -5
  165. package/commands/project/migrate.d.ts +1 -0
  166. package/commands/project/profile/add.d.ts +7 -0
  167. package/commands/project/profile/add.js +209 -0
  168. package/commands/project/profile/delete.d.ts +6 -0
  169. package/commands/project/profile/delete.js +123 -0
  170. package/commands/project/profile.d.ts +3 -0
  171. package/commands/project/profile.js +25 -0
  172. package/commands/project/upload.d.ts +1 -0
  173. package/commands/project/upload.js +22 -8
  174. package/commands/project/validate.d.ts +6 -0
  175. package/commands/project/validate.js +82 -0
  176. package/commands/project.js +4 -2
  177. package/commands/remove.d.ts +3 -7
  178. package/commands/remove.js +22 -22
  179. package/commands/sandbox/create.d.ts +4 -9
  180. package/commands/sandbox/create.js +18 -11
  181. package/commands/sandbox/delete.d.ts +4 -9
  182. package/commands/sandbox/delete.js +18 -11
  183. package/commands/sandbox.d.ts +3 -4
  184. package/commands/sandbox.js +18 -43
  185. package/commands/secret/addSecret.d.ts +4 -9
  186. package/commands/secret/addSecret.js +17 -10
  187. package/commands/secret/deleteSecret.d.ts +4 -9
  188. package/commands/secret/deleteSecret.js +17 -10
  189. package/commands/secret/listSecret.d.ts +4 -9
  190. package/commands/secret/listSecret.js +17 -10
  191. package/commands/secret/updateSecret.d.ts +4 -9
  192. package/commands/secret/updateSecret.js +17 -10
  193. package/commands/secret.d.ts +3 -4
  194. package/commands/secret.js +23 -48
  195. package/commands/testAccount/create.d.ts +6 -0
  196. package/commands/testAccount/create.js +100 -0
  197. package/commands/testAccount/createConfig.d.ts +10 -0
  198. package/commands/testAccount/createConfig.js +98 -0
  199. package/commands/testAccount/delete.d.ts +6 -0
  200. package/commands/testAccount/delete.js +48 -0
  201. package/commands/testAccount.d.ts +3 -0
  202. package/commands/testAccount.js +28 -0
  203. package/commands/theme/generate-selectors.d.ts +3 -7
  204. package/commands/theme/generate-selectors.js +20 -15
  205. package/commands/theme/marketplace-validate.d.ts +4 -9
  206. package/commands/theme/marketplace-validate.js +22 -17
  207. package/commands/theme/preview.d.ts +4 -9
  208. package/commands/theme/preview.js +32 -26
  209. package/commands/theme.d.ts +3 -4
  210. package/commands/theme.js +22 -47
  211. package/commands/upload.d.ts +12 -1
  212. package/commands/upload.js +116 -134
  213. package/commands/watch.d.ts +14 -1
  214. package/commands/watch.js +74 -75
  215. package/lang/en.d.ts +1135 -660
  216. package/lang/en.js +935 -471
  217. package/lang/en.lyaml +30 -213
  218. package/lib/accountTypes.js +1 -2
  219. package/lib/app/migrate.d.ts +23 -0
  220. package/lib/app/migrate.js +29 -6
  221. package/lib/app/migrate_legacy.js +7 -7
  222. package/lib/app/urls.d.ts +16 -0
  223. package/lib/app/urls.js +16 -0
  224. package/lib/commonOpts.d.ts +1 -3
  225. package/lib/commonOpts.js +1 -1
  226. package/lib/configMigrate.d.ts +2 -2
  227. package/lib/configMigrate.js +34 -55
  228. package/lib/configOptions.d.ts +4 -0
  229. package/lib/configOptions.js +41 -46
  230. package/lib/constants.d.ts +29 -0
  231. package/lib/constants.js +30 -1
  232. package/lib/dependencyManagement.d.ts +0 -5
  233. package/lib/dependencyManagement.js +13 -39
  234. package/lib/doctor/Doctor.js +3 -2
  235. package/lib/errorHandlers/index.js +7 -0
  236. package/lib/filesystem.d.ts +1 -1
  237. package/lib/generateSelectors.js +3 -5
  238. package/lib/interpolation.d.ts +2 -3
  239. package/lib/lang.d.ts +2 -3
  240. package/lib/marketplaceValidate.d.ts +12 -2
  241. package/lib/marketplaceValidate.js +22 -29
  242. package/lib/mcp/setup.d.ts +21 -0
  243. package/lib/mcp/setup.js +218 -0
  244. package/lib/middleware/autoUpdateMiddleware.d.ts +1 -0
  245. package/lib/middleware/autoUpdateMiddleware.js +89 -0
  246. package/lib/middleware/configMiddleware.js +23 -0
  247. package/lib/middleware/fireAlarmMiddleware.d.ts +2 -2
  248. package/lib/middleware/fireAlarmMiddleware.js +5 -3
  249. package/lib/npm.d.ts +9 -0
  250. package/lib/npm.js +36 -0
  251. package/lib/projectProfiles.d.ts +7 -0
  252. package/lib/projectProfiles.js +83 -0
  253. package/lib/projects/add/legacyAddComponent.d.ts +5 -0
  254. package/lib/projects/add/legacyAddComponent.js +48 -0
  255. package/lib/projects/add/v3AddComponent.d.ts +8 -0
  256. package/lib/projects/add/v3AddComponent.js +85 -0
  257. package/lib/projects/buildAndDeploy.js +18 -3
  258. package/lib/projects/components.d.ts +2 -0
  259. package/lib/projects/components.js +82 -0
  260. package/lib/projects/create/index.d.ts +23 -0
  261. package/lib/projects/create/index.js +33 -0
  262. package/lib/projects/create/legacy.d.ts +6 -0
  263. package/lib/projects/{create.js → create/legacy.js} +20 -11
  264. package/lib/projects/create/v3.d.ts +27 -0
  265. package/lib/projects/create/v3.js +158 -0
  266. package/lib/projects/localDev/AppDevModeInterface.d.ts +30 -0
  267. package/lib/projects/localDev/AppDevModeInterface.js +215 -0
  268. package/lib/projects/localDev/DevServerManagerV2.d.ts +11 -22
  269. package/lib/projects/localDev/DevServerManagerV2.js +19 -15
  270. package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
  271. package/lib/projects/localDev/LocalDevLogger.js +159 -0
  272. package/lib/projects/localDev/LocalDevManager.js +12 -5
  273. package/lib/projects/localDev/LocalDevProcess.d.ts +34 -0
  274. package/lib/projects/localDev/LocalDevProcess.js +201 -0
  275. package/lib/projects/localDev/LocalDevState.d.ts +50 -0
  276. package/lib/projects/localDev/LocalDevState.js +119 -0
  277. package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
  278. package/lib/projects/localDev/LocalDevWatcher.js +53 -0
  279. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +20 -0
  280. package/lib/projects/localDev/LocalDevWebsocketServer.js +131 -0
  281. package/lib/projects/localDev/helpers.d.ts +3 -2
  282. package/lib/projects/localDev/helpers.js +32 -2
  283. package/lib/projects/upload.d.ts +5 -1
  284. package/lib/projects/upload.js +60 -20
  285. package/lib/projects/urls.d.ts +3 -0
  286. package/lib/projects/urls.js +17 -1
  287. package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
  288. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +17 -0
  289. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +96 -0
  290. package/lib/prompts/createProjectPrompt.d.ts +14 -5
  291. package/lib/prompts/createProjectPrompt.js +38 -13
  292. package/lib/prompts/createTemplatePrompt.d.ts +22 -4
  293. package/lib/prompts/installAppPrompt.d.ts +2 -0
  294. package/lib/prompts/installAppPrompt.js +45 -0
  295. package/lib/prompts/personalAccessKeyPrompt.js +35 -24
  296. package/lib/prompts/projectAddPrompt.d.ts +5 -1
  297. package/lib/prompts/projectAddPrompt.js +35 -7
  298. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
  299. package/lib/prompts/projectDevTargetAccountPrompt.js +6 -6
  300. package/lib/prompts/promptUtils.d.ts +4 -1
  301. package/lib/prompts/promptUtils.js +5 -1
  302. package/lib/prompts/selectAppPrompt.d.ts +2 -0
  303. package/lib/prompts/selectAppPrompt.js +40 -0
  304. package/lib/prompts/{selectPublicAppPrompt.d.ts → selectPublicAppForMigrationPrompt.d.ts} +1 -1
  305. package/lib/prompts/{selectPublicAppPrompt.js → selectPublicAppForMigrationPrompt.js} +8 -8
  306. package/lib/prompts/setAsDefaultAccountPrompt.js +10 -0
  307. package/lib/testUtils.d.ts +3 -3
  308. package/lib/testUtils.js +8 -9
  309. package/lib/ui/index.js +4 -1
  310. package/lib/upload.d.ts +1 -1
  311. package/lib/validation.js +4 -5
  312. package/lib/yargsUtils.d.ts +4 -0
  313. package/lib/yargsUtils.js +6 -0
  314. package/mcp-server/server.d.ts +1 -0
  315. package/mcp-server/server.js +18 -0
  316. package/mcp-server/tools/index.d.ts +2 -0
  317. package/mcp-server/tools/index.js +19 -0
  318. package/mcp-server/tools/project/AddFeatureToProject.d.ts +29 -0
  319. package/mcp-server/tools/project/AddFeatureToProject.js +85 -0
  320. package/mcp-server/tools/project/CreateProjectTool.d.ts +35 -0
  321. package/mcp-server/tools/project/CreateProjectTool.js +104 -0
  322. package/mcp-server/tools/project/DeployProject.d.ts +20 -0
  323. package/mcp-server/tools/project/DeployProject.js +50 -0
  324. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +17 -0
  325. package/mcp-server/tools/project/GuidedWalkthroughTool.js +58 -0
  326. package/mcp-server/tools/project/UploadProjectTools.d.ts +17 -0
  327. package/mcp-server/tools/project/UploadProjectTools.js +35 -0
  328. package/mcp-server/tools/project/ValidateProjectTool.d.ts +17 -0
  329. package/mcp-server/tools/project/ValidateProjectTool.js +35 -0
  330. package/mcp-server/tools/project/constants.d.ts +3 -0
  331. package/mcp-server/tools/project/constants.js +13 -0
  332. package/mcp-server/types.d.ts +14 -0
  333. package/mcp-server/types.js +17 -0
  334. package/mcp-server/utils/command.d.ts +3 -0
  335. package/mcp-server/utils/command.js +16 -0
  336. package/mcp-server/utils/content.d.ts +3 -0
  337. package/mcp-server/utils/content.js +21 -0
  338. package/mcp-server/utils/project.d.ts +5 -0
  339. package/mcp-server/utils/project.js +17 -0
  340. package/package.json +24 -16
  341. package/types/Cms.d.ts +30 -0
  342. package/types/Cms.js +2 -0
  343. package/types/LocalDev.d.ts +35 -0
  344. package/types/LocalDev.js +2 -0
  345. package/types/Projects.d.ts +19 -2
  346. package/types/Prompts.d.ts +0 -7
  347. package/types/Yargs.d.ts +10 -1
  348. package/lib/projects/create.d.ts +0 -5
  349. package/lib/projects/localDev/LocalDevManagerV2.d.ts +0 -64
  350. package/lib/projects/localDev/LocalDevManagerV2.js +0 -345
  351. package/lib/prompts/installPublicAppPrompt.d.ts +0 -1
  352. package/lib/prompts/installPublicAppPrompt.js +0 -41
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.unifiedProjectDevFlow = unifiedProjectDevFlow;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const util_1 = __importDefault(require("util"));
9
- const logger_1 = require("@hubspot/local-dev-lib/logger");
9
+ const config_1 = require("@hubspot/local-dev-lib/constants/config");
10
10
  const errors_1 = require("@hubspot/project-parsing-lib/src/lib/errors");
11
11
  const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
12
- const config_1 = require("@hubspot/local-dev-lib/config");
12
+ const config_2 = require("@hubspot/local-dev-lib/config");
13
13
  const environment_1 = require("@hubspot/local-dev-lib/environment");
14
14
  const errorHandlers_1 = require("../../../lib/errorHandlers");
15
15
  const exitCodes_1 = require("../../../lib/enums/exitCodes");
@@ -17,15 +17,16 @@ const ensureProjectExists_1 = require("../../../lib/projects/ensureProjectExists
17
17
  const helpers_1 = require("../../../lib/projects/localDev/helpers");
18
18
  const projectDevTargetAccountPrompt_1 = require("../../../lib/prompts/projectDevTargetAccountPrompt");
19
19
  const SpinniesManager_1 = __importDefault(require("../../../lib/ui/SpinniesManager"));
20
- const LocalDevManagerV2_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevManagerV2"));
20
+ const LocalDevProcess_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevProcess"));
21
+ const LocalDevWatcher_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevWatcher"));
21
22
  const process_1 = require("../../../lib/process");
22
23
  const accountTypes_1 = require("../../../lib/accountTypes");
23
24
  const ui_1 = require("../../../lib/ui");
24
- const lang_1 = require("../../../lib/lang");
25
- async function unifiedProjectDevFlow(args, accountConfig, projectConfig, projectDir) {
26
- logger_1.logger.log('Unified Apps Local Dev');
27
- const targetProjectAccountId = args.derivedAccountId;
28
- const env = (0, environment_1.getValidEnv)((0, config_1.getEnv)(targetProjectAccountId));
25
+ const logger_1 = require("../../../lib/ui/logger");
26
+ const en_1 = require("../../../lang/en");
27
+ const LocalDevWebsocketServer_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevWebsocketServer"));
28
+ async function unifiedProjectDevFlow({ args, targetProjectAccountId, providedTargetTestingAccountId, projectConfig, projectDir, profileConfig, }) {
29
+ const env = (0, environment_1.getValidEnv)((0, config_2.getEnv)(targetProjectAccountId));
29
30
  let projectNodes;
30
31
  // Get IR
31
32
  try {
@@ -33,49 +34,69 @@ async function unifiedProjectDevFlow(args, accountConfig, projectConfig, project
33
34
  projectSourceDir: path_1.default.join(projectDir, projectConfig.srcDir),
34
35
  platformVersion: projectConfig.platformVersion,
35
36
  accountId: targetProjectAccountId,
36
- });
37
+ }, { profile: args.profile });
37
38
  projectNodes = intermediateRepresentation.intermediateNodesIndexedByUid;
38
- logger_1.logger.debug(util_1.default.inspect(projectNodes, false, null, true));
39
+ logger_1.uiLogger.debug(util_1.default.inspect(projectNodes, false, null, true));
39
40
  }
40
41
  catch (e) {
41
42
  if ((0, errors_1.isTranslationError)(e)) {
42
- logger_1.logger.error(e.toString());
43
+ logger_1.uiLogger.error(e.toString());
43
44
  }
44
45
  else {
45
46
  (0, errorHandlers_1.logError)(e);
46
47
  }
47
48
  return process.exit(exitCodes_1.EXIT_CODES.ERROR);
48
49
  }
49
- // @TODO Do we need to do more than this or leave it to the dev servers?
50
50
  if (!Object.keys(projectNodes).length) {
51
- logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.dev.errors.noRunnableComponents`, {
52
- projectDir,
53
- command: (0, ui_1.uiCommandReference)('hs project add'),
54
- }));
51
+ logger_1.uiLogger.error(en_1.commands.project.dev.errors.noRunnableComponents);
55
52
  process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
56
53
  }
57
- // @TODO Validate component types (i.e. previously you could not have both private and public apps)
58
- const accounts = (0, config_1.getConfigAccounts)();
59
- // TODO Ideally this should require the user to target a Combined account
60
- // For now, check if the account is either developer or standard
61
- const derivedAccountIsRecommendedType = (0, accountTypes_1.isAppDeveloperAccount)(accountConfig) || (0, accountTypes_1.isStandardAccount)(accountConfig);
62
- if (!derivedAccountIsRecommendedType) {
63
- logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.dev.errors.invalidUnifiedAppsAccount`), {
64
- authCommand: (0, ui_1.uiCommandReference)('hs auth'),
65
- });
66
- process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
54
+ const targetProjectAccountConfig = (0, config_2.getAccountConfig)(targetProjectAccountId);
55
+ if (!targetProjectAccountConfig) {
56
+ logger_1.uiLogger.error(en_1.commands.project.dev.errors.noAccount(targetProjectAccountId));
57
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
67
58
  }
68
- let targetTestingAccountId = null;
69
- const devAccountPromptResponse = await (0, projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt)(accounts, accountConfig);
70
- targetTestingAccountId = devAccountPromptResponse.targetAccountId;
71
- if (!!devAccountPromptResponse.notInConfigAccount) {
72
- // When the developer test account isn't configured in the CLI config yet
73
- // Walk the user through adding the account's PAK to the config
74
- await (0, helpers_1.useExistingDevTestAccount)(env, devAccountPromptResponse.notInConfigAccount);
59
+ const accounts = (0, config_2.getConfigAccounts)();
60
+ const accountIsCombined = await (0, accountTypes_1.isUnifiedAccount)(targetProjectAccountConfig);
61
+ if (!accountIsCombined && !profileConfig) {
62
+ logger_1.uiLogger.error(en_1.commands.project.dev.errors.accountNotCombined);
63
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
75
64
  }
76
- else if (devAccountPromptResponse.createNestedAccount) {
77
- // Create a new developer test account and automatically add it to the CLI config
78
- targetTestingAccountId = await (0, helpers_1.createDeveloperTestAccountForLocalDev)(targetProjectAccountId, accountConfig, env);
65
+ let targetTestingAccountId = providedTargetTestingAccountId;
66
+ if (profileConfig) {
67
+ // Bypass the prompt for the testing account if the user has a profile configured
68
+ targetTestingAccountId = profileConfig.accountId;
69
+ }
70
+ else if (!targetTestingAccountId) {
71
+ logger_1.uiLogger.log('');
72
+ (0, ui_1.uiLine)();
73
+ logger_1.uiLogger.log(en_1.commands.project.dev.logs.accountTypeInformation);
74
+ logger_1.uiLogger.log(en_1.commands.project.dev.logs.learnMoreMessage);
75
+ (0, ui_1.uiLine)();
76
+ logger_1.uiLogger.log('');
77
+ const accountType = await (0, helpers_1.selectAccountTypePrompt)(targetProjectAccountConfig);
78
+ if (accountType === config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST) {
79
+ const devAccountPromptResponse = await (0, projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt)(accounts, targetProjectAccountConfig);
80
+ targetTestingAccountId =
81
+ devAccountPromptResponse.targetAccountId || undefined;
82
+ if (!!devAccountPromptResponse.notInConfigAccount) {
83
+ // When the developer test account isn't configured in the CLI config yet
84
+ // Walk the user through adding the account's PAK to the config
85
+ await (0, helpers_1.useExistingDevTestAccount)(env, devAccountPromptResponse.notInConfigAccount);
86
+ }
87
+ else if (devAccountPromptResponse.createNestedAccount) {
88
+ // Create a new developer test account and automatically add it to the CLI config
89
+ targetTestingAccountId = await (0, helpers_1.createDeveloperTestAccountForLocalDev)(targetProjectAccountId, targetProjectAccountConfig, env);
90
+ }
91
+ }
92
+ else if (accountType === config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
93
+ const sandboxAccountPromptResponse = await (0, projectDevTargetAccountPrompt_1.selectSandboxTargetAccountPrompt)(accounts, targetProjectAccountConfig);
94
+ targetTestingAccountId =
95
+ sandboxAccountPromptResponse.targetAccountId || undefined;
96
+ }
97
+ else {
98
+ targetTestingAccountId = targetProjectAccountId;
99
+ }
79
100
  }
80
101
  // Check if project exists in HubSpot
81
102
  const { projectExists, project: uploadedProject } = await (0, ensureProjectExists_1.ensureProjectExists)(targetProjectAccountId, projectConfig.name, {
@@ -92,10 +113,11 @@ async function unifiedProjectDevFlow(args, accountConfig, projectConfig, project
92
113
  }
93
114
  else {
94
115
  project = await (0, helpers_1.createNewProjectForLocalDev)(projectConfig, targetProjectAccountId, false, false);
95
- deployedBuild = await (0, helpers_1.createInitialBuildForNewProject)(projectConfig, projectDir, targetProjectAccountId, true);
116
+ deployedBuild = await (0, helpers_1.createInitialBuildForNewProject)(projectConfig, projectDir, targetProjectAccountId, true, args.profile);
96
117
  }
97
- const LocalDev = new LocalDevManagerV2_1.default({
98
- projectNodes,
118
+ // End setup, start local dev process
119
+ const localDevProcess = new LocalDevProcess_1.default({
120
+ initialProjectNodes: projectNodes,
99
121
  debug: args.debug,
100
122
  deployedBuild,
101
123
  isGithubLinked,
@@ -103,9 +125,27 @@ async function unifiedProjectDevFlow(args, accountConfig, projectConfig, project
103
125
  targetTestingAccountId: targetTestingAccountId,
104
126
  projectConfig,
105
127
  projectDir,
128
+ projectName: project.name,
106
129
  projectId: project.id,
107
130
  env,
108
131
  });
109
- await LocalDev.start();
110
- (0, process_1.handleExit)(({ isSIGHUP }) => LocalDev.stop(!isSIGHUP));
132
+ await localDevProcess.start();
133
+ const watcher = new LocalDevWatcher_1.default(localDevProcess);
134
+ watcher.start();
135
+ const websocketServer = new LocalDevWebsocketServer_1.default(localDevProcess, args.debug);
136
+ await websocketServer.start();
137
+ (0, process_1.handleKeypress)(async (key) => {
138
+ if ((key.ctrl && key.name === 'c') || key.name === 'q') {
139
+ await Promise.all([
140
+ localDevProcess.stop(),
141
+ watcher.stop(),
142
+ websocketServer.shutdown(),
143
+ ]);
144
+ }
145
+ });
146
+ (0, process_1.handleExit)(({ isSIGHUP }) => {
147
+ localDevProcess.stop(!isSIGHUP);
148
+ watcher.stop();
149
+ websocketServer.shutdown();
150
+ });
111
151
  }
@@ -17,6 +17,7 @@ const lang_1 = require("../../lib/lang");
17
17
  const index_2 = require("../../lib/errorHandlers/index");
18
18
  const exitCodes_1 = require("../../lib/enums/exitCodes");
19
19
  const yargsUtils_1 = require("../../lib/yargsUtils");
20
+ const en_1 = require("../../lang/en");
20
21
  const command = 'list-builds';
21
22
  const describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`commands.project.subcommands.listBuilds.describe`), false);
22
23
  async function fetchAndDisplayBuilds(accountId, project, options) {
@@ -29,11 +30,7 @@ async function fetchAndDisplayBuilds(accountId, project, options) {
29
30
  }));
30
31
  }
31
32
  else {
32
- logger_1.logger.log((0, lang_1.i18n)(`commands.project.subcommands.listBuilds.logs.showingRecentBuilds`, {
33
- count: results.length,
34
- projectName: project.name,
35
- viewBuildsLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`commands.project.subcommands.listBuilds.logs.viewAllBuildsLink`), (0, urls_1.getProjectDetailUrl)(project.name, accountId)),
36
- }));
33
+ logger_1.logger.log(en_1.commands.project.listBuilds.showingRecentBuilds(results.length, project.name, (0, ui_1.uiLink)(en_1.commands.project.listBuilds.viewAllBuildsLink, (0, urls_1.getProjectDetailUrl)(project.name, accountId))));
37
34
  }
38
35
  if (results.length === 0) {
39
36
  logger_1.logger.log((0, lang_1.i18n)(`commands.project.subcommands.listBuilds.errors.noBuilds`));
@@ -1,6 +1,7 @@
1
1
  import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../../types/Yargs';
2
2
  export type ProjectMigrateArgs = CommonArgs & AccountArgs & EnvironmentArgs & ConfigArgs & {
3
3
  platformVersion: string;
4
+ unstable: boolean;
4
5
  };
5
6
  declare const migrateCommand: YargsCommandModule<unknown, ProjectMigrateArgs>;
6
7
  export default migrateCommand;
@@ -0,0 +1,7 @@
1
+ import { YargsCommandModule, CommonArgs } from '../../../types/Yargs';
2
+ type ProjectProfileAddArgs = CommonArgs & {
3
+ name?: string;
4
+ targetAccount?: number;
5
+ };
6
+ declare const projectProfileAddCommand: YargsCommandModule<unknown, ProjectProfileAddArgs>;
7
+ export default projectProfileAddCommand;
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const config_1 = require("@hubspot/local-dev-lib/config");
9
+ const getAccountIdentifier_1 = require("@hubspot/local-dev-lib/config/getAccountIdentifier");
10
+ const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
11
+ const usageTracking_1 = require("../../../lib/usageTracking");
12
+ const config_2 = require("../../../lib/projects/config");
13
+ const ui_1 = require("../../../lib/ui");
14
+ const logger_1 = require("../../../lib/ui/logger");
15
+ const exitCodes_1 = require("../../../lib/enums/exitCodes");
16
+ const yargsUtils_1 = require("../../../lib/yargsUtils");
17
+ const en_1 = require("../../../lang/en");
18
+ const promptUtils_1 = require("../../../lib/prompts/promptUtils");
19
+ const validation_1 = require("../../../lib/validation");
20
+ const errorHandlers_1 = require("../../../lib/errorHandlers");
21
+ const command = 'add [name]';
22
+ const describe = (0, ui_1.uiBetaTag)(en_1.commands.project.profile.add.describe, false);
23
+ const verboseDescribe = (0, ui_1.uiBetaTag)(en_1.commands.project.profile.add.verboseDescribe, false);
24
+ async function selectProfileToCopyVariablesFrom(existingProfiles) {
25
+ let profileToCopyVariablesFrom;
26
+ if (existingProfiles.length == 1) {
27
+ logger_1.uiLogger.log('');
28
+ logger_1.uiLogger.log(en_1.commands.project.profile.add.logs.copyExistingProfile((0, project_parsing_lib_1.getHsProfileFilename)(existingProfiles[0])));
29
+ const shouldCopyVariables = await (0, promptUtils_1.confirmPrompt)('Copy profile variables?', {
30
+ defaultAnswer: true,
31
+ });
32
+ if (shouldCopyVariables) {
33
+ profileToCopyVariablesFrom = existingProfiles[0];
34
+ }
35
+ }
36
+ else if (existingProfiles.length > 1) {
37
+ logger_1.uiLogger.log('');
38
+ logger_1.uiLogger.log(en_1.commands.project.profile.add.logs.copyExistingProfiles);
39
+ const emptyChoice = {
40
+ name: en_1.commands.project.profile.add.prompts.copyExistingProfilePromptEmpty,
41
+ value: undefined,
42
+ };
43
+ const promptResponse = await (0, promptUtils_1.listPrompt)(en_1.commands.project.profile.add.prompts.copyExistingProfilePrompt, {
44
+ choices: [
45
+ ...existingProfiles.map(profile => ({
46
+ name: (0, project_parsing_lib_1.getHsProfileFilename)(profile),
47
+ value: profile,
48
+ })),
49
+ emptyChoice,
50
+ ],
51
+ });
52
+ if (promptResponse) {
53
+ profileToCopyVariablesFrom = promptResponse;
54
+ }
55
+ }
56
+ return profileToCopyVariablesFrom;
57
+ }
58
+ async function handler(args) {
59
+ const { derivedAccountId } = args;
60
+ (0, usageTracking_1.trackCommandUsage)('project-profile-add', undefined, derivedAccountId);
61
+ const { projectConfig, projectDir } = await (0, config_2.getProjectConfig)();
62
+ if (!projectConfig || !projectDir) {
63
+ logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.noProjectConfig);
64
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
65
+ }
66
+ const projectSourceDir = path_1.default.join(projectDir, projectConfig.srcDir);
67
+ let profileName = args.name;
68
+ let targetAccountId = args.targetAccount;
69
+ function checkIfProfileExists(profileName) {
70
+ return (0, validation_1.fileExists)(path_1.default.join(projectSourceDir, (0, project_parsing_lib_1.getHsProfileFilename)(profileName)));
71
+ }
72
+ function isValidProfileName(profileName) {
73
+ const trimmedProfileName = profileName.trim();
74
+ if (trimmedProfileName === '') {
75
+ return en_1.commands.project.profile.add.prompts.emptyName;
76
+ }
77
+ if (!/^[a-zA-Z0-9]+$/.test(trimmedProfileName)) {
78
+ return en_1.commands.project.profile.add.prompts.invalidProfileName;
79
+ }
80
+ if (checkIfProfileExists(trimmedProfileName)) {
81
+ return en_1.commands.project.profile.add.errors.profileExists(trimmedProfileName);
82
+ }
83
+ return true;
84
+ }
85
+ if (profileName) {
86
+ if (checkIfProfileExists(profileName)) {
87
+ logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.profileExists((0, project_parsing_lib_1.getHsProfileFilename)(profileName)));
88
+ logger_1.uiLogger.log('');
89
+ profileName = undefined;
90
+ }
91
+ else {
92
+ const validationResult = isValidProfileName(profileName);
93
+ if (validationResult !== true) {
94
+ logger_1.uiLogger.error(validationResult);
95
+ logger_1.uiLogger.log('');
96
+ profileName = undefined;
97
+ }
98
+ }
99
+ }
100
+ if (!profileName) {
101
+ const promptResponse = await (0, promptUtils_1.promptUser)({
102
+ type: 'input',
103
+ name: 'name',
104
+ message: en_1.commands.project.profile.add.prompts.namePrompt,
105
+ validate: isValidProfileName,
106
+ });
107
+ profileName = promptResponse.name;
108
+ }
109
+ if (targetAccountId) {
110
+ const accountId = (0, config_1.getAccountId)(targetAccountId);
111
+ if (accountId) {
112
+ targetAccountId = accountId;
113
+ }
114
+ else {
115
+ logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.invalidTargetAccount);
116
+ logger_1.uiLogger.log('');
117
+ targetAccountId = undefined;
118
+ }
119
+ }
120
+ if (!targetAccountId) {
121
+ const configuredAccounts = (0, config_1.getConfigAccounts)();
122
+ if (!configuredAccounts || !configuredAccounts.length) {
123
+ logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.noAccountsConfigured);
124
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
125
+ }
126
+ const promptResponse = await (0, promptUtils_1.listPrompt)(en_1.commands.project.profile.add.prompts.targetAccountPrompt, {
127
+ choices: configuredAccounts.map(account => {
128
+ const accountId = (0, getAccountIdentifier_1.getAccountIdentifier)(account);
129
+ return {
130
+ name: (0, ui_1.uiAccountDescription)(accountId),
131
+ value: accountId,
132
+ };
133
+ }),
134
+ });
135
+ if (promptResponse) {
136
+ targetAccountId = promptResponse;
137
+ }
138
+ }
139
+ const existingProfiles = await (0, project_parsing_lib_1.getAllHsProfiles)(projectSourceDir);
140
+ let existingTargetAccountIdSelected = false;
141
+ for (const profile of existingProfiles) {
142
+ try {
143
+ const loadedProfile = (0, project_parsing_lib_1.loadHsProfileFile)(projectSourceDir, profile);
144
+ if (loadedProfile?.accountId === targetAccountId) {
145
+ existingTargetAccountIdSelected = true;
146
+ break;
147
+ }
148
+ }
149
+ catch (err) {
150
+ // Skip profiles that can't be loaded
151
+ (0, errorHandlers_1.debugError)(err);
152
+ }
153
+ }
154
+ if (existingTargetAccountIdSelected) {
155
+ logger_1.uiLogger.log('');
156
+ logger_1.uiLogger.warn(en_1.commands.project.profile.add.warnings.duplicateTargetAccount(targetAccountId));
157
+ }
158
+ const profileFileContent = {
159
+ accountId: targetAccountId,
160
+ variables: {},
161
+ };
162
+ const profileToCopyVariablesFrom = await selectProfileToCopyVariablesFrom(existingProfiles);
163
+ if (profileToCopyVariablesFrom) {
164
+ try {
165
+ const profileToCopyFileContent = (0, project_parsing_lib_1.loadHsProfileFile)(projectSourceDir, profileToCopyVariablesFrom);
166
+ if (profileToCopyFileContent?.variables) {
167
+ profileFileContent.variables = profileToCopyFileContent.variables;
168
+ }
169
+ }
170
+ catch (err) {
171
+ logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.failedToLoadProfile(profileToCopyVariablesFrom));
172
+ }
173
+ }
174
+ const profileFilename = (0, project_parsing_lib_1.getHsProfileFilename)(profileName);
175
+ try {
176
+ fs_1.default.writeFileSync(path_1.default.join(projectSourceDir, profileFilename), JSON.stringify(profileFileContent, null, 2), 'utf8');
177
+ }
178
+ catch (err) {
179
+ logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.failedToCreateProfile);
180
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
181
+ }
182
+ logger_1.uiLogger.log('');
183
+ logger_1.uiLogger.log(en_1.commands.project.profile.add.logs.profileAdded(profileFilename));
184
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
185
+ }
186
+ function projectProfileAddBuilder(yargs) {
187
+ yargs.positional('name', {
188
+ describe: en_1.commands.project.profile.add.positionals.name,
189
+ type: 'string',
190
+ });
191
+ yargs.option('target-account', {
192
+ describe: en_1.commands.project.profile.add.options.targetAccount,
193
+ type: 'number',
194
+ });
195
+ yargs.example([
196
+ ['$0 project profile add qa', en_1.commands.project.profile.add.example],
197
+ ]);
198
+ return yargs;
199
+ }
200
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(projectProfileAddBuilder, command, verboseDescribe, {
201
+ useGlobalOptions: true,
202
+ });
203
+ const projectProfileAddCommand = {
204
+ command,
205
+ describe,
206
+ handler,
207
+ builder,
208
+ };
209
+ exports.default = projectProfileAddCommand;
@@ -0,0 +1,6 @@
1
+ import { YargsCommandModule, CommonArgs } from '../../../types/Yargs';
2
+ type ProjectProfileDeleteArgs = CommonArgs & {
3
+ name?: string;
4
+ };
5
+ declare const projectProfileDeleteCommand: YargsCommandModule<unknown, ProjectProfileDeleteArgs>;
6
+ export default projectProfileDeleteCommand;
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
9
+ const projects_1 = require("@hubspot/local-dev-lib/api/projects");
10
+ const projects_2 = require("@hubspot/local-dev-lib/api/projects");
11
+ const usageTracking_1 = require("../../../lib/usageTracking");
12
+ const config_1 = require("../../../lib/projects/config");
13
+ const ui_1 = require("../../../lib/ui");
14
+ const logger_1 = require("../../../lib/ui/logger");
15
+ const exitCodes_1 = require("../../../lib/enums/exitCodes");
16
+ const yargsUtils_1 = require("../../../lib/yargsUtils");
17
+ const en_1 = require("../../../lang/en");
18
+ const promptUtils_1 = require("../../../lib/prompts/promptUtils");
19
+ const validation_1 = require("../../../lib/validation");
20
+ const errorHandlers_1 = require("../../../lib/errorHandlers");
21
+ const command = 'delete [name]';
22
+ const describe = (0, ui_1.uiBetaTag)(en_1.commands.project.profile.delete.describe, false);
23
+ async function handler(args) {
24
+ const { derivedAccountId } = args;
25
+ (0, usageTracking_1.trackCommandUsage)('project-profile-delete', undefined, derivedAccountId);
26
+ const { projectConfig, projectDir } = await (0, config_1.getProjectConfig)();
27
+ if (!projectConfig || !projectDir) {
28
+ logger_1.uiLogger.error(en_1.commands.project.profile.delete.errors.noProjectConfig);
29
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
30
+ }
31
+ const projectSourceDir = path_1.default.join(projectDir, projectConfig.srcDir);
32
+ let profileName = undefined;
33
+ if (args.name) {
34
+ profileName = args.name;
35
+ const profileFilename = (0, project_parsing_lib_1.getHsProfileFilename)(profileName);
36
+ if (!(0, validation_1.fileExists)(path_1.default.join(projectSourceDir, profileFilename))) {
37
+ logger_1.uiLogger.error(en_1.commands.project.profile.delete.errors.noProfileFound(profileFilename));
38
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
39
+ }
40
+ }
41
+ else {
42
+ const existingProfiles = await (0, project_parsing_lib_1.getAllHsProfiles)(projectSourceDir);
43
+ if (existingProfiles.length === 0) {
44
+ logger_1.uiLogger.error(en_1.commands.project.profile.delete.errors.noProfilesFound);
45
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
46
+ }
47
+ const promptResponse = await (0, promptUtils_1.listPrompt)(en_1.commands.project.profile.delete.prompts.deleteProfilePrompt, {
48
+ choices: existingProfiles.map(profile => ({
49
+ name: (0, project_parsing_lib_1.getHsProfileFilename)(profile),
50
+ value: profile,
51
+ })),
52
+ });
53
+ if (promptResponse) {
54
+ profileName = promptResponse;
55
+ }
56
+ logger_1.uiLogger.log('');
57
+ }
58
+ // This should never happen
59
+ if (!profileName) {
60
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
61
+ }
62
+ let targetAccountId;
63
+ try {
64
+ const profileToDelete = (0, project_parsing_lib_1.loadHsProfileFile)(projectSourceDir, profileName);
65
+ targetAccountId = profileToDelete?.accountId;
66
+ }
67
+ catch (err) {
68
+ logger_1.uiLogger.debug(en_1.commands.project.profile.delete.debug.failedToLoadProfile(profileName));
69
+ }
70
+ if (targetAccountId) {
71
+ let projectExists = false;
72
+ try {
73
+ const fetchProjectResponse = await (0, projects_1.fetchProject)(targetAccountId, projectConfig.name);
74
+ projectExists = !!fetchProjectResponse.data;
75
+ }
76
+ catch (err) {
77
+ (0, errorHandlers_1.debugError)(err);
78
+ }
79
+ if (projectExists) {
80
+ const confirmResponse = await (0, promptUtils_1.confirmPrompt)(en_1.commands.project.profile.delete.prompts.deleteProjectPrompt(targetAccountId), {
81
+ defaultAnswer: false,
82
+ });
83
+ if (confirmResponse) {
84
+ await (0, projects_2.deleteProject)(targetAccountId, projectConfig.name);
85
+ logger_1.uiLogger.log(en_1.commands.project.profile.delete.logs.deletedProject(targetAccountId));
86
+ }
87
+ else {
88
+ logger_1.uiLogger.log(en_1.commands.project.profile.delete.logs.didNotDeleteProject(targetAccountId));
89
+ }
90
+ logger_1.uiLogger.log('');
91
+ }
92
+ }
93
+ const profileFilename = (0, project_parsing_lib_1.getHsProfileFilename)(profileName);
94
+ try {
95
+ fs_1.default.unlinkSync(path_1.default.join(projectSourceDir, profileFilename));
96
+ }
97
+ catch (err) {
98
+ logger_1.uiLogger.error(en_1.commands.project.profile.delete.errors.failedToDeleteProfile(profileFilename));
99
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
100
+ }
101
+ logger_1.uiLogger.log(en_1.commands.project.profile.delete.logs.profileDeleted(profileFilename));
102
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
103
+ }
104
+ function projectProfileDeleteBuilder(yargs) {
105
+ yargs.positional('name', {
106
+ describe: en_1.commands.project.profile.delete.positionals.name,
107
+ type: 'string',
108
+ });
109
+ yargs.example([
110
+ ['$0 project profile delete qa', en_1.commands.project.profile.delete.example],
111
+ ]);
112
+ return yargs;
113
+ }
114
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(projectProfileDeleteBuilder, command, describe, {
115
+ useGlobalOptions: true,
116
+ });
117
+ const projectProfileDeleteCommand = {
118
+ command,
119
+ describe,
120
+ handler,
121
+ builder,
122
+ };
123
+ exports.default = projectProfileDeleteCommand;
@@ -0,0 +1,3 @@
1
+ import { YargsCommandModuleBucket } from '../../types/Yargs';
2
+ declare const projectProfileCommand: YargsCommandModuleBucket;
3
+ export default projectProfileCommand;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ui_1 = require("../../lib/ui");
7
+ const add_1 = __importDefault(require("./profile/add"));
8
+ const delete_1 = __importDefault(require("./profile/delete"));
9
+ const yargsUtils_1 = require("../../lib/yargsUtils");
10
+ const en_1 = require("../../lang/en");
11
+ const command = ['profile', 'profiles'];
12
+ const describe = undefined; // uiBetaTag(commands.project.profile.describe, false);
13
+ const verboseDescribe = (0, ui_1.uiBetaTag)(en_1.commands.project.profile.verboseDescribe, false);
14
+ function projectProfileBuilder(yargs) {
15
+ yargs.command(add_1.default).command(delete_1.default).demandCommand(1, '');
16
+ return yargs;
17
+ }
18
+ const builder = (0, yargsUtils_1.makeYargsBuilder)(projectProfileBuilder, command, verboseDescribe);
19
+ const projectProfileCommand = {
20
+ command,
21
+ describe,
22
+ builder,
23
+ handler: () => { },
24
+ };
25
+ exports.default = projectProfileCommand;
@@ -4,6 +4,7 @@ type ProjectUploadArgs = CommonArgs & {
4
4
  message: string;
5
5
  m: string;
6
6
  skipValidation: boolean;
7
+ profile?: string;
7
8
  };
8
9
  declare const projectUploadCommand: YargsCommandModule<unknown, ProjectUploadArgs>;
9
10
  export default projectUploadCommand;