@hubspot/cli 7.5.4-experimental.0 → 7.5.4

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 (413) hide show
  1. package/api/migrate.d.ts +14 -4
  2. package/api/migrate.js +16 -2
  3. package/bin/cli.js +100 -95
  4. package/commands/account/auth.d.ts +5 -7
  5. package/commands/account/auth.js +87 -80
  6. package/commands/account/clean.d.ts +3 -7
  7. package/commands/account/clean.js +16 -9
  8. package/commands/account/createOverride.d.ts +3 -7
  9. package/commands/account/createOverride.js +23 -6
  10. package/commands/account/info.d.ts +3 -7
  11. package/commands/account/info.js +13 -5
  12. package/commands/account/list.d.ts +3 -7
  13. package/commands/account/list.js +15 -8
  14. package/commands/account/remove.d.ts +3 -7
  15. package/commands/account/remove.js +21 -9
  16. package/commands/account/removeOverride.d.ts +3 -7
  17. package/commands/account/removeOverride.js +23 -6
  18. package/commands/account/rename.d.ts +3 -7
  19. package/commands/account/rename.js +16 -9
  20. package/commands/account/use.d.ts +5 -9
  21. package/commands/account/use.js +14 -6
  22. package/commands/account.d.ts +3 -4
  23. package/commands/account.js +33 -58
  24. package/commands/app/migrate.d.ts +5 -6
  25. package/commands/app/migrate.js +60 -44
  26. package/commands/app/secret/add.d.ts +7 -0
  27. package/commands/app/secret/add.js +64 -0
  28. package/commands/app/secret/delete.d.ts +8 -0
  29. package/commands/app/secret/delete.js +87 -0
  30. package/commands/app/secret/list.d.ts +6 -0
  31. package/commands/app/secret/list.js +64 -0
  32. package/commands/app/secret/update.d.ts +7 -0
  33. package/commands/app/secret/update.js +77 -0
  34. package/commands/app/secret.d.ts +3 -0
  35. package/commands/app/secret.js +30 -0
  36. package/commands/app.d.ts +2 -5
  37. package/commands/app.js +10 -10
  38. package/commands/auth.d.ts +5 -7
  39. package/commands/auth.js +35 -35
  40. package/commands/cms/convertFields.d.ts +7 -1
  41. package/commands/cms/convertFields.js +57 -41
  42. package/commands/cms/getReactModule.d.ts +7 -1
  43. package/commands/cms/getReactModule.js +52 -34
  44. package/commands/cms/lighthouseScore.d.ts +8 -1
  45. package/commands/cms/lighthouseScore.js +129 -100
  46. package/commands/cms.d.ts +3 -1
  47. package/commands/cms.js +22 -16
  48. package/commands/completion.d.ts +3 -1
  49. package/commands/completion.js +23 -13
  50. package/commands/config/migrate.d.ts +3 -7
  51. package/commands/config/migrate.js +37 -46
  52. package/commands/config/set.d.ts +5 -6
  53. package/commands/config/set.js +38 -14
  54. package/commands/config.d.ts +3 -4
  55. package/commands/config.js +18 -44
  56. package/commands/create/api-sample.d.ts +3 -1
  57. package/commands/create/api-sample.js +34 -38
  58. package/commands/create/app.d.ts +3 -1
  59. package/commands/create/app.js +9 -7
  60. package/commands/create/function.d.ts +3 -1
  61. package/commands/create/function.js +11 -10
  62. package/commands/create/index.d.ts +5 -1
  63. package/commands/create/index.js +23 -11
  64. package/commands/create/module.d.ts +3 -1
  65. package/commands/create/module.js +14 -13
  66. package/commands/create/react-app.d.ts +3 -1
  67. package/commands/create/react-app.js +10 -7
  68. package/commands/create/template.d.ts +3 -1
  69. package/commands/create/template.js +14 -14
  70. package/commands/create/vue-app.d.ts +3 -1
  71. package/commands/create/vue-app.js +10 -7
  72. package/commands/create/webpack-serverless.d.ts +3 -1
  73. package/commands/create/webpack-serverless.js +10 -7
  74. package/commands/create/website-theme.d.ts +3 -1
  75. package/commands/create/website-theme.js +10 -9
  76. package/commands/create.d.ts +4 -24
  77. package/commands/create.js +62 -75
  78. package/commands/customObject/create.d.ts +4 -9
  79. package/commands/customObject/create.js +17 -10
  80. package/commands/customObject/schema/create.d.ts +4 -9
  81. package/commands/customObject/schema/create.js +18 -11
  82. package/commands/customObject/schema/delete.d.ts +4 -9
  83. package/commands/customObject/schema/delete.js +17 -10
  84. package/commands/customObject/schema/fetch-all.d.ts +4 -9
  85. package/commands/customObject/schema/fetch-all.js +17 -10
  86. package/commands/customObject/schema/fetch.d.ts +4 -9
  87. package/commands/customObject/schema/fetch.js +17 -10
  88. package/commands/customObject/schema/list.d.ts +4 -8
  89. package/commands/customObject/schema/list.js +17 -10
  90. package/commands/customObject/schema/update.d.ts +4 -9
  91. package/commands/customObject/schema/update.js +18 -11
  92. package/commands/customObject/schema.d.ts +3 -5
  93. package/commands/customObject/schema.js +27 -54
  94. package/commands/customObject.d.ts +3 -4
  95. package/commands/customObject.js +20 -48
  96. package/commands/doctor.d.ts +6 -8
  97. package/commands/doctor.js +30 -22
  98. package/commands/feedback.d.ts +4 -1
  99. package/commands/feedback.js +38 -48
  100. package/commands/fetch.d.ts +12 -1
  101. package/commands/fetch.js +49 -34
  102. package/commands/filemanager/fetch.d.ts +4 -9
  103. package/commands/filemanager/fetch.js +18 -11
  104. package/commands/filemanager/upload.d.ts +4 -9
  105. package/commands/filemanager/upload.js +17 -11
  106. package/commands/filemanager.d.ts +3 -4
  107. package/commands/filemanager.js +18 -42
  108. package/commands/function/deploy.d.ts +6 -1
  109. package/commands/function/deploy.js +70 -50
  110. package/commands/function/list.d.ts +6 -1
  111. package/commands/function/list.js +44 -32
  112. package/commands/function/server.d.ts +10 -1
  113. package/commands/function/server.js +49 -38
  114. package/commands/function.d.ts +5 -1
  115. package/commands/function.js +22 -11
  116. package/commands/getStarted.d.ts +9 -0
  117. package/commands/getStarted.js +227 -0
  118. package/commands/hubdb/clear.d.ts +4 -9
  119. package/commands/hubdb/clear.js +21 -15
  120. package/commands/hubdb/create.d.ts +4 -9
  121. package/commands/hubdb/create.js +23 -17
  122. package/commands/hubdb/delete.d.ts +4 -9
  123. package/commands/hubdb/delete.js +24 -16
  124. package/commands/hubdb/fetch.d.ts +4 -9
  125. package/commands/hubdb/fetch.js +20 -14
  126. package/commands/hubdb/list.d.ts +4 -0
  127. package/commands/hubdb/list.js +83 -0
  128. package/commands/hubdb.d.ts +3 -2
  129. package/commands/hubdb.js +24 -47
  130. package/commands/init.d.ts +3 -7
  131. package/commands/init.js +25 -17
  132. package/commands/lint.d.ts +6 -4
  133. package/commands/lint.js +42 -44
  134. package/commands/list.d.ts +3 -7
  135. package/commands/list.js +21 -16
  136. package/commands/logs.d.ts +10 -1
  137. package/commands/logs.js +53 -45
  138. package/commands/mcp/setup.d.ts +7 -0
  139. package/commands/mcp/setup.js +50 -0
  140. package/commands/mcp/start.d.ts +3 -0
  141. package/commands/mcp/start.js +75 -0
  142. package/commands/mcp.d.ts +3 -0
  143. package/commands/mcp.js +26 -0
  144. package/commands/module/marketplace-validate.d.ts +6 -1
  145. package/commands/module/marketplace-validate.js +39 -30
  146. package/commands/module.d.ts +3 -1
  147. package/commands/module.js +23 -12
  148. package/commands/mv.d.ts +3 -7
  149. package/commands/mv.js +20 -15
  150. package/commands/open.d.ts +3 -7
  151. package/commands/open.js +20 -15
  152. package/commands/project/add.d.ts +8 -9
  153. package/commands/project/add.js +53 -85
  154. package/commands/project/cloneApp.d.ts +6 -8
  155. package/commands/project/cloneApp.js +51 -47
  156. package/commands/project/create.d.ts +4 -1
  157. package/commands/project/create.js +132 -81
  158. package/commands/project/deploy.d.ts +5 -6
  159. package/commands/project/deploy.js +93 -37
  160. package/commands/project/dev/deprecatedFlow.d.ts +8 -2
  161. package/commands/project/dev/deprecatedFlow.js +41 -26
  162. package/commands/project/dev/index.d.ts +4 -5
  163. package/commands/project/dev/index.js +103 -33
  164. package/commands/project/dev/unifiedFlow.d.ts +11 -2
  165. package/commands/project/dev/unifiedFlow.js +85 -46
  166. package/commands/project/download.d.ts +3 -7
  167. package/commands/project/download.js +18 -19
  168. package/commands/project/installDeps.d.ts +6 -1
  169. package/commands/project/installDeps.js +48 -32
  170. package/commands/project/listBuilds.d.ts +3 -7
  171. package/commands/project/listBuilds.js +32 -30
  172. package/commands/project/logs.d.ts +10 -1
  173. package/commands/project/logs.js +73 -65
  174. package/commands/project/migrate.d.ts +7 -0
  175. package/commands/project/migrate.js +71 -0
  176. package/commands/project/migrateApp.d.ts +3 -8
  177. package/commands/project/migrateApp.js +23 -20
  178. package/commands/project/open.d.ts +3 -7
  179. package/commands/project/open.js +29 -21
  180. package/commands/project/profile/add.d.ts +7 -0
  181. package/commands/project/profile/add.js +209 -0
  182. package/commands/project/profile/delete.d.ts +6 -0
  183. package/commands/project/profile/delete.js +123 -0
  184. package/commands/project/profile.d.ts +3 -0
  185. package/commands/project/profile.js +25 -0
  186. package/commands/project/upload.d.ts +10 -1
  187. package/commands/project/upload.js +94 -56
  188. package/commands/project/validate.d.ts +6 -0
  189. package/commands/project/validate.js +82 -0
  190. package/commands/project/watch.d.ts +6 -1
  191. package/commands/project/watch.js +95 -61
  192. package/commands/project.d.ts +3 -1
  193. package/commands/project.js +49 -35
  194. package/commands/remove.d.ts +3 -7
  195. package/commands/remove.js +22 -20
  196. package/commands/sandbox/create.d.ts +4 -9
  197. package/commands/sandbox/create.js +27 -21
  198. package/commands/sandbox/delete.d.ts +4 -9
  199. package/commands/sandbox/delete.js +35 -29
  200. package/commands/sandbox.d.ts +3 -4
  201. package/commands/sandbox.js +18 -44
  202. package/commands/secret/addSecret.d.ts +4 -9
  203. package/commands/secret/addSecret.js +21 -15
  204. package/commands/secret/deleteSecret.d.ts +4 -9
  205. package/commands/secret/deleteSecret.js +28 -18
  206. package/commands/secret/listSecret.d.ts +4 -9
  207. package/commands/secret/listSecret.js +19 -13
  208. package/commands/secret/updateSecret.d.ts +4 -9
  209. package/commands/secret/updateSecret.js +25 -17
  210. package/commands/secret.d.ts +3 -4
  211. package/commands/secret.js +23 -49
  212. package/commands/theme/generate-selectors.d.ts +3 -7
  213. package/commands/theme/generate-selectors.js +20 -16
  214. package/commands/theme/marketplace-validate.d.ts +4 -9
  215. package/commands/theme/marketplace-validate.js +22 -18
  216. package/commands/theme/preview.d.ts +4 -9
  217. package/commands/theme/preview.js +36 -30
  218. package/commands/theme.d.ts +3 -4
  219. package/commands/theme.js +22 -48
  220. package/commands/upload.d.ts +12 -1
  221. package/commands/upload.js +116 -135
  222. package/commands/watch.d.ts +14 -1
  223. package/commands/watch.js +74 -76
  224. package/lang/en.d.ts +3217 -0
  225. package/lang/en.js +3074 -3318
  226. package/lang/en.lyaml +41 -246
  227. package/lib/accountTypes.d.ts +1 -0
  228. package/lib/accountTypes.js +11 -0
  229. package/lib/app/migrate.d.ts +33 -4
  230. package/lib/app/migrate.js +232 -99
  231. package/lib/app/migrate_legacy.d.ts +2 -2
  232. package/lib/app/migrate_legacy.js +16 -13
  233. package/lib/app/urls.d.ts +16 -0
  234. package/lib/app/urls.js +16 -0
  235. package/lib/buildAccount.d.ts +1 -2
  236. package/lib/buildAccount.js +11 -10
  237. package/lib/commonOpts.d.ts +4 -7
  238. package/lib/commonOpts.js +47 -19
  239. package/lib/configMigrate.d.ts +2 -2
  240. package/lib/configMigrate.js +39 -60
  241. package/lib/configOptions.d.ts +4 -0
  242. package/lib/configOptions.js +41 -45
  243. package/lib/constants.d.ts +33 -0
  244. package/lib/constants.js +34 -1
  245. package/lib/dependencyManagement.d.ts +0 -5
  246. package/lib/dependencyManagement.js +14 -40
  247. package/lib/doctor/Diagnosis.js +10 -11
  248. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  249. package/lib/doctor/DiagnosticInfoBuilder.js +10 -10
  250. package/lib/doctor/Doctor.js +45 -49
  251. package/lib/errorHandlers/index.js +13 -7
  252. package/lib/errorHandlers/suppressError.js +18 -26
  253. package/lib/filesystem.d.ts +1 -1
  254. package/lib/generateSelectors.js +3 -6
  255. package/lib/hasFeature.d.ts +3 -1
  256. package/lib/interpolation.d.ts +2 -3
  257. package/lib/lang.d.ts +2 -3
  258. package/lib/marketplaceValidate.d.ts +12 -2
  259. package/lib/marketplaceValidate.js +22 -29
  260. package/lib/mcp/setup.d.ts +21 -0
  261. package/lib/mcp/setup.js +218 -0
  262. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +3 -3
  263. package/lib/middleware/autoUpdateMiddleware.d.ts +1 -0
  264. package/lib/middleware/autoUpdateMiddleware.js +89 -0
  265. package/lib/middleware/configMiddleware.js +32 -2
  266. package/lib/middleware/fireAlarmMiddleware.d.ts +2 -2
  267. package/lib/middleware/fireAlarmMiddleware.js +12 -24
  268. package/lib/middleware/yargsChecksMiddleware.js +2 -2
  269. package/lib/npm.d.ts +9 -0
  270. package/lib/npm.js +36 -0
  271. package/lib/oauth.js +1 -2
  272. package/lib/process.js +1 -2
  273. package/lib/projectProfiles.d.ts +7 -0
  274. package/lib/projectProfiles.js +83 -0
  275. package/lib/projects/ProjectLogsManager.d.ts +1 -1
  276. package/lib/projects/ProjectLogsManager.js +16 -21
  277. package/lib/projects/add/legacyAddComponent.d.ts +5 -0
  278. package/lib/projects/add/legacyAddComponent.js +48 -0
  279. package/lib/projects/add/v3AddComponent.d.ts +8 -0
  280. package/lib/projects/add/v3AddComponent.js +85 -0
  281. package/lib/projects/buildAndDeploy.js +46 -42
  282. package/lib/projects/components.d.ts +2 -0
  283. package/lib/projects/components.js +82 -0
  284. package/lib/projects/config.d.ts +9 -0
  285. package/lib/projects/config.js +79 -0
  286. package/lib/projects/create/index.d.ts +23 -0
  287. package/lib/projects/create/index.js +33 -0
  288. package/lib/projects/create/legacy.d.ts +6 -0
  289. package/lib/projects/{create.js → create/legacy.js} +23 -15
  290. package/lib/projects/create/v3.d.ts +27 -0
  291. package/lib/projects/create/v3.js +158 -0
  292. package/lib/projects/ensureProjectExists.d.ts +11 -0
  293. package/lib/projects/ensureProjectExists.js +97 -0
  294. package/lib/projects/localDev/AppDevModeInterface.d.ts +30 -0
  295. package/lib/projects/localDev/AppDevModeInterface.js +215 -0
  296. package/lib/{DevServerManager.d.ts → projects/localDev/DevServerManager.d.ts} +1 -1
  297. package/lib/{DevServerManager.js → projects/localDev/DevServerManager.js} +6 -6
  298. package/lib/projects/localDev/DevServerManagerV2.d.ts +22 -0
  299. package/lib/{DevServerManagerV2.js → projects/localDev/DevServerManagerV2.js} +22 -19
  300. package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
  301. package/lib/projects/localDev/LocalDevLogger.js +159 -0
  302. package/lib/{LocalDevManager.d.ts → projects/localDev/LocalDevManager.d.ts} +1 -1
  303. package/lib/{LocalDevManager.js → projects/localDev/LocalDevManager.js} +57 -83
  304. package/lib/projects/localDev/LocalDevProcess.d.ts +34 -0
  305. package/lib/projects/localDev/LocalDevProcess.js +201 -0
  306. package/lib/projects/localDev/LocalDevState.d.ts +50 -0
  307. package/lib/projects/localDev/LocalDevState.js +119 -0
  308. package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
  309. package/lib/projects/localDev/LocalDevWatcher.js +53 -0
  310. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +20 -0
  311. package/lib/projects/localDev/LocalDevWebsocketServer.js +131 -0
  312. package/lib/{localDev.d.ts → projects/localDev/helpers.d.ts} +6 -4
  313. package/lib/{localDev.js → projects/localDev/helpers.js} +127 -114
  314. package/lib/projects/ui.d.ts +1 -0
  315. package/lib/projects/ui.js +15 -0
  316. package/lib/projects/upload.d.ts +17 -2
  317. package/lib/projects/upload.js +74 -50
  318. package/lib/projects/urls.d.ts +4 -0
  319. package/lib/projects/urls.js +23 -1
  320. package/lib/projects/watch.d.ts +1 -1
  321. package/lib/projects/watch.js +21 -18
  322. package/lib/prompts/accountNamePrompt.js +16 -13
  323. package/lib/prompts/accountsPrompt.js +1 -2
  324. package/lib/prompts/cmsFieldPrompt.js +1 -2
  325. package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
  326. package/lib/prompts/createApiSamplePrompt.js +4 -5
  327. package/lib/prompts/createFunctionPrompt.js +13 -14
  328. package/lib/prompts/createModulePrompt.js +8 -9
  329. package/lib/prompts/createProjectPrompt.d.ts +20 -4
  330. package/lib/prompts/createProjectPrompt.js +43 -13
  331. package/lib/prompts/createTemplatePrompt.d.ts +22 -4
  332. package/lib/prompts/createTemplatePrompt.js +1 -2
  333. package/lib/prompts/downloadProjectPrompt.js +3 -4
  334. package/lib/prompts/installAppPrompt.d.ts +2 -0
  335. package/lib/prompts/installAppPrompt.js +45 -0
  336. package/lib/prompts/personalAccessKeyPrompt.js +35 -25
  337. package/lib/prompts/previewPrompt.js +5 -6
  338. package/lib/prompts/projectAddPrompt.d.ts +5 -1
  339. package/lib/prompts/projectAddPrompt.js +35 -8
  340. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
  341. package/lib/prompts/projectDevTargetAccountPrompt.js +15 -16
  342. package/lib/prompts/projectNamePrompt.js +5 -6
  343. package/lib/prompts/projectsLogsPrompt.js +3 -2
  344. package/lib/prompts/promptUtils.d.ts +4 -2
  345. package/lib/prompts/promptUtils.js +3 -1
  346. package/lib/prompts/sandboxesPrompt.js +5 -6
  347. package/lib/prompts/secretPrompt.js +2 -3
  348. package/lib/prompts/selectAppPrompt.d.ts +2 -0
  349. package/lib/prompts/selectAppPrompt.js +40 -0
  350. package/lib/prompts/selectHubDBTablePrompt.js +11 -8
  351. package/lib/prompts/{selectPublicAppPrompt.d.ts → selectPublicAppForMigrationPrompt.d.ts} +1 -1
  352. package/lib/prompts/{selectPublicAppPrompt.js → selectPublicAppForMigrationPrompt.js} +8 -9
  353. package/lib/prompts/setAsDefaultAccountPrompt.js +11 -2
  354. package/lib/prompts/uploadPrompt.js +4 -5
  355. package/lib/sandboxSync.js +15 -14
  356. package/lib/sandboxes.js +12 -13
  357. package/lib/serverlessLogs.js +4 -6
  358. package/lib/testUtils.d.ts +3 -3
  359. package/lib/testUtils.js +8 -9
  360. package/lib/ui/boxen.d.ts +5 -0
  361. package/lib/ui/boxen.js +30 -0
  362. package/lib/ui/git.js +8 -9
  363. package/lib/ui/index.d.ts +3 -2
  364. package/lib/ui/index.js +15 -17
  365. package/lib/ui/logger.d.ts +10 -0
  366. package/lib/ui/logger.js +15 -0
  367. package/lib/ui/serverlessFunctionLogs.js +2 -3
  368. package/lib/upload.d.ts +1 -1
  369. package/lib/validation.js +4 -5
  370. package/lib/yargsUtils.d.ts +5 -1
  371. package/lib/yargsUtils.js +6 -0
  372. package/mcp-server/server.d.ts +1 -0
  373. package/mcp-server/server.js +18 -0
  374. package/mcp-server/tools/index.d.ts +2 -0
  375. package/mcp-server/tools/index.js +19 -0
  376. package/mcp-server/tools/project/AddFeatureToProject.d.ts +29 -0
  377. package/mcp-server/tools/project/AddFeatureToProject.js +85 -0
  378. package/mcp-server/tools/project/CreateProjectTool.d.ts +35 -0
  379. package/mcp-server/tools/project/CreateProjectTool.js +104 -0
  380. package/mcp-server/tools/project/DeployProject.d.ts +20 -0
  381. package/mcp-server/tools/project/DeployProject.js +50 -0
  382. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +17 -0
  383. package/mcp-server/tools/project/GuidedWalkthroughTool.js +58 -0
  384. package/mcp-server/tools/project/UploadProjectTools.d.ts +17 -0
  385. package/mcp-server/tools/project/UploadProjectTools.js +35 -0
  386. package/mcp-server/tools/project/ValidateProjectTool.d.ts +17 -0
  387. package/mcp-server/tools/project/ValidateProjectTool.js +35 -0
  388. package/mcp-server/tools/project/constants.d.ts +3 -0
  389. package/mcp-server/tools/project/constants.js +13 -0
  390. package/mcp-server/types.d.ts +14 -0
  391. package/mcp-server/types.js +17 -0
  392. package/mcp-server/utils/command.d.ts +3 -0
  393. package/mcp-server/utils/command.js +16 -0
  394. package/mcp-server/utils/content.d.ts +3 -0
  395. package/mcp-server/utils/content.js +21 -0
  396. package/mcp-server/utils/project.d.ts +5 -0
  397. package/mcp-server/utils/project.js +17 -0
  398. package/package.json +25 -17
  399. package/types/Cms.d.ts +30 -0
  400. package/types/Cms.js +2 -0
  401. package/types/LocalDev.d.ts +35 -0
  402. package/types/LocalDev.js +2 -0
  403. package/types/Projects.d.ts +19 -2
  404. package/types/Prompts.d.ts +0 -7
  405. package/types/Yargs.d.ts +14 -11
  406. package/lib/DevServerManagerV2.d.ts +0 -33
  407. package/lib/LocalDevManagerV2.d.ts +0 -64
  408. package/lib/LocalDevManagerV2.js +0 -377
  409. package/lib/projects/create.d.ts +0 -5
  410. package/lib/projects/index.d.ts +0 -20
  411. package/lib/projects/index.js +0 -194
  412. package/lib/prompts/installPublicAppPrompt.d.ts +0 -1
  413. package/lib/prompts/installPublicAppPrompt.js +0 -40
@@ -8,16 +8,17 @@ exports.useV3Api = useV3Api;
8
8
  exports.displayWarnLogs = displayWarnLogs;
9
9
  exports.pollProjectBuildAndDeploy = pollProjectBuildAndDeploy;
10
10
  const chalk_1 = __importDefault(require("chalk"));
11
- const logger_1 = require("@hubspot/local-dev-lib/logger");
12
11
  const projects_1 = require("@hubspot/local-dev-lib/api/projects");
13
12
  const constants_1 = require("../constants");
14
13
  const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
15
- const lang_1 = require("../lang");
16
14
  const errorHandlers_1 = require("../errorHandlers");
17
15
  const ui_1 = require("../ui");
18
16
  const urls_1 = require("./urls");
19
17
  const exitCodes_1 = require("../enums/exitCodes");
20
- const i18nKey = 'lib.projectBuildAndDeploy';
18
+ const en_1 = require("../../lang/en");
19
+ const logger_1 = require("../ui/logger");
20
+ const constants_2 = require("@hubspot/project-parsing-lib/src/lib/constants");
21
+ const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
21
22
  const SPINNER_STATUS = {
22
23
  SPINNING: 'spinning',
23
24
  };
@@ -50,19 +51,14 @@ function getSubtaskType(task) {
50
51
  return task.deployType;
51
52
  }
52
53
  function handleTaskStatusError(statusText) {
53
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.makePollTaskStatusFunc.errorFetchingTaskStatus`, {
54
- taskType: statusText.TYPE_KEY === constants_1.PROJECT_BUILD_TEXT.TYPE_KEY
55
- ? 'build'
56
- : 'deploy',
57
- openCommand: (0, ui_1.uiCommandReference)('hs project open'),
58
- }));
54
+ logger_1.uiLogger.error(en_1.lib.projectBuildAndDeploy.makePollTaskStatusFunc.errorFetchingTaskStatus(statusText.TYPE_KEY === constants_1.PROJECT_BUILD_TEXT.TYPE_KEY ? 'build' : 'deploy'));
59
55
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
60
56
  }
61
57
  function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrings, linkToHubSpot, }) {
62
58
  return async function (accountId, taskName, taskId, deployedBuildId, silenceLogs = false) {
63
59
  const displayId = deployedBuildId || taskId;
64
60
  if (linkToHubSpot && !silenceLogs) {
65
- logger_1.logger.log(`\n${linkToHubSpot(accountId, taskName, taskId, deployedBuildId)}\n`);
61
+ logger_1.uiLogger.log(`\n${linkToHubSpot(accountId, taskName, taskId, deployedBuildId)}\n`);
66
62
  }
67
63
  SpinniesManager_1.default.init();
68
64
  const overallTaskSpinniesKey = `overallTaskStatus-${statusText.STATUS_TEXT}`;
@@ -77,14 +73,27 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
77
73
  structureFn(accountId, taskName, taskId),
78
74
  ]);
79
75
  const subtasks = getSubtasks(initialTaskStatus);
80
- const tasksById = subtasks.reduce((acc, subtask) => {
76
+ const hiddenComponentBuildIds = [];
77
+ const tasksById = subtasks
78
+ .filter(subtask => {
79
+ // TODO: Remove this filtering logic when visible=false for SERVERLESS_PACKAGE
80
+ const shouldBeVisible = getSubtaskType(subtask) !== (0, project_parsing_lib_1.mapToInternalType)(constants_2.AppFunctionsPackageKey);
81
+ if (!shouldBeVisible) {
82
+ hiddenComponentBuildIds.push(subtask.id);
83
+ }
84
+ return shouldBeVisible;
85
+ })
86
+ .reduce((acc, subtask) => {
81
87
  const { id, visible } = subtask;
82
88
  if (visible) {
83
89
  acc[id] = subtask;
84
90
  }
85
91
  return acc;
86
92
  }, {});
87
- const structuredTasks = Object.keys(taskStructure).map(key => {
93
+ const structuredTasks = Object.keys(taskStructure)
94
+ // TODO: Remove this filtering logic when visible=false for SERVERLESS_PACKAGE
95
+ .filter(buildId => !hiddenComponentBuildIds.includes(buildId))
96
+ .map(key => {
88
97
  return {
89
98
  ...tasksById[key],
90
99
  subtasks: taskStructure[key]
@@ -95,9 +104,10 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
95
104
  const numComponents = structuredTasks.length;
96
105
  const componentCountText = silenceLogs
97
106
  ? ''
98
- : (0, lang_1.i18n)(numComponents === 1
99
- ? `${i18nKey}.makePollTaskStatusFunc.componentCountSingular`
100
- : `${i18nKey}.makePollTaskStatusFunc.componentCount`, { numComponents }) + '\n';
107
+ : numComponents === 1
108
+ ? en_1.lib.projectBuildAndDeploy.makePollTaskStatusFunc
109
+ .componentCountSingular
110
+ : en_1.lib.projectBuildAndDeploy.makePollTaskStatusFunc.componentCount(numComponents);
101
111
  SpinniesManager_1.default.update(overallTaskSpinniesKey, {
102
112
  text: `${statusStrings.INITIALIZE(taskName, displayId)}\n${componentCountText}`,
103
113
  });
@@ -129,7 +139,7 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
129
139
  taskStatus = data;
130
140
  }
131
141
  catch (e) {
132
- logger_1.logger.debug(e);
142
+ logger_1.uiLogger.debug(e);
133
143
  (0, errorHandlers_1.logError)(e, new errorHandlers_1.ApiErrorContext({
134
144
  accountId,
135
145
  projectName: taskName,
@@ -152,8 +162,10 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
152
162
  if (status === statusText.STATES.SUCCESS ||
153
163
  status === statusText.STATES.FAILURE) {
154
164
  const taskStatusText = subtask.status === statusText.STATES.SUCCESS
155
- ? (0, lang_1.i18n)(`${i18nKey}.makePollTaskStatusFunc.successStatusText`)
156
- : (0, lang_1.i18n)(`${i18nKey}.makePollTaskStatusFunc.failedStatusText`);
165
+ ? en_1.lib.projectBuildAndDeploy.makePollTaskStatusFunc
166
+ .successStatusText
167
+ : en_1.lib.projectBuildAndDeploy.makePollTaskStatusFunc
168
+ .failedStatusText;
157
169
  const hasNewline = spinner?.text?.includes('\n') || Boolean(topLevelTask);
158
170
  const updatedText = `${spinner?.text?.replace('\n', '')} ${taskStatusText}${hasNewline ? '\n' : ''}`;
159
171
  if (status === statusText.STATES.SUCCESS) {
@@ -181,23 +193,23 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
181
193
  if (!silenceLogs) {
182
194
  const failedSubtasks = subtasks.filter(subtask => subtask.status === 'FAILURE');
183
195
  (0, ui_1.uiLine)();
184
- logger_1.logger.log(`${statusStrings.SUBTASK_FAIL(failedSubtasks.length === 1
196
+ logger_1.uiLogger.log(`${statusStrings.SUBTASK_FAIL(failedSubtasks.length === 1
185
197
  ? getSubtaskName(failedSubtasks[0])
186
198
  : failedSubtasks.length + ' components', displayId)}\n`);
187
- logger_1.logger.log('See below for a summary of errors.');
199
+ logger_1.uiLogger.log(en_1.lib.projectBuildAndDeploy.makePollTaskStatusFunc.errorSummary);
188
200
  (0, ui_1.uiLine)();
189
201
  const displayErrors = failedSubtasks.filter(subtask => subtask?.standardError?.subCategory !==
190
202
  constants_1.PROJECT_ERROR_TYPES.SUBBUILD_FAILED &&
191
203
  subtask?.standardError?.subCategory !==
192
204
  constants_1.PROJECT_ERROR_TYPES.SUBDEPLOY_FAILED);
193
205
  displayErrors.forEach(subTask => {
194
- logger_1.logger.log(`\n--- ${chalk_1.default.bold(getSubtaskName(subTask))} failed with the following error ---`);
195
- logger_1.logger.error(subTask.errorMessage);
206
+ logger_1.uiLogger.log(`\n--- ${chalk_1.default.bold(getSubtaskName(subTask))} failed with the following error ---`);
207
+ logger_1.uiLogger.error(subTask.errorMessage);
196
208
  // Log nested errors
197
209
  if (subTask.standardError && subTask.standardError.errors) {
198
- logger_1.logger.log();
210
+ logger_1.uiLogger.log('');
199
211
  subTask.standardError.errors.forEach(error => {
200
- logger_1.logger.log(error.message);
212
+ logger_1.uiLogger.log(error.message);
201
213
  });
202
214
  }
203
215
  });
@@ -216,7 +228,7 @@ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrin
216
228
  }
217
229
  function pollBuildAutodeployStatus(accountId, taskName, buildId) {
218
230
  return new Promise((resolve, reject) => {
219
- let maxIntervals = (30 * 1000) / constants_1.DEFAULT_POLLING_DELAY; // Num of intervals in ~30s
231
+ let maxIntervals = (15 * 1000) / constants_1.DEFAULT_POLLING_DELAY; // Num of intervals in ~15s
220
232
  const pollInterval = setInterval(async () => {
221
233
  let build;
222
234
  try {
@@ -224,11 +236,11 @@ function pollBuildAutodeployStatus(accountId, taskName, buildId) {
224
236
  build = response.data;
225
237
  }
226
238
  catch (e) {
227
- logger_1.logger.debug(e);
228
- return reject(new Error((0, lang_1.i18n)(`${i18nKey}.pollBuildAutodeployStatusError`, { buildId })));
239
+ logger_1.uiLogger.debug(e);
240
+ return reject(new Error(en_1.lib.projectBuildAndDeploy.pollBuildAutodeployStatusError(buildId)));
229
241
  }
230
242
  if (!build || !build.status) {
231
- return reject(new Error((0, lang_1.i18n)(`${i18nKey}.pollBuildAutodeployStatusError`, { buildId })));
243
+ return reject(new Error(en_1.lib.projectBuildAndDeploy.pollBuildAutodeployStatusError(buildId)));
232
244
  }
233
245
  if (build.deployStatusTaskLocator || maxIntervals <= 0) {
234
246
  clearInterval(pollInterval);
@@ -287,9 +299,9 @@ async function displayWarnLogs(accountId, projectName, taskId, isDeploy = false)
287
299
  if (result && result.logs) {
288
300
  const logLength = result.logs.length;
289
301
  result.logs.forEach((log, i) => {
290
- logger_1.logger.warn(log.message);
302
+ logger_1.uiLogger.warn(log.message);
291
303
  if (i < logLength - 1) {
292
- logger_1.logger.log('');
304
+ logger_1.uiLogger.log('');
293
305
  }
294
306
  });
295
307
  }
@@ -311,10 +323,7 @@ async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, bui
311
323
  }
312
324
  else if (buildStatus.isAutoDeployEnabled) {
313
325
  if (!silenceLogs) {
314
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.pollProjectBuildAndDeploy.buildSucceededAutomaticallyDeploying`, {
315
- accountIdentifier: (0, ui_1.uiAccountDescription)(accountId),
316
- buildId,
317
- }));
326
+ logger_1.uiLogger.log(en_1.lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.buildSucceededAutomaticallyDeploying(buildId, (0, ui_1.uiAccountDescription)(accountId)));
318
327
  await displayWarnLogs(accountId, projectConfig.name, buildId);
319
328
  }
320
329
  // autoDeployId of 0 indicates a skipped deploy
@@ -331,22 +340,17 @@ async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, bui
331
340
  }
332
341
  }
333
342
  else if (!silenceLogs) {
334
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.pollProjectBuildAndDeploy.unableToFindAutodeployStatus`, {
335
- buildId,
336
- viewDeploysLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`${i18nKey}.pollProjectBuildAndDeploy.viewDeploys`), (0, urls_1.getProjectActivityUrl)(projectConfig.name, accountId)),
337
- }));
343
+ logger_1.uiLogger.log(en_1.lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.unableToFindAutodeployStatus(buildId, (0, ui_1.uiLink)(en_1.lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.viewDeploys, (0, urls_1.getProjectActivityUrl)(projectConfig.name, accountId))));
338
344
  }
339
345
  }
340
346
  try {
341
347
  if (tempFile) {
342
348
  tempFile.removeCallback();
343
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.pollProjectBuildAndDeploy.cleanedUpTempFile`, {
344
- path: tempFile.name,
345
- }));
349
+ logger_1.uiLogger.debug(en_1.lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.cleanedUpTempFile(tempFile.name));
346
350
  }
347
351
  }
348
352
  catch (e) {
349
- logger_1.logger.error(e);
353
+ (0, errorHandlers_1.logError)(e);
350
354
  }
351
355
  if (result && result.deployResult) {
352
356
  await displayWarnLogs(accountId, projectConfig.name, result.deployResult.deployId, true);
@@ -0,0 +1,2 @@
1
+ import { Collision } from '@hubspot/local-dev-lib/types/Archive';
2
+ export declare function handleComponentCollision({ dest, src, collisions }: Collision): void;
@@ -0,0 +1,82 @@
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.handleComponentCollision = handleComponentCollision;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
10
+ // Handles a collision between component source files
11
+ function handleComponentCollision({ dest, src, collisions }) {
12
+ const hsMetaFiles = [];
13
+ const packageJsonFiles = [];
14
+ const sourceFiles = [];
15
+ collisions.forEach(collision => {
16
+ if (collision.endsWith(project_parsing_lib_1.metafileExtension)) {
17
+ hsMetaFiles.push(collision);
18
+ }
19
+ else if (path_1.default.parse(collision).base === 'package.json') {
20
+ packageJsonFiles.push(collision);
21
+ }
22
+ else {
23
+ sourceFiles.push(collision);
24
+ }
25
+ });
26
+ const sourceFilenameMapping = sourceFiles.reduce((acc, filename) => {
27
+ const { name, ext, dir } = path_1.default.parse(filename);
28
+ return {
29
+ ...acc,
30
+ [filename]: path_1.default.join(dir, `${name}-${Date.now()}${ext}`),
31
+ };
32
+ }, {});
33
+ const metafileExtensionPrefix = path_1.default.parse(project_parsing_lib_1.metafileExtension).name;
34
+ const metaFilenameMapping = hsMetaFiles.reduce((acc, filename) => {
35
+ const { name, dir } = path_1.default.parse(filename);
36
+ return {
37
+ ...acc,
38
+ [filename]: path_1.default.join(dir, `${name.replace(metafileExtensionPrefix, '')}-${Date.now()}${project_parsing_lib_1.metafileExtension}`),
39
+ };
40
+ }, {});
41
+ // Update the metafiles that might contain references to the old filenames
42
+ hsMetaFiles.forEach(file => {
43
+ updateMetaFile({
44
+ dest,
45
+ src,
46
+ file,
47
+ sourceFilenameMapping,
48
+ metaFilenameMapping,
49
+ });
50
+ });
51
+ // Copy the renamed files into their new destination location
52
+ Object.entries(sourceFilenameMapping).forEach(([key, value]) => {
53
+ fs_1.default.copyFileSync(path_1.default.join(src, key), path_1.default.join(dest, value));
54
+ });
55
+ if (packageJsonFiles.length) {
56
+ handlePackageJsonCollisions(dest, src, packageJsonFiles);
57
+ }
58
+ }
59
+ function updateMetaFile({ dest, src, file, sourceFilenameMapping, metaFilenameMapping, }) {
60
+ let text = fs_1.default.readFileSync(path_1.default.join(src, file), 'utf-8');
61
+ Object.entries(sourceFilenameMapping).forEach(([key, value]) => {
62
+ const { base: oldFileName } = path_1.default.parse(key);
63
+ const { base: newFileName } = path_1.default.parse(value);
64
+ text = text.replace(oldFileName, newFileName);
65
+ });
66
+ fs_1.default.writeFileSync(path_1.default.join(dest, metaFilenameMapping[file]), text);
67
+ }
68
+ function handlePackageJsonCollisions(dest, src, packageJsonFiles) {
69
+ packageJsonFiles.forEach(file => {
70
+ const existingPackageJsonContents = JSON.parse(fs_1.default.readFileSync(path_1.default.join(dest, file), 'utf-8'));
71
+ const newPackageJsonContents = JSON.parse(fs_1.default.readFileSync(path_1.default.join(src, file), 'utf-8'));
72
+ existingPackageJsonContents.dependencies = {
73
+ ...newPackageJsonContents.dependencies,
74
+ ...existingPackageJsonContents.dependencies,
75
+ };
76
+ existingPackageJsonContents.devDependencies = {
77
+ ...newPackageJsonContents.devDependencies,
78
+ ...existingPackageJsonContents.devDependencies,
79
+ };
80
+ fs_1.default.writeFileSync(path_1.default.join(dest, file), JSON.stringify(existingPackageJsonContents, null, 2));
81
+ });
82
+ }
@@ -0,0 +1,9 @@
1
+ import { ProjectConfig } from '../../types/Projects';
2
+ export declare function writeProjectConfig(configPath: string, config: ProjectConfig): boolean;
3
+ export declare function getIsInProject(dir?: string): boolean;
4
+ export interface LoadedProjectConfig {
5
+ projectDir: string | null;
6
+ projectConfig: ProjectConfig | null;
7
+ }
8
+ export declare function getProjectConfig(dir?: string): Promise<LoadedProjectConfig>;
9
+ export declare function validateProjectConfig(projectConfig: ProjectConfig | null, projectDir: string | null): asserts projectConfig is ProjectConfig;
@@ -0,0 +1,79 @@
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.writeProjectConfig = writeProjectConfig;
7
+ exports.getIsInProject = getIsInProject;
8
+ exports.getProjectConfig = getProjectConfig;
9
+ exports.validateProjectConfig = validateProjectConfig;
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const findup_sync_1 = __importDefault(require("findup-sync"));
13
+ const path_2 = require("@hubspot/local-dev-lib/path");
14
+ const constants_1 = require("../constants");
15
+ const en_1 = require("../../lang/en");
16
+ const exitCodes_1 = require("../enums/exitCodes");
17
+ const logger_1 = require("../ui/logger");
18
+ function writeProjectConfig(configPath, config) {
19
+ try {
20
+ fs_extra_1.default.ensureFileSync(configPath);
21
+ fs_extra_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2));
22
+ logger_1.uiLogger.debug(`Wrote project config at ${configPath}`);
23
+ }
24
+ catch (e) {
25
+ logger_1.uiLogger.debug(e);
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ function getIsInProject(dir) {
31
+ const configPath = getProjectConfigPath(dir);
32
+ return !!configPath;
33
+ }
34
+ function getProjectConfigPath(dir) {
35
+ const projectDir = dir ? (0, path_2.getAbsoluteFilePath)(dir) : (0, path_2.getCwd)();
36
+ const configPath = (0, findup_sync_1.default)(constants_1.PROJECT_CONFIG_FILE, {
37
+ cwd: projectDir,
38
+ nocase: true,
39
+ });
40
+ return configPath;
41
+ }
42
+ async function getProjectConfig(dir) {
43
+ const configPath = getProjectConfigPath(dir);
44
+ if (!configPath) {
45
+ return { projectConfig: null, projectDir: null };
46
+ }
47
+ try {
48
+ const config = fs_extra_1.default.readFileSync(configPath);
49
+ const projectConfig = JSON.parse(config.toString());
50
+ return {
51
+ projectDir: path_1.default.dirname(configPath),
52
+ projectConfig,
53
+ };
54
+ }
55
+ catch (e) {
56
+ logger_1.uiLogger.error(en_1.lib.projects.getProjectConfig.error);
57
+ return { projectConfig: null, projectDir: null };
58
+ }
59
+ }
60
+ function validateProjectConfig(projectConfig, projectDir) {
61
+ if (!projectConfig || !projectDir) {
62
+ logger_1.uiLogger.error(en_1.lib.projects.validateProjectConfig.configNotFound);
63
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
64
+ }
65
+ if (!projectConfig.name || !projectConfig.srcDir) {
66
+ logger_1.uiLogger.error(en_1.lib.projects.validateProjectConfig.configMissingFields);
67
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
68
+ }
69
+ const resolvedPath = path_1.default.resolve(projectDir, projectConfig.srcDir);
70
+ if (!resolvedPath.startsWith(projectDir)) {
71
+ const projectConfigFile = path_1.default.relative('.', path_1.default.join(projectDir, constants_1.PROJECT_CONFIG_FILE));
72
+ logger_1.uiLogger.error(en_1.lib.projects.validateProjectConfig.srcOutsideProjectDir(projectConfigFile, projectConfig.srcDir));
73
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
74
+ }
75
+ if (!fs_extra_1.default.existsSync(resolvedPath)) {
76
+ logger_1.uiLogger.error(en_1.lib.projects.validateProjectConfig.srcDirNotFound(projectConfig.srcDir, projectDir));
77
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
78
+ }
79
+ }
@@ -0,0 +1,23 @@
1
+ import { ArgumentsCamelCase } from 'yargs';
2
+ import { ProjectTemplateRepoConfig } from '../../../types/Projects';
3
+ import { CreateProjectPromptResponse } from '../../prompts/createProjectPrompt';
4
+ import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs } from '../../../types/Yargs';
5
+ import { RepoPath } from '@hubspot/local-dev-lib/types/Github';
6
+ export type ProjectCreateArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
7
+ name?: string;
8
+ dest?: string;
9
+ templateSource?: RepoPath;
10
+ template?: string;
11
+ features?: string[];
12
+ platformVersion: string;
13
+ projectBase?: string;
14
+ auth?: string;
15
+ distribution?: string;
16
+ };
17
+ export declare function handleProjectCreationFlow(args: ArgumentsCamelCase<ProjectCreateArgs>): Promise<{
18
+ authType?: string;
19
+ distribution?: string;
20
+ repoConfig?: ProjectTemplateRepoConfig;
21
+ projectContents?: string;
22
+ createProjectPromptResponse: CreateProjectPromptResponse;
23
+ }>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleProjectCreationFlow = handleProjectCreationFlow;
4
+ const createProjectPrompt_1 = require("../../prompts/createProjectPrompt");
5
+ const constants_1 = require("../../constants");
6
+ const buildAndDeploy_1 = require("../buildAndDeploy");
7
+ const v3_1 = require("./v3");
8
+ const legacy_1 = require("./legacy");
9
+ const logger_1 = require("../../ui/logger");
10
+ const en_1 = require("../../../lang/en");
11
+ const exitCodes_1 = require("../../enums/exitCodes");
12
+ async function handleProjectCreationFlow(args) {
13
+ const { platformVersion, templateSource, projectBase, auth: providedAuth, distribution: providedDistribution, } = args;
14
+ const repo = templateSource || constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH;
15
+ if ((0, buildAndDeploy_1.useV3Api)(platformVersion)) {
16
+ const { componentTemplateChoices, authType, distribution, repoConfig, projectContents, } = await (0, v3_1.v3ComponentFlow)(platformVersion, projectBase, providedAuth, providedDistribution);
17
+ const createProjectPromptResponse = await (0, createProjectPrompt_1.createProjectPrompt)(args, undefined, projectContents !== v3_1.EMPTY_PROJECT ? componentTemplateChoices : undefined);
18
+ return {
19
+ authType,
20
+ distribution,
21
+ repoConfig,
22
+ projectContents,
23
+ createProjectPromptResponse,
24
+ };
25
+ }
26
+ const projectTemplates = await (0, legacy_1.getProjectTemplateListFromRepo)(repo, 'main');
27
+ if (!projectTemplates.length) {
28
+ logger_1.uiLogger.error(en_1.commands.project.create.errors.failedToFetchProjectList);
29
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
30
+ }
31
+ const createProjectPromptResponse = await (0, createProjectPrompt_1.createProjectPrompt)(args, projectTemplates);
32
+ return { createProjectPromptResponse };
33
+ }
@@ -0,0 +1,6 @@
1
+ import { RepoPath } from '@hubspot/local-dev-lib/types/Github';
2
+ import { ProjectTemplate, ComponentTemplate, ProjectTemplateRepoConfig } from '../../../types/Projects';
3
+ export declare const EMPTY_PROJECT_TEMPLATE_NAME = "no-template";
4
+ export declare function getConfigForPlatformVersion(platformVersion: string): Promise<ProjectTemplateRepoConfig> | never;
5
+ export declare function getProjectComponentListFromRepo(platformVersion: string): Promise<ComponentTemplate[]>;
6
+ export declare function getProjectTemplateListFromRepo(templateSource: RepoPath, githubRef: string): Promise<ProjectTemplate[]>;
@@ -1,25 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EMPTY_PROJECT_TEMPLATE_NAME = void 0;
4
+ exports.getConfigForPlatformVersion = getConfigForPlatformVersion;
4
5
  exports.getProjectComponentListFromRepo = getProjectComponentListFromRepo;
5
6
  exports.getProjectTemplateListFromRepo = getProjectTemplateListFromRepo;
6
- const logger_1 = require("@hubspot/local-dev-lib/logger");
7
7
  const github_1 = require("@hubspot/local-dev-lib/api/github");
8
- const constants_1 = require("../constants");
9
- const exitCodes_1 = require("../enums/exitCodes");
10
- const lang_1 = require("../lang");
11
- const index_1 = require("../errorHandlers/index");
12
- const i18nKey = 'lib.projects.create';
8
+ const constants_1 = require("../../constants");
9
+ const exitCodes_1 = require("../../enums/exitCodes");
10
+ const errorHandlers_1 = require("../../errorHandlers");
11
+ const logger_1 = require("../../ui/logger");
12
+ const buildAndDeploy_1 = require("../buildAndDeploy");
13
+ const en_1 = require("../../../lang/en");
14
+ const PROJECT_TEMPLATE_PROPERTIES = ['name', 'label', 'path'];
13
15
  exports.EMPTY_PROJECT_TEMPLATE_NAME = 'no-template';
14
- const PROJECT_TEMPLATE_PROPERTIES = ['name', 'label', 'path', 'insertPath'];
15
- async function getProjectComponentListFromRepo(githubRef) {
16
+ async function getConfigForPlatformVersion(platformVersion) {
17
+ let path = '';
18
+ if ((0, buildAndDeploy_1.useV3Api)(platformVersion)) {
19
+ path = `${platformVersion}/`;
20
+ }
21
+ const { data } = await (0, github_1.fetchRepoFile)(constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, `${path}config.json`, 'main');
22
+ return data;
23
+ }
24
+ async function getProjectComponentListFromRepo(platformVersion) {
16
25
  let config;
17
26
  try {
18
- const { data } = await (0, github_1.fetchRepoFile)(constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, 'config.json', githubRef);
19
- config = data;
27
+ config = await getConfigForPlatformVersion(platformVersion);
20
28
  }
21
29
  catch (err) {
22
- (0, index_1.debugError)(err);
30
+ (0, errorHandlers_1.debugError)(err);
23
31
  }
24
32
  if (config) {
25
33
  return config[constants_1.PROJECT_COMPONENT_TYPES.COMPONENTS] || [];
@@ -33,18 +41,18 @@ async function getProjectTemplateListFromRepo(templateSource, githubRef) {
33
41
  config = data;
34
42
  }
35
43
  catch (e) {
36
- (0, index_1.debugError)(e);
37
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.missingConfigFileTemplateSource`));
44
+ (0, errorHandlers_1.debugError)(e);
45
+ logger_1.uiLogger.error(en_1.lib.projects.create.errors.missingConfigFileTemplateSource);
38
46
  return process.exit(exitCodes_1.EXIT_CODES.ERROR);
39
47
  }
40
48
  if (!config || !config[constants_1.PROJECT_COMPONENT_TYPES.PROJECTS]) {
41
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noProjectsInConfig`));
49
+ logger_1.uiLogger.error(en_1.lib.projects.create.errors.noProjectsInConfig);
42
50
  return process.exit(exitCodes_1.EXIT_CODES.ERROR);
43
51
  }
44
52
  const templates = config[constants_1.PROJECT_COMPONENT_TYPES.PROJECTS];
45
53
  const templatesContainAllProperties = templates.every(config => PROJECT_TEMPLATE_PROPERTIES.every(p => Object.prototype.hasOwnProperty.call(config, p)));
46
54
  if (!templatesContainAllProperties) {
47
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.missingPropertiesInConfig`));
55
+ logger_1.uiLogger.error(en_1.lib.projects.create.errors.missingPropertiesInConfig);
48
56
  return process.exit(exitCodes_1.EXIT_CODES.ERROR);
49
57
  }
50
58
  return templates;
@@ -0,0 +1,27 @@
1
+ import { ComponentTemplate, ComponentTemplateChoice, ProjectTemplateRepoConfig } from '../../../types/Projects';
2
+ import { ProjectMetadata } from '@hubspot/project-parsing-lib/src/lib/project';
3
+ import { CreateProjectPromptResponse } from '../../prompts/createProjectPrompt';
4
+ export declare const EMPTY_PROJECT = "empty";
5
+ export declare const PROJECT_WITH_APP = "app";
6
+ export declare function createV3App(providedAuth: string | undefined, providedDistribution: string | undefined): Promise<{
7
+ authType: string;
8
+ distribution: string;
9
+ }>;
10
+ export declare function calculateComponentTemplateChoices(components: ComponentTemplate[], authType: string | undefined, distribution: string | undefined, projectMetadata?: ProjectMetadata): ComponentTemplateChoice[];
11
+ type V3ComponentInfo = {
12
+ authType?: string;
13
+ distribution?: string;
14
+ repoConfig?: ProjectTemplateRepoConfig;
15
+ projectContents?: string;
16
+ componentTemplateChoices?: ComponentTemplateChoice[];
17
+ };
18
+ export declare function v3ComponentFlow(platformVersion: string, projectBase: string | undefined, providedAuth: string | undefined, providedDistribution: string | undefined): Promise<V3ComponentInfo>;
19
+ export declare function generateComponentPaths({ createProjectPromptResponse, platformVersion, repoConfig, projectContents, authType, distribution, }: {
20
+ createProjectPromptResponse: CreateProjectPromptResponse;
21
+ platformVersion: string;
22
+ repoConfig?: ProjectTemplateRepoConfig;
23
+ projectContents?: string;
24
+ authType?: string;
25
+ distribution?: string;
26
+ }): string[];
27
+ export {};