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

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 (602) hide show
  1. package/README.md +0 -4
  2. package/api/__tests__/migrate.test.js +27 -29
  3. package/api/migrate.d.ts +7 -0
  4. package/api/migrate.js +22 -22
  5. package/bin/cli.js +92 -97
  6. package/bin/hs +2 -2
  7. package/bin/hscms +2 -2
  8. package/bin/silenceErrors.js +1 -2
  9. package/commands/__tests__/account.test.js +29 -34
  10. package/commands/__tests__/auth.test.js +11 -16
  11. package/commands/__tests__/cms.test.js +15 -20
  12. package/commands/__tests__/config.test.js +14 -19
  13. package/commands/__tests__/create.test.js +10 -15
  14. package/commands/__tests__/customObject.test.js +14 -19
  15. package/commands/__tests__/doctor.test.js +43 -48
  16. package/commands/__tests__/feedback.test.js +7 -45
  17. package/commands/__tests__/fetch.test.js +29 -28
  18. package/commands/__tests__/filemanager.test.js +14 -19
  19. package/commands/__tests__/function.test.js +16 -21
  20. package/commands/__tests__/getStarted.test.js +45 -50
  21. package/commands/__tests__/hubdb.test.js +17 -22
  22. package/commands/__tests__/init.test.js +12 -17
  23. package/commands/__tests__/lint.test.js +13 -18
  24. package/commands/__tests__/list.test.js +18 -23
  25. package/commands/__tests__/logs.test.js +28 -27
  26. package/commands/__tests__/mcp.test.js +14 -19
  27. package/commands/__tests__/mv.test.js +14 -52
  28. package/commands/__tests__/open.test.js +13 -51
  29. package/commands/__tests__/project.test.js +44 -49
  30. package/commands/__tests__/remove.test.js +13 -51
  31. package/commands/__tests__/sandbox.test.js +14 -19
  32. package/commands/__tests__/secret.test.js +16 -21
  33. package/commands/__tests__/testAccount.test.js +18 -21
  34. package/commands/__tests__/theme.test.js +15 -20
  35. package/commands/account/__tests__/auth.test.js +11 -16
  36. package/commands/account/__tests__/clean.test.js +12 -17
  37. package/commands/account/__tests__/createOverride.test.js +10 -15
  38. package/commands/account/__tests__/info.test.js +11 -16
  39. package/commands/account/__tests__/list.test.js +11 -16
  40. package/commands/account/__tests__/remove.test.js +13 -18
  41. package/commands/account/__tests__/removeOverride.js +8 -13
  42. package/commands/account/__tests__/rename.test.js +15 -20
  43. package/commands/account/__tests__/use.test.js +10 -15
  44. package/commands/account/auth.d.ts +1 -1
  45. package/commands/account/auth.js +78 -69
  46. package/commands/account/clean.d.ts +1 -1
  47. package/commands/account/clean.js +55 -60
  48. package/commands/account/createOverride.d.ts +1 -1
  49. package/commands/account/createOverride.js +52 -57
  50. package/commands/account/info.d.ts +1 -1
  51. package/commands/account/info.js +33 -35
  52. package/commands/account/list.d.ts +1 -1
  53. package/commands/account/list.js +43 -45
  54. package/commands/account/remove.d.ts +1 -1
  55. package/commands/account/remove.js +37 -42
  56. package/commands/account/removeOverride.d.ts +1 -1
  57. package/commands/account/removeOverride.js +38 -43
  58. package/commands/account/rename.d.ts +1 -1
  59. package/commands/account/rename.js +18 -20
  60. package/commands/account/use.d.ts +1 -1
  61. package/commands/account/use.js +29 -31
  62. package/commands/account.d.ts +1 -1
  63. package/commands/account.js +23 -28
  64. package/commands/app/__tests__/migrate.test.js +29 -34
  65. package/commands/app/migrate.d.ts +2 -2
  66. package/commands/app/migrate.js +40 -43
  67. package/commands/app/secret/__tests__/add.test.js +6 -11
  68. package/commands/app/secret/__tests__/delete.test.js +6 -11
  69. package/commands/app/secret/__tests__/list.test.js +6 -11
  70. package/commands/app/secret/__tests__/update.test.js +6 -11
  71. package/commands/app/secret/add.d.ts +1 -1
  72. package/commands/app/secret/add.js +28 -30
  73. package/commands/app/secret/delete.d.ts +1 -1
  74. package/commands/app/secret/delete.js +34 -36
  75. package/commands/app/secret/list.d.ts +1 -1
  76. package/commands/app/secret/list.js +25 -27
  77. package/commands/app/secret/update.d.ts +1 -1
  78. package/commands/app/secret/update.js +32 -34
  79. package/commands/app/secret.d.ts +1 -1
  80. package/commands/app/secret.js +12 -17
  81. package/commands/app.d.ts +1 -1
  82. package/commands/app.js +6 -11
  83. package/commands/auth.d.ts +1 -1
  84. package/commands/auth.js +70 -72
  85. package/commands/cms/convertFields.d.ts +1 -1
  86. package/commands/cms/convertFields.js +34 -39
  87. package/commands/cms/getReactModule.d.ts +1 -1
  88. package/commands/cms/getReactModule.js +32 -37
  89. package/commands/cms/lighthouseScore.d.ts +1 -1
  90. package/commands/cms/lighthouseScore.js +67 -72
  91. package/commands/cms.d.ts +1 -1
  92. package/commands/cms.js +11 -16
  93. package/commands/completion.d.ts +1 -1
  94. package/commands/completion.js +10 -15
  95. package/commands/config/migrate.d.ts +1 -1
  96. package/commands/config/migrate.js +27 -32
  97. package/commands/config/set.d.ts +2 -1
  98. package/commands/config/set.js +40 -32
  99. package/commands/config.d.ts +1 -1
  100. package/commands/config.js +8 -13
  101. package/commands/create/api-sample.d.ts +1 -1
  102. package/commands/create/api-sample.js +28 -33
  103. package/commands/create/app.d.ts +1 -1
  104. package/commands/create/app.js +3 -5
  105. package/commands/create/function.d.ts +1 -1
  106. package/commands/create/function.js +9 -11
  107. package/commands/create/index.d.ts +1 -1
  108. package/commands/create/index.js +19 -24
  109. package/commands/create/module.d.ts +1 -1
  110. package/commands/create/module.js +12 -14
  111. package/commands/create/react-app.d.ts +1 -1
  112. package/commands/create/react-app.js +3 -5
  113. package/commands/create/template.d.ts +1 -1
  114. package/commands/create/template.js +12 -14
  115. package/commands/create/vue-app.d.ts +1 -1
  116. package/commands/create/vue-app.js +3 -5
  117. package/commands/create/webpack-serverless.d.ts +1 -1
  118. package/commands/create/webpack-serverless.js +3 -5
  119. package/commands/create/website-theme.d.ts +1 -1
  120. package/commands/create/website-theme.js +5 -7
  121. package/commands/create.d.ts +2 -2
  122. package/commands/create.js +30 -35
  123. package/commands/customObject/__tests__/create.test.js +13 -18
  124. package/commands/customObject/__tests__/schema.test.js +18 -23
  125. package/commands/customObject/create.d.ts +1 -1
  126. package/commands/customObject/create.js +28 -30
  127. package/commands/customObject/schema/__tests__/create.test.js +13 -18
  128. package/commands/customObject/schema/__tests__/delete.test.js +13 -18
  129. package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
  130. package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
  131. package/commands/customObject/schema/__tests__/list.test.js +13 -18
  132. package/commands/customObject/schema/__tests__/update.test.js +13 -18
  133. package/commands/customObject/schema/create.d.ts +1 -1
  134. package/commands/customObject/schema/create.js +28 -30
  135. package/commands/customObject/schema/delete.d.ts +1 -1
  136. package/commands/customObject/schema/delete.js +24 -26
  137. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  138. package/commands/customObject/schema/fetch-all.js +22 -24
  139. package/commands/customObject/schema/fetch.d.ts +1 -1
  140. package/commands/customObject/schema/fetch.js +24 -26
  141. package/commands/customObject/schema/list.d.ts +1 -1
  142. package/commands/customObject/schema/list.js +13 -15
  143. package/commands/customObject/schema/update.d.ts +1 -1
  144. package/commands/customObject/schema/update.js +32 -34
  145. package/commands/customObject/schema.d.ts +1 -1
  146. package/commands/customObject/schema.js +17 -22
  147. package/commands/customObject.d.ts +1 -1
  148. package/commands/customObject.js +13 -18
  149. package/commands/doctor.d.ts +1 -1
  150. package/commands/doctor.js +28 -33
  151. package/commands/feedback.d.ts +1 -1
  152. package/commands/feedback.js +19 -24
  153. package/commands/fetch.d.ts +1 -1
  154. package/commands/fetch.js +28 -30
  155. package/commands/filemanager/__tests__/fetch.test.js +17 -22
  156. package/commands/filemanager/__tests__/upload.test.js +15 -20
  157. package/commands/filemanager/fetch.d.ts +1 -1
  158. package/commands/filemanager/fetch.js +23 -25
  159. package/commands/filemanager/upload.d.ts +1 -1
  160. package/commands/filemanager/upload.js +39 -44
  161. package/commands/filemanager.d.ts +1 -1
  162. package/commands/filemanager.js +8 -13
  163. package/commands/function/deploy.d.ts +1 -1
  164. package/commands/function/deploy.js +35 -40
  165. package/commands/function/list.d.ts +1 -1
  166. package/commands/function/list.js +24 -29
  167. package/commands/function/server.d.ts +1 -1
  168. package/commands/function/server.js +15 -17
  169. package/commands/function.d.ts +1 -1
  170. package/commands/function.js +12 -18
  171. package/commands/getStarted.d.ts +1 -1
  172. package/commands/getStarted.js +119 -125
  173. package/commands/hubdb/__tests__/clear.test.js +13 -18
  174. package/commands/hubdb/__tests__/create.test.js +13 -18
  175. package/commands/hubdb/__tests__/delete.test.js +13 -18
  176. package/commands/hubdb/__tests__/fetch.test.js +13 -18
  177. package/commands/hubdb/__tests__/list.test.js +23 -28
  178. package/commands/hubdb/clear.d.ts +1 -1
  179. package/commands/hubdb/clear.js +20 -22
  180. package/commands/hubdb/create.d.ts +1 -1
  181. package/commands/hubdb/create.js +30 -35
  182. package/commands/hubdb/delete.d.ts +1 -1
  183. package/commands/hubdb/delete.js +24 -26
  184. package/commands/hubdb/fetch.d.ts +1 -1
  185. package/commands/hubdb/fetch.js +17 -19
  186. package/commands/hubdb/list.d.ts +1 -1
  187. package/commands/hubdb/list.js +33 -35
  188. package/commands/hubdb.d.ts +1 -1
  189. package/commands/hubdb.js +18 -24
  190. package/commands/init.d.ts +1 -1
  191. package/commands/init.js +83 -88
  192. package/commands/lint.d.ts +1 -1
  193. package/commands/lint.js +24 -26
  194. package/commands/list.d.ts +1 -1
  195. package/commands/list.js +32 -37
  196. package/commands/logs.d.ts +1 -1
  197. package/commands/logs.js +35 -37
  198. package/commands/mcp/__tests__/setup.test.js +7 -12
  199. package/commands/mcp/__tests__/start.test.js +7 -12
  200. package/commands/mcp/setup.d.ts +1 -1
  201. package/commands/mcp/setup.js +17 -19
  202. package/commands/mcp/start.d.ts +1 -1
  203. package/commands/mcp/start.js +32 -34
  204. package/commands/mcp.d.ts +1 -1
  205. package/commands/mcp.js +7 -12
  206. package/commands/module/marketplace-validate.d.ts +1 -1
  207. package/commands/module/marketplace-validate.js +21 -26
  208. package/commands/module.d.ts +1 -1
  209. package/commands/module.js +7 -13
  210. package/commands/mv.d.ts +1 -1
  211. package/commands/mv.js +20 -22
  212. package/commands/open.d.ts +1 -1
  213. package/commands/open.js +19 -21
  214. package/commands/project/__tests__/add.test.js +10 -15
  215. package/commands/project/__tests__/create.test.js +14 -19
  216. package/commands/project/__tests__/deploy.test.js +96 -134
  217. package/commands/project/__tests__/devUnifiedFlow.test.js +130 -159
  218. package/commands/project/__tests__/download.test.js +14 -19
  219. package/commands/project/__tests__/installDeps.test.js +32 -70
  220. package/commands/project/__tests__/listBuilds.test.js +14 -19
  221. package/commands/project/__tests__/logs.test.js +56 -94
  222. package/commands/project/__tests__/migrate.test.js +25 -30
  223. package/commands/project/__tests__/migrateApp.test.js +17 -22
  224. package/commands/project/__tests__/open.test.js +16 -21
  225. package/commands/project/__tests__/profile.test.js +14 -19
  226. package/commands/project/__tests__/upload.test.js +18 -23
  227. package/commands/project/__tests__/watch.test.js +14 -19
  228. package/commands/project/add.d.ts +1 -1
  229. package/commands/project/add.js +34 -36
  230. package/commands/project/cloneApp.d.ts +1 -1
  231. package/commands/project/cloneApp.js +67 -72
  232. package/commands/project/create.d.ts +2 -2
  233. package/commands/project/create.js +63 -68
  234. package/commands/project/deploy.d.ts +1 -1
  235. package/commands/project/deploy.js +67 -69
  236. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  237. package/commands/project/dev/deprecatedFlow.js +52 -58
  238. package/commands/project/dev/index.d.ts +1 -1
  239. package/commands/project/dev/index.js +44 -47
  240. package/commands/project/dev/unifiedFlow.d.ts +4 -4
  241. package/commands/project/dev/unifiedFlow.js +64 -75
  242. package/commands/project/download.d.ts +1 -1
  243. package/commands/project/download.js +35 -40
  244. package/commands/project/installDeps.d.ts +1 -1
  245. package/commands/project/installDeps.js +29 -34
  246. package/commands/project/listBuilds.d.ts +1 -1
  247. package/commands/project/listBuilds.js +40 -45
  248. package/commands/project/logs.d.ts +1 -1
  249. package/commands/project/logs.js +52 -54
  250. package/commands/project/migrate.d.ts +1 -1
  251. package/commands/project/migrate.js +24 -26
  252. package/commands/project/migrateApp.d.ts +2 -2
  253. package/commands/project/migrateApp.js +18 -20
  254. package/commands/project/open.d.ts +1 -1
  255. package/commands/project/open.js +25 -30
  256. package/commands/project/profile/add.d.ts +1 -1
  257. package/commands/project/profile/add.js +68 -73
  258. package/commands/project/profile/delete.d.ts +1 -1
  259. package/commands/project/profile/delete.js +68 -61
  260. package/commands/project/profile.d.ts +1 -1
  261. package/commands/project/profile.js +9 -14
  262. package/commands/project/upload.d.ts +1 -1
  263. package/commands/project/upload.js +50 -55
  264. package/commands/project/validate.d.ts +1 -1
  265. package/commands/project/validate.js +36 -40
  266. package/commands/project/watch.d.ts +1 -1
  267. package/commands/project/watch.js +59 -61
  268. package/commands/project.d.ts +1 -1
  269. package/commands/project.js +38 -43
  270. package/commands/remove.d.ts +1 -1
  271. package/commands/remove.js +15 -17
  272. package/commands/sandbox/__tests__/create.test.js +222 -20
  273. package/commands/sandbox/__tests__/delete.test.js +15 -20
  274. package/commands/sandbox/create.d.ts +2 -2
  275. package/commands/sandbox/create.js +92 -79
  276. package/commands/sandbox/delete.d.ts +1 -1
  277. package/commands/sandbox/delete.js +94 -96
  278. package/commands/sandbox.d.ts +1 -1
  279. package/commands/sandbox.js +9 -14
  280. package/commands/secret/__tests__/addSecret.test.js +13 -18
  281. package/commands/secret/__tests__/deleteSecret.test.js +13 -18
  282. package/commands/secret/__tests__/listSecret.test.js +13 -18
  283. package/commands/secret/__tests__/updateSecret.test.js +13 -18
  284. package/commands/secret/addSecret.d.ts +1 -1
  285. package/commands/secret/addSecret.js +26 -28
  286. package/commands/secret/deleteSecret.d.ts +1 -1
  287. package/commands/secret/deleteSecret.js +27 -29
  288. package/commands/secret/listSecret.d.ts +1 -1
  289. package/commands/secret/listSecret.js +19 -21
  290. package/commands/secret/updateSecret.d.ts +1 -1
  291. package/commands/secret/updateSecret.js +25 -27
  292. package/commands/secret.d.ts +1 -1
  293. package/commands/secret.js +13 -18
  294. package/commands/testAccount/__tests__/create.test.js +17 -22
  295. package/commands/testAccount/__tests__/createConfig.test.js +6 -11
  296. package/commands/testAccount/__tests__/delete.test.js +15 -20
  297. package/commands/testAccount/__tests__/importData.test.js +93 -0
  298. package/commands/testAccount/create.d.ts +1 -1
  299. package/commands/testAccount/create.js +63 -58
  300. package/commands/testAccount/createConfig.d.ts +1 -1
  301. package/commands/testAccount/createConfig.js +36 -41
  302. package/commands/testAccount/delete.d.ts +1 -1
  303. package/commands/testAccount/delete.js +17 -19
  304. package/commands/testAccount/importData.d.ts +9 -0
  305. package/commands/testAccount/importData.js +61 -0
  306. package/commands/testAccount.d.ts +1 -1
  307. package/commands/testAccount.js +12 -15
  308. package/commands/theme/__tests__/generate-selectors.test.js +7 -12
  309. package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
  310. package/commands/theme/__tests__/preview.test.js +12 -17
  311. package/commands/theme/generate-selectors.d.ts +1 -1
  312. package/commands/theme/generate-selectors.js +23 -28
  313. package/commands/theme/marketplace-validate.d.ts +1 -1
  314. package/commands/theme/marketplace-validate.js +19 -24
  315. package/commands/theme/preview.d.ts +1 -1
  316. package/commands/theme/preview.js +60 -65
  317. package/commands/theme.d.ts +1 -1
  318. package/commands/theme.js +11 -16
  319. package/commands/upload.d.ts +1 -1
  320. package/commands/upload.js +77 -82
  321. package/commands/watch.d.ts +1 -1
  322. package/commands/watch.js +45 -51
  323. package/lang/en.d.ts +69 -9
  324. package/lang/en.js +442 -385
  325. package/lang/en.lyaml +4 -2
  326. package/lib/__tests__/accountTypes.test.js +20 -22
  327. package/lib/__tests__/buildAccount.test.js +88 -65
  328. package/lib/__tests__/commonOpts.test.js +20 -22
  329. package/lib/__tests__/dependencyManagement.test.js +46 -51
  330. package/lib/__tests__/developerTestAccounts.test.js +27 -62
  331. package/lib/__tests__/hasFeature.test.js +6 -8
  332. package/lib/__tests__/importData.test.js +89 -0
  333. package/lib/__tests__/npm.test.js +15 -20
  334. package/lib/__tests__/oauth.test.js +23 -28
  335. package/lib/__tests__/parsing.test.js +18 -20
  336. package/lib/__tests__/polling.test.js +24 -26
  337. package/lib/__tests__/process.test.js +14 -19
  338. package/lib/__tests__/projectProfiles.test.js +34 -39
  339. package/lib/__tests__/sandboxSync.test.js +30 -35
  340. package/lib/__tests__/sandboxes.test.js +29 -31
  341. package/lib/__tests__/serverlessLogs.test.js +8 -13
  342. package/lib/__tests__/usageTracking.test.js +33 -34
  343. package/lib/__tests__/validation.test.js +18 -20
  344. package/lib/__tests__/yargsUtils.test.js +17 -41
  345. package/lib/accountTypes.js +23 -34
  346. package/lib/app/__tests__/migrate.test.js +120 -112
  347. package/lib/app/__tests__/migrate_legacy.test.js +29 -31
  348. package/lib/app/migrate.d.ts +18 -4
  349. package/lib/app/migrate.js +151 -148
  350. package/lib/app/migrate_legacy.d.ts +1 -1
  351. package/lib/app/migrate_legacy.js +72 -78
  352. package/lib/app/urls.js +5 -9
  353. package/lib/buildAccount.d.ts +5 -2
  354. package/lib/buildAccount.js +126 -80
  355. package/lib/commonOpts.d.ts +1 -1
  356. package/lib/commonOpts.js +67 -59
  357. package/lib/configMigrate.js +34 -38
  358. package/lib/configOptions.d.ts +5 -0
  359. package/lib/configOptions.js +44 -40
  360. package/lib/constants.d.ts +9 -0
  361. package/lib/constants.js +40 -34
  362. package/lib/customObject.js +2 -6
  363. package/lib/dependencyManagement.js +37 -45
  364. package/lib/developerTestAccounts.d.ts +1 -1
  365. package/lib/developerTestAccounts.js +34 -39
  366. package/lib/doctor/Diagnosis.d.ts +1 -1
  367. package/lib/doctor/Diagnosis.js +25 -29
  368. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  369. package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
  370. package/lib/doctor/Doctor.d.ts +1 -1
  371. package/lib/doctor/Doctor.js +94 -101
  372. package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
  373. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
  374. package/lib/doctor/__tests__/Doctor.test.js +24 -26
  375. package/lib/enums/exitCodes.js +1 -4
  376. package/lib/errorHandlers/index.js +33 -44
  377. package/lib/errorHandlers/suppressError.d.ts +1 -1
  378. package/lib/errorHandlers/suppressError.js +28 -31
  379. package/lib/errors/ProjectValidationError.d.ts +4 -0
  380. package/lib/errors/ProjectValidationError.js +9 -0
  381. package/lib/filesystem.js +8 -15
  382. package/lib/generateSelectors.js +18 -29
  383. package/lib/hasFeature.d.ts +2 -1
  384. package/lib/hasFeature.js +10 -6
  385. package/lib/importData.d.ts +3 -0
  386. package/lib/importData.js +50 -0
  387. package/lib/interpolation.js +11 -18
  388. package/lib/lang.d.ts +1 -1
  389. package/lib/lang.js +22 -27
  390. package/lib/links.js +16 -24
  391. package/lib/marketplaceValidate.js +29 -39
  392. package/lib/mcp/setup.d.ts +4 -0
  393. package/lib/mcp/setup.js +106 -82
  394. package/lib/middleware/__test__/configMiddleware.test.js +20 -55
  395. package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
  396. package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
  397. package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
  398. package/lib/middleware/__test__/utils.test.js +9 -11
  399. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
  400. package/lib/middleware/autoUpdateMiddleware.js +33 -40
  401. package/lib/middleware/configMiddleware.js +36 -42
  402. package/lib/middleware/fireAlarmMiddleware.js +12 -18
  403. package/lib/middleware/gitMiddleware.js +5 -8
  404. package/lib/middleware/notificationsMiddleware.js +16 -23
  405. package/lib/middleware/requestMiddleware.js +4 -10
  406. package/lib/middleware/utils.js +1 -4
  407. package/lib/middleware/yargsChecksMiddleware.js +10 -13
  408. package/lib/npm.js +14 -23
  409. package/lib/oauth.js +29 -35
  410. package/lib/parsing.js +3 -6
  411. package/lib/polling.js +11 -15
  412. package/lib/process.js +11 -19
  413. package/lib/projectProfiles.d.ts +2 -2
  414. package/lib/projectProfiles.js +32 -42
  415. package/lib/projects/ProjectLogsManager.js +18 -21
  416. package/lib/projects/__tests__/AppDevModeInterface.test.js +142 -148
  417. package/lib/projects/__tests__/LocalDevProcess.test.js +84 -144
  418. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +202 -38
  419. package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
  420. package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
  421. package/lib/projects/__tests__/components.test.js +9 -14
  422. package/lib/projects/__tests__/localDevHelpers.test.d.ts +1 -0
  423. package/lib/projects/__tests__/localDevHelpers.test.js +118 -0
  424. package/lib/projects/__tests__/projects.test.js +35 -40
  425. package/lib/projects/__tests__/structure.test.js +43 -81
  426. package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
  427. package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
  428. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  429. package/lib/projects/add/legacyAddComponent.js +24 -30
  430. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  431. package/lib/projects/add/v3AddComponent.js +37 -42
  432. package/lib/projects/buildAndDeploy.d.ts +1 -1
  433. package/lib/projects/buildAndDeploy.js +88 -97
  434. package/lib/projects/components.js +19 -25
  435. package/lib/projects/config.d.ts +1 -1
  436. package/lib/projects/config.js +32 -41
  437. package/lib/projects/create/__tests__/legacy.test.js +22 -57
  438. package/lib/projects/create/__tests__/v3.test.js +5 -7
  439. package/lib/projects/create/index.d.ts +3 -3
  440. package/lib/projects/create/index.js +19 -22
  441. package/lib/projects/create/legacy.d.ts +1 -1
  442. package/lib/projects/create/legacy.js +25 -31
  443. package/lib/projects/create/v3.d.ts +3 -5
  444. package/lib/projects/create/v3.js +47 -59
  445. package/lib/projects/ensureProjectExists.js +31 -37
  446. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  447. package/lib/projects/localDev/AppDevModeInterface.js +58 -60
  448. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  449. package/lib/projects/localDev/DevServerManager.js +22 -24
  450. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  451. package/lib/projects/localDev/DevServerManagerV2.js +15 -20
  452. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -5
  453. package/lib/projects/localDev/LocalDevLogger.js +66 -79
  454. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  455. package/lib/projects/localDev/LocalDevManager.js +106 -111
  456. package/lib/projects/localDev/LocalDevProcess.d.ts +7 -6
  457. package/lib/projects/localDev/LocalDevProcess.js +40 -53
  458. package/lib/projects/localDev/LocalDevState.d.ts +10 -10
  459. package/lib/projects/localDev/LocalDevState.js +23 -19
  460. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  461. package/lib/projects/localDev/LocalDevWatcher.js +6 -11
  462. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -3
  463. package/lib/projects/localDev/LocalDevWebsocketServer.js +78 -55
  464. package/lib/projects/localDev/helpers.d.ts +10 -3
  465. package/lib/projects/localDev/helpers.js +211 -174
  466. package/lib/projects/structure.d.ts +3 -3
  467. package/lib/projects/structure.js +32 -78
  468. package/lib/projects/ui.js +10 -13
  469. package/lib/projects/upload.d.ts +1 -1
  470. package/lib/projects/upload.js +57 -73
  471. package/lib/projects/urls.d.ts +1 -1
  472. package/lib/projects/urls.js +15 -25
  473. package/lib/projects/watch.d.ts +1 -1
  474. package/lib/projects/watch.js +48 -54
  475. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
  476. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
  477. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  478. package/lib/prompts/accountNamePrompt.js +26 -31
  479. package/lib/prompts/accountsPrompt.js +12 -15
  480. package/lib/prompts/cmsFieldPrompt.js +13 -19
  481. package/lib/prompts/confirmImportDataPrompt.d.ts +1 -0
  482. package/lib/prompts/confirmImportDataPrompt.js +12 -0
  483. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  484. package/lib/prompts/createApiSamplePrompt.js +9 -12
  485. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
  486. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +23 -26
  487. package/lib/prompts/createFunctionPrompt.js +17 -20
  488. package/lib/prompts/createModulePrompt.js +12 -15
  489. package/lib/prompts/createTemplatePrompt.js +5 -8
  490. package/lib/prompts/downloadProjectPrompt.js +17 -20
  491. package/lib/prompts/importDataFilePathPrompt.d.ts +1 -0
  492. package/lib/prompts/importDataFilePathPrompt.js +24 -0
  493. package/lib/prompts/importDataTestAccountSelectPrompt.d.ts +3 -0
  494. package/lib/prompts/importDataTestAccountSelectPrompt.js +29 -0
  495. package/lib/prompts/installAppPrompt.js +19 -26
  496. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  497. package/lib/prompts/personalAccessKeyPrompt.js +40 -47
  498. package/lib/prompts/previewPrompt.js +15 -22
  499. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  500. package/lib/prompts/projectAddPrompt.js +14 -18
  501. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  502. package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
  503. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  504. package/lib/prompts/projectNameAndDestPrompt.js +22 -29
  505. package/lib/prompts/projectNamePrompt.js +11 -14
  506. package/lib/prompts/projectsLogsPrompt.js +5 -8
  507. package/lib/prompts/promptUtils.d.ts +1 -1
  508. package/lib/prompts/promptUtils.js +17 -24
  509. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  510. package/lib/prompts/sandboxesPrompt.js +26 -30
  511. package/lib/prompts/secretPrompt.js +10 -15
  512. package/lib/prompts/selectAppPrompt.js +11 -14
  513. package/lib/prompts/selectHubDBTablePrompt.js +24 -30
  514. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  515. package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
  516. package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
  517. package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
  518. package/lib/prompts/uploadPrompt.js +11 -17
  519. package/lib/sandboxSync.d.ts +1 -1
  520. package/lib/sandboxSync.js +58 -65
  521. package/lib/sandboxes.d.ts +5 -1
  522. package/lib/sandboxes.js +72 -76
  523. package/lib/schema.js +13 -20
  524. package/lib/serverlessLogs.js +45 -52
  525. package/lib/testUtils.js +4 -8
  526. package/lib/ui/SpinniesManager.d.ts +1 -1
  527. package/lib/ui/SpinniesManager.js +29 -34
  528. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +1 -0
  529. package/lib/ui/__tests__/removeAnsiCodes.test.js +84 -0
  530. package/lib/ui/boxen.js +11 -14
  531. package/lib/ui/git.js +14 -20
  532. package/lib/ui/index.d.ts +6 -0
  533. package/lib/ui/index.js +56 -76
  534. package/lib/ui/logger.js +10 -13
  535. package/lib/ui/removeAnsiCodes.d.ts +1 -0
  536. package/lib/ui/removeAnsiCodes.js +4 -0
  537. package/lib/ui/serverlessFunctionLogs.js +14 -20
  538. package/lib/ui/spinniesUtils.js +24 -39
  539. package/lib/ui/supportHyperlinks.js +3 -6
  540. package/lib/ui/supportsColor.js +11 -17
  541. package/lib/ui/table.js +6 -13
  542. package/lib/upload.js +15 -21
  543. package/lib/usageTracking.js +35 -44
  544. package/lib/utils/hasFlag.js +2 -8
  545. package/lib/validation.js +48 -87
  546. package/lib/yargsUtils.d.ts +2 -1
  547. package/lib/yargsUtils.js +19 -16
  548. package/mcp-server/server.js +6 -8
  549. package/mcp-server/tools/index.js +15 -16
  550. package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
  551. package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
  552. package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
  553. package/mcp-server/tools/project/CreateProjectTool.js +40 -54
  554. package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
  555. package/mcp-server/tools/project/DeployProjectTool.js +49 -0
  556. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
  557. package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
  558. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  559. package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
  560. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  561. package/mcp-server/tools/project/UploadProjectTools.js +12 -19
  562. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  563. package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
  564. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
  565. package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
  566. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
  567. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
  568. package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
  569. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
  570. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
  571. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
  572. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
  573. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
  574. package/mcp-server/tools/project/constants.d.ts +1 -0
  575. package/mcp-server/tools/project/constants.js +14 -9
  576. package/mcp-server/types.js +1 -5
  577. package/mcp-server/utils/__tests__/command.test.js +9 -11
  578. package/mcp-server/utils/__tests__/project.test.js +12 -17
  579. package/mcp-server/utils/command.d.ts +1 -1
  580. package/mcp-server/utils/command.js +4 -11
  581. package/mcp-server/utils/content.d.ts +1 -1
  582. package/mcp-server/utils/content.js +2 -6
  583. package/mcp-server/utils/project.js +8 -14
  584. package/mcp-server/utils/toolUsageTracking.js +11 -14
  585. package/package.json +21 -14
  586. package/types/Cms.d.ts +1 -1
  587. package/types/Cms.js +1 -2
  588. package/types/LocalDev.d.ts +4 -7
  589. package/types/LocalDev.js +1 -2
  590. package/types/ProjectComponents.d.ts +2 -2
  591. package/types/ProjectComponents.js +1 -2
  592. package/types/Projects.d.ts +1 -1
  593. package/types/Projects.js +2 -5
  594. package/types/Prompts.js +1 -2
  595. package/types/Sandboxes.js +1 -2
  596. package/types/Yargs.js +1 -2
  597. package/ui/index.d.ts +1 -0
  598. package/ui/index.js +6 -0
  599. package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
  600. package/mcp-server/tools/project/DeployProject.js +0 -53
  601. /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → commands/testAccount/__tests__/importData.test.d.ts} +0 -0
  602. /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/__tests__/importData.test.d.ts} +0 -0
@@ -1,55 +1,49 @@
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 path_1 = __importDefault(require("path"));
7
- const config_1 = require("@hubspot/local-dev-lib/constants/config");
8
- const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
9
- // import { HsProfileFile } from '@hubspot/project-parsing-lib/src/lib/types';
10
- const config_2 = require("@hubspot/local-dev-lib/config");
11
- const environment_1 = require("@hubspot/local-dev-lib/environment");
12
- const errorHandlers_1 = require("../../../lib/errorHandlers");
13
- const ensureProjectExists_1 = require("../../../lib/projects/ensureProjectExists");
14
- const helpers_1 = require("../../../lib/projects/localDev/helpers");
15
- const projectDevTargetAccountPrompt_1 = require("../../../lib/prompts/projectDevTargetAccountPrompt");
16
- const SpinniesManager_1 = __importDefault(require("../../../lib/ui/SpinniesManager"));
17
- const LocalDevProcess_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevProcess"));
18
- const LocalDevWatcher_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevWatcher"));
19
- const LocalDevWebsocketServer_1 = __importDefault(require("../../../lib/projects/localDev/LocalDevWebsocketServer"));
20
- const process_1 = require("../../../lib/process");
21
- const accountTypes_1 = require("../../../lib/accountTypes");
22
- const ui_1 = require("../../../lib/ui");
23
- const logger_1 = require("../../../lib/ui/logger");
24
- const en_1 = require("../../../lang/en");
25
- const unifiedFlow_1 = require("../dev/unifiedFlow");
26
- const environments_1 = require("@hubspot/local-dev-lib/constants/environments");
27
- const vitest_1 = require("vitest");
1
+ import path from 'path';
2
+ import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
3
+ import { translateForLocalDev } from '@hubspot/project-parsing-lib';
4
+ import { getConfigAccounts, getAccountConfig, } from '@hubspot/local-dev-lib/config';
5
+ import { getValidEnv } from '@hubspot/local-dev-lib/environment';
6
+ import { logError } from '../../../lib/errorHandlers/index.js';
7
+ import { ensureProjectExists } from '../../../lib/projects/ensureProjectExists.js';
8
+ import { createInitialBuildForNewProject, createNewProjectForLocalDev, useExistingDevTestAccount, createDeveloperTestAccountForLocalDev, selectAccountTypePrompt, } from '../../../lib/projects/localDev/helpers.js';
9
+ import { selectDeveloperTestTargetAccountPrompt, selectSandboxTargetAccountPrompt, } from '../../../lib/prompts/projectDevTargetAccountPrompt.js';
10
+ import SpinniesManager from '../../../lib/ui/SpinniesManager.js';
11
+ import LocalDevProcess from '../../../lib/projects/localDev/LocalDevProcess.js';
12
+ import LocalDevWatcher from '../../../lib/projects/localDev/LocalDevWatcher.js';
13
+ import LocalDevWebsocketServer from '../../../lib/projects/localDev/LocalDevWebsocketServer.js';
14
+ import { handleExit, handleKeypress } from '../../../lib/process.js';
15
+ import { isTestAccountOrSandbox, isUnifiedAccount, } from '../../../lib/accountTypes.js';
16
+ import { uiLine } from '../../../lib/ui/index.js';
17
+ import { uiLogger } from '../../../lib/ui/logger.js';
18
+ import { commands } from '../../../lang/en.js';
19
+ import { unifiedProjectDevFlow } from '../dev/unifiedFlow.js';
20
+ import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
21
+ import { vi } from 'vitest';
28
22
  // Mock @hubspot/ui-extensions-dev-server
29
- vitest_1.vi.mock('@hubspot/ui-extensions-dev-server', () => ({
23
+ vi.mock('@hubspot/ui-extensions-dev-server', () => ({
30
24
  DevModeUnifiedInterface: {
31
- setup: vitest_1.vi.fn().mockResolvedValue(undefined),
32
- start: vitest_1.vi.fn().mockResolvedValue(undefined),
33
- fileChange: vitest_1.vi.fn().mockResolvedValue(undefined),
34
- cleanup: vitest_1.vi.fn().mockResolvedValue(undefined),
25
+ setup: vi.fn().mockResolvedValue(undefined),
26
+ start: vi.fn().mockResolvedValue(undefined),
27
+ fileChange: vi.fn().mockResolvedValue(undefined),
28
+ cleanup: vi.fn().mockResolvedValue(undefined),
35
29
  },
36
30
  }));
37
31
  // Mock all dependencies
38
- vitest_1.vi.mock('@hubspot/project-parsing-lib');
39
- vitest_1.vi.mock('@hubspot/local-dev-lib/config');
40
- vitest_1.vi.mock('@hubspot/local-dev-lib/environment');
41
- vitest_1.vi.mock('../../../lib/errorHandlers');
42
- vitest_1.vi.mock('../../../lib/projects/ensureProjectExists');
43
- vitest_1.vi.mock('../../../lib/projects/localDev/helpers');
44
- vitest_1.vi.mock('../../../lib/prompts/projectDevTargetAccountPrompt');
45
- vitest_1.vi.mock('../../../lib/ui/SpinniesManager');
46
- vitest_1.vi.mock('../../../lib/projects/localDev/LocalDevProcess');
47
- vitest_1.vi.mock('../../../lib/projects/localDev/LocalDevWatcher');
48
- vitest_1.vi.mock('../../../lib/projects/localDev/LocalDevWebsocketServer');
49
- vitest_1.vi.mock('../../../lib/process');
50
- vitest_1.vi.mock('../../../lib/accountTypes');
51
- vitest_1.vi.mock('../../../lib/ui');
52
- vitest_1.vi.mock('../../../lib/ui/logger');
32
+ vi.mock('@hubspot/project-parsing-lib');
33
+ vi.mock('@hubspot/local-dev-lib/config');
34
+ vi.mock('@hubspot/local-dev-lib/environment');
35
+ vi.mock('../../../lib/errorHandlers');
36
+ vi.mock('../../../lib/projects/ensureProjectExists');
37
+ vi.mock('../../../lib/projects/localDev/helpers');
38
+ vi.mock('../../../lib/prompts/projectDevTargetAccountPrompt');
39
+ vi.mock('../../../lib/ui/SpinniesManager');
40
+ vi.mock('../../../lib/projects/localDev/LocalDevProcess');
41
+ vi.mock('../../../lib/projects/localDev/LocalDevWatcher');
42
+ vi.mock('../../../lib/projects/localDev/LocalDevWebsocketServer');
43
+ vi.mock('../../../lib/process');
44
+ vi.mock('../../../lib/accountTypes');
45
+ vi.mock('../../../lib/ui');
46
+ vi.mock('../../../lib/ui/logger');
53
47
  describe('unifiedProjectDevFlow', () => {
54
48
  const mockArgs = {
55
49
  profile: 'test-profile',
@@ -67,7 +61,7 @@ describe('unifiedProjectDevFlow', () => {
67
61
  srcDir: 'src',
68
62
  platformVersion: '1.0.0',
69
63
  };
70
- const mockProjectDir = '/test/project';
64
+ const mockProjectDir = '/test/project.js';
71
65
  const mockTargetProjectAccountId = 123;
72
66
  const mockProvidedTargetTestingAccountId = 456;
73
67
  // const mockProfileConfig: HsProfileFile = {
@@ -76,7 +70,7 @@ describe('unifiedProjectDevFlow', () => {
76
70
  const mockAccountConfig = {
77
71
  accountId: 123,
78
72
  name: 'test-account',
79
- accountType: config_1.HUBSPOT_ACCOUNT_TYPES.STANDARD,
73
+ accountType: HUBSPOT_ACCOUNT_TYPES.STANDARD,
80
74
  };
81
75
  const mockProject = {
82
76
  id: 1,
@@ -99,58 +93,58 @@ describe('unifiedProjectDevFlow', () => {
99
93
  },
100
94
  };
101
95
  const mockLocalDevProcess = {
102
- start: vitest_1.vi.fn().mockResolvedValue(undefined),
103
- stop: vitest_1.vi.fn().mockResolvedValue(undefined),
96
+ start: vi.fn().mockResolvedValue(undefined),
97
+ stop: vi.fn().mockResolvedValue(undefined),
104
98
  };
105
99
  const mockLocalDevWatcher = {
106
- start: vitest_1.vi.fn(),
107
- stop: vitest_1.vi.fn().mockResolvedValue(undefined),
100
+ start: vi.fn(),
101
+ stop: vi.fn().mockResolvedValue(undefined),
108
102
  };
109
103
  const mockWebsocketServer = {
110
- start: vitest_1.vi.fn().mockResolvedValue(undefined),
111
- shutdown: vitest_1.vi.fn().mockResolvedValue(undefined),
104
+ start: vi.fn().mockResolvedValue(undefined),
105
+ shutdown: vi.fn().mockResolvedValue(undefined),
112
106
  };
113
107
  beforeEach(() => {
114
- vitest_1.vi.clearAllMocks();
108
+ vi.clearAllMocks();
115
109
  // Mock process.exit
116
- vitest_1.vi.spyOn(global.process, 'exit').mockImplementation((code) => {
110
+ vi.spyOn(global.process, 'exit').mockImplementation((code) => {
117
111
  throw new Error(`Process.exit called with code ${code}`);
118
112
  });
119
113
  // Setup default mocks
120
- environment_1.getValidEnv.mockReturnValue(environments_1.ENVIRONMENTS.PROD);
121
- project_parsing_lib_1.translateForLocalDev.mockResolvedValue({
114
+ getValidEnv.mockReturnValue(ENVIRONMENTS.PROD);
115
+ translateForLocalDev.mockResolvedValue({
122
116
  intermediateNodesIndexedByUid: mockProjectNodes,
123
117
  });
124
- config_2.getAccountConfig.mockReturnValue(mockAccountConfig);
125
- config_2.getConfigAccounts.mockReturnValue([mockAccountConfig]);
126
- accountTypes_1.isUnifiedAccount.mockResolvedValue(true);
127
- accountTypes_1.isTestAccountOrSandbox.mockReturnValue(false);
128
- ensureProjectExists_1.ensureProjectExists.mockResolvedValue({
118
+ getAccountConfig.mockReturnValue(mockAccountConfig);
119
+ getConfigAccounts.mockReturnValue([mockAccountConfig]);
120
+ isUnifiedAccount.mockResolvedValue(true);
121
+ isTestAccountOrSandbox.mockReturnValue(false);
122
+ ensureProjectExists.mockResolvedValue({
129
123
  projectExists: true,
130
124
  project: mockProject,
131
125
  });
132
- SpinniesManager_1.default.init.mockImplementation(() => { });
133
- LocalDevProcess_1.default.mockImplementation(() => mockLocalDevProcess);
134
- LocalDevWatcher_1.default.mockImplementation(() => mockLocalDevWatcher);
135
- LocalDevWebsocketServer_1.default.mockImplementation(() => mockWebsocketServer);
136
- process_1.handleKeypress.mockImplementation(() => { });
137
- process_1.handleExit.mockImplementation(() => { });
138
- logger_1.uiLogger.debug.mockImplementation(() => { });
139
- logger_1.uiLogger.error.mockImplementation(() => { });
140
- logger_1.uiLogger.log.mockImplementation(() => { });
141
- ui_1.uiLine.mockImplementation(() => { });
126
+ SpinniesManager.init.mockImplementation(() => { });
127
+ LocalDevProcess.mockImplementation(() => mockLocalDevProcess);
128
+ LocalDevWatcher.mockImplementation(() => mockLocalDevWatcher);
129
+ LocalDevWebsocketServer.mockImplementation(() => mockWebsocketServer);
130
+ handleKeypress.mockImplementation(() => { });
131
+ handleExit.mockImplementation(() => { });
132
+ uiLogger.debug.mockImplementation(() => { });
133
+ uiLogger.error.mockImplementation(() => { });
134
+ uiLogger.log.mockImplementation(() => { });
135
+ uiLine.mockImplementation(() => { });
142
136
  });
143
137
  describe('successful flow', () => {
144
138
  it('should complete successfully with existing project and provided testing account', async () => {
145
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
139
+ await unifiedProjectDevFlow({
146
140
  args: mockArgs,
147
141
  targetProjectAccountId: mockTargetProjectAccountId,
148
142
  providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
149
143
  projectConfig: mockProjectConfig,
150
144
  projectDir: mockProjectDir,
151
145
  });
152
- expect(project_parsing_lib_1.translateForLocalDev).toHaveBeenCalledWith({
153
- projectSourceDir: path_1.default.join(mockProjectDir, mockProjectConfig.srcDir),
146
+ expect(translateForLocalDev).toHaveBeenCalledWith({
147
+ projectSourceDir: path.join(mockProjectDir, mockProjectConfig.srcDir),
154
148
  platformVersion: mockProjectConfig.platformVersion,
155
149
  accountId: mockTargetProjectAccountId,
156
150
  }, { profile: mockArgs.profile });
@@ -174,14 +168,14 @@ describe('unifiedProjectDevFlow', () => {
174
168
  // );
175
169
  // });
176
170
  it('should use target project account as testing account when it is a test account', async () => {
177
- accountTypes_1.isTestAccountOrSandbox.mockReturnValue(true);
178
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
171
+ isTestAccountOrSandbox.mockReturnValue(true);
172
+ await unifiedProjectDevFlow({
179
173
  args: mockArgs,
180
174
  targetProjectAccountId: mockTargetProjectAccountId,
181
175
  projectConfig: mockProjectConfig,
182
176
  projectDir: mockProjectDir,
183
177
  });
184
- expect(LocalDevProcess_1.default).toHaveBeenCalledWith(expect.objectContaining({
178
+ expect(LocalDevProcess).toHaveBeenCalledWith(expect.objectContaining({
185
179
  targetTestingAccountId: mockTargetProjectAccountId,
186
180
  }));
187
181
  });
@@ -189,185 +183,162 @@ describe('unifiedProjectDevFlow', () => {
189
183
  describe('error handling', () => {
190
184
  it('should exit with error code when translation fails', async () => {
191
185
  const translationError = new Error('Translation failed');
192
- project_parsing_lib_1.translateForLocalDev.mockRejectedValue(translationError);
193
- await expect((0, unifiedFlow_1.unifiedProjectDevFlow)({
186
+ translateForLocalDev.mockRejectedValue(translationError);
187
+ await expect(unifiedProjectDevFlow({
194
188
  args: mockArgs,
195
189
  targetProjectAccountId: mockTargetProjectAccountId,
196
190
  projectConfig: mockProjectConfig,
197
191
  projectDir: mockProjectDir,
198
192
  })).rejects.toThrow('Process.exit called with code 1');
199
- expect(errorHandlers_1.logError).toHaveBeenCalledWith(translationError);
193
+ expect(logError).toHaveBeenCalledWith(translationError);
200
194
  });
201
195
  it('should exit with success when no runnable components found', async () => {
202
- project_parsing_lib_1.translateForLocalDev.mockResolvedValue({
196
+ translateForLocalDev.mockResolvedValue({
203
197
  intermediateNodesIndexedByUid: {},
204
198
  });
205
- await expect((0, unifiedFlow_1.unifiedProjectDevFlow)({
199
+ await expect(unifiedProjectDevFlow({
206
200
  args: mockArgs,
207
201
  targetProjectAccountId: mockTargetProjectAccountId,
208
202
  projectConfig: mockProjectConfig,
209
203
  projectDir: mockProjectDir,
210
204
  })).rejects.toThrow('Process.exit called with code 0');
211
- expect(logger_1.uiLogger.error).toHaveBeenCalledWith(en_1.commands.project.dev.errors.noRunnableComponents);
205
+ expect(uiLogger.error).toHaveBeenCalledWith(commands.project.dev.errors.noRunnableComponents);
212
206
  });
213
207
  it('should exit with error when account config not found', async () => {
214
- config_2.getAccountConfig.mockReturnValue(null);
215
- await expect((0, unifiedFlow_1.unifiedProjectDevFlow)({
208
+ getAccountConfig.mockReturnValue(null);
209
+ await expect(unifiedProjectDevFlow({
216
210
  args: mockArgs,
217
211
  targetProjectAccountId: mockTargetProjectAccountId,
218
212
  projectConfig: mockProjectConfig,
219
213
  projectDir: mockProjectDir,
220
214
  })).rejects.toThrow('Process.exit called with code 1');
221
- expect(logger_1.uiLogger.error).toHaveBeenCalledWith(en_1.commands.project.dev.errors.noAccount(mockTargetProjectAccountId));
215
+ expect(uiLogger.error).toHaveBeenCalledWith(commands.project.dev.errors.noAccount(mockTargetProjectAccountId));
222
216
  });
223
217
  it('should exit with error when account is not combined and no profile', async () => {
224
- accountTypes_1.isUnifiedAccount.mockResolvedValue(false);
225
- await expect((0, unifiedFlow_1.unifiedProjectDevFlow)({
218
+ isUnifiedAccount.mockResolvedValue(false);
219
+ await expect(unifiedProjectDevFlow({
226
220
  args: mockArgs,
227
221
  targetProjectAccountId: mockTargetProjectAccountId,
228
222
  projectConfig: mockProjectConfig,
229
223
  projectDir: mockProjectDir,
230
224
  })).rejects.toThrow('Process.exit called with code 1');
231
- expect(logger_1.uiLogger.error).toHaveBeenCalledWith(en_1.commands.project.dev.errors.accountNotCombined);
225
+ expect(uiLogger.error).toHaveBeenCalledWith(commands.project.dev.errors.accountNotCombined);
232
226
  });
233
227
  });
234
228
  describe('account type selection and prompting', () => {
235
229
  beforeEach(() => {
236
230
  // Reset to require prompting
237
- accountTypes_1.isTestAccountOrSandbox.mockReturnValue(false);
231
+ isTestAccountOrSandbox.mockReturnValue(false);
238
232
  });
239
233
  it('should prompt for account type when no testing account provided', async () => {
240
- helpers_1.selectAccountTypePrompt.mockResolvedValue(config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST);
241
- projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt.mockResolvedValue({
234
+ selectAccountTypePrompt.mockResolvedValue(HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST);
235
+ selectDeveloperTestTargetAccountPrompt.mockResolvedValue({
242
236
  targetAccountId: 456,
243
237
  });
244
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
238
+ await unifiedProjectDevFlow({
245
239
  args: mockArgs,
246
240
  targetProjectAccountId: mockTargetProjectAccountId,
247
241
  projectConfig: mockProjectConfig,
248
242
  projectDir: mockProjectDir,
249
243
  });
250
- expect(helpers_1.selectAccountTypePrompt).toHaveBeenCalledWith(mockAccountConfig);
251
- expect(projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt).toHaveBeenCalled();
244
+ expect(selectAccountTypePrompt).toHaveBeenCalledWith(mockAccountConfig);
245
+ expect(selectDeveloperTestTargetAccountPrompt).toHaveBeenCalled();
252
246
  });
253
247
  it('should handle developer test account creation', async () => {
254
- helpers_1.selectAccountTypePrompt.mockResolvedValue(config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST);
255
- projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt.mockResolvedValue({
248
+ selectAccountTypePrompt.mockResolvedValue(HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST);
249
+ selectDeveloperTestTargetAccountPrompt.mockResolvedValue({
256
250
  createNestedAccount: true,
257
251
  });
258
- helpers_1.createDeveloperTestAccountForLocalDev.mockResolvedValue(999);
259
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
252
+ createDeveloperTestAccountForLocalDev.mockResolvedValue(999);
253
+ await unifiedProjectDevFlow({
260
254
  args: mockArgs,
261
255
  targetProjectAccountId: mockTargetProjectAccountId,
262
256
  projectConfig: mockProjectConfig,
263
257
  projectDir: mockProjectDir,
264
258
  });
265
- expect(helpers_1.createDeveloperTestAccountForLocalDev).toHaveBeenCalledWith(mockTargetProjectAccountId, mockAccountConfig, environments_1.ENVIRONMENTS.PROD, true);
266
- expect(LocalDevProcess_1.default).toHaveBeenCalledWith(expect.objectContaining({
259
+ expect(createDeveloperTestAccountForLocalDev).toHaveBeenCalledWith(mockTargetProjectAccountId, mockAccountConfig, ENVIRONMENTS.PROD, true);
260
+ expect(LocalDevProcess).toHaveBeenCalledWith(expect.objectContaining({
267
261
  targetTestingAccountId: 999,
268
262
  }));
269
263
  });
270
264
  it('should handle existing developer test account not in config', async () => {
271
265
  const notInConfigAccount = { accountId: 777, name: 'external-account' };
272
- helpers_1.selectAccountTypePrompt.mockResolvedValue(config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST);
273
- projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt.mockResolvedValue({
266
+ selectAccountTypePrompt.mockResolvedValue(HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST);
267
+ selectDeveloperTestTargetAccountPrompt.mockResolvedValue({
274
268
  notInConfigAccount,
275
269
  });
276
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
270
+ await unifiedProjectDevFlow({
277
271
  args: mockArgs,
278
272
  targetProjectAccountId: mockTargetProjectAccountId,
279
273
  projectConfig: mockProjectConfig,
280
274
  projectDir: mockProjectDir,
281
275
  });
282
- expect(helpers_1.useExistingDevTestAccount).toHaveBeenCalledWith(environments_1.ENVIRONMENTS.PROD, notInConfigAccount);
276
+ expect(useExistingDevTestAccount).toHaveBeenCalledWith(ENVIRONMENTS.PROD, notInConfigAccount);
283
277
  });
284
278
  it('should handle sandbox account selection', async () => {
285
- helpers_1.selectAccountTypePrompt.mockResolvedValue(config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX);
286
- projectDevTargetAccountPrompt_1.selectSandboxTargetAccountPrompt.mockResolvedValue({
279
+ selectAccountTypePrompt.mockResolvedValue(HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX);
280
+ selectSandboxTargetAccountPrompt.mockResolvedValue({
287
281
  targetAccountId: 888,
288
282
  });
289
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
283
+ await unifiedProjectDevFlow({
290
284
  args: mockArgs,
291
285
  targetProjectAccountId: mockTargetProjectAccountId,
292
286
  projectConfig: mockProjectConfig,
293
287
  projectDir: mockProjectDir,
294
288
  });
295
- expect(projectDevTargetAccountPrompt_1.selectSandboxTargetAccountPrompt).toHaveBeenCalled();
296
- expect(LocalDevProcess_1.default).toHaveBeenCalledWith(expect.objectContaining({
289
+ expect(selectSandboxTargetAccountPrompt).toHaveBeenCalled();
290
+ expect(LocalDevProcess).toHaveBeenCalledWith(expect.objectContaining({
297
291
  targetTestingAccountId: 888,
298
292
  }));
299
293
  });
300
294
  });
301
295
  describe('project creation', () => {
302
296
  it('should create new project when project does not exist', async () => {
303
- ensureProjectExists_1.ensureProjectExists.mockResolvedValue({
297
+ ensureProjectExists.mockResolvedValue({
304
298
  projectExists: false,
305
299
  project: null,
306
300
  });
307
- helpers_1.createNewProjectForLocalDev.mockResolvedValue(mockProject);
308
- helpers_1.createInitialBuildForNewProject.mockResolvedValue({
301
+ createNewProjectForLocalDev.mockResolvedValue(mockProject);
302
+ createInitialBuildForNewProject.mockResolvedValue({
309
303
  buildId: 456,
310
304
  });
311
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
305
+ await unifiedProjectDevFlow({
312
306
  args: mockArgs,
313
307
  targetProjectAccountId: mockTargetProjectAccountId,
314
308
  providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
315
309
  projectConfig: mockProjectConfig,
316
310
  projectDir: mockProjectDir,
317
311
  });
318
- expect(helpers_1.createNewProjectForLocalDev).toHaveBeenCalledWith(mockProjectConfig, mockTargetProjectAccountId, false, false);
319
- expect(helpers_1.createInitialBuildForNewProject).toHaveBeenCalledWith(mockProjectConfig, mockProjectDir, mockTargetProjectAccountId, true, mockArgs.profile);
312
+ expect(createNewProjectForLocalDev).toHaveBeenCalledWith(mockProjectConfig, mockTargetProjectAccountId, false, false);
313
+ expect(createInitialBuildForNewProject).toHaveBeenCalledWith(mockProjectConfig, mockProjectDir, mockTargetProjectAccountId, true, mockArgs.profile);
320
314
  });
321
315
  it('should use existing project and build when project exists', async () => {
322
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
316
+ await unifiedProjectDevFlow({
323
317
  args: mockArgs,
324
318
  targetProjectAccountId: mockTargetProjectAccountId,
325
319
  providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
326
320
  projectConfig: mockProjectConfig,
327
321
  projectDir: mockProjectDir,
328
322
  });
329
- expect(helpers_1.createNewProjectForLocalDev).not.toHaveBeenCalled();
330
- expect(LocalDevProcess_1.default).toHaveBeenCalledWith(expect.objectContaining({
331
- deployedBuild: mockProject.deployedBuild,
323
+ expect(createNewProjectForLocalDev).not.toHaveBeenCalled();
324
+ expect(LocalDevProcess).toHaveBeenCalledWith(expect.objectContaining({
332
325
  projectId: mockProject.id,
333
326
  projectName: mockProject.name,
334
327
  }));
335
328
  });
336
- it('should detect GitHub linked projects', async () => {
337
- const githubLinkedProject = {
338
- ...mockProject,
339
- sourceIntegration: { source: 'GITHUB' },
340
- };
341
- ensureProjectExists_1.ensureProjectExists.mockResolvedValue({
342
- projectExists: true,
343
- project: githubLinkedProject,
344
- });
345
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
346
- args: mockArgs,
347
- targetProjectAccountId: mockTargetProjectAccountId,
348
- providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
349
- projectConfig: mockProjectConfig,
350
- projectDir: mockProjectDir,
351
- });
352
- expect(LocalDevProcess_1.default).toHaveBeenCalledWith(expect.objectContaining({
353
- isGithubLinked: true,
354
- }));
355
- });
356
329
  });
357
330
  describe('local dev process setup', () => {
358
331
  it('should initialize LocalDevProcess with correct parameters', async () => {
359
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
332
+ await unifiedProjectDevFlow({
360
333
  args: mockArgs,
361
334
  targetProjectAccountId: mockTargetProjectAccountId,
362
335
  providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
363
336
  projectConfig: mockProjectConfig,
364
337
  projectDir: mockProjectDir,
365
338
  });
366
- expect(LocalDevProcess_1.default).toHaveBeenCalledWith({
339
+ expect(LocalDevProcess).toHaveBeenCalledWith({
367
340
  initialProjectNodes: mockProjectNodes,
368
341
  debug: mockArgs.debug,
369
- deployedBuild: mockProject.deployedBuild,
370
- isGithubLinked: false,
371
342
  profile: mockArgs.profile,
372
343
  targetProjectAccountId: mockTargetProjectAccountId,
373
344
  targetTestingAccountId: mockProvidedTargetTestingAccountId,
@@ -375,22 +346,22 @@ describe('unifiedProjectDevFlow', () => {
375
346
  projectDir: mockProjectDir,
376
347
  projectName: mockProject.name,
377
348
  projectId: mockProject.id,
378
- env: environments_1.ENVIRONMENTS.PROD,
349
+ env: ENVIRONMENTS.PROD,
379
350
  });
380
351
  });
381
352
  it('should set up keypress and exit handlers', async () => {
382
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
353
+ await unifiedProjectDevFlow({
383
354
  args: mockArgs,
384
355
  targetProjectAccountId: mockTargetProjectAccountId,
385
356
  providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
386
357
  projectConfig: mockProjectConfig,
387
358
  projectDir: mockProjectDir,
388
359
  });
389
- expect(process_1.handleKeypress).toHaveBeenCalledWith(expect.any(Function));
390
- expect(process_1.handleExit).toHaveBeenCalledWith(expect.any(Function));
360
+ expect(handleKeypress).toHaveBeenCalledWith(expect.any(Function));
361
+ expect(handleExit).toHaveBeenCalledWith(expect.any(Function));
391
362
  });
392
363
  it('should start all required services', async () => {
393
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
364
+ await unifiedProjectDevFlow({
394
365
  args: mockArgs,
395
366
  targetProjectAccountId: mockTargetProjectAccountId,
396
367
  providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
@@ -400,24 +371,24 @@ describe('unifiedProjectDevFlow', () => {
400
371
  expect(mockLocalDevProcess.start).toHaveBeenCalled();
401
372
  expect(mockLocalDevWatcher.start).toHaveBeenCalled();
402
373
  expect(mockWebsocketServer.start).toHaveBeenCalled();
403
- expect(SpinniesManager_1.default.init).toHaveBeenCalled();
374
+ expect(SpinniesManager.init).toHaveBeenCalled();
404
375
  });
405
376
  });
406
377
  describe('UI messaging', () => {
407
378
  beforeEach(() => {
408
- accountTypes_1.isTestAccountOrSandbox.mockReturnValue(false);
379
+ isTestAccountOrSandbox.mockReturnValue(false);
409
380
  });
410
381
  it('should display account type information when prompting', async () => {
411
- helpers_1.selectAccountTypePrompt.mockResolvedValue(config_1.HUBSPOT_ACCOUNT_TYPES.STANDARD);
412
- await (0, unifiedFlow_1.unifiedProjectDevFlow)({
382
+ selectAccountTypePrompt.mockResolvedValue(HUBSPOT_ACCOUNT_TYPES.STANDARD);
383
+ await unifiedProjectDevFlow({
413
384
  args: mockArgs,
414
385
  targetProjectAccountId: mockTargetProjectAccountId,
415
386
  projectConfig: mockProjectConfig,
416
387
  projectDir: mockProjectDir,
417
388
  });
418
- expect(ui_1.uiLine).toHaveBeenCalled();
419
- expect(logger_1.uiLogger.log).toHaveBeenCalledWith(en_1.commands.project.dev.logs.accountTypeInformation);
420
- expect(logger_1.uiLogger.log).toHaveBeenCalledWith(en_1.commands.project.dev.logs.learnMoreMessage);
389
+ expect(uiLine).toHaveBeenCalled();
390
+ expect(uiLogger.log).toHaveBeenCalledWith(commands.project.dev.logs.accountTypeInformation);
391
+ expect(uiLogger.log).toHaveBeenCalledWith(commands.project.dev.logs.learnMoreMessage);
421
392
  });
422
393
  });
423
394
  });
@@ -1,38 +1,33 @@
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 yargs_1 = __importDefault(require("yargs"));
7
- const commonOpts_1 = require("../../../lib/commonOpts");
8
- const download_1 = __importDefault(require("../download"));
1
+ import yargs from 'yargs';
2
+ import { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } from '../../../lib/commonOpts.js';
3
+ import projectDownloadCommand from '../download.js';
9
4
  vi.mock('../../../lib/commonOpts');
10
5
  describe('commands/project/download', () => {
11
- const yargsMock = yargs_1.default;
6
+ const yargsMock = yargs;
12
7
  describe('command', () => {
13
8
  it('should have the correct command structure', () => {
14
- expect(download_1.default.command).toEqual('download');
9
+ expect(projectDownloadCommand.command).toEqual('download');
15
10
  });
16
11
  });
17
12
  describe('describe', () => {
18
13
  it('should provide a description', () => {
19
- expect(download_1.default.describe).toBeDefined();
14
+ expect(projectDownloadCommand.describe).toBeDefined();
20
15
  });
21
16
  });
22
17
  describe('builder', () => {
23
18
  it('should support the correct options', () => {
24
- download_1.default.builder(yargsMock);
25
- expect(commonOpts_1.addAccountOptions).toHaveBeenCalledTimes(1);
26
- expect(commonOpts_1.addAccountOptions).toHaveBeenCalledWith(yargsMock);
27
- expect(commonOpts_1.addConfigOptions).toHaveBeenCalledTimes(1);
28
- expect(commonOpts_1.addConfigOptions).toHaveBeenCalledWith(yargsMock);
29
- expect(commonOpts_1.addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
30
- expect(commonOpts_1.addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
19
+ projectDownloadCommand.builder(yargsMock);
20
+ expect(addAccountOptions).toHaveBeenCalledTimes(1);
21
+ expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
22
+ expect(addConfigOptions).toHaveBeenCalledTimes(1);
23
+ expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
24
+ expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
25
+ expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
31
26
  });
32
27
  it('should define project, dest, and build options', () => {
33
28
  const optionsSpy = vi.spyOn(yargsMock, 'options');
34
29
  const exampleSpy = vi.spyOn(yargsMock, 'example');
35
- download_1.default.builder(yargsMock);
30
+ projectDownloadCommand.builder(yargsMock);
36
31
  expect(optionsSpy).toHaveBeenCalledWith(expect.objectContaining({
37
32
  project: expect.any(Object),
38
33
  dest: expect.any(Object),