@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,216 @@
1
+ import fs from 'fs-extra';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import { createProject } from '@hubspot/local-dev-lib/api/projects';
5
+ import { downloadProject } from '@hubspot/local-dev-lib/api/projects';
6
+ import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
7
+ import { sanitizeFileName } from '@hubspot/local-dev-lib/path';
8
+ import { isDeepEqual } from '@hubspot/local-dev-lib/isDeepEqual';
9
+ import { translate, } from '@hubspot/project-parsing-lib/translate';
10
+ import { isSpecifiedError } from '@hubspot/local-dev-lib/errors/index';
11
+ import { PROJECT_ERROR_TYPES, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, } from '../../../constants.js';
12
+ import { lib } from '../../../../lang/en.js';
13
+ import { uiLogger } from '../../../ui/logger.js';
14
+ import { uiLine } from '../../../ui/index.js';
15
+ import { confirmPrompt } from '../../../prompts/promptUtils.js';
16
+ import { uiAccountDescription } from '../../../ui/index.js';
17
+ import SpinniesManager from '../../../ui/SpinniesManager.js';
18
+ import { EXIT_CODES } from '../../../enums/exitCodes.js';
19
+ import { handleProjectUpload } from '../../upload.js';
20
+ import { pollProjectBuildAndDeploy } from '../../pollProjectBuildAndDeploy.js';
21
+ import { debugError, logError } from '../../../errorHandlers/index.js';
22
+ import { ApiErrorContext } from '../../../errorHandlers/index.js';
23
+ import { getProjectPackageJsonLocations, hasMissingPackages, installPackages, } from '../../../dependencyManagement.js';
24
+ // Prompt the user to create a new project if one doesn't exist on their target account
25
+ export async function createNewProjectForLocalDev(projectConfig, targetAccountId, shouldCreateWithoutConfirmation, hasPublicApps) {
26
+ // Create the project without prompting if this is a newly created sandbox
27
+ let shouldCreateProject = shouldCreateWithoutConfirmation;
28
+ if (!shouldCreateProject) {
29
+ const explanationLangFunction = hasPublicApps
30
+ ? lib.localDevHelpers.project.createNewProjectForLocalDev
31
+ .publicAppProjectMustExistExplanation
32
+ : lib.localDevHelpers.project.createNewProjectForLocalDev
33
+ .projectMustExistExplanation;
34
+ const explanationString = explanationLangFunction(projectConfig.name, targetAccountId);
35
+ uiLogger.log('');
36
+ uiLine();
37
+ uiLogger.log(explanationString);
38
+ uiLine();
39
+ shouldCreateProject = await confirmPrompt(lib.localDevHelpers.project.createNewProjectForLocalDev.createProject(projectConfig.name, uiAccountDescription(targetAccountId)));
40
+ }
41
+ if (shouldCreateProject) {
42
+ SpinniesManager.add('createProject', {
43
+ text: lib.localDevHelpers.project.createNewProjectForLocalDev.creatingProject(projectConfig.name, uiAccountDescription(targetAccountId)),
44
+ });
45
+ try {
46
+ const { data: project } = await createProject(targetAccountId, projectConfig.name);
47
+ SpinniesManager.succeed('createProject', {
48
+ text: lib.localDevHelpers.project.createNewProjectForLocalDev.createdProject(projectConfig.name, uiAccountDescription(targetAccountId)),
49
+ succeedColor: 'white',
50
+ });
51
+ return project;
52
+ }
53
+ catch (err) {
54
+ SpinniesManager.fail('createProject');
55
+ uiLogger.log(lib.localDevHelpers.project.createNewProjectForLocalDev
56
+ .failedToCreateProject);
57
+ process.exit(EXIT_CODES.ERROR);
58
+ }
59
+ }
60
+ else {
61
+ // We cannot continue if the project does not exist in the target account
62
+ uiLogger.log('');
63
+ uiLogger.log(lib.localDevHelpers.project.createNewProjectForLocalDev
64
+ .choseNotToCreateProject);
65
+ process.exit(EXIT_CODES.SUCCESS);
66
+ }
67
+ }
68
+ function projectUploadCallback(accountId, projectConfig, tempFile, buildId) {
69
+ if (!buildId) {
70
+ uiLogger.error(lib.localDevHelpers.project.createInitialBuildForNewProject.genericError);
71
+ process.exit(EXIT_CODES.ERROR);
72
+ }
73
+ return pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, buildId, true);
74
+ }
75
+ // Create an initial build if the project was newly created in the account
76
+ // Return the newly deployed build
77
+ export async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, sendIR, profile) {
78
+ const { result: initialUploadResult, uploadError } = await handleProjectUpload({
79
+ accountId: targetAccountId,
80
+ projectConfig,
81
+ projectDir,
82
+ callbackFunc: projectUploadCallback,
83
+ uploadMessage: lib.localDevHelpers.project.createInitialBuildForNewProject
84
+ .initialUploadMessage,
85
+ forceCreate: true,
86
+ skipValidation: true,
87
+ sendIR,
88
+ profile,
89
+ });
90
+ if (uploadError) {
91
+ if (isSpecifiedError(uploadError, {
92
+ subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
93
+ })) {
94
+ uiLogger.log('');
95
+ uiLogger.error(lib.localDevHelpers.project.createInitialBuildForNewProject
96
+ .projectLockedError);
97
+ uiLogger.log('');
98
+ }
99
+ else {
100
+ logError(uploadError, new ApiErrorContext({
101
+ accountId: targetAccountId,
102
+ projectName: projectConfig.name,
103
+ }));
104
+ }
105
+ process.exit(EXIT_CODES.ERROR);
106
+ }
107
+ if (!initialUploadResult?.succeeded) {
108
+ let subTasks = [];
109
+ if (initialUploadResult?.buildResult.status === 'FAILURE') {
110
+ subTasks =
111
+ initialUploadResult.buildResult[PROJECT_BUILD_TEXT.SUBTASK_KEY];
112
+ }
113
+ else if (initialUploadResult?.deployResult?.status === 'FAILURE') {
114
+ subTasks =
115
+ initialUploadResult.deployResult[PROJECT_DEPLOY_TEXT.SUBTASK_KEY];
116
+ }
117
+ const failedSubTasks = subTasks.filter(task => task.status === 'FAILURE');
118
+ uiLogger.log('');
119
+ failedSubTasks.forEach(failedSubTask => {
120
+ uiLogger.error(failedSubTask.errorMessage);
121
+ });
122
+ uiLogger.log('');
123
+ process.exit(EXIT_CODES.ERROR);
124
+ }
125
+ return initialUploadResult.buildResult;
126
+ }
127
+ export async function compareLocalProjectToDeployed(projectConfig, accountId, deployedBuildId, localProjectNodes, profile) {
128
+ uiLogger.log('');
129
+ if (!deployedBuildId) {
130
+ uiLogger.error(lib.localDevHelpers.project.compareLocalProjectToDeployed.noDeployedBuild(projectConfig.name, uiAccountDescription(accountId)));
131
+ process.exit(EXIT_CODES.SUCCESS);
132
+ }
133
+ SpinniesManager.add('compareLocalProjectToDeployed', {
134
+ text: lib.localDevHelpers.project.compareLocalProjectToDeployed.checking,
135
+ });
136
+ const isUpToDate = await isDeployedProjectUpToDateWithLocal(projectConfig, accountId, deployedBuildId, localProjectNodes, profile);
137
+ if (isUpToDate) {
138
+ SpinniesManager.succeed('compareLocalProjectToDeployed', {
139
+ text: lib.localDevHelpers.project.compareLocalProjectToDeployed.upToDate,
140
+ });
141
+ }
142
+ else {
143
+ SpinniesManager.fail('compareLocalProjectToDeployed', {
144
+ text: lib.localDevHelpers.project.compareLocalProjectToDeployed
145
+ .notUpToDate,
146
+ });
147
+ uiLogger.log('');
148
+ uiLogger.log(lib.localDevHelpers.project.compareLocalProjectToDeployed.notUpToDateExplanation(profile));
149
+ process.exit(EXIT_CODES.SUCCESS);
150
+ }
151
+ }
152
+ export async function getDeployedProjectNodes(projectConfig, accountId, deployedBuildId, profile) {
153
+ let tempDir = null;
154
+ try {
155
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'hubspot-project-compare-'));
156
+ const { data: zippedProject } = await downloadProject(accountId, projectConfig.name, deployedBuildId);
157
+ await extractZipArchive(zippedProject, sanitizeFileName(projectConfig.name), tempDir, { hideLogs: true });
158
+ const deployedProjectSourceDir = path.join(tempDir, projectConfig.srcDir);
159
+ const { intermediateNodesIndexedByUid } = await translate({
160
+ projectSourceDir: deployedProjectSourceDir,
161
+ platformVersion: projectConfig.platformVersion,
162
+ accountId: accountId,
163
+ }, { profile });
164
+ return intermediateNodesIndexedByUid;
165
+ }
166
+ finally {
167
+ if (tempDir && (await fs.pathExists(tempDir))) {
168
+ await fs.remove(tempDir);
169
+ }
170
+ }
171
+ }
172
+ export async function isDeployedProjectUpToDateWithLocal(projectConfig, accountId, deployedBuildId, localProjectNodes, profile) {
173
+ try {
174
+ const deployedProjectNodes = await getDeployedProjectNodes(projectConfig, accountId, deployedBuildId, profile);
175
+ return isDeepEqual(localProjectNodes, deployedProjectNodes, ['localDev']);
176
+ }
177
+ catch (err) {
178
+ debugError(err);
179
+ return false;
180
+ }
181
+ }
182
+ export async function checkAndInstallDependencies() {
183
+ uiLogger.log('');
184
+ SpinniesManager.add('checkingDependencies', {
185
+ text: lib.localDevHelpers.project.checkAndInstallDependencies
186
+ .checkingDependencies,
187
+ });
188
+ try {
189
+ const installLocations = await getProjectPackageJsonLocations();
190
+ const locationsToInstall = [];
191
+ for (const location of installLocations) {
192
+ if (await hasMissingPackages(location)) {
193
+ locationsToInstall.push(location);
194
+ }
195
+ }
196
+ if (locationsToInstall.length > 0) {
197
+ SpinniesManager.remove('checkingDependencies');
198
+ await installPackages({ installLocations: locationsToInstall });
199
+ }
200
+ else {
201
+ SpinniesManager.succeed('checkingDependencies', {
202
+ text: lib.localDevHelpers.project.checkAndInstallDependencies
203
+ .dependenciesUpToDate,
204
+ });
205
+ }
206
+ uiLogger.log('');
207
+ }
208
+ catch (e) {
209
+ logError(e);
210
+ SpinniesManager.fail('checkingDependencies', {
211
+ text: lib.localDevHelpers.project.checkAndInstallDependencies
212
+ .dependenciesFailure,
213
+ });
214
+ process.exit(EXIT_CODES.ERROR);
215
+ }
216
+ }
@@ -0,0 +1,8 @@
1
+ import { LocalDevDeployWebsocketMessage } from '../../../types/LocalDev.js';
2
+ import { CLIWebSocketMessage } from '../../CLIWebSocketServer.js';
3
+ export declare function isUploadWebsocketMessage(message: CLIWebSocketMessage): boolean;
4
+ export declare function isDeployWebsocketMessage(message: CLIWebSocketMessage): message is LocalDevDeployWebsocketMessage;
5
+ export declare function isViewedWelcomeScreenWebsocketMessage(message: CLIWebSocketMessage): boolean;
6
+ export declare function isAppInstallSuccessWebsocketMessage(message: CLIWebSocketMessage): boolean;
7
+ export declare function isAppInstallInitiatedWebsocketMessage(message: CLIWebSocketMessage): boolean;
8
+ export declare function isAppInstallFailureWebsocketMessage(message: CLIWebSocketMessage): boolean;
@@ -0,0 +1,19 @@
1
+ import { LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES } from '../../constants.js';
2
+ export function isUploadWebsocketMessage(message) {
3
+ return message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.UPLOAD;
4
+ }
5
+ export function isDeployWebsocketMessage(message) {
6
+ return message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.DEPLOY;
7
+ }
8
+ export function isViewedWelcomeScreenWebsocketMessage(message) {
9
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.VIEWED_WELCOME_SCREEN);
10
+ }
11
+ export function isAppInstallSuccessWebsocketMessage(message) {
12
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_SUCCESS);
13
+ }
14
+ export function isAppInstallInitiatedWebsocketMessage(message) {
15
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_INITIATED);
16
+ }
17
+ export function isAppInstallFailureWebsocketMessage(message) {
18
+ return (message.type === LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.APP_INSTALL_FAILURE);
19
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Used to surface warnings when users attempt to interact with new platform versions
3
+ * that were released after this version of the CLI was released.
4
+ *
5
+ * We are unable to reliably support versions of projects that are newer than any given CLI release
6
+ * */
7
+ export declare const LATEST_SUPPORTED_PLATFORM_VERSION = "2026.03";
8
+ export declare function isV2Project(platformVersion?: string | null): boolean;
9
+ export declare function isUnsupportedPlatformVersion(platformVersion?: string | null): boolean;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Used to surface warnings when users attempt to interact with new platform versions
3
+ * that were released after this version of the CLI was released.
4
+ *
5
+ * We are unable to reliably support versions of projects that are newer than any given CLI release
6
+ * */
7
+ export const LATEST_SUPPORTED_PLATFORM_VERSION = '2026.03';
8
+ function parsePlatformVersion(platformVersion) {
9
+ const [year, minor] = platformVersion.split(/[.-]/);
10
+ return {
11
+ year: Number(year),
12
+ minor: Number(minor),
13
+ };
14
+ }
15
+ export function isV2Project(platformVersion) {
16
+ if (!platformVersion || typeof platformVersion !== 'string') {
17
+ return false;
18
+ }
19
+ if (platformVersion.toLowerCase() === 'unstable') {
20
+ return true;
21
+ }
22
+ const { year, minor } = parsePlatformVersion(platformVersion);
23
+ return (year === 2025 && minor >= 2) || year > 2025;
24
+ }
25
+ export function isUnsupportedPlatformVersion(platformVersion) {
26
+ if (!platformVersion || typeof platformVersion !== 'string') {
27
+ return false;
28
+ }
29
+ if (platformVersion.toLowerCase() === 'unstable') {
30
+ return false;
31
+ }
32
+ const { year, minor } = parsePlatformVersion(platformVersion);
33
+ if (isNaN(year) || isNaN(minor)) {
34
+ return false;
35
+ }
36
+ const { year: latestSupportedYear, minor: latestSupportedMinor } = parsePlatformVersion(LATEST_SUPPORTED_PLATFORM_VERSION);
37
+ return (year > latestSupportedYear ||
38
+ (year === latestSupportedYear && minor > latestSupportedMinor));
39
+ }
@@ -0,0 +1,10 @@
1
+ import { FileResult } from 'tmp';
2
+ import { Build } from '@hubspot/local-dev-lib/types/Build';
3
+ import { Deploy } from '@hubspot/local-dev-lib/types/Deploy';
4
+ import { ProjectConfig, ProjectTask, ProjectPollResult } from '../../types/Projects.js';
5
+ type PollTaskStatusFunction<T extends ProjectTask> = (accountId: number, taskName: string, taskId: number, deployedBuildId: number | null, silenceLogs?: boolean) => Promise<T>;
6
+ export declare const pollBuildStatus: PollTaskStatusFunction<Build>;
7
+ export declare const pollDeployStatus: PollTaskStatusFunction<Deploy>;
8
+ export declare function displayWarnLogs(accountId: number, projectName: string, taskId: number, isDeploy?: boolean): Promise<void>;
9
+ export declare function pollProjectBuildAndDeploy(accountId: number, projectConfig: ProjectConfig, tempFile: FileResult, buildId: number, silenceLogs?: boolean): Promise<ProjectPollResult>;
10
+ export {};
@@ -0,0 +1,344 @@
1
+ import chalk from 'chalk';
2
+ import { getBuildStatus, getBuildStructure, getDeployStatus, getDeployStructure, fetchBuildWarnLogs, fetchDeployWarnLogs, } from '@hubspot/local-dev-lib/api/projects';
3
+ import { DEFAULT_POLLING_DELAY, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, PROJECT_TASK_TYPES, PROJECT_ERROR_TYPES, } from '../constants.js';
4
+ import SpinniesManager from '../ui/SpinniesManager.js';
5
+ import { logError, ApiErrorContext } from '../errorHandlers/index.js';
6
+ import { uiLine, uiLink, uiAccountDescription } from '../ui/index.js';
7
+ import { getProjectBuildDetailUrl, getProjectDeployDetailUrl, getProjectActivityUrl, } from './urls.js';
8
+ import { lib } from '../../lang/en.js';
9
+ import { uiLogger } from '../ui/logger.js';
10
+ import { APP_FUNCTIONS_PACKAGE_KEY as AppFunctionsPackageKey } from '@hubspot/project-parsing-lib/constants';
11
+ import { mapToInternalType } from '@hubspot/project-parsing-lib/transform';
12
+ const SPINNER_STATUS = {
13
+ SPINNING: 'spinning',
14
+ };
15
+ function getSubtasks(task) {
16
+ if ('subbuildStatuses' in task) {
17
+ return task.subbuildStatuses;
18
+ }
19
+ return task.subdeployStatuses;
20
+ }
21
+ function getSubtaskName(task) {
22
+ if ('buildName' in task) {
23
+ return task.buildName;
24
+ }
25
+ return task.deployName;
26
+ }
27
+ function getSubtaskType(task) {
28
+ if ('buildType' in task) {
29
+ return task.buildType;
30
+ }
31
+ return task.deployType;
32
+ }
33
+ function handleTaskStatusError(statusText) {
34
+ const taskType = statusText.TYPE_KEY === PROJECT_BUILD_TEXT.TYPE_KEY ? 'build' : 'deploy';
35
+ throw new Error(lib.projectBuildAndDeploy.makePollTaskStatusFunc.errorFetchingTaskStatus(taskType));
36
+ }
37
+ function makePollTaskStatusFunc({ statusFn, structureFn, statusText, statusStrings, linkToHubSpot, }) {
38
+ return async function (accountId, taskName, taskId, deployedBuildId, silenceLogs = false) {
39
+ const displayId = deployedBuildId || taskId;
40
+ if (linkToHubSpot && !silenceLogs) {
41
+ uiLogger.log(`\n${linkToHubSpot(accountId, taskName, taskId, deployedBuildId)}\n`);
42
+ }
43
+ const overallTaskSpinniesKey = `overallTaskStatus-${statusText.STATUS_TEXT}`;
44
+ SpinniesManager.add(overallTaskSpinniesKey, {
45
+ text: 'Beginning',
46
+ succeedColor: 'white',
47
+ failColor: 'white',
48
+ failPrefix: chalk.bold('!'),
49
+ });
50
+ const [{ data: initialTaskStatus }, { data: { topLevelComponentsWithChildren: taskStructure }, },] = await Promise.all([
51
+ statusFn(accountId, taskName, taskId),
52
+ structureFn(accountId, taskName, taskId),
53
+ ]);
54
+ const subtasks = getSubtasks(initialTaskStatus);
55
+ const hiddenComponentBuildIds = [];
56
+ const tasksById = subtasks
57
+ .filter(subtask => {
58
+ // TODO: Remove this filtering logic when visible=false for SERVERLESS_PACKAGE
59
+ const shouldBeVisible = getSubtaskType(subtask) !== mapToInternalType(AppFunctionsPackageKey);
60
+ if (!shouldBeVisible) {
61
+ hiddenComponentBuildIds.push(subtask.id);
62
+ }
63
+ return shouldBeVisible;
64
+ })
65
+ .reduce((acc, subtask) => {
66
+ const { id, visible } = subtask;
67
+ if (visible) {
68
+ acc[id] = subtask;
69
+ }
70
+ return acc;
71
+ }, {});
72
+ const structuredTasks = Object.keys(taskStructure)
73
+ // TODO: Remove this filtering logic when visible=false for SERVERLESS_PACKAGE
74
+ .filter(buildId => !hiddenComponentBuildIds.includes(buildId))
75
+ .map(key => {
76
+ return {
77
+ ...tasksById[key],
78
+ subtasks: taskStructure[key]
79
+ .filter(taskId => Boolean(tasksById[taskId]))
80
+ .map(taskId => tasksById[taskId]),
81
+ };
82
+ });
83
+ const numComponents = structuredTasks.length;
84
+ const componentCountText = silenceLogs
85
+ ? ''
86
+ : numComponents === 1
87
+ ? lib.projectBuildAndDeploy.makePollTaskStatusFunc
88
+ .componentCountSingular
89
+ : lib.projectBuildAndDeploy.makePollTaskStatusFunc.componentCount(numComponents);
90
+ SpinniesManager.update(overallTaskSpinniesKey, {
91
+ text: `${statusStrings.INITIALIZE(taskName, displayId)}\n${componentCountText}`,
92
+ });
93
+ if (!silenceLogs) {
94
+ function addTaskSpinner(subtask, indent, newline) {
95
+ const taskName = getSubtaskName(subtask);
96
+ const taskType = getSubtaskType(subtask);
97
+ const formattedTaskType = PROJECT_TASK_TYPES[taskType]
98
+ ? `[${PROJECT_TASK_TYPES[taskType]}]`
99
+ : '';
100
+ const text = `${indent <= 2 ? statusText.STATUS_TEXT : ''} ${chalk.bold(taskName)} ${formattedTaskType} ...${newline ? '\n' : ''}`;
101
+ SpinniesManager.add(subtask.id, {
102
+ text,
103
+ indent,
104
+ succeedColor: 'white',
105
+ failColor: 'white',
106
+ });
107
+ }
108
+ structuredTasks.forEach(task => {
109
+ addTaskSpinner(task, 2, !task.subtasks || task.subtasks.length === 0);
110
+ task.subtasks.forEach((subtask, i) => addTaskSpinner(subtask, 4, i === task.subtasks.length - 1));
111
+ });
112
+ }
113
+ return new Promise((resolve, reject) => {
114
+ const pollInterval = setInterval(async () => {
115
+ try {
116
+ let taskStatus;
117
+ try {
118
+ const { data } = await statusFn(accountId, taskName, taskId);
119
+ taskStatus = data;
120
+ }
121
+ catch (e) {
122
+ uiLogger.debug(e);
123
+ logError(e, new ApiErrorContext({
124
+ accountId,
125
+ projectName: taskName,
126
+ }));
127
+ handleTaskStatusError(statusText);
128
+ }
129
+ const subtasks = getSubtasks(taskStatus);
130
+ if (!taskStatus || !taskStatus.status || !subtasks) {
131
+ handleTaskStatusError(statusText);
132
+ }
133
+ const { status } = taskStatus;
134
+ if (SpinniesManager.hasActiveSpinners()) {
135
+ subtasks.forEach(subtask => {
136
+ const { id, status } = subtask;
137
+ const spinner = SpinniesManager.pick(id);
138
+ if (!spinner || spinner.status !== SPINNER_STATUS.SPINNING) {
139
+ return;
140
+ }
141
+ const topLevelTask = structuredTasks.find(t => t.id == id);
142
+ if (status === statusText.STATES.SUCCESS ||
143
+ status === statusText.STATES.FAILURE) {
144
+ const taskStatusText = subtask.status === statusText.STATES.SUCCESS
145
+ ? lib.projectBuildAndDeploy.makePollTaskStatusFunc
146
+ .successStatusText
147
+ : lib.projectBuildAndDeploy.makePollTaskStatusFunc
148
+ .failedStatusText;
149
+ const hasNewline = spinner?.text?.includes('\n') || Boolean(topLevelTask);
150
+ const updatedText = `${spinner?.text?.replace('\n', '')} ${taskStatusText}${hasNewline ? '\n' : ''}`;
151
+ if (status === statusText.STATES.SUCCESS) {
152
+ SpinniesManager.succeed(id, { text: updatedText });
153
+ }
154
+ else {
155
+ SpinniesManager.fail(id, { text: updatedText });
156
+ }
157
+ if (topLevelTask) {
158
+ topLevelTask.subtasks.forEach(currentSubtask => SpinniesManager.remove(currentSubtask.id));
159
+ }
160
+ }
161
+ });
162
+ if (status === statusText.STATES.SUCCESS) {
163
+ SpinniesManager.succeed(overallTaskSpinniesKey, {
164
+ text: statusStrings.SUCCESS(taskName, displayId),
165
+ });
166
+ clearInterval(pollInterval);
167
+ resolve(taskStatus);
168
+ }
169
+ else if (status === statusText.STATES.FAILURE) {
170
+ SpinniesManager.fail(overallTaskSpinniesKey, {
171
+ text: statusStrings.FAIL(taskName, displayId),
172
+ });
173
+ if (!silenceLogs) {
174
+ const failedSubtasks = subtasks.filter(subtask => subtask.status === 'FAILURE');
175
+ uiLine();
176
+ uiLogger.log(`${statusStrings.SUBTASK_FAIL(failedSubtasks.length === 1
177
+ ? getSubtaskName(failedSubtasks[0])
178
+ : failedSubtasks.length + ' components', displayId)}\n`);
179
+ uiLogger.log(lib.projectBuildAndDeploy.makePollTaskStatusFunc.errorSummary);
180
+ uiLine();
181
+ const displayErrors = failedSubtasks.filter(subtask => subtask?.standardError?.subCategory !==
182
+ PROJECT_ERROR_TYPES.SUBBUILD_FAILED &&
183
+ subtask?.standardError?.subCategory !==
184
+ PROJECT_ERROR_TYPES.SUBDEPLOY_FAILED);
185
+ displayErrors.forEach(subTask => {
186
+ uiLogger.log(`\n--- ${chalk.bold(getSubtaskName(subTask))} failed with the following error ---`);
187
+ uiLogger.error(subTask.errorMessage);
188
+ // Log nested errors
189
+ if (subTask.standardError && subTask.standardError.errors) {
190
+ uiLogger.log('');
191
+ subTask.standardError.errors.forEach(error => {
192
+ uiLogger.log(error.message);
193
+ });
194
+ }
195
+ });
196
+ }
197
+ clearInterval(pollInterval);
198
+ resolve(taskStatus);
199
+ }
200
+ else if (!subtasks.length) {
201
+ clearInterval(pollInterval);
202
+ resolve(taskStatus);
203
+ }
204
+ }
205
+ }
206
+ catch (e) {
207
+ clearInterval(pollInterval);
208
+ reject(e);
209
+ }
210
+ }, DEFAULT_POLLING_DELAY);
211
+ });
212
+ };
213
+ }
214
+ function pollBuildAutodeployStatus(accountId, taskName, buildId) {
215
+ return new Promise((resolve, reject) => {
216
+ let maxIntervals = (15 * 1000) / DEFAULT_POLLING_DELAY; // Num of intervals in ~15s
217
+ const pollInterval = setInterval(async () => {
218
+ let build;
219
+ try {
220
+ const response = await getBuildStatus(accountId, taskName, buildId);
221
+ build = response.data;
222
+ }
223
+ catch (e) {
224
+ uiLogger.debug(e);
225
+ return reject(new Error(lib.projectBuildAndDeploy.pollBuildAutodeployStatusError(buildId)));
226
+ }
227
+ if (!build || !build.status) {
228
+ return reject(new Error(lib.projectBuildAndDeploy.pollBuildAutodeployStatusError(buildId)));
229
+ }
230
+ if (build.deployStatusTaskLocator || maxIntervals <= 0) {
231
+ clearInterval(pollInterval);
232
+ resolve(build);
233
+ }
234
+ else {
235
+ maxIntervals -= 1;
236
+ }
237
+ }, DEFAULT_POLLING_DELAY);
238
+ });
239
+ }
240
+ export const pollBuildStatus = makePollTaskStatusFunc({
241
+ linkToHubSpot: (accountId, taskName, taskId) => uiLink(`View build #${taskId} in HubSpot`, getProjectBuildDetailUrl(taskName, taskId, accountId)),
242
+ statusFn: getBuildStatus,
243
+ structureFn: getBuildStructure,
244
+ statusText: PROJECT_BUILD_TEXT,
245
+ statusStrings: {
246
+ INITIALIZE: (name, buildId) => `Building ${chalk.bold(name)} #${buildId}`,
247
+ SUCCESS: (name, buildId) => `Built ${chalk.bold(name)} #${buildId}`,
248
+ FAIL: (name, buildId) => `Failed to build ${chalk.bold(name)} #${buildId}`,
249
+ SUBTASK_FAIL: (name, buildId) => `Build #${buildId} failed because there was a problem\nbuilding ${chalk.bold(name)}`,
250
+ },
251
+ });
252
+ export const pollDeployStatus = makePollTaskStatusFunc({
253
+ linkToHubSpot: (accountId, taskName, taskId, deployedBuildId) => uiLink(`View deploy of build #${deployedBuildId} in HubSpot`, getProjectDeployDetailUrl(taskName, taskId, accountId)),
254
+ statusFn: getDeployStatus,
255
+ structureFn: getDeployStructure,
256
+ statusText: PROJECT_DEPLOY_TEXT,
257
+ statusStrings: {
258
+ INITIALIZE: (name, buildId) => `Deploying build #${buildId} in ${chalk.bold(name)}`,
259
+ SUCCESS: (name, buildId) => `Deployed build #${buildId} in ${chalk.bold(name)}`,
260
+ FAIL: (name, buildId) => `Failed to deploy build #${buildId} in ${chalk.bold(name)}`,
261
+ SUBTASK_FAIL: (name, deployedBuildId) => `Deploy for build #${deployedBuildId} failed because there was a\nproblem deploying ${chalk.bold(name)}`,
262
+ },
263
+ });
264
+ export async function displayWarnLogs(accountId, projectName, taskId, isDeploy = false) {
265
+ let result;
266
+ if (isDeploy) {
267
+ try {
268
+ const { data } = await fetchDeployWarnLogs(accountId, projectName, taskId);
269
+ result = data;
270
+ }
271
+ catch (e) {
272
+ logError(e);
273
+ }
274
+ }
275
+ else {
276
+ try {
277
+ const { data } = await fetchBuildWarnLogs(accountId, projectName, taskId);
278
+ result = data;
279
+ }
280
+ catch (e) {
281
+ logError(e);
282
+ }
283
+ }
284
+ if (result && result.logs) {
285
+ const dedupedLogs = result.logs.reduce((acc, log) => acc.add(log.message), new Set());
286
+ Array.from(dedupedLogs).forEach((log, i) => {
287
+ uiLogger.warn(log);
288
+ if (i < dedupedLogs.size - 1) {
289
+ uiLogger.log('');
290
+ }
291
+ });
292
+ }
293
+ }
294
+ export async function pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, buildId, silenceLogs = false) {
295
+ let buildStatus = await pollBuildStatus(accountId, projectConfig.name, buildId, null, silenceLogs);
296
+ if (!silenceLogs) {
297
+ uiLine();
298
+ }
299
+ const result = {
300
+ succeeded: true,
301
+ buildId,
302
+ buildResult: buildStatus,
303
+ deployResult: null,
304
+ };
305
+ if (buildStatus.status === 'FAILURE') {
306
+ result.succeeded = false;
307
+ return result;
308
+ }
309
+ else if (buildStatus.isAutoDeployEnabled) {
310
+ if (!silenceLogs) {
311
+ uiLogger.log(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.buildSucceededAutomaticallyDeploying(buildId, uiAccountDescription(accountId)));
312
+ await displayWarnLogs(accountId, projectConfig.name, buildId);
313
+ }
314
+ // autoDeployId of 0 indicates a skipped deploy
315
+ const getIsDeploying = () => buildStatus.autoDeployId > 0 && buildStatus.deployStatusTaskLocator;
316
+ // Sometimes the deploys do not immediately initiate, give them a chance to kick off
317
+ if (!getIsDeploying()) {
318
+ buildStatus = await pollBuildAutodeployStatus(accountId, projectConfig.name, buildId);
319
+ }
320
+ if (getIsDeploying()) {
321
+ const deployStatus = await pollDeployStatus(accountId, projectConfig.name, Number(buildStatus.deployStatusTaskLocator.id), buildId, silenceLogs);
322
+ result.deployResult = deployStatus;
323
+ if (deployStatus.status === 'FAILURE') {
324
+ result.succeeded = false;
325
+ }
326
+ }
327
+ else if (!silenceLogs) {
328
+ uiLogger.log(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.unableToFindAutodeployStatus(buildId, uiLink(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.viewDeploys, getProjectActivityUrl(projectConfig.name, accountId))));
329
+ }
330
+ }
331
+ try {
332
+ if (tempFile) {
333
+ tempFile.removeCallback();
334
+ uiLogger.debug(lib.projectBuildAndDeploy.pollProjectBuildAndDeploy.cleanedUpTempFile(tempFile.name));
335
+ }
336
+ }
337
+ catch (e) {
338
+ logError(e);
339
+ }
340
+ if (result && result.deployResult) {
341
+ await displayWarnLogs(accountId, projectConfig.name, result.deployResult.deployId, true);
342
+ }
343
+ return result;
344
+ }
@@ -0,0 +1,17 @@
1
+ import { type HsProfileFile } from '@hubspot/project-parsing-lib/profiles';
2
+ import { ProjectConfig } from '../../types/Projects.js';
3
+ export declare function logProfileHeader(profileName: string): void;
4
+ export declare function logProfileFooter(profile: HsProfileFile, includeVariables?: boolean): void;
5
+ export declare function loadProfile(projectConfig: ProjectConfig | null, projectDir: string | null, profileName: string): HsProfileFile | never;
6
+ export declare function enforceProfileUsage(projectConfig: ProjectConfig | null, projectDir: string | null): Promise<void>;
7
+ export declare function loadAndValidateProfile(projectConfig: ProjectConfig | null, projectDir: string | null, profileName: string | undefined, silent?: boolean): Promise<number | undefined>;
8
+ type ValidateProjectForProfileOptions = {
9
+ projectConfig: ProjectConfig;
10
+ projectDir: string;
11
+ profileName: string;
12
+ derivedAccountId: number;
13
+ indentSpinners?: boolean;
14
+ silent?: boolean;
15
+ };
16
+ export declare function validateProjectForProfile({ projectConfig, projectDir, profileName, derivedAccountId, indentSpinners, silent, }: ValidateProjectForProfileOptions): Promise<(string | Error)[]>;
17
+ export {};