@hubspot/cli 7.7.21-experimental.0 → 7.7.21-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/api/__tests__/migrate.test.js +29 -27
  2. package/api/migrate.js +22 -14
  3. package/bin/cli.js +101 -92
  4. package/bin/hs +2 -2
  5. package/bin/hscms +2 -2
  6. package/bin/silenceErrors.js +2 -1
  7. package/commands/__tests__/account.test.js +34 -29
  8. package/commands/__tests__/auth.test.js +16 -11
  9. package/commands/__tests__/cms.test.js +20 -15
  10. package/commands/__tests__/config.test.js +19 -14
  11. package/commands/__tests__/create.test.js +15 -10
  12. package/commands/__tests__/customObject.test.js +19 -14
  13. package/commands/__tests__/doctor.test.js +48 -43
  14. package/commands/__tests__/feedback.test.js +45 -7
  15. package/commands/__tests__/fetch.test.js +28 -29
  16. package/commands/__tests__/filemanager.test.js +19 -14
  17. package/commands/__tests__/function.test.js +21 -16
  18. package/commands/__tests__/getStarted.test.js +50 -55
  19. package/commands/__tests__/hubdb.test.js +22 -17
  20. package/commands/__tests__/init.test.js +17 -12
  21. package/commands/__tests__/lint.test.js +18 -13
  22. package/commands/__tests__/list.test.js +23 -18
  23. package/commands/__tests__/logs.test.js +27 -28
  24. package/commands/__tests__/mcp.test.js +19 -14
  25. package/commands/__tests__/mv.test.js +52 -14
  26. package/commands/__tests__/open.test.js +51 -13
  27. package/commands/__tests__/project.test.js +49 -44
  28. package/commands/__tests__/remove.test.js +51 -13
  29. package/commands/__tests__/sandbox.test.js +19 -14
  30. package/commands/__tests__/secret.test.js +21 -16
  31. package/commands/__tests__/testAccount.test.js +21 -16
  32. package/commands/__tests__/theme.test.js +20 -15
  33. package/commands/account/__tests__/auth.test.js +16 -11
  34. package/commands/account/__tests__/clean.test.js +17 -12
  35. package/commands/account/__tests__/createOverride.test.js +15 -10
  36. package/commands/account/__tests__/info.test.js +16 -11
  37. package/commands/account/__tests__/list.test.js +16 -11
  38. package/commands/account/__tests__/remove.test.js +18 -13
  39. package/commands/account/__tests__/removeOverride.js +13 -8
  40. package/commands/account/__tests__/rename.test.js +20 -15
  41. package/commands/account/__tests__/use.test.js +15 -10
  42. package/commands/account/auth.d.ts +1 -1
  43. package/commands/account/auth.js +67 -65
  44. package/commands/account/clean.d.ts +1 -1
  45. package/commands/account/clean.js +60 -55
  46. package/commands/account/createOverride.d.ts +1 -1
  47. package/commands/account/createOverride.js +57 -52
  48. package/commands/account/info.d.ts +1 -1
  49. package/commands/account/info.js +35 -33
  50. package/commands/account/list.d.ts +1 -1
  51. package/commands/account/list.js +45 -43
  52. package/commands/account/remove.d.ts +1 -1
  53. package/commands/account/remove.js +42 -37
  54. package/commands/account/removeOverride.d.ts +1 -1
  55. package/commands/account/removeOverride.js +43 -38
  56. package/commands/account/rename.d.ts +1 -1
  57. package/commands/account/rename.js +20 -18
  58. package/commands/account/use.d.ts +1 -1
  59. package/commands/account/use.js +31 -29
  60. package/commands/account.d.ts +1 -1
  61. package/commands/account.js +28 -23
  62. package/commands/app/__tests__/install.test.js +52 -0
  63. package/commands/app/__tests__/migrate.test.js +34 -29
  64. package/commands/app/install.d.ts +8 -0
  65. package/commands/app/install.js +127 -0
  66. package/commands/app/migrate.d.ts +2 -2
  67. package/commands/app/migrate.js +43 -40
  68. package/commands/app/secret/__tests__/add.test.js +11 -6
  69. package/commands/app/secret/__tests__/delete.test.js +11 -6
  70. package/commands/app/secret/__tests__/list.test.js +11 -6
  71. package/commands/app/secret/__tests__/update.test.js +11 -6
  72. package/commands/app/secret/add.d.ts +1 -1
  73. package/commands/app/secret/add.js +30 -28
  74. package/commands/app/secret/delete.d.ts +1 -1
  75. package/commands/app/secret/delete.js +36 -34
  76. package/commands/app/secret/list.d.ts +1 -1
  77. package/commands/app/secret/list.js +27 -25
  78. package/commands/app/secret/update.d.ts +1 -1
  79. package/commands/app/secret/update.js +34 -32
  80. package/commands/app/secret.d.ts +1 -1
  81. package/commands/app/secret.js +17 -12
  82. package/commands/app.d.ts +1 -1
  83. package/commands/app.js +16 -6
  84. package/commands/auth.d.ts +1 -1
  85. package/commands/auth.js +72 -70
  86. package/commands/cms/convertFields.d.ts +1 -1
  87. package/commands/cms/convertFields.js +39 -34
  88. package/commands/cms/getReactModule.d.ts +1 -1
  89. package/commands/cms/getReactModule.js +37 -32
  90. package/commands/cms/lighthouseScore.d.ts +1 -1
  91. package/commands/cms/lighthouseScore.js +72 -67
  92. package/commands/cms.d.ts +1 -1
  93. package/commands/cms.js +16 -11
  94. package/commands/completion.d.ts +1 -1
  95. package/commands/completion.js +15 -10
  96. package/commands/config/migrate.d.ts +1 -1
  97. package/commands/config/migrate.js +32 -27
  98. package/commands/config/set.d.ts +1 -1
  99. package/commands/config/set.js +25 -23
  100. package/commands/config.d.ts +1 -1
  101. package/commands/config.js +13 -8
  102. package/commands/create/api-sample.d.ts +1 -1
  103. package/commands/create/api-sample.js +33 -28
  104. package/commands/create/app.d.ts +1 -1
  105. package/commands/create/app.js +5 -3
  106. package/commands/create/function.d.ts +1 -1
  107. package/commands/create/function.js +11 -9
  108. package/commands/create/index.d.ts +1 -1
  109. package/commands/create/index.js +24 -19
  110. package/commands/create/module.d.ts +1 -1
  111. package/commands/create/module.js +14 -12
  112. package/commands/create/react-app.d.ts +1 -1
  113. package/commands/create/react-app.js +5 -3
  114. package/commands/create/template.d.ts +1 -1
  115. package/commands/create/template.js +14 -12
  116. package/commands/create/vue-app.d.ts +1 -1
  117. package/commands/create/vue-app.js +5 -3
  118. package/commands/create/webpack-serverless.d.ts +1 -1
  119. package/commands/create/webpack-serverless.js +5 -3
  120. package/commands/create/website-theme.d.ts +1 -1
  121. package/commands/create/website-theme.js +7 -5
  122. package/commands/create.d.ts +2 -2
  123. package/commands/create.js +35 -30
  124. package/commands/customObject/__tests__/create.test.js +18 -13
  125. package/commands/customObject/__tests__/schema.test.js +23 -18
  126. package/commands/customObject/create.d.ts +1 -1
  127. package/commands/customObject/create.js +30 -28
  128. package/commands/customObject/schema/__tests__/create.test.js +18 -13
  129. package/commands/customObject/schema/__tests__/delete.test.js +18 -13
  130. package/commands/customObject/schema/__tests__/fetch-all.test.js +18 -13
  131. package/commands/customObject/schema/__tests__/fetch.test.js +18 -13
  132. package/commands/customObject/schema/__tests__/list.test.js +18 -13
  133. package/commands/customObject/schema/__tests__/update.test.js +18 -13
  134. package/commands/customObject/schema/create.d.ts +1 -1
  135. package/commands/customObject/schema/create.js +30 -28
  136. package/commands/customObject/schema/delete.d.ts +1 -1
  137. package/commands/customObject/schema/delete.js +26 -24
  138. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  139. package/commands/customObject/schema/fetch-all.js +24 -22
  140. package/commands/customObject/schema/fetch.d.ts +1 -1
  141. package/commands/customObject/schema/fetch.js +26 -24
  142. package/commands/customObject/schema/list.d.ts +1 -1
  143. package/commands/customObject/schema/list.js +15 -13
  144. package/commands/customObject/schema/update.d.ts +1 -1
  145. package/commands/customObject/schema/update.js +34 -32
  146. package/commands/customObject/schema.d.ts +1 -1
  147. package/commands/customObject/schema.js +22 -17
  148. package/commands/customObject.d.ts +1 -1
  149. package/commands/customObject.js +18 -13
  150. package/commands/doctor.d.ts +1 -1
  151. package/commands/doctor.js +33 -28
  152. package/commands/feedback.d.ts +1 -1
  153. package/commands/feedback.js +24 -19
  154. package/commands/fetch.d.ts +1 -1
  155. package/commands/fetch.js +30 -28
  156. package/commands/filemanager/__tests__/fetch.test.js +22 -17
  157. package/commands/filemanager/__tests__/upload.test.js +20 -15
  158. package/commands/filemanager/fetch.d.ts +1 -1
  159. package/commands/filemanager/fetch.js +25 -23
  160. package/commands/filemanager/upload.d.ts +1 -1
  161. package/commands/filemanager/upload.js +44 -39
  162. package/commands/filemanager.d.ts +1 -1
  163. package/commands/filemanager.js +13 -8
  164. package/commands/function/deploy.d.ts +1 -1
  165. package/commands/function/deploy.js +40 -35
  166. package/commands/function/list.d.ts +1 -1
  167. package/commands/function/list.js +29 -24
  168. package/commands/function/server.d.ts +1 -1
  169. package/commands/function/server.js +17 -15
  170. package/commands/function.d.ts +1 -1
  171. package/commands/function.js +18 -12
  172. package/commands/getStarted.d.ts +1 -1
  173. package/commands/getStarted.js +131 -140
  174. package/commands/hubdb/__tests__/clear.test.js +18 -13
  175. package/commands/hubdb/__tests__/create.test.js +18 -13
  176. package/commands/hubdb/__tests__/delete.test.js +18 -13
  177. package/commands/hubdb/__tests__/fetch.test.js +18 -13
  178. package/commands/hubdb/__tests__/list.test.js +28 -23
  179. package/commands/hubdb/clear.d.ts +1 -1
  180. package/commands/hubdb/clear.js +22 -20
  181. package/commands/hubdb/create.d.ts +1 -1
  182. package/commands/hubdb/create.js +35 -30
  183. package/commands/hubdb/delete.d.ts +1 -1
  184. package/commands/hubdb/delete.js +26 -24
  185. package/commands/hubdb/fetch.d.ts +1 -1
  186. package/commands/hubdb/fetch.js +19 -17
  187. package/commands/hubdb/list.d.ts +1 -1
  188. package/commands/hubdb/list.js +35 -33
  189. package/commands/hubdb.d.ts +1 -1
  190. package/commands/hubdb.js +24 -18
  191. package/commands/init.d.ts +1 -1
  192. package/commands/init.js +88 -83
  193. package/commands/lint.d.ts +1 -1
  194. package/commands/lint.js +26 -24
  195. package/commands/list.d.ts +1 -1
  196. package/commands/list.js +37 -32
  197. package/commands/logs.d.ts +1 -1
  198. package/commands/logs.js +37 -35
  199. package/commands/mcp/__tests__/setup.test.js +12 -7
  200. package/commands/mcp/__tests__/start.test.js +12 -7
  201. package/commands/mcp/setup.d.ts +1 -1
  202. package/commands/mcp/setup.js +20 -17
  203. package/commands/mcp/start.d.ts +5 -2
  204. package/commands/mcp/start.js +41 -31
  205. package/commands/mcp.d.ts +1 -1
  206. package/commands/mcp.js +12 -7
  207. package/commands/module/marketplace-validate.d.ts +1 -1
  208. package/commands/module/marketplace-validate.js +26 -21
  209. package/commands/module.d.ts +1 -1
  210. package/commands/module.js +13 -7
  211. package/commands/mv.d.ts +1 -1
  212. package/commands/mv.js +22 -20
  213. package/commands/open.d.ts +1 -1
  214. package/commands/open.js +21 -19
  215. package/commands/project/__tests__/add.test.js +15 -10
  216. package/commands/project/__tests__/create.test.js +19 -14
  217. package/commands/project/__tests__/deploy.test.js +143 -103
  218. package/commands/project/__tests__/devUnifiedFlow.test.js +157 -148
  219. package/commands/project/__tests__/download.test.js +19 -14
  220. package/commands/project/__tests__/installDeps.test.js +70 -32
  221. package/commands/project/__tests__/listBuilds.test.js +19 -14
  222. package/commands/project/__tests__/logs.test.js +94 -56
  223. package/commands/project/__tests__/migrate.test.js +30 -25
  224. package/commands/project/__tests__/migrateApp.test.js +22 -17
  225. package/commands/project/__tests__/open.test.js +21 -16
  226. package/commands/project/__tests__/profile.test.js +19 -14
  227. package/commands/project/__tests__/upload.test.js +23 -18
  228. package/commands/project/__tests__/watch.test.js +19 -14
  229. package/commands/project/add.d.ts +1 -1
  230. package/commands/project/add.js +36 -34
  231. package/commands/project/cloneApp.d.ts +1 -1
  232. package/commands/project/cloneApp.js +72 -67
  233. package/commands/project/create.d.ts +2 -2
  234. package/commands/project/create.js +68 -63
  235. package/commands/project/deploy.d.ts +3 -2
  236. package/commands/project/deploy.js +102 -91
  237. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  238. package/commands/project/dev/deprecatedFlow.js +58 -52
  239. package/commands/project/dev/index.d.ts +1 -1
  240. package/commands/project/dev/index.js +47 -44
  241. package/commands/project/dev/unifiedFlow.d.ts +3 -3
  242. package/commands/project/dev/unifiedFlow.js +74 -67
  243. package/commands/project/download.d.ts +1 -1
  244. package/commands/project/download.js +40 -35
  245. package/commands/project/installDeps.d.ts +1 -1
  246. package/commands/project/installDeps.js +34 -29
  247. package/commands/project/listBuilds.d.ts +1 -1
  248. package/commands/project/listBuilds.js +45 -40
  249. package/commands/project/logs.d.ts +1 -1
  250. package/commands/project/logs.js +54 -52
  251. package/commands/project/migrate.d.ts +1 -1
  252. package/commands/project/migrate.js +26 -24
  253. package/commands/project/migrateApp.d.ts +2 -2
  254. package/commands/project/migrateApp.js +20 -18
  255. package/commands/project/open.d.ts +1 -1
  256. package/commands/project/open.js +30 -25
  257. package/commands/project/profile/add.d.ts +1 -1
  258. package/commands/project/profile/add.js +73 -68
  259. package/commands/project/profile/delete.d.ts +1 -1
  260. package/commands/project/profile/delete.js +56 -51
  261. package/commands/project/profile.d.ts +1 -1
  262. package/commands/project/profile.js +14 -9
  263. package/commands/project/upload.d.ts +1 -1
  264. package/commands/project/upload.js +55 -50
  265. package/commands/project/validate.d.ts +1 -1
  266. package/commands/project/validate.js +40 -35
  267. package/commands/project/watch.d.ts +1 -1
  268. package/commands/project/watch.js +61 -59
  269. package/commands/project.d.ts +1 -1
  270. package/commands/project.js +43 -38
  271. package/commands/remove.d.ts +1 -1
  272. package/commands/remove.js +17 -15
  273. package/commands/sandbox/__tests__/create.test.js +20 -15
  274. package/commands/sandbox/__tests__/delete.test.js +20 -15
  275. package/commands/sandbox/create.d.ts +1 -1
  276. package/commands/sandbox/create.js +69 -67
  277. package/commands/sandbox/delete.d.ts +1 -1
  278. package/commands/sandbox/delete.js +96 -94
  279. package/commands/sandbox.d.ts +1 -1
  280. package/commands/sandbox.js +14 -9
  281. package/commands/secret/__tests__/addSecret.test.js +18 -13
  282. package/commands/secret/__tests__/deleteSecret.test.js +18 -13
  283. package/commands/secret/__tests__/listSecret.test.js +18 -13
  284. package/commands/secret/__tests__/updateSecret.test.js +18 -13
  285. package/commands/secret/addSecret.d.ts +1 -1
  286. package/commands/secret/addSecret.js +28 -26
  287. package/commands/secret/deleteSecret.d.ts +1 -1
  288. package/commands/secret/deleteSecret.js +29 -27
  289. package/commands/secret/listSecret.d.ts +1 -1
  290. package/commands/secret/listSecret.js +21 -19
  291. package/commands/secret/updateSecret.d.ts +1 -1
  292. package/commands/secret/updateSecret.js +27 -25
  293. package/commands/secret.d.ts +1 -1
  294. package/commands/secret.js +18 -13
  295. package/commands/testAccount/__tests__/create.test.js +22 -17
  296. package/commands/testAccount/__tests__/createConfig.test.js +11 -9
  297. package/commands/testAccount/__tests__/delete.test.js +20 -15
  298. package/commands/testAccount/create.d.ts +1 -1
  299. package/commands/testAccount/create.js +57 -62
  300. package/commands/testAccount/createConfig.d.ts +1 -3
  301. package/commands/testAccount/createConfig.js +47 -43
  302. package/commands/testAccount/delete.d.ts +1 -1
  303. package/commands/testAccount/delete.js +19 -17
  304. package/commands/testAccount.d.ts +1 -1
  305. package/commands/testAccount.js +15 -10
  306. package/commands/theme/__tests__/generate-selectors.test.js +12 -7
  307. package/commands/theme/__tests__/marketplace-validate.test.js +19 -14
  308. package/commands/theme/__tests__/preview.test.js +17 -12
  309. package/commands/theme/generate-selectors.d.ts +1 -1
  310. package/commands/theme/generate-selectors.js +28 -23
  311. package/commands/theme/marketplace-validate.d.ts +1 -1
  312. package/commands/theme/marketplace-validate.js +24 -19
  313. package/commands/theme/preview.d.ts +1 -1
  314. package/commands/theme/preview.js +65 -60
  315. package/commands/theme.d.ts +1 -1
  316. package/commands/theme.js +16 -11
  317. package/commands/upload.d.ts +1 -1
  318. package/commands/upload.js +82 -77
  319. package/commands/watch.d.ts +1 -1
  320. package/commands/watch.js +51 -45
  321. package/lang/en.d.ts +62 -23
  322. package/lang/en.js +434 -389
  323. package/lang/en.lyaml +0 -26
  324. package/lib/__tests__/accountTypes.test.js +22 -20
  325. package/lib/__tests__/buildAccount.test.js +90 -27
  326. package/lib/__tests__/commonOpts.test.js +22 -20
  327. package/lib/__tests__/dependencyManagement.test.js +51 -46
  328. package/lib/__tests__/developerTestAccounts.test.js +62 -27
  329. package/lib/__tests__/hasFeature.test.js +8 -6
  330. package/lib/__tests__/npm.test.js +20 -15
  331. package/lib/__tests__/oauth.test.js +28 -23
  332. package/lib/__tests__/parsing.test.js +20 -18
  333. package/lib/__tests__/polling.test.js +26 -24
  334. package/lib/__tests__/process.test.js +19 -14
  335. package/lib/__tests__/projectProfiles.test.js +39 -34
  336. package/lib/__tests__/sandboxSync.test.js +35 -30
  337. package/lib/__tests__/sandboxes.test.js +31 -29
  338. package/lib/__tests__/serverlessLogs.test.js +13 -8
  339. package/lib/__tests__/usageTracking.test.js +42 -47
  340. package/lib/__tests__/validation.test.js +20 -18
  341. package/lib/__tests__/yargsUtils.test.js +41 -6
  342. package/lib/accountTypes.js +34 -24
  343. package/lib/app/__tests__/migrate.test.js +99 -94
  344. package/lib/app/__tests__/migrate_legacy.test.js +31 -29
  345. package/lib/app/migrate.d.ts +3 -3
  346. package/lib/app/migrate.js +145 -127
  347. package/lib/app/migrate_legacy.d.ts +1 -1
  348. package/lib/app/migrate_legacy.js +78 -72
  349. package/lib/app/urls.js +9 -5
  350. package/lib/buildAccount.d.ts +8 -2
  351. package/lib/buildAccount.js +119 -61
  352. package/lib/commonOpts.d.ts +1 -1
  353. package/lib/commonOpts.js +59 -42
  354. package/lib/configMigrate.js +38 -34
  355. package/lib/configOptions.js +40 -34
  356. package/lib/constants.js +34 -31
  357. package/lib/customObject.js +6 -2
  358. package/lib/dependencyManagement.js +45 -37
  359. package/lib/developerTestAccounts.d.ts +1 -1
  360. package/lib/developerTestAccounts.js +39 -34
  361. package/lib/doctor/Diagnosis.d.ts +1 -1
  362. package/lib/doctor/Diagnosis.js +29 -25
  363. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  364. package/lib/doctor/DiagnosticInfoBuilder.js +37 -30
  365. package/lib/doctor/Doctor.d.ts +1 -1
  366. package/lib/doctor/Doctor.js +101 -94
  367. package/lib/doctor/__tests__/Diagnosis.test.js +14 -9
  368. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +34 -29
  369. package/lib/doctor/__tests__/Doctor.test.js +26 -24
  370. package/lib/enums/exitCodes.js +4 -1
  371. package/lib/errorHandlers/index.js +41 -32
  372. package/lib/errorHandlers/suppressError.d.ts +1 -1
  373. package/lib/errorHandlers/suppressError.js +31 -28
  374. package/lib/filesystem.js +15 -8
  375. package/lib/generateSelectors.js +29 -18
  376. package/lib/hasFeature.d.ts +1 -1
  377. package/lib/hasFeature.js +6 -3
  378. package/lib/interpolation.js +18 -11
  379. package/lib/lang.d.ts +1 -1
  380. package/lib/lang.js +27 -22
  381. package/lib/links.js +24 -16
  382. package/lib/marketplaceValidate.js +39 -29
  383. package/lib/mcp/setup.js +105 -72
  384. package/lib/middleware/__test__/configMiddleware.test.js +55 -20
  385. package/lib/middleware/__test__/gitMiddleware.test.js +42 -7
  386. package/lib/middleware/__test__/notificationsMiddleware.test.js +4 -2
  387. package/lib/middleware/__test__/requestMiddleware.test.js +11 -6
  388. package/lib/middleware/__test__/utils.test.js +11 -9
  389. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +44 -9
  390. package/lib/middleware/autoUpdateMiddleware.js +40 -33
  391. package/lib/middleware/configMiddleware.js +42 -36
  392. package/lib/middleware/fireAlarmMiddleware.js +18 -12
  393. package/lib/middleware/gitMiddleware.js +8 -5
  394. package/lib/middleware/notificationsMiddleware.js +23 -16
  395. package/lib/middleware/requestMiddleware.js +10 -4
  396. package/lib/middleware/utils.js +4 -1
  397. package/lib/middleware/yargsChecksMiddleware.js +13 -10
  398. package/lib/npm.js +23 -14
  399. package/lib/oauth.js +35 -29
  400. package/lib/parsing.js +6 -3
  401. package/lib/polling.js +15 -11
  402. package/lib/process.js +19 -11
  403. package/lib/projectProfiles.d.ts +2 -2
  404. package/lib/projectProfiles.js +42 -32
  405. package/lib/projects/ProjectLogsManager.js +21 -18
  406. package/lib/projects/__tests__/AppDevModeInterface.test.js +145 -140
  407. package/lib/projects/__tests__/LocalDevProcess.test.js +73 -68
  408. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +37 -32
  409. package/lib/projects/__tests__/ProjectLogsManager.test.js +58 -56
  410. package/lib/projects/__tests__/buildAndDeploy.test.js +9 -7
  411. package/lib/projects/__tests__/components.test.js +14 -9
  412. package/lib/projects/__tests__/projects.test.js +40 -35
  413. package/lib/projects/__tests__/structure.test.js +81 -43
  414. package/lib/projects/add/__tests__/legacyAddComponent.test.js +28 -26
  415. package/lib/projects/add/__tests__/v3AddComponent.test.js +30 -25
  416. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  417. package/lib/projects/add/legacyAddComponent.js +30 -24
  418. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  419. package/lib/projects/add/v3AddComponent.js +42 -36
  420. package/lib/projects/buildAndDeploy.d.ts +1 -1
  421. package/lib/projects/buildAndDeploy.js +97 -88
  422. package/lib/projects/components.js +25 -19
  423. package/lib/projects/config.d.ts +1 -1
  424. package/lib/projects/config.js +41 -32
  425. package/lib/projects/create/__tests__/legacy.test.js +57 -22
  426. package/lib/projects/create/__tests__/v3.test.js +7 -5
  427. package/lib/projects/create/index.d.ts +3 -3
  428. package/lib/projects/create/index.js +22 -19
  429. package/lib/projects/create/legacy.d.ts +1 -1
  430. package/lib/projects/create/legacy.js +31 -25
  431. package/lib/projects/create/v3.d.ts +3 -3
  432. package/lib/projects/create/v3.js +59 -49
  433. package/lib/projects/ensureProjectExists.js +37 -31
  434. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  435. package/lib/projects/localDev/AppDevModeInterface.js +60 -58
  436. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  437. package/lib/projects/localDev/DevServerManager.js +24 -24
  438. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  439. package/lib/projects/localDev/DevServerManagerV2.js +20 -17
  440. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -1
  441. package/lib/projects/localDev/LocalDevLogger.js +64 -59
  442. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  443. package/lib/projects/localDev/LocalDevManager.js +111 -106
  444. package/lib/projects/localDev/LocalDevProcess.d.ts +4 -4
  445. package/lib/projects/localDev/LocalDevProcess.js +30 -25
  446. package/lib/projects/localDev/LocalDevState.d.ts +3 -3
  447. package/lib/projects/localDev/LocalDevState.js +5 -3
  448. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  449. package/lib/projects/localDev/LocalDevWatcher.js +11 -6
  450. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
  451. package/lib/projects/localDev/LocalDevWebsocketServer.js +27 -25
  452. package/lib/projects/localDev/helpers.d.ts +4 -4
  453. package/lib/projects/localDev/helpers.js +174 -156
  454. package/lib/projects/structure.d.ts +4 -4
  455. package/lib/projects/structure.js +78 -32
  456. package/lib/projects/ui.js +13 -10
  457. package/lib/projects/upload.d.ts +3 -2
  458. package/lib/projects/upload.js +65 -55
  459. package/lib/projects/urls.js +24 -14
  460. package/lib/projects/watch.d.ts +1 -1
  461. package/lib/projects/watch.js +54 -48
  462. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +11 -9
  463. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +16 -11
  464. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  465. package/lib/prompts/accountNamePrompt.js +31 -26
  466. package/lib/prompts/accountsPrompt.js +15 -12
  467. package/lib/prompts/cmsFieldPrompt.js +19 -13
  468. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  469. package/lib/prompts/createApiSamplePrompt.js +12 -9
  470. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +11 -10
  471. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +88 -43
  472. package/lib/prompts/createFunctionPrompt.js +20 -17
  473. package/lib/prompts/createModulePrompt.js +15 -12
  474. package/lib/prompts/createTemplatePrompt.js +8 -5
  475. package/lib/prompts/downloadProjectPrompt.js +20 -17
  476. package/lib/prompts/installAppPrompt.js +26 -19
  477. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  478. package/lib/prompts/personalAccessKeyPrompt.js +47 -40
  479. package/lib/prompts/previewPrompt.js +22 -15
  480. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  481. package/lib/prompts/projectAddPrompt.js +18 -14
  482. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  483. package/lib/prompts/projectDevTargetAccountPrompt.js +54 -48
  484. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  485. package/lib/prompts/projectNameAndDestPrompt.js +29 -22
  486. package/lib/prompts/projectNamePrompt.js +14 -11
  487. package/lib/prompts/projectsLogsPrompt.js +8 -5
  488. package/lib/prompts/promptUtils.d.ts +1 -1
  489. package/lib/prompts/promptUtils.js +87 -70
  490. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  491. package/lib/prompts/sandboxesPrompt.js +30 -26
  492. package/lib/prompts/secretPrompt.js +15 -10
  493. package/lib/prompts/selectAppPrompt.js +14 -11
  494. package/lib/prompts/selectHubDBTablePrompt.js +30 -24
  495. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  496. package/lib/prompts/selectProjectTemplatePrompt.js +13 -10
  497. package/lib/prompts/selectPublicAppForMigrationPrompt.js +25 -22
  498. package/lib/prompts/setAsDefaultAccountPrompt.js +16 -13
  499. package/lib/prompts/uploadPrompt.js +17 -11
  500. package/lib/sandboxSync.d.ts +1 -1
  501. package/lib/sandboxSync.js +65 -58
  502. package/lib/sandboxes.d.ts +1 -1
  503. package/lib/sandboxes.js +76 -68
  504. package/lib/schema.js +23 -12
  505. package/lib/serverlessLogs.js +52 -45
  506. package/lib/testUtils.js +8 -4
  507. package/lib/ui/SpinniesManager.d.ts +1 -1
  508. package/lib/ui/SpinniesManager.js +34 -29
  509. package/lib/ui/boxen.js +14 -11
  510. package/lib/ui/git.js +20 -14
  511. package/lib/ui/index.js +74 -56
  512. package/lib/ui/logger.js +13 -10
  513. package/lib/ui/serverlessFunctionLogs.js +20 -14
  514. package/lib/ui/spinniesUtils.js +39 -24
  515. package/lib/ui/supportHyperlinks.js +6 -3
  516. package/lib/ui/supportsColor.js +17 -11
  517. package/lib/ui/table.js +13 -6
  518. package/lib/upload.js +21 -15
  519. package/lib/usageTracking.d.ts +11 -0
  520. package/lib/usageTracking.js +95 -95
  521. package/lib/utils/hasFlag.js +8 -2
  522. package/lib/validation.js +87 -48
  523. package/lib/yargsUtils.d.ts +1 -1
  524. package/lib/yargsUtils.js +16 -13
  525. package/mcp-server/server.js +8 -6
  526. package/mcp-server/tools/index.js +16 -13
  527. package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
  528. package/mcp-server/tools/project/AddFeatureToProject.js +41 -34
  529. package/mcp-server/tools/project/CreateProjectTool.d.ts +3 -3
  530. package/mcp-server/tools/project/CreateProjectTool.js +52 -45
  531. package/mcp-server/tools/project/DeployProject.d.ts +1 -1
  532. package/mcp-server/tools/project/DeployProject.js +24 -17
  533. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  534. package/mcp-server/tools/project/GuidedWalkthroughTool.js +27 -20
  535. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  536. package/mcp-server/tools/project/UploadProjectTools.js +21 -11
  537. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  538. package/mcp-server/tools/project/ValidateProjectTool.js +19 -12
  539. package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +15 -12
  540. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +16 -13
  541. package/mcp-server/tools/project/__tests__/DeployProject.test.js +9 -6
  542. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +7 -4
  543. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +7 -4
  544. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +7 -4
  545. package/mcp-server/tools/project/constants.js +9 -3
  546. package/mcp-server/types.js +5 -1
  547. package/mcp-server/utils/__tests__/command.test.js +11 -9
  548. package/mcp-server/utils/__tests__/project.test.js +26 -18
  549. package/mcp-server/utils/command.d.ts +1 -1
  550. package/mcp-server/utils/command.js +11 -4
  551. package/mcp-server/utils/content.d.ts +1 -1
  552. package/mcp-server/utils/content.js +6 -2
  553. package/mcp-server/utils/project.js +17 -8
  554. package/mcp-server/utils/toolUsageTracking.d.ts +1 -0
  555. package/mcp-server/utils/toolUsageTracking.js +25 -0
  556. package/package.json +13 -17
  557. package/types/{cms.d.ts → Cms.d.ts} +1 -1
  558. package/types/Cms.js +2 -0
  559. package/types/LocalDev.d.ts +4 -4
  560. package/types/LocalDev.js +2 -1
  561. package/types/ProjectComponents.d.ts +2 -2
  562. package/types/ProjectComponents.js +2 -1
  563. package/types/Projects.d.ts +1 -1
  564. package/types/Projects.js +5 -2
  565. package/types/Prompts.js +2 -1
  566. package/types/Sandboxes.js +2 -0
  567. package/types/Yargs.js +2 -1
  568. package/types/sandboxes.js +0 -1
  569. /package/{types/cms.js → commands/app/__tests__/install.test.d.ts} +0 -0
  570. /package/types/{sandboxes.d.ts → Sandboxes.d.ts} +0 -0
package/lib/lang.js CHANGED
@@ -1,13 +1,18 @@
1
- import util from 'util';
2
- import path, { dirname } from 'path';
3
- import fs from 'fs-extra';
4
- import yaml from 'js-yaml';
5
- import { logger } from '@hubspot/local-dev-lib/logger';
6
- import { interpolate } from './interpolation.js';
7
- import { fileURLToPath } from 'url';
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = dirname(__filename);
10
- export const MISSING_LANGUAGE_DATA_PREFIX = '[Missing language data]';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MISSING_LANGUAGE_DATA_PREFIX = void 0;
7
+ exports.i18n = i18n;
8
+ exports.setLangData = setLangData;
9
+ const util_1 = __importDefault(require("util"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const fs_extra_1 = __importDefault(require("fs-extra"));
12
+ const js_yaml_1 = __importDefault(require("js-yaml"));
13
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
14
+ const interpolation_1 = require("./interpolation");
15
+ exports.MISSING_LANGUAGE_DATA_PREFIX = '[Missing language data]';
11
16
  let locale;
12
17
  let languageObj;
13
18
  function loadLanguageFromYaml() {
@@ -17,20 +22,20 @@ function loadLanguageFromYaml() {
17
22
  const nodeLocale = Intl.DateTimeFormat()
18
23
  .resolvedOptions()
19
24
  .locale.split('-')[0];
20
- const languageFilePath = path.join(__dirname, `../lang/${nodeLocale}.lyaml`);
21
- const languageFileExists = fs.existsSync(languageFilePath);
25
+ const languageFilePath = path_1.default.join(__dirname, `../lang/${nodeLocale}.lyaml`);
26
+ const languageFileExists = fs_extra_1.default.existsSync(languageFilePath);
22
27
  // Fall back to using the default language file
23
28
  locale = languageFileExists ? nodeLocale : 'en';
24
- languageObj = yaml.load(fs.readFileSync(path.join(__dirname, `../lang/${locale}.lyaml`), 'utf8'));
25
- logger.debug('Loaded language data: ', util.inspect(languageObj, true, 999, true));
29
+ languageObj = js_yaml_1.default.load(fs_extra_1.default.readFileSync(path_1.default.join(__dirname, `../lang/${locale}.lyaml`), 'utf8'));
30
+ logger_1.logger.debug('Loaded language data: ', util_1.default.inspect(languageObj, true, 999, true));
26
31
  }
27
32
  catch (e) {
28
- logger.error('Error loading language data: ', e);
33
+ logger_1.logger.error('Error loading language data: ', e);
29
34
  }
30
35
  }
31
36
  function getTextValue(lookupDotNotation) {
32
37
  const lookupProps = [locale, ...lookupDotNotation.split('.')];
33
- const missingTextData = `${MISSING_LANGUAGE_DATA_PREFIX}: ${lookupProps.join('.')}`;
38
+ const missingTextData = `${exports.MISSING_LANGUAGE_DATA_PREFIX}: ${lookupProps.join('.')}`;
34
39
  let textValue = languageObj;
35
40
  let previouslyCheckedProp = lookupProps[0];
36
41
  try {
@@ -42,8 +47,8 @@ function getTextValue(lookupDotNotation) {
42
47
  });
43
48
  }
44
49
  catch (e) {
45
- logger.debug(`Unable to access language property: ${lookupProps.join('.')}. Failed to access prop "${previouslyCheckedProp}".`);
46
- logger.error('Unable to access language property.');
50
+ logger_1.logger.debug(`Unable to access language property: ${lookupProps.join('.')}. Failed to access prop "${previouslyCheckedProp}".`);
51
+ logger_1.logger.error('Unable to access language property.');
47
52
  return missingTextData;
48
53
  }
49
54
  if (!textValue) {
@@ -54,7 +59,7 @@ function getTextValue(lookupDotNotation) {
54
59
  }
55
60
  return textValue;
56
61
  }
57
- export function i18n(lookupDotNotation, options = {}) {
62
+ function i18n(lookupDotNotation, options = {}) {
58
63
  if (!languageObj) {
59
64
  loadLanguageFromYaml();
60
65
  }
@@ -62,10 +67,10 @@ export function i18n(lookupDotNotation, options = {}) {
62
67
  throw new Error(`i18n must be passed a string value for lookupDotNotation, received ${typeof lookupDotNotation}`);
63
68
  }
64
69
  const textValue = getTextValue(lookupDotNotation);
65
- const shouldInterpolate = !textValue.startsWith(MISSING_LANGUAGE_DATA_PREFIX);
66
- return shouldInterpolate ? interpolate(textValue, options) : textValue;
70
+ const shouldInterpolate = !textValue.startsWith(exports.MISSING_LANGUAGE_DATA_PREFIX);
71
+ return shouldInterpolate ? (0, interpolation_1.interpolate)(textValue, options) : textValue;
67
72
  }
68
- export function setLangData(newLocale, newLangObj) {
73
+ function setLangData(newLocale, newLangObj) {
69
74
  locale = newLocale;
70
75
  languageObj = newLangObj;
71
76
  }
package/lib/links.js CHANGED
@@ -1,9 +1,17 @@
1
- import open from 'open';
2
- import { getEnv } from '@hubspot/local-dev-lib/config';
3
- import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
4
- import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
5
- import { logger } from '@hubspot/local-dev-lib/logger';
6
- import { getTableContents, getTableHeader } from './ui/table.js';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSiteLinksAsArray = getSiteLinksAsArray;
7
+ exports.logSiteLinks = logSiteLinks;
8
+ exports.openLink = openLink;
9
+ const open_1 = __importDefault(require("open"));
10
+ const config_1 = require("@hubspot/local-dev-lib/config");
11
+ const environments_1 = require("@hubspot/local-dev-lib/constants/environments");
12
+ const urls_1 = require("@hubspot/local-dev-lib/urls");
13
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
14
+ const table_1 = require("./ui/table");
7
15
  const SITE_LINKS = {
8
16
  APPS_MARKETPLACE: {
9
17
  shortcut: 'apps-marketplace',
@@ -74,28 +82,28 @@ const SITE_LINKS = {
74
82
  getUrl: (accountId, baseUrl) => `${baseUrl}/website/${accountId}/pages/site`,
75
83
  },
76
84
  };
77
- export function getSiteLinksAsArray(accountId) {
78
- const baseUrl = getHubSpotWebsiteOrigin(getEnv() === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
85
+ function getSiteLinksAsArray(accountId) {
86
+ const baseUrl = (0, urls_1.getHubSpotWebsiteOrigin)((0, config_1.getEnv)() === 'qa' ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD);
79
87
  return Object.values(SITE_LINKS)
80
88
  .sort((a, b) => (a.shortcut < b.shortcut ? -1 : 1))
81
89
  .map(l => ({ ...l, url: l.getUrl(accountId, baseUrl) }));
82
90
  }
83
- export function logSiteLinks(accountId) {
91
+ function logSiteLinks(accountId) {
84
92
  const linksAsArray = getSiteLinksAsArray(accountId).map(l => [
85
93
  `${l.shortcut}${l.alias ? ` [alias: ${l.alias}]` : ''}`,
86
94
  '=>',
87
95
  l.url,
88
96
  ]);
89
- linksAsArray.unshift(getTableHeader(['Shortcut', '', 'Url']));
90
- logger.log(getTableContents(linksAsArray));
97
+ linksAsArray.unshift((0, table_1.getTableHeader)(['Shortcut', '', 'Url']));
98
+ logger_1.logger.log((0, table_1.getTableContents)(linksAsArray));
91
99
  }
92
- export function openLink(accountId, shortcut) {
100
+ function openLink(accountId, shortcut) {
93
101
  const match = Object.values(SITE_LINKS).find(l => l.shortcut === shortcut || (l.alias && l.alias === shortcut));
94
102
  if (!match) {
95
- logger.error(`We couldn't find a shortcut matching ${shortcut}. Type 'hs open list' to see a list of available shortcuts`);
103
+ logger_1.logger.error(`We couldn't find a shortcut matching ${shortcut}. Type 'hs open list' to see a list of available shortcuts`);
96
104
  return;
97
105
  }
98
- const baseUrl = getHubSpotWebsiteOrigin(getEnv() === 'qa' ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD);
99
- open(match.getUrl(accountId, baseUrl), { url: true });
100
- logger.success(`We opened ${match.getUrl(accountId, baseUrl)} in your browser`);
106
+ const baseUrl = (0, urls_1.getHubSpotWebsiteOrigin)((0, config_1.getEnv)() === 'qa' ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD);
107
+ (0, open_1.default)(match.getUrl(accountId, baseUrl), { url: true });
108
+ logger_1.logger.success(`We opened ${match.getUrl(accountId, baseUrl)} in your browser`);
101
109
  }
@@ -1,12 +1,22 @@
1
- import chalk from 'chalk';
2
- import { requestValidation, getValidationStatus, getValidationResults, } from '@hubspot/local-dev-lib/api/marketplaceValidation';
3
- import { uiLogger } from './ui/logger.js';
4
- import { EXIT_CODES } from './enums/exitCodes.js';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.kickOffValidation = kickOffValidation;
7
+ exports.pollForValidationFinish = pollForValidationFinish;
8
+ exports.fetchValidationResults = fetchValidationResults;
9
+ exports.processValidationErrors = processValidationErrors;
10
+ exports.displayValidationResults = displayValidationResults;
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const marketplaceValidation_1 = require("@hubspot/local-dev-lib/api/marketplaceValidation");
13
+ const logger_1 = require("./ui/logger");
14
+ const exitCodes_1 = require("./enums/exitCodes");
5
15
  const SLEEP_TIME = 2000;
6
- export async function kickOffValidation(accountId, assetType, src) {
16
+ async function kickOffValidation(accountId, assetType, src) {
7
17
  const requestGroup = 'EXTERNAL_DEVELOPER';
8
18
  try {
9
- const { data: requestResult } = await requestValidation(accountId, {
19
+ const { data: requestResult } = await (0, marketplaceValidation_1.requestValidation)(accountId, {
10
20
  path: src,
11
21
  assetType,
12
22
  requestGroup,
@@ -14,14 +24,14 @@ export async function kickOffValidation(accountId, assetType, src) {
14
24
  return requestResult;
15
25
  }
16
26
  catch (err) {
17
- uiLogger.debug(err);
18
- process.exit(EXIT_CODES.ERROR);
27
+ logger_1.uiLogger.debug(err);
28
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
19
29
  }
20
30
  }
21
- export async function pollForValidationFinish(accountId, validationId) {
31
+ async function pollForValidationFinish(accountId, validationId) {
22
32
  try {
23
33
  const checkValidationStatus = async () => {
24
- const { data: validationStatus } = await getValidationStatus(accountId, {
34
+ const { data: validationStatus } = await (0, marketplaceValidation_1.getValidationStatus)(accountId, {
25
35
  validationId,
26
36
  });
27
37
  if (validationStatus === 'REQUESTED') {
@@ -32,42 +42,42 @@ export async function pollForValidationFinish(accountId, validationId) {
32
42
  await checkValidationStatus();
33
43
  }
34
44
  catch (err) {
35
- uiLogger.debug(err);
36
- process.exit(EXIT_CODES.ERROR);
45
+ logger_1.uiLogger.debug(err);
46
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
37
47
  }
38
48
  }
39
- export async function fetchValidationResults(accountId, validationId) {
49
+ async function fetchValidationResults(accountId, validationId) {
40
50
  try {
41
- const { data: validationResults } = await getValidationResults(accountId, {
51
+ const { data: validationResults } = await (0, marketplaceValidation_1.getValidationResults)(accountId, {
42
52
  validationId,
43
53
  });
44
54
  return validationResults;
45
55
  }
46
56
  catch (err) {
47
- uiLogger.debug(err);
48
- process.exit(EXIT_CODES.ERROR);
57
+ logger_1.uiLogger.debug(err);
58
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
49
59
  }
50
60
  }
51
- export function processValidationErrors(invalidPathError, validationResults) {
61
+ function processValidationErrors(invalidPathError, validationResults) {
52
62
  if (validationResults.errors.length) {
53
63
  const { assetPath, errors } = validationResults;
54
64
  errors.forEach(err => {
55
65
  if (err.failureReasonType === 'DOWNLOAD_EMPTY') {
56
- uiLogger.error(invalidPathError(assetPath));
66
+ logger_1.uiLogger.error(invalidPathError(assetPath));
57
67
  }
58
68
  else {
59
- uiLogger.error(`${err.context}`);
69
+ logger_1.uiLogger.error(`${err.context}`);
60
70
  }
61
71
  });
62
- process.exit(EXIT_CODES.ERROR);
72
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
63
73
  }
64
74
  }
65
75
  function displayFileInfo(file, line, resultsCopy) {
66
76
  if (file) {
67
- uiLogger.log(resultsCopy.warnings.file(file));
77
+ logger_1.uiLogger.log(resultsCopy.warnings.file(file));
68
78
  }
69
79
  if (line) {
70
- uiLogger.log(resultsCopy.warnings.lineNumber(line.toString()));
80
+ logger_1.uiLogger.log(resultsCopy.warnings.lineNumber(line.toString()));
71
81
  }
72
82
  }
73
83
  function displayResults(checks, resultsCopy) {
@@ -77,19 +87,19 @@ function displayResults(checks, resultsCopy) {
77
87
  const failedValidations = results.filter(test => test.status === 'FAIL');
78
88
  const warningValidations = results.filter(test => test.status === 'WARN');
79
89
  failedValidations.forEach(val => {
80
- uiLogger.error(`${val.message}`);
90
+ logger_1.uiLogger.error(`${val.message}`);
81
91
  displayFileInfo(val.file, val.line, resultsCopy);
82
92
  });
83
93
  warningValidations.forEach(val => {
84
- uiLogger.warn(`${val.message}`);
94
+ logger_1.uiLogger.warn(`${val.message}`);
85
95
  displayFileInfo(val.file, val.line, resultsCopy);
86
96
  });
87
97
  }
88
98
  if (status === 'PASS') {
89
- uiLogger.success(resultsCopy.noErrors);
99
+ logger_1.uiLogger.success(resultsCopy.noErrors);
90
100
  results.forEach(test => {
91
101
  if (test.status === 'WARN') {
92
- uiLogger.warn(`${test.message}`);
102
+ logger_1.uiLogger.warn(`${test.message}`);
93
103
  displayFileInfo(test.file, test.line, resultsCopy);
94
104
  }
95
105
  });
@@ -97,10 +107,10 @@ function displayResults(checks, resultsCopy) {
97
107
  }
98
108
  return;
99
109
  }
100
- export function displayValidationResults(resultsCopy, validationResults) {
110
+ function displayValidationResults(resultsCopy, validationResults) {
101
111
  Object.keys(validationResults.results).forEach(type => {
102
- uiLogger.log(chalk.bold(resultsCopy[type.toLowerCase()]));
112
+ logger_1.uiLogger.log(chalk_1.default.bold(resultsCopy[type.toLowerCase()]));
103
113
  displayResults(validationResults.results[type], resultsCopy);
104
- uiLogger.log('');
114
+ logger_1.uiLogger.log('');
105
115
  });
106
116
  }
package/lib/mcp/setup.js CHANGED
@@ -1,38 +1,50 @@
1
- import { uiLogger } from '../ui/logger.js';
2
- import { commands } from '../../lang/en.js';
3
- import { promptUser } from '../prompts/promptUtils.js';
4
- import SpinniesManager from '../ui/SpinniesManager.js';
5
- import { logError } from '../errorHandlers/index.js';
6
- import { execAsync } from '../../mcp-server/utils/command.js';
7
- import { spawn } from 'node:child_process';
8
- import path from 'path';
9
- import os from 'os';
10
- import fs from 'fs-extra';
11
- import { existsSync } from 'fs';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.supportedTools = void 0;
7
+ exports.addMintlifyMcpServer = addMintlifyMcpServer;
8
+ exports.setupMintlify = setupMintlify;
9
+ exports.addMcpServerToConfig = addMcpServerToConfig;
10
+ exports.setupClaudeCode = setupClaudeCode;
11
+ exports.setupCursor = setupCursor;
12
+ exports.setupWindsurf = setupWindsurf;
13
+ const logger_1 = require("../ui/logger");
14
+ const en_1 = require("../../lang/en");
15
+ const promptUtils_1 = require("../prompts/promptUtils");
16
+ const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
17
+ const errorHandlers_1 = require("../errorHandlers");
18
+ const command_1 = require("../../mcp-server/utils/command");
19
+ const child_process_1 = require("child_process");
20
+ const path_1 = __importDefault(require("path"));
21
+ const os_1 = __importDefault(require("os"));
22
+ const fs_extra_1 = __importDefault(require("fs-extra"));
23
+ const fs_1 = require("fs");
12
24
  const mcpServerName = 'hubspot-cli-mcp';
13
25
  const claudeCode = 'claude';
14
26
  const windsurf = 'windsurf';
15
27
  const cursor = 'cursor';
16
28
  const supportedMintlifyClients = [windsurf, cursor];
17
- export const supportedTools = [
18
- { name: commands.mcp.setup.claudeCode, value: claudeCode },
19
- { name: commands.mcp.setup.cursor, value: cursor },
20
- { name: commands.mcp.setup.windsurf, value: windsurf },
29
+ exports.supportedTools = [
30
+ { name: en_1.commands.mcp.setup.claudeCode, value: claudeCode },
31
+ { name: en_1.commands.mcp.setup.cursor, value: cursor },
32
+ { name: en_1.commands.mcp.setup.windsurf, value: windsurf },
21
33
  ];
22
34
  const defaultMcpCommand = {
23
35
  command: 'hs',
24
36
  args: ['mcp', 'start'],
25
37
  };
26
- export async function addMintlifyMcpServer(installTargets) {
38
+ async function addMintlifyMcpServer(installTargets) {
27
39
  await runSetupFunction(() => setupMintlify(installTargets));
28
40
  }
29
- export async function setupMintlify(derivedTargets = supportedMintlifyClients) {
30
- uiLogger.info(commands.mcp.setup.installingDocSearch);
31
- uiLogger.log('');
41
+ async function setupMintlify(derivedTargets = supportedMintlifyClients) {
42
+ logger_1.uiLogger.info(en_1.commands.mcp.setup.installingDocSearch);
43
+ logger_1.uiLogger.log('');
32
44
  return new Promise(resolve => {
33
45
  const subcommands = ['mint-mcp', 'add', 'hubspot-migration'];
34
46
  const docsSearchClients = derivedTargets.filter(target => supportedMintlifyClients.includes(target));
35
- const childProcess = spawn(`npx`, docsSearchClients && docsSearchClients.length
47
+ const childProcess = (0, child_process_1.spawn)(`npx`, docsSearchClients && docsSearchClients.length
36
48
  ? [...subcommands, '--client', ...docsSearchClients]
37
49
  : subcommands, {
38
50
  stdio: 'inherit',
@@ -45,18 +57,18 @@ export async function setupMintlify(derivedTargets = supportedMintlifyClients) {
45
57
  });
46
58
  });
47
59
  }
48
- export async function addMcpServerToConfig(targets) {
60
+ async function addMcpServerToConfig(targets) {
49
61
  try {
50
62
  let derivedTargets = [];
51
63
  if (!targets || targets.length === 0) {
52
- const { selectedTargets } = await promptUser({
64
+ const { selectedTargets } = await (0, promptUtils_1.promptUser)({
53
65
  name: 'selectedTargets',
54
66
  type: 'checkbox',
55
- message: commands.mcp.setup.prompts.targets,
56
- choices: supportedTools,
67
+ message: en_1.commands.mcp.setup.prompts.targets,
68
+ choices: exports.supportedTools,
57
69
  validate: (choices) => {
58
70
  return choices.length === 0
59
- ? commands.mcp.setup.prompts.targetsRequired
71
+ ? en_1.commands.mcp.setup.prompts.targetsRequired
60
72
  : true;
61
73
  },
62
74
  });
@@ -65,7 +77,7 @@ export async function addMcpServerToConfig(targets) {
65
77
  else {
66
78
  derivedTargets = targets;
67
79
  }
68
- SpinniesManager.init();
80
+ SpinniesManager_1.default.init();
69
81
  if (derivedTargets.includes(claudeCode)) {
70
82
  await runSetupFunction(setupClaudeCode);
71
83
  }
@@ -75,12 +87,12 @@ export async function addMcpServerToConfig(targets) {
75
87
  if (derivedTargets.includes(windsurf)) {
76
88
  await runSetupFunction(setupWindsurf);
77
89
  }
78
- uiLogger.info(commands.mcp.setup.success(derivedTargets));
90
+ logger_1.uiLogger.info(en_1.commands.mcp.setup.success(derivedTargets));
79
91
  return derivedTargets;
80
92
  }
81
93
  catch (error) {
82
- SpinniesManager.fail('mcpSetup', {
83
- text: commands.mcp.setup.spinners.failedToConfigure,
94
+ SpinniesManager_1.default.fail('mcpSetup', {
95
+ text: en_1.commands.mcp.setup.spinners.failedToConfigure,
84
96
  });
85
97
  throw error;
86
98
  }
@@ -93,22 +105,38 @@ async function runSetupFunction(func) {
93
105
  }
94
106
  function setupMcpConfigFile(config) {
95
107
  try {
96
- SpinniesManager.add('spinner', {
108
+ SpinniesManager_1.default.add('spinner', {
97
109
  text: config.configuringMessage,
98
110
  });
99
- if (!existsSync(config.configPath)) {
100
- fs.writeFileSync(config.configPath, JSON.stringify({}, null, 2));
111
+ if (!(0, fs_1.existsSync)(config.configPath)) {
112
+ fs_extra_1.default.writeFileSync(config.configPath, JSON.stringify({}, null, 2));
101
113
  }
102
114
  let mcpConfig = {};
115
+ let configContent;
116
+ try {
117
+ configContent = fs_extra_1.default.readFileSync(config.configPath, 'utf8');
118
+ }
119
+ catch (error) {
120
+ SpinniesManager_1.default.fail('spinner', {
121
+ text: config.failedMessage,
122
+ });
123
+ (0, errorHandlers_1.logError)(error);
124
+ return false;
125
+ }
103
126
  try {
104
- const configContent = fs.readFileSync(config.configPath, 'utf8');
105
- mcpConfig = JSON.parse(configContent);
127
+ // In the event the file exists, but is empty, initialize it to and empty object
128
+ if (configContent.trim() === '') {
129
+ mcpConfig = {};
130
+ }
131
+ else {
132
+ mcpConfig = JSON.parse(configContent);
133
+ }
106
134
  }
107
135
  catch (error) {
108
- SpinniesManager.fail('spinner', {
136
+ SpinniesManager_1.default.fail('spinner', {
109
137
  text: config.failedMessage,
110
138
  });
111
- logError(error);
139
+ logger_1.uiLogger.error(en_1.commands.mcp.setup.errors.errorParsingJsonFIle(config.configPath, error instanceof Error ? error.message : `${error}`));
112
140
  return false;
113
141
  }
114
142
  // Initialize mcpServers if it doesn't exist
@@ -120,87 +148,92 @@ function setupMcpConfigFile(config) {
120
148
  ...config.mcpCommand,
121
149
  };
122
150
  // Write the updated config
123
- fs.writeFileSync(config.configPath, JSON.stringify(mcpConfig, null, 2));
124
- SpinniesManager.succeed('spinner', {
151
+ fs_extra_1.default.writeFileSync(config.configPath, JSON.stringify(mcpConfig, null, 2));
152
+ SpinniesManager_1.default.succeed('spinner', {
125
153
  text: config.configuredMessage,
126
154
  });
127
155
  return true;
128
156
  }
129
157
  catch (error) {
130
- SpinniesManager.fail('spinner', {
158
+ SpinniesManager_1.default.fail('spinner', {
131
159
  text: config.failedMessage,
132
160
  });
133
- logError(error);
161
+ (0, errorHandlers_1.logError)(error);
134
162
  return false;
135
163
  }
136
164
  }
137
- export async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
165
+ async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
138
166
  try {
139
- SpinniesManager.add('claudeCode', {
140
- text: commands.mcp.setup.spinners.configuringClaudeCode,
167
+ SpinniesManager_1.default.add('claudeCode', {
168
+ text: en_1.commands.mcp.setup.spinners.configuringClaudeCode,
141
169
  });
142
170
  try {
143
171
  // Check if claude command is available
144
- await execAsync('claude --version');
172
+ await (0, command_1.execAsync)('claude --version');
145
173
  // Run claude mcp add command
146
174
  const mcpConfig = JSON.stringify({
147
175
  type: 'stdio',
148
- ...mcpCommand,
176
+ ...buildCommandWithAgentString(mcpCommand, claudeCode),
149
177
  });
150
- const { stdout } = await execAsync('claude mcp list');
178
+ const { stdout } = await (0, command_1.execAsync)('claude mcp list');
151
179
  if (stdout.includes(mcpServerName)) {
152
- SpinniesManager.update('claudeCode', {
153
- text: commands.mcp.setup.spinners.alreadyInstalled,
180
+ SpinniesManager_1.default.update('claudeCode', {
181
+ text: en_1.commands.mcp.setup.spinners.alreadyInstalled,
154
182
  });
155
- await execAsync(`claude mcp remove "${mcpServerName}" --scope user`);
183
+ await (0, command_1.execAsync)(`claude mcp remove "${mcpServerName}" --scope user`);
156
184
  }
157
- await execAsync(`claude mcp add-json "${mcpServerName}" '${mcpConfig}' --scope user`);
158
- SpinniesManager.succeed('claudeCode', {
159
- text: commands.mcp.setup.spinners.configuredClaudeCode,
185
+ await (0, command_1.execAsync)(`claude mcp add-json "${mcpServerName}" '${mcpConfig}' --scope user`);
186
+ SpinniesManager_1.default.succeed('claudeCode', {
187
+ text: en_1.commands.mcp.setup.spinners.configuredClaudeCode,
160
188
  });
161
189
  return true;
162
190
  }
163
191
  catch (error) {
164
192
  if (error instanceof Error &&
165
193
  error.message.includes('claude: command not found')) {
166
- SpinniesManager.fail('claudeCode', {
167
- text: commands.mcp.setup.spinners.claudeCodeNotFound,
194
+ SpinniesManager_1.default.fail('claudeCode', {
195
+ text: en_1.commands.mcp.setup.spinners.claudeCodeNotFound,
168
196
  });
169
197
  }
170
198
  else {
171
- SpinniesManager.fail('claudeCode', {
172
- text: commands.mcp.setup.spinners.claudeCodeInstallFailed,
199
+ SpinniesManager_1.default.fail('claudeCode', {
200
+ text: en_1.commands.mcp.setup.spinners.claudeCodeInstallFailed,
173
201
  });
174
- logError(error);
202
+ (0, errorHandlers_1.logError)(error);
175
203
  }
176
204
  return false;
177
205
  }
178
206
  }
179
207
  catch (error) {
180
- SpinniesManager.fail('claudeCode', {
181
- text: commands.mcp.setup.spinners.claudeCodeInstallFailed,
208
+ SpinniesManager_1.default.fail('claudeCode', {
209
+ text: en_1.commands.mcp.setup.spinners.claudeCodeInstallFailed,
182
210
  });
183
- logError(error);
211
+ (0, errorHandlers_1.logError)(error);
184
212
  return false;
185
213
  }
186
214
  }
187
- export function setupCursor(mcpCommand = defaultMcpCommand) {
188
- const cursorConfigPath = path.join(os.homedir(), '.cursor', 'mcp.json');
215
+ function setupCursor(mcpCommand = defaultMcpCommand) {
216
+ const cursorConfigPath = path_1.default.join(os_1.default.homedir(), '.cursor', 'mcp.json');
189
217
  return setupMcpConfigFile({
190
218
  configPath: cursorConfigPath,
191
- configuringMessage: commands.mcp.setup.spinners.configuringCursor,
192
- configuredMessage: commands.mcp.setup.spinners.configuredCursor,
193
- failedMessage: commands.mcp.setup.spinners.failedToConfigureCursor,
194
- mcpCommand,
219
+ configuringMessage: en_1.commands.mcp.setup.spinners.configuringCursor,
220
+ configuredMessage: en_1.commands.mcp.setup.spinners.configuredCursor,
221
+ failedMessage: en_1.commands.mcp.setup.spinners.failedToConfigureCursor,
222
+ mcpCommand: buildCommandWithAgentString(mcpCommand, cursor),
195
223
  });
196
224
  }
197
- export function setupWindsurf(mcpCommand = defaultMcpCommand) {
198
- const windsurfConfigPath = path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json');
225
+ function setupWindsurf(mcpCommand = defaultMcpCommand) {
226
+ const windsurfConfigPath = path_1.default.join(os_1.default.homedir(), '.codeium', 'windsurf', 'mcp_config.json');
199
227
  return setupMcpConfigFile({
200
228
  configPath: windsurfConfigPath,
201
- configuringMessage: commands.mcp.setup.spinners.configuringWindsurf,
202
- configuredMessage: commands.mcp.setup.spinners.configuredWindsurf,
203
- failedMessage: commands.mcp.setup.spinners.failedToConfigureWindsurf,
204
- mcpCommand,
229
+ configuringMessage: en_1.commands.mcp.setup.spinners.configuringWindsurf,
230
+ configuredMessage: en_1.commands.mcp.setup.spinners.configuredWindsurf,
231
+ failedMessage: en_1.commands.mcp.setup.spinners.failedToConfigureWindsurf,
232
+ mcpCommand: buildCommandWithAgentString(mcpCommand, windsurf),
205
233
  });
206
234
  }
235
+ function buildCommandWithAgentString(mcpCommand, agent) {
236
+ const mcpCommandCopy = structuredClone(mcpCommand);
237
+ mcpCommandCopy.args.push('--ai-agent', agent);
238
+ return mcpCommandCopy;
239
+ }