@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,6 +1,5 @@
1
1
  import { getConfigAccountEnvironment } from '@hubspot/local-dev-lib/config';
2
2
  import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
3
- import { trackCommandUsage } from '../../lib/usageTracking.js';
4
3
  import { logError } from '../../lib/errorHandlers/index.js';
5
4
  import { uiLine } from '../../lib/ui/index.js';
6
5
  import { projectLogsPrompt } from '../../lib/prompts/projectsLogsPrompt.js';
@@ -8,6 +7,7 @@ import { commands } from '../../lang/en.js';
8
7
  import { uiLogger } from '../../lib/ui/logger.js';
9
8
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
10
9
  import { ProjectLogsManager } from '../../lib/projects/ProjectLogsManager.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
11
11
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
12
12
  import { renderTable } from '../../ui/render.js';
13
13
  function getPrivateAppsUrl(accountId) {
@@ -51,8 +51,7 @@ function logPreamble() {
51
51
  const command = 'logs';
52
52
  const describe = commands.project.logs.describe;
53
53
  async function handler(args) {
54
- const { derivedAccountId } = args;
55
- trackCommandUsage('project-logs', undefined, derivedAccountId);
54
+ const { derivedAccountId, exit } = args;
56
55
  try {
57
56
  await ProjectLogsManager.init(derivedAccountId);
58
57
  const { functionName } = await projectLogsPrompt({
@@ -68,9 +67,9 @@ async function handler(args) {
68
67
  accountId: derivedAccountId,
69
68
  projectName: ProjectLogsManager.projectName,
70
69
  });
71
- return process.exit(EXIT_CODES.ERROR);
70
+ return exit(EXIT_CODES.ERROR);
72
71
  }
73
- process.exit(EXIT_CODES.SUCCESS);
72
+ return exit(EXIT_CODES.SUCCESS);
74
73
  }
75
74
  function projectLogsBuilder(yargs) {
76
75
  yargs.options({
@@ -113,7 +112,7 @@ const builder = makeYargsBuilder(projectLogsBuilder, command, describe, { useGlo
113
112
  const projectLogsCommand = {
114
113
  command,
115
114
  describe,
116
- handler,
115
+ handler: makeYargsHandlerWithUsageTracking('project-logs', handler),
117
116
  builder,
118
117
  };
119
118
  export default projectLogsCommand;
@@ -1,3 +1,4 @@
1
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
1
2
  import { migrateApp } from '../../lib/app/migrate.js';
2
3
  import { getProjectConfig } from '../../lib/projects/config.js';
3
4
  import { PLATFORM_VERSIONS } from '@hubspot/local-dev-lib/constants/projects';
@@ -12,17 +13,16 @@ import { getWarningBox } from '../../ui/components/StatusMessageBoxes.js';
12
13
  import { getHasMigratableThemes, migrateThemesV2, } from '../../lib/theme/migrate.js';
13
14
  import { hasFeature } from '../../lib/hasFeature.js';
14
15
  import { FEATURES } from '../../lib/constants.js';
15
- import { trackCommandMetadataUsage, trackCommandUsage, } from '../../lib/usageTracking.js';
16
+ import { trackCommandMetadataUsage } from '../../lib/usageTracking.js';
16
17
  const { v2025_2, v2026_03_beta, v2026_03 } = PLATFORM_VERSIONS;
17
18
  const command = 'migrate';
18
19
  const describe = commands.project.migrate.describe;
19
20
  async function handler(args) {
20
- const { platformVersion, unstable, derivedAccountId } = args;
21
- await trackCommandUsage('project-migrate', {}, derivedAccountId);
21
+ const { platformVersion, unstable, derivedAccountId, exit } = args;
22
22
  const projectConfig = await getProjectConfig();
23
23
  if (!projectConfig.projectConfig) {
24
24
  uiLogger.error(commands.project.migrate.errors.noProjectConfig(uiCommandReference('hs app migrate')));
25
- return process.exit(EXIT_CODES.ERROR);
25
+ return exit(EXIT_CODES.ERROR);
26
26
  }
27
27
  if (projectConfig?.projectConfig) {
28
28
  await renderInline(getWarningBox({
@@ -36,7 +36,7 @@ async function handler(args) {
36
36
  const hasThemeMigrationAccess = await hasFeature(derivedAccountId, FEATURES.THEME_MIGRATION_2025_2);
37
37
  if (!hasThemeMigrationAccess) {
38
38
  uiLogger.error(commands.project.migrate.errors.noThemeMigrationAccess(derivedAccountId));
39
- return process.exit(EXIT_CODES.ERROR);
39
+ return exit(EXIT_CODES.ERROR);
40
40
  }
41
41
  await migrateThemesV2(derivedAccountId, {
42
42
  ...args,
@@ -58,10 +58,10 @@ async function handler(args) {
58
58
  catch (error) {
59
59
  await trackCommandMetadataUsage('project-migrate', { successful: false }, derivedAccountId);
60
60
  logError(error);
61
- return process.exit(EXIT_CODES.ERROR);
61
+ return exit(EXIT_CODES.ERROR);
62
62
  }
63
63
  await trackCommandMetadataUsage('project-migrate', { successful: true }, derivedAccountId);
64
- return process.exit(EXIT_CODES.SUCCESS);
64
+ return exit(EXIT_CODES.SUCCESS);
65
65
  }
66
66
  function projectMigrateBuilder(yargs) {
67
67
  yargs
@@ -85,7 +85,7 @@ const builder = makeYargsBuilder(projectMigrateBuilder, command, commands.projec
85
85
  const migrateCommand = {
86
86
  command,
87
87
  describe,
88
- handler,
88
+ handler: makeYargsHandlerWithUsageTracking('project-migrate', handler),
89
89
  builder,
90
90
  };
91
91
  export default migrateCommand;
@@ -1,5 +1,4 @@
1
1
  import open from 'open';
2
- import { trackCommandUsage } from '../../lib/usageTracking.js';
3
2
  import { commands } from '../../lang/en.js';
4
3
  import { uiLogger } from '../../lib/ui/logger.js';
5
4
  import { getProjectConfig } from '../../lib/projects/config.js';
@@ -7,12 +6,12 @@ import { ensureProjectExists } from '../../lib/projects/ensureProjectExists.js';
7
6
  import { getProjectDetailUrl } from '../../lib/projects/urls.js';
8
7
  import { projectNamePrompt } from '../../lib/prompts/projectNamePrompt.js';
9
8
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
9
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
10
10
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
11
11
  const command = 'open';
12
12
  const describe = commands.project.open.describe;
13
13
  async function handler(args) {
14
- const { project, derivedAccountId } = args;
15
- trackCommandUsage('project-open', undefined, derivedAccountId);
14
+ const { project, derivedAccountId, exit } = args;
16
15
  const { projectConfig } = await getProjectConfig();
17
16
  let projectName = project;
18
17
  if (projectName) {
@@ -20,7 +19,7 @@ async function handler(args) {
20
19
  allowCreate: false,
21
20
  });
22
21
  if (!projectExists) {
23
- process.exit(EXIT_CODES.ERROR);
22
+ return exit(EXIT_CODES.ERROR);
24
23
  }
25
24
  }
26
25
  else if (!projectName && projectConfig) {
@@ -33,7 +32,7 @@ async function handler(args) {
33
32
  const url = getProjectDetailUrl(projectName, derivedAccountId);
34
33
  open(url, { url: true });
35
34
  uiLogger.success(commands.project.open.success(projectName));
36
- process.exit(EXIT_CODES.SUCCESS);
35
+ return exit(EXIT_CODES.SUCCESS);
37
36
  }
38
37
  function projectOpenBuilder(yargs) {
39
38
  yargs.options({
@@ -55,7 +54,7 @@ const builder = makeYargsBuilder(projectOpenBuilder, command, describe, {
55
54
  const projectOpenCommand = {
56
55
  command,
57
56
  describe,
58
- handler,
57
+ handler: makeYargsHandlerWithUsageTracking('project-open', handler),
59
58
  builder,
60
59
  };
61
60
  export default projectOpenCommand;
@@ -2,11 +2,12 @@ import path from 'path';
2
2
  import fs from 'fs';
3
3
  import { getConfigAccountIfExists, getAllConfigAccounts, } from '@hubspot/local-dev-lib/config';
4
4
  import { getAllHsProfiles, getHsProfileFilename, loadHsProfileFile, } from '@hubspot/project-parsing-lib/profiles';
5
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
6
5
  import { getProjectConfig } from '../../../lib/projects/config.js';
6
+ import { isV2Project } from '../../../lib/projects/platformVersion.js';
7
7
  import { uiAccountDescription } from '../../../lib/ui/index.js';
8
8
  import { uiLogger } from '../../../lib/ui/logger.js';
9
9
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
10
11
  import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
11
12
  import { commands } from '../../../lang/en.js';
12
13
  import { promptUser, listPrompt, confirmPrompt, } from '../../../lib/prompts/promptUtils.js';
@@ -50,12 +51,15 @@ async function selectProfileToCopyVariablesFrom(existingProfiles) {
50
51
  return profileToCopyVariablesFrom;
51
52
  }
52
53
  async function handler(args) {
53
- const { derivedAccountId } = args;
54
- trackCommandUsage('project-profile-add', undefined, derivedAccountId);
54
+ const { exit } = args;
55
55
  const { projectConfig, projectDir } = await getProjectConfig();
56
56
  if (!projectConfig || !projectDir) {
57
57
  uiLogger.error(commands.project.profile.add.errors.noProjectConfig);
58
- process.exit(EXIT_CODES.ERROR);
58
+ return exit(EXIT_CODES.ERROR);
59
+ }
60
+ if (!isV2Project(projectConfig.platformVersion)) {
61
+ uiLogger.error(commands.project.profile.add.errors.unsupportedPlatformVersion);
62
+ return exit(EXIT_CODES.ERROR);
59
63
  }
60
64
  const projectSourceDir = path.join(projectDir, projectConfig.srcDir);
61
65
  let profileName = args.name;
@@ -115,7 +119,7 @@ async function handler(args) {
115
119
  const configuredAccounts = getAllConfigAccounts();
116
120
  if (!configuredAccounts || !configuredAccounts.length) {
117
121
  uiLogger.error(commands.project.profile.add.errors.noAccountsConfigured);
118
- process.exit(EXIT_CODES.ERROR);
122
+ return exit(EXIT_CODES.ERROR);
119
123
  }
120
124
  const promptResponse = await listPrompt(commands.project.profile.add.prompts.targetAccountPrompt, {
121
125
  choices: configuredAccounts.map(account => {
@@ -171,11 +175,11 @@ async function handler(args) {
171
175
  }
172
176
  catch (err) {
173
177
  uiLogger.error(commands.project.profile.add.errors.failedToCreateProfile);
174
- process.exit(EXIT_CODES.ERROR);
178
+ return exit(EXIT_CODES.ERROR);
175
179
  }
176
180
  uiLogger.log('');
177
181
  uiLogger.log(commands.project.profile.add.logs.profileAdded(profileFilename));
178
- process.exit(EXIT_CODES.SUCCESS);
182
+ return exit(EXIT_CODES.SUCCESS);
179
183
  }
180
184
  function projectProfileAddBuilder(yargs) {
181
185
  yargs.positional('name', {
@@ -197,7 +201,7 @@ const builder = makeYargsBuilder(projectProfileAddBuilder, command, verboseDescr
197
201
  const projectProfileAddCommand = {
198
202
  command,
199
203
  describe,
200
- handler,
204
+ handler: makeYargsHandlerWithUsageTracking('project-profile-add', handler),
201
205
  builder,
202
206
  };
203
207
  export default projectProfileAddCommand;
@@ -3,10 +3,11 @@ import path from 'path';
3
3
  import { getAllHsProfiles, getHsProfileFilename, loadHsProfileFile, } from '@hubspot/project-parsing-lib/profiles';
4
4
  import { fetchProject, deleteProject, } from '@hubspot/local-dev-lib/api/projects';
5
5
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
6
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
7
6
  import { getProjectConfig } from '../../../lib/projects/config.js';
7
+ import { isV2Project } from '../../../lib/projects/platformVersion.js';
8
8
  import { uiLogger } from '../../../lib/ui/logger.js';
9
9
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
10
11
  import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
11
12
  import { commands } from '../../../lang/en.js';
12
13
  import { confirmPrompt, listPrompt } from '../../../lib/prompts/promptUtils.js';
@@ -16,12 +17,15 @@ import { isDeveloperTestAccount, isSandbox, } from '../../../lib/accountTypes.js
16
17
  const command = 'delete [name]';
17
18
  const describe = commands.project.profile.delete.describe;
18
19
  async function handler(args) {
19
- const { derivedAccountId } = args;
20
- trackCommandUsage('project-profile-delete', undefined, derivedAccountId);
20
+ const { exit } = args;
21
21
  const { projectConfig, projectDir } = await getProjectConfig();
22
22
  if (!projectConfig || !projectDir) {
23
23
  uiLogger.error(commands.project.profile.delete.errors.noProjectConfig);
24
- process.exit(EXIT_CODES.ERROR);
24
+ return exit(EXIT_CODES.ERROR);
25
+ }
26
+ if (!isV2Project(projectConfig.platformVersion)) {
27
+ uiLogger.error(commands.project.profile.delete.errors.unsupportedPlatformVersion);
28
+ return exit(EXIT_CODES.ERROR);
25
29
  }
26
30
  const projectSourceDir = path.join(projectDir, projectConfig.srcDir);
27
31
  let profileName = undefined;
@@ -30,14 +34,14 @@ async function handler(args) {
30
34
  const profileFilename = getHsProfileFilename(profileName);
31
35
  if (!fileExists(path.join(projectSourceDir, profileFilename))) {
32
36
  uiLogger.error(commands.project.profile.delete.errors.noProfileFound(profileFilename));
33
- process.exit(EXIT_CODES.ERROR);
37
+ return exit(EXIT_CODES.ERROR);
34
38
  }
35
39
  }
36
40
  else {
37
41
  const existingProfiles = await getAllHsProfiles(projectSourceDir);
38
42
  if (existingProfiles.length === 0) {
39
43
  uiLogger.error(commands.project.profile.delete.errors.noProfilesFound);
40
- process.exit(EXIT_CODES.ERROR);
44
+ return exit(EXIT_CODES.ERROR);
41
45
  }
42
46
  const promptResponse = await listPrompt(commands.project.profile.delete.prompts.deleteProfilePrompt, {
43
47
  choices: existingProfiles.map(profile => ({
@@ -52,7 +56,7 @@ async function handler(args) {
52
56
  }
53
57
  // This should never happen
54
58
  if (!profileName) {
55
- process.exit(EXIT_CODES.ERROR);
59
+ return exit(EXIT_CODES.ERROR);
56
60
  }
57
61
  let targetAccountId;
58
62
  try {
@@ -68,7 +72,7 @@ async function handler(args) {
68
72
  }
69
73
  catch (err) {
70
74
  uiLogger.error(commands.project.profile.delete.errors.failedToDeleteProfile(profileFilename));
71
- process.exit(EXIT_CODES.ERROR);
75
+ return exit(EXIT_CODES.ERROR);
72
76
  }
73
77
  uiLogger.log(commands.project.profile.delete.logs.profileDeleted(profileFilename));
74
78
  if (targetAccountId) {
@@ -96,7 +100,7 @@ async function handler(args) {
96
100
  catch (err) {
97
101
  debugError(err);
98
102
  uiLogger.error(commands.project.profile.delete.errors.failedToDeleteProject(targetAccountId));
99
- process.exit(EXIT_CODES.ERROR);
103
+ return exit(EXIT_CODES.ERROR);
100
104
  }
101
105
  uiLogger.log(commands.project.profile.delete.logs.deletedProject(targetAccountId));
102
106
  }
@@ -105,7 +109,7 @@ async function handler(args) {
105
109
  }
106
110
  }
107
111
  }
108
- process.exit(EXIT_CODES.SUCCESS);
112
+ return exit(EXIT_CODES.SUCCESS);
109
113
  }
110
114
  function projectProfileDeleteBuilder(yargs) {
111
115
  yargs.positional('name', {
@@ -123,7 +127,7 @@ const builder = makeYargsBuilder(projectProfileDeleteBuilder, command, describe,
123
127
  const projectProfileDeleteCommand = {
124
128
  command,
125
129
  describe,
126
- handler,
130
+ handler: makeYargsHandlerWithUsageTracking('project-profile-delete', handler),
127
131
  builder,
128
132
  };
129
133
  export default projectProfileDeleteCommand;
@@ -1,23 +1,23 @@
1
1
  import { updatePackages, 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 = 'update-deps [packages..]';
12
13
  const describe = commands.project.updateDeps.help.describe;
13
14
  async function handler(args) {
14
- const { derivedAccountId, packages } = args;
15
+ const { packages, exit } = args;
15
16
  try {
16
- trackCommandUsage('project-update-deps', undefined, derivedAccountId);
17
17
  const projectConfig = await getProjectConfig();
18
18
  if (!projectConfig || !projectConfig.projectDir) {
19
19
  uiLogger.error(commands.project.updateDeps.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 projectUpdateDepsBuilder(yargs) {
@@ -74,7 +77,7 @@ const builder = makeYargsBuilder(projectUpdateDepsBuilder, command, describe, {
74
77
  const projectUpdateDepsCommand = {
75
78
  command,
76
79
  describe,
77
- handler,
80
+ handler: makeYargsHandlerWithUsageTracking('project-update-deps', handler),
78
81
  builder,
79
82
  };
80
83
  export default projectUpdateDepsCommand;
@@ -3,7 +3,6 @@ import { uiLogger } from '../../lib/ui/logger.js';
3
3
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
4
4
  import { isSpecifiedError } from '@hubspot/local-dev-lib/errors/index';
5
5
  import { isV2Project } from '../../lib/projects/platformVersion.js';
6
- import { trackCommandUsage } from '../../lib/usageTracking.js';
7
6
  import { getProjectConfig, validateProjectConfig, } from '../../lib/projects/config.js';
8
7
  import { logFeedbackMessage } from '../../lib/projects/ui.js';
9
8
  import { handleProjectUpload } from '../../lib/projects/upload.js';
@@ -13,11 +12,13 @@ import { commands } from '../../lang/en.js';
13
12
  import { PROJECT_ERROR_TYPES } from '../../lib/constants.js';
14
13
  import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
15
14
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
15
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
16
16
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
17
+ import { projectProfilePrompt } from '../../lib/prompts/projectProfilePrompt.js';
17
18
  const command = 'upload';
18
19
  const describe = commands.project.upload.describe;
19
20
  async function handler(args) {
20
- const { forceCreate, message, derivedAccountId, skipValidation, formatOutputAsJson, profile, } = args;
21
+ const { forceCreate, message, derivedAccountId, skipValidation, formatOutputAsJson, profile: profileOption, useEnv: useEnvOption, exit, addUsageMetadata, } = args;
21
22
  const jsonOutput = {};
22
23
  const { projectConfig, projectDir } = await getProjectConfig();
23
24
  try {
@@ -25,34 +26,47 @@ async function handler(args) {
25
26
  }
26
27
  catch (error) {
27
28
  logError(error);
28
- process.exit(EXIT_CODES.ERROR);
29
+ return exit(EXIT_CODES.ERROR);
30
+ }
31
+ if (!projectDir) {
32
+ uiLogger.error(commands.project.upload.errors.noProjectConfig);
33
+ return exit(EXIT_CODES.ERROR);
29
34
  }
30
35
  let targetAccountId;
31
- try {
32
- if (isV2Project(projectConfig.platformVersion)) {
33
- targetAccountId = await loadAndValidateProfile(projectConfig, projectDir, profile);
36
+ let profileName = args.profile;
37
+ if (isV2Project(projectConfig?.platformVersion)) {
38
+ try {
39
+ const profileNamePromptResult = await projectProfilePrompt(projectDir, projectConfig, profileOption, !!useEnvOption);
40
+ if (profileNamePromptResult) {
41
+ profileName = profileNamePromptResult;
42
+ const profile = await loadAndValidateProfile(projectConfig, projectDir, profileName);
43
+ targetAccountId = profile.accountId;
44
+ }
45
+ }
46
+ catch (error) {
47
+ logError(error);
48
+ return exit(EXIT_CODES.ERROR);
34
49
  }
35
- }
36
- catch (err) {
37
- logError(err);
38
- process.exit(EXIT_CODES.ERROR);
39
50
  }
40
51
  targetAccountId = targetAccountId || derivedAccountId;
41
52
  const accountConfig = getConfigAccountById(targetAccountId);
42
53
  const accountType = accountConfig && accountConfig.accountType;
43
- trackCommandUsage('project-upload', { type: accountType, assetType: projectConfig.platformVersion }, targetAccountId);
54
+ addUsageMetadata({
55
+ type: accountType,
56
+ assetType: projectConfig.platformVersion,
57
+ });
44
58
  try {
45
59
  const { result, uploadError } = await handleProjectUpload({
46
60
  accountId: targetAccountId,
47
61
  projectConfig,
48
- projectDir: projectDir,
62
+ projectDir,
49
63
  callbackFunc: pollProjectBuildAndDeploy,
50
64
  uploadMessage: message,
51
65
  forceCreate,
52
66
  isUploadCommand: true,
53
67
  sendIR: isV2Project(projectConfig.platformVersion),
54
68
  skipValidation,
55
- profile: args.profile,
69
+ profile: profileName,
56
70
  });
57
71
  if (uploadError) {
58
72
  if (isSpecifiedError(uploadError, {
@@ -68,7 +82,7 @@ async function handler(args) {
68
82
  request: 'project upload',
69
83
  }));
70
84
  }
71
- process.exit(EXIT_CODES.ERROR);
85
+ return exit(EXIT_CODES.ERROR);
72
86
  }
73
87
  if (result && result.succeeded && !result.buildResult.isAutoDeployEnabled) {
74
88
  uiLogger.log(chalk.bold(commands.project.upload.logs.buildSucceeded(result.buildId)));
@@ -88,12 +102,12 @@ async function handler(args) {
88
102
  accountId: targetAccountId,
89
103
  request: 'project upload',
90
104
  }));
91
- process.exit(EXIT_CODES.ERROR);
105
+ return exit(EXIT_CODES.ERROR);
92
106
  }
93
107
  if (formatOutputAsJson) {
94
108
  uiLogger.json(jsonOutput);
95
109
  }
96
- process.exit(EXIT_CODES.SUCCESS);
110
+ return exit(EXIT_CODES.SUCCESS);
97
111
  }
98
112
  function projectUploadBuilder(yargs) {
99
113
  yargs.options({
@@ -139,7 +153,7 @@ const builder = makeYargsBuilder(projectUploadBuilder, command, describe, {
139
153
  const projectUploadCommand = {
140
154
  command,
141
155
  describe,
142
- handler,
156
+ handler: makeYargsHandlerWithUsageTracking('project-upload', handler),
143
157
  builder,
144
158
  };
145
159
  export default projectUploadCommand;
@@ -1,10 +1,10 @@
1
1
  import path from 'path';
2
2
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
3
3
  import { isV2Project } from '../../lib/projects/platformVersion.js';
4
- import { trackCommandUsage } from '../../lib/usageTracking.js';
5
4
  import { uiLogger } from '../../lib/ui/logger.js';
6
5
  import { getProjectConfig, validateProjectConfig, } from '../../lib/projects/config.js';
7
6
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
7
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
8
8
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
9
9
  import { validateSourceDirectory, handleTranslate, } from '../../lib/projects/upload.js';
10
10
  import { commands } from '../../lang/en.js';
@@ -15,25 +15,25 @@ import SpinniesManager from '../../lib/ui/SpinniesManager.js';
15
15
  const command = 'validate';
16
16
  const describe = commands.project.validate.describe;
17
17
  async function handler(args) {
18
- const { derivedAccountId, profile } = args;
18
+ const { derivedAccountId, profile, exit, addUsageMetadata } = args;
19
19
  const { projectConfig, projectDir } = await getProjectConfig();
20
20
  const accountConfig = getConfigAccountById(derivedAccountId);
21
21
  const accountType = accountConfig && accountConfig.accountType;
22
- trackCommandUsage('project-validate', { type: accountType }, derivedAccountId);
22
+ addUsageMetadata({ type: accountType });
23
23
  if (!projectConfig || !projectDir) {
24
24
  uiLogger.error(commands.project.validate.mustBeRanWithinAProject);
25
- process.exit(EXIT_CODES.ERROR);
25
+ return exit(EXIT_CODES.ERROR);
26
26
  }
27
- if (!isV2Project(projectConfig?.platformVersion)) {
27
+ if (!isV2Project(projectConfig.platformVersion)) {
28
28
  uiLogger.error(commands.project.validate.badVersion);
29
- process.exit(EXIT_CODES.ERROR);
29
+ return exit(EXIT_CODES.ERROR);
30
30
  }
31
31
  try {
32
32
  validateProjectConfig(projectConfig, projectDir);
33
33
  }
34
34
  catch (error) {
35
35
  logError(error);
36
- process.exit(EXIT_CODES.ERROR);
36
+ return exit(EXIT_CODES.ERROR);
37
37
  }
38
38
  let validationSucceeded = true;
39
39
  const srcDir = path.resolve(projectDir, projectConfig.srcDir);
@@ -100,17 +100,17 @@ async function handler(args) {
100
100
  }
101
101
  }
102
102
  if (!validationSucceeded) {
103
- process.exit(EXIT_CODES.ERROR);
103
+ return exit(EXIT_CODES.ERROR);
104
104
  }
105
105
  try {
106
106
  await validateSourceDirectory(srcDir, projectConfig, projectDir);
107
107
  }
108
108
  catch (e) {
109
109
  logError(e);
110
- process.exit(EXIT_CODES.ERROR);
110
+ return exit(EXIT_CODES.ERROR);
111
111
  }
112
112
  uiLogger.success(commands.project.validate.success(projectConfig.name));
113
- process.exit(EXIT_CODES.SUCCESS);
113
+ return exit(EXIT_CODES.SUCCESS);
114
114
  }
115
115
  function projectValidateBuilder(yargs) {
116
116
  yargs.options({
@@ -150,7 +150,7 @@ const builder = makeYargsBuilder(projectValidateBuilder, command, describe, {
150
150
  const projectValidateCommand = {
151
151
  command,
152
152
  describe,
153
- handler,
153
+ handler: makeYargsHandlerWithUsageTracking('project-validate', handler),
154
154
  builder,
155
155
  };
156
156
  export default projectValidateCommand;