@hubspot/cli 8.0.11-experimental.0 → 8.0.11-experimental.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 (534) hide show
  1. package/bin/cli.js +2 -0
  2. package/commands/account/auth.js +12 -22
  3. package/commands/account/clean.js +5 -6
  4. package/commands/account/createOverride.js +7 -7
  5. package/commands/account/info.js +2 -1
  6. package/commands/account/list.js +3 -5
  7. package/commands/account/remove.js +2 -3
  8. package/commands/account/removeOverride.js +8 -10
  9. package/commands/account/rename.js +5 -6
  10. package/commands/account/use.js +8 -19
  11. package/commands/api.d.ts +10 -0
  12. package/commands/api.js +164 -0
  13. package/commands/app/migrate.js +8 -8
  14. package/commands/app/secret/add.js +6 -7
  15. package/commands/app/secret/delete.js +9 -10
  16. package/commands/app/secret/list.js +6 -7
  17. package/commands/app/secret/update.js +8 -9
  18. package/commands/auth.js +12 -12
  19. package/commands/cms/app/create.js +9 -5
  20. package/commands/cms/convertFields.js +8 -8
  21. package/commands/cms/delete.js +2 -3
  22. package/commands/cms/fetch.js +7 -7
  23. package/commands/cms/function/create.js +9 -5
  24. package/commands/cms/function/deploy.js +2 -3
  25. package/commands/cms/function/list.js +11 -7
  26. package/commands/cms/function/logs.js +17 -23
  27. package/commands/cms/function/server.js +2 -3
  28. package/commands/cms/getReactModule.js +7 -8
  29. package/commands/cms/lighthouseScore.js +25 -24
  30. package/commands/cms/lint.js +4 -5
  31. package/commands/cms/list.js +5 -6
  32. package/commands/cms/module/create.js +9 -5
  33. package/commands/cms/module/marketplace-validate.js +7 -8
  34. package/commands/cms/mv.js +2 -3
  35. package/commands/cms/template/create.js +10 -6
  36. package/commands/cms/theme/create.js +5 -5
  37. package/commands/cms/theme/generate-selectors.js +5 -4
  38. package/commands/cms/theme/marketplace-validate.js +8 -9
  39. package/commands/cms/theme/preview.js +16 -8
  40. package/commands/cms/upload.js +15 -12
  41. package/commands/cms/watch.js +5 -5
  42. package/commands/cms/webpack/create.js +5 -5
  43. package/commands/completion.js +3 -5
  44. package/commands/config/migrate.js +6 -7
  45. package/commands/config/set.js +5 -6
  46. package/commands/customObject/create.js +4 -5
  47. package/commands/customObject/createSchema.js +4 -5
  48. package/commands/customObject/deleteSchema.js +4 -5
  49. package/commands/customObject/fetchAllSchemas.js +2 -3
  50. package/commands/customObject/fetchSchema.js +2 -3
  51. package/commands/customObject/listSchemas.js +2 -3
  52. package/commands/customObject/updateSchema.js +4 -5
  53. package/commands/doctor.js +8 -8
  54. package/commands/feedback.js +6 -4
  55. package/commands/filemanager/fetch.js +5 -6
  56. package/commands/filemanager/upload.js +5 -5
  57. package/commands/getStarted.js +14 -16
  58. package/commands/hubdb/clear.js +5 -6
  59. package/commands/hubdb/create.js +4 -5
  60. package/commands/hubdb/delete.js +8 -9
  61. package/commands/hubdb/fetch.js +5 -6
  62. package/commands/hubdb/list.js +16 -14
  63. package/commands/init.js +14 -17
  64. package/commands/mcp/setup.js +5 -6
  65. package/commands/mcp/start.js +2 -3
  66. package/commands/open.js +4 -5
  67. package/commands/project/add.js +10 -5
  68. package/commands/project/create.js +10 -10
  69. package/commands/project/delete.d.ts +7 -0
  70. package/commands/project/delete.js +74 -0
  71. package/commands/project/deploy.js +36 -34
  72. package/commands/project/dev/deprecatedFlow.js +42 -15
  73. package/commands/project/dev/index.d.ts +3 -3
  74. package/commands/project/dev/index.js +24 -30
  75. package/commands/project/dev/unifiedFlow.js +37 -14
  76. package/commands/project/download.js +10 -11
  77. package/commands/project/info.js +17 -17
  78. package/commands/project/installDeps.js +9 -6
  79. package/commands/project/lint.js +11 -8
  80. package/commands/project/list.js +14 -14
  81. package/commands/project/listBuilds.js +8 -6
  82. package/commands/project/logs.js +5 -6
  83. package/commands/project/migrate.js +8 -8
  84. package/commands/project/open.js +5 -6
  85. package/commands/project/profile/add.js +12 -8
  86. package/commands/project/profile/delete.js +15 -11
  87. package/commands/project/updateDeps.js +9 -6
  88. package/commands/project/upload.js +31 -17
  89. package/commands/project/validate.js +11 -11
  90. package/commands/project/watch.js +20 -20
  91. package/commands/project.js +2 -0
  92. package/commands/sandbox/create.js +15 -15
  93. package/commands/sandbox/delete.js +13 -14
  94. package/commands/secret/addSecret.js +6 -7
  95. package/commands/secret/deleteSecret.js +5 -6
  96. package/commands/secret/listSecret.js +2 -3
  97. package/commands/secret/updateSecret.js +4 -5
  98. package/commands/testAccount/create.d.ts +1 -1
  99. package/commands/testAccount/create.js +20 -16
  100. package/commands/testAccount/createConfig.js +7 -8
  101. package/commands/testAccount/delete.js +27 -18
  102. package/commands/testAccount/importData.js +6 -7
  103. package/commands/upgrade.js +9 -10
  104. package/lang/en.d.ts +94 -7
  105. package/lang/en.js +94 -10
  106. package/lib/accountAuth.js +2 -2
  107. package/lib/buildAccount.js +3 -3
  108. package/lib/constants.d.ts +0 -1
  109. package/lib/constants.js +0 -1
  110. package/lib/doctor/Diagnosis.js +5 -5
  111. package/lib/errorHandlers/index.js +4 -3
  112. package/lib/errorHandlers/suppressError.js +4 -0
  113. package/lib/errors/PromptExitError.d.ts +4 -2
  114. package/lib/errors/PromptExitError.js +3 -0
  115. package/lib/hasFeature.js +1 -2
  116. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  117. package/lib/process.d.ts +1 -1
  118. package/lib/process.js +10 -3
  119. package/lib/projects/create/v2.js +1 -2
  120. package/lib/projects/delete.d.ts +13 -0
  121. package/lib/projects/delete.js +193 -0
  122. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  123. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  124. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  125. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  126. package/lib/projects/localDev/DevSessionManager.js +31 -19
  127. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  128. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  129. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  130. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  131. package/lib/projects/localDev/LocalDevState.js +3 -1
  132. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/account.js +16 -19
  134. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  135. package/lib/projects/localDev/helpers/process.js +4 -10
  136. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  137. package/lib/projects/localDev/helpers/project.js +31 -15
  138. package/lib/projects/projectInfo.d.ts +3 -20
  139. package/lib/projects/projectInfo.js +32 -54
  140. package/lib/projects/projectProfiles.d.ts +1 -2
  141. package/lib/projects/projectProfiles.js +5 -17
  142. package/lib/projects/upload.js +19 -0
  143. package/lib/projects/workspaces.d.ts +42 -0
  144. package/lib/projects/workspaces.js +350 -0
  145. package/lib/prompts/createApiSamplePrompt.js +4 -0
  146. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  147. package/lib/prompts/projectProfilePrompt.js +46 -0
  148. package/lib/prompts/promptUtils.js +3 -2
  149. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  150. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  151. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  152. package/lib/theme/cmsDevServerProcess.js +7 -6
  153. package/lib/ui/SpinniesManager.d.ts +1 -0
  154. package/lib/ui/SpinniesManager.js +20 -6
  155. package/lib/ui/spinniesUtils.d.ts +0 -1
  156. package/lib/ui/spinniesUtils.js +6 -16
  157. package/lib/usageTracking.d.ts +3 -4
  158. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  159. package/lib/yargs/makeYargsBuilder.js +33 -0
  160. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  161. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  162. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  163. package/lib/yargs/strictEnforceBoolean.js +13 -0
  164. package/lib/yargsUtils.d.ts +3 -16
  165. package/lib/yargsUtils.js +3 -48
  166. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +1 -1
  167. package/package.json +10 -5
  168. package/types/LocalDev.d.ts +5 -0
  169. package/types/Projects.d.ts +19 -0
  170. package/types/Yargs.d.ts +18 -1
  171. package/api/__tests__/migrate.test.d.ts +0 -1
  172. package/api/__tests__/migrate.test.js +0 -199
  173. package/commands/__tests__/account.test.d.ts +0 -1
  174. package/commands/__tests__/account.test.js +0 -69
  175. package/commands/__tests__/auth.test.d.ts +0 -1
  176. package/commands/__tests__/auth.test.js +0 -43
  177. package/commands/__tests__/cms.test.d.ts +0 -1
  178. package/commands/__tests__/cms.test.js +0 -87
  179. package/commands/__tests__/config.test.d.ts +0 -1
  180. package/commands/__tests__/config.test.js +0 -44
  181. package/commands/__tests__/customObject.test.d.ts +0 -1
  182. package/commands/__tests__/customObject.test.js +0 -68
  183. package/commands/__tests__/doctor.test.d.ts +0 -1
  184. package/commands/__tests__/doctor.test.js +0 -132
  185. package/commands/__tests__/feedback.test.d.ts +0 -1
  186. package/commands/__tests__/feedback.test.js +0 -24
  187. package/commands/__tests__/filemanager.test.d.ts +0 -1
  188. package/commands/__tests__/filemanager.test.js +0 -45
  189. package/commands/__tests__/getStarted.test.d.ts +0 -1
  190. package/commands/__tests__/getStarted.test.js +0 -173
  191. package/commands/__tests__/hubdb.test.d.ts +0 -1
  192. package/commands/__tests__/hubdb.test.js +0 -50
  193. package/commands/__tests__/init.test.d.ts +0 -1
  194. package/commands/__tests__/init.test.js +0 -42
  195. package/commands/__tests__/mcp.test.d.ts +0 -1
  196. package/commands/__tests__/mcp.test.js +0 -46
  197. package/commands/__tests__/open.test.d.ts +0 -1
  198. package/commands/__tests__/open.test.js +0 -58
  199. package/commands/__tests__/project.test.d.ts +0 -1
  200. package/commands/__tests__/project.test.js +0 -125
  201. package/commands/__tests__/sandbox.test.d.ts +0 -1
  202. package/commands/__tests__/sandbox.test.js +0 -44
  203. package/commands/__tests__/secret.test.d.ts +0 -1
  204. package/commands/__tests__/secret.test.js +0 -49
  205. package/commands/__tests__/testAccount.test.d.ts +0 -1
  206. package/commands/__tests__/testAccount.test.js +0 -57
  207. package/commands/__tests__/upgrade.test.d.ts +0 -1
  208. package/commands/__tests__/upgrade.test.js +0 -309
  209. package/commands/account/__tests__/auth.test.d.ts +0 -1
  210. package/commands/account/__tests__/auth.test.js +0 -206
  211. package/commands/account/__tests__/clean.test.d.ts +0 -1
  212. package/commands/account/__tests__/clean.test.js +0 -28
  213. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  214. package/commands/account/__tests__/createOverride.test.js +0 -32
  215. package/commands/account/__tests__/info.test.d.ts +0 -1
  216. package/commands/account/__tests__/info.test.js +0 -28
  217. package/commands/account/__tests__/list.test.d.ts +0 -1
  218. package/commands/account/__tests__/list.test.js +0 -153
  219. package/commands/account/__tests__/remove.test.d.ts +0 -1
  220. package/commands/account/__tests__/remove.test.js +0 -36
  221. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  222. package/commands/account/__tests__/removeOverride.js +0 -25
  223. package/commands/account/__tests__/rename.test.d.ts +0 -1
  224. package/commands/account/__tests__/rename.test.js +0 -82
  225. package/commands/account/__tests__/use.test.d.ts +0 -1
  226. package/commands/account/__tests__/use.test.js +0 -170
  227. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  228. package/commands/app/__tests__/migrate.test.js +0 -111
  229. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  230. package/commands/app/secret/__tests__/add.test.js +0 -140
  231. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  232. package/commands/app/secret/__tests__/delete.test.js +0 -28
  233. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  234. package/commands/app/secret/__tests__/list.test.js +0 -25
  235. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  236. package/commands/app/secret/__tests__/update.test.js +0 -28
  237. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  238. package/commands/cms/__tests__/delete.test.js +0 -39
  239. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  240. package/commands/cms/__tests__/fetch.test.js +0 -156
  241. package/commands/cms/__tests__/function.test.d.ts +0 -1
  242. package/commands/cms/__tests__/function.test.js +0 -50
  243. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  244. package/commands/cms/__tests__/lint.test.js +0 -33
  245. package/commands/cms/__tests__/list.test.d.ts +0 -1
  246. package/commands/cms/__tests__/list.test.js +0 -42
  247. package/commands/cms/__tests__/module.test.d.ts +0 -1
  248. package/commands/cms/__tests__/module.test.js +0 -45
  249. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  250. package/commands/cms/__tests__/mv.test.js +0 -46
  251. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  252. package/commands/cms/__tests__/theme.test.js +0 -54
  253. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  254. package/commands/cms/__tests__/upload.test.js +0 -312
  255. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  256. package/commands/cms/__tests__/watch.test.js +0 -204
  257. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  258. package/commands/cms/function/__tests__/logs.test.js +0 -70
  259. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  260. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  261. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  262. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  263. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  264. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  265. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/create.test.js +0 -40
  267. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  269. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  271. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  272. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  273. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  274. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  275. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  276. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  277. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  278. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  279. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  280. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  281. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  282. package/commands/filemanager/__tests__/upload.test.js +0 -191
  283. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/clear.test.js +0 -28
  285. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  286. package/commands/hubdb/__tests__/create.test.js +0 -28
  287. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  288. package/commands/hubdb/__tests__/delete.test.js +0 -28
  289. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  290. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  291. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  292. package/commands/hubdb/__tests__/list.test.js +0 -88
  293. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  294. package/commands/mcp/__tests__/setup.test.js +0 -26
  295. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  296. package/commands/mcp/__tests__/start.test.js +0 -144
  297. package/commands/project/__tests__/add.test.d.ts +0 -1
  298. package/commands/project/__tests__/add.test.js +0 -107
  299. package/commands/project/__tests__/create.test.d.ts +0 -1
  300. package/commands/project/__tests__/create.test.js +0 -97
  301. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  302. package/commands/project/__tests__/deploy.test.js +0 -307
  303. package/commands/project/__tests__/dev.test.d.ts +0 -1
  304. package/commands/project/__tests__/dev.test.js +0 -273
  305. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  306. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  307. package/commands/project/__tests__/download.test.d.ts +0 -1
  308. package/commands/project/__tests__/download.test.js +0 -39
  309. package/commands/project/__tests__/info.test.d.ts +0 -1
  310. package/commands/project/__tests__/info.test.js +0 -145
  311. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  312. package/commands/project/__tests__/installDeps.test.js +0 -140
  313. package/commands/project/__tests__/lint.test.d.ts +0 -1
  314. package/commands/project/__tests__/lint.test.js +0 -704
  315. package/commands/project/__tests__/list.test.d.ts +0 -1
  316. package/commands/project/__tests__/list.test.js +0 -31
  317. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  318. package/commands/project/__tests__/listBuilds.test.js +0 -38
  319. package/commands/project/__tests__/logs.test.d.ts +0 -1
  320. package/commands/project/__tests__/logs.test.js +0 -202
  321. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  322. package/commands/project/__tests__/migrate.test.js +0 -106
  323. package/commands/project/__tests__/open.test.d.ts +0 -1
  324. package/commands/project/__tests__/open.test.js +0 -39
  325. package/commands/project/__tests__/profile.test.d.ts +0 -1
  326. package/commands/project/__tests__/profile.test.js +0 -42
  327. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  328. package/commands/project/__tests__/updateDeps.test.js +0 -140
  329. package/commands/project/__tests__/upload.test.d.ts +0 -1
  330. package/commands/project/__tests__/upload.test.js +0 -234
  331. package/commands/project/__tests__/validate.test.d.ts +0 -1
  332. package/commands/project/__tests__/validate.test.js +0 -381
  333. package/commands/project/__tests__/watch.test.d.ts +0 -1
  334. package/commands/project/__tests__/watch.test.js +0 -35
  335. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  336. package/commands/sandbox/__tests__/create.test.js +0 -198
  337. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  338. package/commands/sandbox/__tests__/delete.test.js +0 -31
  339. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  340. package/commands/secret/__tests__/addSecret.test.js +0 -162
  341. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  342. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  343. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  344. package/commands/secret/__tests__/listSecret.test.js +0 -29
  345. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  346. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  347. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  348. package/commands/testAccount/__tests__/create.test.js +0 -106
  349. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  350. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  351. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  352. package/commands/testAccount/__tests__/delete.test.js +0 -29
  353. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  354. package/commands/testAccount/__tests__/importData.test.js +0 -92
  355. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  356. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  357. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  358. package/lib/__tests__/accountAuth.test.js +0 -258
  359. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  360. package/lib/__tests__/accountTypes.test.js +0 -98
  361. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  362. package/lib/__tests__/buildAccount.test.js +0 -211
  363. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  364. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  365. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  366. package/lib/__tests__/commandSuggestion.test.js +0 -121
  367. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  368. package/lib/__tests__/commonOpts.test.js +0 -80
  369. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  370. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  371. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  372. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  373. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  374. package/lib/__tests__/hasFeature.test.js +0 -167
  375. package/lib/__tests__/http.test.d.ts +0 -1
  376. package/lib/__tests__/http.test.js +0 -40
  377. package/lib/__tests__/importData.test.d.ts +0 -1
  378. package/lib/__tests__/importData.test.js +0 -98
  379. package/lib/__tests__/npmCli.test.d.ts +0 -1
  380. package/lib/__tests__/npmCli.test.js +0 -84
  381. package/lib/__tests__/oauth.test.d.ts +0 -1
  382. package/lib/__tests__/oauth.test.js +0 -109
  383. package/lib/__tests__/parsing.test.d.ts +0 -1
  384. package/lib/__tests__/parsing.test.js +0 -34
  385. package/lib/__tests__/polling.test.d.ts +0 -1
  386. package/lib/__tests__/polling.test.js +0 -76
  387. package/lib/__tests__/process.test.d.ts +0 -1
  388. package/lib/__tests__/process.test.js +0 -89
  389. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  390. package/lib/__tests__/sandboxes.test.js +0 -128
  391. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  392. package/lib/__tests__/serverlessLogs.test.js +0 -163
  393. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  394. package/lib/__tests__/usageTracking.test.js +0 -197
  395. package/lib/__tests__/validation.test.d.ts +0 -1
  396. package/lib/__tests__/validation.test.js +0 -143
  397. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  398. package/lib/__tests__/yargsUtils.test.js +0 -124
  399. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  400. package/lib/app/__tests__/migrate.test.js +0 -638
  401. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  402. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  403. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  404. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  405. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  406. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  407. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  408. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  409. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  410. package/lib/mcp/__tests__/setup.test.js +0 -523
  411. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  413. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  414. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  415. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  416. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  417. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  418. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  419. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  420. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  421. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  422. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  423. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  424. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  425. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  426. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  427. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  428. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  429. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  430. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  431. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  432. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  433. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  434. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  435. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  436. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  437. package/lib/projects/__tests__/components.test.d.ts +0 -1
  438. package/lib/projects/__tests__/components.test.js +0 -440
  439. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  440. package/lib/projects/__tests__/deploy.test.js +0 -231
  441. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  442. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  443. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  444. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  445. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  446. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  447. package/lib/projects/__tests__/projectInfo.test.d.ts +0 -1
  448. package/lib/projects/__tests__/projectInfo.test.js +0 -114
  449. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  450. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  451. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  452. package/lib/projects/__tests__/projects.test.js +0 -58
  453. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  454. package/lib/projects/__tests__/structure.test.js +0 -210
  455. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  456. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  457. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  458. package/lib/projects/__tests__/upload.test.js +0 -183
  459. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  460. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  461. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  462. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  463. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  464. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  465. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  466. package/lib/projects/create/__tests__/v2.test.js +0 -257
  467. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  469. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  471. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  472. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  473. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  474. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  475. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  476. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  477. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  478. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  479. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  480. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  481. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  482. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  483. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  484. package/lib/theme/__tests__/migrate.test.js +0 -247
  485. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  486. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  487. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  488. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  489. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  490. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  491. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  492. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  493. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  494. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  495. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  496. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  497. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  498. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  499. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  500. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  501. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  503. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  505. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  507. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  509. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  511. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  513. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  515. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  517. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  518. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  519. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  520. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  521. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  522. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  523. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  524. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  525. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  526. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  527. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  528. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  529. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  530. package/mcp-server/utils/__tests__/command.test.js +0 -275
  531. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  532. package/mcp-server/utils/__tests__/content.test.js +0 -164
  533. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  534. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,49 +1,51 @@
1
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
2
1
  import { getConfigAccountIfExists } from '@hubspot/local-dev-lib/config';
3
- import { getAllHsProfiles, } from '@hubspot/project-parsing-lib/profiles';
4
2
  import { getProjectConfig, validateProjectConfig, } from '../../../lib/projects/config.js';
5
3
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
6
4
  import { uiLine } from '../../../lib/ui/index.js';
5
+ import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
7
6
  import { deprecatedProjectDevFlow } from './deprecatedFlow.js';
8
7
  import { unifiedProjectDevFlow } from './unifiedFlow.js';
9
8
  import { isV2Project } from '../../../lib/projects/platformVersion.js';
10
9
  import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
11
- import { loadProfile } from '../../../lib/projects/projectProfiles.js';
10
+ import { loadAndValidateProfile } from '../../../lib/projects/projectProfiles.js';
12
11
  import { commands } from '../../../lang/en.js';
13
12
  import { uiLogger } from '../../../lib/ui/logger.js';
14
13
  import { logError } from '../../../lib/errorHandlers/index.js';
15
- import { PromptExitError } from '../../../lib/errors/PromptExitError.js';
16
- import path from 'path';
17
- import { listPrompt } from '../../../lib/prompts/promptUtils.js';
14
+ import { projectProfilePrompt } from '../../../lib/prompts/projectProfilePrompt.js';
15
+ import { isPromptExitError } from '../../../lib/errors/PromptExitError.js';
18
16
  const command = 'dev';
19
17
  const describe = commands.project.dev.describe;
20
18
  function validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2) {
21
19
  // Legacy projects do not support targetTestingAccount and targetProjectAccount
22
20
  if (testingAccount && projectAccount && !useV2) {
23
- uiLogger.error(commands.project.dev.errors.unsupportedAccountFlagLegacy);
24
- process.exit(EXIT_CODES.ERROR);
21
+ throw new Error(commands.project.dev.errors.unsupportedAccountFlagLegacy);
25
22
  }
26
23
  if (userProvidedAccount && useV2) {
27
- uiLogger.error(commands.project.dev.errors.unsupportedAccountFlagV2);
28
- process.exit(EXIT_CODES.ERROR);
24
+ throw new Error(commands.project.dev.errors.unsupportedAccountFlagV2);
29
25
  }
30
26
  }
31
27
  async function handler(args) {
32
- const { derivedAccountId, userProvidedAccount, testingAccount, projectAccount, } = args;
28
+ const { derivedAccountId, userProvidedAccount, testingAccount, projectAccount, profile: profileOption, exit, addUsageMetadata, } = args;
33
29
  const { projectConfig, projectDir } = await getProjectConfig();
34
30
  try {
35
31
  validateProjectConfig(projectConfig, projectDir);
36
32
  }
37
33
  catch (error) {
38
34
  logError(error);
39
- process.exit(EXIT_CODES.ERROR);
35
+ return exit(EXIT_CODES.ERROR);
40
36
  }
41
37
  const useV2Projects = isV2Project(projectConfig.platformVersion);
42
38
  if (!projectDir) {
43
39
  uiLogger.error(commands.project.dev.errors.noProjectConfig);
44
- process.exit(EXIT_CODES.ERROR);
40
+ return exit(EXIT_CODES.ERROR);
41
+ }
42
+ try {
43
+ validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2Projects);
44
+ }
45
+ catch (error) {
46
+ logError(error);
47
+ return exit(EXIT_CODES.ERROR);
45
48
  }
46
- validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2Projects);
47
49
  uiLogger.log(commands.project.dev.logs.header);
48
50
  if (useV2Projects) {
49
51
  uiLogger.log(commands.project.dev.logs.learnMoreMessageV2);
@@ -68,18 +70,10 @@ async function handler(args) {
68
70
  }
69
71
  // Determine profile name: from flag or prompt
70
72
  if (!targetProjectAccountId && isV2Project(projectConfig.platformVersion)) {
71
- let profileName = args.profile;
72
- if (!profileName) {
73
- const existingProfiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
74
- if (existingProfiles.length !== 0) {
75
- profileName = await listPrompt(commands.project.dev.prompts.selectProfile, {
76
- choices: existingProfiles,
77
- });
78
- }
79
- }
73
+ const profileName = await projectProfilePrompt(projectDir, projectConfig, profileOption);
80
74
  if (profileName) {
81
75
  try {
82
- profile = loadProfile(projectConfig, projectDir, profileName);
76
+ profile = await loadAndValidateProfile(projectConfig, projectDir, profileName);
83
77
  targetProjectAccountId = profile.accountId;
84
78
  uiLogger.log('');
85
79
  uiLogger.log(commands.project.dev.logs.profileProjectAccountExplanation(targetProjectAccountId, profileName));
@@ -87,7 +81,7 @@ async function handler(args) {
87
81
  catch (error) {
88
82
  logError(error);
89
83
  uiLine();
90
- process.exit(EXIT_CODES.ERROR);
84
+ return exit(EXIT_CODES.ERROR);
91
85
  }
92
86
  }
93
87
  }
@@ -99,7 +93,7 @@ async function handler(args) {
99
93
  uiLogger.log(commands.project.dev.logs.defaultProjectAccountExplanation(targetProjectAccountId));
100
94
  }
101
95
  }
102
- trackCommandUsage('project-dev', {}, targetProjectAccountId);
96
+ addUsageMetadata({ accountId: targetProjectAccountId ?? undefined });
103
97
  try {
104
98
  if (isV2Project(projectConfig.platformVersion)) {
105
99
  const targetTestingAccountId = testingAccount
@@ -124,11 +118,11 @@ async function handler(args) {
124
118
  }
125
119
  }
126
120
  catch (e) {
127
- if (e instanceof PromptExitError) {
128
- process.exit(e.exitCode);
121
+ if (isPromptExitError(e)) {
122
+ throw e;
129
123
  }
130
124
  logError(e);
131
- process.exit(EXIT_CODES.ERROR);
125
+ return exit(EXIT_CODES.ERROR);
132
126
  }
133
127
  }
134
128
  function projectDevBuilder(yargs) {
@@ -168,7 +162,7 @@ export const builder = makeYargsBuilder(projectDevBuilder, command, describe, {
168
162
  const projectDevCommand = {
169
163
  command,
170
164
  describe,
171
- handler,
165
+ handler: makeYargsHandlerWithUsageTracking('project-dev', handler),
172
166
  builder,
173
167
  };
174
168
  export default projectDevCommand;
@@ -17,9 +17,13 @@ import { isTestAccountOrSandbox, isUnifiedAccount, } from '../../../lib/accountT
17
17
  import { uiLogger } from '../../../lib/ui/logger.js';
18
18
  import { commands } from '../../../lang/en.js';
19
19
  import LocalDevWebsocketServer from '../../../lib/projects/localDev/LocalDevWebsocketServer.js';
20
- import { confirmLocalDevIsNotRunning } from '../../../lib/projects/localDev/helpers/process.js';
20
+ import { isLocalDevRunning } from '../../../lib/projects/localDev/helpers/process.js';
21
21
  export async function unifiedProjectDevFlow({ args, targetProjectAccountId, providedTargetTestingAccountId, projectConfig, projectDir, }) {
22
- await confirmLocalDevIsNotRunning();
22
+ const { exit } = args;
23
+ if (await isLocalDevRunning()) {
24
+ uiLogger.error(commands.project.dev.errors.localDevAlreadyRunning);
25
+ return exit(EXIT_CODES.ERROR);
26
+ }
23
27
  const env = getConfigAccountEnvironment(targetProjectAccountId);
24
28
  let projectNodes;
25
29
  let projectProfileData;
@@ -41,23 +45,23 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
41
45
  else {
42
46
  logError(e);
43
47
  }
44
- return process.exit(EXIT_CODES.ERROR);
48
+ return exit(EXIT_CODES.ERROR);
45
49
  }
46
50
  if (!Object.keys(projectNodes).length) {
47
51
  uiLogger.error(commands.project.dev.errors.noRunnableComponents);
48
- process.exit(EXIT_CODES.SUCCESS);
52
+ return exit(EXIT_CODES.SUCCESS);
49
53
  }
50
54
  const targetProjectAccountConfig = getConfigAccountById(targetProjectAccountId);
51
55
  if (!targetProjectAccountConfig) {
52
56
  uiLogger.error(commands.project.dev.errors.noAccount(targetProjectAccountId));
53
- process.exit(EXIT_CODES.ERROR);
57
+ return exit(EXIT_CODES.ERROR);
54
58
  }
55
59
  const accounts = getAllConfigAccounts();
56
60
  const accountIsCombined = await isUnifiedAccount(targetProjectAccountConfig);
57
61
  const targetProjectAccountIsTestAccountOrSandbox = isTestAccountOrSandbox(targetProjectAccountConfig);
58
62
  if (!accountIsCombined) {
59
63
  uiLogger.error(commands.project.dev.errors.accountNotCombined);
60
- process.exit(EXIT_CODES.ERROR);
64
+ return exit(EXIT_CODES.ERROR);
61
65
  }
62
66
  let targetTestingAccountId = providedTargetTestingAccountId;
63
67
  // Temporarily removing logic to use profile account as testing account
@@ -82,11 +86,19 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
82
86
  if (!!devAccountPromptResponse.notInConfigAccount) {
83
87
  // When the developer test account isn't configured in the CLI config yet
84
88
  // Walk the user through adding the account's PAK to the config
85
- await useExistingDevTestAccount(env, devAccountPromptResponse.notInConfigAccount);
89
+ const accountAdded = await useExistingDevTestAccount(env, devAccountPromptResponse.notInConfigAccount);
90
+ if (!accountAdded) {
91
+ return exit(EXIT_CODES.SUCCESS);
92
+ }
86
93
  }
87
94
  else if (devAccountPromptResponse.createNestedAccount) {
88
95
  // Create a new developer test account and automatically add it to the CLI config
89
- targetTestingAccountId = await createDeveloperTestAccountForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env, true);
96
+ try {
97
+ targetTestingAccountId = await createDeveloperTestAccountForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env, true);
98
+ }
99
+ catch {
100
+ return exit(EXIT_CODES.ERROR);
101
+ }
90
102
  }
91
103
  }
92
104
  else if (accountType === HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
@@ -94,7 +106,12 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
94
106
  targetTestingAccountId =
95
107
  sandboxAccountPromptResponse.targetAccountId || undefined;
96
108
  if (sandboxAccountPromptResponse.createNestedAccount) {
97
- targetTestingAccountId = await createSandboxForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env);
109
+ try {
110
+ targetTestingAccountId = await createSandboxForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env);
111
+ }
112
+ catch {
113
+ return exit(EXIT_CODES.ERROR);
114
+ }
98
115
  }
99
116
  }
100
117
  else {
@@ -111,21 +128,26 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
111
128
  });
112
129
  let project = uploadedProject;
113
130
  if (projectExists && project) {
114
- await compareLocalProjectToDeployed(projectConfig, targetProjectAccountId, project.deployedBuild?.buildId, projectNodes, args.profile);
131
+ await compareLocalProjectToDeployed(projectConfig, targetProjectAccountId, project.deployedBuild?.buildId, projectNodes, exit, args.profile);
115
132
  }
116
133
  else {
117
- project = await createNewProjectForLocalDev(projectConfig, targetProjectAccountId, false, false);
118
- await createInitialBuildForNewProject(projectConfig, projectDir, targetProjectAccountId, true, args.profile);
134
+ project = await createNewProjectForLocalDev(projectConfig, targetProjectAccountId, false, false, exit);
135
+ await createInitialBuildForNewProject(projectConfig, projectDir, targetProjectAccountId, exit, true, args.profile);
119
136
  }
120
137
  // Check for missing/outdated dependencies
121
- await checkAndInstallDependencies();
138
+ try {
139
+ await checkAndInstallDependencies();
140
+ }
141
+ catch {
142
+ return exit(EXIT_CODES.ERROR);
143
+ }
122
144
  // End setup, start local dev process
123
145
  try {
124
146
  await startPortManagerServer();
125
147
  }
126
148
  catch (e) {
127
149
  logError(e);
128
- process.exit(EXIT_CODES.ERROR);
150
+ return exit(EXIT_CODES.ERROR);
129
151
  }
130
152
  const localDevProcess = new LocalDevProcess({
131
153
  initialProjectNodes: projectNodes,
@@ -138,6 +160,7 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
138
160
  projectDir,
139
161
  projectData: project,
140
162
  env,
163
+ actions: { exit },
141
164
  });
142
165
  const websocketServer = new LocalDevWebsocketServer(localDevProcess, args.debug);
143
166
  const watcher = new LocalDevWatcher(localDevProcess);
@@ -3,25 +3,24 @@ import { getCwd, sanitizeFileName } from '@hubspot/local-dev-lib/path';
3
3
  import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
4
4
  import { downloadProject, fetchProjectBuilds, } from '@hubspot/local-dev-lib/api/projects';
5
5
  import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
6
- import { PromptExitError } from '../../lib/errors/PromptExitError.js';
6
+ import { isPromptExitError } from '../../lib/errors/PromptExitError.js';
7
7
  import { getProjectConfig } from '../../lib/projects/config.js';
8
8
  import { downloadProjectPrompt } from '../../lib/prompts/downloadProjectPrompt.js';
9
9
  import { commands } from '../../lang/en.js';
10
10
  import { uiLogger } from '../../lib/ui/logger.js';
11
- import { trackCommandUsage } from '../../lib/usageTracking.js';
12
11
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
12
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
13
13
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
14
14
  const command = 'download';
15
15
  const describe = commands.project.download.describe;
16
16
  async function handler(args) {
17
+ const { dest, build, derivedAccountId, exit } = args;
17
18
  const { projectConfig } = await getProjectConfig();
18
19
  if (projectConfig) {
19
20
  uiLogger.error(commands.project.download.warnings.cannotDownloadWithinProject);
20
- process.exit(EXIT_CODES.ERROR);
21
+ return exit(EXIT_CODES.ERROR);
21
22
  }
22
- const { dest, build, derivedAccountId } = args;
23
23
  let buildNumberToDownload = build;
24
- trackCommandUsage('project-download', undefined, derivedAccountId);
25
24
  try {
26
25
  const { project: projectName } = await downloadProjectPrompt(args);
27
26
  if (!buildNumberToDownload) {
@@ -34,7 +33,7 @@ async function handler(args) {
34
33
  }
35
34
  if (!buildNumberToDownload) {
36
35
  uiLogger.error(commands.project.download.errors.noBuildIdToDownload);
37
- process.exit(EXIT_CODES.ERROR);
36
+ return exit(EXIT_CODES.ERROR);
38
37
  }
39
38
  const sanitizedProjectName = sanitizeFileName(projectName);
40
39
  const absoluteDestPath = dest
@@ -43,17 +42,17 @@ async function handler(args) {
43
42
  const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, buildNumberToDownload);
44
43
  await extractZipArchive(zippedProject, sanitizeFileName(projectName), path.resolve(absoluteDestPath));
45
44
  uiLogger.log(commands.project.download.logs.downloadSucceeded(buildNumberToDownload, projectName));
46
- process.exit(EXIT_CODES.SUCCESS);
45
+ return exit(EXIT_CODES.SUCCESS);
47
46
  }
48
47
  catch (e) {
49
- if (e instanceof PromptExitError) {
50
- process.exit(e.exitCode);
48
+ if (isPromptExitError(e)) {
49
+ throw e;
51
50
  }
52
51
  logError(e, new ApiErrorContext({
53
52
  accountId: derivedAccountId,
54
53
  request: 'project download',
55
54
  }));
56
- process.exit(EXIT_CODES.ERROR);
55
+ return exit(EXIT_CODES.ERROR);
57
56
  }
58
57
  }
59
58
  function projectDownloadBuilder(yargs) {
@@ -89,7 +88,7 @@ const builder = makeYargsBuilder(projectDownloadBuilder, command, describe, {
89
88
  const projectDownloadCommand = {
90
89
  command,
91
90
  describe,
92
- handler,
91
+ handler: makeYargsHandlerWithUsageTracking('project-download', handler),
93
92
  builder,
94
93
  };
95
94
  export default projectDownloadCommand;
@@ -1,26 +1,26 @@
1
- import { trackCommandUsage } from '../../lib/usageTracking.js';
1
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
2
2
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
3
3
  import { fetchProject } from '@hubspot/local-dev-lib/api/projects';
4
- import { ApiErrorContext, debugError } from '../../lib/errorHandlers/index.js';
4
+ import { debugError } from '../../lib/errorHandlers/index.js';
5
5
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
6
6
  import { uiLogger } from '../../lib/ui/logger.js';
7
7
  import { commands } from '../../lang/en.js';
8
8
  import { getProjectConfig } from '../../lib/projects/config.js';
9
9
  import { isV2Project } from '../../lib/projects/platformVersion.js';
10
- import { getProjectInfo, renderProjectInfo, } from '../../lib/projects/projectInfo.js';
10
+ import { getProjectInfo, logProjectInfo, } from '../../lib/projects/projectInfo.js';
11
11
  const command = 'info';
12
12
  const describe = commands.project.info.describe;
13
+ const verboseDescribe = commands.project.info.verboseDescribe;
13
14
  async function handler(args) {
14
- const { derivedAccountId, formatOutputAsJson } = args;
15
- trackCommandUsage('project-info', undefined, derivedAccountId);
15
+ const { derivedAccountId, formatOutputAsJson, exit } = args;
16
16
  const { projectConfig } = await getProjectConfig();
17
17
  if (!projectConfig) {
18
18
  uiLogger.error(commands.project.info.errors.noProjectConfig);
19
- process.exit(EXIT_CODES.ERROR);
19
+ return exit(EXIT_CODES.ERROR);
20
20
  }
21
21
  if (!isV2Project(projectConfig.platformVersion)) {
22
22
  uiLogger.error(commands.project.info.errors.unsupportedPlatformVersion(projectConfig.platformVersion));
23
- process.exit(EXIT_CODES.ERROR);
23
+ return exit(EXIT_CODES.ERROR);
24
24
  }
25
25
  const projectName = projectConfig.name;
26
26
  let project;
@@ -29,30 +29,30 @@ async function handler(args) {
29
29
  project = response.data;
30
30
  }
31
31
  catch (error) {
32
- debugError(error, new ApiErrorContext({
33
- accountId: derivedAccountId,
34
- request: 'fetch project',
35
- }));
32
+ debugError(error);
36
33
  uiLogger.error(commands.project.info.errors.projectNotFound(projectName, derivedAccountId));
37
- process.exit(EXIT_CODES.ERROR);
34
+ return exit(EXIT_CODES.ERROR);
38
35
  }
39
36
  const deployedBuild = project.deployedBuild;
40
37
  if (!deployedBuild) {
41
38
  uiLogger.error(commands.project.info.errors.noDeployedBuild);
42
- process.exit(EXIT_CODES.ERROR);
39
+ return exit(EXIT_CODES.ERROR);
43
40
  }
44
41
  const projectInfo = await getProjectInfo(project, projectConfig.platformVersion, derivedAccountId);
45
42
  if (formatOutputAsJson) {
46
43
  uiLogger.json(projectInfo);
47
44
  return;
48
45
  }
49
- await renderProjectInfo(projectInfo);
46
+ logProjectInfo(projectInfo);
50
47
  }
51
48
  function projectInfoBuilder(yargs) {
52
- yargs.example([['$0 project info']]);
49
+ yargs.example([
50
+ ['$0 project info', commands.project.info.examples.default],
51
+ ['$0 project info --json', commands.project.info.examples.json],
52
+ ]);
53
53
  return yargs;
54
54
  }
55
- const builder = makeYargsBuilder(projectInfoBuilder, command, describe, {
55
+ const builder = makeYargsBuilder(projectInfoBuilder, command, verboseDescribe, {
56
56
  useGlobalOptions: true,
57
57
  useConfigOptions: true,
58
58
  useAccountOptions: true,
@@ -61,7 +61,7 @@ const builder = makeYargsBuilder(projectInfoBuilder, command, describe, {
61
61
  const projectInfoCommand = {
62
62
  command,
63
63
  describe,
64
- handler,
64
+ handler: makeYargsHandlerWithUsageTracking('project-info', handler),
65
65
  builder,
66
66
  };
67
67
  export default projectInfoCommand;
@@ -1,23 +1,23 @@
1
1
  import { installPackages, getProjectPackageJsonLocations, } from '../../lib/dependencyManagement.js';
2
2
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
3
+ import { isPromptExitError } from '../../lib/errors/PromptExitError.js';
3
4
  import { getProjectConfig } from '../../lib/projects/config.js';
4
5
  import { promptUser } from '../../lib/prompts/promptUtils.js';
5
6
  import path from 'path';
6
7
  import { commands } from '../../lang/en.js';
7
8
  import { uiLogger } from '../../lib/ui/logger.js';
8
- import { trackCommandUsage } from '../../lib/usageTracking.js';
9
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
9
10
  import { logError } from '../../lib/errorHandlers/index.js';
10
11
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
11
12
  const command = 'install-deps [packages..]';
12
13
  const describe = commands.project.installDeps.help.describe;
13
14
  async function handler(args) {
14
- const { derivedAccountId, packages } = args;
15
+ const { packages, exit } = args;
15
16
  try {
16
- trackCommandUsage('project-install-deps', undefined, derivedAccountId);
17
17
  const projectConfig = await getProjectConfig();
18
18
  if (!projectConfig || !projectConfig.projectDir) {
19
19
  uiLogger.error(commands.project.installDeps.noProjectConfig);
20
- return process.exit(EXIT_CODES.ERROR);
20
+ return exit(EXIT_CODES.ERROR);
21
21
  }
22
22
  const { projectDir } = projectConfig;
23
23
  let installLocations = await getProjectPackageJsonLocations();
@@ -50,8 +50,11 @@ async function handler(args) {
50
50
  });
51
51
  }
52
52
  catch (e) {
53
+ if (isPromptExitError(e)) {
54
+ throw e;
55
+ }
53
56
  logError(e);
54
- return process.exit(EXIT_CODES.ERROR);
57
+ return exit(EXIT_CODES.ERROR);
55
58
  }
56
59
  }
57
60
  function projectInstallDepsBuilder(yargs) {
@@ -74,7 +77,7 @@ const builder = makeYargsBuilder(projectInstallDepsBuilder, command, describe, {
74
77
  const projectInstallDepsCommand = {
75
78
  command,
76
79
  describe,
77
- handler,
80
+ handler: makeYargsHandlerWithUsageTracking('project-install-deps', handler),
78
81
  builder,
79
82
  };
80
83
  export default projectInstallDepsCommand;
@@ -1,10 +1,11 @@
1
1
  import path from 'path';
2
2
  import { getProjectPackageJsonLocations, installPackages, } from '../../lib/dependencyManagement.js';
3
3
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
4
+ import { isPromptExitError } from '../../lib/errors/PromptExitError.js';
4
5
  import { getProjectConfig } from '../../lib/projects/config.js';
5
6
  import { commands } from '../../lang/en.js';
6
7
  import { uiLogger } from '../../lib/ui/logger.js';
7
- import { trackCommandUsage } from '../../lib/usageTracking.js';
8
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
8
9
  import { logError } from '../../lib/errorHandlers/index.js';
9
10
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
10
11
  import { promptUser } from '../../lib/prompts/promptUtils.js';
@@ -13,13 +14,12 @@ import { areAllLintPackagesInstalled, getMissingLintPackages, lintPackages, disp
13
14
  const command = 'lint';
14
15
  const describe = commands.project.lint.help.describe;
15
16
  async function handler(args) {
16
- const { derivedAccountId, installMissingDeps } = args;
17
+ const { installMissingDeps, exit } = args;
17
18
  try {
18
- trackCommandUsage('project-lint', undefined, derivedAccountId);
19
19
  const projectConfig = await getProjectConfig();
20
20
  if (!projectConfig || !projectConfig.projectDir) {
21
21
  uiLogger.error(commands.project.lint.noProjectConfig);
22
- return process.exit(EXIT_CODES.ERROR);
22
+ return exit(EXIT_CODES.ERROR);
23
23
  }
24
24
  SpinniesManager.init({ succeedColor: 'white' });
25
25
  SpinniesManager.add('lintCheck', {
@@ -129,7 +129,7 @@ async function handler(args) {
129
129
  }
130
130
  else {
131
131
  uiLogger.error(commands.project.lint.eslintConfigRequired);
132
- return process.exit(EXIT_CODES.ERROR);
132
+ return exit(EXIT_CODES.ERROR);
133
133
  }
134
134
  }
135
135
  SpinniesManager.add('lintRun', {
@@ -139,13 +139,16 @@ async function handler(args) {
139
139
  SpinniesManager.succeed('lintRun');
140
140
  displayLintResults(results);
141
141
  if (!success) {
142
- return process.exit(EXIT_CODES.ERROR);
142
+ return exit(EXIT_CODES.ERROR);
143
143
  }
144
144
  }
145
145
  }
146
146
  catch (e) {
147
+ if (isPromptExitError(e)) {
148
+ throw e;
149
+ }
147
150
  logError(e);
148
- return process.exit(EXIT_CODES.ERROR);
151
+ return exit(EXIT_CODES.ERROR);
149
152
  }
150
153
  }
151
154
  function projectLintBuilder(yargs) {
@@ -172,7 +175,7 @@ const builder = makeYargsBuilder(projectLintBuilder, command, describe, {
172
175
  const projectLintCommand = {
173
176
  command,
174
177
  describe,
175
- handler,
178
+ handler: makeYargsHandlerWithUsageTracking('project-lint', handler),
176
179
  builder,
177
180
  };
178
181
  export default projectLintCommand;
@@ -1,4 +1,4 @@
1
- import { trackCommandUsage } from '../../lib/usageTracking.js';
1
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
2
2
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
3
3
  import { fetchProjects } from '@hubspot/local-dev-lib/api/projects';
4
4
  import { logError } from '../../lib/errorHandlers/index.js';
@@ -9,14 +9,8 @@ import { renderTable } from '../../ui/render.js';
9
9
  const command = ['list', 'ls'];
10
10
  const describe = commands.project.list.describe;
11
11
  async function getProjectData(accountId) {
12
- try {
13
- const { data: projects } = await fetchProjects(accountId);
14
- return projects.results;
15
- }
16
- catch (e) {
17
- logError(e);
18
- process.exit(EXIT_CODES.ERROR);
19
- }
12
+ const { data: projects } = await fetchProjects(accountId);
13
+ return projects.results;
20
14
  }
21
15
  function formatProjectsAsTableRows(projects) {
22
16
  const projectListData = [];
@@ -29,12 +23,18 @@ function formatProjectsAsTableRows(projects) {
29
23
  return projectListData;
30
24
  }
31
25
  async function handler(args) {
32
- const { derivedAccountId } = args;
33
- trackCommandUsage('projects-list', undefined, derivedAccountId);
34
- const projectData = await getProjectData(derivedAccountId);
26
+ const { derivedAccountId, exit } = args;
27
+ let projectData;
28
+ try {
29
+ projectData = await getProjectData(derivedAccountId);
30
+ }
31
+ catch (e) {
32
+ logError(e);
33
+ return exit(EXIT_CODES.ERROR);
34
+ }
35
35
  if (projectData.length === 0) {
36
36
  uiLogger.error(commands.project.list.errors.noProjectsFound(derivedAccountId));
37
- process.exit(EXIT_CODES.ERROR);
37
+ return exit(EXIT_CODES.ERROR);
38
38
  }
39
39
  const projectListData = formatProjectsAsTableRows(projectData);
40
40
  const tableHeader = [
@@ -56,7 +56,7 @@ const builder = makeYargsBuilder(projectListBuilder, command, describe, {
56
56
  const projectListCommand = {
57
57
  command,
58
58
  describe,
59
- handler,
59
+ handler: makeYargsHandlerWithUsageTracking('projects-list', handler),
60
60
  builder,
61
61
  };
62
62
  export default projectListCommand;
@@ -5,9 +5,9 @@ import { getProjectConfig, validateProjectConfig, } from '../../lib/projects/con
5
5
  import { getProjectDetailUrl } from '../../lib/projects/urls.js';
6
6
  import moment from 'moment';
7
7
  import { promptUser } from '../../lib/prompts/promptUtils.js';
8
- import { trackCommandUsage } from '../../lib/usageTracking.js';
9
8
  import { uiLogger } from '../../lib/ui/logger.js';
10
9
  import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
11
11
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
12
12
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
13
13
  import { commands } from '../../lang/en.js';
@@ -58,8 +58,7 @@ async function fetchAndDisplayBuilds(accountId, project, options) {
58
58
  }
59
59
  }
60
60
  async function handler(args) {
61
- const { project: projectFlagValue, limit, derivedAccountId } = args;
62
- trackCommandUsage('project-list-builds', undefined, derivedAccountId);
61
+ const { project: projectFlagValue, limit, derivedAccountId, exit } = args;
63
62
  let projectName = projectFlagValue;
64
63
  if (!projectName) {
65
64
  const { projectConfig, projectDir } = await getProjectConfig();
@@ -68,7 +67,10 @@ async function handler(args) {
68
67
  }
69
68
  catch (error) {
70
69
  logError(error);
71
- process.exit(EXIT_CODES.ERROR);
70
+ return exit(EXIT_CODES.ERROR);
71
+ }
72
+ if (!projectConfig) {
73
+ return exit(EXIT_CODES.ERROR);
72
74
  }
73
75
  projectName = projectConfig.name;
74
76
  }
@@ -87,7 +89,7 @@ async function handler(args) {
87
89
  }));
88
90
  }
89
91
  }
90
- process.exit(EXIT_CODES.SUCCESS);
92
+ return exit(EXIT_CODES.SUCCESS);
91
93
  }
92
94
  function projectListBuildsBuilder(yargs) {
93
95
  yargs.options({
@@ -114,7 +116,7 @@ const builder = makeYargsBuilder(projectListBuildsBuilder, command, describe, {
114
116
  const projectListBuildsCommand = {
115
117
  command,
116
118
  describe,
117
- handler,
119
+ handler: makeYargsHandlerWithUsageTracking('project-list-builds', handler),
118
120
  builder,
119
121
  };
120
122
  export default projectListBuildsCommand;