@hubspot/cli 8.0.10-experimental.6 → 8.0.10-experimental.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/api/migrate.d.ts +77 -0
  2. package/api/migrate.js +55 -0
  3. package/bin/cli.d.ts +2 -0
  4. package/bin/cli.js +136 -0
  5. package/bin/hs.d.ts +2 -0
  6. package/bin/hscms.d.ts +2 -0
  7. package/bin/silenceErrors.d.ts +2 -0
  8. package/bin/silenceErrors.js +11 -0
  9. package/commands/account/auth.d.ts +8 -0
  10. package/commands/account/auth.js +102 -0
  11. package/commands/account/clean.d.ts +6 -0
  12. package/commands/account/clean.js +125 -0
  13. package/commands/account/createOverride.d.ts +6 -0
  14. package/commands/account/createOverride.js +93 -0
  15. package/commands/account/info.d.ts +4 -0
  16. package/commands/account/info.js +75 -0
  17. package/commands/account/list.d.ts +4 -0
  18. package/commands/account/list.js +107 -0
  19. package/commands/account/remove.d.ts +6 -0
  20. package/commands/account/remove.js +87 -0
  21. package/commands/account/removeOverride.d.ts +6 -0
  22. package/commands/account/removeOverride.js +71 -0
  23. package/commands/account/rename.d.ts +7 -0
  24. package/commands/account/rename.js +51 -0
  25. package/commands/account/use.d.ts +6 -0
  26. package/commands/account/use.js +93 -0
  27. package/commands/account.d.ts +3 -0
  28. package/commands/account.js +35 -0
  29. package/commands/app/migrate.d.ts +6 -0
  30. package/commands/app/migrate.js +96 -0
  31. package/commands/app/secret/add.d.ts +7 -0
  32. package/commands/app/secret/add.js +63 -0
  33. package/commands/app/secret/delete.d.ts +8 -0
  34. package/commands/app/secret/delete.js +86 -0
  35. package/commands/app/secret/list.d.ts +6 -0
  36. package/commands/app/secret/list.js +63 -0
  37. package/commands/app/secret/update.d.ts +7 -0
  38. package/commands/app/secret/update.js +76 -0
  39. package/commands/app/secret.d.ts +3 -0
  40. package/commands/app/secret.js +26 -0
  41. package/commands/app.d.ts +3 -0
  42. package/commands/app.js +18 -0
  43. package/commands/auth.d.ts +9 -0
  44. package/commands/auth.js +190 -0
  45. package/commands/cms/app/create.d.ts +9 -0
  46. package/commands/cms/app/create.js +81 -0
  47. package/commands/cms/app.d.ts +3 -0
  48. package/commands/cms/app.js +17 -0
  49. package/commands/cms/convertFields.d.ts +7 -0
  50. package/commands/cms/convertFields.js +97 -0
  51. package/commands/cms/delete.d.ts +6 -0
  52. package/commands/cms/delete.js +43 -0
  53. package/commands/cms/fetch.d.ts +12 -0
  54. package/commands/cms/fetch.js +80 -0
  55. package/commands/cms/function/create.d.ts +12 -0
  56. package/commands/cms/function/create.js +84 -0
  57. package/commands/cms/function/deploy.d.ts +6 -0
  58. package/commands/cms/function/deploy.js +89 -0
  59. package/commands/cms/function/list.d.ts +6 -0
  60. package/commands/cms/function/list.js +59 -0
  61. package/commands/cms/function/logs.d.ts +10 -0
  62. package/commands/cms/function/logs.js +136 -0
  63. package/commands/cms/function/server.d.ts +10 -0
  64. package/commands/cms/function/server.js +69 -0
  65. package/commands/cms/function.d.ts +3 -0
  66. package/commands/cms/function.js +27 -0
  67. package/commands/cms/getReactModule.d.ts +7 -0
  68. package/commands/cms/getReactModule.js +77 -0
  69. package/commands/cms/lighthouseScore.d.ts +8 -0
  70. package/commands/cms/lighthouseScore.js +281 -0
  71. package/commands/cms/lint.d.ts +6 -0
  72. package/commands/cms/lint.js +83 -0
  73. package/commands/cms/list.d.ts +6 -0
  74. package/commands/cms/list.js +96 -0
  75. package/commands/cms/module/create.d.ts +11 -0
  76. package/commands/cms/module/create.js +84 -0
  77. package/commands/cms/module/marketplace-validate.d.ts +6 -0
  78. package/commands/cms/module/marketplace-validate.js +62 -0
  79. package/commands/cms/module.d.ts +3 -0
  80. package/commands/cms/module.js +21 -0
  81. package/commands/cms/mv.d.ts +7 -0
  82. package/commands/cms/mv.js +60 -0
  83. package/commands/cms/template/create.d.ts +9 -0
  84. package/commands/cms/template/create.js +72 -0
  85. package/commands/cms/template.d.ts +3 -0
  86. package/commands/cms/template.js +17 -0
  87. package/commands/cms/theme/create.d.ts +6 -0
  88. package/commands/cms/theme/create.js +58 -0
  89. package/commands/cms/theme/generate-selectors.d.ts +6 -0
  90. package/commands/cms/theme/generate-selectors.js +171 -0
  91. package/commands/cms/theme/marketplace-validate.d.ts +6 -0
  92. package/commands/cms/theme/marketplace-validate.js +64 -0
  93. package/commands/cms/theme/preview.d.ts +11 -0
  94. package/commands/cms/theme/preview.js +126 -0
  95. package/commands/cms/theme.d.ts +3 -0
  96. package/commands/cms/theme.js +25 -0
  97. package/commands/cms/upload.d.ts +12 -0
  98. package/commands/cms/upload.js +212 -0
  99. package/commands/cms/watch.d.ts +13 -0
  100. package/commands/cms/watch.js +132 -0
  101. package/commands/cms/webpack/create.d.ts +6 -0
  102. package/commands/cms/webpack/create.js +58 -0
  103. package/commands/cms/webpack.d.ts +3 -0
  104. package/commands/cms/webpack.js +17 -0
  105. package/commands/cms.d.ts +3 -0
  106. package/commands/cms.js +49 -0
  107. package/commands/completion.d.ts +3 -0
  108. package/commands/completion.js +27 -0
  109. package/commands/config/migrate.d.ts +6 -0
  110. package/commands/config/migrate.js +70 -0
  111. package/commands/config/set.d.ts +11 -0
  112. package/commands/config/set.js +141 -0
  113. package/commands/config.d.ts +3 -0
  114. package/commands/config.js +18 -0
  115. package/commands/customObject/create.d.ts +7 -0
  116. package/commands/customObject/create.js +64 -0
  117. package/commands/customObject/createSchema.d.ts +6 -0
  118. package/commands/customObject/createSchema.js +55 -0
  119. package/commands/customObject/deleteSchema.d.ts +7 -0
  120. package/commands/customObject/deleteSchema.js +69 -0
  121. package/commands/customObject/fetchAllSchemas.d.ts +6 -0
  122. package/commands/customObject/fetchAllSchemas.js +57 -0
  123. package/commands/customObject/fetchSchema.d.ts +7 -0
  124. package/commands/customObject/fetchSchema.js +67 -0
  125. package/commands/customObject/listSchemas.d.ts +4 -0
  126. package/commands/customObject/listSchemas.js +35 -0
  127. package/commands/customObject/updateSchema.d.ts +7 -0
  128. package/commands/customObject/updateSchema.js +70 -0
  129. package/commands/customObject.d.ts +3 -0
  130. package/commands/customObject.js +38 -0
  131. package/commands/doctor.d.ts +6 -0
  132. package/commands/doctor.js +70 -0
  133. package/commands/feedback.d.ts +4 -0
  134. package/commands/feedback.js +32 -0
  135. package/commands/filemanager/fetch.d.ts +8 -0
  136. package/commands/filemanager/fetch.js +58 -0
  137. package/commands/filemanager/upload.d.ts +7 -0
  138. package/commands/filemanager/upload.js +97 -0
  139. package/commands/filemanager.d.ts +3 -0
  140. package/commands/filemanager.js +18 -0
  141. package/commands/getStarted.d.ts +8 -0
  142. package/commands/getStarted.js +322 -0
  143. package/commands/hubdb/clear.d.ts +7 -0
  144. package/commands/hubdb/clear.js +58 -0
  145. package/commands/hubdb/create.d.ts +6 -0
  146. package/commands/hubdb/create.js +74 -0
  147. package/commands/hubdb/delete.d.ts +6 -0
  148. package/commands/hubdb/delete.js +68 -0
  149. package/commands/hubdb/fetch.d.ts +7 -0
  150. package/commands/hubdb/fetch.js +55 -0
  151. package/commands/hubdb/list.d.ts +4 -0
  152. package/commands/hubdb/list.js +79 -0
  153. package/commands/hubdb.d.ts +5 -0
  154. package/commands/hubdb.js +27 -0
  155. package/commands/init.d.ts +8 -0
  156. package/commands/init.js +200 -0
  157. package/commands/mcp/setup.d.ts +6 -0
  158. package/commands/mcp/setup.js +36 -0
  159. package/commands/mcp/start.d.ts +6 -0
  160. package/commands/mcp/start.js +72 -0
  161. package/commands/mcp.d.ts +3 -0
  162. package/commands/mcp.js +20 -0
  163. package/commands/open.d.ts +7 -0
  164. package/commands/open.js +70 -0
  165. package/commands/project/add.d.ts +10 -0
  166. package/commands/project/add.js +79 -0
  167. package/commands/project/cloneApp.d.ts +1 -0
  168. package/commands/project/cloneApp.js +1 -0
  169. package/commands/project/create.d.ts +4 -0
  170. package/commands/project/create.js +175 -0
  171. package/commands/project/deploy.d.ts +11 -0
  172. package/commands/project/deploy.js +196 -0
  173. package/commands/project/dev/deprecatedFlow.d.ts +11 -0
  174. package/commands/project/dev/deprecatedFlow.js +135 -0
  175. package/commands/project/dev/index.d.ts +5 -0
  176. package/commands/project/dev/index.js +174 -0
  177. package/commands/project/dev/unifiedFlow.d.ts +14 -0
  178. package/commands/project/dev/unifiedFlow.js +162 -0
  179. package/commands/project/download.d.ts +8 -0
  180. package/commands/project/download.js +95 -0
  181. package/commands/project/installDeps.d.ts +6 -0
  182. package/commands/project/installDeps.js +80 -0
  183. package/commands/project/lint.d.ts +6 -0
  184. package/commands/project/lint.js +178 -0
  185. package/commands/project/list.d.ts +4 -0
  186. package/commands/project/list.js +62 -0
  187. package/commands/project/listBuilds.d.ts +7 -0
  188. package/commands/project/listBuilds.js +120 -0
  189. package/commands/project/logs.d.ts +10 -0
  190. package/commands/project/logs.js +119 -0
  191. package/commands/project/migrate.d.ts +7 -0
  192. package/commands/project/migrate.js +91 -0
  193. package/commands/project/open.d.ts +6 -0
  194. package/commands/project/open.js +61 -0
  195. package/commands/project/profile/add.d.ts +7 -0
  196. package/commands/project/profile/add.js +203 -0
  197. package/commands/project/profile/delete.d.ts +6 -0
  198. package/commands/project/profile/delete.js +129 -0
  199. package/commands/project/profile.d.ts +3 -0
  200. package/commands/project/profile.js +19 -0
  201. package/commands/project/updateDeps.d.ts +6 -0
  202. package/commands/project/updateDeps.js +80 -0
  203. package/commands/project/upload.d.ts +10 -0
  204. package/commands/project/upload.js +145 -0
  205. package/commands/project/validate.d.ts +6 -0
  206. package/commands/project/validate.js +156 -0
  207. package/commands/project/watch.d.ts +6 -0
  208. package/commands/project/watch.js +152 -0
  209. package/commands/project.d.ts +3 -0
  210. package/commands/project.js +72 -0
  211. package/commands/sandbox/create.d.ts +8 -0
  212. package/commands/sandbox/create.js +156 -0
  213. package/commands/sandbox/delete.d.ts +7 -0
  214. package/commands/sandbox/delete.js +189 -0
  215. package/commands/sandbox.d.ts +3 -0
  216. package/commands/sandbox.js +19 -0
  217. package/commands/secret/addSecret.d.ts +6 -0
  218. package/commands/secret/addSecret.js +58 -0
  219. package/commands/secret/deleteSecret.d.ts +7 -0
  220. package/commands/secret/deleteSecret.js +71 -0
  221. package/commands/secret/listSecret.d.ts +4 -0
  222. package/commands/secret/listSecret.js +43 -0
  223. package/commands/secret/updateSecret.d.ts +6 -0
  224. package/commands/secret/updateSecret.js +57 -0
  225. package/commands/secret.d.ts +3 -0
  226. package/commands/secret.js +25 -0
  227. package/commands/testAccount/create.d.ts +15 -0
  228. package/commands/testAccount/create.js +232 -0
  229. package/commands/testAccount/createConfig.d.ts +8 -0
  230. package/commands/testAccount/createConfig.js +92 -0
  231. package/commands/testAccount/delete.d.ts +7 -0
  232. package/commands/testAccount/delete.js +188 -0
  233. package/commands/testAccount/importData.d.ts +9 -0
  234. package/commands/testAccount/importData.js +61 -0
  235. package/commands/testAccount.d.ts +3 -0
  236. package/commands/testAccount.js +25 -0
  237. package/commands/upgrade.d.ts +8 -0
  238. package/commands/upgrade.js +119 -0
  239. package/lang/en.d.ts +3990 -0
  240. package/lang/en.js +4013 -0
  241. package/lib/CLIWebSocketServer.d.ts +28 -0
  242. package/lib/CLIWebSocketServer.js +91 -0
  243. package/lib/accountAuth.d.ts +10 -0
  244. package/lib/accountAuth.js +109 -0
  245. package/lib/accountTypes.d.ts +9 -0
  246. package/lib/accountTypes.js +41 -0
  247. package/lib/app/migrate.d.ts +44 -0
  248. package/lib/app/migrate.js +389 -0
  249. package/lib/app/urls.d.ts +17 -0
  250. package/lib/app/urls.js +16 -0
  251. package/lib/buildAccount.d.ts +15 -0
  252. package/lib/buildAccount.js +184 -0
  253. package/lib/cliUpgradeUtils.d.ts +22 -0
  254. package/lib/cliUpgradeUtils.js +62 -0
  255. package/lib/cmsAssets/api-sample.d.ts +3 -0
  256. package/lib/cmsAssets/api-sample.js +60 -0
  257. package/lib/cmsAssets/app.d.ts +3 -0
  258. package/lib/cmsAssets/app.js +12 -0
  259. package/lib/cmsAssets/function.d.ts +3 -0
  260. package/lib/cmsAssets/function.js +11 -0
  261. package/lib/cmsAssets/index.d.ts +5 -0
  262. package/lib/cmsAssets/index.js +21 -0
  263. package/lib/cmsAssets/module.d.ts +3 -0
  264. package/lib/cmsAssets/module.js +20 -0
  265. package/lib/cmsAssets/react-app.d.ts +3 -0
  266. package/lib/cmsAssets/react-app.js +12 -0
  267. package/lib/cmsAssets/template.d.ts +3 -0
  268. package/lib/cmsAssets/template.js +20 -0
  269. package/lib/cmsAssets/vue-app.d.ts +3 -0
  270. package/lib/cmsAssets/vue-app.js +12 -0
  271. package/lib/cmsAssets/webpack-serverless.d.ts +3 -0
  272. package/lib/cmsAssets/webpack-serverless.js +12 -0
  273. package/lib/cmsAssets/website-theme.d.ts +3 -0
  274. package/lib/cmsAssets/website-theme.js +19 -0
  275. package/lib/commandSuggestion.d.ts +3 -0
  276. package/lib/commandSuggestion.js +39 -0
  277. package/lib/commonOpts.d.ts +25 -0
  278. package/lib/commonOpts.js +181 -0
  279. package/lib/configMigrate.d.ts +2 -0
  280. package/lib/configMigrate.js +182 -0
  281. package/lib/configOptions.d.ts +21 -0
  282. package/lib/configOptions.js +111 -0
  283. package/lib/constants.d.ts +145 -0
  284. package/lib/constants.js +146 -0
  285. package/lib/customObject.d.ts +3 -0
  286. package/lib/customObject.js +11 -0
  287. package/lib/dependencyManagement.d.ts +21 -0
  288. package/lib/dependencyManagement.js +243 -0
  289. package/lib/developerTestAccounts.d.ts +6 -0
  290. package/lib/developerTestAccounts.js +66 -0
  291. package/lib/doctor/Diagnosis.d.ts +27 -0
  292. package/lib/doctor/Diagnosis.js +113 -0
  293. package/lib/doctor/DiagnosticInfoBuilder.d.ts +69 -0
  294. package/lib/doctor/DiagnosticInfoBuilder.js +169 -0
  295. package/lib/doctor/Doctor.d.ts +35 -0
  296. package/lib/doctor/Doctor.js +566 -0
  297. package/lib/enums/exitCodes.d.ts +5 -0
  298. package/lib/enums/exitCodes.js +10 -0
  299. package/lib/errorHandlers/index.d.ts +19 -0
  300. package/lib/errorHandlers/index.js +99 -0
  301. package/lib/errorHandlers/suppressError.d.ts +2 -0
  302. package/lib/errorHandlers/suppressError.js +53 -0
  303. package/lib/errors/ProjectErrors.d.ts +15 -0
  304. package/lib/errors/ProjectErrors.js +30 -0
  305. package/lib/errors/ProjectValidationError.d.ts +4 -0
  306. package/lib/errors/ProjectValidationError.js +9 -0
  307. package/lib/errors/PromptExitError.d.ts +4 -0
  308. package/lib/errors/PromptExitError.js +8 -0
  309. package/lib/filesystem.d.ts +2 -0
  310. package/lib/filesystem.js +19 -0
  311. package/lib/generateSelectors.d.ts +20 -0
  312. package/lib/generateSelectors.js +110 -0
  313. package/lib/getStarted/getStartedV2.d.ts +7 -0
  314. package/lib/getStarted/getStartedV2.js +18 -0
  315. package/lib/getStartedV2Actions.d.ts +50 -0
  316. package/lib/getStartedV2Actions.js +199 -0
  317. package/lib/hasFeature.d.ts +4 -0
  318. package/lib/hasFeature.js +18 -0
  319. package/lib/http.d.ts +1 -0
  320. package/lib/http.js +28 -0
  321. package/lib/importData.d.ts +3 -0
  322. package/lib/importData.js +51 -0
  323. package/lib/interpolation.d.ts +7 -0
  324. package/lib/interpolation.js +84 -0
  325. package/lib/jsonLoader.d.ts +14 -0
  326. package/lib/jsonLoader.js +60 -0
  327. package/lib/links.d.ts +11 -0
  328. package/lib/links.js +107 -0
  329. package/lib/marketplaceValidate.d.ts +16 -0
  330. package/lib/marketplaceValidate.js +88 -0
  331. package/lib/mcp/setup.d.ts +17 -0
  332. package/lib/mcp/setup.js +345 -0
  333. package/lib/middleware/autoUpdateMiddleware.d.ts +4 -0
  334. package/lib/middleware/autoUpdateMiddleware.js +105 -0
  335. package/lib/middleware/commandTargetingUtils.d.ts +8 -0
  336. package/lib/middleware/commandTargetingUtils.js +76 -0
  337. package/lib/middleware/configMiddleware.d.ts +15 -0
  338. package/lib/middleware/configMiddleware.js +93 -0
  339. package/lib/middleware/fireAlarmMiddleware.d.ts +4 -0
  340. package/lib/middleware/fireAlarmMiddleware.js +118 -0
  341. package/lib/middleware/gitMiddleware.d.ts +2 -0
  342. package/lib/middleware/gitMiddleware.js +21 -0
  343. package/lib/middleware/requestMiddleware.d.ts +1 -0
  344. package/lib/middleware/requestMiddleware.js +5 -0
  345. package/lib/middleware/spinniesMiddleware.d.ts +1 -0
  346. package/lib/middleware/spinniesMiddleware.js +4 -0
  347. package/lib/middleware/usageTrackingMiddleware.d.ts +13 -0
  348. package/lib/middleware/usageTrackingMiddleware.js +16 -0
  349. package/lib/middleware/yargsChecksMiddleware.d.ts +4 -0
  350. package/lib/middleware/yargsChecksMiddleware.js +18 -0
  351. package/lib/npm/npmCli.d.ts +17 -0
  352. package/lib/npm/npmCli.js +59 -0
  353. package/lib/npm/packageJson.d.ts +24 -0
  354. package/lib/npm/packageJson.js +102 -0
  355. package/lib/npm/workspaces.d.ts +12 -0
  356. package/lib/npm/workspaces.js +48 -0
  357. package/lib/oauth.d.ts +2 -0
  358. package/lib/oauth.js +93 -0
  359. package/lib/parsing.d.ts +1 -0
  360. package/lib/parsing.js +8 -0
  361. package/lib/polling.d.ts +21 -0
  362. package/lib/polling.js +48 -0
  363. package/lib/process.d.ts +13 -0
  364. package/lib/process.js +56 -0
  365. package/lib/projects/ProjectLogsManager.d.ts +29 -0
  366. package/lib/projects/ProjectLogsManager.js +155 -0
  367. package/lib/projects/add/legacyAddComponent.d.ts +5 -0
  368. package/lib/projects/add/legacyAddComponent.js +46 -0
  369. package/lib/projects/add/v2AddComponent.d.ts +9 -0
  370. package/lib/projects/add/v2AddComponent.js +111 -0
  371. package/lib/projects/components.d.ts +16 -0
  372. package/lib/projects/components.js +252 -0
  373. package/lib/projects/config.d.ts +9 -0
  374. package/lib/projects/config.js +73 -0
  375. package/lib/projects/create/index.d.ts +24 -0
  376. package/lib/projects/create/index.js +33 -0
  377. package/lib/projects/create/legacy.d.ts +6 -0
  378. package/lib/projects/create/legacy.js +48 -0
  379. package/lib/projects/create/v2.d.ts +26 -0
  380. package/lib/projects/create/v2.js +158 -0
  381. package/lib/projects/deploy.d.ts +13 -0
  382. package/lib/projects/deploy.js +76 -0
  383. package/lib/projects/ensureProjectExists.d.ts +11 -0
  384. package/lib/projects/ensureProjectExists.js +89 -0
  385. package/lib/projects/localDev/AppDevModeInterface.d.ts +41 -0
  386. package/lib/projects/localDev/AppDevModeInterface.js +337 -0
  387. package/lib/projects/localDev/DevServerManager.d.ts +21 -0
  388. package/lib/projects/localDev/DevServerManager.js +64 -0
  389. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +40 -0
  390. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +128 -0
  391. package/lib/projects/localDev/DevSessionManager.d.ts +18 -0
  392. package/lib/projects/localDev/DevSessionManager.js +95 -0
  393. package/lib/projects/localDev/LocalDevLogger.d.ts +34 -0
  394. package/lib/projects/localDev/LocalDevLogger.js +178 -0
  395. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +59 -0
  396. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +387 -0
  397. package/lib/projects/localDev/LocalDevProcess.d.ts +39 -0
  398. package/lib/projects/localDev/LocalDevProcess.js +277 -0
  399. package/lib/projects/localDev/LocalDevState.d.ts +63 -0
  400. package/lib/projects/localDev/LocalDevState.js +139 -0
  401. package/lib/projects/localDev/LocalDevWatcher.d.ts +10 -0
  402. package/lib/projects/localDev/LocalDevWatcher.js +48 -0
  403. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +21 -0
  404. package/lib/projects/localDev/LocalDevWebsocketServer.js +169 -0
  405. package/lib/projects/localDev/UIExtensionsDevModeInterface.d.ts +13 -0
  406. package/lib/projects/localDev/UIExtensionsDevModeInterface.js +37 -0
  407. package/lib/projects/localDev/helpers/account.d.ts +14 -0
  408. package/lib/projects/localDev/helpers/account.js +222 -0
  409. package/lib/projects/localDev/helpers/devSessionsApi.d.ts +9 -0
  410. package/lib/projects/localDev/helpers/devSessionsApi.js +19 -0
  411. package/lib/projects/localDev/helpers/process.d.ts +1 -0
  412. package/lib/projects/localDev/helpers/process.js +17 -0
  413. package/lib/projects/localDev/helpers/project.d.ts +16 -0
  414. package/lib/projects/localDev/helpers/project.js +216 -0
  415. package/lib/projects/localDev/localDevWebsocketServerUtils.d.ts +8 -0
  416. package/lib/projects/localDev/localDevWebsocketServerUtils.js +19 -0
  417. package/lib/projects/platformVersion.d.ts +9 -0
  418. package/lib/projects/platformVersion.js +39 -0
  419. package/lib/projects/pollProjectBuildAndDeploy.d.ts +10 -0
  420. package/lib/projects/pollProjectBuildAndDeploy.js +344 -0
  421. package/lib/projects/projectProfiles.d.ts +17 -0
  422. package/lib/projects/projectProfiles.js +140 -0
  423. package/lib/projects/structure.d.ts +18 -0
  424. package/lib/projects/structure.js +130 -0
  425. package/lib/projects/ui.d.ts +1 -0
  426. package/lib/projects/ui.js +12 -0
  427. package/lib/projects/uieLinting.d.ts +33 -0
  428. package/lib/projects/uieLinting.js +220 -0
  429. package/lib/projects/upload.d.ts +33 -0
  430. package/lib/projects/upload.js +147 -0
  431. package/lib/projects/urls.d.ts +10 -0
  432. package/lib/projects/urls.js +42 -0
  433. package/lib/projects/watch.d.ts +5 -0
  434. package/lib/projects/watch.js +168 -0
  435. package/lib/prompts/accountNamePrompt.d.ts +11 -0
  436. package/lib/prompts/accountNamePrompt.js +64 -0
  437. package/lib/prompts/accountsPrompt.d.ts +2 -0
  438. package/lib/prompts/accountsPrompt.js +33 -0
  439. package/lib/prompts/cmsFieldPrompt.d.ts +1 -0
  440. package/lib/prompts/cmsFieldPrompt.js +40 -0
  441. package/lib/prompts/confirmImportDataPrompt.d.ts +1 -0
  442. package/lib/prompts/confirmImportDataPrompt.js +12 -0
  443. package/lib/prompts/createApiSamplePrompt.d.ts +10 -0
  444. package/lib/prompts/createApiSamplePrompt.js +58 -0
  445. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +25 -0
  446. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +162 -0
  447. package/lib/prompts/createFunctionPrompt.d.ts +9 -0
  448. package/lib/prompts/createFunctionPrompt.js +94 -0
  449. package/lib/prompts/createModulePrompt.d.ts +10 -0
  450. package/lib/prompts/createModulePrompt.js +116 -0
  451. package/lib/prompts/createTemplatePrompt.d.ts +6 -0
  452. package/lib/prompts/createTemplatePrompt.js +29 -0
  453. package/lib/prompts/downloadProjectPrompt.d.ts +10 -0
  454. package/lib/prompts/downloadProjectPrompt.js +53 -0
  455. package/lib/prompts/importDataFilePathPrompt.d.ts +1 -0
  456. package/lib/prompts/importDataFilePathPrompt.js +26 -0
  457. package/lib/prompts/importDataTestAccountSelectPrompt.d.ts +3 -0
  458. package/lib/prompts/importDataTestAccountSelectPrompt.js +28 -0
  459. package/lib/prompts/installAppPrompt.d.ts +2 -0
  460. package/lib/prompts/installAppPrompt.js +39 -0
  461. package/lib/prompts/personalAccessKeyPrompt.d.ts +29 -0
  462. package/lib/prompts/personalAccessKeyPrompt.js +135 -0
  463. package/lib/prompts/previewPrompt.d.ts +15 -0
  464. package/lib/prompts/previewPrompt.js +48 -0
  465. package/lib/prompts/projectAddPrompt.d.ts +15 -0
  466. package/lib/prompts/projectAddPrompt.js +82 -0
  467. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +12 -0
  468. package/lib/prompts/projectDevTargetAccountPrompt.js +166 -0
  469. package/lib/prompts/projectNameAndDestPrompt.d.ts +3 -0
  470. package/lib/prompts/projectNameAndDestPrompt.js +53 -0
  471. package/lib/prompts/projectNamePrompt.d.ts +6 -0
  472. package/lib/prompts/projectNamePrompt.js +27 -0
  473. package/lib/prompts/projectsLogsPrompt.d.ts +12 -0
  474. package/lib/prompts/projectsLogsPrompt.js +20 -0
  475. package/lib/prompts/promptUtils.d.ts +32 -0
  476. package/lib/prompts/promptUtils.js +222 -0
  477. package/lib/prompts/sandboxesPrompt.d.ts +10 -0
  478. package/lib/prompts/sandboxesPrompt.js +63 -0
  479. package/lib/prompts/secretPrompt.d.ts +13 -0
  480. package/lib/prompts/secretPrompt.js +31 -0
  481. package/lib/prompts/selectAppPrompt.d.ts +2 -0
  482. package/lib/prompts/selectAppPrompt.js +37 -0
  483. package/lib/prompts/selectHubDBTablePrompt.d.ts +12 -0
  484. package/lib/prompts/selectHubDBTablePrompt.js +66 -0
  485. package/lib/prompts/selectProjectTemplatePrompt.d.ts +27 -0
  486. package/lib/prompts/selectProjectTemplatePrompt.js +75 -0
  487. package/lib/prompts/selectPublicAppForMigrationPrompt.d.ts +9 -0
  488. package/lib/prompts/selectPublicAppForMigrationPrompt.js +68 -0
  489. package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -0
  490. package/lib/prompts/setAsDefaultAccountPrompt.js +26 -0
  491. package/lib/prompts/uploadPrompt.d.ts +9 -0
  492. package/lib/prompts/uploadPrompt.js +32 -0
  493. package/lib/sandboxes.d.ts +14 -0
  494. package/lib/sandboxes.js +105 -0
  495. package/lib/schema.d.ts +3 -0
  496. package/lib/schema.js +27 -0
  497. package/lib/serverlessLogs.d.ts +4 -0
  498. package/lib/serverlessLogs.js +154 -0
  499. package/lib/testUtils.d.ts +14 -0
  500. package/lib/testUtils.js +18 -0
  501. package/lib/theme/cmsDevServerProcess.d.ts +12 -0
  502. package/lib/theme/cmsDevServerProcess.js +148 -0
  503. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  504. package/lib/theme/cmsDevServerRunner.js +90 -0
  505. package/lib/theme/migrate.d.ts +13 -0
  506. package/lib/theme/migrate.js +85 -0
  507. package/lib/ui/SpinniesManager.d.ts +39 -0
  508. package/lib/ui/SpinniesManager.js +259 -0
  509. package/lib/ui/git.d.ts +1 -0
  510. package/lib/ui/git.js +25 -0
  511. package/lib/ui/index.d.ts +31 -0
  512. package/lib/ui/index.js +150 -0
  513. package/lib/ui/logger.d.ts +11 -0
  514. package/lib/ui/logger.js +13 -0
  515. package/lib/ui/removeAnsiCodes.d.ts +1 -0
  516. package/lib/ui/removeAnsiCodes.js +4 -0
  517. package/lib/ui/serverlessFunctionLogs.d.ts +9 -0
  518. package/lib/ui/serverlessFunctionLogs.js +88 -0
  519. package/lib/ui/spinniesUtils.d.ts +32 -0
  520. package/lib/ui/spinniesUtils.js +151 -0
  521. package/lib/ui/supportHyperlinks.d.ts +7 -0
  522. package/lib/ui/supportHyperlinks.js +59 -0
  523. package/lib/ui/supportsColor.d.ts +17 -0
  524. package/lib/ui/supportsColor.js +97 -0
  525. package/lib/ui/uiMessages.d.ts +73 -0
  526. package/lib/ui/uiMessages.js +76 -0
  527. package/lib/upload.d.ts +1 -0
  528. package/lib/upload.js +49 -0
  529. package/lib/usageTracking.d.ts +32 -0
  530. package/lib/usageTracking.js +174 -0
  531. package/lib/utils/hasFlag.d.ts +1 -0
  532. package/lib/utils/hasFlag.js +9 -0
  533. package/lib/validation.d.ts +13 -0
  534. package/lib/validation.js +142 -0
  535. package/lib/yargsUtils.d.ts +16 -0
  536. package/lib/yargsUtils.js +49 -0
  537. package/mcp-server/server.d.ts +1 -0
  538. package/mcp-server/server.js +13 -0
  539. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +24 -0
  540. package/mcp-server/tools/cms/HsCreateFunctionTool.js +105 -0
  541. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +20 -0
  542. package/mcp-server/tools/cms/HsCreateModuleTool.js +127 -0
  543. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +25 -0
  544. package/mcp-server/tools/cms/HsCreateTemplateTool.js +84 -0
  545. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +18 -0
  546. package/mcp-server/tools/cms/HsFunctionLogsTool.js +75 -0
  547. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +15 -0
  548. package/mcp-server/tools/cms/HsListFunctionsTool.js +64 -0
  549. package/mcp-server/tools/cms/HsListTool.d.ts +15 -0
  550. package/mcp-server/tools/cms/HsListTool.js +64 -0
  551. package/mcp-server/tools/index.d.ts +3 -0
  552. package/mcp-server/tools/index.js +48 -0
  553. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +36 -0
  554. package/mcp-server/tools/project/AddFeatureToProjectTool.js +82 -0
  555. package/mcp-server/tools/project/CreateProjectTool.d.ts +40 -0
  556. package/mcp-server/tools/project/CreateProjectTool.js +98 -0
  557. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +51 -0
  558. package/mcp-server/tools/project/CreateTestAccountTool.js +170 -0
  559. package/mcp-server/tools/project/DeployProjectTool.d.ts +15 -0
  560. package/mcp-server/tools/project/DeployProjectTool.js +58 -0
  561. package/mcp-server/tools/project/DocFetchTool.d.ts +14 -0
  562. package/mcp-server/tools/project/DocFetchTool.js +57 -0
  563. package/mcp-server/tools/project/DocsSearchTool.d.ts +23 -0
  564. package/mcp-server/tools/project/DocsSearchTool.js +69 -0
  565. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +16 -0
  566. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +73 -0
  567. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +13 -0
  568. package/mcp-server/tools/project/GetApplicationInfoTool.js +56 -0
  569. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +21 -0
  570. package/mcp-server/tools/project/GetBuildLogsTool.js +124 -0
  571. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +16 -0
  572. package/mcp-server/tools/project/GetBuildStatusTool.js +165 -0
  573. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +15 -0
  574. package/mcp-server/tools/project/GetConfigValuesTool.js +65 -0
  575. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +19 -0
  576. package/mcp-server/tools/project/GuidedWalkthroughTool.js +50 -0
  577. package/mcp-server/tools/project/UploadProjectTools.d.ts +16 -0
  578. package/mcp-server/tools/project/UploadProjectTools.js +83 -0
  579. package/mcp-server/tools/project/ValidateProjectTool.d.ts +14 -0
  580. package/mcp-server/tools/project/ValidateProjectTool.js +42 -0
  581. package/mcp-server/tools/project/constants.d.ts +18 -0
  582. package/mcp-server/tools/project/constants.js +29 -0
  583. package/mcp-server/types.d.ts +14 -0
  584. package/mcp-server/types.js +13 -0
  585. package/mcp-server/utils/command.d.ts +8 -0
  586. package/mcp-server/utils/command.js +33 -0
  587. package/mcp-server/utils/config.d.ts +1 -0
  588. package/mcp-server/utils/config.js +10 -0
  589. package/mcp-server/utils/content.d.ts +3 -0
  590. package/mcp-server/utils/content.js +24 -0
  591. package/mcp-server/utils/feedbackTracking.d.ts +1 -0
  592. package/mcp-server/utils/feedbackTracking.js +26 -0
  593. package/mcp-server/utils/toolUsageTracking.d.ts +3 -0
  594. package/mcp-server/utils/toolUsageTracking.js +24 -0
  595. package/package.json +2 -1
  596. package/types/Cms.d.ts +46 -0
  597. package/types/Cms.js +27 -0
  598. package/types/LocalDev.d.ts +47 -0
  599. package/types/LocalDev.js +1 -0
  600. package/types/PackageJson.d.ts +10 -0
  601. package/types/PackageJson.js +1 -0
  602. package/types/ProjectComponents.d.ts +23 -0
  603. package/types/ProjectComponents.js +2 -0
  604. package/types/Projects.d.ts +130 -0
  605. package/types/Projects.js +6 -0
  606. package/types/Prompts.d.ts +28 -0
  607. package/types/Prompts.js +1 -0
  608. package/types/Sandboxes.d.ts +5 -0
  609. package/types/Sandboxes.js +1 -0
  610. package/types/Yargs.d.ts +46 -0
  611. package/types/Yargs.js +1 -0
  612. package/ui/components/ActionSection.d.ts +12 -0
  613. package/ui/components/ActionSection.js +25 -0
  614. package/ui/components/BoxWithTitle.d.ts +11 -0
  615. package/ui/components/BoxWithTitle.js +9 -0
  616. package/ui/components/FullScreen.d.ts +6 -0
  617. package/ui/components/FullScreen.js +13 -0
  618. package/ui/components/HorizontalSelectPrompt.d.ts +8 -0
  619. package/ui/components/HorizontalSelectPrompt.js +30 -0
  620. package/ui/components/InputField.d.ts +10 -0
  621. package/ui/components/InputField.js +10 -0
  622. package/ui/components/SelectInput.d.ts +11 -0
  623. package/ui/components/SelectInput.js +59 -0
  624. package/ui/components/StatusIcon.d.ts +9 -0
  625. package/ui/components/StatusIcon.js +17 -0
  626. package/ui/components/StatusMessageBoxes.d.ts +13 -0
  627. package/ui/components/StatusMessageBoxes.js +31 -0
  628. package/ui/components/Table.d.ts +89 -0
  629. package/ui/components/Table.js +246 -0
  630. package/ui/components/getStarted/GetStartedFlow.d.ts +8 -0
  631. package/ui/components/getStarted/GetStartedFlow.js +213 -0
  632. package/ui/components/getStarted/reducer.d.ts +79 -0
  633. package/ui/components/getStarted/reducer.js +108 -0
  634. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  635. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  636. package/ui/components/getStarted/screens/ProjectSetupScreen.d.ts +16 -0
  637. package/ui/components/getStarted/screens/ProjectSetupScreen.js +40 -0
  638. package/ui/components/getStarted/screens/UploadScreen.d.ts +7 -0
  639. package/ui/components/getStarted/screens/UploadScreen.js +43 -0
  640. package/ui/components/getStarted/selectors.d.ts +2 -0
  641. package/ui/components/getStarted/selectors.js +1 -0
  642. package/ui/constants.d.ts +6 -0
  643. package/ui/constants.js +6 -0
  644. package/ui/lib/constants.d.ts +17 -0
  645. package/ui/lib/constants.js +17 -0
  646. package/ui/lib/table.d.ts +2 -0
  647. package/ui/lib/table.js +11 -0
  648. package/ui/lib/useTerminalSize.d.ts +13 -0
  649. package/ui/lib/useTerminalSize.js +31 -0
  650. package/ui/playground/Playground.d.ts +5 -0
  651. package/ui/playground/Playground.js +25 -0
  652. package/ui/playground/fixtures.d.ts +9 -0
  653. package/ui/playground/fixtures.js +126 -0
  654. package/ui/render.d.ts +23 -0
  655. package/ui/render.js +75 -0
  656. package/ui/styles.d.ts +21 -0
  657. package/ui/styles.js +21 -0
@@ -0,0 +1,140 @@
1
+ import path from 'path';
2
+ import { loadHsProfileFile, getHsProfileFilename, getAllHsProfiles, validateProfileVariables, } from '@hubspot/project-parsing-lib/profiles';
3
+ import { commands, lib } from '../../lang/en.js';
4
+ import { indent, uiBetaTag, uiLine } from '../ui/index.js';
5
+ import { uiLogger } from '../ui/logger.js';
6
+ import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
7
+ import SpinniesManager from '../ui/SpinniesManager.js';
8
+ import { handleTranslate } from './upload.js';
9
+ import { getErrorMessage } from '../errorHandlers/index.js';
10
+ export function logProfileHeader(profileName) {
11
+ uiLine();
12
+ uiBetaTag(lib.projectProfiles.logs.usingProfile(getHsProfileFilename(profileName)));
13
+ uiLogger.log('');
14
+ }
15
+ export function logProfileFooter(profile, includeVariables = false) {
16
+ uiLogger.log(lib.projectProfiles.logs.profileTargetAccount(profile.accountId));
17
+ if (includeVariables) {
18
+ uiLogger.log('');
19
+ uiLogger.log(lib.projectProfiles.logs.profileVariables);
20
+ Object.entries(profile.variables ?? {}).forEach(([key, value]) => {
21
+ uiLogger.log(` ${key}: ${value}`);
22
+ });
23
+ }
24
+ uiLine();
25
+ uiLogger.log('');
26
+ }
27
+ export function loadProfile(projectConfig, projectDir, profileName) {
28
+ if (!projectConfig || !projectDir) {
29
+ throw new Error(lib.projectProfiles.loadProfile.errors.noProjectConfig);
30
+ }
31
+ const projectSourceDir = path.join(projectDir, projectConfig.srcDir);
32
+ const profileFilename = getHsProfileFilename(profileName);
33
+ let profile;
34
+ try {
35
+ profile = loadHsProfileFile(projectSourceDir, profileName);
36
+ }
37
+ catch (e) {
38
+ throw new Error(lib.projectProfiles.loadProfile.errors.failedToLoadProfile(profileFilename));
39
+ }
40
+ if (!profile) {
41
+ throw new Error(lib.projectProfiles.loadProfile.errors.profileNotFound(profileFilename));
42
+ }
43
+ if (!profile.accountId) {
44
+ throw new Error(lib.projectProfiles.loadProfile.errors.missingAccountId(profileFilename));
45
+ }
46
+ try {
47
+ getConfigAccountById(profile.accountId);
48
+ }
49
+ catch (error) {
50
+ throw new Error(lib.projectProfiles.loadProfile.errors.listedAccountNotFound(profile.accountId, profileFilename));
51
+ }
52
+ return profile;
53
+ }
54
+ export async function enforceProfileUsage(projectConfig, projectDir) {
55
+ if (projectConfig && projectDir) {
56
+ const existingProfiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
57
+ if (existingProfiles.length > 0) {
58
+ throw new Error(lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
59
+ }
60
+ }
61
+ }
62
+ export async function loadAndValidateProfile(projectConfig, projectDir, profileName, silent = false) {
63
+ if (!profileName) {
64
+ await enforceProfileUsage(projectConfig, projectDir);
65
+ return;
66
+ }
67
+ if (!silent) {
68
+ logProfileHeader(profileName);
69
+ }
70
+ const profile = loadProfile(projectConfig, projectDir, profileName);
71
+ if (!silent) {
72
+ logProfileFooter(profile, true);
73
+ }
74
+ if (profile.variables) {
75
+ const validationResult = validateProfileVariables(profile.variables, profileName);
76
+ if (!validationResult.success) {
77
+ throw new Error(lib.projectProfiles.loadProfile.errors.profileNotValid(profileName, validationResult.errors));
78
+ }
79
+ }
80
+ return profile.accountId;
81
+ }
82
+ function formatProfileValidationError(error, leadingIndentationLevel = 0) {
83
+ // Trim leading whitespace and replace tabs with spaces to reducing indentations
84
+ const errorMessage = getErrorMessage(error)
85
+ .trimStart()
86
+ .replaceAll('\t', indent(2));
87
+ return `${indent(leadingIndentationLevel)}${errorMessage}\n`;
88
+ }
89
+ export async function validateProjectForProfile({ projectConfig, projectDir, profileName, derivedAccountId, indentSpinners = false, silent = false, }) {
90
+ let targetAccountId = derivedAccountId;
91
+ const spinnerName = `validatingProfile-${profileName}`;
92
+ const profileFilename = getHsProfileFilename(profileName);
93
+ if (!silent) {
94
+ SpinniesManager.add(spinnerName, {
95
+ text: commands.project.validate.spinners.validatingProfile(profileFilename),
96
+ indent: indentSpinners ? indent(1).length : 0,
97
+ });
98
+ }
99
+ try {
100
+ const accountId = await loadAndValidateProfile(projectConfig, projectDir, profileName, true);
101
+ targetAccountId = accountId || derivedAccountId;
102
+ }
103
+ catch (error) {
104
+ SpinniesManager.fail(spinnerName, {
105
+ text: commands.project.validate.spinners.profileValidationFailed(profileName),
106
+ failColor: 'white',
107
+ });
108
+ return [formatProfileValidationError(error)];
109
+ }
110
+ try {
111
+ await handleTranslate({
112
+ projectDir: projectDir,
113
+ projectConfig,
114
+ accountId: targetAccountId,
115
+ skipValidation: false,
116
+ profile: profileName,
117
+ includeTranslationErrorMessage: false,
118
+ });
119
+ }
120
+ catch (error) {
121
+ if (!silent) {
122
+ SpinniesManager.fail(spinnerName, {
123
+ text: commands.project.validate.spinners.invalidWithProfile(profileName),
124
+ failColor: 'white',
125
+ });
126
+ }
127
+ const errors = [
128
+ commands.project.validate.failureWithProfile(profileName),
129
+ ];
130
+ errors.push(formatProfileValidationError(error, 1));
131
+ return errors;
132
+ }
133
+ if (!silent) {
134
+ SpinniesManager.succeed(spinnerName, {
135
+ text: commands.project.validate.spinners.profileValidationSucceeded(profileFilename),
136
+ succeedColor: 'white',
137
+ });
138
+ }
139
+ return [];
140
+ }
@@ -0,0 +1,18 @@
1
+ import { ComponentTypes, Component, GenericComponentConfig, PublicAppComponentConfig, PrivateAppComponentConfig, AppCardComponentConfig } from '../../types/Projects.js';
2
+ import type { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/translate';
3
+ import { AppIRNode } from '../../types/ProjectComponents.js';
4
+ export declare const CONFIG_FILES: {
5
+ [k in ComponentTypes]: string;
6
+ };
7
+ export declare function getComponentTypeFromConfigFile(configFile: string): ComponentTypes | null;
8
+ export declare function loadConfigFile(configPath: string): GenericComponentConfig | null;
9
+ export declare function getAppCardConfigs(appConfig: PublicAppComponentConfig | PrivateAppComponentConfig, appPath: string): Array<AppCardComponentConfig>;
10
+ export declare function getIsLegacyApp(appConfig: GenericComponentConfig, appPath: string): boolean;
11
+ export declare function findProjectComponents(projectSourceDir: string): Promise<Array<Component>>;
12
+ export declare function getProjectComponentTypes(components: Array<Component>): {
13
+ [key in ComponentTypes]?: boolean;
14
+ };
15
+ export declare function getComponentUid(component?: Component | null): string | null;
16
+ export declare function componentIsApp(component?: Component | null): component is Component<PublicAppComponentConfig | PrivateAppComponentConfig>;
17
+ export declare function componentIsPublicApp(component?: Component | null): component is Component<PublicAppComponentConfig>;
18
+ export declare function isAppIRNode(component: IntermediateRepresentationNodeLocalDev): component is AppIRNode;
@@ -0,0 +1,130 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { walk } from '@hubspot/local-dev-lib/fs';
4
+ import { uiLogger } from '../ui/logger.js';
5
+ import { logError } from '../errorHandlers/index.js';
6
+ import { ComponentTypes, } from '../../types/Projects.js';
7
+ import { IR_COMPONENT_TYPES, LEGACY_PRIVATE_APP_FILE, LEGACY_PUBLIC_APP_FILE, THEME_FILE, } from '../constants.js';
8
+ export const CONFIG_FILES = {
9
+ [ComponentTypes.PrivateApp]: LEGACY_PRIVATE_APP_FILE,
10
+ [ComponentTypes.PublicApp]: LEGACY_PUBLIC_APP_FILE,
11
+ [ComponentTypes.HublTheme]: THEME_FILE,
12
+ };
13
+ export function getComponentTypeFromConfigFile(configFile) {
14
+ let key;
15
+ for (key in CONFIG_FILES) {
16
+ if (CONFIG_FILES[key] === configFile) {
17
+ return key;
18
+ }
19
+ }
20
+ return null;
21
+ }
22
+ export function loadConfigFile(configPath) {
23
+ if (configPath) {
24
+ try {
25
+ const source = fs.readFileSync(configPath);
26
+ const parsedConfig = JSON.parse(source.toString());
27
+ return parsedConfig;
28
+ }
29
+ catch (e) {
30
+ uiLogger.debug(e);
31
+ }
32
+ }
33
+ return null;
34
+ }
35
+ export function getAppCardConfigs(appConfig, appPath) {
36
+ const cardConfigs = [];
37
+ let cards;
38
+ if (appConfig && appConfig.extensions && appConfig.extensions.crm) {
39
+ cards = appConfig.extensions.crm.cards;
40
+ }
41
+ if (cards) {
42
+ cards.forEach(({ file }) => {
43
+ if (typeof file === 'string') {
44
+ const cardConfigPath = path.join(appPath, file);
45
+ const cardConfig = loadConfigFile(cardConfigPath);
46
+ if (cardConfig && 'type' in cardConfig) {
47
+ cardConfigs.push(cardConfig);
48
+ }
49
+ }
50
+ });
51
+ }
52
+ return cardConfigs;
53
+ }
54
+ export function getIsLegacyApp(appConfig, appPath) {
55
+ let hasAnyReactExtensions = false;
56
+ if (appConfig && 'extensions' in appConfig) {
57
+ const cardConfigs = getAppCardConfigs(appConfig, appPath);
58
+ if (!cardConfigs.length) {
59
+ // Assume any app that does not have any cards is not legacy
60
+ return false;
61
+ }
62
+ cardConfigs.forEach(cardConfig => {
63
+ if (!hasAnyReactExtensions) {
64
+ const isReactExtension = cardConfig &&
65
+ !!cardConfig.data &&
66
+ !!cardConfig.data.module &&
67
+ !!cardConfig.data.module.file;
68
+ hasAnyReactExtensions = isReactExtension;
69
+ }
70
+ });
71
+ }
72
+ return !hasAnyReactExtensions;
73
+ }
74
+ export async function findProjectComponents(projectSourceDir) {
75
+ const components = [];
76
+ let projectFiles = [];
77
+ try {
78
+ projectFiles = await walk(projectSourceDir);
79
+ }
80
+ catch (e) {
81
+ logError(e);
82
+ }
83
+ projectFiles.forEach(projectFile => {
84
+ // Find app components
85
+ const { base, dir } = path.parse(projectFile);
86
+ if (Object.values(CONFIG_FILES).includes(base)) {
87
+ const parsedConfig = loadConfigFile(projectFile);
88
+ if (parsedConfig) {
89
+ const isLegacy = getIsLegacyApp(parsedConfig, dir);
90
+ const isHublTheme = base === CONFIG_FILES[ComponentTypes.HublTheme];
91
+ const componentType = getComponentTypeFromConfigFile(base);
92
+ if (componentType) {
93
+ components.push({
94
+ type: componentType,
95
+ config: parsedConfig,
96
+ runnable: !isLegacy && !isHublTheme,
97
+ path: dir,
98
+ });
99
+ }
100
+ }
101
+ }
102
+ });
103
+ return components;
104
+ }
105
+ export function getProjectComponentTypes(components) {
106
+ const projectContents = {};
107
+ components.forEach(({ type }) => (projectContents[type] = true));
108
+ return projectContents;
109
+ }
110
+ export function getComponentUid(component) {
111
+ if (!component) {
112
+ return null;
113
+ }
114
+ else if ('uid' in component.config) {
115
+ return component.config.uid;
116
+ }
117
+ else {
118
+ return component.config.data.uid;
119
+ }
120
+ }
121
+ export function componentIsApp(component) {
122
+ return (component?.type === ComponentTypes.PublicApp ||
123
+ component?.type === ComponentTypes.PrivateApp);
124
+ }
125
+ export function componentIsPublicApp(component) {
126
+ return component?.type === ComponentTypes.PublicApp;
127
+ }
128
+ export function isAppIRNode(component) {
129
+ return component.componentType === IR_COMPONENT_TYPES.APPLICATION;
130
+ }
@@ -0,0 +1 @@
1
+ export declare function logFeedbackMessage(buildId: number): void;
@@ -0,0 +1,12 @@
1
+ import { uiLogger } from '../ui/logger.js';
2
+ import { FEEDBACK_INTERVAL } from '../constants.js';
3
+ import { uiLine } from '../ui/index.js';
4
+ import { lib } from '../../lang/en.js';
5
+ export function logFeedbackMessage(buildId) {
6
+ if (buildId > 0 && buildId % FEEDBACK_INTERVAL === 0) {
7
+ uiLine();
8
+ uiLogger.log(lib.projects.logFeedbackMessage.feedbackHeader);
9
+ uiLine();
10
+ uiLogger.log(lib.projects.logFeedbackMessage.feedbackMessage);
11
+ }
12
+ }
@@ -0,0 +1,33 @@
1
+ export declare const REQUIRED_PACKAGES_AND_MIN_VERSIONS: {
2
+ readonly eslint: "9.0.0";
3
+ readonly '@typescript-eslint/eslint-plugin': "8.46.4";
4
+ readonly '@typescript-eslint/parser': "8.46.4";
5
+ readonly 'typescript-eslint': "8.46.4";
6
+ readonly jiti: "2.6.1";
7
+ };
8
+ export declare function isEslintInstalled(directory: string): boolean;
9
+ export declare function areAllLintPackagesInstalled(directory: string): boolean;
10
+ export declare function getMissingLintPackages(directory: string): {
11
+ missingPackages: string[];
12
+ };
13
+ export declare function hasEslintConfig(directory: string): boolean;
14
+ export declare function hasDeprecatedEslintConfig(directory: string): boolean;
15
+ export declare function getDeprecatedEslintConfigFiles(directory: string): string[];
16
+ export declare function createEslintConfig(directory: string): string;
17
+ export declare function lintPackagesInDirectory(directory: string, projectDir?: string): Promise<{
18
+ success: boolean;
19
+ output: string;
20
+ }>;
21
+ export declare function lintPackages(lintLocations?: string[], projectDir?: string): Promise<{
22
+ success: boolean;
23
+ results: Array<{
24
+ location: string;
25
+ success: boolean;
26
+ output: string;
27
+ }>;
28
+ }>;
29
+ export declare function displayLintResults(results: Array<{
30
+ location: string;
31
+ success: boolean;
32
+ output: string;
33
+ }>): void;
@@ -0,0 +1,220 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import util from 'util';
4
+ import semver from 'semver';
5
+ import { exec as execAsync } from 'node:child_process';
6
+ import { getProjectPackageJsonLocations, isPackageInstalled, } from '../dependencyManagement.js';
7
+ import { commands } from '../../lang/en.js';
8
+ import { uiLogger } from '../ui/logger.js';
9
+ import { safeGetPackageJsonCached } from '../npm/packageJson.js';
10
+ export const REQUIRED_PACKAGES_AND_MIN_VERSIONS = {
11
+ eslint: '9.0.0',
12
+ '@typescript-eslint/eslint-plugin': '8.46.4',
13
+ '@typescript-eslint/parser': '8.46.4',
14
+ 'typescript-eslint': '8.46.4',
15
+ jiti: '2.6.1',
16
+ };
17
+ const ESLINT_CONFIG_FILES = [
18
+ 'eslint.config.mts',
19
+ 'eslint.config.ts',
20
+ 'eslint.config.cts',
21
+ 'eslint.config.js',
22
+ 'eslint.config.mjs',
23
+ 'eslint.config.cjs',
24
+ ];
25
+ const DEPRECATED_ESLINT_CONFIG_FILES = [
26
+ '.eslintrc.js',
27
+ '.eslintrc.cjs',
28
+ '.eslintrc.yaml',
29
+ '.eslintrc.yml',
30
+ '.eslintrc.json',
31
+ '.eslintrc',
32
+ ];
33
+ const ESLINT_CONFIG_TEMPLATE = `import { defineConfig } from "eslint/config";
34
+ import tsParser from "@typescript-eslint/parser";
35
+
36
+ export default defineConfig([
37
+ {
38
+ files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
39
+ languageOptions: {
40
+ parser: tsParser,
41
+ parserOptions: {
42
+ ecmaVersion: "latest",
43
+ sourceType: "module",
44
+ ecmaFeatures: {
45
+ jsx: true
46
+ }
47
+ }
48
+ },
49
+ rules: {
50
+ "no-console": ["warn", { allow: ["warn", "error"] }]
51
+ }
52
+ },
53
+ ]);
54
+ `;
55
+ function getPackageVersionFromPackageJson(directory, packageName) {
56
+ const packageJsonPath = path.join(directory, 'package.json');
57
+ const packageJson = safeGetPackageJsonCached(packageJsonPath);
58
+ if (!packageJson) {
59
+ return null;
60
+ }
61
+ const version = packageJson.dependencies?.[packageName] ||
62
+ packageJson.devDependencies?.[packageName];
63
+ return version || null;
64
+ }
65
+ function isPackageVersionValid(directory, packageName) {
66
+ const versionRange = getPackageVersionFromPackageJson(directory, packageName);
67
+ if (!versionRange) {
68
+ return false;
69
+ }
70
+ const minimumVersion = REQUIRED_PACKAGES_AND_MIN_VERSIONS[packageName];
71
+ if (!minimumVersion) {
72
+ // If no minimum version specified, any version is valid
73
+ return true;
74
+ }
75
+ try {
76
+ // Check if the version range satisfies the minimum version
77
+ // For ranges like ^9.0.0, ~8.5.0, >=9.0.0, etc.
78
+ const minVersionSatisfied = semver.satisfies(minimumVersion, versionRange, {
79
+ includePrerelease: true,
80
+ });
81
+ const coercedVersion = semver.minVersion(versionRange);
82
+ if (coercedVersion) {
83
+ return semver.gte(coercedVersion, minimumVersion);
84
+ }
85
+ return minVersionSatisfied;
86
+ }
87
+ catch (error) {
88
+ return false;
89
+ }
90
+ }
91
+ export function isEslintInstalled(directory) {
92
+ return isPackageInstalled(directory, 'eslint');
93
+ }
94
+ export function areAllLintPackagesInstalled(directory) {
95
+ return Object.keys(REQUIRED_PACKAGES_AND_MIN_VERSIONS).every(pkg => {
96
+ const installed = isPackageInstalled(directory, pkg);
97
+ const validVersion = isPackageVersionValid(directory, pkg);
98
+ return installed && validVersion;
99
+ });
100
+ }
101
+ export function getMissingLintPackages(directory) {
102
+ const missingPackages = [];
103
+ for (const packageName of Object.keys(REQUIRED_PACKAGES_AND_MIN_VERSIONS)) {
104
+ const isInstalled = isPackageInstalled(directory, packageName);
105
+ const isValidVersion = isPackageVersionValid(directory, packageName);
106
+ if (!isInstalled || !isValidVersion) {
107
+ missingPackages.push(packageName);
108
+ }
109
+ }
110
+ return { missingPackages };
111
+ }
112
+ export function hasEslintConfig(directory) {
113
+ return ESLINT_CONFIG_FILES.some(configFile => {
114
+ const configPath = path.join(directory, configFile);
115
+ return fs.existsSync(configPath);
116
+ });
117
+ }
118
+ export function hasDeprecatedEslintConfig(directory) {
119
+ return DEPRECATED_ESLINT_CONFIG_FILES.some(configFile => {
120
+ const configPath = path.join(directory, configFile);
121
+ return fs.existsSync(configPath);
122
+ });
123
+ }
124
+ export function getDeprecatedEslintConfigFiles(directory) {
125
+ return DEPRECATED_ESLINT_CONFIG_FILES.filter(configFile => {
126
+ const configPath = path.join(directory, configFile);
127
+ return fs.existsSync(configPath);
128
+ });
129
+ }
130
+ export function createEslintConfig(directory) {
131
+ const configPath = path.join(directory, 'eslint.config.mts');
132
+ try {
133
+ fs.writeFileSync(configPath, ESLINT_CONFIG_TEMPLATE, 'utf-8');
134
+ return path.relative(process.cwd(), configPath);
135
+ }
136
+ catch (error) {
137
+ uiLogger.error(commands.project.lint.failedToCreateEslintConfig(configPath));
138
+ throw error;
139
+ }
140
+ }
141
+ export async function lintPackagesInDirectory(directory, projectDir) {
142
+ const displayPath = projectDir
143
+ ? path.relative(projectDir, directory)
144
+ : directory;
145
+ const exec = util.promisify(execAsync);
146
+ const lintCommand = 'npx eslint . --color';
147
+ try {
148
+ const { stdout, stderr } = await exec(lintCommand, {
149
+ cwd: directory,
150
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
151
+ });
152
+ let output = `\n${displayPath}:\n`;
153
+ if (stdout && stdout.trim()) {
154
+ output += stdout;
155
+ }
156
+ else {
157
+ output += ' No linting issues found.\n';
158
+ }
159
+ if (stderr && stderr.trim()) {
160
+ output += stderr;
161
+ }
162
+ return { success: true, output };
163
+ }
164
+ catch (error) {
165
+ // ESLint returns exit code 1 when there are linting errors
166
+ // but still provides useful output in stdout/stderr
167
+ let output = `\n${displayPath}:\n`;
168
+ if (error && typeof error === 'object' && 'stdout' in error) {
169
+ const execError = error;
170
+ if (execError.stdout) {
171
+ output += execError.stdout;
172
+ }
173
+ if (execError.stderr) {
174
+ output += execError.stderr;
175
+ }
176
+ }
177
+ return { success: false, output };
178
+ }
179
+ }
180
+ export async function lintPackages(lintLocations, projectDir) {
181
+ const locations = lintLocations || (await getProjectPackageJsonLocations());
182
+ const results = [];
183
+ for (const location of locations) {
184
+ const result = await lintPackagesInDirectory(location, projectDir);
185
+ const displayPath = projectDir
186
+ ? path.relative(projectDir, location)
187
+ : location;
188
+ results.push({ location: displayPath, ...result });
189
+ }
190
+ const failedLocations = results.filter(r => !r.success);
191
+ return {
192
+ success: failedLocations.length === 0,
193
+ results,
194
+ };
195
+ }
196
+ export function displayLintResults(results) {
197
+ // Display all output
198
+ results.forEach(r => {
199
+ uiLogger.log(r.output);
200
+ });
201
+ // Summary
202
+ const failedLocations = results.filter(r => !r.success);
203
+ const passedLocations = results.filter(r => r.success);
204
+ uiLogger.log('\n' + '='.repeat(50));
205
+ if (passedLocations.length > 0) {
206
+ uiLogger.success(`Linting passed in ${passedLocations.length} ${passedLocations.length === 1 ? 'directory' : 'directories'}:`);
207
+ passedLocations.forEach(r => {
208
+ uiLogger.log(` ✓ ${r.location}`);
209
+ });
210
+ }
211
+ if (failedLocations.length > 0) {
212
+ if (passedLocations.length > 0) {
213
+ uiLogger.log('');
214
+ }
215
+ uiLogger.error(`Linting failed in ${failedLocations.length} ${failedLocations.length === 1 ? 'directory' : 'directories'}:`);
216
+ failedLocations.forEach(r => {
217
+ uiLogger.log(` ✗ ${r.location}`);
218
+ });
219
+ }
220
+ }
@@ -0,0 +1,33 @@
1
+ import { FileResult } from 'tmp';
2
+ import { ProjectConfig } from '../../types/Projects.js';
3
+ type ProjectUploadCallbackFunction<T> = (accountId: number, projectConfig: ProjectConfig, tempFile: FileResult, buildId: number) => Promise<T>;
4
+ type ProjectUploadResult<T> = {
5
+ result?: T;
6
+ uploadError?: unknown;
7
+ projectNotFound?: boolean;
8
+ };
9
+ type HandleProjectUploadArg<T> = {
10
+ accountId: number;
11
+ projectConfig: ProjectConfig;
12
+ projectDir: string;
13
+ callbackFunc: ProjectUploadCallbackFunction<T>;
14
+ uploadMessage?: string;
15
+ forceCreate?: boolean;
16
+ isUploadCommand?: boolean;
17
+ sendIR?: boolean;
18
+ skipValidation?: boolean;
19
+ profile?: string;
20
+ };
21
+ export declare function handleProjectUpload<T>({ accountId, projectConfig, projectDir, callbackFunc, profile, uploadMessage, forceCreate, isUploadCommand, sendIR, skipValidation, }: HandleProjectUploadArg<T>): Promise<ProjectUploadResult<T>>;
22
+ export declare function validateSourceDirectory(srcDir: string, projectConfig: ProjectConfig, projectDir: string): Promise<void>;
23
+ export declare function validateNoHSMetaMismatch(srcDir: string, projectConfig: ProjectConfig): Promise<void>;
24
+ type HandleTranslateArg = {
25
+ projectDir: string;
26
+ projectConfig: ProjectConfig;
27
+ accountId: number;
28
+ skipValidation: boolean;
29
+ profile?: string;
30
+ includeTranslationErrorMessage?: boolean;
31
+ };
32
+ export declare function handleTranslate({ projectDir, projectConfig, accountId, skipValidation, profile, includeTranslationErrorMessage, }: HandleTranslateArg): Promise<unknown>;
33
+ export {};