@hubspot/cli 7.8.12-experimental.0 → 7.9.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 (451) hide show
  1. package/bin/cli.js +31 -25
  2. package/commands/__tests__/auth.test.js +5 -0
  3. package/commands/__tests__/cms.test.js +44 -1
  4. package/commands/__tests__/customObject.test.js +22 -1
  5. package/commands/__tests__/doctor.test.js +16 -16
  6. package/commands/__tests__/project.test.js +2 -0
  7. package/commands/account/auth.js +1 -0
  8. package/commands/account/clean.js +18 -27
  9. package/commands/account/createOverride.js +13 -31
  10. package/commands/account/info.js +20 -31
  11. package/commands/account/list.js +16 -22
  12. package/commands/account/remove.js +12 -20
  13. package/commands/account/removeOverride.js +11 -21
  14. package/commands/account/rename.js +6 -9
  15. package/commands/account/use.js +12 -26
  16. package/commands/account.js +2 -2
  17. package/commands/app/__tests__/migrate.test.js +5 -5
  18. package/commands/app/migrate.js +13 -18
  19. package/commands/app.js +1 -6
  20. package/commands/auth.d.ts +1 -0
  21. package/commands/auth.js +17 -7
  22. package/commands/{__tests__/remove.test.js → cms/__tests__/delete.test.js} +8 -8
  23. package/commands/{__tests__ → cms/__tests__}/fetch.test.js +3 -3
  24. package/commands/{__tests__ → cms/__tests__}/function.test.js +7 -3
  25. package/commands/{__tests__ → cms/__tests__}/lint.test.js +3 -3
  26. package/commands/{__tests__ → cms/__tests__}/list.test.js +3 -3
  27. package/commands/{__tests__ → cms/__tests__}/mv.test.js +3 -3
  28. package/commands/{__tests__ → cms/__tests__}/theme.test.js +9 -2
  29. package/commands/cms/app/create.d.ts +9 -0
  30. package/commands/cms/app/create.js +82 -0
  31. package/commands/cms/app.d.ts +3 -0
  32. package/commands/cms/app.js +17 -0
  33. package/commands/cms/convertFields.js +7 -9
  34. package/commands/cms/delete.d.ts +6 -0
  35. package/commands/cms/delete.js +43 -0
  36. package/commands/cms/fetch.d.ts +12 -0
  37. package/commands/cms/fetch.js +79 -0
  38. package/commands/{__tests__ → cms/function/__tests__}/logs.test.js +4 -5
  39. package/commands/cms/function/create.d.ts +12 -0
  40. package/commands/cms/function/create.js +84 -0
  41. package/commands/cms/function/deploy.d.ts +6 -0
  42. package/commands/cms/function/deploy.js +89 -0
  43. package/commands/cms/function/list.d.ts +6 -0
  44. package/commands/cms/function/list.js +60 -0
  45. package/commands/cms/function/logs.d.ts +10 -0
  46. package/commands/cms/function/logs.js +135 -0
  47. package/commands/cms/function/server.d.ts +10 -0
  48. package/commands/cms/function/server.js +69 -0
  49. package/commands/cms/function.d.ts +3 -0
  50. package/commands/cms/function.js +27 -0
  51. package/commands/cms/getReactModule.js +9 -14
  52. package/commands/cms/lighthouseScore.js +33 -36
  53. package/commands/cms/lint.d.ts +6 -0
  54. package/commands/cms/lint.js +83 -0
  55. package/commands/cms/list.d.ts +6 -0
  56. package/commands/cms/list.js +96 -0
  57. package/commands/cms/module/create.d.ts +11 -0
  58. package/commands/cms/module/create.js +84 -0
  59. package/commands/cms/module/marketplace-validate.d.ts +6 -0
  60. package/commands/cms/module/marketplace-validate.js +45 -0
  61. package/commands/cms/module.d.ts +3 -0
  62. package/commands/cms/module.js +17 -0
  63. package/commands/cms/mv.d.ts +7 -0
  64. package/commands/cms/mv.js +60 -0
  65. package/commands/cms/template/create.d.ts +9 -0
  66. package/commands/cms/template/create.js +72 -0
  67. package/commands/cms/template.d.ts +3 -0
  68. package/commands/cms/template.js +17 -0
  69. package/commands/{theme → cms/theme}/__tests__/marketplace-validate.test.js +2 -2
  70. package/commands/{theme → cms/theme}/__tests__/preview.test.js +2 -2
  71. package/commands/cms/theme/create.d.ts +6 -0
  72. package/commands/cms/theme/create.js +58 -0
  73. package/commands/cms/theme/generate-selectors.d.ts +6 -0
  74. package/commands/cms/theme/generate-selectors.js +171 -0
  75. package/commands/cms/theme/marketplace-validate.d.ts +6 -0
  76. package/commands/cms/theme/marketplace-validate.js +46 -0
  77. package/commands/cms/theme/preview.d.ts +12 -0
  78. package/commands/cms/theme/preview.js +224 -0
  79. package/commands/cms/theme.d.ts +3 -0
  80. package/commands/cms/theme.js +25 -0
  81. package/commands/cms/upload.d.ts +12 -0
  82. package/commands/cms/upload.js +212 -0
  83. package/commands/cms/watch.d.ts +14 -0
  84. package/commands/cms/watch.js +138 -0
  85. package/commands/cms/webpack/create.d.ts +6 -0
  86. package/commands/cms/webpack/create.js +58 -0
  87. package/commands/cms/webpack.d.ts +3 -0
  88. package/commands/cms/webpack.js +17 -0
  89. package/commands/cms.js +28 -2
  90. package/commands/completion.js +3 -3
  91. package/commands/config/set.d.ts +1 -1
  92. package/commands/config/set.js +64 -36
  93. package/commands/config.js +2 -2
  94. package/commands/create.js +6 -4
  95. package/commands/customObject/{schema/__tests__/create.test.js → __tests__/createSchema.test.js} +5 -5
  96. package/commands/customObject/{schema/__tests__/delete.test.js → __tests__/deleteSchema.test.js} +5 -5
  97. package/commands/customObject/{schema/__tests__/fetch-all.test.js → __tests__/fetch-all-schemas.test.js} +5 -5
  98. package/commands/customObject/{schema/__tests__/fetch.test.js → __tests__/fetchSchema.test.js} +5 -5
  99. package/commands/customObject/{schema/__tests__/list.test.js → __tests__/listSchemas.test.js} +5 -5
  100. package/commands/customObject/{schema/__tests__/update.test.js → __tests__/updateSchema.test.js} +5 -5
  101. package/commands/customObject/create.js +10 -12
  102. package/commands/customObject/createSchema.d.ts +6 -0
  103. package/commands/customObject/createSchema.js +56 -0
  104. package/commands/customObject/deleteSchema.d.ts +7 -0
  105. package/commands/customObject/deleteSchema.js +69 -0
  106. package/commands/customObject/fetchAllSchemas.d.ts +6 -0
  107. package/commands/customObject/fetchAllSchemas.js +57 -0
  108. package/commands/customObject/fetchSchema.d.ts +7 -0
  109. package/commands/customObject/fetchSchema.js +67 -0
  110. package/commands/customObject/listSchemas.d.ts +4 -0
  111. package/commands/customObject/listSchemas.js +35 -0
  112. package/commands/customObject/schema/create.d.ts +4 -6
  113. package/commands/customObject/schema/create.js +13 -38
  114. package/commands/customObject/schema/delete.d.ts +4 -7
  115. package/commands/customObject/schema/delete.js +15 -50
  116. package/commands/customObject/schema/fetch-all.d.ts +4 -6
  117. package/commands/customObject/schema/fetch-all.js +14 -40
  118. package/commands/customObject/schema/fetch.d.ts +4 -7
  119. package/commands/customObject/schema/fetch.js +14 -49
  120. package/commands/customObject/schema/list.d.ts +4 -4
  121. package/commands/customObject/schema/list.js +10 -19
  122. package/commands/customObject/schema/update.d.ts +4 -7
  123. package/commands/customObject/schema/update.js +15 -50
  124. package/commands/customObject/schema.js +5 -3
  125. package/commands/customObject/updateSchema.d.ts +7 -0
  126. package/commands/customObject/updateSchema.js +71 -0
  127. package/commands/customObject.js +22 -8
  128. package/commands/doctor.js +8 -11
  129. package/commands/feedback.js +7 -12
  130. package/commands/fetch.d.ts +4 -12
  131. package/commands/fetch.js +20 -47
  132. package/commands/filemanager/fetch.js +7 -7
  133. package/commands/filemanager/upload.js +15 -34
  134. package/commands/filemanager.js +2 -2
  135. package/commands/function/deploy.d.ts +4 -6
  136. package/commands/function/deploy.js +14 -89
  137. package/commands/function/list.d.ts +4 -6
  138. package/commands/function/list.js +14 -40
  139. package/commands/function/server.d.ts +4 -10
  140. package/commands/function/server.js +22 -31
  141. package/commands/function.d.ts +2 -4
  142. package/commands/function.js +25 -14
  143. package/commands/getStarted.js +2 -2
  144. package/commands/hubdb/clear.js +7 -15
  145. package/commands/hubdb/create.js +9 -15
  146. package/commands/hubdb/delete.js +8 -15
  147. package/commands/hubdb/fetch.js +6 -9
  148. package/commands/hubdb.d.ts +1 -1
  149. package/commands/hubdb.js +2 -2
  150. package/commands/init.js +2 -3
  151. package/commands/lint.d.ts +4 -6
  152. package/commands/lint.js +13 -65
  153. package/commands/list.d.ts +4 -6
  154. package/commands/list.js +14 -81
  155. package/commands/logs.d.ts +4 -10
  156. package/commands/logs.js +25 -94
  157. package/commands/module/marketplace-validate.d.ts +4 -6
  158. package/commands/module/marketplace-validate.js +15 -27
  159. package/commands/module.d.ts +2 -2
  160. package/commands/module.js +17 -15
  161. package/commands/mv.d.ts +4 -7
  162. package/commands/mv.js +14 -51
  163. package/commands/open.js +5 -5
  164. package/commands/project/__tests__/add.test.js +15 -13
  165. package/commands/project/__tests__/deploy.test.js +3 -4
  166. package/commands/project/__tests__/devUnifiedFlow.test.js +32 -0
  167. package/commands/project/__tests__/installDeps.test.js +8 -8
  168. package/commands/project/__tests__/list.test.js +31 -0
  169. package/commands/project/__tests__/logs.test.js +1 -1
  170. package/commands/project/__tests__/migrate.test.js +6 -5
  171. package/commands/project/__tests__/migrateApp.test.js +2 -5
  172. package/commands/project/__tests__/validate.test.js +98 -0
  173. package/commands/project/add.d.ts +2 -2
  174. package/commands/project/add.js +6 -5
  175. package/commands/project/cloneApp.js +14 -19
  176. package/commands/project/create.js +1 -2
  177. package/commands/project/deploy.js +3 -3
  178. package/commands/project/dev/deprecatedFlow.js +9 -18
  179. package/commands/project/dev/index.js +19 -17
  180. package/commands/project/dev/unifiedFlow.js +11 -4
  181. package/commands/project/download.js +15 -15
  182. package/commands/project/installDeps.d.ts +2 -2
  183. package/commands/project/installDeps.js +9 -8
  184. package/commands/project/list.d.ts +4 -0
  185. package/commands/project/list.js +62 -0
  186. package/commands/project/listBuilds.js +11 -20
  187. package/commands/project/logs.js +21 -24
  188. package/commands/project/migrate.js +5 -2
  189. package/commands/project/migrateApp.js +9 -15
  190. package/commands/project/open.js +6 -13
  191. package/commands/project/upload.d.ts +2 -2
  192. package/commands/project/upload.js +17 -26
  193. package/commands/project/validate.js +6 -6
  194. package/commands/project/watch.js +13 -22
  195. package/commands/project.js +4 -2
  196. package/commands/remove.d.ts +4 -6
  197. package/commands/remove.js +12 -24
  198. package/commands/sandbox/__tests__/create.test.js +5 -5
  199. package/commands/sandbox/create.js +22 -32
  200. package/commands/sandbox/delete.js +38 -63
  201. package/commands/sandbox.js +2 -2
  202. package/commands/secret/addSecret.js +7 -17
  203. package/commands/secret/deleteSecret.js +10 -20
  204. package/commands/secret/listSecret.js +8 -10
  205. package/commands/secret/updateSecret.js +9 -17
  206. package/commands/secret.js +2 -2
  207. package/commands/testAccount/__tests__/delete.test.js +2 -4
  208. package/commands/testAccount/create.js +2 -5
  209. package/commands/testAccount/delete.d.ts +4 -3
  210. package/commands/testAccount/delete.js +155 -14
  211. package/commands/theme/generate-selectors.d.ts +4 -6
  212. package/commands/theme/generate-selectors.js +14 -152
  213. package/commands/theme/marketplace-validate.d.ts +4 -6
  214. package/commands/theme/marketplace-validate.js +14 -25
  215. package/commands/theme/preview.d.ts +4 -12
  216. package/commands/theme/preview.js +18 -183
  217. package/commands/theme.d.ts +2 -2
  218. package/commands/theme.js +19 -13
  219. package/commands/upload.d.ts +4 -12
  220. package/commands/upload.js +19 -169
  221. package/commands/watch.d.ts +4 -14
  222. package/commands/watch.js +23 -88
  223. package/lang/en.d.ts +863 -542
  224. package/lang/en.js +912 -595
  225. package/lang/en.lyaml +4 -4
  226. package/lib/__tests__/buildAccount.test.js +4 -3
  227. package/lib/__tests__/commonOpts.test.js +1 -1
  228. package/lib/__tests__/dependencyManagement.test.js +1 -1
  229. package/lib/__tests__/developerTestAccounts.test.js +3 -3
  230. package/lib/__tests__/npm.test.js +1 -1
  231. package/lib/__tests__/oauth.test.js +4 -4
  232. package/lib/__tests__/process.test.js +10 -5
  233. package/lib/__tests__/sandboxSync.test.js +8 -8
  234. package/lib/__tests__/sandboxes.test.js +8 -8
  235. package/lib/__tests__/serverlessLogs.test.js +1 -1
  236. package/lib/__tests__/usageTracking.test.js +5 -5
  237. package/lib/__tests__/validation.test.js +2 -1
  238. package/lib/__tests__/yargsUtils.test.js +83 -9
  239. package/lib/app/__tests__/migrate.test.js +5 -5
  240. package/lib/app/__tests__/migrate_legacy.test.js +1 -1
  241. package/lib/app/migrate.js +1 -1
  242. package/lib/app/migrate_legacy.js +20 -24
  243. package/lib/buildAccount.d.ts +2 -2
  244. package/lib/buildAccount.js +32 -64
  245. package/lib/commonOpts.d.ts +1 -1
  246. package/lib/commonOpts.js +25 -22
  247. package/lib/configMigrate.js +88 -9
  248. package/lib/configOptions.js +7 -0
  249. package/lib/constants.d.ts +15 -1
  250. package/lib/constants.js +19 -1
  251. package/lib/dependencyManagement.js +9 -27
  252. package/lib/developerTestAccounts.js +9 -23
  253. package/lib/doctor/Diagnosis.js +11 -23
  254. package/lib/doctor/DiagnosticInfoBuilder.js +12 -11
  255. package/lib/doctor/Doctor.js +42 -90
  256. package/lib/doctor/__tests__/Doctor.test.js +4 -4
  257. package/lib/errorHandlers/index.js +12 -20
  258. package/lib/errorHandlers/suppressError.js +11 -18
  259. package/lib/generateSelectors.js +1 -1
  260. package/lib/lang.js +6 -5
  261. package/lib/links.js +4 -4
  262. package/lib/middleware/__test__/commandTargetingUtils.test.js +99 -0
  263. package/lib/middleware/__test__/configMiddleware.test.js +11 -11
  264. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +6 -8
  265. package/lib/middleware/autoUpdateMiddleware.d.ts +2 -1
  266. package/lib/middleware/autoUpdateMiddleware.js +12 -2
  267. package/lib/middleware/commandTargetingUtils.d.ts +8 -0
  268. package/lib/middleware/commandTargetingUtils.js +74 -0
  269. package/lib/middleware/configMiddleware.d.ts +1 -1
  270. package/lib/middleware/configMiddleware.js +21 -81
  271. package/lib/middleware/gitMiddleware.js +5 -1
  272. package/lib/middleware/notificationsMiddleware.js +5 -11
  273. package/lib/middleware/yargsChecksMiddleware.js +6 -9
  274. package/lib/npm.js +2 -2
  275. package/lib/oauth.js +5 -5
  276. package/lib/process.js +5 -4
  277. package/lib/projectProfiles.d.ts +1 -1
  278. package/lib/projectProfiles.js +2 -10
  279. package/lib/projects/__tests__/AppDevModeInterface.test.js +101 -135
  280. package/lib/projects/__tests__/DevServerManager.test.js +183 -0
  281. package/lib/projects/__tests__/LocalDevProcess.test.js +6 -5
  282. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +76 -45
  283. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +1 -0
  284. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +161 -0
  285. package/lib/projects/__tests__/deploy.test.js +9 -9
  286. package/lib/projects/__tests__/localDevProjectHelpers.test.js +2 -0
  287. package/lib/projects/__tests__/platformVersion.test.js +8 -8
  288. package/lib/projects/__tests__/projects.test.js +12 -12
  289. package/lib/projects/__tests__/structure.test.js +3 -3
  290. package/lib/projects/__tests__/upload.test.d.ts +1 -0
  291. package/lib/projects/__tests__/upload.test.js +82 -0
  292. package/lib/projects/add/__tests__/legacyAddComponent.test.js +6 -6
  293. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +1 -0
  294. package/lib/projects/add/__tests__/{v3AddComponent.test.js → v2AddComponent.test.js} +39 -39
  295. package/lib/projects/add/{v3AddComponent.d.ts → v2AddComponent.d.ts} +1 -1
  296. package/lib/projects/add/{v3AddComponent.js → v2AddComponent.js} +5 -5
  297. package/lib/projects/create/__tests__/legacy.test.js +5 -5
  298. package/lib/projects/create/__tests__/v2.test.d.ts +1 -0
  299. package/lib/projects/create/__tests__/{v3.test.js → v2.test.js} +3 -3
  300. package/lib/projects/create/index.js +4 -4
  301. package/lib/projects/create/legacy.js +2 -2
  302. package/lib/projects/create/{v3.d.ts → v2.d.ts} +3 -3
  303. package/lib/projects/create/{v3.js → v2.js} +5 -5
  304. package/lib/projects/deploy.d.ts +1 -1
  305. package/lib/projects/deploy.js +2 -2
  306. package/lib/projects/localDev/AppDevModeInterface.d.ts +11 -3
  307. package/lib/projects/localDev/AppDevModeInterface.js +128 -115
  308. package/lib/projects/localDev/DevServerManager.d.ts +10 -29
  309. package/lib/projects/localDev/DevServerManager.js +20 -76
  310. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +40 -0
  311. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +120 -0
  312. package/lib/projects/localDev/LocalDevLogger.js +10 -11
  313. package/lib/projects/localDev/{LocalDevManager.js → LocalDevManager_DEPRECATED.js} +10 -11
  314. package/lib/projects/localDev/LocalDevProcess.js +3 -2
  315. package/lib/projects/localDev/LocalDevState.d.ts +3 -0
  316. package/lib/projects/localDev/LocalDevState.js +9 -0
  317. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -1
  318. package/lib/projects/localDev/LocalDevWebsocketServer.js +46 -16
  319. package/lib/projects/localDev/UIExtensionsDevModeInterface.d.ts +13 -0
  320. package/lib/projects/localDev/UIExtensionsDevModeInterface.js +37 -0
  321. package/lib/projects/localDev/helpers/account.d.ts +1 -1
  322. package/lib/projects/localDev/helpers/account.js +2 -2
  323. package/lib/projects/localDev/helpers/process.d.ts +1 -0
  324. package/lib/projects/localDev/helpers/process.js +15 -0
  325. package/lib/projects/localDev/helpers/project.d.ts +1 -0
  326. package/lib/projects/localDev/helpers/project.js +39 -3
  327. package/lib/projects/localDev/localDevWebsocketServerUtils.d.ts +3 -0
  328. package/lib/projects/localDev/localDevWebsocketServerUtils.js +9 -0
  329. package/lib/projects/platformVersion.d.ts +1 -1
  330. package/lib/projects/platformVersion.js +1 -1
  331. package/lib/projects/structure.d.ts +2 -2
  332. package/lib/projects/structure.js +6 -6
  333. package/lib/projects/upload.d.ts +2 -3
  334. package/lib/projects/upload.js +17 -9
  335. package/lib/projects/urls.d.ts +0 -1
  336. package/lib/projects/urls.js +0 -3
  337. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +1 -0
  338. package/lib/prompts/__tests__/projectAddPrompt.test.js +10 -10
  339. package/lib/prompts/accountNamePrompt.js +14 -19
  340. package/lib/prompts/accountsPrompt.js +2 -2
  341. package/lib/prompts/cmsFieldPrompt.js +2 -2
  342. package/lib/prompts/createApiSamplePrompt.js +5 -5
  343. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +10 -1
  344. package/lib/prompts/createFunctionPrompt.js +14 -14
  345. package/lib/prompts/createModulePrompt.js +9 -9
  346. package/lib/prompts/createTemplatePrompt.js +2 -2
  347. package/lib/prompts/downloadProjectPrompt.js +5 -8
  348. package/lib/prompts/installAppPrompt.d.ts +1 -6
  349. package/lib/prompts/installAppPrompt.js +1 -6
  350. package/lib/prompts/personalAccessKeyPrompt.js +3 -3
  351. package/lib/prompts/previewPrompt.js +6 -6
  352. package/lib/prompts/projectAddPrompt.d.ts +2 -2
  353. package/lib/prompts/projectAddPrompt.js +7 -1
  354. package/lib/prompts/projectDevTargetAccountPrompt.js +20 -32
  355. package/lib/prompts/projectNamePrompt.js +4 -8
  356. package/lib/prompts/projectsLogsPrompt.js +2 -4
  357. package/lib/prompts/promptUtils.js +27 -9
  358. package/lib/prompts/sandboxesPrompt.js +7 -7
  359. package/lib/prompts/secretPrompt.js +3 -3
  360. package/lib/prompts/selectAppPrompt.js +3 -3
  361. package/lib/prompts/selectHubDBTablePrompt.js +9 -13
  362. package/lib/prompts/selectPublicAppForMigrationPrompt.js +15 -19
  363. package/lib/prompts/setAsDefaultAccountPrompt.js +4 -8
  364. package/lib/prompts/uploadPrompt.js +5 -5
  365. package/lib/sandboxSync.js +24 -41
  366. package/lib/sandboxes.js +19 -47
  367. package/lib/schema.js +3 -3
  368. package/lib/serverlessLogs.js +11 -13
  369. package/lib/theme/__tests__/migrate.test.js +6 -6
  370. package/lib/theme/migrate.js +2 -2
  371. package/lib/ui/SpinniesManager.d.ts +2 -0
  372. package/lib/ui/SpinniesManager.js +7 -0
  373. package/lib/ui/boxen.js +1 -2
  374. package/lib/ui/git.js +13 -10
  375. package/lib/ui/index.d.ts +6 -0
  376. package/lib/ui/index.js +55 -38
  377. package/lib/ui/serverlessFunctionLogs.js +9 -7
  378. package/lib/ui/uiMessages.d.ts +73 -0
  379. package/lib/ui/uiMessages.js +76 -0
  380. package/lib/usageTracking.js +7 -7
  381. package/lib/validation.js +20 -23
  382. package/lib/yargsUtils.d.ts +1 -1
  383. package/lib/yargsUtils.js +12 -5
  384. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -4
  385. package/mcp-server/tools/index.js +4 -0
  386. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +23 -0
  387. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +68 -0
  388. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +11 -0
  389. package/mcp-server/tools/project/GetApplicationInfoTool.js +49 -0
  390. package/mcp-server/tools/project/GetConfigValuesTool.js +2 -2
  391. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +2 -2
  392. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +1 -1
  393. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +1 -0
  394. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +169 -0
  395. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +1 -0
  396. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +115 -0
  397. package/mcp-server/utils/toolUsageTracking.js +2 -2
  398. package/package.json +8 -7
  399. package/types/Cms.d.ts +6 -6
  400. package/types/Yargs.d.ts +1 -1
  401. package/commands/app/__tests__/install.test.js +0 -47
  402. package/commands/app/install.d.ts +0 -8
  403. package/commands/app/install.js +0 -122
  404. package/lib/middleware/__test__/utils.test.js +0 -51
  405. package/lib/middleware/utils.d.ts +0 -8
  406. package/lib/middleware/utils.js +0 -14
  407. package/lib/projects/localDev/DevServerManagerV2.d.ts +0 -22
  408. package/lib/projects/localDev/DevServerManagerV2.js +0 -81
  409. /package/commands/{customObject/schema → cms}/__tests__/delete.test.d.ts +0 -0
  410. /package/commands/{__tests__ → cms/__tests__}/fetch.test.d.ts +0 -0
  411. /package/commands/{__tests__ → cms/__tests__}/function.test.d.ts +0 -0
  412. /package/commands/{__tests__ → cms/__tests__}/lint.test.d.ts +0 -0
  413. /package/commands/{__tests__ → cms/__tests__}/list.test.d.ts +0 -0
  414. /package/commands/{__tests__ → cms/__tests__}/mv.test.d.ts +0 -0
  415. /package/commands/{__tests__ → cms/__tests__}/theme.test.d.ts +0 -0
  416. /package/commands/{__tests__ → cms/function/__tests__}/logs.test.d.ts +0 -0
  417. /package/commands/{theme → cms/theme}/__tests__/generate-selectors.test.d.ts +0 -0
  418. /package/commands/{theme → cms/theme}/__tests__/generate-selectors.test.js +0 -0
  419. /package/commands/{theme → cms/theme}/__tests__/marketplace-validate.test.d.ts +0 -0
  420. /package/commands/{theme → cms/theme}/__tests__/preview.test.d.ts +0 -0
  421. /package/commands/{__tests__/remove.test.d.ts → customObject/__tests__/createSchema.test.d.ts} +0 -0
  422. /package/commands/{app/__tests__/install.test.d.ts → customObject/__tests__/deleteSchema.test.d.ts} +0 -0
  423. /package/commands/customObject/{schema/__tests__/create.test.d.ts → __tests__/fetch-all-schemas.test.d.ts} +0 -0
  424. /package/commands/customObject/{schema/__tests__/fetch-all.test.d.ts → __tests__/fetchSchema.test.d.ts} +0 -0
  425. /package/commands/customObject/{schema/__tests__/fetch.test.d.ts → __tests__/listSchemas.test.d.ts} +0 -0
  426. /package/commands/customObject/{schema/__tests__/list.test.d.ts → __tests__/updateSchema.test.d.ts} +0 -0
  427. /package/commands/{customObject/schema/__tests__/update.test.d.ts → project/__tests__/list.test.d.ts} +0 -0
  428. /package/{lib/middleware/__test__/utils.test.d.ts → commands/project/__tests__/validate.test.d.ts} +0 -0
  429. /package/{commands/create → lib/cmsAssets}/api-sample.d.ts +0 -0
  430. /package/{commands/create → lib/cmsAssets}/api-sample.js +0 -0
  431. /package/{commands/create → lib/cmsAssets}/app.d.ts +0 -0
  432. /package/{commands/create → lib/cmsAssets}/app.js +0 -0
  433. /package/{commands/create → lib/cmsAssets}/function.d.ts +0 -0
  434. /package/{commands/create → lib/cmsAssets}/function.js +0 -0
  435. /package/{commands/create → lib/cmsAssets}/index.d.ts +0 -0
  436. /package/{commands/create → lib/cmsAssets}/index.js +0 -0
  437. /package/{commands/create → lib/cmsAssets}/module.d.ts +0 -0
  438. /package/{commands/create → lib/cmsAssets}/module.js +0 -0
  439. /package/{commands/create → lib/cmsAssets}/react-app.d.ts +0 -0
  440. /package/{commands/create → lib/cmsAssets}/react-app.js +0 -0
  441. /package/{commands/create → lib/cmsAssets}/template.d.ts +0 -0
  442. /package/{commands/create → lib/cmsAssets}/template.js +0 -0
  443. /package/{commands/create → lib/cmsAssets}/vue-app.d.ts +0 -0
  444. /package/{commands/create → lib/cmsAssets}/vue-app.js +0 -0
  445. /package/{commands/create → lib/cmsAssets}/webpack-serverless.d.ts +0 -0
  446. /package/{commands/create → lib/cmsAssets}/webpack-serverless.js +0 -0
  447. /package/{commands/create → lib/cmsAssets}/website-theme.d.ts +0 -0
  448. /package/{commands/create → lib/cmsAssets}/website-theme.js +0 -0
  449. /package/lib/{projects/add/__tests__/v3AddComponent.test.d.ts → middleware/__test__/commandTargetingUtils.test.d.ts} +0 -0
  450. /package/lib/projects/{create/__tests__/v3.test.d.ts → __tests__/DevServerManager.test.d.ts} +0 -0
  451. /package/lib/projects/localDev/{LocalDevManager.d.ts → LocalDevManager_DEPRECATED.d.ts} +0 -0
package/commands/list.js CHANGED
@@ -1,98 +1,31 @@
1
- import chalk from 'chalk';
2
- import { trackCommandUsage } from '../lib/usageTracking.js';
3
- import { isPathFolder } from '../lib/filesystem.js';
4
- import { logger } from '@hubspot/local-dev-lib/logger';
5
- import { logError } from '../lib/errorHandlers/index.js';
6
- import { getDirectoryContentsByPath } from '@hubspot/local-dev-lib/api/fileMapper';
7
- import { HUBSPOT_FOLDER, MARKETPLACE_FOLDER } from '../lib/constants.js';
8
- import { i18n } from '../lib/lang.js';
9
- import { EXIT_CODES } from '../lib/enums/exitCodes.js';
1
+ import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../lib/ui/index.js';
2
+ import cmsListCommand from './cms/list.js';
10
3
  import { makeYargsBuilder } from '../lib/yargsUtils.js';
11
- function addColorToContents(fileOrFolder) {
12
- if (!isPathFolder(fileOrFolder)) {
13
- return chalk.reset.cyan(fileOrFolder);
14
- }
15
- if (fileOrFolder === HUBSPOT_FOLDER || fileOrFolder === MARKETPLACE_FOLDER) {
16
- return chalk.reset.bold.blue(fileOrFolder);
17
- }
18
- return chalk.reset.blue(fileOrFolder);
19
- }
20
- function sortContents(a, b) {
21
- // Pin @hubspot folder to top
22
- if (a === HUBSPOT_FOLDER) {
23
- return -1;
24
- }
25
- else if (b === HUBSPOT_FOLDER) {
26
- return 1;
27
- }
28
- // Pin @marketplace folder to top
29
- if (a === MARKETPLACE_FOLDER) {
30
- return -1;
31
- }
32
- else if (b === MARKETPLACE_FOLDER) {
33
- return 1;
34
- }
35
- return a.localeCompare(b);
36
- }
37
- const command = ['list [path]', 'ls [path]'];
38
- const describe = i18n(`commands.list.describe`);
4
+ import { commands } from '../lang/en.js';
5
+ const command = 'list [path]';
6
+ const describe = uiDeprecatedTag(cmsListCommand.describe, false);
39
7
  async function handler(args) {
40
- const { path, derivedAccountId } = args;
41
- const directoryPath = path || '/';
42
- let contentsResp;
43
- trackCommandUsage('list', undefined, derivedAccountId);
44
- logger.debug(i18n(`commands.list.gettingPathContents`, {
45
- path: directoryPath,
46
- }));
47
- try {
48
- const { data } = await getDirectoryContentsByPath(derivedAccountId, directoryPath);
49
- contentsResp = data;
50
- }
51
- catch (e) {
52
- logError(e);
53
- process.exit(EXIT_CODES.ERROR);
54
- }
55
- if (!contentsResp.folder) {
56
- logger.info(i18n(`commands.list.noFilesFoundAtPath`, {
57
- path: directoryPath,
58
- }));
59
- return;
60
- }
61
- // getDirectoryContentsByPath omits @hubspot
62
- const contents = directoryPath === '/'
63
- ? ['@hubspot', ...contentsResp.children]
64
- : contentsResp.children;
65
- if (contents.length === 0) {
66
- logger.info(i18n(`commands.list.noFilesFoundAtPath`, {
67
- path: directoryPath,
68
- }));
69
- return;
70
- }
71
- const folderContentsOutput = contents
72
- .map(addColorToContents)
73
- .sort(sortContents)
74
- .join('\n');
75
- logger.log(folderContentsOutput);
76
- process.exit(EXIT_CODES.SUCCESS);
8
+ uiCommandRelocatedMessage('hs cms list');
9
+ await cmsListCommand.handler(args);
77
10
  }
78
- function cmsListBuilder(yargs) {
11
+ function deprecatedCmsListBuilder(yargs) {
79
12
  yargs.positional('path', {
80
- describe: i18n(`commands.list.positionals.path.describe`),
13
+ describe: commands.cms.subcommands.list.positionals.path.describe,
81
14
  type: 'string',
82
15
  });
83
- yargs.example([['$0 list'], ['$0 list /'], ['$0 list my-modules']]);
84
16
  return yargs;
85
17
  }
86
- const builder = makeYargsBuilder(cmsListBuilder, command, describe, {
18
+ const verboseDescribe = uiCommandRenamedDescription(cmsListCommand.describe, 'hs cms list');
19
+ const builder = makeYargsBuilder(deprecatedCmsListBuilder, command, verboseDescribe, {
87
20
  useGlobalOptions: true,
88
21
  useConfigOptions: true,
89
22
  useAccountOptions: true,
90
23
  useEnvironmentOptions: true,
91
24
  });
92
- const cmsListCommand = {
93
- command,
25
+ const deprecatedCmsListCommand = {
26
+ ...cmsListCommand,
94
27
  describe,
95
28
  handler,
96
29
  builder,
97
30
  };
98
- export default cmsListCommand;
31
+ export default deprecatedCmsListCommand;
@@ -1,10 +1,4 @@
1
- import { CommonArgs, ConfigArgs, AccountArgs, YargsCommandModule, EnvironmentArgs } from '../types/Yargs.js';
2
- type LogsArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
3
- endpoint?: string;
4
- latest?: boolean;
5
- compact?: boolean;
6
- follow?: boolean;
7
- limit?: number;
8
- };
9
- declare const logsCommand: YargsCommandModule<unknown, LogsArgs>;
10
- export default logsCommand;
1
+ import { YargsCommandModule } from '../types/Yargs.js';
2
+ import { LogsArgs } from './cms/function/logs.js';
3
+ declare const deprecatedLogsCommand: YargsCommandModule<unknown, LogsArgs>;
4
+ export default deprecatedLogsCommand;
package/commands/logs.js CHANGED
@@ -1,127 +1,58 @@
1
- import { trackCommandUsage } from '../lib/usageTracking.js';
2
- import { logger } from '@hubspot/local-dev-lib/logger';
3
- import { outputLogs } from '../lib/ui/serverlessFunctionLogs.js';
4
- import { getFunctionLogs, getLatestFunctionLog, } from '@hubspot/local-dev-lib/api/functions';
5
- import { tailLogs } from '../lib/serverlessLogs.js';
6
- import { i18n } from '../lib/lang.js';
7
- import { promptUser } from '../lib/prompts/promptUtils.js';
8
- import { EXIT_CODES } from '../lib/enums/exitCodes.js';
9
- import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
1
+ import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../lib/ui/index.js';
2
+ import functionLogsCommand from './cms/function/logs.js';
10
3
  import { makeYargsBuilder } from '../lib/yargsUtils.js';
11
- const handleLogsError = (e, accountId, functionPath) => {
12
- if (isHubSpotHttpError(e) && (e.status === 404 || e.status == 400)) {
13
- logger.error(i18n(`commands.logs.errors.noLogsFound`, {
14
- accountId,
15
- functionPath,
16
- }));
17
- }
18
- };
19
- const endpointLog = async (accountId, functionPath, options) => {
20
- const { limit, latest, follow, compact } = options;
21
- const requestParams = {
22
- limit,
23
- latest,
24
- follow,
25
- endpoint: functionPath,
26
- };
27
- logger.debug(i18n(`commands.logs.gettingLogs`, {
28
- latest,
29
- functionPath,
30
- }));
31
- let logsResp;
32
- if (follow) {
33
- const tailCall = (after) => getFunctionLogs(accountId, functionPath, { after });
34
- const fetchLatest = () => {
35
- try {
36
- return getLatestFunctionLog(accountId, functionPath);
37
- }
38
- catch (e) {
39
- handleLogsError(e, accountId, functionPath);
40
- return Promise.reject(e);
41
- }
42
- };
43
- await tailLogs(accountId, functionPath, fetchLatest, tailCall, compact);
44
- }
45
- else if (latest) {
46
- try {
47
- const { data } = await getLatestFunctionLog(accountId, functionPath);
48
- logsResp = data;
49
- }
50
- catch (e) {
51
- handleLogsError(e, accountId, functionPath);
52
- process.exit(EXIT_CODES.ERROR);
53
- }
54
- }
55
- else {
56
- try {
57
- const { data } = await getFunctionLogs(accountId, functionPath, requestParams);
58
- logsResp = data;
59
- }
60
- catch (e) {
61
- handleLogsError(e, accountId, functionPath);
62
- process.exit(EXIT_CODES.ERROR);
63
- }
64
- }
65
- if (logsResp) {
66
- return outputLogs(logsResp, { compact });
67
- }
68
- };
4
+ import { commands } from '../lang/en.js';
69
5
  const command = 'logs [endpoint]';
70
- const describe = i18n(`commands.logs.describe`);
71
- const handler = async (options) => {
72
- const { endpoint: endpointArgValue, latest, derivedAccountId } = options;
73
- trackCommandUsage('logs', latest ? { action: 'latest' } : {}, derivedAccountId);
74
- const { endpointPromptValue } = await promptUser({
75
- name: 'endpointPromptValue',
76
- message: i18n(`commands.logs.endpointPrompt`),
77
- when: !endpointArgValue,
78
- });
79
- await endpointLog(derivedAccountId, endpointArgValue || endpointPromptValue, options);
80
- };
81
- function logsBuilder(yargs) {
6
+ const describe = uiDeprecatedTag(functionLogsCommand.describe, false);
7
+ async function handler(args) {
8
+ uiCommandRelocatedMessage('hs cms function logs');
9
+ await functionLogsCommand.handler(args);
10
+ }
11
+ function deprecatedLogsBuilder(yargs) {
82
12
  yargs.positional('endpoint', {
83
- describe: i18n(`commands.logs.positionals.endpoint.describe`),
13
+ describe: commands.cms.subcommands.function.subcommands.logs.positionals.endpoint
14
+ .describe,
84
15
  type: 'string',
85
16
  });
86
17
  yargs
87
18
  .options({
88
19
  latest: {
89
20
  alias: 'l',
90
- describe: i18n(`commands.logs.options.latest.describe`),
21
+ describe: commands.cms.subcommands.function.subcommands.logs.options.latest
22
+ .describe,
91
23
  type: 'boolean',
92
24
  },
93
25
  compact: {
94
- describe: i18n(`commands.logs.options.compact.describe`),
26
+ describe: commands.cms.subcommands.function.subcommands.logs.options.compact
27
+ .describe,
95
28
  type: 'boolean',
96
29
  },
97
30
  follow: {
98
31
  alias: ['f'],
99
- describe: i18n(`commands.logs.options.follow.describe`),
32
+ describe: commands.cms.subcommands.function.subcommands.logs.options.follow
33
+ .describe,
100
34
  type: 'boolean',
101
35
  },
102
36
  limit: {
103
- describe: i18n(`commands.logs.options.limit.describe`),
37
+ describe: commands.cms.subcommands.function.subcommands.logs.options.limit
38
+ .describe,
104
39
  type: 'number',
105
40
  },
106
41
  })
107
42
  .conflicts('follow', 'limit');
108
- yargs.example([
109
- ['$0 logs my-endpoint', i18n(`commands.logs.examples.default`)],
110
- ['$0 logs my-endpoint --limit=10', i18n(`commands.logs.examples.limit`)],
111
- ['$0 logs my-endpoint --follow', i18n(`commands.logs.examples.follow`)],
112
- ]);
113
43
  return yargs;
114
44
  }
115
- const builder = makeYargsBuilder(logsBuilder, command, describe, {
45
+ const verboseDescribe = uiCommandRenamedDescription(functionLogsCommand.describe, 'hs cms function logs');
46
+ const builder = makeYargsBuilder(deprecatedLogsBuilder, command, verboseDescribe, {
116
47
  useGlobalOptions: true,
117
48
  useConfigOptions: true,
118
49
  useAccountOptions: true,
119
50
  useEnvironmentOptions: true,
120
51
  });
121
- const logsCommand = {
122
- command,
52
+ const deprecatedLogsCommand = {
53
+ ...functionLogsCommand,
123
54
  describe,
124
- builder,
125
55
  handler,
56
+ builder,
126
57
  };
127
- export default logsCommand;
58
+ export default deprecatedLogsCommand;
@@ -1,6 +1,4 @@
1
- import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, YargsCommandModule } from '../../types/Yargs.js';
2
- type MarketplaceValidateArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
3
- src: string;
4
- };
5
- declare const marketplaceValidateCommand: YargsCommandModule<unknown, MarketplaceValidateArgs>;
6
- export default marketplaceValidateCommand;
1
+ import { YargsCommandModule } from '../../types/Yargs.js';
2
+ import { MarketplaceValidateArgs } from '../cms/module/marketplace-validate.js';
3
+ declare const deprecatedMarketplaceValidateCommand: YargsCommandModule<unknown, MarketplaceValidateArgs>;
4
+ export default deprecatedMarketplaceValidateCommand;
@@ -1,43 +1,31 @@
1
- import SpinniesManager from '../../lib/ui/SpinniesManager.js';
2
- import { trackCommandUsage } from '../../lib/usageTracking.js';
3
- import { kickOffValidation, pollForValidationFinish, fetchValidationResults, processValidationErrors, displayValidationResults, } from '../../lib/marketplaceValidate.js';
4
- import { commands } from '../../lang/en.js';
5
- import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
1
+ import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../../lib/ui/index.js';
2
+ import marketplaceValidateCommand from '../cms/module/marketplace-validate.js';
6
3
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
7
- const command = 'marketplace-validate <src>';
8
- const describe = commands.module.subcommands.marketplaceValidate.describe;
4
+ import { commands } from '../../lang/en.js';
5
+ const command = 'marketplace-validate [src]';
6
+ const describe = uiDeprecatedTag(marketplaceValidateCommand.describe, false);
9
7
  async function handler(args) {
10
- const { src, derivedAccountId } = args;
11
- trackCommandUsage('validate', undefined, derivedAccountId);
12
- SpinniesManager.init();
13
- SpinniesManager.add('marketplaceValidation', {
14
- text: commands.module.subcommands.marketplaceValidate.logs.validatingModule(src),
15
- });
16
- const assetType = 'MODULE';
17
- const validationId = await kickOffValidation(derivedAccountId, assetType, src);
18
- await pollForValidationFinish(derivedAccountId, validationId);
19
- SpinniesManager.remove('marketplaceValidation');
20
- const validationResults = await fetchValidationResults(derivedAccountId, validationId);
21
- processValidationErrors(commands.module.subcommands.marketplaceValidate.errors.invalidPath, validationResults);
22
- displayValidationResults(commands.module.subcommands.marketplaceValidate.results, validationResults);
23
- process.exit(EXIT_CODES.SUCCESS);
8
+ uiCommandRelocatedMessage('hs cms module marketplace-validate');
9
+ await marketplaceValidateCommand.handler(args);
24
10
  }
25
- function marketplaceValidateBuilder(yargs) {
11
+ function deprecatedMarketplaceValidateBuilder(yargs) {
26
12
  yargs.positional('src', {
27
- describe: commands.module.subcommands.marketplaceValidate.positionals.src,
13
+ describe: commands.cms.subcommands.module.subcommands.marketplaceValidate
14
+ .positionals.src,
28
15
  type: 'string',
29
16
  });
30
17
  return yargs;
31
18
  }
32
- const builder = makeYargsBuilder(marketplaceValidateBuilder, command, describe, {
19
+ const verboseDescribe = uiCommandRenamedDescription(marketplaceValidateCommand.describe, 'hs cms module marketplace-validate');
20
+ const builder = makeYargsBuilder(deprecatedMarketplaceValidateBuilder, command, verboseDescribe, {
33
21
  useConfigOptions: true,
34
22
  useAccountOptions: true,
35
23
  useEnvironmentOptions: true,
36
24
  });
37
- const marketplaceValidateCommand = {
38
- command,
25
+ const deprecatedMarketplaceValidateCommand = {
26
+ ...marketplaceValidateCommand,
39
27
  describe,
40
28
  handler,
41
29
  builder,
42
30
  };
43
- export default marketplaceValidateCommand;
31
+ export default deprecatedMarketplaceValidateCommand;
@@ -1,3 +1,3 @@
1
1
  import { YargsCommandModuleBucket } from '../types/Yargs.js';
2
- declare const moduleCommand: YargsCommandModuleBucket;
3
- export default moduleCommand;
2
+ declare const deprecatedCmsModuleCommand: YargsCommandModuleBucket;
3
+ export default deprecatedCmsModuleCommand;
@@ -1,21 +1,23 @@
1
- import marketplaceValidate from './module/marketplace-validate.js';
2
- import { commands } from '../lang/en.js';
1
+ import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../lib/ui/index.js';
2
+ import cmsModuleCommand from './cms/module.js';
3
+ import marketplaceValidateCommand from './module/marketplace-validate.js';
3
4
  import { makeYargsBuilder } from '../lib/yargsUtils.js';
4
- const command = 'module';
5
- const describe = commands.module.describe;
6
- function moduleBuilder(yargs) {
7
- yargs.command(marketplaceValidate).demandCommand(1, '');
5
+ const command = ['module'];
6
+ const describe = uiDeprecatedTag(cmsModuleCommand.describe, false);
7
+ async function handler(args) {
8
+ uiCommandRelocatedMessage('hs cms module');
9
+ await cmsModuleCommand.handler(args);
10
+ }
11
+ function deprecatedCmsModuleBuilder(yargs) {
12
+ yargs.command(marketplaceValidateCommand).demandCommand(1, '');
8
13
  return yargs;
9
14
  }
10
- const builder = makeYargsBuilder(moduleBuilder, command, describe, {
11
- useGlobalOptions: true,
12
- useConfigOptions: true,
13
- useAccountOptions: true,
14
- });
15
- const moduleCommand = {
16
- command,
15
+ const verboseDescribe = uiCommandRenamedDescription(cmsModuleCommand.describe, 'hs cms module');
16
+ const builder = makeYargsBuilder(deprecatedCmsModuleBuilder, command, verboseDescribe);
17
+ const deprecatedCmsModuleCommand = {
18
+ ...cmsModuleCommand,
17
19
  describe,
20
+ handler,
18
21
  builder,
19
- handler: () => { },
20
22
  };
21
- export default moduleCommand;
23
+ export default deprecatedCmsModuleCommand;
package/commands/mv.d.ts CHANGED
@@ -1,7 +1,4 @@
1
- import { CommonArgs, ConfigArgs, EnvironmentArgs, YargsCommandModule } from '../types/Yargs.js';
2
- type MvArgs = CommonArgs & ConfigArgs & EnvironmentArgs & {
3
- srcPath: string;
4
- destPath: string;
5
- };
6
- declare const cmsMvCommand: YargsCommandModule<unknown, MvArgs>;
7
- export default cmsMvCommand;
1
+ import { YargsCommandModule } from '../types/Yargs.js';
2
+ import { MvArgs } from './cms/mv.js';
3
+ declare const deprecatedCmsMvCommand: YargsCommandModule<unknown, MvArgs>;
4
+ export default deprecatedCmsMvCommand;
package/commands/mv.js CHANGED
@@ -1,72 +1,35 @@
1
- import { logger } from '@hubspot/local-dev-lib/logger';
2
- import { moveFile } from '@hubspot/local-dev-lib/api/fileMapper';
3
- import { isSpecifiedError } from '@hubspot/local-dev-lib/errors/index';
4
- import { logError, ApiErrorContext } from '../lib/errorHandlers/index.js';
5
- import { trackCommandUsage } from '../lib/usageTracking.js';
6
- import { isPathFolder } from '../lib/filesystem.js';
7
- import { i18n } from '../lib/lang.js';
8
- import { uiBetaTag } from '../lib/ui/index.js';
1
+ import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../lib/ui/index.js';
2
+ import cmsMvCommand from './cms/mv.js';
9
3
  import { makeYargsBuilder } from '../lib/yargsUtils.js';
10
- function getCorrectedDestPath(srcPath, destPath) {
11
- if (!isPathFolder(srcPath)) {
12
- return destPath;
13
- }
14
- // Makes sure that nested folders are moved independently
15
- return `${destPath}/${srcPath.split('/').pop()}`;
16
- }
4
+ import { commands } from '../lang/en.js';
17
5
  const command = 'mv <srcPath> <destPath>';
18
- const describe = uiBetaTag(i18n(`commands.mv.describe`), false);
6
+ const describe = uiDeprecatedTag(cmsMvCommand.describe, false);
19
7
  async function handler(args) {
20
- const { srcPath, destPath, derivedAccountId } = args;
21
- trackCommandUsage('mv', undefined, derivedAccountId);
22
- try {
23
- await moveFile(derivedAccountId, srcPath, getCorrectedDestPath(srcPath, destPath));
24
- logger.success(i18n(`commands.mv.move`, {
25
- accountId: derivedAccountId,
26
- destPath,
27
- srcPath,
28
- }));
29
- }
30
- catch (error) {
31
- logger.error(i18n(`commands.mv.errors.moveFailed`, {
32
- accountId: derivedAccountId,
33
- destPath,
34
- srcPath,
35
- }));
36
- if (isSpecifiedError(error, { statusCode: 409 })) {
37
- logger.error(i18n(`commands.mv.errors.sourcePathExists`, {
38
- destPath,
39
- srcPath,
40
- }));
41
- }
42
- else {
43
- logError(error, new ApiErrorContext({
44
- accountId: derivedAccountId,
45
- }));
46
- }
47
- }
8
+ uiCommandRelocatedMessage('hs cms mv');
9
+ await cmsMvCommand.handler(args);
48
10
  }
49
- function cmsMvBuilder(yargs) {
11
+ function deprecatedCmsMvBuilder(yargs) {
50
12
  yargs.positional('srcPath', {
51
- describe: 'Remote hubspot path',
13
+ describe: commands.cms.subcommands.mv.positionals.srcPath.describe,
52
14
  type: 'string',
53
15
  });
54
16
  yargs.positional('destPath', {
55
- describe: 'Remote hubspot path',
17
+ describe: commands.cms.subcommands.mv.positionals.destPath.describe,
56
18
  type: 'string',
57
19
  });
58
20
  return yargs;
59
21
  }
60
- const builder = makeYargsBuilder(cmsMvBuilder, command, describe, {
22
+ const verboseDescribe = uiCommandRenamedDescription(cmsMvCommand.describe, 'hs cms mv');
23
+ const builder = makeYargsBuilder(deprecatedCmsMvBuilder, command, verboseDescribe, {
61
24
  useGlobalOptions: true,
62
25
  useConfigOptions: true,
63
26
  useAccountOptions: true,
64
27
  useEnvironmentOptions: true,
65
28
  });
66
- const cmsMvCommand = {
67
- command,
29
+ const deprecatedCmsMvCommand = {
30
+ ...cmsMvCommand,
68
31
  describe,
69
32
  handler,
70
33
  builder,
71
34
  };
72
- export default cmsMvCommand;
35
+ export default deprecatedCmsMvCommand;
package/commands/open.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { trackCommandUsage } from '../lib/usageTracking.js';
2
2
  import { logSiteLinks, getSiteLinksAsArray, openLink } from '../lib/links.js';
3
3
  import { promptUser } from '../lib/prompts/promptUtils.js';
4
- import { i18n } from '../lib/lang.js';
4
+ import { commands } from '../lang/en.js';
5
5
  import { EXIT_CODES } from '../lib/enums/exitCodes.js';
6
6
  import { makeYargsBuilder } from '../lib/yargsUtils.js';
7
7
  const separator = ' => ';
@@ -10,7 +10,7 @@ async function createListPrompt(accountId) {
10
10
  name: 'open',
11
11
  type: 'rawlist',
12
12
  pageSize: 20,
13
- message: i18n('commands.open.selectLink'),
13
+ message: commands.open.selectLink,
14
14
  choices: getSiteLinksAsArray(accountId)
15
15
  .filter(l => !!l.url)
16
16
  .map(l => ({
@@ -20,7 +20,7 @@ async function createListPrompt(accountId) {
20
20
  });
21
21
  }
22
22
  const command = 'open [shortcut]';
23
- const describe = i18n('commands.open.describe');
23
+ const describe = commands.open.describe;
24
24
  async function handler(args) {
25
25
  const { shortcut, list, derivedAccountId } = args;
26
26
  trackCommandUsage('open', undefined, derivedAccountId);
@@ -38,12 +38,12 @@ async function handler(args) {
38
38
  }
39
39
  function openBuilder(yargs) {
40
40
  yargs.positional('[shortcut]', {
41
- describe: i18n('commands.open.positionals.shortcut.describe'),
41
+ describe: commands.open.positionals.shortcut.describe,
42
42
  type: 'string',
43
43
  });
44
44
  yargs.option('list', {
45
45
  alias: 'l',
46
- describe: i18n('commands.open.options.list.describe'),
46
+ describe: commands.open.options.list.describe,
47
47
  type: 'boolean',
48
48
  });
49
49
  yargs.example([
@@ -1,21 +1,23 @@
1
1
  import yargs from 'yargs';
2
2
  import projectAddCommand from '../add.js';
3
3
  import { marketplaceDistribution, oAuth, privateDistribution, staticAuth, } from '../../../lib/constants.js';
4
- import { v3AddComponent } from '../../../lib/projects/add/v3AddComponent.js';
4
+ import { v2AddComponent } from '../../../lib/projects/add/v2AddComponent.js';
5
5
  import { legacyAddComponent } from '../../../lib/projects/add/legacyAddComponent.js';
6
6
  import { getProjectConfig } from '../../../lib/projects/config.js';
7
- import { useV3Api } from '../../../lib/projects/platformVersion.js';
7
+ import { isV2Project } from '../../../lib/projects/platformVersion.js';
8
8
  import { trackCommandUsage } from '../../../lib/usageTracking.js';
9
9
  vi.mock('../../../lib/commonOpts');
10
- vi.mock('../../../lib/projects/add/v3AddComponent');
10
+ vi.mock('../../../lib/ui/logger.js');
11
+ vi.mock('../../../lib/errorHandlers/index.js');
12
+ vi.mock('../../../lib/projects/add/v2AddComponent');
11
13
  vi.mock('../../../lib/projects/add/legacyAddComponent');
12
14
  vi.mock('../../../lib/projects/config');
13
15
  vi.mock('../../../lib/projects/platformVersion');
14
16
  vi.mock('../../../lib/usageTracking');
15
- const mockedV3AddComponent = vi.mocked(v3AddComponent);
17
+ const mockedV2AddComponent = vi.mocked(v2AddComponent);
16
18
  const mockedLegacyAddComponent = vi.mocked(legacyAddComponent);
17
19
  const mockedGetProjectConfig = vi.mocked(getProjectConfig);
18
- const mockedUseV3Api = vi.mocked(useV3Api);
20
+ const mockedUseV2Api = vi.mocked(isV2Project);
19
21
  const mockedTrackCommandUsage = vi.mocked(trackCommandUsage);
20
22
  describe('commands/project/add', () => {
21
23
  const yargsMock = yargs;
@@ -59,7 +61,7 @@ describe('commands/project/add', () => {
59
61
  const mockProjectConfig = {
60
62
  name: 'test-project',
61
63
  srcDir: 'src',
62
- platformVersion: 'v3',
64
+ platformVersion: '2025.2',
63
65
  };
64
66
  const mockProjectDir = '/path/to/project';
65
67
  const mockArgs = {
@@ -73,23 +75,23 @@ describe('commands/project/add', () => {
73
75
  projectDir: mockProjectDir,
74
76
  });
75
77
  mockedTrackCommandUsage.mockResolvedValue();
76
- mockedV3AddComponent.mockResolvedValue();
78
+ mockedV2AddComponent.mockResolvedValue();
77
79
  mockedLegacyAddComponent.mockResolvedValue();
78
80
  vi.spyOn(process, 'exit').mockImplementation(() => {
79
81
  throw new Error('process.exit called');
80
82
  });
81
83
  });
82
- it('should call v3AddComponent with accountId for v3 projects', async () => {
83
- mockedUseV3Api.mockReturnValue(true);
84
+ it('should call v2AddComponent with accountId for v2 projects', async () => {
85
+ mockedUseV2Api.mockReturnValue(true);
84
86
  await expect(projectAddCommand.handler(mockArgs)).rejects.toThrow('process.exit called');
85
- expect(mockedV3AddComponent).toHaveBeenCalledWith(mockArgs, mockProjectDir, mockProjectConfig, 123);
87
+ expect(mockedV2AddComponent).toHaveBeenCalledWith(mockArgs, mockProjectDir, mockProjectConfig, 123);
86
88
  expect(mockedLegacyAddComponent).not.toHaveBeenCalled();
87
89
  });
88
- it('should call legacyAddComponent for non-v3 projects', async () => {
89
- mockedUseV3Api.mockReturnValue(false);
90
+ it('should call legacyAddComponent for non-v2 projects', async () => {
91
+ mockedUseV2Api.mockReturnValue(false);
90
92
  await expect(projectAddCommand.handler(mockArgs)).rejects.toThrow('process.exit called');
91
93
  expect(mockedLegacyAddComponent).toHaveBeenCalledWith(mockArgs, mockProjectDir, mockProjectConfig, 123);
92
- expect(mockedV3AddComponent).not.toHaveBeenCalled();
94
+ expect(mockedV2AddComponent).not.toHaveBeenCalled();
93
95
  });
94
96
  it('should exit with error when project config is not found', async () => {
95
97
  mockedGetProjectConfig.mockResolvedValue({
@@ -1,7 +1,6 @@
1
1
  import { HttpStatusCode } from 'axios';
2
2
  import yargs from 'yargs';
3
3
  import chalk from 'chalk';
4
- import { logger } from '@hubspot/local-dev-lib/logger';
5
4
  import * as configUtils from '@hubspot/local-dev-lib/config';
6
5
  import * as projectApiUtils from '@hubspot/local-dev-lib/api/projects';
7
6
  import * as ui from '../../../lib/ui/index.js';
@@ -29,7 +28,7 @@ vi.mock('../../../lib/prompts/projectNamePrompt');
29
28
  vi.mock('../../../lib/prompts/promptUtils');
30
29
  vi.mock('../../../lib/usageTracking');
31
30
  vi.mock('../../../lib/ui/logger');
32
- vi.mock('@hubspot/local-dev-lib/logger');
31
+ vi.mock('../../ui/logger.js');
33
32
  vi.spyOn(ui, 'uiLine');
34
33
  const uiCommandReferenceSpy = vi.spyOn(ui, 'uiCommandReference');
35
34
  const uiAccountDescriptionSpy = vi.spyOn(ui, 'uiAccountDescription');
@@ -297,8 +296,8 @@ describe('commands/project/deploy', () => {
297
296
  });
298
297
  });
299
298
  await projectDeployCommand.handler(args);
300
- expect(logger.error).toHaveBeenCalledTimes(1);
301
- expect(logger.error).toHaveBeenCalledWith(`The request for 'project deploy' in account ${args.derivedAccountId} failed due to a client error.`);
299
+ expect(uiLogger.error).toHaveBeenCalledTimes(1);
300
+ expect(uiLogger.error).toHaveBeenCalledWith(`The request for 'project deploy' in account ${args.derivedAccountId} failed due to a client error.`);
302
301
  expect(processExitSpy).toHaveBeenCalledTimes(1);
303
302
  expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
304
303
  });