@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,9 @@
1
+ type UploadPromptResponse = {
2
+ src: string;
3
+ dest: string;
4
+ };
5
+ export declare function uploadPrompt(promptOptions?: {
6
+ src?: string;
7
+ dest?: string;
8
+ }): Promise<UploadPromptResponse>;
9
+ export {};
@@ -0,0 +1,32 @@
1
+ import path from 'path';
2
+ import { getCwd } from '@hubspot/local-dev-lib/path';
3
+ import { promptUser } from './promptUtils.js';
4
+ import { lib } from '../../lang/en.js';
5
+ export async function uploadPrompt(promptOptions = {}) {
6
+ return promptUser([
7
+ {
8
+ name: 'src',
9
+ message: lib.prompts.uploadPrompt.enterSrc,
10
+ when: !promptOptions.src,
11
+ default: '.',
12
+ validate: (input) => {
13
+ if (!input) {
14
+ return lib.prompts.uploadPrompt.errors.srcRequired;
15
+ }
16
+ return true;
17
+ },
18
+ },
19
+ {
20
+ name: 'dest',
21
+ message: lib.prompts.uploadPrompt.enterDest,
22
+ when: !promptOptions.dest,
23
+ default: path.basename(getCwd()),
24
+ validate: (input) => {
25
+ if (!input) {
26
+ return lib.prompts.uploadPrompt.errors.destRequired;
27
+ }
28
+ return true;
29
+ },
30
+ },
31
+ ]);
32
+ }
@@ -0,0 +1,14 @@
1
+ import { AccountType, HubSpotConfigAccount } from '@hubspot/local-dev-lib/types/Accounts';
2
+ import { Environment } from '@hubspot/local-dev-lib/types/Accounts';
3
+ import { SandboxAccountType } from '../types/Sandboxes.js';
4
+ export declare const SANDBOX_TYPE_MAP: {
5
+ [key: string]: SandboxAccountType;
6
+ };
7
+ export declare const SANDBOX_TYPE_MAP_V2: {
8
+ readonly STANDARD_SANDBOX: "STANDARD";
9
+ readonly DEVELOPMENT_SANDBOX: "DEVELOPER";
10
+ };
11
+ export declare function getSandboxTypeAsString(accountType?: AccountType): string;
12
+ export declare function getHasSandboxesByType(parentAccountConfig: HubSpotConfigAccount, type: AccountType): boolean;
13
+ export declare function validateSandboxUsageLimits(accountConfig: HubSpotConfigAccount, sandboxType: AccountType, env: Environment): Promise<void>;
14
+ export declare function handleSandboxCreateError(err: unknown, env: Environment, name: string, accountId: number): never;
@@ -0,0 +1,105 @@
1
+ import { getSandboxUsageLimits } from '@hubspot/local-dev-lib/api/sandboxHubs';
2
+ import { getAllConfigAccounts } from '@hubspot/local-dev-lib/config';
3
+ import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
4
+ import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
5
+ import { isMissingScopeError, isSpecifiedError, } from '@hubspot/local-dev-lib/errors/index';
6
+ import { uiLogger } from './ui/logger.js';
7
+ import { lib } from '../lang/en.js';
8
+ import { logError } from './errorHandlers/index.js';
9
+ import { uiAccountDescription } from './ui/index.js';
10
+ export const SANDBOX_TYPE_MAP = {
11
+ dev: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
12
+ developer: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
13
+ development: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
14
+ standard: HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX,
15
+ };
16
+ export const SANDBOX_TYPE_MAP_V2 = {
17
+ [HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX]: 'STANDARD',
18
+ [HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX]: 'DEVELOPER',
19
+ };
20
+ export function getSandboxTypeAsString(accountType) {
21
+ if (accountType === HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
22
+ return 'development'; // Only place we're using this specific name
23
+ }
24
+ return 'standard';
25
+ }
26
+ export function getHasSandboxesByType(parentAccountConfig, type) {
27
+ const parentPortalId = parentAccountConfig.accountId;
28
+ const accountsList = getAllConfigAccounts();
29
+ for (const portal of accountsList) {
30
+ if ((portal.parentAccountId !== null ||
31
+ portal.parentAccountId !== undefined) &&
32
+ portal.parentAccountId === parentPortalId &&
33
+ portal.accountType &&
34
+ portal.accountType === type) {
35
+ return true;
36
+ }
37
+ }
38
+ return false;
39
+ }
40
+ export async function validateSandboxUsageLimits(accountConfig, sandboxType, env) {
41
+ const accountId = accountConfig.accountId;
42
+ if (!accountId) {
43
+ throw new Error(lib.sandbox.create.failure.usageLimitsFetch);
44
+ }
45
+ const { data: { usage }, } = await getSandboxUsageLimits(accountId);
46
+ if (!usage) {
47
+ throw new Error(lib.sandbox.create.failure.usageLimitsFetch);
48
+ }
49
+ if (sandboxType === HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
50
+ if (usage['DEVELOPER'].available === 0) {
51
+ const devSandboxLimit = usage['DEVELOPER'].limit;
52
+ const hasDevelopmentSandboxes = getHasSandboxesByType(accountConfig, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX);
53
+ if (hasDevelopmentSandboxes) {
54
+ throw new Error(lib.sandbox.create.developer.failure.alreadyInConfig(accountId, devSandboxLimit));
55
+ }
56
+ else {
57
+ const baseUrl = getHubSpotWebsiteOrigin(env);
58
+ throw new Error(lib.sandbox.create.developer.failure.limit(accountId, devSandboxLimit, `${baseUrl}/sandboxes-developer/${accountId}/development`));
59
+ }
60
+ }
61
+ }
62
+ if (sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX) {
63
+ if (usage['STANDARD'].available === 0) {
64
+ const standardSandboxLimit = usage['STANDARD'].limit;
65
+ const hasStandardSandboxes = getHasSandboxesByType(accountConfig, HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX);
66
+ if (hasStandardSandboxes) {
67
+ throw new Error(lib.sandbox.create.standard.failure.alreadyInConfig(accountId, standardSandboxLimit));
68
+ }
69
+ else {
70
+ const baseUrl = getHubSpotWebsiteOrigin(env);
71
+ throw new Error(lib.sandbox.create.standard.failure.limit(accountId, standardSandboxLimit, `${baseUrl}/sandboxes-developer/${accountId}/standard`));
72
+ }
73
+ }
74
+ }
75
+ }
76
+ export function handleSandboxCreateError(err, env, name, accountId) {
77
+ if (isMissingScopeError(err)) {
78
+ uiLogger.error(lib.sandbox.create.failure.scopes.message);
79
+ const websiteOrigin = getHubSpotWebsiteOrigin(env);
80
+ const url = `${websiteOrigin}/personal-access-key/${accountId}`;
81
+ uiLogger.info(lib.sandbox.create.failure.scopes.instructions(uiAccountDescription(accountId), url));
82
+ }
83
+ else if (isSpecifiedError(err, {
84
+ statusCode: 403,
85
+ category: 'BANNED',
86
+ subCategory: 'SandboxErrors.USER_ACCESS_NOT_ALLOWED',
87
+ })) {
88
+ uiLogger.log('');
89
+ uiLogger.error(lib.sandbox.create.failure.invalidUser(name, accountId));
90
+ uiLogger.log('');
91
+ }
92
+ else if (isSpecifiedError(err, {
93
+ statusCode: 403,
94
+ category: 'BANNED',
95
+ subCategory: 'SandboxErrors.DEVELOPMENT_SANDBOX_ACCESS_NOT_ALLOWED',
96
+ })) {
97
+ uiLogger.log('');
98
+ uiLogger.error(lib.sandbox.create.failure['403Gating'](name, accountId));
99
+ uiLogger.log('');
100
+ }
101
+ else {
102
+ logError(err);
103
+ }
104
+ throw err;
105
+ }
@@ -0,0 +1,3 @@
1
+ import { Schema } from '@hubspot/local-dev-lib/types/Schemas';
2
+ export declare function logSchemas(schemas: Array<Schema>): void;
3
+ export declare function listSchemas(accountId: number): Promise<void>;
package/lib/schema.js ADDED
@@ -0,0 +1,27 @@
1
+ import chalk from 'chalk';
2
+ import { table, getBorderCharacters } from 'table';
3
+ import { fetchObjectSchemas } from '@hubspot/local-dev-lib/api/customObjects';
4
+ import { uiLogger } from './ui/logger.js';
5
+ export function logSchemas(schemas) {
6
+ const data = schemas
7
+ .map(r => [r.labels.singular, r.name, r.objectTypeId || ''])
8
+ .sort((a, b) => (a[1] > b[1] ? 1 : -1));
9
+ if (data.length === 0) {
10
+ uiLogger.log('No Schemas were found');
11
+ return;
12
+ }
13
+ data.unshift([
14
+ chalk.bold('Label'),
15
+ chalk.bold('Name'),
16
+ chalk.bold('objectTypeId'),
17
+ ]);
18
+ const tableConfig = {
19
+ singleLine: true,
20
+ border: getBorderCharacters('honeywell'),
21
+ };
22
+ uiLogger.log(table(data, tableConfig));
23
+ }
24
+ export async function listSchemas(accountId) {
25
+ const { data } = await fetchObjectSchemas(accountId);
26
+ logSchemas(data.results);
27
+ }
@@ -0,0 +1,4 @@
1
+ import { HubSpotPromise } from '@hubspot/local-dev-lib/types/Http';
2
+ import { FunctionLog, GetFunctionLogsResponse } from '@hubspot/local-dev-lib/types/Functions';
3
+ export declare function tailLogs(accountId: number, name: string, fetchLatest: () => HubSpotPromise<FunctionLog>, tailCall: (after?: string) => HubSpotPromise<GetFunctionLogsResponse>, compact?: boolean): Promise<void>;
4
+ export declare function outputBuildLog(buildLogUrl: string): Promise<string>;
@@ -0,0 +1,154 @@
1
+ import https from 'https';
2
+ import chalk from 'chalk';
3
+ import { uiLogger } from './ui/logger.js';
4
+ import { isHubSpotHttpError, isMissingScopeError, } from '@hubspot/local-dev-lib/errors/index';
5
+ import { SCOPE_GROUPS, PERSONAL_ACCESS_KEY_AUTH_METHOD, } from '@hubspot/local-dev-lib/constants/auth';
6
+ import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
7
+ import { fetchScopeData } from '@hubspot/local-dev-lib/api/localDevAuth';
8
+ import { outputLogs } from './ui/serverlessFunctionLogs.js';
9
+ import { logError, ApiErrorContext } from './errorHandlers/index.js';
10
+ import SpinniesManager from './ui/SpinniesManager.js';
11
+ import { handleExit, handleKeypress } from './process.js';
12
+ import { lib } from '../lang/en.js';
13
+ const TAIL_DELAY = 5000;
14
+ function base64EncodeString(valueToEncode) {
15
+ if (typeof valueToEncode !== 'string') {
16
+ return valueToEncode;
17
+ }
18
+ const stringBuffer = Buffer.from(valueToEncode);
19
+ return encodeURIComponent(stringBuffer.toString('base64'));
20
+ }
21
+ async function verifyAccessKeyAndUserAccess(accountId, scopeGroup) {
22
+ const accountConfig = getConfigAccountById(accountId);
23
+ if (!accountConfig) {
24
+ return;
25
+ }
26
+ const { authType } = accountConfig;
27
+ if (authType !== PERSONAL_ACCESS_KEY_AUTH_METHOD.value) {
28
+ return;
29
+ }
30
+ let scopesData;
31
+ try {
32
+ const resp = await fetchScopeData(accountId, scopeGroup);
33
+ scopesData = resp.data;
34
+ }
35
+ catch (e) {
36
+ uiLogger.debug(lib.serverless.verifyAccessKeyAndUserAccess.fetchScopeDataError(scopeGroup));
37
+ uiLogger.debug(e);
38
+ return;
39
+ }
40
+ const { portalScopesInGroup, userScopesInGroup } = scopesData;
41
+ if (!portalScopesInGroup.length) {
42
+ uiLogger.error(lib.serverless.verifyAccessKeyAndUserAccess.portalMissingScope);
43
+ return;
44
+ }
45
+ if (!portalScopesInGroup.every(s => userScopesInGroup.includes(s))) {
46
+ uiLogger.error(lib.serverless.verifyAccessKeyAndUserAccess.userMissingScope);
47
+ }
48
+ else {
49
+ uiLogger.error(lib.serverless.verifyAccessKeyAndUserAccess.genericMissingScope);
50
+ }
51
+ }
52
+ export async function tailLogs(accountId, name, fetchLatest, tailCall, compact = false) {
53
+ let initialAfter = '';
54
+ try {
55
+ const { data: latestLog } = await fetchLatest();
56
+ initialAfter = latestLog && base64EncodeString(latestLog.id);
57
+ }
58
+ catch (e) {
59
+ // A 404 means no latest log exists(never executed)
60
+ if (isHubSpotHttpError(e) && e.status !== 404) {
61
+ if (isMissingScopeError(e)) {
62
+ await verifyAccessKeyAndUserAccess(accountId, SCOPE_GROUPS.CMS_FUNCTIONS);
63
+ }
64
+ else {
65
+ await logError(e, new ApiErrorContext({ accountId }));
66
+ }
67
+ }
68
+ }
69
+ return new Promise(resolve => {
70
+ function cleanup() {
71
+ SpinniesManager.remove('tailLogs');
72
+ SpinniesManager.remove('stopMessage');
73
+ }
74
+ let resolved = false;
75
+ const onTerminate = async () => {
76
+ if (resolved)
77
+ return;
78
+ resolved = true;
79
+ cleanup();
80
+ resolve();
81
+ };
82
+ handleExit(onTerminate);
83
+ handleKeypress(key => {
84
+ if ((key.ctrl && key.name == 'c') || key.name === 'q') {
85
+ onTerminate();
86
+ }
87
+ });
88
+ async function tail(after) {
89
+ let latestLog;
90
+ let nextAfter;
91
+ try {
92
+ const { data } = await tailCall(after);
93
+ latestLog = data;
94
+ nextAfter = latestLog.paging.next.after;
95
+ }
96
+ catch (e) {
97
+ if (isHubSpotHttpError(e) && e.status !== 404) {
98
+ logError(e, new ApiErrorContext({
99
+ accountId,
100
+ }));
101
+ }
102
+ await onTerminate();
103
+ return;
104
+ }
105
+ if (latestLog && latestLog.results.length) {
106
+ outputLogs(latestLog, {
107
+ compact,
108
+ });
109
+ }
110
+ setTimeout(async () => {
111
+ await tail(nextAfter);
112
+ }, TAIL_DELAY);
113
+ }
114
+ SpinniesManager.add('tailLogs', {
115
+ text: `Following logs for ${name}`,
116
+ });
117
+ SpinniesManager.add('stopMessage', {
118
+ text: `> Press ${chalk.bold('q')} to stop following`,
119
+ status: 'non-spinnable',
120
+ });
121
+ tail(initialAfter);
122
+ });
123
+ }
124
+ export async function outputBuildLog(buildLogUrl) {
125
+ if (!buildLogUrl) {
126
+ uiLogger.debug('Unable to display build output. No build log URL was provided.');
127
+ return '';
128
+ }
129
+ return new Promise(resolve => {
130
+ try {
131
+ https
132
+ .get(buildLogUrl, response => {
133
+ if (response.statusCode === 404) {
134
+ resolve('');
135
+ }
136
+ let data = '';
137
+ response.on('data', chunk => {
138
+ data += chunk;
139
+ });
140
+ response.on('end', () => {
141
+ uiLogger.log(data);
142
+ resolve(data);
143
+ });
144
+ })
145
+ .on('error', () => {
146
+ uiLogger.error('The build log could not be retrieved.');
147
+ });
148
+ }
149
+ catch (e) {
150
+ uiLogger.error('The build log could not be retrieved.');
151
+ resolve('');
152
+ }
153
+ });
154
+ }
@@ -0,0 +1,14 @@
1
+ import { HubSpotPromise } from '@hubspot/local-dev-lib/types/Http';
2
+ import { HubSpotHttpError } from '@hubspot/local-dev-lib/models/HubSpotHttpError';
3
+ type MockErrorResponse = {
4
+ status: number;
5
+ data: {
6
+ message?: string;
7
+ errorType?: string;
8
+ category?: string;
9
+ subCategory?: string;
10
+ };
11
+ };
12
+ export declare function mockHubSpotHttpResponse<T>(data?: any): HubSpotPromise<T>;
13
+ export declare function mockHubSpotHttpError(message: string, response: MockErrorResponse): HubSpotHttpError;
14
+ export {};
@@ -0,0 +1,18 @@
1
+ import { HubSpotHttpError } from '@hubspot/local-dev-lib/models/HubSpotHttpError';
2
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
+ export function mockHubSpotHttpResponse(data) {
4
+ return Promise.resolve({
5
+ data,
6
+ status: 200,
7
+ statusText: 'OK',
8
+ headers: {},
9
+ config: {
10
+ headers: {},
11
+ },
12
+ });
13
+ }
14
+ export function mockHubSpotHttpError(message, response) {
15
+ return new HubSpotHttpError(message, {
16
+ cause: { isAxiosError: true, response },
17
+ });
18
+ }
@@ -0,0 +1,12 @@
1
+ import { ChildProcess } from 'child_process';
2
+ interface DevServerOptions {
3
+ absoluteSrc: string;
4
+ accountName?: string;
5
+ noSsl?: boolean;
6
+ port?: number;
7
+ generateFieldsTypes?: boolean;
8
+ resetSession?: boolean;
9
+ dest: string;
10
+ }
11
+ export declare function spawnDevServer(options: DevServerOptions): Promise<ChildProcess>;
12
+ export {};
@@ -0,0 +1,148 @@
1
+ import { spawn } from 'child_process';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ import os from 'os';
5
+ import { fileURLToPath } from 'url';
6
+ import { getConfigFilePath } from '@hubspot/local-dev-lib/config';
7
+ import SpinniesManager from '../ui/SpinniesManager.js';
8
+ import { lib } from '../../lang/en.js';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ // cms-dev-server version to install to isolated cache
12
+ const TARGET_CMS_DEV_SERVER_VERSION = '1.2.16';
13
+ /**
14
+ * Ensures cms-dev-server is installed in an isolated cache directory.
15
+ * This prevents React version conflicts with the CLI.
16
+ */
17
+ async function ensureCmsDevServerCache(targetVersion) {
18
+ const cacheDir = path.join(os.homedir(), '.hscli', '.module-cache');
19
+ const packageJsonPath = path.join(cacheDir, 'node_modules', '@hubspot', 'cms-dev-server', 'package.json');
20
+ // Check if already installed with correct version
21
+ let needsInstall = true;
22
+ if (fs.existsSync(packageJsonPath)) {
23
+ try {
24
+ const installedPackage = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
25
+ if (installedPackage.version === targetVersion) {
26
+ needsInstall = false;
27
+ }
28
+ }
29
+ catch (e) {
30
+ // If we can't read the package.json, reinstall
31
+ needsInstall = true;
32
+ }
33
+ }
34
+ if (needsInstall) {
35
+ // Show spinner during install (can take 10-30 seconds)
36
+ SpinniesManager.init({
37
+ succeedColor: 'white',
38
+ });
39
+ SpinniesManager.add('cms-dev-server-install', {
40
+ text: lib.theme.cmsDevServerProcess.installStarted(targetVersion),
41
+ });
42
+ // Create cache directory
43
+ fs.mkdirSync(cacheDir, { recursive: true });
44
+ // Clear old installation if exists
45
+ const nodeModulesDir = path.join(cacheDir, 'node_modules');
46
+ if (fs.existsSync(nodeModulesDir)) {
47
+ fs.rmSync(nodeModulesDir, { recursive: true, force: true });
48
+ }
49
+ // Install cms-dev-server with production dependencies only (async to allow spinner)
50
+ await new Promise((resolve, reject) => {
51
+ const installProcess = spawn('npm', [
52
+ 'install',
53
+ `@hubspot/cms-dev-server@${targetVersion}`,
54
+ '--production',
55
+ '--no-save',
56
+ '--loglevel=error',
57
+ ], {
58
+ cwd: cacheDir,
59
+ stdio: 'ignore', // Suppress npm output
60
+ });
61
+ installProcess.on('close', code => {
62
+ if (code === 0) {
63
+ SpinniesManager.succeed('cms-dev-server-install', {
64
+ text: lib.theme.cmsDevServerProcess.installSucceeded,
65
+ });
66
+ resolve();
67
+ }
68
+ else {
69
+ SpinniesManager.fail('cms-dev-server-install', {
70
+ text: lib.theme.cmsDevServerProcess.installFailed,
71
+ });
72
+ reject(new Error(lib.theme.cmsDevServerProcess.installFailed));
73
+ }
74
+ });
75
+ installProcess.on('error', error => {
76
+ SpinniesManager.fail('cms-dev-server-install', {
77
+ text: lib.theme.cmsDevServerProcess.installFailed,
78
+ });
79
+ reject(error);
80
+ });
81
+ });
82
+ }
83
+ return cacheDir;
84
+ }
85
+ export async function spawnDevServer(options) {
86
+ const { absoluteSrc, accountName, noSsl, port, generateFieldsTypes, resetSession, dest, } = options;
87
+ // Ensure cms-dev-server is installed in isolated cache
88
+ const cacheDir = await ensureCmsDevServerCache(TARGET_CMS_DEV_SERVER_VERSION);
89
+ // Get config path to pass to createDevServer
90
+ let configPath = '';
91
+ try {
92
+ configPath = process.env.HUBSPOT_CONFIG_PATH || getConfigFilePath();
93
+ }
94
+ catch (e) {
95
+ // Config file doesn't exist - cms-dev-server will handle this gracefully
96
+ }
97
+ // Copy the runner script to the cache directory so imports resolve from there
98
+ // This is critical: Node resolves ES module imports relative to the script location,
99
+ // not the cwd. By copying the script to the cache directory, imports will resolve
100
+ // from the cache's node_modules (React 18) instead of the CLI's node_modules (React 19)
101
+ const sourceRunnerPath = path.join(__dirname, 'cmsDevServerRunner.js');
102
+ const targetRunnerPath = path.join(cacheDir, 'cmsPreviewRunner.js');
103
+ fs.copyFileSync(sourceRunnerPath, targetRunnerPath);
104
+ // Set environment variables to pass configuration to the runner script
105
+ const env = { ...process.env };
106
+ env.CMS_DEV_SERVER_SRC = absoluteSrc;
107
+ env.CMS_DEV_SERVER_DEST = dest;
108
+ env.CMS_DEV_SERVER_CONFIG = configPath;
109
+ env.CMS_DEV_SERVER_ACCOUNT = accountName || '';
110
+ env.CMS_DEV_SERVER_SSL = (!noSsl).toString();
111
+ env.CMS_DEV_SERVER_FIELD_GEN = Boolean(generateFieldsTypes).toString();
112
+ env.CMS_DEV_SERVER_RESET_SESSION = Boolean(resetSession).toString();
113
+ if (port) {
114
+ env.PORT = port.toString();
115
+ }
116
+ // Suppress Node.js deprecation warnings
117
+ env.NODE_NO_WARNINGS = '1';
118
+ // Spawn Node with the runner script from the isolated cache directory
119
+ // This ensures complete isolation from CLI's React 19
120
+ const devServer = spawn('node', [targetRunnerPath], {
121
+ stdio: 'inherit',
122
+ env,
123
+ cwd: cacheDir,
124
+ });
125
+ // Handle process events
126
+ devServer.on('error', error => {
127
+ console.error(lib.theme.cmsDevServerProcess.serverStartError(error));
128
+ process.exit(1);
129
+ });
130
+ devServer.on('exit', (code, signal) => {
131
+ if (code !== 0 && code !== null) {
132
+ console.error(lib.theme.cmsDevServerProcess.serverExit(code));
133
+ process.exit(code);
134
+ }
135
+ if (signal) {
136
+ console.error(lib.theme.cmsDevServerProcess.serverKill(signal));
137
+ process.exit(1);
138
+ }
139
+ });
140
+ // Handle CLI termination
141
+ process.once('SIGINT', () => {
142
+ devServer.kill('SIGINT');
143
+ });
144
+ process.once('SIGTERM', () => {
145
+ devServer.kill('SIGTERM');
146
+ });
147
+ return devServer;
148
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * This script runs in an isolated cache directory with cms-dev-server installed.
3
+ * It is spawned as a separate process to avoid React version conflicts with the CLI.
4
+ *
5
+ * Arguments are passed via environment variables:
6
+ * - CMS_DEV_SERVER_SRC: Source directory path
7
+ * - CMS_DEV_SERVER_DEST: Destination path
8
+ * - CMS_DEV_SERVER_CONFIG: Config file path (optional)
9
+ * - CMS_DEV_SERVER_ACCOUNT: Account name (optional)
10
+ * - CMS_DEV_SERVER_SSL: 'true' or 'false'
11
+ * - CMS_DEV_SERVER_FIELD_GEN: 'true' or 'false'
12
+ * - CMS_DEV_SERVER_RESET_SESSION: 'true' or 'false'
13
+ */
14
+ export {};
@@ -0,0 +1,90 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * This script runs in an isolated cache directory with cms-dev-server installed.
4
+ * It is spawned as a separate process to avoid React version conflicts with the CLI.
5
+ *
6
+ * Arguments are passed via environment variables:
7
+ * - CMS_DEV_SERVER_SRC: Source directory path
8
+ * - CMS_DEV_SERVER_DEST: Destination path
9
+ * - CMS_DEV_SERVER_CONFIG: Config file path (optional)
10
+ * - CMS_DEV_SERVER_ACCOUNT: Account name (optional)
11
+ * - CMS_DEV_SERVER_SSL: 'true' or 'false'
12
+ * - CMS_DEV_SERVER_FIELD_GEN: 'true' or 'false'
13
+ * - CMS_DEV_SERVER_RESET_SESSION: 'true' or 'false'
14
+ */
15
+ // Suppress library deprecation warnings (e.g., body-parser)
16
+ process.noDeprecation = true;
17
+ // Dynamic imports to use the isolated cms-dev-server installation
18
+ const { createDevServer } = await import('@hubspot/cms-dev-server');
19
+ const { walk } = await import('@hubspot/local-dev-lib/fs');
20
+ const { createIgnoreFilter } = await import('@hubspot/local-dev-lib/ignoreRules');
21
+ const { isAllowedExtension } = await import('@hubspot/local-dev-lib/path');
22
+ const { FILE_UPLOAD_RESULT_TYPES } = await import('@hubspot/local-dev-lib/constants/files');
23
+ const cliProgress = (await import('cli-progress')).default;
24
+ // Read configuration from environment variables
25
+ const src = process.env.CMS_DEV_SERVER_SRC;
26
+ const dest = process.env.CMS_DEV_SERVER_DEST;
27
+ const configPath = process.env.CMS_DEV_SERVER_CONFIG || '';
28
+ const accountName = process.env.CMS_DEV_SERVER_ACCOUNT || '';
29
+ const sslEnabled = process.env.CMS_DEV_SERVER_SSL === 'true';
30
+ const fieldGenEnabled = process.env.CMS_DEV_SERVER_FIELD_GEN === 'true';
31
+ const resetSession = process.env.CMS_DEV_SERVER_RESET_SESSION === 'true';
32
+ // Get uploadable files for preview
33
+ let filePaths = [];
34
+ try {
35
+ filePaths = await walk(src);
36
+ }
37
+ catch (e) {
38
+ console.error('Error walking directory:', e);
39
+ }
40
+ filePaths = filePaths
41
+ .filter(file => isAllowedExtension(file))
42
+ .filter(createIgnoreFilter(false));
43
+ // Create progress bar for initial upload
44
+ function startProgressBar(numFiles) {
45
+ const initialUploadProgressBar = new cliProgress.SingleBar({
46
+ gracefulExit: true,
47
+ format: '[{bar}] {percentage}% | {value}/{total} | {label}',
48
+ hideCursor: true,
49
+ }, cliProgress.Presets.rect);
50
+ initialUploadProgressBar.start(numFiles, 0, {
51
+ label: 'Preparing upload...',
52
+ });
53
+ let uploadsHaveStarted = false;
54
+ return {
55
+ onAttemptCallback: () => { },
56
+ onSuccessCallback: () => {
57
+ initialUploadProgressBar.increment();
58
+ if (!uploadsHaveStarted) {
59
+ uploadsHaveStarted = true;
60
+ initialUploadProgressBar.update(0, {
61
+ label: 'Uploading files...',
62
+ });
63
+ }
64
+ },
65
+ onFirstErrorCallback: () => { },
66
+ onRetryCallback: () => { },
67
+ onFinalErrorCallback: () => initialUploadProgressBar.increment(),
68
+ // eslint-disable-next-line
69
+ onFinishCallback: (results) => {
70
+ initialUploadProgressBar.update(numFiles, {
71
+ label: 'Upload complete',
72
+ });
73
+ initialUploadProgressBar.stop();
74
+ results.forEach(result => {
75
+ if (result.resultType === FILE_UPLOAD_RESULT_TYPES.FAILURE) {
76
+ console.error(`Failed to upload ${result.file}`);
77
+ }
78
+ });
79
+ },
80
+ };
81
+ }
82
+ const themePreviewOptions = {
83
+ filePaths,
84
+ startProgressBar,
85
+ resetSession,
86
+ dest,
87
+ };
88
+ createDevServer(src, false, // storybook
89
+ configPath, accountName, sslEnabled, fieldGenEnabled, themePreviewOptions);
90
+ export {};
@@ -0,0 +1,13 @@
1
+ import { ArgumentsCamelCase } from 'yargs';
2
+ import { LoadedProjectConfig } from '../projects/config.js';
3
+ import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs } from '../../types/Yargs.js';
4
+ export type MigrateThemesArgs = CommonArgs & AccountArgs & EnvironmentArgs & ConfigArgs & {
5
+ platformVersion: string;
6
+ };
7
+ export declare function getHasMigratableThemes(projectConfig?: LoadedProjectConfig): Promise<{
8
+ hasMigratableThemes: boolean;
9
+ migratableThemesCount: number;
10
+ }>;
11
+ export declare function validateMigrationAppsAndThemes(hasApps: number, projectConfig?: LoadedProjectConfig): Promise<void>;
12
+ export declare function handleThemesMigration(projectConfig: LoadedProjectConfig, platformVersion: string): Promise<void>;
13
+ export declare function migrateThemesV2(derivedAccountId: number, options: ArgumentsCamelCase<MigrateThemesArgs>, themeCount: number, projectConfig: LoadedProjectConfig): Promise<void>;