@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
@@ -1,21 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProjectComponentDistributionUrl = getProjectComponentDistributionUrl;
4
+ exports.getDeveloperOverviewUrl = getDeveloperOverviewUrl;
3
5
  exports.getProjectDetailUrl = getProjectDetailUrl;
6
+ exports.getProjectSettingsUrl = getProjectSettingsUrl;
4
7
  exports.getProjectActivityUrl = getProjectActivityUrl;
5
8
  exports.getProjectBuildDetailUrl = getProjectBuildDetailUrl;
6
9
  exports.getProjectDeployDetailUrl = getProjectDeployDetailUrl;
10
+ exports.getLocalDevUiUrl = getLocalDevUiUrl;
7
11
  const urls_1 = require("@hubspot/local-dev-lib/urls");
8
12
  const config_1 = require("@hubspot/local-dev-lib/config");
9
13
  const environments_1 = require("@hubspot/local-dev-lib/constants/environments");
14
+ function getBaseUrl(accountId) {
15
+ return (0, urls_1.getHubSpotWebsiteOrigin)((0, config_1.getEnv)(accountId) === 'qa' ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD);
16
+ }
10
17
  function getProjectHomeUrl(accountId) {
18
+ return `${getBaseUrl(accountId)}/developer-projects/${accountId}`;
19
+ }
20
+ function getProjectComponentDistributionUrl(projectName, componentName, accountId) {
21
+ const baseUrl = (0, urls_1.getHubSpotWebsiteOrigin)((0, config_1.getEnv)(accountId) === 'qa' ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD);
22
+ return `${baseUrl}/developer-projects/${accountId}/project/${projectName}/component/${componentName}/distribution`;
23
+ }
24
+ function getDeveloperOverviewUrl(accountId) {
11
25
  const baseUrl = (0, urls_1.getHubSpotWebsiteOrigin)((0, config_1.getEnv)(accountId) === 'qa' ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD);
12
- return `${baseUrl}/developer-projects/${accountId}`;
26
+ return `${baseUrl}/developer-overview/${accountId}`;
13
27
  }
14
28
  function getProjectDetailUrl(projectName, accountId) {
15
29
  if (!projectName)
16
30
  return;
17
31
  return `${getProjectHomeUrl(accountId)}/project/${projectName}`;
18
32
  }
33
+ function getProjectSettingsUrl(projectName, accountId) {
34
+ if (!projectName)
35
+ return;
36
+ return `${getProjectDetailUrl(projectName, accountId)}/settings`;
37
+ }
19
38
  function getProjectActivityUrl(projectName, accountId) {
20
39
  return `${getProjectDetailUrl(projectName, accountId)}/activity`;
21
40
  }
@@ -25,3 +44,6 @@ function getProjectBuildDetailUrl(projectName, buildId, accountId) {
25
44
  function getProjectDeployDetailUrl(projectName, deployId, accountId) {
26
45
  return `${getProjectActivityUrl(projectName, accountId)}/deploy/${deployId}`;
27
46
  }
47
+ function getLocalDevUiUrl(accountId) {
48
+ return `${getBaseUrl(accountId)}/developer-projects-local-dev/${accountId}`;
49
+ }
@@ -1,4 +1,4 @@
1
1
  import { ProjectConfig } from '../../types/Projects';
2
- type ProjectWatchHandlerFunction = (accountId: number, projectName: string, currentBuildId: number) => Promise<void>;
2
+ type ProjectWatchHandlerFunction = (accountId: number, projectName: string, currentBuildId: number) => Promise<void> | void;
3
3
  export declare function createWatcher(accountId: number, projectConfig: ProjectConfig, projectDir: string, handleBuildStatusFn: ProjectWatchHandlerFunction, handleUserInputFn: ProjectWatchHandlerFunction): Promise<void>;
4
4
  export {};
@@ -8,16 +8,15 @@ const chokidar_1 = __importDefault(require("chokidar"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const chalk_1 = __importDefault(require("chalk"));
10
10
  const p_queue_1 = __importDefault(require("p-queue"));
11
- const logger_1 = require("@hubspot/local-dev-lib/logger");
12
11
  const path_2 = require("@hubspot/local-dev-lib/path");
13
12
  const extensions_1 = require("@hubspot/local-dev-lib/constants/extensions");
14
13
  const ignoreRules_1 = require("@hubspot/local-dev-lib/ignoreRules");
15
14
  const projects_1 = require("@hubspot/local-dev-lib/api/projects");
16
15
  const index_1 = require("@hubspot/local-dev-lib/errors/index");
17
16
  const errorHandlers_1 = require("../errorHandlers");
18
- const lang_1 = require("../lang");
19
17
  const constants_1 = require("../constants");
20
- const i18nKey = 'commands.project.subcommands.watch';
18
+ const en_1 = require("../../lang/en");
19
+ const logger_1 = require("../ui/logger");
21
20
  const queue = new p_queue_1.default({
22
21
  concurrency: 10,
23
22
  });
@@ -44,18 +43,18 @@ function debounceQueueBuild(accountId, projectName, platformVersion) {
44
43
  clearTimeout(timer);
45
44
  }
46
45
  timer = setTimeout(async () => {
47
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.pause`, { projectName }));
46
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.pause);
48
47
  queue.pause();
49
48
  await queue.onIdle();
50
49
  try {
51
50
  await (0, projects_1.queueBuild)(accountId, projectName, platformVersion);
52
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.buildStarted`, { projectName }));
51
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.buildStarted);
53
52
  }
54
53
  catch (err) {
55
54
  if ((0, index_1.isSpecifiedError)(err, {
56
55
  subCategory: constants_1.PROJECT_ERROR_TYPES.MISSING_PROJECT_PROVISION,
57
56
  })) {
58
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.watchCancelledFromUi`));
57
+ logger_1.uiLogger.log(en_1.commands.project.watch.logs.watchCancelledFromUi);
59
58
  process.exit(0);
60
59
  }
61
60
  else {
@@ -69,24 +68,24 @@ function debounceQueueBuild(accountId, projectName, platformVersion) {
69
68
  await processStandByQueue(accountId, projectName, platformVersion);
70
69
  }
71
70
  queue.start();
72
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.resuming`));
73
- logger_1.logger.log(`\n> Press ${chalk_1.default.bold('q')} to quit watching\n`);
71
+ logger_1.uiLogger.log(en_1.commands.project.watch.logs.resuming);
72
+ logger_1.uiLogger.log(`\n> Press ${chalk_1.default.bold('q')} to quit watching\n`);
74
73
  }, 2000);
75
74
  }
76
75
  async function queueFileOrFolder(accountId, projectName, platformVersion, filePath, remotePath, action) {
77
76
  if (action === 'upload' &&
78
77
  !(0, path_2.isAllowedExtension)(filePath, Array.from(extensions_1.JSR_ALLOWED_EXTENSIONS))) {
79
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.extensionNotAllowed`, { filePath }));
78
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.extensionNotAllowed(filePath));
80
79
  return;
81
80
  }
82
81
  if ((0, ignoreRules_1.shouldIgnoreFile)(filePath, true)) {
83
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.ignored`, { filePath }));
82
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.ignored(filePath));
84
83
  return;
85
84
  }
86
85
  if (!queue.isPaused) {
87
86
  debounceQueueBuild(accountId, projectName, platformVersion);
88
87
  }
89
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.uploading`, { filePath, remotePath }));
88
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.uploading(filePath, remotePath));
90
89
  return queue.add(async () => {
91
90
  try {
92
91
  if (action === 'upload') {
@@ -95,16 +94,20 @@ async function queueFileOrFolder(accountId, projectName, platformVersion, filePa
95
94
  else if (action === 'deleteFile' || action === 'deleteFolder') {
96
95
  await (0, projects_1.deleteFileFromBuild)(accountId, projectName, remotePath);
97
96
  }
98
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.${action}Succeeded`, { filePath, remotePath }));
97
+ logger_1.uiLogger.log(
98
+ // @ts-expect-error
99
+ en_1.commands.project.watch.logs[`${action}Succeeded`](remotePath, filePath));
99
100
  }
100
101
  catch (err) {
101
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.errors.${action}Failed`, { filePath, remotePath }));
102
+ logger_1.uiLogger.debug(
103
+ // @ts-expect-error
104
+ en_1.commands.project.watch.errors[`${action}Failed`](remotePath, filePath));
102
105
  }
103
106
  });
104
107
  }
105
108
  async function createNewBuild(accountId, projectName, platformVersion) {
106
109
  try {
107
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.attemptNewBuild`));
110
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.attemptNewBuild);
108
111
  const { data: { buildId }, } = await (0, projects_1.provisionBuild)(accountId, projectName, platformVersion);
109
112
  return buildId;
110
113
  }
@@ -112,7 +115,7 @@ async function createNewBuild(accountId, projectName, platformVersion) {
112
115
  (0, errorHandlers_1.logError)(err, new errorHandlers_1.ApiErrorContext({ accountId }));
113
116
  if ((0, index_1.isSpecifiedError)(err, { subCategory: constants_1.PROJECT_ERROR_TYPES.PROJECT_LOCKED })) {
114
117
  await (0, projects_1.cancelStagedBuild)(accountId, projectName);
115
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.previousStagingBuildCancelled`));
118
+ logger_1.uiLogger.log(en_1.commands.project.watch.logs.previousStagingBuildCancelled);
116
119
  }
117
120
  process.exit(1);
118
121
  }
@@ -121,7 +124,7 @@ async function handleWatchEvent(accountId, projectName, platformVersion, project
121
124
  const remotePath = path_1.default.relative(projectSourceDir, filePath);
122
125
  if (queue.isPaused) {
123
126
  if (standbyQueue.find(file => file.filePath === filePath)) {
124
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.debug.fileAlreadyQueued`, { filePath }));
127
+ logger_1.uiLogger.debug(en_1.commands.project.watch.debug.fileAlreadyQueued(filePath));
125
128
  }
126
129
  else {
127
130
  standbyQueue.push({
@@ -145,8 +148,8 @@ async function createWatcher(accountId, projectConfig, projectDir, handleBuildSt
145
148
  ignored: file => (0, ignoreRules_1.shouldIgnoreFile)(file),
146
149
  });
147
150
  watcher.on('ready', async () => {
148
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.watching`, { projectDir }));
149
- logger_1.logger.log(`\n> Press ${chalk_1.default.bold('q')} to quit watching\n`);
151
+ logger_1.uiLogger.log(en_1.commands.project.watch.logs.watching(projectDir));
152
+ logger_1.uiLogger.log(`\n> Press ${chalk_1.default.bold('q')} to quit watching\n`);
150
153
  });
151
154
  watcher.on('add', async (path) => {
152
155
  handleWatchEvent(accountId, projectConfig.name, projectConfig.platformVersion, projectSourceDir, path);
@@ -7,24 +7,25 @@ const config_1 = require("@hubspot/local-dev-lib/config");
7
7
  const promptUtils_1 = require("./promptUtils");
8
8
  const lang_1 = require("../lang");
9
9
  const config_2 = require("@hubspot/local-dev-lib/constants/config");
10
- const i18nKey = 'lib.prompts.accountNamePrompt';
11
10
  function getCliAccountNamePromptConfig(defaultName) {
12
11
  return {
13
12
  name: 'name',
14
- message: (0, lang_1.i18n)(`${i18nKey}.enterAccountName`),
13
+ message: (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.enterAccountName`),
15
14
  default: defaultName,
16
15
  validate(val) {
17
16
  if (typeof val !== 'string') {
18
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalidName`);
17
+ return (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.invalidName`);
19
18
  }
20
19
  else if (!val.length) {
21
- return (0, lang_1.i18n)(`${i18nKey}.errors.nameRequired`);
20
+ return (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.nameRequired`);
22
21
  }
23
22
  else if (val.indexOf(' ') >= 0) {
24
- return (0, lang_1.i18n)(`${i18nKey}.errors.spacesInName`);
23
+ return (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.spacesInName`);
25
24
  }
26
25
  return (0, config_1.accountNameExistsInConfig)(val)
27
- ? (0, lang_1.i18n)(`${i18nKey}.errors.accountNameExists`, { name: val })
26
+ ? (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.accountNameExists`, {
27
+ name: val,
28
+ })
28
29
  : true;
29
30
  },
30
31
  };
@@ -41,12 +42,12 @@ function hubspotAccountNamePrompt({ accountType, currentPortalCount = 0, }) {
41
42
  let defaultName;
42
43
  if (isSandbox) {
43
44
  promptMessageString = isDevelopmentSandbox
44
- ? (0, lang_1.i18n)(`${i18nKey}.enterDevelopmentSandboxName`)
45
- : (0, lang_1.i18n)(`${i18nKey}.enterStandardSandboxName`);
45
+ ? (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.enterDevelopmentSandboxName`)
46
+ : (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.enterStandardSandboxName`);
46
47
  }
47
48
  else if (isDeveloperTestAccount) {
48
- promptMessageString = (0, lang_1.i18n)(`${i18nKey}.enterDeveloperTestAccountName`);
49
- defaultName = (0, lang_1.i18n)(`${i18nKey}.developerTestAccountDefaultName`, {
49
+ promptMessageString = (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.enterDeveloperTestAccountName`);
50
+ defaultName = (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.developerTestAccountDefaultName`, {
50
51
  count: currentPortalCount + 1,
51
52
  });
52
53
  }
@@ -56,13 +57,15 @@ function hubspotAccountNamePrompt({ accountType, currentPortalCount = 0, }) {
56
57
  message: promptMessageString,
57
58
  validate(val) {
58
59
  if (typeof val !== 'string') {
59
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalidName`);
60
+ return (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.invalidName`);
60
61
  }
61
62
  else if (!val.trim().length) {
62
- return (0, lang_1.i18n)(`${i18nKey}.errors.nameRequired`);
63
+ return (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.nameRequired`);
63
64
  }
64
65
  return (0, config_1.accountNameExistsInConfig)(val)
65
- ? (0, lang_1.i18n)(`${i18nKey}.errors.accountNameExists`, { name: val })
66
+ ? (0, lang_1.i18n)(`lib.prompts.accountNamePrompt.errors.accountNameExists`, {
67
+ name: val,
68
+ })
66
69
  : true;
67
70
  },
68
71
  default: defaultName,
@@ -12,7 +12,6 @@ function mapAccountChoices(portals) {
12
12
  value: String(p.name || (0, getAccountIdentifier_1.getAccountIdentifier)(p)),
13
13
  })) || []);
14
14
  }
15
- const i18nKey = 'commands.account.subcommands.use';
16
15
  async function selectAccountFromConfig(prompt = '') {
17
16
  const accountsList = (0, config_1.getConfigAccounts)();
18
17
  const defaultAccount = (0, config_1.getConfigDefaultAccount)();
@@ -21,7 +20,7 @@ async function selectAccountFromConfig(prompt = '') {
21
20
  type: 'list',
22
21
  name: 'default',
23
22
  pageSize: 20,
24
- message: prompt || (0, lang_1.i18n)(`${i18nKey}.promptMessage`),
23
+ message: prompt || (0, lang_1.i18n)(`commands.account.subcommands.use.promptMessage`),
25
24
  choices: mapAccountChoices(accountsList),
26
25
  default: defaultAccount ?? undefined,
27
26
  },
@@ -9,7 +9,6 @@ const fs_1 = __importDefault(require("fs"));
9
9
  const promptUtils_1 = require("./promptUtils");
10
10
  const lang_1 = require("../lang");
11
11
  const escapeRegExp_1 = require("@hubspot/local-dev-lib/escapeRegExp");
12
- const i18nKey = 'lib.prompts.uploadPrompt';
13
12
  const FIELDS_FILES = ['fields.json', 'fields.js', 'fields.cjs', 'fields.mjs'];
14
13
  async function fieldsJsPrompt(filePath, projectDir, skipFiles = []) {
15
14
  const dirName = path_1.default.dirname(filePath);
@@ -33,7 +32,7 @@ async function fieldsJsPrompt(filePath, projectDir, skipFiles = []) {
33
32
  }));
34
33
  const promptVal = await (0, promptUtils_1.promptUser)([
35
34
  {
36
- message: (0, lang_1.i18n)(`${i18nKey}.fieldsPrompt`, { dir: fileDir }),
35
+ message: (0, lang_1.i18n)(`lib.prompts.uploadPrompt.fieldsPrompt`, { dir: fileDir }),
37
36
  type: 'list',
38
37
  name: 'filePathChoice',
39
38
  choices: selection,
@@ -1,12 +1,4 @@
1
- type SampleChoice = {
2
- name: string;
3
- description: string;
4
- id: string;
5
- languages: string[];
6
- };
7
- type SampleConfig = {
8
- samples: SampleChoice[];
9
- };
1
+ import { ApiSampleConfig } from '../../types/Cms';
10
2
  type SampleTypePromptResponse = {
11
3
  sampleType?: string;
12
4
  };
@@ -14,5 +6,5 @@ type LanguagePromptResponse = {
14
6
  sampleLanguage?: string;
15
7
  };
16
8
  type CreateApiSamplePromptResponse = SampleTypePromptResponse & LanguagePromptResponse;
17
- export declare function createApiSamplePrompt(samplesConfig: SampleConfig): Promise<CreateApiSamplePromptResponse>;
9
+ export declare function createApiSamplePrompt(samplesConfig: ApiSampleConfig): Promise<CreateApiSamplePromptResponse>;
18
10
  export {};
@@ -3,12 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createApiSamplePrompt = createApiSamplePrompt;
4
4
  const promptUtils_1 = require("./promptUtils");
5
5
  const lang_1 = require("../lang");
6
- const i18nKey = 'lib.prompts.createApiSamplePrompt';
7
6
  function getSampleTypesPrompt(choices) {
8
7
  return {
9
8
  type: 'rawlist',
10
9
  name: 'sampleType',
11
- message: (0, lang_1.i18n)(`${i18nKey}.selectApiSampleApp`),
10
+ message: (0, lang_1.i18n)(`lib.prompts.createApiSamplePrompt.selectApiSampleApp`),
12
11
  choices: choices.map(choice => ({
13
12
  name: `${choice.name} - ${choice.description}`,
14
13
  value: choice.id,
@@ -19,7 +18,7 @@ function getSampleTypesPrompt(choices) {
19
18
  resolve(true);
20
19
  }
21
20
  else {
22
- reject((0, lang_1.i18n)(`${i18nKey}.errors.apiSampleAppRequired`));
21
+ reject((0, lang_1.i18n)(`lib.prompts.createApiSamplePrompt.errors.apiSampleAppRequired`));
23
22
  }
24
23
  });
25
24
  },
@@ -29,7 +28,7 @@ function getLanguagesPrompt(choices) {
29
28
  return {
30
29
  type: 'rawlist',
31
30
  name: 'sampleLanguage',
32
- message: (0, lang_1.i18n)(`${i18nKey}.selectLanguage`),
31
+ message: (0, lang_1.i18n)(`lib.prompts.createApiSamplePrompt.selectLanguage`),
33
32
  choices: choices.map(choice => ({
34
33
  name: choice,
35
34
  value: choice,
@@ -39,7 +38,7 @@ function getLanguagesPrompt(choices) {
39
38
  if (input && input.length > 0) {
40
39
  resolve(true);
41
40
  }
42
- reject((0, lang_1.i18n)(`${i18nKey}.errors.languageRequired`));
41
+ reject((0, lang_1.i18n)(`lib.prompts.createApiSamplePrompt.errors.languageRequired`));
43
42
  });
44
43
  },
45
44
  };
@@ -3,35 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createFunctionPrompt = createFunctionPrompt;
4
4
  const promptUtils_1 = require("./promptUtils");
5
5
  const lang_1 = require("../lang");
6
- const i18nKey = 'lib.prompts.createFunctionPrompt';
7
6
  const FUNCTIONS_FOLDER_PROMPT = {
8
7
  name: 'functionsFolder',
9
- message: (0, lang_1.i18n)(`${i18nKey}.enterFolder`),
8
+ message: (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.enterFolder`),
10
9
  validate(val) {
11
10
  if (typeof val !== 'string') {
12
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalid`);
11
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.invalid`);
13
12
  }
14
13
  else if (!val.length) {
15
- return (0, lang_1.i18n)(`${i18nKey}.errors.blank`);
14
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.blank`);
16
15
  }
17
16
  else if (val.indexOf(' ') >= 0) {
18
- return (0, lang_1.i18n)(`${i18nKey}.errors.space`);
17
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.space`);
19
18
  }
20
19
  return true;
21
20
  },
22
21
  };
23
22
  const FUNCTION_FILENAME_PROMPT = {
24
23
  name: 'filename',
25
- message: (0, lang_1.i18n)(`${i18nKey}.enterFilename`),
24
+ message: (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.enterFilename`),
26
25
  validate(val) {
27
26
  if (typeof val !== 'string') {
28
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalid`);
27
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.invalid`);
29
28
  }
30
29
  else if (!val.length) {
31
- return (0, lang_1.i18n)(`${i18nKey}.errors.blank`);
30
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.blank`);
32
31
  }
33
32
  else if (val.indexOf(' ') >= 0) {
34
- return (0, lang_1.i18n)(`${i18nKey}.errors.space`);
33
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.space`);
35
34
  }
36
35
  return true;
37
36
  },
@@ -39,22 +38,22 @@ const FUNCTION_FILENAME_PROMPT = {
39
38
  const ENDPOINT_METHOD_PROMPT = {
40
39
  type: 'list',
41
40
  name: 'endpointMethod',
42
- message: (0, lang_1.i18n)(`${i18nKey}.selectEndpointMethod`),
41
+ message: (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.selectEndpointMethod`),
43
42
  default: 'GET',
44
43
  choices: ['DELETE', 'GET', 'PATCH', 'POST', 'PUT'],
45
44
  };
46
45
  const ENDPOINT_PATH_PROMPT = {
47
46
  name: 'endpointPath',
48
- message: (0, lang_1.i18n)(`${i18nKey}.enterEndpointPath`),
47
+ message: (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.enterEndpointPath`),
49
48
  validate(val) {
50
49
  if (typeof val !== 'string') {
51
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalid`);
50
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.invalid`);
52
51
  }
53
52
  else if (!val.length) {
54
- return (0, lang_1.i18n)(`${i18nKey}.errors.blank`);
53
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.blank`);
55
54
  }
56
55
  else if (val.indexOf(' ') >= 0) {
57
- return (0, lang_1.i18n)(`${i18nKey}.errors.space`);
56
+ return (0, lang_1.i18n)(`lib.prompts.createFunctionPrompt.errors.space`);
58
57
  }
59
58
  return true;
60
59
  },
@@ -3,16 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createModulePrompt = createModulePrompt;
4
4
  const promptUtils_1 = require("./promptUtils");
5
5
  const lang_1 = require("../lang");
6
- const i18nKey = 'lib.prompts.createModulePrompt';
7
6
  const MODULE_LABEL_PROMPT = {
8
7
  name: 'moduleLabel',
9
- message: (0, lang_1.i18n)(`${i18nKey}.enterLabel`),
8
+ message: (0, lang_1.i18n)(`lib.prompts.createModulePrompt.enterLabel`),
10
9
  validate(val) {
11
10
  if (typeof val !== 'string') {
12
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalidLabel`);
11
+ return (0, lang_1.i18n)(`lib.prompts.createModulePrompt.errors.invalidLabel`);
13
12
  }
14
13
  else if (!val.length) {
15
- return (0, lang_1.i18n)(`${i18nKey}.errors.labelRequired`);
14
+ return (0, lang_1.i18n)(`lib.prompts.createModulePrompt.errors.labelRequired`);
16
15
  }
17
16
  return true;
18
17
  },
@@ -20,13 +19,13 @@ const MODULE_LABEL_PROMPT = {
20
19
  const REACT_TYPE_PROMPT = {
21
20
  type: 'confirm',
22
21
  name: 'reactType',
23
- message: (0, lang_1.i18n)(`${i18nKey}.selectReactType`),
22
+ message: (0, lang_1.i18n)(`lib.prompts.createModulePrompt.selectReactType`),
24
23
  default: false,
25
24
  };
26
25
  const CONTENT_TYPES_PROMPT = {
27
26
  type: 'checkbox',
28
27
  name: 'contentTypes',
29
- message: (0, lang_1.i18n)(`${i18nKey}.selectContentType`),
28
+ message: (0, lang_1.i18n)(`lib.prompts.createModulePrompt.selectContentType`),
30
29
  default: ['ANY'],
31
30
  choices: [
32
31
  { name: 'Any', value: 'ANY' },
@@ -47,20 +46,20 @@ const CONTENT_TYPES_PROMPT = {
47
46
  if (input.length > 0) {
48
47
  resolve(true);
49
48
  }
50
- reject((0, lang_1.i18n)(`${i18nKey}.errors.contentTypeRequired`));
49
+ reject((0, lang_1.i18n)(`lib.prompts.createModulePrompt.errors.contentTypeRequired`));
51
50
  });
52
51
  },
53
52
  };
54
53
  const GLOBAL_PROMPT = {
55
54
  type: 'confirm',
56
55
  name: 'global',
57
- message: (0, lang_1.i18n)(`${i18nKey}.confirmGlobal`),
56
+ message: (0, lang_1.i18n)(`lib.prompts.createModulePrompt.confirmGlobal`),
58
57
  default: false,
59
58
  };
60
59
  const AVAILABLE_FOR_NEW_CONTENT = {
61
60
  type: 'confirm',
62
61
  name: 'availableForNewContent',
63
- message: (0, lang_1.i18n)(`${i18nKey}.availableForNewContent`),
62
+ message: (0, lang_1.i18n)(`lib.prompts.createModulePrompt.availableForNewContent`),
64
63
  default: true,
65
64
  };
66
65
  function createModulePrompt() {
@@ -1,12 +1,28 @@
1
- import { ProjectTemplate } from '../../types/Projects';
2
- type CreateProjectPromptResponse = {
1
+ import { ComponentTemplate, ComponentTemplateChoice, ProjectTemplate } from '../../types/Projects';
2
+ export type CreateProjectPromptResponse = {
3
3
  name: string;
4
4
  dest: string;
5
5
  projectTemplate?: ProjectTemplate;
6
+ componentTemplates?: ComponentTemplate[];
6
7
  };
7
- export declare function createProjectPrompt(promptOptions: {
8
+ type CreateProjectPromptResponseProjectTemplate = {
9
+ name: string;
10
+ dest: string;
11
+ projectTemplate: ProjectTemplate;
12
+ componentTemplates: undefined;
13
+ };
14
+ type CreateProjectPromptResponseComponentTemplates = {
15
+ name: string;
16
+ dest: string;
17
+ projectTemplate?: undefined;
18
+ componentTemplates?: ComponentTemplate[];
19
+ };
20
+ type PromptOptionsArg = {
8
21
  name?: string;
9
22
  dest?: string;
10
23
  template?: string;
11
- }, projectTemplates?: ProjectTemplate[]): Promise<CreateProjectPromptResponse>;
24
+ features?: string[];
25
+ };
26
+ export declare function createProjectPrompt(promptOptions: PromptOptionsArg, projectTemplates?: ProjectTemplate[], componentTemplates?: undefined): Promise<CreateProjectPromptResponseProjectTemplate>;
27
+ export declare function createProjectPrompt(promptOptions: PromptOptionsArg, projectTemplates?: undefined, componentTemplates?: ComponentTemplateChoice[]): Promise<CreateProjectPromptResponseComponentTemplates>;
12
28
  export {};
@@ -8,44 +8,58 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const path_2 = require("@hubspot/local-dev-lib/path");
10
10
  const promptUtils_1 = require("./promptUtils");
11
- const lang_1 = require("../lang");
12
11
  const constants_1 = require("../constants");
13
- const i18nKey = 'lib.prompts.createProjectPrompt';
12
+ const en_1 = require("../../lang/en");
14
13
  function validateProjectDirectory(input) {
15
14
  if (!input) {
16
- return (0, lang_1.i18n)(`${i18nKey}.errors.destRequired`);
15
+ return en_1.lib.prompts.createProjectPrompt.errors.destRequired;
17
16
  }
18
17
  if (fs_1.default.existsSync(path_1.default.resolve((0, path_2.getCwd)(), path_1.default.join(input, constants_1.PROJECT_CONFIG_FILE)))) {
19
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalidDest`);
18
+ return en_1.lib.prompts.createProjectPrompt.errors.invalidDest;
20
19
  }
21
20
  if (!(0, path_2.isValidPath)(input)) {
22
- return (0, lang_1.i18n)(`${i18nKey}.errors.invalidCharacters`);
21
+ return en_1.lib.prompts.createProjectPrompt.errors.invalidCharacters;
23
22
  }
24
23
  return true;
25
24
  }
26
25
  function findTemplateByNameOrLabel(projectTemplates, templateNameOrLabel) {
27
26
  return projectTemplates.find(t => t.name === templateNameOrLabel || t.label === templateNameOrLabel);
28
27
  }
29
- async function createProjectPrompt(promptOptions, projectTemplates) {
28
+ async function createProjectPrompt(promptOptions, projectTemplates, componentTemplates) {
30
29
  const createProjectFromTemplate = !!projectTemplates && projectTemplates.length > 0;
30
+ const createProjectFromComponents = Array.isArray(componentTemplates) && componentTemplates?.length > 0;
31
+ const selectedComponents = [];
32
+ if (createProjectFromComponents && promptOptions.features) {
33
+ componentTemplates.forEach(template => {
34
+ if (!template.value) {
35
+ return;
36
+ }
37
+ if (promptOptions.features?.includes(template.value.type)) {
38
+ if (template.disabled) {
39
+ throw new Error(`Cannot create project with template '${template.value.type}'. Reasons: ${template.disabled}`);
40
+ }
41
+ selectedComponents.push(template.value);
42
+ }
43
+ });
44
+ }
31
45
  const providedTemplateIsValid = createProjectFromTemplate &&
32
46
  !!promptOptions.template &&
33
47
  !!findTemplateByNameOrLabel(projectTemplates, promptOptions.template);
34
48
  const result = await (0, promptUtils_1.promptUser)([
35
49
  {
36
50
  name: 'name',
37
- message: (0, lang_1.i18n)(`${i18nKey}.enterName`),
51
+ message: en_1.lib.prompts.createProjectPrompt.enterName,
38
52
  when: !promptOptions.name,
39
53
  validate: (input) => {
40
54
  if (!input) {
41
- return (0, lang_1.i18n)(`${i18nKey}.errors.nameRequired`);
55
+ return en_1.lib.prompts.createProjectPrompt.errors.nameRequired;
42
56
  }
43
57
  return true;
44
58
  },
45
59
  },
46
60
  {
47
61
  name: 'dest',
48
- message: (0, lang_1.i18n)(`${i18nKey}.enterDest`),
62
+ message: en_1.lib.prompts.createProjectPrompt.enterDest,
49
63
  when: !promptOptions.dest,
50
64
  default: answers => {
51
65
  const projectName = (0, path_2.sanitizeFileName)(promptOptions.name || answers.name);
@@ -60,10 +74,8 @@ async function createProjectPrompt(promptOptions, projectTemplates) {
60
74
  name: 'projectTemplate',
61
75
  message: () => {
62
76
  return promptOptions.template && !providedTemplateIsValid
63
- ? (0, lang_1.i18n)(`${i18nKey}.errors.invalidTemplate`, {
64
- template: promptOptions.template,
65
- })
66
- : (0, lang_1.i18n)(`${i18nKey}.selectTemplate`);
77
+ ? en_1.lib.prompts.createProjectPrompt.errors.invalidTemplate(promptOptions.template)
78
+ : en_1.lib.prompts.createProjectPrompt.selectTemplate;
67
79
  },
68
80
  when: createProjectFromTemplate && !providedTemplateIsValid,
69
81
  type: 'list',
@@ -76,6 +88,15 @@ async function createProjectPrompt(promptOptions, projectTemplates) {
76
88
  })
77
89
  : undefined,
78
90
  },
91
+ {
92
+ name: 'componentTemplates',
93
+ message: en_1.lib.prompts.createProjectPrompt.features,
94
+ when: !promptOptions.features &&
95
+ createProjectFromComponents &&
96
+ selectedComponents.length === 0,
97
+ type: 'checkbox',
98
+ choices: componentTemplates,
99
+ },
79
100
  ]);
80
101
  if (!result.name) {
81
102
  result.name = promptOptions.name;
@@ -83,8 +104,17 @@ async function createProjectPrompt(promptOptions, projectTemplates) {
83
104
  if (!result.dest) {
84
105
  result.dest = promptOptions.dest;
85
106
  }
107
+ if (!result.componentTemplates) {
108
+ result.componentTemplates = selectedComponents;
109
+ }
86
110
  if (providedTemplateIsValid) {
87
111
  result.projectTemplate = findTemplateByNameOrLabel(projectTemplates, promptOptions.template);
88
112
  }
113
+ if (projectTemplates && projectTemplates.length > 0) {
114
+ if (!result.projectTemplate) {
115
+ throw new Error(en_1.lib.prompts.createProjectPrompt.errors.projectTemplateRequired);
116
+ }
117
+ return result;
118
+ }
89
119
  return result;
90
120
  }