@hubspot/cli 7.6.0-beta.5 → 7.6.0-beta.6

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 (587) hide show
  1. package/api/__tests__/migrate.test.js +27 -29
  2. package/api/migrate.d.ts +7 -0
  3. package/api/migrate.js +22 -22
  4. package/bin/cli.js +92 -97
  5. package/bin/hs +2 -2
  6. package/bin/hscms +2 -2
  7. package/bin/silenceErrors.js +1 -2
  8. package/commands/__tests__/account.test.js +29 -34
  9. package/commands/__tests__/auth.test.js +11 -16
  10. package/commands/__tests__/cms.test.js +15 -20
  11. package/commands/__tests__/config.test.js +14 -19
  12. package/commands/__tests__/create.test.js +10 -15
  13. package/commands/__tests__/customObject.test.js +14 -19
  14. package/commands/__tests__/doctor.test.js +43 -48
  15. package/commands/__tests__/feedback.test.js +7 -45
  16. package/commands/__tests__/fetch.test.js +29 -28
  17. package/commands/__tests__/filemanager.test.js +14 -19
  18. package/commands/__tests__/function.test.js +16 -21
  19. package/commands/__tests__/getStarted.test.js +45 -50
  20. package/commands/__tests__/hubdb.test.js +17 -22
  21. package/commands/__tests__/init.test.js +12 -17
  22. package/commands/__tests__/lint.test.js +13 -18
  23. package/commands/__tests__/list.test.js +18 -23
  24. package/commands/__tests__/logs.test.js +28 -27
  25. package/commands/__tests__/mcp.test.js +14 -19
  26. package/commands/__tests__/mv.test.js +14 -52
  27. package/commands/__tests__/open.test.js +13 -51
  28. package/commands/__tests__/project.test.js +44 -49
  29. package/commands/__tests__/remove.test.js +13 -51
  30. package/commands/__tests__/sandbox.test.js +14 -19
  31. package/commands/__tests__/secret.test.js +16 -21
  32. package/commands/__tests__/testAccount.test.js +16 -21
  33. package/commands/__tests__/theme.test.js +15 -20
  34. package/commands/account/__tests__/auth.test.js +11 -16
  35. package/commands/account/__tests__/clean.test.js +12 -17
  36. package/commands/account/__tests__/createOverride.test.js +10 -15
  37. package/commands/account/__tests__/info.test.js +11 -16
  38. package/commands/account/__tests__/list.test.js +11 -16
  39. package/commands/account/__tests__/remove.test.js +13 -18
  40. package/commands/account/__tests__/removeOverride.js +8 -13
  41. package/commands/account/__tests__/rename.test.js +15 -20
  42. package/commands/account/__tests__/use.test.js +10 -15
  43. package/commands/account/auth.d.ts +1 -1
  44. package/commands/account/auth.js +78 -69
  45. package/commands/account/clean.d.ts +1 -1
  46. package/commands/account/clean.js +55 -60
  47. package/commands/account/createOverride.d.ts +1 -1
  48. package/commands/account/createOverride.js +52 -57
  49. package/commands/account/info.d.ts +1 -1
  50. package/commands/account/info.js +33 -35
  51. package/commands/account/list.d.ts +1 -1
  52. package/commands/account/list.js +43 -45
  53. package/commands/account/remove.d.ts +1 -1
  54. package/commands/account/remove.js +37 -42
  55. package/commands/account/removeOverride.d.ts +1 -1
  56. package/commands/account/removeOverride.js +38 -43
  57. package/commands/account/rename.d.ts +1 -1
  58. package/commands/account/rename.js +18 -20
  59. package/commands/account/use.d.ts +1 -1
  60. package/commands/account/use.js +29 -31
  61. package/commands/account.d.ts +1 -1
  62. package/commands/account.js +23 -28
  63. package/commands/app/__tests__/migrate.test.js +29 -34
  64. package/commands/app/migrate.d.ts +2 -2
  65. package/commands/app/migrate.js +40 -43
  66. package/commands/app/secret/__tests__/add.test.js +6 -11
  67. package/commands/app/secret/__tests__/delete.test.js +6 -11
  68. package/commands/app/secret/__tests__/list.test.js +6 -11
  69. package/commands/app/secret/__tests__/update.test.js +6 -11
  70. package/commands/app/secret/add.d.ts +1 -1
  71. package/commands/app/secret/add.js +28 -30
  72. package/commands/app/secret/delete.d.ts +1 -1
  73. package/commands/app/secret/delete.js +34 -36
  74. package/commands/app/secret/list.d.ts +1 -1
  75. package/commands/app/secret/list.js +25 -27
  76. package/commands/app/secret/update.d.ts +1 -1
  77. package/commands/app/secret/update.js +32 -34
  78. package/commands/app/secret.d.ts +1 -1
  79. package/commands/app/secret.js +12 -17
  80. package/commands/app.d.ts +1 -1
  81. package/commands/app.js +6 -11
  82. package/commands/auth.d.ts +1 -1
  83. package/commands/auth.js +70 -72
  84. package/commands/cms/convertFields.d.ts +1 -1
  85. package/commands/cms/convertFields.js +34 -39
  86. package/commands/cms/getReactModule.d.ts +1 -1
  87. package/commands/cms/getReactModule.js +32 -37
  88. package/commands/cms/lighthouseScore.d.ts +1 -1
  89. package/commands/cms/lighthouseScore.js +67 -72
  90. package/commands/cms.d.ts +1 -1
  91. package/commands/cms.js +11 -16
  92. package/commands/completion.d.ts +1 -1
  93. package/commands/completion.js +10 -15
  94. package/commands/config/migrate.d.ts +1 -1
  95. package/commands/config/migrate.js +27 -32
  96. package/commands/config/set.d.ts +2 -1
  97. package/commands/config/set.js +40 -32
  98. package/commands/config.d.ts +1 -1
  99. package/commands/config.js +8 -13
  100. package/commands/create/api-sample.d.ts +1 -1
  101. package/commands/create/api-sample.js +28 -33
  102. package/commands/create/app.d.ts +1 -1
  103. package/commands/create/app.js +3 -5
  104. package/commands/create/function.d.ts +1 -1
  105. package/commands/create/function.js +9 -11
  106. package/commands/create/index.d.ts +1 -1
  107. package/commands/create/index.js +19 -24
  108. package/commands/create/module.d.ts +1 -1
  109. package/commands/create/module.js +12 -14
  110. package/commands/create/react-app.d.ts +1 -1
  111. package/commands/create/react-app.js +3 -5
  112. package/commands/create/template.d.ts +1 -1
  113. package/commands/create/template.js +12 -14
  114. package/commands/create/vue-app.d.ts +1 -1
  115. package/commands/create/vue-app.js +3 -5
  116. package/commands/create/webpack-serverless.d.ts +1 -1
  117. package/commands/create/webpack-serverless.js +3 -5
  118. package/commands/create/website-theme.d.ts +1 -1
  119. package/commands/create/website-theme.js +5 -7
  120. package/commands/create.d.ts +2 -2
  121. package/commands/create.js +30 -35
  122. package/commands/customObject/__tests__/create.test.js +13 -18
  123. package/commands/customObject/__tests__/schema.test.js +18 -23
  124. package/commands/customObject/create.d.ts +1 -1
  125. package/commands/customObject/create.js +28 -30
  126. package/commands/customObject/schema/__tests__/create.test.js +13 -18
  127. package/commands/customObject/schema/__tests__/delete.test.js +13 -18
  128. package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
  129. package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
  130. package/commands/customObject/schema/__tests__/list.test.js +13 -18
  131. package/commands/customObject/schema/__tests__/update.test.js +13 -18
  132. package/commands/customObject/schema/create.d.ts +1 -1
  133. package/commands/customObject/schema/create.js +28 -30
  134. package/commands/customObject/schema/delete.d.ts +1 -1
  135. package/commands/customObject/schema/delete.js +24 -26
  136. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  137. package/commands/customObject/schema/fetch-all.js +22 -24
  138. package/commands/customObject/schema/fetch.d.ts +1 -1
  139. package/commands/customObject/schema/fetch.js +24 -26
  140. package/commands/customObject/schema/list.d.ts +1 -1
  141. package/commands/customObject/schema/list.js +13 -15
  142. package/commands/customObject/schema/update.d.ts +1 -1
  143. package/commands/customObject/schema/update.js +32 -34
  144. package/commands/customObject/schema.d.ts +1 -1
  145. package/commands/customObject/schema.js +17 -22
  146. package/commands/customObject.d.ts +1 -1
  147. package/commands/customObject.js +13 -18
  148. package/commands/doctor.d.ts +1 -1
  149. package/commands/doctor.js +28 -33
  150. package/commands/feedback.d.ts +1 -1
  151. package/commands/feedback.js +19 -24
  152. package/commands/fetch.d.ts +1 -1
  153. package/commands/fetch.js +28 -30
  154. package/commands/filemanager/__tests__/fetch.test.js +17 -22
  155. package/commands/filemanager/__tests__/upload.test.js +15 -20
  156. package/commands/filemanager/fetch.d.ts +1 -1
  157. package/commands/filemanager/fetch.js +23 -25
  158. package/commands/filemanager/upload.d.ts +1 -1
  159. package/commands/filemanager/upload.js +39 -44
  160. package/commands/filemanager.d.ts +1 -1
  161. package/commands/filemanager.js +8 -13
  162. package/commands/function/deploy.d.ts +1 -1
  163. package/commands/function/deploy.js +35 -40
  164. package/commands/function/list.d.ts +1 -1
  165. package/commands/function/list.js +24 -29
  166. package/commands/function/server.d.ts +1 -1
  167. package/commands/function/server.js +15 -17
  168. package/commands/function.d.ts +1 -1
  169. package/commands/function.js +12 -18
  170. package/commands/getStarted.d.ts +1 -1
  171. package/commands/getStarted.js +119 -125
  172. package/commands/hubdb/__tests__/clear.test.js +13 -18
  173. package/commands/hubdb/__tests__/create.test.js +13 -18
  174. package/commands/hubdb/__tests__/delete.test.js +13 -18
  175. package/commands/hubdb/__tests__/fetch.test.js +13 -18
  176. package/commands/hubdb/__tests__/list.test.js +23 -28
  177. package/commands/hubdb/clear.d.ts +1 -1
  178. package/commands/hubdb/clear.js +20 -22
  179. package/commands/hubdb/create.d.ts +1 -1
  180. package/commands/hubdb/create.js +30 -35
  181. package/commands/hubdb/delete.d.ts +1 -1
  182. package/commands/hubdb/delete.js +24 -26
  183. package/commands/hubdb/fetch.d.ts +1 -1
  184. package/commands/hubdb/fetch.js +17 -19
  185. package/commands/hubdb/list.d.ts +1 -1
  186. package/commands/hubdb/list.js +33 -35
  187. package/commands/hubdb.d.ts +1 -1
  188. package/commands/hubdb.js +18 -24
  189. package/commands/init.d.ts +1 -1
  190. package/commands/init.js +83 -88
  191. package/commands/lint.d.ts +1 -1
  192. package/commands/lint.js +24 -26
  193. package/commands/list.d.ts +1 -1
  194. package/commands/list.js +32 -37
  195. package/commands/logs.d.ts +1 -1
  196. package/commands/logs.js +35 -37
  197. package/commands/mcp/__tests__/setup.test.js +7 -12
  198. package/commands/mcp/__tests__/start.test.js +7 -12
  199. package/commands/mcp/setup.d.ts +1 -1
  200. package/commands/mcp/setup.js +17 -19
  201. package/commands/mcp/start.d.ts +1 -1
  202. package/commands/mcp/start.js +32 -34
  203. package/commands/mcp.d.ts +1 -1
  204. package/commands/mcp.js +7 -12
  205. package/commands/module/marketplace-validate.d.ts +1 -1
  206. package/commands/module/marketplace-validate.js +21 -26
  207. package/commands/module.d.ts +1 -1
  208. package/commands/module.js +7 -13
  209. package/commands/mv.d.ts +1 -1
  210. package/commands/mv.js +20 -22
  211. package/commands/open.d.ts +1 -1
  212. package/commands/open.js +19 -21
  213. package/commands/project/__tests__/add.test.js +10 -15
  214. package/commands/project/__tests__/create.test.js +14 -19
  215. package/commands/project/__tests__/deploy.test.js +96 -134
  216. package/commands/project/__tests__/devUnifiedFlow.test.js +133 -141
  217. package/commands/project/__tests__/download.test.js +14 -19
  218. package/commands/project/__tests__/installDeps.test.js +32 -70
  219. package/commands/project/__tests__/listBuilds.test.js +14 -19
  220. package/commands/project/__tests__/logs.test.js +56 -94
  221. package/commands/project/__tests__/migrate.test.js +25 -30
  222. package/commands/project/__tests__/migrateApp.test.js +17 -22
  223. package/commands/project/__tests__/open.test.js +16 -21
  224. package/commands/project/__tests__/profile.test.js +14 -19
  225. package/commands/project/__tests__/upload.test.js +18 -23
  226. package/commands/project/__tests__/watch.test.js +14 -19
  227. package/commands/project/add.d.ts +1 -1
  228. package/commands/project/add.js +34 -36
  229. package/commands/project/cloneApp.d.ts +1 -1
  230. package/commands/project/cloneApp.js +67 -72
  231. package/commands/project/create.d.ts +2 -2
  232. package/commands/project/create.js +63 -68
  233. package/commands/project/deploy.d.ts +1 -1
  234. package/commands/project/deploy.js +67 -69
  235. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  236. package/commands/project/dev/deprecatedFlow.js +52 -58
  237. package/commands/project/dev/index.d.ts +1 -1
  238. package/commands/project/dev/index.js +44 -47
  239. package/commands/project/dev/unifiedFlow.d.ts +3 -3
  240. package/commands/project/dev/unifiedFlow.js +63 -71
  241. package/commands/project/download.d.ts +1 -1
  242. package/commands/project/download.js +35 -40
  243. package/commands/project/installDeps.d.ts +1 -1
  244. package/commands/project/installDeps.js +29 -34
  245. package/commands/project/listBuilds.d.ts +1 -1
  246. package/commands/project/listBuilds.js +40 -45
  247. package/commands/project/logs.d.ts +1 -1
  248. package/commands/project/logs.js +52 -54
  249. package/commands/project/migrate.d.ts +1 -1
  250. package/commands/project/migrate.js +24 -26
  251. package/commands/project/migrateApp.d.ts +2 -2
  252. package/commands/project/migrateApp.js +18 -20
  253. package/commands/project/open.d.ts +1 -1
  254. package/commands/project/open.js +25 -30
  255. package/commands/project/profile/add.d.ts +1 -1
  256. package/commands/project/profile/add.js +68 -73
  257. package/commands/project/profile/delete.d.ts +1 -1
  258. package/commands/project/profile/delete.js +68 -61
  259. package/commands/project/profile.d.ts +1 -1
  260. package/commands/project/profile.js +9 -14
  261. package/commands/project/upload.d.ts +1 -1
  262. package/commands/project/upload.js +50 -55
  263. package/commands/project/validate.d.ts +1 -1
  264. package/commands/project/validate.js +36 -40
  265. package/commands/project/watch.d.ts +1 -1
  266. package/commands/project/watch.js +59 -61
  267. package/commands/project.d.ts +1 -1
  268. package/commands/project.js +38 -43
  269. package/commands/remove.d.ts +1 -1
  270. package/commands/remove.js +15 -17
  271. package/commands/sandbox/__tests__/create.test.js +222 -20
  272. package/commands/sandbox/__tests__/delete.test.js +15 -20
  273. package/commands/sandbox/create.d.ts +2 -2
  274. package/commands/sandbox/create.js +92 -79
  275. package/commands/sandbox/delete.d.ts +1 -1
  276. package/commands/sandbox/delete.js +94 -96
  277. package/commands/sandbox.d.ts +1 -1
  278. package/commands/sandbox.js +9 -14
  279. package/commands/secret/__tests__/addSecret.test.js +13 -18
  280. package/commands/secret/__tests__/deleteSecret.test.js +13 -18
  281. package/commands/secret/__tests__/listSecret.test.js +13 -18
  282. package/commands/secret/__tests__/updateSecret.test.js +13 -18
  283. package/commands/secret/addSecret.d.ts +1 -1
  284. package/commands/secret/addSecret.js +26 -28
  285. package/commands/secret/deleteSecret.d.ts +1 -1
  286. package/commands/secret/deleteSecret.js +27 -29
  287. package/commands/secret/listSecret.d.ts +1 -1
  288. package/commands/secret/listSecret.js +19 -21
  289. package/commands/secret/updateSecret.d.ts +1 -1
  290. package/commands/secret/updateSecret.js +25 -27
  291. package/commands/secret.d.ts +1 -1
  292. package/commands/secret.js +13 -18
  293. package/commands/testAccount/__tests__/create.test.js +17 -22
  294. package/commands/testAccount/__tests__/createConfig.test.js +6 -11
  295. package/commands/testAccount/__tests__/delete.test.js +15 -20
  296. package/commands/testAccount/create.d.ts +1 -1
  297. package/commands/testAccount/create.js +63 -58
  298. package/commands/testAccount/createConfig.d.ts +1 -1
  299. package/commands/testAccount/createConfig.js +36 -41
  300. package/commands/testAccount/delete.d.ts +1 -1
  301. package/commands/testAccount/delete.js +17 -19
  302. package/commands/testAccount.d.ts +1 -1
  303. package/commands/testAccount.js +10 -15
  304. package/commands/theme/__tests__/generate-selectors.test.js +7 -12
  305. package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
  306. package/commands/theme/__tests__/preview.test.js +12 -17
  307. package/commands/theme/generate-selectors.d.ts +1 -1
  308. package/commands/theme/generate-selectors.js +23 -28
  309. package/commands/theme/marketplace-validate.d.ts +1 -1
  310. package/commands/theme/marketplace-validate.js +19 -24
  311. package/commands/theme/preview.d.ts +1 -1
  312. package/commands/theme/preview.js +60 -65
  313. package/commands/theme.d.ts +1 -1
  314. package/commands/theme.js +11 -16
  315. package/commands/upload.d.ts +1 -1
  316. package/commands/upload.js +77 -82
  317. package/commands/watch.d.ts +1 -1
  318. package/commands/watch.js +45 -51
  319. package/lang/en.d.ts +31 -8
  320. package/lang/en.js +404 -384
  321. package/lang/en.lyaml +4 -2
  322. package/lib/__tests__/accountTypes.test.js +20 -22
  323. package/lib/__tests__/buildAccount.test.js +88 -65
  324. package/lib/__tests__/commonOpts.test.js +20 -22
  325. package/lib/__tests__/dependencyManagement.test.js +46 -51
  326. package/lib/__tests__/developerTestAccounts.test.js +27 -62
  327. package/lib/__tests__/hasFeature.test.js +6 -8
  328. package/lib/__tests__/npm.test.js +15 -20
  329. package/lib/__tests__/oauth.test.js +23 -28
  330. package/lib/__tests__/parsing.test.js +18 -20
  331. package/lib/__tests__/polling.test.js +24 -26
  332. package/lib/__tests__/process.test.js +14 -19
  333. package/lib/__tests__/projectProfiles.test.js +34 -39
  334. package/lib/__tests__/sandboxSync.test.js +30 -35
  335. package/lib/__tests__/sandboxes.test.js +29 -31
  336. package/lib/__tests__/serverlessLogs.test.js +8 -13
  337. package/lib/__tests__/usageTracking.test.js +33 -34
  338. package/lib/__tests__/validation.test.js +18 -20
  339. package/lib/__tests__/yargsUtils.test.js +17 -41
  340. package/lib/accountTypes.js +24 -34
  341. package/lib/app/__tests__/migrate.test.js +117 -109
  342. package/lib/app/__tests__/migrate_legacy.test.js +29 -31
  343. package/lib/app/migrate.d.ts +18 -4
  344. package/lib/app/migrate.js +152 -148
  345. package/lib/app/migrate_legacy.d.ts +1 -1
  346. package/lib/app/migrate_legacy.js +72 -78
  347. package/lib/app/urls.js +5 -9
  348. package/lib/buildAccount.d.ts +5 -2
  349. package/lib/buildAccount.js +126 -80
  350. package/lib/commonOpts.d.ts +1 -1
  351. package/lib/commonOpts.js +67 -59
  352. package/lib/configMigrate.js +34 -38
  353. package/lib/configOptions.d.ts +5 -0
  354. package/lib/configOptions.js +44 -40
  355. package/lib/constants.d.ts +8 -0
  356. package/lib/constants.js +39 -34
  357. package/lib/customObject.js +2 -6
  358. package/lib/dependencyManagement.js +37 -45
  359. package/lib/developerTestAccounts.d.ts +1 -1
  360. package/lib/developerTestAccounts.js +34 -39
  361. package/lib/doctor/Diagnosis.d.ts +1 -1
  362. package/lib/doctor/Diagnosis.js +25 -29
  363. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  364. package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
  365. package/lib/doctor/Doctor.d.ts +1 -1
  366. package/lib/doctor/Doctor.js +94 -101
  367. package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
  368. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
  369. package/lib/doctor/__tests__/Doctor.test.js +24 -26
  370. package/lib/enums/exitCodes.js +1 -4
  371. package/lib/errorHandlers/index.js +33 -44
  372. package/lib/errorHandlers/suppressError.d.ts +1 -1
  373. package/lib/errorHandlers/suppressError.js +28 -31
  374. package/lib/errors/ProjectValidationError.d.ts +4 -0
  375. package/lib/errors/ProjectValidationError.js +9 -0
  376. package/lib/filesystem.js +8 -15
  377. package/lib/generateSelectors.js +18 -29
  378. package/lib/hasFeature.d.ts +1 -1
  379. package/lib/hasFeature.js +3 -6
  380. package/lib/interpolation.js +11 -18
  381. package/lib/lang.d.ts +1 -1
  382. package/lib/lang.js +22 -27
  383. package/lib/links.js +16 -24
  384. package/lib/marketplaceValidate.js +29 -39
  385. package/lib/mcp/setup.d.ts +4 -0
  386. package/lib/mcp/setup.js +106 -82
  387. package/lib/middleware/__test__/configMiddleware.test.js +20 -55
  388. package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
  389. package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
  390. package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
  391. package/lib/middleware/__test__/utils.test.js +9 -11
  392. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
  393. package/lib/middleware/autoUpdateMiddleware.js +33 -40
  394. package/lib/middleware/configMiddleware.js +36 -42
  395. package/lib/middleware/fireAlarmMiddleware.js +12 -18
  396. package/lib/middleware/gitMiddleware.js +5 -8
  397. package/lib/middleware/notificationsMiddleware.js +16 -23
  398. package/lib/middleware/requestMiddleware.js +4 -10
  399. package/lib/middleware/utils.js +1 -4
  400. package/lib/middleware/yargsChecksMiddleware.js +10 -13
  401. package/lib/npm.js +14 -23
  402. package/lib/oauth.js +29 -35
  403. package/lib/parsing.js +3 -6
  404. package/lib/polling.js +11 -15
  405. package/lib/process.js +11 -19
  406. package/lib/projectProfiles.d.ts +2 -2
  407. package/lib/projectProfiles.js +32 -42
  408. package/lib/projects/ProjectLogsManager.js +18 -21
  409. package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
  410. package/lib/projects/__tests__/LocalDevProcess.test.js +100 -140
  411. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +201 -37
  412. package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
  413. package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
  414. package/lib/projects/__tests__/components.test.js +9 -14
  415. package/lib/projects/__tests__/localDevHelpers.test.js +117 -0
  416. package/lib/projects/__tests__/projects.test.js +35 -40
  417. package/lib/projects/__tests__/structure.test.js +43 -81
  418. package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
  419. package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
  420. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  421. package/lib/projects/add/legacyAddComponent.js +24 -30
  422. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  423. package/lib/projects/add/v3AddComponent.js +37 -42
  424. package/lib/projects/buildAndDeploy.d.ts +1 -1
  425. package/lib/projects/buildAndDeploy.js +88 -97
  426. package/lib/projects/components.js +19 -25
  427. package/lib/projects/config.d.ts +1 -1
  428. package/lib/projects/config.js +32 -41
  429. package/lib/projects/create/__tests__/legacy.test.js +22 -57
  430. package/lib/projects/create/__tests__/v3.test.js +5 -7
  431. package/lib/projects/create/index.d.ts +3 -3
  432. package/lib/projects/create/index.js +19 -22
  433. package/lib/projects/create/legacy.d.ts +1 -1
  434. package/lib/projects/create/legacy.js +25 -31
  435. package/lib/projects/create/v3.d.ts +3 -5
  436. package/lib/projects/create/v3.js +47 -59
  437. package/lib/projects/ensureProjectExists.js +31 -37
  438. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  439. package/lib/projects/localDev/AppDevModeInterface.js +58 -60
  440. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  441. package/lib/projects/localDev/DevServerManager.js +22 -24
  442. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  443. package/lib/projects/localDev/DevServerManagerV2.js +15 -20
  444. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -2
  445. package/lib/projects/localDev/LocalDevLogger.js +66 -66
  446. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  447. package/lib/projects/localDev/LocalDevManager.js +106 -111
  448. package/lib/projects/localDev/LocalDevProcess.d.ts +6 -5
  449. package/lib/projects/localDev/LocalDevProcess.js +37 -50
  450. package/lib/projects/localDev/LocalDevState.d.ts +5 -7
  451. package/lib/projects/localDev/LocalDevState.js +9 -11
  452. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  453. package/lib/projects/localDev/LocalDevWatcher.js +6 -11
  454. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +3 -3
  455. package/lib/projects/localDev/LocalDevWebsocketServer.js +63 -55
  456. package/lib/projects/localDev/helpers.d.ts +10 -3
  457. package/lib/projects/localDev/helpers.js +211 -174
  458. package/lib/projects/structure.d.ts +3 -3
  459. package/lib/projects/structure.js +32 -78
  460. package/lib/projects/ui.js +10 -13
  461. package/lib/projects/upload.d.ts +1 -1
  462. package/lib/projects/upload.js +57 -73
  463. package/lib/projects/urls.d.ts +1 -1
  464. package/lib/projects/urls.js +15 -25
  465. package/lib/projects/watch.d.ts +1 -1
  466. package/lib/projects/watch.js +48 -54
  467. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
  469. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  470. package/lib/prompts/accountNamePrompt.js +26 -31
  471. package/lib/prompts/accountsPrompt.js +12 -15
  472. package/lib/prompts/cmsFieldPrompt.js +13 -19
  473. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  474. package/lib/prompts/createApiSamplePrompt.js +9 -12
  475. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
  476. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +23 -26
  477. package/lib/prompts/createFunctionPrompt.js +17 -20
  478. package/lib/prompts/createModulePrompt.js +12 -15
  479. package/lib/prompts/createTemplatePrompt.js +5 -8
  480. package/lib/prompts/downloadProjectPrompt.js +17 -20
  481. package/lib/prompts/installAppPrompt.js +19 -26
  482. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  483. package/lib/prompts/personalAccessKeyPrompt.js +40 -47
  484. package/lib/prompts/previewPrompt.js +15 -22
  485. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  486. package/lib/prompts/projectAddPrompt.js +14 -18
  487. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  488. package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
  489. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  490. package/lib/prompts/projectNameAndDestPrompt.js +22 -29
  491. package/lib/prompts/projectNamePrompt.js +11 -14
  492. package/lib/prompts/projectsLogsPrompt.js +5 -8
  493. package/lib/prompts/promptUtils.d.ts +1 -1
  494. package/lib/prompts/promptUtils.js +17 -24
  495. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  496. package/lib/prompts/sandboxesPrompt.js +26 -30
  497. package/lib/prompts/secretPrompt.js +10 -15
  498. package/lib/prompts/selectAppPrompt.js +11 -14
  499. package/lib/prompts/selectHubDBTablePrompt.js +24 -30
  500. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  501. package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
  502. package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
  503. package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
  504. package/lib/prompts/uploadPrompt.js +11 -17
  505. package/lib/sandboxSync.d.ts +1 -1
  506. package/lib/sandboxSync.js +58 -65
  507. package/lib/sandboxes.d.ts +5 -1
  508. package/lib/sandboxes.js +72 -76
  509. package/lib/schema.js +13 -20
  510. package/lib/serverlessLogs.js +45 -52
  511. package/lib/testUtils.js +4 -8
  512. package/lib/ui/SpinniesManager.d.ts +1 -1
  513. package/lib/ui/SpinniesManager.js +29 -34
  514. package/lib/ui/boxen.js +11 -14
  515. package/lib/ui/git.js +14 -20
  516. package/lib/ui/index.d.ts +6 -0
  517. package/lib/ui/index.js +56 -76
  518. package/lib/ui/logger.js +10 -13
  519. package/lib/ui/serverlessFunctionLogs.js +14 -20
  520. package/lib/ui/spinniesUtils.js +24 -39
  521. package/lib/ui/supportHyperlinks.js +3 -6
  522. package/lib/ui/supportsColor.js +11 -17
  523. package/lib/ui/table.js +6 -13
  524. package/lib/upload.js +15 -21
  525. package/lib/usageTracking.js +35 -44
  526. package/lib/utils/__tests__/isDeepEqual.test.js +269 -0
  527. package/lib/utils/hasFlag.js +2 -8
  528. package/lib/utils/isDeepEqual.d.ts +1 -0
  529. package/lib/utils/isDeepEqual.js +31 -0
  530. package/lib/validation.js +48 -87
  531. package/lib/yargsUtils.d.ts +2 -1
  532. package/lib/yargsUtils.js +19 -16
  533. package/mcp-server/server.js +6 -8
  534. package/mcp-server/tools/index.js +15 -16
  535. package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
  536. package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
  537. package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
  538. package/mcp-server/tools/project/CreateProjectTool.js +40 -54
  539. package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
  540. package/mcp-server/tools/project/DeployProjectTool.js +49 -0
  541. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
  542. package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
  543. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  544. package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
  545. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  546. package/mcp-server/tools/project/UploadProjectTools.js +12 -19
  547. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  548. package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
  549. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
  550. package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
  551. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
  552. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
  553. package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
  554. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
  555. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
  556. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
  557. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
  558. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
  559. package/mcp-server/tools/project/constants.d.ts +1 -0
  560. package/mcp-server/tools/project/constants.js +14 -9
  561. package/mcp-server/types.js +1 -5
  562. package/mcp-server/utils/__tests__/command.test.js +9 -11
  563. package/mcp-server/utils/__tests__/project.test.js +12 -17
  564. package/mcp-server/utils/command.d.ts +1 -1
  565. package/mcp-server/utils/command.js +4 -11
  566. package/mcp-server/utils/content.d.ts +1 -1
  567. package/mcp-server/utils/content.js +2 -6
  568. package/mcp-server/utils/project.js +8 -14
  569. package/mcp-server/utils/toolUsageTracking.js +11 -14
  570. package/package.json +21 -14
  571. package/types/Cms.d.ts +1 -1
  572. package/types/Cms.js +1 -2
  573. package/types/LocalDev.d.ts +4 -6
  574. package/types/LocalDev.js +1 -2
  575. package/types/ProjectComponents.d.ts +2 -2
  576. package/types/ProjectComponents.js +1 -2
  577. package/types/Projects.d.ts +1 -1
  578. package/types/Projects.js +2 -5
  579. package/types/Prompts.js +1 -2
  580. package/types/Sandboxes.js +1 -2
  581. package/types/Yargs.js +1 -2
  582. package/ui/index.d.ts +1 -0
  583. package/ui/index.js +6 -0
  584. package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
  585. package/mcp-server/tools/project/DeployProject.js +0 -53
  586. /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → lib/projects/__tests__/localDevHelpers.test.d.ts} +0 -0
  587. /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/utils/__tests__/isDeepEqual.test.d.ts} +0 -0
@@ -1,23 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const legacyAddComponent_1 = require("../legacyAddComponent");
4
- const structure_1 = require("../../structure");
5
- const legacy_1 = require("../../create/legacy");
6
- const projectAddPrompt_1 = require("../../../prompts/projectAddPrompt");
7
- const logger_1 = require("@hubspot/local-dev-lib/logger");
8
- const github_1 = require("@hubspot/local-dev-lib/github");
9
- const Projects_1 = require("../../../../types/Projects");
10
- const en_1 = require("../../../../lang/en");
1
+ import { legacyAddComponent } from '../legacyAddComponent.js';
2
+ import { findProjectComponents } from '../../structure.js';
3
+ import { getProjectComponentListFromRepo } from '../../create/legacy.js';
4
+ import { projectAddPrompt } from '../../../prompts/projectAddPrompt.js';
5
+ import { logger } from '@hubspot/local-dev-lib/logger';
6
+ import { cloneGithubRepo } from '@hubspot/local-dev-lib/github';
7
+ import { ComponentTypes, } from '../../../../types/Projects.js';
8
+ import { commands } from '../../../../lang/en.js';
11
9
  vi.mock('../../structure');
12
10
  vi.mock('../../create/legacy');
13
11
  vi.mock('../../../prompts/projectAddPrompt');
14
12
  vi.mock('@hubspot/local-dev-lib/logger');
15
13
  vi.mock('@hubspot/local-dev-lib/github');
16
- const mockedFindProjectComponents = vi.mocked(structure_1.findProjectComponents);
17
- const mockedGetProjectComponentListFromRepo = vi.mocked(legacy_1.getProjectComponentListFromRepo);
18
- const mockedProjectAddPrompt = vi.mocked(projectAddPrompt_1.projectAddPrompt);
19
- const mockedLogger = vi.mocked(logger_1.logger);
20
- const mockedCloneGithubRepo = vi.mocked(github_1.cloneGithubRepo);
14
+ const mockedFindProjectComponents = vi.mocked(findProjectComponents);
15
+ const mockedGetProjectComponentListFromRepo = vi.mocked(getProjectComponentListFromRepo);
16
+ const mockedProjectAddPrompt = vi.mocked(projectAddPrompt);
17
+ const mockedLogger = vi.mocked(logger);
18
+ const mockedCloneGithubRepo = vi.mocked(cloneGithubRepo);
21
19
  describe('lib/projects/add/legacyAddComponent', () => {
22
20
  const mockProjectConfig = {
23
21
  name: 'test-project',
@@ -33,7 +31,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
33
31
  it('successfully adds a component to a project without public apps', async () => {
34
32
  const mockComponents = [
35
33
  {
36
- type: Projects_1.ComponentTypes.PrivateApp,
34
+ type: ComponentTypes.PrivateApp,
37
35
  config: {
38
36
  name: 'private-app',
39
37
  description: '',
@@ -60,7 +58,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
60
58
  mockedGetProjectComponentListFromRepo.mockResolvedValue(mockComponentList);
61
59
  mockedProjectAddPrompt.mockResolvedValue(mockPromptResponse);
62
60
  mockedCloneGithubRepo.mockResolvedValue(true);
63
- await (0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig);
61
+ await legacyAddComponent(mockArgs, projectDir, mockProjectConfig);
64
62
  expect(mockedFindProjectComponents).toHaveBeenCalledWith(projectDir);
65
63
  expect(mockedGetProjectComponentListFromRepo).toHaveBeenCalledWith('v1');
66
64
  expect(mockedProjectAddPrompt).toHaveBeenCalledWith(mockComponentList, mockArgs);
@@ -69,13 +67,13 @@ describe('lib/projects/add/legacyAddComponent', () => {
69
67
  branch: 'main',
70
68
  hideLogs: true,
71
69
  }));
72
- expect(mockedLogger.log).toHaveBeenCalledWith(en_1.commands.project.add.creatingComponent('test-project'));
73
- expect(mockedLogger.success).toHaveBeenCalledWith(en_1.commands.project.add.success('new-component'));
70
+ expect(mockedLogger.log).toHaveBeenCalledWith(commands.project.add.creatingComponent('test-project'));
71
+ expect(mockedLogger.success).toHaveBeenCalledWith(commands.project.add.success('new-component'));
74
72
  });
75
73
  it('throws an error when project contains a public app', async () => {
76
74
  const mockComponents = [
77
75
  {
78
- type: Projects_1.ComponentTypes.PublicApp,
76
+ type: ComponentTypes.PublicApp,
79
77
  config: {
80
78
  name: 'public-app',
81
79
  uid: '',
@@ -99,7 +97,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
99
97
  },
100
98
  ];
101
99
  mockedFindProjectComponents.mockResolvedValue(mockComponents);
102
- await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.projectContainsPublicApp);
100
+ await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.projectContainsPublicApp);
103
101
  expect(mockedGetProjectComponentListFromRepo).not.toHaveBeenCalled();
104
102
  expect(mockedProjectAddPrompt).not.toHaveBeenCalled();
105
103
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
@@ -120,7 +118,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
120
118
  mockedGetProjectComponentListFromRepo.mockResolvedValue(mockComponentList);
121
119
  mockedProjectAddPrompt.mockResolvedValue(mockPromptResponse);
122
120
  mockedCloneGithubRepo.mockResolvedValue(true);
123
- await (0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig);
121
+ await legacyAddComponent(mockArgs, projectDir, mockProjectConfig);
124
122
  expect(mockedGetProjectComponentListFromRepo).toHaveBeenCalledWith('v1');
125
123
  expect(mockedProjectAddPrompt).toHaveBeenCalledWith(mockComponentList, mockArgs);
126
124
  expect(mockedCloneGithubRepo).toHaveBeenCalled();
@@ -128,7 +126,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
128
126
  it('throws an error when component list is empty', async () => {
129
127
  const mockComponents = [
130
128
  {
131
- type: Projects_1.ComponentTypes.PrivateApp,
129
+ type: ComponentTypes.PrivateApp,
132
130
  config: {
133
131
  name: 'private-app',
134
132
  description: '',
@@ -142,14 +140,14 @@ describe('lib/projects/add/legacyAddComponent', () => {
142
140
  ];
143
141
  mockedFindProjectComponents.mockResolvedValue(mockComponents);
144
142
  mockedGetProjectComponentListFromRepo.mockResolvedValue([]);
145
- await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToFetchComponentList);
143
+ await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToFetchComponentList);
146
144
  expect(mockedProjectAddPrompt).not.toHaveBeenCalled();
147
145
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
148
146
  });
149
147
  it('throws an error when component list is null', async () => {
150
148
  const mockComponents = [
151
149
  {
152
- type: Projects_1.ComponentTypes.PrivateApp,
150
+ type: ComponentTypes.PrivateApp,
153
151
  config: {
154
152
  name: 'private-app',
155
153
  description: '',
@@ -164,14 +162,14 @@ describe('lib/projects/add/legacyAddComponent', () => {
164
162
  mockedFindProjectComponents.mockResolvedValue(mockComponents);
165
163
  // @ts-expect-error Breaking stuff on purpose
166
164
  mockedGetProjectComponentListFromRepo.mockResolvedValue(null);
167
- await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToFetchComponentList);
165
+ await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToFetchComponentList);
168
166
  expect(mockedProjectAddPrompt).not.toHaveBeenCalled();
169
167
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
170
168
  });
171
169
  it('throws an error when cloning fails', async () => {
172
170
  const mockComponents = [
173
171
  {
174
- type: Projects_1.ComponentTypes.PrivateApp,
172
+ type: ComponentTypes.PrivateApp,
175
173
  config: {
176
174
  name: 'private-app',
177
175
  description: '',
@@ -198,7 +196,7 @@ describe('lib/projects/add/legacyAddComponent', () => {
198
196
  mockedGetProjectComponentListFromRepo.mockResolvedValue(mockComponentList);
199
197
  mockedProjectAddPrompt.mockResolvedValue(mockPromptResponse);
200
198
  mockedCloneGithubRepo.mockRejectedValue(new Error('Clone failed'));
201
- await expect((0, legacyAddComponent_1.legacyAddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToDownloadComponent);
199
+ await expect(legacyAddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToDownloadComponent);
202
200
  expect(mockedCloneGithubRepo).toHaveBeenCalled();
203
201
  expect(mockedLogger.success).not.toHaveBeenCalled();
204
202
  });
@@ -1,18 +1,13 @@
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
- const fs_1 = __importDefault(require("fs"));
7
- const v3AddComponent_1 = require("../v3AddComponent");
8
- const legacy_1 = require("../../create/legacy");
9
- const v3_1 = require("../../create/v3");
10
- const promptUtils_1 = require("../../../prompts/promptUtils");
11
- const projectAddPrompt_1 = require("../../../prompts/projectAddPrompt");
12
- const github_1 = require("@hubspot/local-dev-lib/github");
13
- const logger_1 = require("@hubspot/local-dev-lib/logger");
14
- const project_1 = require("@hubspot/project-parsing-lib/src/lib/project");
15
- const en_1 = require("../../../../lang/en");
1
+ import fs from 'fs';
2
+ import { v3AddComponent } from '../v3AddComponent.js';
3
+ import { getConfigForPlatformVersion } from '../../create/legacy.js';
4
+ import { createV3App } from '../../create/v3.js';
5
+ import { confirmPrompt } from '../../../prompts/promptUtils.js';
6
+ import { projectAddPromptV3 } from '../../../prompts/projectAddPrompt.js';
7
+ import { cloneGithubRepo } from '@hubspot/local-dev-lib/github';
8
+ import { logger } from '@hubspot/local-dev-lib/logger';
9
+ import { getProjectMetadata } from '@hubspot/project-parsing-lib/src/lib/project.js';
10
+ import { commands } from '../../../../lang/en.js';
16
11
  vi.mock('fs');
17
12
  vi.mock('../../../prompts/promptUtils');
18
13
  vi.mock('../../create/legacy');
@@ -21,14 +16,14 @@ vi.mock('../../../prompts/projectAddPrompt');
21
16
  vi.mock('@hubspot/local-dev-lib/github');
22
17
  vi.mock('@hubspot/local-dev-lib/logger');
23
18
  vi.mock('@hubspot/project-parsing-lib/src/lib/project');
24
- const mockedFs = vi.mocked(fs_1.default);
25
- const mockedGetConfigForPlatformVersion = vi.mocked(legacy_1.getConfigForPlatformVersion);
26
- const mockedConfirmPrompt = vi.mocked(promptUtils_1.confirmPrompt);
27
- const mockedCreateV3App = vi.mocked(v3_1.createV3App);
28
- const mockedProjectAddPromptV3 = vi.mocked(projectAddPrompt_1.projectAddPromptV3);
29
- const mockedCloneGithubRepo = vi.mocked(github_1.cloneGithubRepo);
30
- const mockedLogger = vi.mocked(logger_1.logger);
31
- const mockedGetProjectMetadata = vi.mocked(project_1.getProjectMetadata);
19
+ const mockedFs = vi.mocked(fs);
20
+ const mockedGetConfigForPlatformVersion = vi.mocked(getConfigForPlatformVersion);
21
+ const mockedConfirmPrompt = vi.mocked(confirmPrompt);
22
+ const mockedCreateV3App = vi.mocked(createV3App);
23
+ const mockedProjectAddPromptV3 = vi.mocked(projectAddPromptV3);
24
+ const mockedCloneGithubRepo = vi.mocked(cloneGithubRepo);
25
+ const mockedLogger = vi.mocked(logger);
26
+ const mockedGetProjectMetadata = vi.mocked(getProjectMetadata);
32
27
  describe('lib/projects/add/v3AddComponent', () => {
33
28
  const mockProjectConfig = {
34
29
  name: 'test-project',
@@ -84,7 +79,7 @@ describe('lib/projects/add/v3AddComponent', () => {
84
79
  mockedFs.readFileSync.mockReturnValue(JSON.stringify(mockAppMeta));
85
80
  mockedProjectAddPromptV3.mockResolvedValue(mockPromptResponse);
86
81
  mockedCloneGithubRepo.mockResolvedValue(true);
87
- await (0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig);
82
+ await v3AddComponent(mockArgs, projectDir, mockProjectConfig);
88
83
  expect(mockedGetConfigForPlatformVersion).toHaveBeenCalledWith('v3');
89
84
  expect(mockedGetProjectMetadata).toHaveBeenCalledWith('/path/to/project/src');
90
85
  expect(mockedProjectAddPromptV3).toHaveBeenCalled();
@@ -111,7 +106,7 @@ describe('lib/projects/add/v3AddComponent', () => {
111
106
  mockedConfirmPrompt.mockResolvedValue(true);
112
107
  mockedProjectAddPromptV3.mockResolvedValue(mockPromptResponse);
113
108
  mockedCloneGithubRepo.mockResolvedValue(true);
114
- await (0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig);
109
+ await v3AddComponent(mockArgs, projectDir, mockProjectConfig);
115
110
  expect(mockedCreateV3App).toHaveBeenCalled();
116
111
  expect(mockedCloneGithubRepo).toHaveBeenCalledWith(expect.any(String), projectDir, expect.objectContaining({
117
112
  sourceDir: ['v3/test-component', 'v3/app-template'],
@@ -137,7 +132,7 @@ describe('lib/projects/add/v3AddComponent', () => {
137
132
  mockedConfirmPrompt.mockResolvedValue(true);
138
133
  mockedProjectAddPromptV3.mockResolvedValue(mockPromptResponse);
139
134
  mockedCloneGithubRepo.mockResolvedValue(true);
140
- await (0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig);
135
+ await v3AddComponent(mockArgs, projectDir, mockProjectConfig);
141
136
  expect(mockedCreateV3App).not.toHaveBeenCalled();
142
137
  expect(mockedCloneGithubRepo).not.toHaveBeenCalled();
143
138
  });
@@ -151,7 +146,7 @@ describe('lib/projects/add/v3AddComponent', () => {
151
146
  };
152
147
  mockedGetConfigForPlatformVersion.mockResolvedValue(mockConfig);
153
148
  mockedGetProjectMetadata.mockResolvedValue(mockProjectMetadataMaxApps);
154
- await expect((0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow('This project currently has the maximum number of apps: 1');
149
+ await expect(v3AddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow('This project currently has the maximum number of apps: 1');
155
150
  });
156
151
  it('throws an error when components list is empty', async () => {
157
152
  const mockEmptyConfig = {
@@ -159,7 +154,7 @@ describe('lib/projects/add/v3AddComponent', () => {
159
154
  parentComponents: [],
160
155
  };
161
156
  mockedGetConfigForPlatformVersion.mockResolvedValue(mockEmptyConfig);
162
- await expect((0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToFetchComponentList);
157
+ await expect(v3AddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToFetchComponentList);
163
158
  });
164
159
  it('throws an error when app meta file cannot be parsed', async () => {
165
160
  mockedGetConfigForPlatformVersion.mockResolvedValue(mockConfig);
@@ -167,7 +162,7 @@ describe('lib/projects/add/v3AddComponent', () => {
167
162
  mockedFs.readFileSync.mockImplementation(() => {
168
163
  throw new Error('File read error');
169
164
  });
170
- await expect((0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow('Unable to parse app file');
165
+ await expect(v3AddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow('Unable to parse app file');
171
166
  });
172
167
  it('throws an error when cloning fails', async () => {
173
168
  const mockAppMeta = {
@@ -184,7 +179,7 @@ describe('lib/projects/add/v3AddComponent', () => {
184
179
  mockedFs.readFileSync.mockReturnValue(JSON.stringify(mockAppMeta));
185
180
  mockedProjectAddPromptV3.mockResolvedValue(mockPromptResponse);
186
181
  mockedCloneGithubRepo.mockRejectedValue(new Error('Clone failed'));
187
- await expect((0, v3AddComponent_1.v3AddComponent)(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(en_1.commands.project.add.error.failedToDownloadComponent);
182
+ await expect(v3AddComponent(mockArgs, projectDir, mockProjectConfig)).rejects.toThrow(commands.project.add.error.failedToDownloadComponent);
188
183
  });
189
184
  });
190
185
  });
@@ -1,4 +1,4 @@
1
- import { ProjectConfig } from '../../../types/Projects';
1
+ import { ProjectConfig } from '../../../types/Projects.js';
2
2
  export declare function legacyAddComponent(args: {
3
3
  name?: string;
4
4
  type?: string;
@@ -1,48 +1,42 @@
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.legacyAddComponent = legacyAddComponent;
7
- const Projects_1 = require("../../../types/Projects");
8
- const structure_1 = require("../structure");
9
- const errorHandlers_1 = require("../../errorHandlers");
10
- const en_1 = require("../../../lang/en");
11
- const legacy_1 = require("../create/legacy");
12
- const projectAddPrompt_1 = require("../../prompts/projectAddPrompt");
13
- const path_1 = __importDefault(require("path"));
14
- const constants_1 = require("../../constants");
15
- const github_1 = require("@hubspot/local-dev-lib/github");
16
- const logger_1 = require("../../ui/logger");
17
- async function legacyAddComponent(args, projectDir, projectConfig) {
1
+ import { ComponentTypes } from '../../../types/Projects.js';
2
+ import { findProjectComponents } from '../structure.js';
3
+ import { debugError } from '../../errorHandlers/index.js';
4
+ import { commands } from '../../../lang/en.js';
5
+ import { getProjectComponentListFromRepo } from '../create/legacy.js';
6
+ import { projectAddPrompt } from '../../prompts/projectAddPrompt.js';
7
+ import path from 'path';
8
+ import { HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, DEFAULT_PROJECT_TEMPLATE_BRANCH, } from '../../constants.js';
9
+ import { cloneGithubRepo } from '@hubspot/local-dev-lib/github';
10
+ import { uiLogger } from '../../ui/logger.js';
11
+ export async function legacyAddComponent(args, projectDir, projectConfig) {
18
12
  // We currently only support adding private apps to projects
19
13
  let projectContainsPublicApp = false;
20
14
  try {
21
- const components = await (0, structure_1.findProjectComponents)(projectDir);
22
- projectContainsPublicApp = components.some(c => c.type === Projects_1.ComponentTypes.PublicApp);
15
+ const components = await findProjectComponents(projectDir);
16
+ projectContainsPublicApp = components.some(c => c.type === ComponentTypes.PublicApp);
23
17
  }
24
18
  catch (err) {
25
- (0, errorHandlers_1.debugError)(err);
19
+ debugError(err);
26
20
  }
27
21
  if (projectContainsPublicApp) {
28
- throw new Error(en_1.commands.project.add.error.projectContainsPublicApp);
22
+ throw new Error(commands.project.add.error.projectContainsPublicApp);
29
23
  }
30
- logger_1.uiLogger.log(en_1.commands.project.add.creatingComponent(projectConfig.name));
31
- const components = await (0, legacy_1.getProjectComponentListFromRepo)(projectConfig.platformVersion);
24
+ uiLogger.log(commands.project.add.creatingComponent(projectConfig.name));
25
+ const components = await getProjectComponentListFromRepo(projectConfig.platformVersion);
32
26
  if (!components || !components.length) {
33
- throw new Error(en_1.commands.project.add.error.failedToFetchComponentList);
27
+ throw new Error(commands.project.add.error.failedToFetchComponentList);
34
28
  }
35
- const projectAddPromptResponse = await (0, projectAddPrompt_1.projectAddPrompt)(components, args);
29
+ const projectAddPromptResponse = await projectAddPrompt(components, args);
36
30
  try {
37
- const componentPath = path_1.default.join(projectDir, projectConfig.srcDir, projectAddPromptResponse.name);
38
- await (0, github_1.cloneGithubRepo)(constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, componentPath, {
31
+ const componentPath = path.join(projectDir, projectConfig.srcDir, projectAddPromptResponse.name);
32
+ await cloneGithubRepo(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, componentPath, {
39
33
  sourceDir: projectAddPromptResponse.componentTemplate.path,
40
- branch: 'main',
34
+ branch: DEFAULT_PROJECT_TEMPLATE_BRANCH,
41
35
  hideLogs: true,
42
36
  });
43
- logger_1.uiLogger.success(en_1.commands.project.add.success(projectAddPromptResponse.name));
37
+ uiLogger.success(commands.project.add.success(projectAddPromptResponse.name));
44
38
  }
45
39
  catch (error) {
46
- throw new Error(en_1.commands.project.add.error.failedToDownloadComponent);
40
+ throw new Error(commands.project.add.error.failedToDownloadComponent);
47
41
  }
48
42
  }
@@ -1,4 +1,4 @@
1
- import { ProjectConfig } from '../../../types/Projects';
1
+ import { ProjectConfig } from '../../../types/Projects.js';
2
2
  export declare function v3AddComponent(args: {
3
3
  name?: string;
4
4
  type?: string;
@@ -1,88 +1,83 @@
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.v3AddComponent = v3AddComponent;
7
- const en_1 = require("../../../lang/en");
8
- const legacy_1 = require("../create/legacy");
9
- const v3_1 = require("../create/v3");
10
- const path_1 = __importDefault(require("path"));
11
- const fs_1 = __importDefault(require("fs"));
12
- const projectAddPrompt_1 = require("../../prompts/projectAddPrompt");
13
- const constants_1 = require("../../constants");
14
- const components_1 = require("../components");
15
- const project_1 = require("@hubspot/project-parsing-lib/src/lib/project");
16
- const constants_2 = require("@hubspot/project-parsing-lib/src/lib/constants");
17
- const github_1 = require("@hubspot/local-dev-lib/github");
18
- const errorHandlers_1 = require("../../errorHandlers");
19
- const logger_1 = require("../../ui/logger");
20
- async function v3AddComponent(args, projectDir, projectConfig) {
21
- logger_1.uiLogger.log(en_1.commands.project.add.creatingComponent(projectConfig.name));
22
- const config = await (0, legacy_1.getConfigForPlatformVersion)(projectConfig.platformVersion);
1
+ import { commands, lib } from '../../../lang/en.js';
2
+ import { getConfigForPlatformVersion } from '../create/legacy.js';
3
+ import { calculateComponentTemplateChoices, createV3App, } from '../create/v3.js';
4
+ import { PROJECT_WITH_APP } from '../../constants.js';
5
+ import path from 'path';
6
+ import fs from 'fs';
7
+ import { projectAddPromptV3 } from '../../prompts/projectAddPrompt.js';
8
+ import { HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, DEFAULT_PROJECT_TEMPLATE_BRANCH, } from '../../constants.js';
9
+ import { handleComponentCollision } from '../components.js';
10
+ import { getProjectMetadata, } from '@hubspot/project-parsing-lib/src/lib/project.js';
11
+ import { AppKey } from '@hubspot/project-parsing-lib/src/lib/constants.js';
12
+ import { cloneGithubRepo } from '@hubspot/local-dev-lib/github';
13
+ import { debugError } from '../../errorHandlers/index.js';
14
+ import { uiLogger } from '../../ui/logger.js';
15
+ export async function v3AddComponent(args, projectDir, projectConfig) {
16
+ uiLogger.log(commands.project.add.creatingComponent(projectConfig.name));
17
+ const config = await getConfigForPlatformVersion(projectConfig.platformVersion);
23
18
  const { components, parentComponents } = config;
24
19
  if (!components || !components.length) {
25
- throw new Error(en_1.commands.project.add.error.failedToFetchComponentList);
20
+ throw new Error(commands.project.add.error.failedToFetchComponentList);
26
21
  }
27
- const projectSrcDirectory = path_1.default.join(projectDir, projectConfig.srcDir);
28
- const projectMetadata = await (0, project_1.getProjectMetadata)(projectSrcDirectory);
22
+ const projectSrcDirectory = path.join(projectDir, projectConfig.srcDir);
23
+ const projectMetadata = await getProjectMetadata(projectSrcDirectory);
29
24
  let derivedAuthType;
30
25
  let derivedDistribution;
31
- const appsMetadata = projectMetadata.components[constants_2.AppKey];
26
+ const appsMetadata = projectMetadata.components[AppKey];
32
27
  const shouldCreateApp = appsMetadata.count === 0;
33
28
  if (shouldCreateApp) {
34
- const { authType, distribution } = await (0, v3_1.createV3App)(args.auth, args.distribution);
29
+ const { authType, distribution } = await createV3App(args.auth, args.distribution);
35
30
  derivedDistribution = distribution;
36
31
  derivedAuthType = authType;
37
32
  }
38
33
  else if (appsMetadata.count > appsMetadata.maxCount) {
39
- throw new Error(en_1.lib.projects.create.errors.exceededMaxNumberOfApps(appsMetadata.maxCount));
34
+ throw new Error(lib.projects.create.errors.exceededMaxNumberOfApps(appsMetadata.maxCount));
40
35
  }
41
36
  else {
42
37
  const apps = appsMetadata.hsMetaFiles.map(appLoc => {
43
38
  try {
44
- return JSON.parse(fs_1.default.readFileSync(appLoc, 'utf8'));
39
+ return JSON.parse(fs.readFileSync(appLoc, 'utf8'));
45
40
  }
46
41
  catch (err) {
47
- throw new Error(en_1.lib.projects.create.errors.unableToParseAppConfig(appLoc));
42
+ throw new Error(lib.projects.create.errors.unableToParseAppConfig(appLoc));
48
43
  }
49
44
  });
50
45
  derivedDistribution = apps[0].config?.distribution;
51
46
  derivedAuthType = apps[0].config?.auth?.type;
52
47
  }
53
- const componentTemplateChoices = (0, v3_1.calculateComponentTemplateChoices)(components, derivedAuthType, derivedDistribution, projectMetadata);
54
- const projectAddPromptResponse = await (0, projectAddPrompt_1.projectAddPromptV3)(componentTemplateChoices, args.features);
48
+ const componentTemplateChoices = calculateComponentTemplateChoices(components, derivedAuthType, derivedDistribution, projectMetadata);
49
+ const projectAddPromptResponse = await projectAddPromptV3(componentTemplateChoices, args.features);
55
50
  try {
56
51
  const components = projectAddPromptResponse.componentTemplate?.map((componentTemplate) => {
57
- return path_1.default.join(projectConfig.platformVersion, componentTemplate.path);
52
+ return path.join(projectConfig.platformVersion, componentTemplate.path);
58
53
  }) || [];
59
54
  if (shouldCreateApp) {
60
55
  const parentComponent = parentComponents?.find(possibleParent => {
61
- return (possibleParent.type === v3_1.PROJECT_WITH_APP &&
56
+ return (possibleParent.type === PROJECT_WITH_APP &&
62
57
  possibleParent.authType === derivedAuthType &&
63
58
  possibleParent.distribution === derivedDistribution);
64
59
  });
65
60
  if (parentComponent) {
66
- components.push(path_1.default.join(projectConfig.platformVersion, parentComponent.path));
61
+ components.push(path.join(projectConfig.platformVersion, parentComponent.path));
67
62
  }
68
63
  }
69
64
  if (components.length === 0) {
70
- logger_1.uiLogger.log(en_1.lib.projects.add.nothingAdded);
65
+ uiLogger.log(lib.projects.add.nothingAdded);
71
66
  return;
72
67
  }
73
- await (0, github_1.cloneGithubRepo)(constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, projectDir, {
68
+ await cloneGithubRepo(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, projectDir, {
74
69
  sourceDir: components,
75
70
  hideLogs: true,
76
- branch: 'main',
77
- handleCollision: components_1.handleComponentCollision,
71
+ branch: DEFAULT_PROJECT_TEMPLATE_BRANCH,
72
+ handleCollision: handleComponentCollision,
78
73
  });
79
- logger_1.uiLogger.success(en_1.commands.project.add.success(projectAddPromptResponse.componentTemplate
74
+ uiLogger.success(commands.project.add.success(projectAddPromptResponse.componentTemplate
80
75
  .map(template => `'${template.label}'`)
81
76
  .join(', '), projectAddPromptResponse.componentTemplate.length > 1));
82
77
  }
83
78
  catch (error) {
84
- (0, errorHandlers_1.debugError)(error);
85
- throw new Error(en_1.commands.project.add.error.failedToDownloadComponent, {
79
+ debugError(error);
80
+ throw new Error(commands.project.add.error.failedToDownloadComponent, {
86
81
  cause: error,
87
82
  });
88
83
  }
@@ -1,7 +1,7 @@
1
1
  import { FileResult } from 'tmp';
2
2
  import { Build } from '@hubspot/local-dev-lib/types/Build';
3
3
  import { Deploy } from '@hubspot/local-dev-lib/types/Deploy';
4
- import { ProjectConfig, ProjectTask, ProjectPollResult } from '../../types/Projects';
4
+ import { ProjectConfig, ProjectTask, ProjectPollResult } from '../../types/Projects.js';
5
5
  export declare function useV3Api(platformVersion?: string | null): boolean;
6
6
  type PollTaskStatusFunction<T extends ProjectTask> = (accountId: number, taskName: string, taskId: number, deployedBuildId: number | null, silenceLogs?: boolean) => Promise<T>;
7
7
  export declare const pollBuildStatus: PollTaskStatusFunction<Build>;