@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,16 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const appsDev_1 = require("@hubspot/local-dev-lib/api/appsDev");
4
- const projects_1 = require("@hubspot/local-dev-lib/api/projects");
5
- const archive_1 = require("@hubspot/local-dev-lib/archive");
6
- const promptUtils_1 = require("../../prompts/promptUtils");
7
- const exitCodes_1 = require("../../enums/exitCodes");
8
- const accountTypes_1 = require("../../accountTypes");
9
- const selectPublicAppForMigrationPrompt_1 = require("../../prompts/selectPublicAppForMigrationPrompt");
10
- const projectNameAndDestPrompt_1 = require("../../prompts/projectNameAndDestPrompt");
11
- const ensureProjectExists_1 = require("../../projects/ensureProjectExists");
12
- const polling_1 = require("../../polling");
13
- const migrate_legacy_1 = require("../migrate_legacy");
1
+ import { fetchPublicAppMetadata as _fetchPublicAppMetadata } from '@hubspot/local-dev-lib/api/appsDev';
2
+ import { downloadProject as _downloadProject, migrateApp as _migrateNonProjectApp_v2023_2, } from '@hubspot/local-dev-lib/api/projects';
3
+ import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
4
+ import { promptUser as _promptUser } from '../../prompts/promptUtils.js';
5
+ import { EXIT_CODES } from '../../enums/exitCodes.js';
6
+ import { isAppDeveloperAccount as _isAppDeveloperAccount, isUnifiedAccount as _isUnifiedAccount, } from '../../accountTypes.js';
7
+ import { selectPublicAppForMigrationPrompt as _selectPublicAppForMigrationPrompt } from '../../prompts/selectPublicAppForMigrationPrompt.js';
8
+ import { projectNameAndDestPrompt as _projectNameAndDestPrompt } from '../../prompts/projectNameAndDestPrompt.js';
9
+ import { ensureProjectExists as _ensureProjectExists } from '../../projects/ensureProjectExists.js';
10
+ import { poll as _poll } from '../../polling.js';
11
+ import { migrateApp2023_2 } from '../migrate_legacy.js';
14
12
  // Mock all external dependencies
15
13
  vi.mock('@hubspot/local-dev-lib/api/appsDev');
16
14
  vi.mock('@hubspot/local-dev-lib/logger');
@@ -28,16 +26,16 @@ vi.mock('../../usageTracking');
28
26
  vi.mock('../../ui/SpinniesManager');
29
27
  vi.mock('../../process');
30
28
  vi.mock('../../polling');
31
- const isAppDeveloperAccount = accountTypes_1.isAppDeveloperAccount;
32
- const isUnifiedAccount = accountTypes_1.isUnifiedAccount;
33
- const selectPublicAppForMigrationPrompt = selectPublicAppForMigrationPrompt_1.selectPublicAppForMigrationPrompt;
34
- const projectNameAndDestPrompt = projectNameAndDestPrompt_1.projectNameAndDestPrompt;
35
- const ensureProjectExists = ensureProjectExists_1.ensureProjectExists;
36
- const poll = polling_1.poll;
37
- const fetchPublicAppMetadata = appsDev_1.fetchPublicAppMetadata;
38
- const migrateNonProjectApp_v2023_2 = projects_1.migrateApp;
39
- const downloadProject = projects_1.downloadProject;
40
- const promptUser = promptUtils_1.promptUser;
29
+ const isAppDeveloperAccount = _isAppDeveloperAccount;
30
+ const isUnifiedAccount = _isUnifiedAccount;
31
+ const selectPublicAppForMigrationPrompt = _selectPublicAppForMigrationPrompt;
32
+ const projectNameAndDestPrompt = _projectNameAndDestPrompt;
33
+ const ensureProjectExists = _ensureProjectExists;
34
+ const poll = _poll;
35
+ const fetchPublicAppMetadata = _fetchPublicAppMetadata;
36
+ const migrateNonProjectApp_v2023_2 = _migrateNonProjectApp_v2023_2;
37
+ const downloadProject = _downloadProject;
38
+ const promptUser = _promptUser;
41
39
  describe('migrateApp2023_2', () => {
42
40
  const mockDerivedAccountId = 123;
43
41
  const mockOptions = {
@@ -96,12 +94,12 @@ describe('migrateApp2023_2', () => {
96
94
  });
97
95
  it('should exit if account is not an app developer account and not unified', async () => {
98
96
  isAppDeveloperAccount.mockReturnValue(false);
99
- await (0, migrate_legacy_1.migrateApp2023_2)(mockDerivedAccountId, mockOptions, mockAccountConfig);
97
+ await migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig);
100
98
  expect(migrateNonProjectApp_v2023_2).not.toHaveBeenCalled();
101
- expect(process.exit).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.SUCCESS);
99
+ expect(process.exit).toHaveBeenCalledWith(EXIT_CODES.SUCCESS);
102
100
  });
103
101
  it('should proceed with migration for valid app developer account', async () => {
104
- await (0, migrate_legacy_1.migrateApp2023_2)(mockDerivedAccountId, mockOptions, mockAccountConfig);
102
+ await migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig);
105
103
  expect(selectPublicAppForMigrationPrompt).toHaveBeenCalled();
106
104
  expect(fetchPublicAppMetadata).toHaveBeenCalledWith(appId, mockDerivedAccountId);
107
105
  expect(projectNameAndDestPrompt).toHaveBeenCalled();
@@ -109,12 +107,12 @@ describe('migrateApp2023_2', () => {
109
107
  expect(migrateNonProjectApp_v2023_2).toHaveBeenCalled();
110
108
  expect(poll).toHaveBeenCalled();
111
109
  expect(downloadProject).toHaveBeenCalled();
112
- expect(archive_1.extractZipArchive).toHaveBeenCalled();
110
+ expect(extractZipArchive).toHaveBeenCalled();
113
111
  });
114
112
  it('should handle migration failure gracefully', async () => {
115
113
  const errorMessage = 'Migration failed';
116
114
  migrateNonProjectApp_v2023_2.mockRejectedValue(new Error(errorMessage));
117
- await expect((0, migrate_legacy_1.migrateApp2023_2)(mockDerivedAccountId, mockOptions, mockAccountConfig)).rejects.toThrow(errorMessage);
115
+ await expect(migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig)).rejects.toThrow(errorMessage);
118
116
  });
119
117
  it('should handle non-migratable apps', async () => {
120
118
  fetchPublicAppMetadata.mockResolvedValue({
@@ -124,13 +122,13 @@ describe('migrateApp2023_2', () => {
124
122
  listingInfo: { someInfo: 'test' },
125
123
  },
126
124
  });
127
- await (0, migrate_legacy_1.migrateApp2023_2)(mockDerivedAccountId, mockOptions, mockAccountConfig);
128
- expect(process.exit).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
125
+ await migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig);
126
+ expect(process.exit).toHaveBeenCalledWith(EXIT_CODES.ERROR);
129
127
  });
130
128
  it('should handle existing project error', async () => {
131
129
  ensureProjectExists.mockResolvedValue({
132
130
  projectExists: true,
133
131
  });
134
- await expect((0, migrate_legacy_1.migrateApp2023_2)(mockDerivedAccountId, mockOptions, mockAccountConfig)).rejects.toThrow('A project with name test-project already exists');
132
+ await expect(migrateApp2023_2(mockDerivedAccountId, mockOptions, mockAccountConfig)).rejects.toThrow('A project with name test-project already exists');
135
133
  });
136
134
  });
@@ -1,7 +1,7 @@
1
1
  import { ArgumentsCamelCase } from 'yargs';
2
- import { LoadedProjectConfig } from '../projects/config';
3
- import { MigrationApp, MigrationFailed, MigrationStatus } from '../../api/migrate';
4
- import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs } from '../../types/Yargs';
2
+ import { LoadedProjectConfig } from '../projects/config.js';
3
+ import { MigrationApp, MigratableApp, UnmigratableApp, MigrationFailed, MigrationStatus } from '../../api/migrate.js';
4
+ import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs } from '../../types/Yargs.js';
5
5
  export type MigrateAppArgs = CommonArgs & AccountArgs & EnvironmentArgs & ConfigArgs & {
6
6
  name?: string;
7
7
  dest?: string;
@@ -12,7 +12,21 @@ export type MigrateAppArgs = CommonArgs & AccountArgs & EnvironmentArgs & Config
12
12
  export declare function getUnmigratableReason(reasonCode: string, projectName: string | undefined, accountId: number): string;
13
13
  export declare function generateFilterAppsByProjectNameFunction(projectConfig?: LoadedProjectConfig): (app: MigrationApp) => boolean;
14
14
  export declare function buildErrorMessageFromMigrationStatus(error: MigrationFailed): string;
15
- export declare function fetchMigrationApps(appId: MigrateAppArgs['appId'], derivedAccountId: number, platformVersion: string, projectConfig?: LoadedProjectConfig): Promise<MigrationApp[]>;
15
+ export declare function fetchMigrationThemes(derivedAccountId: number, projectConfig?: LoadedProjectConfig): Promise<{
16
+ theme: string[];
17
+ reactTheme: string[];
18
+ }>;
19
+ export declare function fetchMigrationApps(derivedAccountId: number, platformVersion: string, projectConfig?: LoadedProjectConfig): Promise<{
20
+ migratableApps: MigratableApp[];
21
+ unmigratableApps: UnmigratableApp[];
22
+ }>;
23
+ export declare function validateMigrationAppsAndThemes(appId: MigrateAppArgs['appId'], derivedAccountId: number, { migratableApps, unmigratableApps, }: {
24
+ migratableApps: MigratableApp[];
25
+ unmigratableApps: UnmigratableApp[];
26
+ }, migratableThemes: {
27
+ theme: string[];
28
+ reactTheme: string[];
29
+ }, projectConfig?: LoadedProjectConfig): Promise<void>;
16
30
  export declare function promptForAppToMigrate(allApps: MigrationApp[], derivedAccountId: number): Promise<number>;
17
31
  export declare function selectAppToMigrate(allApps: MigrationApp[], derivedAccountId: number, appId?: number): Promise<{
18
32
  proceed: boolean;
@@ -1,60 +1,41 @@
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.getUnmigratableReason = getUnmigratableReason;
7
- exports.generateFilterAppsByProjectNameFunction = generateFilterAppsByProjectNameFunction;
8
- exports.buildErrorMessageFromMigrationStatus = buildErrorMessageFromMigrationStatus;
9
- exports.fetchMigrationApps = fetchMigrationApps;
10
- exports.promptForAppToMigrate = promptForAppToMigrate;
11
- exports.selectAppToMigrate = selectAppToMigrate;
12
- exports.handleMigrationSetup = handleMigrationSetup;
13
- exports.beginMigration = beginMigration;
14
- exports.pollMigrationStatus = pollMigrationStatus;
15
- exports.finalizeMigration = finalizeMigration;
16
- exports.downloadProjectFiles = downloadProjectFiles;
17
- exports.migrateApp2025_2 = migrateApp2025_2;
18
- exports.logInvalidAccountError = logInvalidAccountError;
19
- const path_1 = __importDefault(require("path"));
20
- const path_2 = require("@hubspot/local-dev-lib/path");
21
- const archive_1 = require("@hubspot/local-dev-lib/archive");
22
- const chalk_1 = __importDefault(require("chalk"));
23
- const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
24
- const projects_1 = require("@hubspot/local-dev-lib/constants/projects");
25
- const transform_1 = require("@hubspot/project-parsing-lib/src/lib/transform");
26
- const Migration_1 = require("@hubspot/local-dev-lib/types/Migration");
27
- const projects_2 = require("@hubspot/local-dev-lib/api/projects");
28
- const prompts_1 = require("@inquirer/prompts");
29
- const promptUtils_1 = require("../prompts/promptUtils");
30
- const ui_1 = require("../ui");
31
- const ensureProjectExists_1 = require("../projects/ensureProjectExists");
32
- const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
33
- const polling_1 = require("../polling");
34
- const migrate_1 = require("../../api/migrate");
35
- const fs_1 = __importDefault(require("fs"));
36
- const en_1 = require("../../lang/en");
37
- const hasFeature_1 = require("../hasFeature");
38
- const constants_1 = require("../constants");
39
- const urls_1 = require("../projects/urls");
40
- const logger_1 = require("../ui/logger");
41
- function getUnmigratableReason(reasonCode, projectName, accountId) {
1
+ import path from 'path';
2
+ import { getCwd, sanitizeFileName } from '@hubspot/local-dev-lib/path';
3
+ import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
4
+ import chalk from 'chalk';
5
+ import { validateUid } from '@hubspot/project-parsing-lib';
6
+ import { UNMIGRATABLE_REASONS } from '@hubspot/local-dev-lib/constants/projects';
7
+ import { mapToUserFacingType } from '@hubspot/project-parsing-lib/src/lib/transform.js';
8
+ import { MIGRATION_STATUS } from '@hubspot/local-dev-lib/types/Migration';
9
+ import { downloadProject } from '@hubspot/local-dev-lib/api/projects';
10
+ import { Separator } from '@inquirer/prompts';
11
+ import { confirmPrompt, inputPrompt, listPrompt, } from '../prompts/promptUtils.js';
12
+ import { uiAccountDescription, uiCommandReference, uiLine, uiLink, } from '../ui/index.js';
13
+ import { ensureProjectExists } from '../projects/ensureProjectExists.js';
14
+ import SpinniesManager from '../ui/SpinniesManager.js';
15
+ import { DEFAULT_POLLING_STATUS_LOOKUP, poll } from '../polling.js';
16
+ import { checkMigrationStatusV2, CLI_UNMIGRATABLE_REASONS, continueMigration, initializeMigration, isMigrationStatus, listAppsForMigration, listThemesForMigration, } from '../../api/migrate.js';
17
+ import fs from 'fs';
18
+ import { lib } from '../../lang/en.js';
19
+ import { hasUnfiedAppsAccess } from '../hasFeature.js';
20
+ import { getProjectBuildDetailUrl, getProjectDetailUrl, } from '../projects/urls.js';
21
+ import { uiLogger } from '../ui/logger.js';
22
+ export function getUnmigratableReason(reasonCode, projectName, accountId) {
42
23
  switch (reasonCode) {
43
- case projects_1.UNMIGRATABLE_REASONS.UP_TO_DATE:
44
- return en_1.lib.migrate.errors.unmigratableReasons.upToDate;
45
- case projects_1.UNMIGRATABLE_REASONS.IS_A_PRIVATE_APP:
46
- return en_1.lib.migrate.errors.unmigratableReasons.isPrivateApp;
47
- case projects_1.UNMIGRATABLE_REASONS.LISTED_IN_MARKETPLACE:
48
- return en_1.lib.migrate.errors.unmigratableReasons.listedInMarketplace;
49
- case projects_1.UNMIGRATABLE_REASONS.PROJECT_CONNECTED_TO_GITHUB:
50
- return en_1.lib.migrate.errors.unmigratableReasons.projectConnectedToGitHub(projectName, accountId);
51
- case migrate_1.CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY:
52
- return en_1.lib.migrate.errors.unmigratableReasons.partOfProjectAlready;
24
+ case UNMIGRATABLE_REASONS.UP_TO_DATE:
25
+ return lib.migrate.errors.unmigratableReasons.upToDate;
26
+ case UNMIGRATABLE_REASONS.IS_A_PRIVATE_APP:
27
+ return lib.migrate.errors.unmigratableReasons.isPrivateApp;
28
+ case UNMIGRATABLE_REASONS.LISTED_IN_MARKETPLACE:
29
+ return lib.migrate.errors.unmigratableReasons.listedInMarketplace;
30
+ case UNMIGRATABLE_REASONS.PROJECT_CONNECTED_TO_GITHUB:
31
+ return lib.migrate.errors.unmigratableReasons.projectConnectedToGitHub(projectName, accountId);
32
+ case CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY:
33
+ return lib.migrate.errors.unmigratableReasons.partOfProjectAlready;
53
34
  default:
54
- return en_1.lib.migrate.errors.unmigratableReasons.generic(reasonCode);
35
+ return lib.migrate.errors.unmigratableReasons.generic(reasonCode);
55
36
  }
56
37
  }
57
- function generateFilterAppsByProjectNameFunction(projectConfig) {
38
+ export function generateFilterAppsByProjectNameFunction(projectConfig) {
58
39
  return (app) => {
59
40
  if (projectConfig) {
60
41
  return app.projectName === projectConfig?.projectConfig?.name;
@@ -62,7 +43,7 @@ function generateFilterAppsByProjectNameFunction(projectConfig) {
62
43
  return true;
63
44
  };
64
45
  }
65
- function buildErrorMessageFromMigrationStatus(error) {
46
+ export function buildErrorMessageFromMigrationStatus(error) {
66
47
  const { componentErrors, projectErrorDetail } = error;
67
48
  if (!componentErrors || !componentErrors.length) {
68
49
  return projectErrorDetail;
@@ -74,43 +55,62 @@ function buildErrorMessageFromMigrationStatus(error) {
74
55
  })
75
56
  .join('\n\t- ')}`;
76
57
  }
77
- async function fetchMigrationApps(appId, derivedAccountId, platformVersion, projectConfig) {
78
- const { data: { migratableApps, unmigratableApps }, } = await (0, migrate_1.listAppsForMigration)(derivedAccountId, platformVersion);
58
+ export async function fetchMigrationThemes(derivedAccountId, projectConfig) {
59
+ if (!projectConfig?.projectConfig?.name) {
60
+ return { theme: [], reactTheme: [] };
61
+ }
62
+ const { data: { migratableThemes }, } = await listThemesForMigration(derivedAccountId, projectConfig?.projectConfig?.name);
63
+ return {
64
+ theme: migratableThemes.THEME?.filter(theme => !!theme) || [],
65
+ reactTheme: migratableThemes.REACT_THEME?.filter(theme => !!theme) || [],
66
+ };
67
+ }
68
+ export async function fetchMigrationApps(derivedAccountId, platformVersion, projectConfig) {
69
+ const { data: { migratableApps, unmigratableApps }, } = await listAppsForMigration(derivedAccountId, platformVersion);
79
70
  const filteredMigratableApps = migratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
80
71
  const filteredUnmigratableApps = unmigratableApps.filter(generateFilterAppsByProjectNameFunction(projectConfig));
81
- const allApps = [...filteredMigratableApps, ...filteredUnmigratableApps];
72
+ return {
73
+ migratableApps: filteredMigratableApps,
74
+ unmigratableApps: filteredUnmigratableApps,
75
+ };
76
+ }
77
+ export async function validateMigrationAppsAndThemes(appId, derivedAccountId, { migratableApps, unmigratableApps, }, migratableThemes, projectConfig) {
78
+ const allApps = [...migratableApps, ...unmigratableApps];
79
+ const allThemes = [...migratableThemes.theme, ...migratableThemes.reactTheme];
80
+ if (allThemes.length > 0) {
81
+ throw new Error(lib.migrate.errors.project.themesNotAllowed);
82
+ }
82
83
  if (allApps.length > 1 && projectConfig) {
83
- throw new Error(en_1.lib.migrate.errors.project.multipleApps);
84
+ throw new Error(lib.migrate.errors.project.multipleApps);
84
85
  }
85
86
  if (!projectConfig?.projectConfig) {
86
87
  allApps.forEach(app => {
87
88
  if (app.projectName) {
88
89
  app.isMigratable = false;
89
90
  app.unmigratableReason =
90
- migrate_1.CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY;
91
+ CLI_UNMIGRATABLE_REASONS.PART_OF_PROJECT_ALREADY;
91
92
  }
92
93
  });
93
94
  }
94
95
  if (allApps.length === 0 && projectConfig) {
95
- throw new Error(en_1.lib.migrate.errors.noAppsForProject(projectConfig?.projectConfig?.name || ''));
96
+ throw new Error(lib.migrate.errors.noAppsForProject(projectConfig?.projectConfig?.name || ''));
96
97
  }
97
98
  if (allApps.length === 0 || !allApps.some(app => app.isMigratable)) {
98
- const reasons = filteredUnmigratableApps.map(app => `${chalk_1.default.bold(app.appName)}: ${getUnmigratableReason(app.unmigratableReason, app.projectName, derivedAccountId)}`);
99
- throw new Error(en_1.lib.migrate.errors.noAppsEligible((0, ui_1.uiAccountDescription)(derivedAccountId), reasons));
99
+ const reasons = unmigratableApps.map(app => `${chalk.bold(app.appName)}: ${getUnmigratableReason(app.unmigratableReason, app.projectName, derivedAccountId)}`);
100
+ throw new Error(lib.migrate.errors.noAppsEligible(uiAccountDescription(derivedAccountId), reasons));
100
101
  }
101
102
  if (appId &&
102
103
  !allApps.some(app => {
103
104
  return app.appId === appId;
104
105
  })) {
105
- throw new Error(en_1.lib.migrate.errors.appWithAppIdNotFound(appId));
106
+ throw new Error(lib.migrate.errors.appWithAppIdNotFound(appId));
106
107
  }
107
- return allApps;
108
108
  }
109
- async function promptForAppToMigrate(allApps, derivedAccountId) {
109
+ export async function promptForAppToMigrate(allApps, derivedAccountId) {
110
110
  const appChoices = allApps.map(app => ({
111
111
  name: app.isMigratable
112
112
  ? app.appName
113
- : `[${chalk_1.default.yellow('DISABLED')}] ${app.appName} `,
113
+ : `[${chalk.yellow('DISABLED')}] ${app.appName} `,
114
114
  value: app,
115
115
  disabled: app.isMigratable
116
116
  ? false
@@ -118,17 +118,17 @@ async function promptForAppToMigrate(allApps, derivedAccountId) {
118
118
  }));
119
119
  const enabledChoices = appChoices.filter(app => !app.disabled);
120
120
  const disabledChoices = appChoices.filter(app => app.disabled);
121
- const { appId: selectedAppId } = await (0, promptUtils_1.listPrompt)(en_1.lib.migrate.prompt.chooseApp, {
122
- choices: [...enabledChoices, new prompts_1.Separator(), ...disabledChoices],
121
+ const { appId: selectedAppId } = await listPrompt(lib.migrate.prompt.chooseApp, {
122
+ choices: [...enabledChoices, new Separator(), ...disabledChoices],
123
123
  });
124
124
  return selectedAppId;
125
125
  }
126
- async function selectAppToMigrate(allApps, derivedAccountId, appId) {
126
+ export async function selectAppToMigrate(allApps, derivedAccountId, appId) {
127
127
  if (appId &&
128
128
  !allApps.some(app => {
129
129
  return app.appId === appId;
130
130
  })) {
131
- throw new Error(en_1.lib.migrate.errors.appWithAppIdNotFound(appId));
131
+ throw new Error(lib.migrate.errors.appWithAppIdNotFound(appId));
132
132
  }
133
133
  let appIdToMigrate = appId;
134
134
  if (!appIdToMigrate) {
@@ -139,20 +139,20 @@ async function selectAppToMigrate(allApps, derivedAccountId, appId) {
139
139
  const unmigratableComponents = new Set();
140
140
  selectedApp?.migrationComponents.forEach(component => {
141
141
  if (component.isSupported) {
142
- migratableComponents.add((0, transform_1.mapToUserFacingType)(component.componentType));
142
+ migratableComponents.add(mapToUserFacingType(component.componentType));
143
143
  }
144
144
  else {
145
- unmigratableComponents.add((0, transform_1.mapToUserFacingType)(component.componentType));
145
+ unmigratableComponents.add(mapToUserFacingType(component.componentType));
146
146
  }
147
147
  });
148
148
  if (migratableComponents.size !== 0) {
149
- logger_1.uiLogger.log(en_1.lib.migrate.componentsToBeMigrated(`\n - ${[...migratableComponents].join('\n - ')}`));
149
+ uiLogger.log(lib.migrate.componentsToBeMigrated(`\n - ${[...migratableComponents].join('\n - ')}`));
150
150
  }
151
151
  if (unmigratableComponents.size !== 0) {
152
- logger_1.uiLogger.log(en_1.lib.migrate.componentsThatWillNotBeMigrated(`\n - ${[...unmigratableComponents].join('\n - ')}`));
152
+ uiLogger.log(lib.migrate.componentsThatWillNotBeMigrated(`\n - ${[...unmigratableComponents].join('\n - ')}`));
153
153
  }
154
- logger_1.uiLogger.log('');
155
- const proceed = await (0, promptUtils_1.confirmPrompt)(en_1.lib.migrate.prompt.proceed, {
154
+ uiLogger.log('');
155
+ const proceed = await confirmPrompt(lib.migrate.prompt.proceed, {
156
156
  defaultAnswer: false,
157
157
  });
158
158
  return {
@@ -160,9 +160,12 @@ async function selectAppToMigrate(allApps, derivedAccountId, appId) {
160
160
  appIdToMigrate,
161
161
  };
162
162
  }
163
- async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
163
+ export async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
164
164
  const { name, dest, appId } = options;
165
- const allApps = await fetchMigrationApps(appId, derivedAccountId, options.platformVersion, projectConfig);
165
+ const migratableThemes = await fetchMigrationThemes(derivedAccountId, projectConfig);
166
+ const { migratableApps, unmigratableApps } = await fetchMigrationApps(derivedAccountId, options.platformVersion, projectConfig);
167
+ await validateMigrationAppsAndThemes(appId, derivedAccountId, { migratableApps, unmigratableApps }, migratableThemes, projectConfig);
168
+ const allApps = [...migratableApps, ...unmigratableApps];
166
169
  const { proceed, appIdToMigrate } = await selectAppToMigrate(allApps, derivedAccountId, appId);
167
170
  if (!proceed) {
168
171
  return {};
@@ -178,57 +181,57 @@ async function handleMigrationSetup(derivedAccountId, options, projectConfig) {
178
181
  };
179
182
  }
180
183
  const projectName = name ||
181
- (await (0, promptUtils_1.inputPrompt)(en_1.lib.migrate.prompt.inputName, {
184
+ (await inputPrompt(lib.migrate.prompt.inputName, {
182
185
  validate: async (input) => {
183
- const { projectExists } = await (0, ensureProjectExists_1.ensureProjectExists)(derivedAccountId, input, { allowCreate: false, noLogs: true });
186
+ const { projectExists } = await ensureProjectExists(derivedAccountId, input, { allowCreate: false, noLogs: true });
184
187
  if (projectExists) {
185
- return en_1.lib.migrate.errors.project.alreadyExists(input);
188
+ return lib.migrate.errors.project.alreadyExists(input);
186
189
  }
187
190
  return true;
188
191
  },
189
192
  }));
190
- const { projectExists } = await (0, ensureProjectExists_1.ensureProjectExists)(derivedAccountId, projectName, { allowCreate: false, noLogs: true });
193
+ const { projectExists } = await ensureProjectExists(derivedAccountId, projectName, { allowCreate: false, noLogs: true });
191
194
  if (projectExists) {
192
- throw new Error(en_1.lib.migrate.errors.project.alreadyExists(projectName));
195
+ throw new Error(lib.migrate.errors.project.alreadyExists(projectName));
193
196
  }
194
197
  const projectDest = dest ||
195
- (await (0, promptUtils_1.inputPrompt)(en_1.lib.migrate.prompt.inputDest, {
196
- defaultAnswer: path_1.default.resolve((0, path_2.getCwd)(), (0, path_2.sanitizeFileName)(projectName)),
198
+ (await inputPrompt(lib.migrate.prompt.inputDest, {
199
+ defaultAnswer: path.resolve(getCwd(), sanitizeFileName(projectName)),
197
200
  }));
198
201
  return { appIdToMigrate, projectName, projectDest };
199
202
  }
200
- async function beginMigration(derivedAccountId, appId, platformVersion) {
201
- SpinniesManager_1.default.add('beginningMigration', {
202
- text: en_1.lib.migrate.spinners.beginningMigration,
203
+ export async function beginMigration(derivedAccountId, appId, platformVersion) {
204
+ SpinniesManager.add('beginningMigration', {
205
+ text: lib.migrate.spinners.beginningMigration,
203
206
  });
204
207
  const uidMap = {};
205
- const { data } = await (0, migrate_1.initializeMigration)(derivedAccountId, appId, platformVersion);
208
+ const { data } = await initializeMigration(derivedAccountId, appId, platformVersion);
206
209
  const { migrationId } = data;
207
210
  let pollResponse;
208
211
  try {
209
212
  pollResponse = await pollMigrationStatus(derivedAccountId, migrationId, [
210
- Migration_1.MIGRATION_STATUS.INPUT_REQUIRED,
213
+ MIGRATION_STATUS.INPUT_REQUIRED,
211
214
  ]);
212
215
  }
213
216
  catch (error) {
214
- SpinniesManager_1.default.fail('beginningMigration', {
215
- text: en_1.lib.migrate.spinners.unableToStartMigration,
217
+ SpinniesManager.fail('beginningMigration', {
218
+ text: lib.migrate.spinners.unableToStartMigration,
216
219
  });
217
- if ((0, migrate_1.isMigrationStatus)(error) && error.status === Migration_1.MIGRATION_STATUS.FAILURE) {
220
+ if (isMigrationStatus(error) && error.status === MIGRATION_STATUS.FAILURE) {
218
221
  throw new Error(buildErrorMessageFromMigrationStatus(error));
219
222
  }
220
- throw new Error(en_1.lib.migrate.errors.migrationFailed, {
223
+ throw new Error(lib.migrate.errors.migrationFailed, {
221
224
  cause: error,
222
225
  });
223
226
  }
224
- if (pollResponse.status !== Migration_1.MIGRATION_STATUS.INPUT_REQUIRED) {
225
- SpinniesManager_1.default.fail('beginningMigration', {
226
- text: en_1.lib.migrate.spinners.unableToStartMigration,
227
+ if (pollResponse.status !== MIGRATION_STATUS.INPUT_REQUIRED) {
228
+ SpinniesManager.fail('beginningMigration', {
229
+ text: lib.migrate.spinners.unableToStartMigration,
227
230
  });
228
231
  return;
229
232
  }
230
233
  const { componentsRequiringUids } = pollResponse;
231
- SpinniesManager_1.default.remove('beginningMigration');
234
+ SpinniesManager.remove('beginningMigration');
232
235
  if (Object.values(componentsRequiringUids).length !== 0) {
233
236
  for (const [componentId, component] of Object.entries(componentsRequiringUids)) {
234
237
  const { componentHint, componentType } = component;
@@ -244,11 +247,11 @@ async function beginMigration(derivedAccountId, appId, platformVersion) {
244
247
  internalId = componentId;
245
248
  }
246
249
  const promptText = componentHint
247
- ? `${(0, transform_1.mapToUserFacingType)(componentType)} '${componentHint}' (ID: ${internalId})`
248
- : `${(0, transform_1.mapToUserFacingType)(componentType)} (ID: ${internalId})`;
249
- uidMap[componentId] = await (0, promptUtils_1.inputPrompt)(en_1.lib.migrate.prompt.uidForComponent(promptText), {
250
+ ? `${mapToUserFacingType(componentType)} '${componentHint}' (ID: ${internalId})`
251
+ : `${mapToUserFacingType(componentType)} (ID: ${internalId})`;
252
+ uidMap[componentId] = await inputPrompt(lib.migrate.prompt.uidForComponent(promptText), {
250
253
  validate: (uid) => {
251
- const result = (0, project_parsing_lib_1.validateUid)(uid);
254
+ const result = validateUid(uid);
252
255
  return result === undefined ? true : result;
253
256
  },
254
257
  defaultAnswer: componentHint
@@ -259,94 +262,94 @@ async function beginMigration(derivedAccountId, appId, platformVersion) {
259
262
  }
260
263
  return { migrationId, uidMap };
261
264
  }
262
- async function pollMigrationStatus(derivedAccountId, migrationId, successStates = []) {
263
- return (0, polling_1.poll)(() => (0, migrate_1.checkMigrationStatusV2)(derivedAccountId, migrationId), {
265
+ export async function pollMigrationStatus(derivedAccountId, migrationId, successStates = []) {
266
+ return poll(() => checkMigrationStatusV2(derivedAccountId, migrationId), {
264
267
  successStates: [...successStates],
265
- errorStates: [...polling_1.DEFAULT_POLLING_STATUS_LOOKUP.errorStates],
268
+ errorStates: [...DEFAULT_POLLING_STATUS_LOOKUP.errorStates],
266
269
  });
267
270
  }
268
- async function finalizeMigration(derivedAccountId, migrationId, uidMap, projectName) {
271
+ export async function finalizeMigration(derivedAccountId, migrationId, uidMap, projectName) {
269
272
  let pollResponse;
270
273
  try {
271
- SpinniesManager_1.default.add('finishingMigration', {
272
- text: en_1.lib.migrate.spinners.finishingMigration,
274
+ SpinniesManager.add('finishingMigration', {
275
+ text: lib.migrate.spinners.finishingMigration,
273
276
  });
274
- await (0, migrate_1.continueMigration)(derivedAccountId, migrationId, uidMap, projectName);
277
+ await continueMigration(derivedAccountId, migrationId, uidMap, projectName);
275
278
  pollResponse = await pollMigrationStatus(derivedAccountId, migrationId, [
276
- Migration_1.MIGRATION_STATUS.SUCCESS,
279
+ MIGRATION_STATUS.SUCCESS,
277
280
  ]);
278
281
  }
279
282
  catch (error) {
280
- SpinniesManager_1.default.fail('finishingMigration', {
281
- text: en_1.lib.migrate.spinners.migrationFailed,
283
+ SpinniesManager.fail('finishingMigration', {
284
+ text: lib.migrate.spinners.migrationFailed,
282
285
  });
283
- if ((0, migrate_1.isMigrationStatus)(error) && error.status === Migration_1.MIGRATION_STATUS.FAILURE) {
286
+ if (isMigrationStatus(error) && error.status === MIGRATION_STATUS.FAILURE) {
284
287
  throw new Error(buildErrorMessageFromMigrationStatus(error));
285
288
  }
286
- throw new Error(en_1.lib.migrate.errors.migrationFailed, {
289
+ throw new Error(lib.migrate.errors.migrationFailed, {
287
290
  cause: error,
288
291
  });
289
292
  }
290
- if (pollResponse.status !== Migration_1.MIGRATION_STATUS.SUCCESS) {
291
- throw new Error(en_1.lib.migrate.errors.migrationFailed);
293
+ if (pollResponse.status !== MIGRATION_STATUS.SUCCESS) {
294
+ throw new Error(lib.migrate.errors.migrationFailed);
292
295
  }
293
- if (pollResponse.status === Migration_1.MIGRATION_STATUS.SUCCESS) {
294
- SpinniesManager_1.default.succeed('finishingMigration', {
295
- text: en_1.lib.migrate.spinners.migrationComplete,
296
+ if (pollResponse.status === MIGRATION_STATUS.SUCCESS) {
297
+ SpinniesManager.succeed('finishingMigration', {
298
+ text: lib.migrate.spinners.migrationComplete,
296
299
  });
297
300
  }
298
301
  return pollResponse.buildId;
299
302
  }
300
- async function downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig) {
303
+ export async function downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig) {
301
304
  try {
302
- SpinniesManager_1.default.add('fetchingMigratedProject', {
303
- text: en_1.lib.migrate.spinners.downloadingProjectContents,
305
+ SpinniesManager.add('fetchingMigratedProject', {
306
+ text: lib.migrate.spinners.downloadingProjectContents,
304
307
  });
305
- const { data: zippedProject } = await (0, projects_2.downloadProject)(derivedAccountId, projectName, buildId);
308
+ const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, buildId);
306
309
  let absoluteDestPath;
307
310
  if (projectConfig?.projectConfig && projectConfig?.projectDir) {
308
311
  const { projectDir } = projectConfig;
309
312
  absoluteDestPath = projectDir;
310
313
  const { srcDir } = projectConfig.projectConfig;
311
- const archiveDest = path_1.default.join(projectDir, 'archive');
314
+ const archiveDest = path.join(projectDir, 'archive');
312
315
  // Move the existing source directory to archive
313
- fs_1.default.renameSync(path_1.default.join(projectDir, srcDir), archiveDest);
314
- logger_1.uiLogger.info(en_1.lib.migrate.sourceContentsMoved(archiveDest));
316
+ fs.renameSync(path.join(projectDir, srcDir), archiveDest);
317
+ uiLogger.info(lib.migrate.sourceContentsMoved(archiveDest));
315
318
  }
316
319
  else {
317
320
  absoluteDestPath = projectDest
318
- ? path_1.default.resolve((0, path_2.getCwd)(), projectDest)
319
- : (0, path_2.getCwd)();
321
+ ? path.resolve(getCwd(), projectDest)
322
+ : getCwd();
320
323
  }
321
- await (0, archive_1.extractZipArchive)(zippedProject, (0, path_2.sanitizeFileName)(projectName), absoluteDestPath, {
324
+ await extractZipArchive(zippedProject, sanitizeFileName(projectName), absoluteDestPath, {
322
325
  includesRootDir: true,
323
326
  hideLogs: true,
324
327
  });
325
- SpinniesManager_1.default.succeed('fetchingMigratedProject', {
326
- text: en_1.lib.migrate.spinners.downloadingProjectContentsComplete,
328
+ SpinniesManager.succeed('fetchingMigratedProject', {
329
+ text: lib.migrate.spinners.downloadingProjectContentsComplete,
327
330
  });
328
- logger_1.uiLogger.success(`Saved ${projectName} to ${projectDest}`);
331
+ uiLogger.success(`Saved ${projectName} to ${projectDest}`);
329
332
  }
330
333
  catch (error) {
331
- SpinniesManager_1.default.fail('fetchingMigratedProject', {
332
- text: en_1.lib.migrate.spinners.downloadingProjectContentsFailed,
334
+ SpinniesManager.fail('fetchingMigratedProject', {
335
+ text: lib.migrate.spinners.downloadingProjectContentsFailed,
333
336
  });
334
337
  throw error;
335
338
  }
336
339
  }
337
- async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
338
- SpinniesManager_1.default.init();
339
- const ungatedForUnifiedApps = await (0, hasFeature_1.hasFeature)(derivedAccountId, constants_1.FEATURES.UNIFIED_APPS);
340
+ export async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
341
+ SpinniesManager.init();
342
+ const ungatedForUnifiedApps = await hasUnfiedAppsAccess(derivedAccountId);
340
343
  if (!ungatedForUnifiedApps) {
341
- throw new Error(en_1.lib.migrate.errors.notUngatedForUnifiedApps((0, ui_1.uiAccountDescription)(derivedAccountId)));
344
+ throw new Error(lib.migrate.errors.notUngatedForUnifiedApps(uiAccountDescription(derivedAccountId)));
342
345
  }
343
346
  if (projectConfig) {
344
347
  if (!projectConfig?.projectConfig || !projectConfig?.projectDir) {
345
- throw new Error(en_1.lib.migrate.errors.project.invalidConfig);
348
+ throw new Error(lib.migrate.errors.project.invalidConfig);
346
349
  }
347
- const { projectExists } = await (0, ensureProjectExists_1.ensureProjectExists)(derivedAccountId, projectConfig.projectConfig.name, { allowCreate: false, noLogs: true });
350
+ const { projectExists } = await ensureProjectExists(derivedAccountId, projectConfig.projectConfig.name, { allowCreate: false, noLogs: true });
348
351
  if (!projectExists) {
349
- throw new Error(en_1.lib.migrate.errors.project.doesNotExist(derivedAccountId));
352
+ throw new Error(lib.migrate.errors.project.doesNotExist(derivedAccountId));
350
353
  }
351
354
  }
352
355
  const { appIdToMigrate, projectName, projectDest } = await handleMigrationSetup(derivedAccountId, options, projectConfig);
@@ -360,12 +363,12 @@ async function migrateApp2025_2(derivedAccountId, options, projectConfig) {
360
363
  const { migrationId, uidMap } = migrationInProgress;
361
364
  const buildId = await finalizeMigration(derivedAccountId, migrationId, uidMap, projectConfig?.projectConfig?.name || projectName);
362
365
  await downloadProjectFiles(derivedAccountId, projectName, buildId, projectDest, projectConfig);
363
- logger_1.uiLogger.log((0, ui_1.uiLink)('Project Details', (0, urls_1.getProjectDetailUrl)(projectName, derivedAccountId)));
364
- logger_1.uiLogger.log((0, ui_1.uiLink)('Build Details', (0, urls_1.getProjectBuildDetailUrl)(projectName, buildId, derivedAccountId)));
366
+ uiLogger.log(uiLink('Project Details', getProjectDetailUrl(projectName, derivedAccountId)));
367
+ uiLogger.log(uiLink('Build Details', getProjectBuildDetailUrl(projectName, buildId, derivedAccountId)));
365
368
  }
366
- function logInvalidAccountError() {
367
- (0, ui_1.uiLine)();
368
- logger_1.uiLogger.error(en_1.lib.migrate.errors.invalidAccountTypeTitle);
369
- logger_1.uiLogger.log(en_1.lib.migrate.errors.invalidAccountTypeDescription((0, ui_1.uiCommandReference)('hs account use'), (0, ui_1.uiCommandReference)('hs auth')));
370
- (0, ui_1.uiLine)();
369
+ export function logInvalidAccountError() {
370
+ uiLine();
371
+ uiLogger.error(lib.migrate.errors.invalidAccountTypeTitle);
372
+ uiLogger.log(lib.migrate.errors.invalidAccountTypeDescription(uiCommandReference('hs account use'), uiCommandReference('hs auth')));
373
+ uiLine();
371
374
  }