@hubspot/cli 8.3.0 → 8.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) 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.d.ts +4 -0
  78. package/commands/project/info.js +67 -0
  79. package/commands/project/installDeps.js +9 -6
  80. package/commands/project/lint.js +11 -8
  81. package/commands/project/list.js +14 -14
  82. package/commands/project/listBuilds.js +8 -6
  83. package/commands/project/logs.js +5 -6
  84. package/commands/project/migrate.js +8 -8
  85. package/commands/project/open.js +5 -6
  86. package/commands/project/profile/add.js +12 -8
  87. package/commands/project/profile/delete.js +15 -11
  88. package/commands/project/updateDeps.js +9 -6
  89. package/commands/project/upload.js +31 -17
  90. package/commands/project/validate.js +11 -11
  91. package/commands/project/watch.js +20 -20
  92. package/commands/project.js +4 -0
  93. package/commands/sandbox/create.js +15 -15
  94. package/commands/sandbox/delete.js +13 -14
  95. package/commands/secret/addSecret.js +6 -7
  96. package/commands/secret/deleteSecret.js +5 -6
  97. package/commands/secret/listSecret.js +2 -3
  98. package/commands/secret/updateSecret.js +4 -5
  99. package/commands/testAccount/create.d.ts +1 -1
  100. package/commands/testAccount/create.js +20 -16
  101. package/commands/testAccount/createConfig.js +7 -8
  102. package/commands/testAccount/delete.js +27 -18
  103. package/commands/testAccount/importData.js +6 -7
  104. package/commands/upgrade.js +9 -10
  105. package/lang/en.d.ts +114 -5
  106. package/lang/en.js +111 -5
  107. package/lib/accountAuth.js +2 -2
  108. package/lib/buildAccount.js +3 -3
  109. package/lib/doctor/Diagnosis.js +5 -5
  110. package/lib/errorHandlers/index.js +4 -3
  111. package/lib/errorHandlers/suppressError.js +4 -0
  112. package/lib/errors/PromptExitError.d.ts +4 -2
  113. package/lib/errors/PromptExitError.js +3 -0
  114. package/lib/process.d.ts +1 -1
  115. package/lib/process.js +10 -3
  116. package/lib/projects/delete.d.ts +13 -0
  117. package/lib/projects/delete.js +193 -0
  118. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  119. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  120. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  121. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  122. package/lib/projects/localDev/DevSessionManager.js +31 -19
  123. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  124. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  125. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  126. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  127. package/lib/projects/localDev/LocalDevState.js +3 -1
  128. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  129. package/lib/projects/localDev/helpers/account.js +16 -19
  130. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  131. package/lib/projects/localDev/helpers/process.js +4 -10
  132. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/project.js +31 -15
  134. package/lib/projects/projectInfo.d.ts +5 -0
  135. package/lib/projects/projectInfo.js +82 -0
  136. package/lib/projects/projectProfiles.d.ts +1 -2
  137. package/lib/projects/projectProfiles.js +5 -17
  138. package/lib/prompts/createApiSamplePrompt.js +4 -0
  139. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  140. package/lib/prompts/projectProfilePrompt.js +46 -0
  141. package/lib/prompts/promptUtils.js +3 -2
  142. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  143. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  144. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  145. package/lib/theme/cmsDevServerProcess.js +7 -6
  146. package/lib/ui/SpinniesManager.d.ts +1 -0
  147. package/lib/ui/SpinniesManager.js +20 -6
  148. package/lib/ui/spinniesUtils.d.ts +0 -1
  149. package/lib/ui/spinniesUtils.js +6 -16
  150. package/lib/usageTracking.d.ts +3 -4
  151. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  152. package/lib/yargs/makeYargsBuilder.js +33 -0
  153. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  154. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  155. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  156. package/lib/yargs/strictEnforceBoolean.js +13 -0
  157. package/lib/yargsUtils.d.ts +3 -16
  158. package/lib/yargsUtils.js +3 -48
  159. package/package.json +9 -4
  160. package/types/LocalDev.d.ts +5 -0
  161. package/types/Projects.d.ts +19 -0
  162. package/types/Yargs.d.ts +18 -1
  163. package/api/__tests__/migrate.test.d.ts +0 -1
  164. package/api/__tests__/migrate.test.js +0 -199
  165. package/commands/__tests__/account.test.d.ts +0 -1
  166. package/commands/__tests__/account.test.js +0 -69
  167. package/commands/__tests__/auth.test.d.ts +0 -1
  168. package/commands/__tests__/auth.test.js +0 -43
  169. package/commands/__tests__/cms.test.d.ts +0 -1
  170. package/commands/__tests__/cms.test.js +0 -87
  171. package/commands/__tests__/config.test.d.ts +0 -1
  172. package/commands/__tests__/config.test.js +0 -44
  173. package/commands/__tests__/customObject.test.d.ts +0 -1
  174. package/commands/__tests__/customObject.test.js +0 -68
  175. package/commands/__tests__/doctor.test.d.ts +0 -1
  176. package/commands/__tests__/doctor.test.js +0 -132
  177. package/commands/__tests__/feedback.test.d.ts +0 -1
  178. package/commands/__tests__/feedback.test.js +0 -24
  179. package/commands/__tests__/filemanager.test.d.ts +0 -1
  180. package/commands/__tests__/filemanager.test.js +0 -45
  181. package/commands/__tests__/getStarted.test.d.ts +0 -1
  182. package/commands/__tests__/getStarted.test.js +0 -173
  183. package/commands/__tests__/hubdb.test.d.ts +0 -1
  184. package/commands/__tests__/hubdb.test.js +0 -50
  185. package/commands/__tests__/init.test.d.ts +0 -1
  186. package/commands/__tests__/init.test.js +0 -42
  187. package/commands/__tests__/mcp.test.d.ts +0 -1
  188. package/commands/__tests__/mcp.test.js +0 -46
  189. package/commands/__tests__/open.test.d.ts +0 -1
  190. package/commands/__tests__/open.test.js +0 -58
  191. package/commands/__tests__/project.test.d.ts +0 -1
  192. package/commands/__tests__/project.test.js +0 -125
  193. package/commands/__tests__/sandbox.test.d.ts +0 -1
  194. package/commands/__tests__/sandbox.test.js +0 -44
  195. package/commands/__tests__/secret.test.d.ts +0 -1
  196. package/commands/__tests__/secret.test.js +0 -49
  197. package/commands/__tests__/testAccount.test.d.ts +0 -1
  198. package/commands/__tests__/testAccount.test.js +0 -57
  199. package/commands/__tests__/upgrade.test.d.ts +0 -1
  200. package/commands/__tests__/upgrade.test.js +0 -309
  201. package/commands/account/__tests__/auth.test.d.ts +0 -1
  202. package/commands/account/__tests__/auth.test.js +0 -206
  203. package/commands/account/__tests__/clean.test.d.ts +0 -1
  204. package/commands/account/__tests__/clean.test.js +0 -28
  205. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  206. package/commands/account/__tests__/createOverride.test.js +0 -32
  207. package/commands/account/__tests__/info.test.d.ts +0 -1
  208. package/commands/account/__tests__/info.test.js +0 -28
  209. package/commands/account/__tests__/list.test.d.ts +0 -1
  210. package/commands/account/__tests__/list.test.js +0 -153
  211. package/commands/account/__tests__/remove.test.d.ts +0 -1
  212. package/commands/account/__tests__/remove.test.js +0 -36
  213. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  214. package/commands/account/__tests__/removeOverride.js +0 -25
  215. package/commands/account/__tests__/rename.test.d.ts +0 -1
  216. package/commands/account/__tests__/rename.test.js +0 -82
  217. package/commands/account/__tests__/use.test.d.ts +0 -1
  218. package/commands/account/__tests__/use.test.js +0 -170
  219. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  220. package/commands/app/__tests__/migrate.test.js +0 -111
  221. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  222. package/commands/app/secret/__tests__/add.test.js +0 -140
  223. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  224. package/commands/app/secret/__tests__/delete.test.js +0 -28
  225. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  226. package/commands/app/secret/__tests__/list.test.js +0 -25
  227. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  228. package/commands/app/secret/__tests__/update.test.js +0 -28
  229. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  230. package/commands/cms/__tests__/delete.test.js +0 -39
  231. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  232. package/commands/cms/__tests__/fetch.test.js +0 -156
  233. package/commands/cms/__tests__/function.test.d.ts +0 -1
  234. package/commands/cms/__tests__/function.test.js +0 -50
  235. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  236. package/commands/cms/__tests__/lint.test.js +0 -33
  237. package/commands/cms/__tests__/list.test.d.ts +0 -1
  238. package/commands/cms/__tests__/list.test.js +0 -42
  239. package/commands/cms/__tests__/module.test.d.ts +0 -1
  240. package/commands/cms/__tests__/module.test.js +0 -45
  241. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  242. package/commands/cms/__tests__/mv.test.js +0 -46
  243. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  244. package/commands/cms/__tests__/theme.test.js +0 -54
  245. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  246. package/commands/cms/__tests__/upload.test.js +0 -312
  247. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  248. package/commands/cms/__tests__/watch.test.js +0 -204
  249. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  250. package/commands/cms/function/__tests__/logs.test.js +0 -70
  251. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  252. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  253. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  254. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  255. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  256. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  257. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  258. package/commands/customObject/__tests__/create.test.js +0 -40
  259. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  260. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  261. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  262. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  263. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  264. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  265. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  267. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  269. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  271. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  272. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  273. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  274. package/commands/filemanager/__tests__/upload.test.js +0 -191
  275. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  276. package/commands/hubdb/__tests__/clear.test.js +0 -28
  277. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  278. package/commands/hubdb/__tests__/create.test.js +0 -28
  279. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  280. package/commands/hubdb/__tests__/delete.test.js +0 -28
  281. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  282. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  283. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/list.test.js +0 -88
  285. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  286. package/commands/mcp/__tests__/setup.test.js +0 -26
  287. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  288. package/commands/mcp/__tests__/start.test.js +0 -144
  289. package/commands/project/__tests__/add.test.d.ts +0 -1
  290. package/commands/project/__tests__/add.test.js +0 -107
  291. package/commands/project/__tests__/create.test.d.ts +0 -1
  292. package/commands/project/__tests__/create.test.js +0 -97
  293. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  294. package/commands/project/__tests__/deploy.test.js +0 -307
  295. package/commands/project/__tests__/dev.test.d.ts +0 -1
  296. package/commands/project/__tests__/dev.test.js +0 -273
  297. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  298. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  299. package/commands/project/__tests__/download.test.d.ts +0 -1
  300. package/commands/project/__tests__/download.test.js +0 -39
  301. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  302. package/commands/project/__tests__/installDeps.test.js +0 -140
  303. package/commands/project/__tests__/lint.test.d.ts +0 -1
  304. package/commands/project/__tests__/lint.test.js +0 -704
  305. package/commands/project/__tests__/list.test.d.ts +0 -1
  306. package/commands/project/__tests__/list.test.js +0 -31
  307. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  308. package/commands/project/__tests__/listBuilds.test.js +0 -38
  309. package/commands/project/__tests__/logs.test.d.ts +0 -1
  310. package/commands/project/__tests__/logs.test.js +0 -202
  311. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  312. package/commands/project/__tests__/migrate.test.js +0 -106
  313. package/commands/project/__tests__/open.test.d.ts +0 -1
  314. package/commands/project/__tests__/open.test.js +0 -39
  315. package/commands/project/__tests__/profile.test.d.ts +0 -1
  316. package/commands/project/__tests__/profile.test.js +0 -42
  317. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  318. package/commands/project/__tests__/updateDeps.test.js +0 -140
  319. package/commands/project/__tests__/upload.test.d.ts +0 -1
  320. package/commands/project/__tests__/upload.test.js +0 -234
  321. package/commands/project/__tests__/validate.test.d.ts +0 -1
  322. package/commands/project/__tests__/validate.test.js +0 -381
  323. package/commands/project/__tests__/watch.test.d.ts +0 -1
  324. package/commands/project/__tests__/watch.test.js +0 -35
  325. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  326. package/commands/sandbox/__tests__/create.test.js +0 -198
  327. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  328. package/commands/sandbox/__tests__/delete.test.js +0 -31
  329. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  330. package/commands/secret/__tests__/addSecret.test.js +0 -162
  331. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  332. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  333. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  334. package/commands/secret/__tests__/listSecret.test.js +0 -29
  335. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  336. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  337. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  338. package/commands/testAccount/__tests__/create.test.js +0 -106
  339. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  340. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  341. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  342. package/commands/testAccount/__tests__/delete.test.js +0 -29
  343. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  344. package/commands/testAccount/__tests__/importData.test.js +0 -92
  345. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  346. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  347. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  348. package/lib/__tests__/accountAuth.test.js +0 -258
  349. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  350. package/lib/__tests__/accountTypes.test.js +0 -98
  351. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  352. package/lib/__tests__/buildAccount.test.js +0 -211
  353. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  354. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  355. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  356. package/lib/__tests__/commandSuggestion.test.js +0 -121
  357. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  358. package/lib/__tests__/commonOpts.test.js +0 -80
  359. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  360. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  361. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  362. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  363. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  364. package/lib/__tests__/hasFeature.test.js +0 -167
  365. package/lib/__tests__/http.test.d.ts +0 -1
  366. package/lib/__tests__/http.test.js +0 -40
  367. package/lib/__tests__/importData.test.d.ts +0 -1
  368. package/lib/__tests__/importData.test.js +0 -98
  369. package/lib/__tests__/npmCli.test.d.ts +0 -1
  370. package/lib/__tests__/npmCli.test.js +0 -84
  371. package/lib/__tests__/oauth.test.d.ts +0 -1
  372. package/lib/__tests__/oauth.test.js +0 -109
  373. package/lib/__tests__/parsing.test.d.ts +0 -1
  374. package/lib/__tests__/parsing.test.js +0 -34
  375. package/lib/__tests__/polling.test.d.ts +0 -1
  376. package/lib/__tests__/polling.test.js +0 -76
  377. package/lib/__tests__/process.test.d.ts +0 -1
  378. package/lib/__tests__/process.test.js +0 -89
  379. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  380. package/lib/__tests__/sandboxes.test.js +0 -128
  381. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  382. package/lib/__tests__/serverlessLogs.test.js +0 -163
  383. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  384. package/lib/__tests__/usageTracking.test.js +0 -197
  385. package/lib/__tests__/validation.test.d.ts +0 -1
  386. package/lib/__tests__/validation.test.js +0 -143
  387. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  388. package/lib/__tests__/yargsUtils.test.js +0 -124
  389. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  390. package/lib/app/__tests__/migrate.test.js +0 -638
  391. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  392. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  393. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  394. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  395. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  396. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  397. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  398. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  399. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  400. package/lib/mcp/__tests__/setup.test.js +0 -523
  401. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  402. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  403. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  404. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  405. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  406. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  407. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  408. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  409. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  410. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  411. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  413. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  414. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  415. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  416. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  417. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  418. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  419. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  420. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  421. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  422. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  423. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  424. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  425. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  426. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  427. package/lib/projects/__tests__/components.test.d.ts +0 -1
  428. package/lib/projects/__tests__/components.test.js +0 -440
  429. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  430. package/lib/projects/__tests__/deploy.test.js +0 -231
  431. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  432. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  433. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  434. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  435. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  436. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  437. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  438. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  439. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  440. package/lib/projects/__tests__/projects.test.js +0 -58
  441. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  442. package/lib/projects/__tests__/structure.test.js +0 -210
  443. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  444. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  445. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  446. package/lib/projects/__tests__/upload.test.js +0 -183
  447. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  448. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  449. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  450. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  451. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  452. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  453. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  454. package/lib/projects/create/__tests__/v2.test.js +0 -257
  455. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  456. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  457. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  458. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  459. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  460. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  461. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  462. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  463. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  464. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  465. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  466. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  467. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  469. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  471. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  472. package/lib/theme/__tests__/migrate.test.js +0 -247
  473. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  474. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  475. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  476. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  477. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  478. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  479. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  480. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  481. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  482. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  483. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  484. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  485. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  486. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  487. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  488. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  489. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  490. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  491. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  492. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  493. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  494. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  495. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  496. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  497. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  498. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  499. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  500. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  501. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  503. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  505. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  507. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  509. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  511. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  513. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  515. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  517. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  518. package/mcp-server/utils/__tests__/command.test.js +0 -275
  519. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  520. package/mcp-server/utils/__tests__/content.test.js +0 -164
  521. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  522. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,7 +1,7 @@
1
1
  import { getImportDataRequest } from '@hubspot/local-dev-lib/crm';
2
2
  import { logError } from '../../lib/errorHandlers/index.js';
3
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
3
4
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
4
- import { trackCommandUsage } from '../../lib/usageTracking.js';
5
5
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
6
6
  import { importDataFilePathPrompt } from '../../lib/prompts/importDataFilePathPrompt.js';
7
7
  import { handleImportData, handleTargetTestAccountSelectionFlow, } from '../../lib/importData.js';
@@ -10,8 +10,7 @@ import { commands } from '../../lang/en.js';
10
10
  export const command = 'import-data';
11
11
  export const describe = commands.testAccount.subcommands.importData.describe;
12
12
  async function handler(args) {
13
- const { derivedAccountId, userProvidedAccount, filePath: providedFilePath, skipConfirm, } = args;
14
- trackCommandUsage('crm-import-data', {}, derivedAccountId);
13
+ const { derivedAccountId, userProvidedAccount, filePath: providedFilePath, skipConfirm, exit, } = args;
15
14
  let targetAccountId;
16
15
  try {
17
16
  targetAccountId = await handleTargetTestAccountSelectionFlow(derivedAccountId, userProvidedAccount);
@@ -20,15 +19,15 @@ async function handler(args) {
20
19
  const confirmImportData = skipConfirm ||
21
20
  (await confirmImportDataPrompt(targetAccountId, dataFileNames));
22
21
  if (!confirmImportData) {
23
- process.exit(EXIT_CODES.SUCCESS);
22
+ return exit(EXIT_CODES.SUCCESS);
24
23
  }
25
24
  await handleImportData(targetAccountId, dataFileNames, importRequest);
26
25
  }
27
26
  catch (error) {
28
27
  logError(error);
29
- process.exit(EXIT_CODES.ERROR);
28
+ return exit(EXIT_CODES.ERROR);
30
29
  }
31
- process.exit(EXIT_CODES.SUCCESS);
30
+ return exit(EXIT_CODES.SUCCESS);
32
31
  }
33
32
  function crmImportDataBuilder(yargs) {
34
33
  yargs.example([['$0 test-account import-data']]);
@@ -56,6 +55,6 @@ const crmImportDataCommand = {
56
55
  command,
57
56
  describe,
58
57
  builder,
59
- handler,
58
+ handler: makeYargsHandlerWithUsageTracking('crm-import-data', handler),
60
59
  };
61
60
  export default crmImportDataCommand;
@@ -1,7 +1,7 @@
1
1
  import { isConfigFlagEnabled } from '@hubspot/local-dev-lib/config';
2
2
  import { CONFIG_FLAGS } from '@hubspot/local-dev-lib/constants/config';
3
- import { trackCommandUsage } from '../lib/usageTracking.js';
4
3
  import { EXIT_CODES } from '../lib/enums/exitCodes.js';
4
+ import { makeYargsHandlerWithUsageTracking } from '../lib/yargs/makeYargsHandlerWithUsageTracking.js';
5
5
  import { makeYargsBuilder } from '../lib/yargsUtils.js';
6
6
  import { uiLogger } from '../lib/ui/logger.js';
7
7
  import { commands } from '../lang/en.js';
@@ -14,8 +14,7 @@ import { debugError } from '../lib/errorHandlers/index.js';
14
14
  const command = ['upgrade [version]', 'update [version]'];
15
15
  const describe = commands.upgrade.describe;
16
16
  const handler = async (args) => {
17
- const { version, force, beta, derivedAccountId } = args;
18
- trackCommandUsage('upgrade', {}, derivedAccountId);
17
+ const { version, force, beta, exit } = args;
19
18
  SpinniesManager.init({
20
19
  succeedColor: 'white',
21
20
  });
@@ -27,7 +26,7 @@ const handler = async (args) => {
27
26
  const latestVersion = beta ? nextCliVersion : latestCliVersion;
28
27
  if (!latestVersion) {
29
28
  uiLogger.error(commands.upgrade.errors.unableToDetermineLatestVersion);
30
- return process.exit(EXIT_CODES.ERROR);
29
+ return exit(EXIT_CODES.ERROR);
31
30
  }
32
31
  targetVersion = latestVersion;
33
32
  }
@@ -40,20 +39,20 @@ const handler = async (args) => {
40
39
  else {
41
40
  uiLogger.log(commands.upgrade.alreadyLatest(currentVersion, beta));
42
41
  }
43
- return process.exit(EXIT_CODES.SUCCESS);
42
+ return exit(EXIT_CODES.SUCCESS);
44
43
  }
45
44
  // Check if globally installed
46
45
  const isGlobal = await canCliBeAutoUpgraded();
47
46
  if (!isGlobal) {
48
47
  uiLogger.log(commands.upgrade.autoUpgradeNotAvailable(targetVersion));
49
- return process.exit(EXIT_CODES.SUCCESS);
48
+ return exit(EXIT_CODES.SUCCESS);
50
49
  }
51
50
  // Prompt for confirmation unless --force is used
52
51
  if (!force) {
53
52
  const shouldUpgrade = await confirmPrompt(commands.upgrade.confirmPrompt(currentVersion, targetVersion), { defaultAnswer: true });
54
53
  if (!shouldUpgrade) {
55
54
  uiLogger.log(commands.upgrade.cancelled);
56
- return process.exit(EXIT_CODES.SUCCESS);
55
+ return exit(EXIT_CODES.SUCCESS);
57
56
  }
58
57
  }
59
58
  SpinniesManager.add('upgrade', {
@@ -68,7 +67,7 @@ const handler = async (args) => {
68
67
  });
69
68
  uiLogger.log('');
70
69
  uiLogger.error(commands.upgrade.errors.generic);
71
- return process.exit(EXIT_CODES.ERROR);
70
+ return exit(EXIT_CODES.ERROR);
72
71
  }
73
72
  SpinniesManager.succeed('upgrade', {
74
73
  text: commands.upgrade.success(targetVersion),
@@ -85,7 +84,7 @@ const handler = async (args) => {
85
84
  uiLogger.log('');
86
85
  uiLogger.log(commands.upgrade.autoUpgradeMessage);
87
86
  }
88
- return process.exit(EXIT_CODES.SUCCESS);
87
+ return exit(EXIT_CODES.SUCCESS);
89
88
  };
90
89
  function upgradeBuilder(yargs) {
91
90
  yargs
@@ -113,7 +112,7 @@ const builder = makeYargsBuilder(upgradeBuilder, command, describe, {
113
112
  const upgradeCommand = {
114
113
  command,
115
114
  describe,
116
- handler,
115
+ handler: makeYargsHandlerWithUsageTracking('upgrade', handler),
117
116
  builder,
118
117
  };
119
118
  export default upgradeCommand;
package/lang/en.d.ts CHANGED
@@ -1304,6 +1304,30 @@ export declare const commands: {
1304
1304
  shuttingDown: string;
1305
1305
  };
1306
1306
  };
1307
+ api: {
1308
+ describe: string;
1309
+ verboseDescribe: string;
1310
+ positionals: {
1311
+ endpoint: {
1312
+ describe: string;
1313
+ };
1314
+ };
1315
+ options: {
1316
+ method: {
1317
+ describe: string;
1318
+ };
1319
+ data: {
1320
+ describe: string;
1321
+ };
1322
+ };
1323
+ requestLog: (method: string, url: string) => string;
1324
+ requestBodyLog: (body: string) => string;
1325
+ responseLog: string;
1326
+ errors: {
1327
+ invalidJson: string;
1328
+ statusLine: (status: number, statusText: string) => string;
1329
+ };
1330
+ };
1307
1331
  open: {
1308
1332
  describe: string;
1309
1333
  options: {
@@ -1345,6 +1369,7 @@ export declare const commands: {
1345
1369
  };
1346
1370
  errors: {
1347
1371
  noProjectConfig: string;
1372
+ unsupportedPlatformVersion: string;
1348
1373
  profileExists: (profileName: string) => string;
1349
1374
  invalidTargetAccount: string;
1350
1375
  noAccountsConfigured: string;
@@ -1375,6 +1400,7 @@ export declare const commands: {
1375
1400
  };
1376
1401
  errors: {
1377
1402
  noProjectConfig: string;
1403
+ unsupportedPlatformVersion: string;
1378
1404
  noProfileFound: (profileName: string) => string;
1379
1405
  noProfilesFound: string;
1380
1406
  failedToDeleteProfile: (profileName: string) => string;
@@ -1598,6 +1624,7 @@ export declare const commands: {
1598
1624
  deploy: {
1599
1625
  describe: string;
1600
1626
  deployBuildIdPrompt: string;
1627
+ profileMessage: (profileName: string, accountId: number) => string;
1601
1628
  debug: {
1602
1629
  deploying: (path: string) => string;
1603
1630
  };
@@ -1710,6 +1737,7 @@ export declare const commands: {
1710
1737
  autoDeployDisabled: (deployCommand: string) => string;
1711
1738
  };
1712
1739
  errors: {
1740
+ noProjectConfig: string;
1713
1741
  projectLockedError: string;
1714
1742
  };
1715
1743
  options: {
@@ -1904,6 +1932,83 @@ export declare const commands: {
1904
1932
  noProjectsFound: (accountId: number) => string;
1905
1933
  };
1906
1934
  };
1935
+ info: {
1936
+ describe: string;
1937
+ verboseDescribe: string;
1938
+ project: {
1939
+ title: (name: string) => string;
1940
+ platformVersion: (version: string) => string;
1941
+ id: (id: number) => string;
1942
+ deployedBuild: (buildId: number) => string;
1943
+ autoDeploy: (enabled: boolean) => string;
1944
+ };
1945
+ app: {
1946
+ title: string;
1947
+ name: (name: string) => string;
1948
+ id: (id: number) => string;
1949
+ uid: (uid: string) => string;
1950
+ authType: (authType: string) => string;
1951
+ distributionType: (distributionType: string) => string;
1952
+ };
1953
+ examples: {
1954
+ default: string;
1955
+ json: string;
1956
+ };
1957
+ viewProjectLink: string;
1958
+ componentsHeader: string;
1959
+ labels: {
1960
+ type: string;
1961
+ uid: string;
1962
+ };
1963
+ errors: {
1964
+ noProjectConfig: string;
1965
+ projectNotFound: (projectName: string, accountId: number) => string;
1966
+ noDeployedBuild: string;
1967
+ unsupportedPlatformVersion: (platformVersion: string) => string;
1968
+ };
1969
+ };
1970
+ delete: {
1971
+ describe: string;
1972
+ verboseDescribe: string;
1973
+ warnings: {
1974
+ irreversibleTitle: string;
1975
+ irreversible: string;
1976
+ };
1977
+ prompts: {
1978
+ selectProject: (accountId: number) => string;
1979
+ confirmDelete: (projectName: string, accountId: number) => string;
1980
+ validation: {
1981
+ projectRequired: string;
1982
+ };
1983
+ };
1984
+ logs: {
1985
+ deleting: (projectName: string) => string;
1986
+ deleted: (projectName: string, accountId: number) => string;
1987
+ cancelled: string;
1988
+ componentsToDeleteUnified: (components: {
1989
+ componentType: string;
1990
+ componentId: string;
1991
+ }[]) => string;
1992
+ componentsToDeleteLegacy: (components: string[]) => string;
1993
+ deletingComponents: (projectName: string) => string;
1994
+ componentsDeleted: (projectName: string) => string;
1995
+ unableToDetermineIfComponentsWereDeleted: (projectName: string) => string;
1996
+ installWarning: (installCount: number) => string;
1997
+ installCountUnknown: string;
1998
+ };
1999
+ errors: {
2000
+ noProjectsFound: (accountId: number) => string;
2001
+ projectNotFound: (projectName: string, accountId: number) => string;
2002
+ deleteFailed: (projectName: string) => string;
2003
+ cannotDelete: (projectName: string, reason: string) => string;
2004
+ noPlatformVersion: string;
2005
+ componentDeletionFailed: (projectName: string) => string;
2006
+ };
2007
+ options: {
2008
+ project: string;
2009
+ force: string;
2010
+ };
2011
+ };
1907
2012
  };
1908
2013
  sandbox: {
1909
2014
  describe: string;
@@ -3062,11 +3167,6 @@ export declare const lib: {
3062
3167
  profileTargetAccount: (accountId: number) => string;
3063
3168
  profileVariables: string;
3064
3169
  };
3065
- exitIfUsingProfiles: {
3066
- errors: {
3067
- noProfileSpecified: string;
3068
- };
3069
- };
3070
3170
  loadProfile: {
3071
3171
  errors: {
3072
3172
  noProjectConfig: string;
@@ -3289,6 +3389,9 @@ export declare const lib: {
3289
3389
  pakFailure: string;
3290
3390
  };
3291
3391
  };
3392
+ usageTracking: {
3393
+ transparencyMessage: string;
3394
+ };
3292
3395
  configOptions: {
3293
3396
  enableOrDisableBooleanFieldPrompt: {
3294
3397
  message: (fieldName: string) => string;
@@ -3377,8 +3480,14 @@ export declare const lib: {
3377
3480
  promptUtils: {
3378
3481
  errors: {
3379
3482
  noSelectableChoices: string;
3483
+ userCancelled: string;
3380
3484
  };
3381
3485
  };
3486
+ projectProfilePrompt: {
3487
+ message: string;
3488
+ exitMessage: string;
3489
+ noValidProfilesMessage: string;
3490
+ };
3382
3491
  importDataFilePathPrompt: {
3383
3492
  promptContext: string;
3384
3493
  promptMessage: string;
package/lang/en.js CHANGED
@@ -1320,6 +1320,30 @@ export const commands = {
1320
1320
  shuttingDown: 'Shutting down MCP server...',
1321
1321
  },
1322
1322
  },
1323
+ api: {
1324
+ describe: 'Make an authenticated HTTP request to the HubSpot API.',
1325
+ verboseDescribe: `Make an authenticated HTTP request to any HubSpot API that supports PAKs using your CLI authentication.\n\nThis command is intended for testing and exploration of HubSpot APIs. It uses the authentication credentials configured in the CLI to make requests on your behalf.\n\nThe endpoint should be the API path, e.g. ${chalk.bold('/crm/v3/objects/contacts')}. The request will be authenticated using the account specified by ${uiCommandReference('--account')} or the default account.\n\nNote: The available endpoints depend on the scopes granted to your personal access key. If you receive a 403 error, check that your key includes the required scopes for the endpoint you are trying to reach. ${uiLink('Learn more about the HubSpot API', 'https://developers.hubspot.com/docs/api-reference/latest/overview')}`,
1326
+ positionals: {
1327
+ endpoint: {
1328
+ describe: 'API endpoint path (e.g. /crm/v3/objects/contacts)',
1329
+ },
1330
+ },
1331
+ options: {
1332
+ method: {
1333
+ describe: 'HTTP method to use. Defaults to GET, or POST if --data is provided',
1334
+ },
1335
+ data: {
1336
+ describe: 'JSON-formatted request body for POST, PUT, and PATCH requests',
1337
+ },
1338
+ },
1339
+ requestLog: (method, url) => `${chalk.bold(method)} ${url}`,
1340
+ requestBodyLog: (body) => `Request body: ${body}`,
1341
+ responseLog: 'Response:',
1342
+ errors: {
1343
+ invalidJson: 'The value passed to --data is not valid JSON. Please provide a valid JSON string.',
1344
+ statusLine: (status, statusText) => `${chalk.red(`${status} ${statusText}`)}`,
1345
+ },
1346
+ },
1323
1347
  open: {
1324
1348
  describe: 'Open a HubSpot page in your browser.',
1325
1349
  options: {
@@ -1361,6 +1385,7 @@ export const commands = {
1361
1385
  },
1362
1386
  errors: {
1363
1387
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
1388
+ unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
1364
1389
  profileExists: (profileName) => `Profile ${chalk.bold(profileName)} already exists. Please choose a different name.`,
1365
1390
  invalidTargetAccount: 'Target account is not configured in the CLI',
1366
1391
  noAccountsConfigured: 'No accounts configured in the CLI',
@@ -1391,6 +1416,7 @@ export const commands = {
1391
1416
  },
1392
1417
  errors: {
1393
1418
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
1419
+ unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
1394
1420
  noProfileFound: (profileName) => `No profile with filename ${chalk.bold(profileName)} found in your project.`,
1395
1421
  noProfilesFound: 'No profiles found in your project.',
1396
1422
  failedToDeleteProfile: (profileName) => `Unable to delete profile ${chalk.bold(profileName)}. Please try again.`,
@@ -1614,6 +1640,7 @@ export const commands = {
1614
1640
  deploy: {
1615
1641
  describe: 'Deploy a project build.',
1616
1642
  deployBuildIdPrompt: '[--build] Deploy which build?',
1643
+ profileMessage: (profileName, accountId) => `Deploying with ${chalk.bold(profileName)} profile: ${uiAccountDescription(accountId)}`,
1617
1644
  debug: {
1618
1645
  deploying: (path) => `Deploying project at path: ${path}`,
1619
1646
  },
@@ -1726,6 +1753,7 @@ export const commands = {
1726
1753
  autoDeployDisabled: (deployCommand) => `Automatic deploys are disabled for this project. Run ${uiCommandReference(deployCommand)} to deploy this build.`,
1727
1754
  },
1728
1755
  errors: {
1756
+ noProjectConfig: 'No project detected. Run this command from a project directory.',
1729
1757
  projectLockedError: `Your project is locked. This may mean that another user is running the ${uiCommandReference('hs project dev')} command for this project. If this is you, unlock the project in Projects UI.`,
1730
1758
  },
1731
1759
  options: {
@@ -1927,6 +1955,80 @@ export const commands = {
1927
1955
  noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
1928
1956
  },
1929
1957
  },
1958
+ info: {
1959
+ describe: 'Display information about a project, its app, and its components',
1960
+ verboseDescribe: `Display information about a project, its app, and its components\n\nShows the project's platform version, deployed build ID, auto-deploy status, app metadata, and a list of components.\n\nRun ${uiCommandReference('hs project info --json')} to output the result as JSON for scripting.`,
1961
+ project: {
1962
+ title: (name) => `Project: ${name}`,
1963
+ platformVersion: (version) => `Platform Version: ${version}`,
1964
+ id: (id) => `Project ID: ${id}`,
1965
+ deployedBuild: (buildId) => `Deployed Build: #${buildId}`,
1966
+ autoDeploy: (enabled) => `Auto-deploy: ${enabled ? 'Enabled' : 'Disabled'}`,
1967
+ },
1968
+ app: {
1969
+ title: 'App',
1970
+ name: (name) => `Name: ${name}`,
1971
+ id: (id) => `App ID: ${id}`,
1972
+ uid: (uid) => `UID: ${uid}`,
1973
+ authType: (authType) => `Auth Type: ${authType}`,
1974
+ distributionType: (distributionType) => `Distribution: ${distributionType}`,
1975
+ },
1976
+ examples: {
1977
+ default: 'Display project information',
1978
+ json: 'Output as JSON for scripting',
1979
+ },
1980
+ viewProjectLink: 'View project in HubSpot',
1981
+ componentsHeader: 'Components',
1982
+ labels: {
1983
+ type: 'Type',
1984
+ uid: 'UID',
1985
+ },
1986
+ errors: {
1987
+ noProjectConfig: `No project found in this directory.\n\nRun ${uiCommandReference('hs project create')} to start a new project, or change to a directory containing hsproject.json.`,
1988
+ projectNotFound: (projectName, accountId) => `Project "${projectName}" was not found in account ${uiAccountDescription(accountId)}. Make sure the project has been uploaded at least once.`,
1989
+ noDeployedBuild: `This project has not been deployed yet.\n\nRun ${uiCommandReference('hs project deploy')} to deploy your project.`,
1990
+ unsupportedPlatformVersion: (platformVersion) => `This command is not supported for platform version ${chalk.bold(platformVersion)}. Please upgrade to 2025.2 or later.`,
1991
+ },
1992
+ },
1993
+ delete: {
1994
+ describe: 'Delete a project from the current target account',
1995
+ verboseDescribe: `Delete a project from the current target account\n\nThis will permanently delete the project, all deployed components, and any app installations associated with it. Your local project files will not be affected.`,
1996
+ warnings: {
1997
+ irreversibleTitle: 'Warning: This will permanently delete your project',
1998
+ irreversible: 'Deleting this project will also delete all deployed components and app installations. This action cannot be undone. Your local project files will not be affected.',
1999
+ },
2000
+ prompts: {
2001
+ selectProject: (accountId) => `Select a project to delete in ${uiAccountDescription(accountId)}`,
2002
+ confirmDelete: (projectName, accountId) => `[--force] Delete ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}? This cannot be undone.`,
2003
+ validation: {
2004
+ projectRequired: 'Please select a project to delete',
2005
+ },
2006
+ },
2007
+ logs: {
2008
+ deleting: (projectName) => `Deleting project ${chalk.bold(projectName)}...`,
2009
+ deleted: (projectName, accountId) => `Deleted project ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}`,
2010
+ cancelled: 'Deletion cancelled',
2011
+ componentsToDeleteUnified: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c.componentId)} (${mapToUserFriendlyName(c.componentType)})`).join('\n')}`,
2012
+ componentsToDeleteLegacy: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c)}`).join('\n')}`,
2013
+ deletingComponents: (projectName) => `Deleting deployed components from ${chalk.bold(projectName)}...`,
2014
+ componentsDeleted: (projectName) => `Deleted deployed components from ${chalk.bold(projectName)}`,
2015
+ unableToDetermineIfComponentsWereDeleted: (projectName) => `Unable to determine if components were successfully deleted from ${chalk.bold(projectName)}. Please try again.`,
2016
+ installWarning: (installCount) => `This project has ${chalk.bold(String(installCount))} active app ${installCount === 1 ? 'installation' : 'installations'} that will be deleted.`,
2017
+ installCountUnknown: 'Unable to determine the number of active app installations for this project.',
2018
+ },
2019
+ errors: {
2020
+ noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
2021
+ projectNotFound: (projectName, accountId) => `Project ${chalk.bold(projectName)} not found in ${uiAccountDescription(accountId)}`,
2022
+ deleteFailed: (projectName) => `Failed to delete project ${chalk.bold(projectName)}. Run with --debug for details or try again.`,
2023
+ cannotDelete: (projectName, reason) => `Cannot delete project ${chalk.bold(projectName)}: ${reason}`,
2024
+ noPlatformVersion: 'Unable to determine platform version for project',
2025
+ componentDeletionFailed: (projectName) => `Failed to delete deployed components from ${chalk.bold(projectName)}. The project was not deleted.`,
2026
+ },
2027
+ options: {
2028
+ project: 'name of the project to delete',
2029
+ force: 'skip confirmation prompt',
2030
+ },
2031
+ },
1930
2032
  },
1931
2033
  sandbox: {
1932
2034
  describe: 'Commands for managing sandboxes.',
@@ -3085,11 +3187,6 @@ export const lib = {
3085
3187
  profileTargetAccount: (accountId) => `Targeting ${uiAccountDescription(accountId)}`,
3086
3188
  profileVariables: 'Profile variables',
3087
3189
  },
3088
- exitIfUsingProfiles: {
3089
- errors: {
3090
- noProfileSpecified: `This project is configured to use profiles, but no profile was specified. Target a profile using the ${uiCommandReference('--profile')} flag.`,
3091
- },
3092
- },
3093
3190
  loadProfile: {
3094
3191
  errors: {
3095
3192
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
@@ -3312,6 +3409,9 @@ export const lib = {
3312
3409
  pakFailure: 'Failed to generate personal access key for developer test account',
3313
3410
  },
3314
3411
  },
3412
+ usageTracking: {
3413
+ transparencyMessage: `HubSpot CLI collects anonymous usage data to improve the product. Run ${uiCommandReference('hs config set --enable-usage-tracking=false', false)} to opt out.\n`,
3414
+ },
3315
3415
  configOptions: {
3316
3416
  enableOrDisableBooleanFieldPrompt: {
3317
3417
  message: (fieldName) => `Choose to enable or disable ${fieldName}`,
@@ -3400,8 +3500,14 @@ export const lib = {
3400
3500
  promptUtils: {
3401
3501
  errors: {
3402
3502
  noSelectableChoices: 'Exiting prompt because no selectable choices are available',
3503
+ userCancelled: 'User cancelled prompt',
3403
3504
  },
3404
3505
  },
3506
+ projectProfilePrompt: {
3507
+ message: '[--profile] This project is configured to use profiles. Select a profile to use:',
3508
+ exitMessage: `This project is configured to use profiles, but no profile was specified. Try again using ${uiCommandReference('--profile')}`,
3509
+ noValidProfilesMessage: 'There are no valid profiles in this project. Ensure the accounts they are targeting are authenticated and try again.',
3510
+ },
3405
3511
  importDataFilePathPrompt: {
3406
3512
  promptContext: `To view the JSON schema for data imports, visit ${uiLink('the docs', 'https://developers.hubspot.com/docs/guides/api/crm/imports')}`,
3407
3513
  promptMessage: '[--file-path] Select the JSON file that will be used to import your data.',
@@ -3,7 +3,7 @@ import { getAccessToken, updateConfigWithAccessToken, } from '@hubspot/local-dev
3
3
  import { toKebabCase } from '@hubspot/local-dev-lib/text';
4
4
  import { handleMerge, handleMigration } from './configMigrate.js';
5
5
  import { debugError, logError } from './errorHandlers/index.js';
6
- import { PromptExitError } from './errors/PromptExitError.js';
6
+ import { isPromptExitError } from './errors/PromptExitError.js';
7
7
  import { personalAccessKeyPrompt } from './prompts/personalAccessKeyPrompt.js';
8
8
  import { cliAccountNamePrompt } from './prompts/accountNamePrompt.js';
9
9
  import { setAsDefaultAccountPrompt } from './prompts/setAsDefaultAccountPrompt.js';
@@ -37,7 +37,7 @@ async function updateConfigWithNewAccount(env, configAlreadyExists, providedPers
37
37
  return updatedConfig;
38
38
  }
39
39
  catch (e) {
40
- if (e instanceof PromptExitError) {
40
+ if (isPromptExitError(e)) {
41
41
  throw e;
42
42
  }
43
43
  debugError(e);
@@ -4,7 +4,7 @@ import { uiLogger } from './ui/logger.js';
4
4
  import { createDeveloperTestAccount, fetchDeveloperTestAccountGateSyncStatus, generateDeveloperTestAccountPersonalAccessKey, } from '@hubspot/local-dev-lib/api/developerTestAccounts';
5
5
  import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
6
6
  import { createV2Sandbox, getSandboxPersonalAccessKey, } from '@hubspot/local-dev-lib/api/sandboxHubs';
7
- import { PromptExitError } from './errors/PromptExitError.js';
7
+ import { isPromptExitError } from './errors/PromptExitError.js';
8
8
  import { personalAccessKeyPrompt } from './prompts/personalAccessKeyPrompt.js';
9
9
  import { createDeveloperTestAccountConfigPrompt } from './prompts/createDeveloperTestAccountConfigPrompt.js';
10
10
  import { cliAccountNamePrompt } from './prompts/accountNamePrompt.js';
@@ -128,7 +128,7 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
128
128
  await saveAccountToConfig(developerTestAccountId, testAccountName, env, developerTestAccountPersonalAccessKey);
129
129
  }
130
130
  catch (err) {
131
- if (err instanceof PromptExitError) {
131
+ if (isPromptExitError(err)) {
132
132
  throw err;
133
133
  }
134
134
  logError(err);
@@ -174,7 +174,7 @@ export async function buildV2Sandbox(sandboxName, parentAccountConfig, sandboxTy
174
174
  await saveAccountToConfig(sandbox.sandboxHubId, sandboxName, env, pak, force);
175
175
  }
176
176
  catch (err) {
177
- if (err instanceof PromptExitError) {
177
+ if (isPromptExitError(err)) {
178
178
  throw err;
179
179
  }
180
180
  logError(err);
@@ -1,4 +1,4 @@
1
- import { prefixOptions } from '../ui/spinniesUtils.js';
1
+ import { getLabels } from '@hubspot/local-dev-lib/logger';
2
2
  import chalk from 'chalk';
3
3
  import { helpers } from '../interpolation.js';
4
4
  import { uiAccountDescription } from '../ui/index.js';
@@ -10,11 +10,11 @@ export class Diagnosis {
10
10
  errorCount = 0;
11
11
  warningCount = 0;
12
12
  constructor({ diagnosticInfo, accountId }) {
13
- const { succeedPrefix, failPrefix } = prefixOptions({});
13
+ const labels = getLabels();
14
14
  this.prefixes = {
15
- success: chalk.green(succeedPrefix),
16
- error: chalk.red(failPrefix),
17
- warning: helpers.orange('!'),
15
+ success: chalk.green(labels.success),
16
+ error: chalk.red(labels.error),
17
+ warning: helpers.orange(labels.warning),
18
18
  };
19
19
  this.diagnosis = {
20
20
  cli: {
@@ -7,11 +7,12 @@ import util from 'util';
7
7
  import { isProjectValidationError } from '../errors/ProjectValidationError.js';
8
8
  export function logError(error, context) {
9
9
  debugError(error, context);
10
- if (isProjectValidationError(error)) {
11
- uiLogger.error(error.message);
10
+ // This should be right after debugError. Add anything else below it
11
+ if (shouldSuppressError(error, context)) {
12
12
  return;
13
13
  }
14
- if (shouldSuppressError(error, context)) {
14
+ if (isProjectValidationError(error)) {
15
+ uiLogger.error(error.message);
15
16
  return;
16
17
  }
17
18
  if (isHubSpotHttpError(error)) {
@@ -3,6 +3,7 @@ import { uiLogger } from '../ui/logger.js';
3
3
  import { PLATFORM_VERSION_ERROR_TYPES } from '../constants.js';
4
4
  import { lib } from '../../lang/en.js';
5
5
  import { uiAccountDescription, uiLine, uiLink } from '../ui/index.js';
6
+ import { isPromptExitError } from '../errors/PromptExitError.js';
6
7
  function createPlatformVersionError(err, subCategory) {
7
8
  let translationKey = 'unspecifiedPlatformVersion';
8
9
  let platformVersion = 'unspecified platformVersion';
@@ -27,6 +28,9 @@ function createPlatformVersionError(err, subCategory) {
27
28
  uiLine();
28
29
  }
29
30
  export function shouldSuppressError(err, context) {
31
+ if (isPromptExitError(err)) {
32
+ return true;
33
+ }
30
34
  if (isMissingScopeError(err)) {
31
35
  uiLogger.error(lib.errorHandlers.suppressErrors.missingScopeError(context?.request || 'request', context?.accountId ? uiAccountDescription(context.accountId) : ''));
32
36
  return true;
@@ -1,4 +1,6 @@
1
+ import { ExitCode } from '../../types/Yargs.js';
1
2
  export declare class PromptExitError extends Error {
2
- exitCode: number;
3
- constructor(message: string, exitCode: number);
3
+ exitCode: ExitCode;
4
+ constructor(message: string, exitCode: ExitCode);
4
5
  }
6
+ export declare function isPromptExitError(e: unknown): e is PromptExitError;
@@ -6,3 +6,6 @@ export class PromptExitError extends Error {
6
6
  this.exitCode = exitCode;
7
7
  }
8
8
  }
9
+ export function isPromptExitError(e) {
10
+ return e instanceof PromptExitError;
11
+ }
package/lib/process.d.ts CHANGED
@@ -8,6 +8,6 @@ interface KeyPress {
8
8
  export declare const TERMINATION_SIGNALS: string[];
9
9
  export declare function handleExit(callback: (onTerminate: {
10
10
  isSIGHUP: boolean;
11
- }) => void): void;
11
+ }) => void): () => void;
12
12
  export declare function handleKeypress(callback: (onKeyPress: KeyPress) => void): void;
13
13
  export {};
package/lib/process.js CHANGED
@@ -16,9 +16,9 @@ export const TERMINATION_SIGNALS = [
16
16
  ];
17
17
  export function handleExit(callback) {
18
18
  let exitInProgress = false;
19
+ const listeners = [];
19
20
  TERMINATION_SIGNALS.forEach(signal => {
20
- process.removeAllListeners(signal);
21
- process.on(signal, async (...args) => {
21
+ const handler = async (...args) => {
22
22
  // Prevent duplicate exit handling
23
23
  if (!exitInProgress) {
24
24
  exitInProgress = true;
@@ -38,8 +38,15 @@ export function handleExit(callback) {
38
38
  }
39
39
  await callback({ isSIGHUP });
40
40
  }
41
- });
41
+ };
42
+ listeners.push({ signal, handler });
43
+ process.on(signal, handler);
42
44
  });
45
+ return () => {
46
+ for (const { signal, handler } of listeners) {
47
+ process.removeListener(signal, handler);
48
+ }
49
+ };
43
50
  }
44
51
  export function handleKeypress(callback) {
45
52
  readline.createInterface(process.stdin, process.stdout);
@@ -0,0 +1,13 @@
1
+ export declare const DELETION_POLL_TIMEOUT_MS: number;
2
+ export declare const DELETION_DEPLOY_SUCCESS_STATES: string[];
3
+ export declare const DELETION_DEPLOY_ERROR_STATES: ("FAILURE" | "ERROR" | "REVERTED")[];
4
+ export declare function resolveProjectName(accountId: number, projectArg: string | undefined): Promise<string>;
5
+ export declare function fetchProjectInstallCount(accountId: number, projectId: number): Promise<number>;
6
+ export declare function checkDeployedComponents(accountId: number, projectName: string): Promise<{
7
+ platformVersion: string;
8
+ hasUnifiedComponents: boolean;
9
+ projectId: number;
10
+ }>;
11
+ export declare function deleteDeployedComponents(accountId: number, projectName: string): Promise<void>;
12
+ export declare function handleProjectDeletion(accountId: number, projectName: string): Promise<void>;
13
+ export declare function confirmDeletion(projectName: string, accountId: number, projectId: number): Promise<void>;