@hubspot/cli 7.5.2-experimental.0 → 7.5.3-beta.1

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 +12 -3
  2. package/api/migrate.js +9 -2
  3. package/bin/cli.js +100 -93
  4. package/commands/account/auth.d.ts +8 -0
  5. package/commands/account/auth.js +175 -0
  6. package/commands/account/clean.d.ts +3 -7
  7. package/commands/account/clean.js +54 -14
  8. package/commands/account/createOverride.d.ts +6 -0
  9. package/commands/account/createOverride.js +121 -0
  10. package/commands/account/info.d.ts +3 -7
  11. package/commands/account/info.js +36 -5
  12. package/commands/account/list.d.ts +3 -7
  13. package/commands/account/list.js +38 -15
  14. package/commands/account/remove.d.ts +3 -7
  15. package/commands/account/remove.js +49 -9
  16. package/commands/account/removeOverride.d.ts +6 -0
  17. package/commands/account/removeOverride.js +93 -0
  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 +27 -6
  22. package/commands/account.d.ts +3 -4
  23. package/commands/account.js +33 -53
  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 +37 -33
  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 +6 -0
  51. package/commands/config/migrate.js +75 -0
  52. package/commands/config/set.d.ts +10 -1
  53. package/commands/config/set.js +56 -32
  54. package/commands/config.d.ts +3 -1
  55. package/commands/config.js +19 -11
  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 +31 -24
  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 -8
  175. package/commands/project/migrate.js +49 -26
  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 +81 -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 -37
  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 +3218 -0
  225. package/lang/en.js +3075 -3313
  226. package/lang/en.lyaml +96 -228
  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 +172 -91
  231. package/lib/app/migrate_legacy.d.ts +2 -2
  232. package/lib/app/migrate_legacy.js +12 -11
  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 -0
  240. package/lib/configMigrate.js +83 -0
  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.d.ts +1 -2
  248. package/lib/doctor/Diagnosis.js +19 -16
  249. package/lib/doctor/DiagnosticInfoBuilder.d.ts +2 -1
  250. package/lib/doctor/DiagnosticInfoBuilder.js +10 -9
  251. package/lib/doctor/Doctor.d.ts +1 -0
  252. package/lib/doctor/Doctor.js +60 -46
  253. package/lib/errorHandlers/index.js +13 -7
  254. package/lib/errorHandlers/suppressError.js +18 -26
  255. package/lib/filesystem.d.ts +1 -1
  256. package/lib/generateSelectors.js +3 -6
  257. package/lib/hasFeature.d.ts +3 -1
  258. package/lib/interpolation.d.ts +2 -3
  259. package/lib/lang.d.ts +2 -3
  260. package/lib/marketplaceValidate.d.ts +12 -2
  261. package/lib/marketplaceValidate.js +22 -29
  262. package/lib/mcp/setup.d.ts +12 -0
  263. package/lib/mcp/setup.js +216 -0
  264. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +3 -3
  265. package/lib/middleware/autoUpdateMiddleware.d.ts +1 -0
  266. package/lib/middleware/autoUpdateMiddleware.js +89 -0
  267. package/lib/middleware/configMiddleware.js +37 -3
  268. package/lib/middleware/fireAlarmMiddleware.d.ts +4 -0
  269. package/lib/middleware/fireAlarmMiddleware.js +125 -0
  270. package/lib/middleware/yargsChecksMiddleware.js +2 -2
  271. package/lib/npm.d.ts +9 -0
  272. package/lib/npm.js +36 -0
  273. package/lib/oauth.js +1 -2
  274. package/lib/process.js +1 -2
  275. package/lib/projectProfiles.d.ts +7 -0
  276. package/lib/projectProfiles.js +83 -0
  277. package/lib/projects/ProjectLogsManager.d.ts +1 -1
  278. package/lib/projects/ProjectLogsManager.js +16 -21
  279. package/lib/projects/add/legacyAddComponent.d.ts +5 -0
  280. package/lib/projects/add/legacyAddComponent.js +48 -0
  281. package/lib/projects/add/v3AddComponent.d.ts +8 -0
  282. package/lib/projects/add/v3AddComponent.js +85 -0
  283. package/lib/projects/buildAndDeploy.js +46 -42
  284. package/lib/projects/components.d.ts +2 -0
  285. package/lib/projects/components.js +82 -0
  286. package/lib/projects/config.d.ts +9 -0
  287. package/lib/projects/config.js +79 -0
  288. package/lib/projects/create/index.d.ts +23 -0
  289. package/lib/projects/create/index.js +33 -0
  290. package/lib/projects/create/legacy.d.ts +6 -0
  291. package/lib/projects/{create.js → create/legacy.js} +23 -15
  292. package/lib/projects/create/v3.d.ts +27 -0
  293. package/lib/projects/create/v3.js +158 -0
  294. package/lib/projects/ensureProjectExists.d.ts +11 -0
  295. package/lib/projects/ensureProjectExists.js +97 -0
  296. package/lib/projects/localDev/AppDevModeInterface.d.ts +30 -0
  297. package/lib/projects/localDev/AppDevModeInterface.js +215 -0
  298. package/lib/{DevServerManager.d.ts → projects/localDev/DevServerManager.d.ts} +1 -1
  299. package/lib/{DevServerManager.js → projects/localDev/DevServerManager.js} +6 -6
  300. package/lib/projects/localDev/DevServerManagerV2.d.ts +22 -0
  301. package/lib/{DevServerManagerV2.js → projects/localDev/DevServerManagerV2.js} +22 -19
  302. package/lib/projects/localDev/LocalDevLogger.d.ts +30 -0
  303. package/lib/projects/localDev/LocalDevLogger.js +159 -0
  304. package/lib/{LocalDevManager.d.ts → projects/localDev/LocalDevManager.d.ts} +1 -1
  305. package/lib/{LocalDevManager.js → projects/localDev/LocalDevManager.js} +57 -83
  306. package/lib/projects/localDev/LocalDevProcess.d.ts +34 -0
  307. package/lib/projects/localDev/LocalDevProcess.js +201 -0
  308. package/lib/projects/localDev/LocalDevState.d.ts +50 -0
  309. package/lib/projects/localDev/LocalDevState.js +119 -0
  310. package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
  311. package/lib/projects/localDev/LocalDevWatcher.js +53 -0
  312. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +20 -0
  313. package/lib/projects/localDev/LocalDevWebsocketServer.js +131 -0
  314. package/lib/{localDev.d.ts → projects/localDev/helpers.d.ts} +6 -4
  315. package/lib/{localDev.js → projects/localDev/helpers.js} +127 -114
  316. package/lib/projects/ui.d.ts +1 -0
  317. package/lib/projects/ui.js +15 -0
  318. package/lib/projects/upload.d.ts +17 -2
  319. package/lib/projects/upload.js +74 -50
  320. package/lib/projects/urls.d.ts +4 -0
  321. package/lib/projects/urls.js +23 -1
  322. package/lib/projects/watch.d.ts +1 -1
  323. package/lib/projects/watch.js +21 -18
  324. package/lib/prompts/accountNamePrompt.js +16 -13
  325. package/lib/prompts/accountsPrompt.js +1 -2
  326. package/lib/prompts/cmsFieldPrompt.js +1 -2
  327. package/lib/prompts/createApiSamplePrompt.d.ts +2 -10
  328. package/lib/prompts/createApiSamplePrompt.js +4 -5
  329. package/lib/prompts/createFunctionPrompt.js +13 -14
  330. package/lib/prompts/createModulePrompt.js +8 -9
  331. package/lib/prompts/createProjectPrompt.d.ts +20 -4
  332. package/lib/prompts/createProjectPrompt.js +43 -13
  333. package/lib/prompts/createTemplatePrompt.d.ts +22 -4
  334. package/lib/prompts/createTemplatePrompt.js +1 -2
  335. package/lib/prompts/downloadProjectPrompt.js +3 -4
  336. package/lib/prompts/installAppPrompt.d.ts +2 -0
  337. package/lib/prompts/installAppPrompt.js +45 -0
  338. package/lib/prompts/personalAccessKeyPrompt.js +35 -25
  339. package/lib/prompts/previewPrompt.js +5 -6
  340. package/lib/prompts/projectAddPrompt.d.ts +5 -1
  341. package/lib/prompts/projectAddPrompt.js +35 -8
  342. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
  343. package/lib/prompts/projectDevTargetAccountPrompt.js +15 -16
  344. package/lib/prompts/projectNamePrompt.js +5 -6
  345. package/lib/prompts/projectsLogsPrompt.js +3 -2
  346. package/lib/prompts/promptUtils.d.ts +4 -2
  347. package/lib/prompts/promptUtils.js +3 -1
  348. package/lib/prompts/sandboxesPrompt.js +5 -6
  349. package/lib/prompts/secretPrompt.js +2 -3
  350. package/lib/prompts/selectAppPrompt.d.ts +2 -0
  351. package/lib/prompts/selectAppPrompt.js +40 -0
  352. package/lib/prompts/selectHubDBTablePrompt.js +11 -8
  353. package/lib/prompts/{selectPublicAppPrompt.d.ts → selectPublicAppForMigrationPrompt.d.ts} +1 -1
  354. package/lib/prompts/{selectPublicAppPrompt.js → selectPublicAppForMigrationPrompt.js} +8 -9
  355. package/lib/prompts/setAsDefaultAccountPrompt.js +11 -2
  356. package/lib/prompts/uploadPrompt.js +4 -5
  357. package/lib/sandboxSync.js +15 -14
  358. package/lib/sandboxes.js +12 -13
  359. package/lib/serverlessLogs.js +4 -6
  360. package/lib/testUtils.d.ts +3 -3
  361. package/lib/testUtils.js +8 -9
  362. package/lib/ui/boxen.d.ts +5 -0
  363. package/lib/ui/boxen.js +30 -0
  364. package/lib/ui/git.js +8 -9
  365. package/lib/ui/index.d.ts +4 -2
  366. package/lib/ui/index.js +20 -17
  367. package/lib/ui/logger.d.ts +10 -0
  368. package/lib/ui/logger.js +15 -0
  369. package/lib/ui/serverlessFunctionLogs.js +2 -3
  370. package/lib/upload.d.ts +1 -1
  371. package/lib/validation.js +4 -5
  372. package/lib/yargsUtils.d.ts +5 -1
  373. package/lib/yargsUtils.js +6 -0
  374. package/mcp-server/server.d.ts +1 -0
  375. package/mcp-server/server.js +18 -0
  376. package/mcp-server/tools/index.d.ts +2 -0
  377. package/mcp-server/tools/index.js +17 -0
  378. package/mcp-server/tools/project/AddFeatureToProject.d.ts +29 -0
  379. package/mcp-server/tools/project/AddFeatureToProject.js +85 -0
  380. package/mcp-server/tools/project/CreateProjectTool.d.ts +35 -0
  381. package/mcp-server/tools/project/CreateProjectTool.js +100 -0
  382. package/mcp-server/tools/project/DeployProject.d.ts +20 -0
  383. package/mcp-server/tools/project/DeployProject.js +50 -0
  384. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +17 -0
  385. package/mcp-server/tools/project/GuidedWalkthroughTool.js +58 -0
  386. package/mcp-server/tools/project/UploadProjectTools.d.ts +17 -0
  387. package/mcp-server/tools/project/UploadProjectTools.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 +19 -11
  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 -14
  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 -21
  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
@@ -5,12 +5,11 @@ const spinniesUtils_1 = require("../ui/spinniesUtils");
5
5
  const chalk_1 = require("chalk");
6
6
  const interpolation_1 = require("../interpolation");
7
7
  const ui_1 = require("../ui");
8
+ const index_1 = require("../ui/index");
8
9
  const { i18n } = require('../lang');
9
- const i18nKey = `lib.doctor.diagnosis`;
10
10
  class Diagnosis {
11
11
  prefixes;
12
12
  diagnosis;
13
- indentation = ' ';
14
13
  errorCount = 0;
15
14
  warningCount = 0;
16
15
  constructor({ diagnosticInfo, accountId }) {
@@ -22,20 +21,24 @@ class Diagnosis {
22
21
  };
23
22
  this.diagnosis = {
24
23
  cli: {
25
- header: i18n(`${i18nKey}.cli.header`),
24
+ header: i18n(`lib.doctor.diagnosis.cli.header`),
26
25
  sections: [],
27
26
  },
28
27
  cliConfig: {
29
- header: i18n(`${i18nKey}.cliConfig.header`),
28
+ header: i18n(`lib.doctor.diagnosis.cliConfig.header`),
29
+ sections: [],
30
+ },
31
+ defaultAccountOverrideFile: {
32
+ header: i18n(`lib.doctor.diagnosis.defaultAccountOverrideFile.header`),
30
33
  sections: [],
31
34
  },
32
35
  project: {
33
- header: i18n(`${i18nKey}.projectConfig.header`),
36
+ header: i18n(`lib.doctor.diagnosis.projectConfig.header`),
34
37
  subheaders: [
35
- i18n(`${i18nKey}.projectConfig.projectDirSubHeader`, {
38
+ i18n(`lib.doctor.diagnosis.projectConfig.projectDirSubHeader`, {
36
39
  projectDir: diagnosticInfo.project?.config?.projectDir,
37
40
  }),
38
- i18n(`${i18nKey}.projectConfig.projectNameSubHeader`, {
41
+ i18n(`lib.doctor.diagnosis.projectConfig.projectNameSubHeader`, {
39
42
  projectName: diagnosticInfo.project?.config?.projectConfig?.name,
40
43
  }),
41
44
  ],
@@ -44,18 +47,15 @@ class Diagnosis {
44
47
  };
45
48
  if (diagnosticInfo.config) {
46
49
  this.diagnosis.cliConfig.subheaders = [
47
- i18n(`${i18nKey}.cliConfig.configFileSubHeader`, {
50
+ i18n(`lib.doctor.diagnosis.cliConfig.configFileSubHeader`, {
48
51
  filename: diagnosticInfo.config,
49
52
  }),
50
- i18n(`${i18nKey}.cliConfig.defaultAccountSubHeader`, {
53
+ i18n(`lib.doctor.diagnosis.cliConfig.defaultAccountSubHeader`, {
51
54
  accountDetails: (0, ui_1.uiAccountDescription)(accountId),
52
55
  }),
53
56
  ];
54
57
  }
55
58
  }
56
- indent(level) {
57
- return this.indentation.repeat(level);
58
- }
59
59
  getErrorCount() {
60
60
  return this.errorCount;
61
61
  }
@@ -71,6 +71,9 @@ class Diagnosis {
71
71
  addCLIConfigSection(section) {
72
72
  this.diagnosis.cliConfig.sections.push(section);
73
73
  }
74
+ addDefaultAccountOverrideFileSection(section) {
75
+ this.diagnosis.defaultAccountOverrideFile.sections.push(section);
76
+ }
74
77
  toString() {
75
78
  const output = [];
76
79
  for (const value of Object.values(this.diagnosis)) {
@@ -83,10 +86,10 @@ class Diagnosis {
83
86
  return '';
84
87
  }
85
88
  output.push('');
86
- output.push(i18n(`${i18nKey}.counts.errors`, {
89
+ output.push(i18n(`lib.doctor.diagnosis.counts.errors`, {
87
90
  count: this.errorCount,
88
91
  }));
89
- output.push(i18n(`${i18nKey}.counts.warnings`, {
92
+ output.push(i18n(`lib.doctor.diagnosis.counts.warnings`, {
90
93
  count: this.warningCount,
91
94
  }));
92
95
  output.push('');
@@ -108,9 +111,9 @@ class Diagnosis {
108
111
  else if (section.type === 'warning') {
109
112
  this.warningCount++;
110
113
  }
111
- output.push(`${this.indent(1)}${this.prefixes[section.type]} ${section.message}`);
114
+ output.push(`${(0, index_1.indent)(1)}${this.prefixes[section.type]} ${section.message}`);
112
115
  if (section.secondaryMessaging) {
113
- output.push(`${this.indent(2)}- ${section.secondaryMessaging}`);
116
+ output.push(`${(0, index_1.indent)(2)}- ${section.secondaryMessaging}`);
114
117
  }
115
118
  });
116
119
  return output.join('\n');
@@ -1,4 +1,4 @@
1
- import { getProjectConfig } from '../projects';
1
+ import { getProjectConfig } from '../projects/config';
2
2
  import { Environment } from '@hubspot/local-dev-lib/types/Config';
3
3
  import { AccessToken, AccountType, AuthType } from '@hubspot/local-dev-lib/types/Accounts';
4
4
  import { Project } from '@hubspot/local-dev-lib/types/Project';
@@ -21,6 +21,7 @@ export interface DiagnosticInfo extends FilesInfo {
21
21
  npm: string | null;
22
22
  };
23
23
  config: string | null;
24
+ defaultAccountOverrideFile: string | null | undefined;
24
25
  configSettings: {
25
26
  [key: string]: unknown;
26
27
  };
@@ -4,13 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DiagnosticInfoBuilder = void 0;
7
- const projects_1 = require("../projects");
8
- const projects_2 = require("@hubspot/local-dev-lib/api/projects");
7
+ const config_1 = require("../projects/config");
8
+ const projects_1 = require("@hubspot/local-dev-lib/api/projects");
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const package_json_1 = __importDefault(require("../../package.json"));
11
11
  const logger_1 = require("@hubspot/local-dev-lib/logger");
12
- const config_1 = require("@hubspot/local-dev-lib/config");
13
12
  const config_2 = require("@hubspot/local-dev-lib/config");
13
+ const config_3 = require("@hubspot/local-dev-lib/config");
14
14
  const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
15
15
  const fs_1 = require("@hubspot/local-dev-lib/fs");
16
16
  const util_1 = __importDefault(require("util"));
@@ -38,10 +38,10 @@ class DiagnosticInfoBuilder {
38
38
  files;
39
39
  processInfo;
40
40
  constructor(processInfo) {
41
- this.accountId = (0, config_1.getAccountId)();
42
- const accountConfig = (0, config_2.getAccountConfig)(this.accountId);
41
+ this.accountId = (0, config_2.getAccountId)();
42
+ const accountConfig = (0, config_3.getAccountConfig)(this.accountId);
43
43
  this.configSettings = {
44
- httpUseLocalhost: (0, config_1.isConfigFlagEnabled)('httpUseLocalhost'),
44
+ httpUseLocalhost: (0, config_2.isConfigFlagEnabled)('httpUseLocalhost'),
45
45
  };
46
46
  this.env = accountConfig?.env;
47
47
  this.authType = accountConfig?.authType;
@@ -50,7 +50,7 @@ class DiagnosticInfoBuilder {
50
50
  this.processInfo = processInfo;
51
51
  }
52
52
  async generateDiagnosticInfo() {
53
- this._projectConfig = await (0, projects_1.getProjectConfig)();
53
+ this._projectConfig = await (0, config_1.getProjectConfig)();
54
54
  if (this._projectConfig?.projectConfig) {
55
55
  await this.fetchProjectDetails();
56
56
  await this.fetchAccessToken();
@@ -63,7 +63,8 @@ class DiagnosticInfoBuilder {
63
63
  platform,
64
64
  arch,
65
65
  path: mainModule?.path,
66
- config: (0, config_2.getConfigPath)(),
66
+ config: (0, config_3.getConfigPath)(),
67
+ defaultAccountOverrideFile: (0, config_2.getDefaultAccountOverrideFilePath)(),
67
68
  configSettings: this.configSettings,
68
69
  versions: {
69
70
  [hubspotCli]: package_json_1.default.version,
@@ -88,7 +89,7 @@ class DiagnosticInfoBuilder {
88
89
  }
89
90
  async fetchProjectDetails() {
90
91
  try {
91
- const { data } = await (0, projects_2.fetchProject)(this.accountId,
92
+ const { data } = await (0, projects_1.fetchProject)(this.accountId,
92
93
  // We check that config exists before running this function
93
94
  this._projectConfig.projectConfig.name);
94
95
  this.projectDetails = data;
@@ -10,6 +10,7 @@ export declare class Doctor {
10
10
  private performCliChecks;
11
11
  private performProjectChecks;
12
12
  private performCliConfigChecks;
13
+ private performDefaultAccountOverrideFileChecks;
13
14
  private performCliConfigSettingsChecks;
14
15
  private checkIfAccessTokenValid;
15
16
  private checkIfNodeIsInstalled;
@@ -8,6 +8,7 @@ const logger_1 = require("@hubspot/local-dev-lib/logger");
8
8
  const config_1 = require("@hubspot/local-dev-lib/config");
9
9
  const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
10
10
  const dependencyManagement_1 = require("../dependencyManagement");
11
+ const npm_1 = require("../npm");
11
12
  const util_1 = __importDefault(require("util"));
12
13
  const fs_1 = __importDefault(require("fs"));
13
14
  const path_1 = __importDefault(require("path"));
@@ -23,7 +24,6 @@ const package_json_1 = __importDefault(require("../../package.json"));
23
24
  const { i18n } = require('../lang');
24
25
  const { uiLink } = require('../ui');
25
26
  const minMajorNodeVersion = 18;
26
- const i18nKey = `lib.doctor`;
27
27
  class Doctor {
28
28
  accountId;
29
29
  diagnosis;
@@ -37,7 +37,7 @@ class Doctor {
37
37
  }
38
38
  async diagnose() {
39
39
  SpinniesManager_1.default.add('runningDiagnostics', {
40
- text: i18n(`${i18nKey}.runningDiagnostics`),
40
+ text: i18n(`lib.doctor.runningDiagnostics`),
41
41
  });
42
42
  this.diagnosticInfo =
43
43
  await this.diagnosticInfoBuilder.generateDiagnosticInfo();
@@ -51,9 +51,10 @@ class Doctor {
51
51
  ...this.performCliConfigChecks(),
52
52
  ...(this.projectConfig?.projectConfig ? this.performProjectChecks() : []),
53
53
  ]);
54
+ this.performDefaultAccountOverrideFileChecks();
54
55
  this.performCliConfigSettingsChecks();
55
56
  SpinniesManager_1.default.succeed('runningDiagnostics', {
56
- text: i18n(`${i18nKey}.diagnosticsComplete`),
57
+ text: i18n(`lib.doctor.diagnosticsComplete`),
57
58
  succeedColor: 'white',
58
59
  });
59
60
  this.diagnosticInfo.diagnosis = this.diagnosis.toString();
@@ -79,8 +80,8 @@ class Doctor {
79
80
  if (!this.diagnosticInfo?.config) {
80
81
  this.diagnosis?.addCLIConfigSection({
81
82
  type: 'error',
82
- message: i18n(`${i18nKey}.diagnosis.cliConfig.noConfigFile`),
83
- secondaryMessaging: i18n(`${i18nKey}.diagnosis.cliConfig.noConfigFileSecondary`, {
83
+ message: i18n(`lib.doctor.diagnosis.cliConfig.noConfigFile`),
84
+ secondaryMessaging: i18n(`lib.doctor.diagnosis.cliConfig.noConfigFileSecondary`, {
84
85
  command: (0, ui_1.uiCommandReference)('hs init'),
85
86
  }),
86
87
  });
@@ -88,31 +89,46 @@ class Doctor {
88
89
  }
89
90
  return [this.checkIfAccessTokenValid()];
90
91
  }
92
+ performDefaultAccountOverrideFileChecks() {
93
+ if (this.diagnosticInfo?.defaultAccountOverrideFile) {
94
+ this.diagnosis?.addDefaultAccountOverrideFileSection({
95
+ type: 'warning',
96
+ message: i18n(`lib.doctor.defaultAccountOverrideFileChecks.overrideActive`, {
97
+ defaultAccountOverrideFile: this.diagnosticInfo.defaultAccountOverrideFile,
98
+ }),
99
+ });
100
+ this.diagnosis?.addDefaultAccountOverrideFileSection({
101
+ type: 'warning',
102
+ message: i18n(`lib.doctor.defaultAccountOverrideFileChecks.overrideAccountId`, {
103
+ overrideAccountId: (0, config_1.getCWDAccountOverride)(),
104
+ }),
105
+ });
106
+ }
107
+ }
91
108
  performCliConfigSettingsChecks() {
92
109
  if (this.diagnosticInfo?.configSettings.httpUseLocalhost) {
93
110
  this.diagnosis?.addCLIConfigSection({
94
111
  type: 'warning',
95
- message: i18n(`${i18nKey}.diagnosis.cliConfig.settings.httpUseLocalhost`),
96
- secondaryMessaging: i18n(`${i18nKey}.diagnosis.cliConfig.settings.httpUseLocalhostSecondary`),
112
+ message: i18n(`lib.doctor.diagnosis.cliConfig.settings.httpUseLocalhost`),
113
+ secondaryMessaging: i18n(`lib.doctor.diagnosis.cliConfig.settings.httpUseLocalhostSecondary`),
97
114
  });
98
115
  }
99
116
  }
100
117
  async checkIfAccessTokenValid() {
101
- const localI18nKey = `${i18nKey}.accountChecks`;
102
118
  try {
103
119
  await (0, personalAccessKey_1.accessTokenForPersonalAccessKey)(this.accountId, true);
104
120
  const pakScopes = new Set(await (0, personalAccessKey_1.scopesOnAccessToken)(this.accountId));
105
121
  const missingScopes = (await (0, personalAccessKey_1.authorizedScopesForPortalAndUser)(this.accountId)).filter((data) => data.userAuthorized && !pakScopes.has(data.scopeGroup.name));
106
122
  this.diagnosis?.addCLIConfigSection({
107
123
  type: 'success',
108
- message: i18n(`${localI18nKey}.active`),
124
+ message: i18n(`lib.doctor.accountChecks.active`),
109
125
  });
110
- const linkToPakUI = uiLink(i18n(`${localI18nKey}.pak.viewScopes`), `${(0, urls_1.getHubSpotWebsiteOrigin)(this.diagnosticInfoBuilder?.env || 'PROD')}/personal-access-key/${this.diagnosticInfo?.account.accountId}`);
126
+ const linkToPakUI = uiLink(i18n(`lib.doctor.accountChecks.pak.viewScopes`), `${(0, urls_1.getHubSpotWebsiteOrigin)(this.diagnosticInfoBuilder?.env || 'PROD')}/personal-access-key/${this.diagnosticInfo?.account.accountId}`);
111
127
  if (missingScopes.length > 0) {
112
128
  this.diagnosis?.addCLIConfigSection({
113
129
  type: 'warning',
114
- message: i18n(`${localI18nKey}.pak.incomplete`),
115
- secondaryMessaging: i18n(`${localI18nKey}.pak.incompleteSecondary`, {
130
+ message: i18n(`lib.doctor.accountChecks.pak.incomplete`),
131
+ secondaryMessaging: i18n(`lib.doctor.accountChecks.pak.incompleteSecondary`, {
116
132
  command: (0, ui_1.uiCommandReference)(`hs auth`),
117
133
  link: linkToPakUI,
118
134
  }),
@@ -121,7 +137,9 @@ class Doctor {
121
137
  else {
122
138
  this.diagnosis?.addCLIConfigSection({
123
139
  type: 'success',
124
- message: i18n(`${localI18nKey}.pak.valid`, { link: linkToPakUI }),
140
+ message: i18n(`lib.doctor.accountChecks.pak.valid`, {
141
+ link: linkToPakUI,
142
+ }),
125
143
  });
126
144
  }
127
145
  }
@@ -139,8 +157,8 @@ class Doctor {
139
157
  if (portalNotActive) {
140
158
  this.diagnosis?.addCLIConfigSection({
141
159
  type: 'error',
142
- message: i18n(`${localI18nKey}.inactive`),
143
- secondaryMessaging: i18n(`${localI18nKey}.inactiveSecondary`, {
160
+ message: i18n(`lib.doctor.accountChecks.inactive`),
161
+ secondaryMessaging: i18n(`lib.doctor.accountChecks.inactiveSecondary`, {
144
162
  command: (0, ui_1.uiCommandReference)(`hs accounts clean`),
145
163
  }),
146
164
  });
@@ -152,12 +170,12 @@ class Doctor {
152
170
  })) {
153
171
  this.diagnosis?.addCLIConfigSection({
154
172
  type: 'success',
155
- message: i18n(`${localI18nKey}.active`),
173
+ message: i18n(`lib.doctor.accountChecks.active`),
156
174
  });
157
175
  this.diagnosis?.addCLIConfigSection({
158
176
  type: 'error',
159
- message: i18n(`${localI18nKey}.pak.invalid`),
160
- secondaryMessaging: i18n(`${localI18nKey}.pak.invalidSecondary`, {
177
+ message: i18n(`lib.doctor.accountChecks.pak.invalid`),
178
+ secondaryMessaging: i18n(`lib.doctor.accountChecks.pak.invalidSecondary`, {
161
179
  command: (0, ui_1.uiCommandReference)(`hs auth`),
162
180
  }),
163
181
  });
@@ -165,17 +183,16 @@ class Doctor {
165
183
  else {
166
184
  this.diagnosis?.addCLIConfigSection({
167
185
  type: 'error',
168
- message: i18n(`${localI18nKey}.unableToDetermine`),
186
+ message: i18n(`lib.doctor.accountChecks.unableToDetermine`),
169
187
  });
170
188
  }
171
189
  }
172
190
  }
173
191
  async checkIfNodeIsInstalled() {
174
- const localI18nKey = `${i18nKey}.nodeChecks`;
175
192
  if (!this.diagnosticInfo?.versions.node) {
176
193
  return this.diagnosis?.addCliSection({
177
194
  type: 'error',
178
- message: i18n(`${localI18nKey}.unableToDetermine`),
195
+ message: i18n(`lib.doctor.nodeChecks.unableToDetermine`),
179
196
  });
180
197
  }
181
198
  const nodeVersion = this.diagnosticInfo?.versions.node?.split('.');
@@ -183,30 +200,29 @@ class Doctor {
183
200
  if (!currentNodeMajor || parseInt(currentNodeMajor) < minMajorNodeVersion) {
184
201
  return this.diagnosis?.addCliSection({
185
202
  type: 'warning',
186
- message: i18n(`${localI18nKey}.minimumNotMet`, {
203
+ message: i18n(`lib.doctor.nodeChecks.minimumNotMet`, {
187
204
  nodeVersion: this.diagnosticInfo?.versions.node,
188
205
  }),
189
206
  });
190
207
  }
191
208
  this.diagnosis?.addCliSection({
192
209
  type: 'success',
193
- message: i18n(`${localI18nKey}.success`, {
210
+ message: i18n(`lib.doctor.nodeChecks.success`, {
194
211
  nodeVersion: this.diagnosticInfo?.versions.node,
195
212
  }),
196
213
  });
197
214
  }
198
215
  async checkIfNpmIsInstalled() {
199
- const localI18nKey = `${i18nKey}.npmChecks`;
200
216
  const npmVersion = this.diagnosticInfo?.versions?.npm;
201
217
  if (!npmVersion) {
202
218
  return this.diagnosis?.addCliSection({
203
219
  type: 'error',
204
- message: i18n(`${localI18nKey}.notInstalled`),
220
+ message: i18n(`lib.doctor.npmChecks.notInstalled`),
205
221
  });
206
222
  }
207
223
  this.diagnosis?.addCliSection({
208
224
  type: 'success',
209
- message: i18n(`${localI18nKey}.installed`, {
225
+ message: i18n(`lib.doctor.npmChecks.installed`, {
210
226
  npmVersion,
211
227
  }),
212
228
  });
@@ -215,17 +231,17 @@ class Doctor {
215
231
  let latestCLIVersion;
216
232
  let nextCliVersion;
217
233
  try {
218
- const { latest, next } = await (0, dependencyManagement_1.getLatestCliVersion)();
234
+ const { latest, next } = await (0, npm_1.getLatestCliVersion)();
219
235
  latestCLIVersion = latest;
220
236
  nextCliVersion = next;
221
237
  }
222
238
  catch (e) {
223
239
  return this.diagnosis?.addCliSection({
224
240
  type: 'error',
225
- message: i18n(`${i18nKey}.hsChecks.unableToDetermine`),
226
- secondaryMessaging: i18n(`${i18nKey}.hsChecks.unableToDetermineSecondary`, {
241
+ message: i18n(`lib.doctor.hsChecks.unableToDetermine`),
242
+ secondaryMessaging: i18n(`lib.doctor.hsChecks.unableToDetermineSecondary`, {
227
243
  command: (0, ui_1.uiCommandReference)(`hs --version`),
228
- link: uiLink(i18n(`${i18nKey}.hsChecks.unableToDetermineSecondaryLink`), `https://www.npmjs.com/package/${package_json_1.default.name}?activeTab=versions`),
244
+ link: uiLink(i18n(`lib.doctor.hsChecks.unableToDetermineSecondaryLink`), `https://www.npmjs.com/package/${package_json_1.default.name}?activeTab=versions`),
229
245
  }),
230
246
  });
231
247
  }
@@ -233,10 +249,10 @@ class Doctor {
233
249
  const onNextTag = package_json_1.default.version.includes('beta');
234
250
  this.diagnosis?.addCliSection({
235
251
  type: 'warning',
236
- message: i18n(`${i18nKey}.hsChecks.notLatest`, {
252
+ message: i18n(`lib.doctor.hsChecks.notLatest`, {
237
253
  hsVersion: package_json_1.default.version,
238
254
  }),
239
- secondaryMessaging: i18n(`${i18nKey}.hsChecks.notLatestSecondary`, {
255
+ secondaryMessaging: i18n(`lib.doctor.hsChecks.notLatestSecondary`, {
240
256
  hsVersion: onNextTag ? nextCliVersion : latestCLIVersion,
241
257
  command: (0, ui_1.uiCommandReference)(`npm install -g ${package_json_1.default.name}`),
242
258
  }),
@@ -245,15 +261,14 @@ class Doctor {
245
261
  else {
246
262
  this.diagnosis?.addCliSection({
247
263
  type: 'success',
248
- message: i18n(`${i18nKey}.hsChecks.latest`, {
249
- hsVersion: latestCLIVersion,
264
+ message: i18n(`lib.doctor.hsChecks.latest`, {
265
+ hsVersion: package_json_1.default.version,
250
266
  }),
251
267
  });
252
268
  }
253
269
  }
254
270
  async checkIfNpmInstallRequired() {
255
271
  let foundError = false;
256
- const localI18nKey = `${i18nKey}.projectDependenciesChecks`;
257
272
  for (const packageFile of this.diagnosticInfo?.packageFiles || []) {
258
273
  const packageDirName = path_1.default.dirname(packageFile);
259
274
  try {
@@ -262,10 +277,10 @@ class Doctor {
262
277
  foundError = true;
263
278
  this.diagnosis?.addProjectSection({
264
279
  type: 'warning',
265
- message: i18n(`${localI18nKey}.missingDependencies`, {
280
+ message: i18n(`lib.doctor.projectDependenciesChecks.missingDependencies`, {
266
281
  dir: packageDirName,
267
282
  }),
268
- secondaryMessaging: i18n(`${localI18nKey}.missingDependenciesSecondary`, {
283
+ secondaryMessaging: i18n(`lib.doctor.projectDependenciesChecks.missingDependenciesSecondary`, {
269
284
  command: (0, ui_1.uiCommandReference)('hs project install-deps'),
270
285
  }),
271
286
  });
@@ -276,7 +291,7 @@ class Doctor {
276
291
  if (!(await this.isValidJsonFile(packageFile))) {
277
292
  this.diagnosis?.addProjectSection({
278
293
  type: 'error',
279
- message: i18n(`${i18nKey}.files.invalidJson`, {
294
+ message: i18n(`lib.doctor.files.invalidJson`, {
280
295
  filename: packageFile,
281
296
  }),
282
297
  });
@@ -284,7 +299,7 @@ class Doctor {
284
299
  else {
285
300
  this.diagnosis?.addProjectSection({
286
301
  type: 'error',
287
- message: i18n(`${localI18nKey}.unableToDetermine`, {
302
+ message: i18n(`lib.doctor.projectDependenciesChecks.unableToDetermine`, {
288
303
  dir: packageDirName,
289
304
  }),
290
305
  });
@@ -295,7 +310,7 @@ class Doctor {
295
310
  if (!foundError) {
296
311
  this.diagnosis?.addProjectSection({
297
312
  type: 'success',
298
- message: i18n(`${localI18nKey}.success`),
313
+ message: i18n(`lib.doctor.projectDependenciesChecks.success`),
299
314
  });
300
315
  }
301
316
  }
@@ -318,7 +333,7 @@ class Doctor {
318
333
  foundError = true;
319
334
  this.diagnosis?.addProjectSection({
320
335
  type: 'error',
321
- message: i18n(`${i18nKey}.files.invalidJson`, {
336
+ message: i18n(`lib.doctor.files.invalidJson`, {
322
337
  filename: jsonFile,
323
338
  }),
324
339
  });
@@ -327,16 +342,15 @@ class Doctor {
327
342
  if (!foundError) {
328
343
  this.diagnosis?.addProjectSection({
329
344
  type: 'success',
330
- message: i18n(`${i18nKey}.files.validJson`),
345
+ message: i18n(`lib.doctor.files.validJson`),
331
346
  });
332
347
  }
333
348
  }
334
349
  async checkIfPortsAreAvailable() {
335
- const localI18nKey = `${i18nKey}.port`;
336
350
  if (await (0, portManager_1.isPortManagerPortAvailable)()) {
337
351
  this.diagnosis?.addProjectSection({
338
352
  type: 'success',
339
- message: i18n(`${localI18nKey}.available`, {
353
+ message: i18n(`lib.doctor.port.available`, {
340
354
  port: ports_1.PORT_MANAGER_SERVER_PORT,
341
355
  }),
342
356
  });
@@ -344,10 +358,10 @@ class Doctor {
344
358
  }
345
359
  this.diagnosis?.addProjectSection({
346
360
  type: 'warning',
347
- message: i18n(`${localI18nKey}.inUse`, {
361
+ message: i18n(`lib.doctor.port.inUse`, {
348
362
  port: ports_1.PORT_MANAGER_SERVER_PORT,
349
363
  }),
350
- secondaryMessaging: i18n(`${localI18nKey}.inUseSecondary`, {
364
+ secondaryMessaging: i18n(`lib.doctor.port.inUseSecondary`, {
351
365
  command: (0, ui_1.uiCommandReference)('hs project dev'),
352
366
  }),
353
367
  });
@@ -13,9 +13,12 @@ const suppressError_1 = require("./suppressError");
13
13
  const lang_1 = require("../lang");
14
14
  const util_1 = __importDefault(require("util"));
15
15
  const ui_1 = require("../ui");
16
- const i18nKey = 'lib.errorHandlers.index';
17
16
  function logError(error, context) {
18
17
  debugError(error, context);
18
+ if (isProjectValidationError(error)) {
19
+ logger_1.logger.error(error.message);
20
+ return;
21
+ }
19
22
  if ((0, suppressError_1.shouldSuppressError)(error, context)) {
20
23
  return;
21
24
  }
@@ -41,21 +44,21 @@ function logError(error, context) {
41
44
  }
42
45
  else {
43
46
  // Unknown errors
44
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.unknownErrorOccurred`));
47
+ logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.index.unknownErrorOccurred`));
45
48
  }
46
49
  if ((0, index_1.isHubSpotHttpError)(error) && error.code === 'ETIMEDOUT') {
47
50
  const config = (0, config_1.getConfig)();
48
51
  const defaultTimeout = config?.httpTimeout;
49
52
  // Timeout was caused by the default timeout
50
53
  if (error.timeout && defaultTimeout === error.timeout) {
51
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.configTimeoutErrorOccurred`, {
54
+ logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.index.configTimeoutErrorOccurred`, {
52
55
  timeout: error.timeout,
53
56
  configSetCommand: (0, ui_1.uiCommandReference)('hs config set'),
54
57
  }));
55
58
  }
56
59
  // Timeout was caused by a custom timeout set by the CLI or LDL
57
60
  else {
58
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.genericTimeoutErrorOccurred`));
61
+ logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.index.genericTimeoutErrorOccurred`));
59
62
  }
60
63
  }
61
64
  }
@@ -64,15 +67,15 @@ function debugError(error, context) {
64
67
  logger_1.logger.debug(error.toString());
65
68
  }
66
69
  else {
67
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.errorOccurred`, { error: String(error) }));
70
+ logger_1.logger.debug((0, lang_1.i18n)(`lib.errorHandlers.index.errorOccurred`, { error: String(error) }));
68
71
  }
69
72
  if (error instanceof Error && error.cause && !(0, index_1.isHubSpotHttpError)(error)) {
70
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.errorCause`, {
73
+ logger_1.logger.debug((0, lang_1.i18n)(`lib.errorHandlers.index.errorCause`, {
71
74
  cause: util_1.default.inspect(error.cause, false, null, true),
72
75
  }));
73
76
  }
74
77
  if (context) {
75
- logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.errorContext`, {
78
+ logger_1.logger.debug((0, lang_1.i18n)(`lib.errorHandlers.index.errorContext`, {
76
79
  context: util_1.default.inspect(context, false, null, true),
77
80
  }));
78
81
  }
@@ -90,6 +93,9 @@ class ApiErrorContext {
90
93
  }
91
94
  }
92
95
  exports.ApiErrorContext = ApiErrorContext;
96
+ function isProjectValidationError(error) {
97
+ return error instanceof Error && error.name === 'ProjectValidationError';
98
+ }
93
99
  function isErrorWithMessageOrReason(error) {
94
100
  return (typeof error === 'object' &&
95
101
  error !== null &&
@@ -6,41 +6,33 @@ const logger_1 = require("@hubspot/local-dev-lib/logger");
6
6
  const constants_1 = require("../constants");
7
7
  const lang_1 = require("../lang");
8
8
  const ui_1 = require("../ui");
9
- const i18nKey = 'lib.errorHandlers.suppressErrors';
10
9
  function createPlatformVersionError(err, subCategory) {
11
10
  let translationKey = 'unspecifiedPlatformVersion';
12
11
  let platformVersion = 'unspecified platformVersion';
13
- const errorContext = err.data.context;
14
- switch (subCategory) {
15
- case constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED:
16
- translationKey = 'platformVersionRetired';
17
- if (errorContext && errorContext[subCategory]) {
18
- platformVersion = errorContext[subCategory];
19
- }
20
- break;
21
- case constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST:
22
- translationKey = 'nonExistentPlatformVersion';
23
- if (errorContext && errorContext[subCategory]) {
24
- platformVersion = errorContext[subCategory];
25
- }
26
- break;
27
- default:
28
- break;
12
+ const errorContext = err?.data?.context;
13
+ if (subCategory === constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED) {
14
+ platformVersion = errorContext?.RETIRED_PLATFORM_VERSION ?? platformVersion;
15
+ translationKey = 'platformVersionRetired';
16
+ }
17
+ else if (subCategory ===
18
+ constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST) {
19
+ platformVersion = errorContext?.PLATFORM_VERSION ?? platformVersion;
20
+ translationKey = 'nonExistentPlatformVersion';
29
21
  }
30
22
  (0, ui_1.uiLine)();
31
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.platformVersionErrors.header`));
32
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.platformVersionErrors.${translationKey}`, {
23
+ logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.header`));
24
+ logger_1.logger.log((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.${translationKey}`, {
33
25
  platformVersion,
34
26
  }));
35
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.platformVersionErrors.updateProject`));
36
- logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.platformVersionErrors.betaLink`, {
37
- docsLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`${i18nKey}.platformVersionErrors.docsLink`), 'https://developers.hubspot.com/docs/platform/platform-versioning'),
27
+ logger_1.logger.log((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.updateProject`));
28
+ logger_1.logger.log((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.betaLink`, {
29
+ docsLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.platformVersionErrors.docsLink`), 'https://developers.hubspot.com/docs/platform/platform-versioning'),
38
30
  }));
39
31
  (0, ui_1.uiLine)();
40
32
  }
41
33
  function shouldSuppressError(err, context) {
42
34
  if ((0, index_1.isMissingScopeError)(err)) {
43
- logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.missingScopeError`, {
35
+ logger_1.logger.error((0, lang_1.i18n)(`lib.errorHandlers.suppressErrors.missingScopeError`, {
44
36
  accountName: context?.accountId
45
37
  ? (0, ui_1.uiAccountDescription)(context.accountId)
46
38
  : '',
@@ -52,19 +44,19 @@ function shouldSuppressError(err, context) {
52
44
  if ((0, index_1.isSpecifiedError)(err, {
53
45
  subCategory: constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED,
54
46
  })) {
55
- createPlatformVersionError(err.data, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED);
47
+ createPlatformVersionError(err, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_NOT_SPECIFIED);
56
48
  return true;
57
49
  }
58
50
  if ((0, index_1.isSpecifiedError)(err, {
59
51
  subCategory: constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED,
60
52
  })) {
61
- createPlatformVersionError(err.data, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED);
53
+ createPlatformVersionError(err, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_RETIRED);
62
54
  return true;
63
55
  }
64
56
  if ((0, index_1.isSpecifiedError)(err, {
65
57
  subCategory: constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST,
66
58
  })) {
67
- createPlatformVersionError(err.data, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST);
59
+ createPlatformVersionError(err, constants_1.PLATFORM_VERSION_ERROR_TYPES.PLATFORM_VERSION_SPECIFIED_DOES_NOT_EXIST);
68
60
  return true;
69
61
  }
70
62
  return false;
@@ -1,2 +1,2 @@
1
- export declare function resolveLocalPath(filepath: string): string;
1
+ export declare function resolveLocalPath(filepath?: string): string;
2
2
  export declare function isPathFolder(path: string): boolean;