@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
@@ -8,3 +8,12 @@ export function isDeployWebsocketMessage(message) {
8
8
  export function isViewedWelcomeScreenWebsocketMessage(message) {
9
9
  return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.VIEWED_WELCOME_SCREEN);
10
10
  }
11
+ export function isAppInstallSuccessWebsocketMessage(message) {
12
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_SUCCESS);
13
+ }
14
+ export function isAppInstallInitiatedWebsocketMessage(message) {
15
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_INITIATED);
16
+ }
17
+ export function isAppInstallFailureWebsocketMessage(message) {
18
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_FAILURE);
19
+ }
@@ -1 +1 @@
1
- export declare function useV3Api(platformVersion?: string | null): boolean;
1
+ export declare function isV2Project(platformVersion?: string | null): boolean;
@@ -1,4 +1,4 @@
1
- export function useV3Api(platformVersion) {
1
+ export function isV2Project(platformVersion) {
2
2
  if (!platformVersion || typeof platformVersion !== 'string') {
3
3
  return false;
4
4
  }
@@ -1,5 +1,5 @@
1
1
  import { ComponentTypes, Component, GenericComponentConfig, PublicAppComponentConfig, PrivateAppComponentConfig, AppCardComponentConfig } from '../../types/Projects.js';
2
- import { IntermediateRepresentationNode, IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
2
+ import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
3
3
  import { AppIRNode } from '../../types/ProjectComponents.js';
4
4
  export declare const CONFIG_FILES: {
5
5
  [k in ComponentTypes]: string;
@@ -15,4 +15,4 @@ export declare function getProjectComponentTypes(components: Array<Component>):
15
15
  export declare function getComponentUid(component?: Component | null): string | null;
16
16
  export declare function componentIsApp(component?: Component | null): component is Component<PublicAppComponentConfig | PrivateAppComponentConfig>;
17
17
  export declare function componentIsPublicApp(component?: Component | null): component is Component<PublicAppComponentConfig>;
18
- export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev | IntermediateRepresentationNode): component is AppIRNode;
18
+ export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev): component is AppIRNode;
@@ -1,14 +1,14 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { walk } from '@hubspot/local-dev-lib/fs';
4
- import { logger } from '@hubspot/local-dev-lib/logger';
4
+ import { uiLogger } from '../ui/logger.js';
5
5
  import { logError } from '../errorHandlers/index.js';
6
6
  import { ComponentTypes, } from '../../types/Projects.js';
7
- import { IR_COMPONENT_TYPES } from '../constants.js';
7
+ import { IR_COMPONENT_TYPES, LEGACY_PRIVATE_APP_FILE, LEGACY_PUBLIC_APP_FILE, THEME_FILE, } from '../constants.js';
8
8
  export const CONFIG_FILES = {
9
- [ComponentTypes.PrivateApp]: 'app.json',
10
- [ComponentTypes.PublicApp]: 'public-app.json',
11
- [ComponentTypes.HublTheme]: 'theme.json',
9
+ [ComponentTypes.PrivateApp]: LEGACY_PRIVATE_APP_FILE,
10
+ [ComponentTypes.PublicApp]: LEGACY_PUBLIC_APP_FILE,
11
+ [ComponentTypes.HublTheme]: THEME_FILE,
12
12
  };
13
13
  export function getComponentTypeFromConfigFile(configFile) {
14
14
  let key;
@@ -27,7 +27,7 @@ export function loadConfigFile(configPath) {
27
27
  return parsedConfig;
28
28
  }
29
29
  catch (e) {
30
- logger.debug(e);
30
+ uiLogger.debug(e);
31
31
  }
32
32
  }
33
33
  return null;
@@ -1,5 +1,4 @@
1
1
  import { FileResult } from 'tmp';
2
- import { IntermediateRepresentation } from '@hubspot/project-parsing-lib';
3
2
  import { ProjectConfig } from '../../types/Projects.js';
4
3
  type ProjectUploadCallbackFunction<T> = (accountId: number, projectConfig: ProjectConfig, tempFile: FileResult, buildId: number) => Promise<T>;
5
4
  type ProjectUploadResult<T> = {
@@ -19,7 +18,7 @@ type HandleProjectUploadArg<T> = {
19
18
  profile?: string;
20
19
  };
21
20
  export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
22
- export declare function validateSourceDirectory(srcDir: string, projectConfig: ProjectConfig): void;
21
+ export declare function validateSourceDirectory(srcDir: string, projectConfig: ProjectConfig, projectDir: string): Promise<void>;
23
22
  export declare function validateNoHSMetaMismatch(srcDir: string, projectConfig: ProjectConfig): Promise<void>;
24
- export declare function handleTranslate(projectDir: string, projectConfig: ProjectConfig, accountId: number, skipValidation: boolean, profile: string | undefined): Promise<IntermediateRepresentation | undefined>;
23
+ export declare function handleTranslate(projectDir: string, projectConfig: ProjectConfig, accountId: number, skipValidation: boolean, profile: string | undefined): Promise<unknown>;
25
24
  export {};
@@ -12,9 +12,11 @@ import util from 'node:util';
12
12
  import { lib } from '../../lang/en.js';
13
13
  import { ensureProjectExists } from './ensureProjectExists.js';
14
14
  import { uiLogger } from '../ui/logger.js';
15
- import { useV3Api } from './platformVersion.js';
15
+ import { isV2Project } from './platformVersion.js';
16
16
  import { EXIT_CODES } from '../enums/exitCodes.js';
17
17
  import ProjectValidationError from '../errors/ProjectValidationError.js';
18
+ import { walk } from '@hubspot/local-dev-lib/fs';
19
+ import { LEGACY_CONFIG_FILES } from '../constants.js';
18
20
  async function uploadProjectFiles(accountId, projectName, filePath, uploadMessage, platformVersion, intermediateRepresentation) {
19
21
  SpinniesManager.init({});
20
22
  const accountIdentifier = uiAccountDescription(accountId) || `${accountId}`;
@@ -45,7 +47,7 @@ async function uploadProjectFiles(accountId, projectName, filePath, uploadMessag
45
47
  export async function handleProjectUpload({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage = '', forceCreate = false, isUploadCommand = false, sendIR = false, skipValidation = false, }) {
46
48
  const srcDir = path.resolve(projectDir, projectConfig.srcDir);
47
49
  try {
48
- validateSourceDirectory(srcDir, projectConfig);
50
+ await validateSourceDirectory(srcDir, projectConfig, projectDir);
49
51
  }
50
52
  catch (e) {
51
53
  logError(e);
@@ -70,8 +72,7 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
70
72
  intermediateRepresentation = await handleTranslate(projectDir, projectConfig, accountId, skipValidation, profile);
71
73
  }
72
74
  catch (e) {
73
- logError(e);
74
- process.exit(EXIT_CODES.ERROR);
75
+ resolve({ uploadError: e });
75
76
  }
76
77
  }
77
78
  await ensureProjectExists(accountId, projectConfig.name, {
@@ -105,15 +106,23 @@ export async function handleProjectUpload({ accountId, projectConfig, projectDir
105
106
  archive.finalize();
106
107
  return result;
107
108
  }
108
- export function validateSourceDirectory(srcDir, projectConfig) {
109
- const filenames = fs.readdirSync(srcDir);
110
- if (!filenames || filenames.length === 0) {
109
+ export async function validateSourceDirectory(srcDir, projectConfig, projectDir) {
110
+ const projectFilePaths = await walk(srcDir, ['node_modules']);
111
+ if (!projectFilePaths || projectFilePaths.length === 0) {
111
112
  throw new ProjectValidationError(lib.projectUpload.handleProjectUpload.emptySource(projectConfig.srcDir));
112
113
  }
114
+ if (isV2Project(projectConfig.platformVersion)) {
115
+ projectFilePaths.forEach(filePath => {
116
+ const filename = path.basename(filePath);
117
+ if (LEGACY_CONFIG_FILES.includes(filename)) {
118
+ uiLogger.warn(lib.projectUpload.handleProjectUpload.legacyFileDetected(path.relative(projectDir, filePath), projectConfig.platformVersion));
119
+ }
120
+ });
121
+ }
113
122
  }
114
123
  export async function validateNoHSMetaMismatch(srcDir, projectConfig) {
115
124
  const hasHsMetaFiles = await projectContainsHsMetaFiles(srcDir);
116
- if (!useV3Api(projectConfig.platformVersion) && hasHsMetaFiles) {
125
+ if (!isV2Project(projectConfig.platformVersion) && hasHsMetaFiles) {
117
126
  throw new ProjectValidationError(lib.projectUpload.wrongPlatformVersionMetaFiles);
118
127
  }
119
128
  }
@@ -133,5 +142,4 @@ export async function handleTranslate(projectDir, projectConfig, accountId, skip
133
142
  }
134
143
  throw e;
135
144
  }
136
- return undefined;
137
145
  }
@@ -7,4 +7,3 @@ export declare function getProjectBuildDetailUrl(projectName: string, buildId: n
7
7
  export declare function getProjectDeployDetailUrl(projectName: string, deployId: number, accountId: number): string;
8
8
  export declare function getLocalDevUiUrl(accountId: number, showWelcomeScreen?: boolean): string;
9
9
  export declare function getAccountHomeUrl(accountId: number): string;
10
- export declare function getAppAllowlistUrl(accountId: number, projectName: string, appUid: string): string;
@@ -41,6 +41,3 @@ export function getAccountHomeUrl(accountId) {
41
41
  const baseUrl = getHubSpotWebsiteOrigin(getEnv(accountId) === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
42
42
  return `${baseUrl}/home?portalId=${accountId}`;
43
43
  }
44
- export function getAppAllowlistUrl(accountId, projectName, appUid) {
45
- return `${getProjectHomeUrl(accountId)}/project/${projectName}/component/${appUid}/distribution?panel=static-token-allowlist`;
46
- }
@@ -11,6 +11,7 @@ vi.mock('@hubspot/local-dev-lib/api/projects', () => ({
11
11
  }));
12
12
  vi.mock('@hubspot/local-dev-lib/config', () => ({
13
13
  getAccountId: vi.fn().mockImplementation(() => 123456789),
14
+ configFileExists: vi.fn().mockImplementation(() => true),
14
15
  }));
15
16
  describe('lib/prompts/downloadProjectPrompt', () => {
16
17
  it('should honor the account passed as an option', async () => {
@@ -1,5 +1,5 @@
1
1
  import { Separator } from '@inquirer/prompts';
2
- import { projectAddPromptV3 } from '../projectAddPrompt.js';
2
+ import { projectAddPromptV2 } from '../projectAddPrompt.js';
3
3
  import { promptUser } from '../promptUtils.js';
4
4
  vi.mock('../promptUtils');
5
5
  const mockedPromptUser = vi.mocked(promptUser);
@@ -19,7 +19,7 @@ describe('lib/prompts/projectAddPrompt', () => {
19
19
  supportedAuthTypes: ['oauth'],
20
20
  supportedDistributions: ['private'],
21
21
  };
22
- describe('projectAddPromptV3()', () => {
22
+ describe('projectAddPromptV2()', () => {
23
23
  beforeEach(() => {
24
24
  // Mock returns empty result, logic will use selectedComponents when selectedFeatures provided
25
25
  mockedPromptUser.mockResolvedValue({});
@@ -31,7 +31,7 @@ describe('lib/prompts/projectAddPrompt', () => {
31
31
  };
32
32
  const components = [templateChoice];
33
33
  const selectedFeatures = ['workflow-action-tool'];
34
- const result = await projectAddPromptV3(components, selectedFeatures);
34
+ const result = await projectAddPromptV2(components, selectedFeatures);
35
35
  expect(result.componentTemplate).toEqual([
36
36
  mockComponentTemplateWithCliSelector,
37
37
  ]);
@@ -49,7 +49,7 @@ describe('lib/prompts/projectAddPrompt', () => {
49
49
  };
50
50
  const components = [templateChoice];
51
51
  const selectedFeatures = ['module'];
52
- const result = await projectAddPromptV3(components, selectedFeatures);
52
+ const result = await projectAddPromptV2(components, selectedFeatures);
53
53
  expect(result.componentTemplate).toEqual([mockComponentTemplate]);
54
54
  expect(mockedPromptUser).toHaveBeenCalledWith([
55
55
  expect.objectContaining({
@@ -65,7 +65,7 @@ describe('lib/prompts/projectAddPrompt', () => {
65
65
  };
66
66
  const components = [templateChoice];
67
67
  const selectedFeatures = ['workflow-action-tool']; // matches cliSelector
68
- const result = await projectAddPromptV3(components, selectedFeatures);
68
+ const result = await projectAddPromptV2(components, selectedFeatures);
69
69
  expect(result.componentTemplate).toEqual([
70
70
  mockComponentTemplateWithCliSelector,
71
71
  ]);
@@ -78,7 +78,7 @@ describe('lib/prompts/projectAddPrompt', () => {
78
78
  const components = [templateChoice];
79
79
  const selectedFeatures = ['non-matching-feature'];
80
80
  mockedPromptUser.mockResolvedValue({ componentTemplate: [] });
81
- const result = await projectAddPromptV3(components, selectedFeatures);
81
+ const result = await projectAddPromptV2(components, selectedFeatures);
82
82
  expect(result.componentTemplate).toEqual([]);
83
83
  });
84
84
  it('should throw error when selected feature component is disabled', async () => {
@@ -89,7 +89,7 @@ describe('lib/prompts/projectAddPrompt', () => {
89
89
  };
90
90
  const components = [disabledTemplateChoice];
91
91
  const selectedFeatures = ['workflow-action-tool'];
92
- await expect(projectAddPromptV3(components, selectedFeatures)).rejects.toThrow(/Cannot.*feature.*workflow-action/);
92
+ await expect(projectAddPromptV2(components, selectedFeatures)).rejects.toThrow(/Cannot.*feature.*workflow-action/);
93
93
  });
94
94
  it('should handle multiple components with mixed cliSelector availability', async () => {
95
95
  const choice1 = {
@@ -102,7 +102,7 @@ describe('lib/prompts/projectAddPrompt', () => {
102
102
  };
103
103
  const components = [choice1, choice2];
104
104
  const selectedFeatures = ['module', 'workflow-action-tool'];
105
- const result = await projectAddPromptV3(components, selectedFeatures);
105
+ const result = await projectAddPromptV2(components, selectedFeatures);
106
106
  expect(result.componentTemplate).toEqual([
107
107
  mockComponentTemplate,
108
108
  mockComponentTemplateWithCliSelector,
@@ -116,7 +116,7 @@ describe('lib/prompts/projectAddPrompt', () => {
116
116
  };
117
117
  const components = [separator, templateChoice];
118
118
  const selectedFeatures = ['module'];
119
- const result = await projectAddPromptV3(components, selectedFeatures);
119
+ const result = await projectAddPromptV2(components, selectedFeatures);
120
120
  expect(result.componentTemplate).toEqual([mockComponentTemplate]);
121
121
  });
122
122
  it('should prompt user when no selectedFeatures provided', async () => {
@@ -129,7 +129,7 @@ describe('lib/prompts/projectAddPrompt', () => {
129
129
  mockedPromptUser.mockResolvedValue({
130
130
  componentTemplate: [mockComponentTemplate],
131
131
  });
132
- const result = await projectAddPromptV3(components, selectedFeatures);
132
+ const result = await projectAddPromptV2(components, selectedFeatures);
133
133
  expect(mockedPromptUser).toHaveBeenCalledWith([
134
134
  expect.objectContaining({
135
135
  name: 'componentTemplate',
@@ -1,26 +1,24 @@
1
1
  import { accountNameExistsInConfig } from '@hubspot/local-dev-lib/config';
2
2
  import { promptUser } from './promptUtils.js';
3
- import { i18n } from '../lang.js';
3
+ import { lib } from '../../lang/en.js';
4
4
  import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
5
5
  export function getCliAccountNamePromptConfig(defaultName) {
6
6
  return {
7
7
  name: 'name',
8
- message: i18n(`lib.prompts.accountNamePrompt.enterAccountName`),
8
+ message: lib.prompts.accountNamePrompt.enterAccountName,
9
9
  default: defaultName,
10
10
  validate(val) {
11
11
  if (typeof val !== 'string') {
12
- return i18n(`lib.prompts.accountNamePrompt.errors.invalidName`);
12
+ return lib.prompts.accountNamePrompt.errors.invalidName;
13
13
  }
14
14
  else if (!val.length) {
15
- return i18n(`lib.prompts.accountNamePrompt.errors.nameRequired`);
15
+ return lib.prompts.accountNamePrompt.errors.nameRequired;
16
16
  }
17
17
  else if (val.indexOf(' ') >= 0) {
18
- return i18n(`lib.prompts.accountNamePrompt.errors.spacesInName`);
18
+ return lib.prompts.accountNamePrompt.errors.spacesInName;
19
19
  }
20
20
  return accountNameExistsInConfig(val)
21
- ? i18n(`lib.prompts.accountNamePrompt.errors.accountNameExists`, {
22
- name: val,
23
- })
21
+ ? lib.prompts.accountNamePrompt.errors.accountNameExists(val)
24
22
  : true;
25
23
  },
26
24
  };
@@ -37,14 +35,13 @@ export function hubspotAccountNamePrompt({ accountType, currentPortalCount = 0,
37
35
  let defaultName;
38
36
  if (isSandbox) {
39
37
  promptMessageString = isDevelopmentSandbox
40
- ? i18n(`lib.prompts.accountNamePrompt.enterDevelopmentSandboxName`)
41
- : i18n(`lib.prompts.accountNamePrompt.enterStandardSandboxName`);
38
+ ? lib.prompts.accountNamePrompt.enterDevelopmentSandboxName
39
+ : lib.prompts.accountNamePrompt.enterStandardSandboxName;
42
40
  }
43
41
  else if (isDeveloperTestAccount) {
44
- promptMessageString = i18n(`lib.prompts.accountNamePrompt.enterDeveloperTestAccountName`);
45
- defaultName = i18n(`lib.prompts.accountNamePrompt.developerTestAccountDefaultName`, {
46
- count: currentPortalCount + 1,
47
- });
42
+ promptMessageString =
43
+ lib.prompts.accountNamePrompt.enterDeveloperTestAccountName;
44
+ defaultName = lib.prompts.accountNamePrompt.developerTestAccountDefaultName(currentPortalCount + 1);
48
45
  }
49
46
  return promptUser([
50
47
  {
@@ -52,15 +49,13 @@ export function hubspotAccountNamePrompt({ accountType, currentPortalCount = 0,
52
49
  message: promptMessageString,
53
50
  validate(val) {
54
51
  if (typeof val !== 'string') {
55
- return i18n(`lib.prompts.accountNamePrompt.errors.invalidName`);
52
+ return lib.prompts.accountNamePrompt.errors.invalidName;
56
53
  }
57
54
  else if (!val.trim().length) {
58
- return i18n(`lib.prompts.accountNamePrompt.errors.nameRequired`);
55
+ return lib.prompts.accountNamePrompt.errors.nameRequired;
59
56
  }
60
57
  return accountNameExistsInConfig(val)
61
- ? i18n(`lib.prompts.accountNamePrompt.errors.accountNameExists`, {
62
- name: val,
63
- })
58
+ ? lib.prompts.accountNamePrompt.errors.accountNameExists(val)
64
59
  : true;
65
60
  },
66
61
  default: defaultName,
@@ -1,7 +1,7 @@
1
1
  import { getConfigDefaultAccount, getConfigAccounts, } from '@hubspot/local-dev-lib/config';
2
2
  import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
3
3
  import { promptUser } from './promptUtils.js';
4
- import { i18n } from '../lang.js';
4
+ import { commands } from '../../lang/en.js';
5
5
  import { uiAccountDescription } from '../ui/index.js';
6
6
  function mapAccountChoices(portals) {
7
7
  return (portals?.map(p => ({
@@ -17,7 +17,7 @@ export async function selectAccountFromConfig(prompt = '') {
17
17
  type: 'list',
18
18
  name: 'default',
19
19
  pageSize: 20,
20
- message: prompt || i18n(`commands.account.subcommands.use.promptMessage`),
20
+ message: prompt || commands.account.subcommands.use.promptMessage,
21
21
  choices: mapAccountChoices(accountsList),
22
22
  default: defaultAccount ?? undefined,
23
23
  },
@@ -1,7 +1,7 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import { promptUser } from './promptUtils.js';
4
- import { i18n } from '../lang.js';
4
+ import { lib } from '../../lang/en.js';
5
5
  import { escapeRegExp } from '@hubspot/local-dev-lib/escapeRegExp';
6
6
  const FIELDS_FILES = ['fields.json', 'fields.js', 'fields.cjs', 'fields.mjs'];
7
7
  export async function fieldsJsPrompt(filePath, projectDir, skipFiles = []) {
@@ -26,7 +26,7 @@ export async function fieldsJsPrompt(filePath, projectDir, skipFiles = []) {
26
26
  }));
27
27
  const promptVal = await promptUser([
28
28
  {
29
- message: i18n(`lib.prompts.uploadPrompt.fieldsPrompt`, { dir: fileDir }),
29
+ message: lib.prompts.uploadPrompt.fieldsPrompt(fileDir),
30
30
  type: 'list',
31
31
  name: 'filePathChoice',
32
32
  choices: selection,
@@ -1,10 +1,10 @@
1
1
  import { promptUser } from './promptUtils.js';
2
- import { i18n } from '../lang.js';
2
+ import { lib } from '../../lang/en.js';
3
3
  function getSampleTypesPrompt(choices) {
4
4
  return {
5
5
  type: 'rawlist',
6
6
  name: 'sampleType',
7
- message: i18n(`lib.prompts.createApiSamplePrompt.selectApiSampleApp`),
7
+ message: lib.prompts.createApiSamplePrompt.selectApiSampleApp,
8
8
  choices: choices.map(choice => ({
9
9
  name: `${choice.name} - ${choice.description}`,
10
10
  value: choice.id,
@@ -15,7 +15,7 @@ function getSampleTypesPrompt(choices) {
15
15
  resolve(true);
16
16
  }
17
17
  else {
18
- reject(i18n(`lib.prompts.createApiSamplePrompt.errors.apiSampleAppRequired`));
18
+ reject(lib.prompts.createApiSamplePrompt.errors.apiSampleAppRequired);
19
19
  }
20
20
  });
21
21
  },
@@ -25,7 +25,7 @@ function getLanguagesPrompt(choices) {
25
25
  return {
26
26
  type: 'rawlist',
27
27
  name: 'sampleLanguage',
28
- message: i18n(`lib.prompts.createApiSamplePrompt.selectLanguage`),
28
+ message: lib.prompts.createApiSamplePrompt.selectLanguage,
29
29
  choices: choices.map(choice => ({
30
30
  name: choice,
31
31
  value: choice,
@@ -35,7 +35,7 @@ function getLanguagesPrompt(choices) {
35
35
  if (input && input.length > 0) {
36
36
  resolve(true);
37
37
  }
38
- reject(i18n(`lib.prompts.createApiSamplePrompt.errors.languageRequired`));
38
+ reject(lib.prompts.createApiSamplePrompt.errors.languageRequired);
39
39
  });
40
40
  },
41
41
  };
@@ -94,7 +94,16 @@ export async function createDeveloperTestAccountConfigPrompt(args = {}, supportF
94
94
  },
95
95
  ],
96
96
  });
97
- if (useDefaultAccountLevelsPromptResult.useDefaultAccountLevels === 'manual') {
97
+ if (useDefaultAccountLevelsPromptResult.useDefaultAccountLevels === 'default') {
98
+ accountLevelsArray = [
99
+ { hub: 'MARKETING', tier: AccountTiers.ENTERPRISE },
100
+ { hub: 'OPS', tier: AccountTiers.ENTERPRISE },
101
+ { hub: 'SERVICE', tier: AccountTiers.ENTERPRISE },
102
+ { hub: 'SALES', tier: AccountTiers.ENTERPRISE },
103
+ { hub: 'CONTENT', tier: AccountTiers.ENTERPRISE },
104
+ ];
105
+ }
106
+ else {
98
107
  const accountLevelsPromptResult = await promptUser({
99
108
  name: 'testAccountLevels',
100
109
  message: lib.prompts.createDeveloperTestAccountConfigPrompt.tiersPrompt,
@@ -1,33 +1,33 @@
1
1
  import { promptUser } from './promptUtils.js';
2
- import { i18n } from '../lang.js';
2
+ import { lib } from '../../lang/en.js';
3
3
  const FUNCTIONS_FOLDER_PROMPT = {
4
4
  name: 'functionsFolder',
5
- message: i18n(`lib.prompts.createFunctionPrompt.enterFolder`),
5
+ message: lib.prompts.createFunctionPrompt.enterFolder,
6
6
  validate(val) {
7
7
  if (typeof val !== 'string') {
8
- return i18n(`lib.prompts.createFunctionPrompt.errors.invalid`);
8
+ return lib.prompts.createFunctionPrompt.errors.invalid;
9
9
  }
10
10
  else if (!val.length) {
11
- return i18n(`lib.prompts.createFunctionPrompt.errors.blank`);
11
+ return lib.prompts.createFunctionPrompt.errors.blank;
12
12
  }
13
13
  else if (val.indexOf(' ') >= 0) {
14
- return i18n(`lib.prompts.createFunctionPrompt.errors.space`);
14
+ return lib.prompts.createFunctionPrompt.errors.space;
15
15
  }
16
16
  return true;
17
17
  },
18
18
  };
19
19
  const FUNCTION_FILENAME_PROMPT = {
20
20
  name: 'filename',
21
- message: i18n(`lib.prompts.createFunctionPrompt.enterFilename`),
21
+ message: lib.prompts.createFunctionPrompt.enterFilename,
22
22
  validate(val) {
23
23
  if (typeof val !== 'string') {
24
- return i18n(`lib.prompts.createFunctionPrompt.errors.invalid`);
24
+ return lib.prompts.createFunctionPrompt.errors.invalid;
25
25
  }
26
26
  else if (!val.length) {
27
- return i18n(`lib.prompts.createFunctionPrompt.errors.blank`);
27
+ return lib.prompts.createFunctionPrompt.errors.blank;
28
28
  }
29
29
  else if (val.indexOf(' ') >= 0) {
30
- return i18n(`lib.prompts.createFunctionPrompt.errors.space`);
30
+ return lib.prompts.createFunctionPrompt.errors.space;
31
31
  }
32
32
  return true;
33
33
  },
@@ -35,22 +35,22 @@ const FUNCTION_FILENAME_PROMPT = {
35
35
  const ENDPOINT_METHOD_PROMPT = {
36
36
  type: 'list',
37
37
  name: 'endpointMethod',
38
- message: i18n(`lib.prompts.createFunctionPrompt.selectEndpointMethod`),
38
+ message: lib.prompts.createFunctionPrompt.selectEndpointMethod,
39
39
  default: 'GET',
40
40
  choices: ['DELETE', 'GET', 'PATCH', 'POST', 'PUT'],
41
41
  };
42
42
  const ENDPOINT_PATH_PROMPT = {
43
43
  name: 'endpointPath',
44
- message: i18n(`lib.prompts.createFunctionPrompt.enterEndpointPath`),
44
+ message: lib.prompts.createFunctionPrompt.enterEndpointPath,
45
45
  validate(val) {
46
46
  if (typeof val !== 'string') {
47
- return i18n(`lib.prompts.createFunctionPrompt.errors.invalid`);
47
+ return lib.prompts.createFunctionPrompt.errors.invalid;
48
48
  }
49
49
  else if (!val.length) {
50
- return i18n(`lib.prompts.createFunctionPrompt.errors.blank`);
50
+ return lib.prompts.createFunctionPrompt.errors.blank;
51
51
  }
52
52
  else if (val.indexOf(' ') >= 0) {
53
- return i18n(`lib.prompts.createFunctionPrompt.errors.space`);
53
+ return lib.prompts.createFunctionPrompt.errors.space;
54
54
  }
55
55
  return true;
56
56
  },
@@ -1,14 +1,14 @@
1
1
  import { promptUser } from './promptUtils.js';
2
- import { i18n } from '../lang.js';
2
+ import { lib } from '../../lang/en.js';
3
3
  const MODULE_LABEL_PROMPT = {
4
4
  name: 'moduleLabel',
5
- message: i18n(`lib.prompts.createModulePrompt.enterLabel`),
5
+ message: lib.prompts.createModulePrompt.enterLabel,
6
6
  validate(val) {
7
7
  if (typeof val !== 'string') {
8
- return i18n(`lib.prompts.createModulePrompt.errors.invalidLabel`);
8
+ return lib.prompts.createModulePrompt.errors.invalidLabel;
9
9
  }
10
10
  else if (!val.length) {
11
- return i18n(`lib.prompts.createModulePrompt.errors.labelRequired`);
11
+ return lib.prompts.createModulePrompt.errors.labelRequired;
12
12
  }
13
13
  return true;
14
14
  },
@@ -16,13 +16,13 @@ const MODULE_LABEL_PROMPT = {
16
16
  const REACT_TYPE_PROMPT = {
17
17
  type: 'confirm',
18
18
  name: 'reactType',
19
- message: i18n(`lib.prompts.createModulePrompt.selectReactType`),
19
+ message: lib.prompts.createModulePrompt.selectReactType,
20
20
  default: false,
21
21
  };
22
22
  const CONTENT_TYPES_PROMPT = {
23
23
  type: 'checkbox',
24
24
  name: 'contentTypes',
25
- message: i18n(`lib.prompts.createModulePrompt.selectContentType`),
25
+ message: lib.prompts.createModulePrompt.selectContentType,
26
26
  choices: [
27
27
  { name: 'Any', value: 'ANY', checked: true },
28
28
  { name: 'Landing page', value: 'LANDING_PAGE' },
@@ -42,20 +42,20 @@ const CONTENT_TYPES_PROMPT = {
42
42
  if (input.length > 0) {
43
43
  resolve(true);
44
44
  }
45
- reject(i18n(`lib.prompts.createModulePrompt.errors.contentTypeRequired`));
45
+ reject(lib.prompts.createModulePrompt.errors.contentTypeRequired);
46
46
  });
47
47
  },
48
48
  };
49
49
  const GLOBAL_PROMPT = {
50
50
  type: 'confirm',
51
51
  name: 'global',
52
- message: i18n(`lib.prompts.createModulePrompt.confirmGlobal`),
52
+ message: lib.prompts.createModulePrompt.confirmGlobal,
53
53
  default: false,
54
54
  };
55
55
  const AVAILABLE_FOR_NEW_CONTENT = {
56
56
  type: 'confirm',
57
57
  name: 'availableForNewContent',
58
- message: i18n(`lib.prompts.createModulePrompt.availableForNewContent`),
58
+ message: lib.prompts.createModulePrompt.availableForNewContent,
59
59
  default: true,
60
60
  };
61
61
  export function createModulePrompt(commandArgs = {}) {
@@ -1,5 +1,5 @@
1
1
  import { promptUser } from './promptUtils.js';
2
- import { i18n } from '../lang.js';
2
+ import { lib } from '../../lang/en.js';
3
3
  const templateTypeChoices = [
4
4
  { name: 'page', value: 'page-template' },
5
5
  { name: 'email', value: 'email-template' },
@@ -13,7 +13,7 @@ const templateTypeChoices = [
13
13
  const TEMPLATE_TYPE_PROMPT = {
14
14
  type: 'list',
15
15
  name: 'templateType',
16
- message: i18n(`lib.prompts.createTemplatePrompt.selectTemplate`),
16
+ message: lib.prompts.createTemplatePrompt.selectTemplate,
17
17
  default: 'page',
18
18
  choices: templateTypeChoices,
19
19
  };
@@ -2,16 +2,16 @@ import { promptUser } from './promptUtils.js';
2
2
  import { getAccountId } from '@hubspot/local-dev-lib/config';
3
3
  import { fetchProjects } from '@hubspot/local-dev-lib/api/projects';
4
4
  import { logError, ApiErrorContext } from '../errorHandlers/index.js';
5
- import { logger } from '@hubspot/local-dev-lib/logger';
5
+ import { uiLogger } from '../ui/logger.js';
6
6
  import { EXIT_CODES } from '../enums/exitCodes.js';
7
- import { i18n } from '../lang.js';
7
+ import { lib } from '../../lang/en.js';
8
8
  async function createProjectsList(accountId) {
9
9
  try {
10
10
  if (accountId) {
11
11
  const { data: projects } = await fetchProjects(accountId);
12
12
  return projects.results;
13
13
  }
14
- logger.error(i18n(`lib.prompts.downloadProjectPrompt.errors.accountIdRequired`));
14
+ uiLogger.error(lib.prompts.downloadProjectPrompt.errors.accountIdRequired);
15
15
  process.exit(EXIT_CODES.ERROR);
16
16
  }
17
17
  catch (e) {
@@ -28,11 +28,8 @@ export async function downloadProjectPrompt(promptOptions) {
28
28
  message: () => {
29
29
  return promptOptions.project &&
30
30
  !projectsList.find(p => p.name === promptOptions.name)
31
- ? i18n(`lib.prompts.downloadProjectPrompt.errors.projectNotFound`, {
32
- projectName: promptOptions.project,
33
- accountId: accountId || '',
34
- })
35
- : i18n(`lib.prompts.downloadProjectPrompt.selectProject`);
31
+ ? lib.prompts.downloadProjectPrompt.errors.projectNotFound(promptOptions.project, accountId || 0)
32
+ : lib.prompts.downloadProjectPrompt.selectProject;
36
33
  },
37
34
  when: !promptOptions.project ||
38
35
  !projectsList.find(p => p.name === promptOptions.project),
@@ -1,7 +1,2 @@
1
- export declare function installAppBrowserPrompt(installUrl: string, isReinstall?: boolean, staticAuthInstallOptions?: {
2
- testingAccountId: number;
3
- projectAccountId: number;
4
- projectName: string;
5
- appUid: string;
6
- }): Promise<void>;
1
+ export declare function installAppBrowserPrompt(installUrl: string, isReinstall?: boolean): Promise<void>;
7
2
  export declare function installAppAutoPrompt(): Promise<boolean>;
@@ -3,7 +3,7 @@ import { promptUser } from './promptUtils.js';
3
3
  import { EXIT_CODES } from '../enums/exitCodes.js';
4
4
  import { lib } from '../../lang/en.js';
5
5
  import { uiLogger } from '../ui/logger.js';
6
- export async function installAppBrowserPrompt(installUrl, isReinstall = false, staticAuthInstallOptions) {
6
+ export async function installAppBrowserPrompt(installUrl, isReinstall = false) {
7
7
  uiLogger.log('');
8
8
  if (isReinstall) {
9
9
  uiLogger.log(lib.prompts.installAppPrompt.reinstallExplanation);
@@ -11,11 +11,6 @@ export async function installAppBrowserPrompt(installUrl, isReinstall = false, s
11
11
  else {
12
12
  uiLogger.log(lib.prompts.installAppPrompt.explanation);
13
13
  }
14
- if (staticAuthInstallOptions) {
15
- const { testingAccountId, projectAccountId, projectName, appUid } = staticAuthInstallOptions;
16
- uiLogger.log(lib.prompts.installAppPrompt.staticAuthExplanation(projectAccountId, testingAccountId, projectName, appUid));
17
- uiLogger.log('');
18
- }
19
14
  const { shouldOpenBrowser } = await promptUser({
20
15
  name: 'shouldOpenBrowser',
21
16
  type: 'confirm',