@hubspot/cli 8.3.0 → 8.4.0-beta.0

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 (522) hide show
  1. package/bin/cli.js +2 -0
  2. package/commands/account/auth.js +12 -22
  3. package/commands/account/clean.js +5 -6
  4. package/commands/account/createOverride.js +7 -7
  5. package/commands/account/info.js +2 -1
  6. package/commands/account/list.js +3 -5
  7. package/commands/account/remove.js +2 -3
  8. package/commands/account/removeOverride.js +8 -10
  9. package/commands/account/rename.js +5 -6
  10. package/commands/account/use.js +8 -19
  11. package/commands/api.d.ts +10 -0
  12. package/commands/api.js +164 -0
  13. package/commands/app/migrate.js +8 -8
  14. package/commands/app/secret/add.js +6 -7
  15. package/commands/app/secret/delete.js +9 -10
  16. package/commands/app/secret/list.js +6 -7
  17. package/commands/app/secret/update.js +8 -9
  18. package/commands/auth.js +12 -12
  19. package/commands/cms/app/create.js +9 -5
  20. package/commands/cms/convertFields.js +8 -8
  21. package/commands/cms/delete.js +2 -3
  22. package/commands/cms/fetch.js +7 -7
  23. package/commands/cms/function/create.js +9 -5
  24. package/commands/cms/function/deploy.js +2 -3
  25. package/commands/cms/function/list.js +11 -7
  26. package/commands/cms/function/logs.js +17 -23
  27. package/commands/cms/function/server.js +2 -3
  28. package/commands/cms/getReactModule.js +7 -8
  29. package/commands/cms/lighthouseScore.js +25 -24
  30. package/commands/cms/lint.js +4 -5
  31. package/commands/cms/list.js +5 -6
  32. package/commands/cms/module/create.js +9 -5
  33. package/commands/cms/module/marketplace-validate.js +7 -8
  34. package/commands/cms/mv.js +2 -3
  35. package/commands/cms/template/create.js +10 -6
  36. package/commands/cms/theme/create.js +5 -5
  37. package/commands/cms/theme/generate-selectors.js +5 -4
  38. package/commands/cms/theme/marketplace-validate.js +8 -9
  39. package/commands/cms/theme/preview.js +16 -8
  40. package/commands/cms/upload.js +15 -12
  41. package/commands/cms/watch.js +5 -5
  42. package/commands/cms/webpack/create.js +5 -5
  43. package/commands/completion.js +3 -5
  44. package/commands/config/migrate.js +6 -7
  45. package/commands/config/set.js +5 -6
  46. package/commands/customObject/create.js +4 -5
  47. package/commands/customObject/createSchema.js +4 -5
  48. package/commands/customObject/deleteSchema.js +4 -5
  49. package/commands/customObject/fetchAllSchemas.js +2 -3
  50. package/commands/customObject/fetchSchema.js +2 -3
  51. package/commands/customObject/listSchemas.js +2 -3
  52. package/commands/customObject/updateSchema.js +4 -5
  53. package/commands/doctor.js +8 -8
  54. package/commands/feedback.js +6 -4
  55. package/commands/filemanager/fetch.js +5 -6
  56. package/commands/filemanager/upload.js +5 -5
  57. package/commands/getStarted.js +14 -16
  58. package/commands/hubdb/clear.js +5 -6
  59. package/commands/hubdb/create.js +4 -5
  60. package/commands/hubdb/delete.js +8 -9
  61. package/commands/hubdb/fetch.js +5 -6
  62. package/commands/hubdb/list.js +16 -14
  63. package/commands/init.js +14 -17
  64. package/commands/mcp/setup.js +5 -6
  65. package/commands/mcp/start.js +2 -3
  66. package/commands/open.js +4 -5
  67. package/commands/project/add.js +10 -5
  68. package/commands/project/create.js +10 -10
  69. package/commands/project/delete.d.ts +7 -0
  70. package/commands/project/delete.js +74 -0
  71. package/commands/project/deploy.js +36 -34
  72. package/commands/project/dev/deprecatedFlow.js +42 -15
  73. package/commands/project/dev/index.d.ts +3 -3
  74. package/commands/project/dev/index.js +24 -30
  75. package/commands/project/dev/unifiedFlow.js +37 -14
  76. package/commands/project/download.js +10 -11
  77. package/commands/project/info.d.ts +4 -0
  78. package/commands/project/info.js +67 -0
  79. package/commands/project/installDeps.js +9 -6
  80. package/commands/project/lint.js +11 -8
  81. package/commands/project/list.js +14 -14
  82. package/commands/project/listBuilds.js +8 -6
  83. package/commands/project/logs.js +5 -6
  84. package/commands/project/migrate.js +8 -8
  85. package/commands/project/open.js +5 -6
  86. package/commands/project/profile/add.js +12 -8
  87. package/commands/project/profile/delete.js +15 -11
  88. package/commands/project/updateDeps.js +9 -6
  89. package/commands/project/upload.js +31 -17
  90. package/commands/project/validate.js +11 -11
  91. package/commands/project/watch.js +20 -20
  92. package/commands/project.js +4 -0
  93. package/commands/sandbox/create.js +15 -15
  94. package/commands/sandbox/delete.js +13 -14
  95. package/commands/secret/addSecret.js +6 -7
  96. package/commands/secret/deleteSecret.js +5 -6
  97. package/commands/secret/listSecret.js +2 -3
  98. package/commands/secret/updateSecret.js +4 -5
  99. package/commands/testAccount/create.d.ts +1 -1
  100. package/commands/testAccount/create.js +20 -16
  101. package/commands/testAccount/createConfig.js +7 -8
  102. package/commands/testAccount/delete.js +27 -18
  103. package/commands/testAccount/importData.js +6 -7
  104. package/commands/upgrade.js +9 -10
  105. package/lang/en.d.ts +114 -5
  106. package/lang/en.js +111 -5
  107. package/lib/accountAuth.js +2 -2
  108. package/lib/buildAccount.js +3 -3
  109. package/lib/doctor/Diagnosis.js +5 -5
  110. package/lib/errorHandlers/index.js +4 -3
  111. package/lib/errorHandlers/suppressError.js +4 -0
  112. package/lib/errors/PromptExitError.d.ts +4 -2
  113. package/lib/errors/PromptExitError.js +3 -0
  114. package/lib/process.d.ts +1 -1
  115. package/lib/process.js +10 -3
  116. package/lib/projects/delete.d.ts +13 -0
  117. package/lib/projects/delete.js +193 -0
  118. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  119. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  120. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  121. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  122. package/lib/projects/localDev/DevSessionManager.js +31 -19
  123. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  124. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  125. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  126. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  127. package/lib/projects/localDev/LocalDevState.js +3 -1
  128. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  129. package/lib/projects/localDev/helpers/account.js +16 -19
  130. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  131. package/lib/projects/localDev/helpers/process.js +4 -10
  132. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/project.js +31 -15
  134. package/lib/projects/projectInfo.d.ts +5 -0
  135. package/lib/projects/projectInfo.js +82 -0
  136. package/lib/projects/projectProfiles.d.ts +1 -2
  137. package/lib/projects/projectProfiles.js +5 -17
  138. package/lib/prompts/createApiSamplePrompt.js +4 -0
  139. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  140. package/lib/prompts/projectProfilePrompt.js +46 -0
  141. package/lib/prompts/promptUtils.js +3 -2
  142. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  143. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  144. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  145. package/lib/theme/cmsDevServerProcess.js +7 -6
  146. package/lib/ui/SpinniesManager.d.ts +1 -0
  147. package/lib/ui/SpinniesManager.js +20 -6
  148. package/lib/ui/spinniesUtils.d.ts +0 -1
  149. package/lib/ui/spinniesUtils.js +6 -16
  150. package/lib/usageTracking.d.ts +3 -4
  151. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  152. package/lib/yargs/makeYargsBuilder.js +33 -0
  153. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  154. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  155. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  156. package/lib/yargs/strictEnforceBoolean.js +13 -0
  157. package/lib/yargsUtils.d.ts +3 -16
  158. package/lib/yargsUtils.js +3 -48
  159. package/package.json +9 -4
  160. package/types/LocalDev.d.ts +5 -0
  161. package/types/Projects.d.ts +19 -0
  162. package/types/Yargs.d.ts +18 -1
  163. package/api/__tests__/migrate.test.d.ts +0 -1
  164. package/api/__tests__/migrate.test.js +0 -199
  165. package/commands/__tests__/account.test.d.ts +0 -1
  166. package/commands/__tests__/account.test.js +0 -69
  167. package/commands/__tests__/auth.test.d.ts +0 -1
  168. package/commands/__tests__/auth.test.js +0 -43
  169. package/commands/__tests__/cms.test.d.ts +0 -1
  170. package/commands/__tests__/cms.test.js +0 -87
  171. package/commands/__tests__/config.test.d.ts +0 -1
  172. package/commands/__tests__/config.test.js +0 -44
  173. package/commands/__tests__/customObject.test.d.ts +0 -1
  174. package/commands/__tests__/customObject.test.js +0 -68
  175. package/commands/__tests__/doctor.test.d.ts +0 -1
  176. package/commands/__tests__/doctor.test.js +0 -132
  177. package/commands/__tests__/feedback.test.d.ts +0 -1
  178. package/commands/__tests__/feedback.test.js +0 -24
  179. package/commands/__tests__/filemanager.test.d.ts +0 -1
  180. package/commands/__tests__/filemanager.test.js +0 -45
  181. package/commands/__tests__/getStarted.test.d.ts +0 -1
  182. package/commands/__tests__/getStarted.test.js +0 -173
  183. package/commands/__tests__/hubdb.test.d.ts +0 -1
  184. package/commands/__tests__/hubdb.test.js +0 -50
  185. package/commands/__tests__/init.test.d.ts +0 -1
  186. package/commands/__tests__/init.test.js +0 -42
  187. package/commands/__tests__/mcp.test.d.ts +0 -1
  188. package/commands/__tests__/mcp.test.js +0 -46
  189. package/commands/__tests__/open.test.d.ts +0 -1
  190. package/commands/__tests__/open.test.js +0 -58
  191. package/commands/__tests__/project.test.d.ts +0 -1
  192. package/commands/__tests__/project.test.js +0 -125
  193. package/commands/__tests__/sandbox.test.d.ts +0 -1
  194. package/commands/__tests__/sandbox.test.js +0 -44
  195. package/commands/__tests__/secret.test.d.ts +0 -1
  196. package/commands/__tests__/secret.test.js +0 -49
  197. package/commands/__tests__/testAccount.test.d.ts +0 -1
  198. package/commands/__tests__/testAccount.test.js +0 -57
  199. package/commands/__tests__/upgrade.test.d.ts +0 -1
  200. package/commands/__tests__/upgrade.test.js +0 -309
  201. package/commands/account/__tests__/auth.test.d.ts +0 -1
  202. package/commands/account/__tests__/auth.test.js +0 -206
  203. package/commands/account/__tests__/clean.test.d.ts +0 -1
  204. package/commands/account/__tests__/clean.test.js +0 -28
  205. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  206. package/commands/account/__tests__/createOverride.test.js +0 -32
  207. package/commands/account/__tests__/info.test.d.ts +0 -1
  208. package/commands/account/__tests__/info.test.js +0 -28
  209. package/commands/account/__tests__/list.test.d.ts +0 -1
  210. package/commands/account/__tests__/list.test.js +0 -153
  211. package/commands/account/__tests__/remove.test.d.ts +0 -1
  212. package/commands/account/__tests__/remove.test.js +0 -36
  213. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  214. package/commands/account/__tests__/removeOverride.js +0 -25
  215. package/commands/account/__tests__/rename.test.d.ts +0 -1
  216. package/commands/account/__tests__/rename.test.js +0 -82
  217. package/commands/account/__tests__/use.test.d.ts +0 -1
  218. package/commands/account/__tests__/use.test.js +0 -170
  219. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  220. package/commands/app/__tests__/migrate.test.js +0 -111
  221. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  222. package/commands/app/secret/__tests__/add.test.js +0 -140
  223. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  224. package/commands/app/secret/__tests__/delete.test.js +0 -28
  225. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  226. package/commands/app/secret/__tests__/list.test.js +0 -25
  227. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  228. package/commands/app/secret/__tests__/update.test.js +0 -28
  229. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  230. package/commands/cms/__tests__/delete.test.js +0 -39
  231. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  232. package/commands/cms/__tests__/fetch.test.js +0 -156
  233. package/commands/cms/__tests__/function.test.d.ts +0 -1
  234. package/commands/cms/__tests__/function.test.js +0 -50
  235. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  236. package/commands/cms/__tests__/lint.test.js +0 -33
  237. package/commands/cms/__tests__/list.test.d.ts +0 -1
  238. package/commands/cms/__tests__/list.test.js +0 -42
  239. package/commands/cms/__tests__/module.test.d.ts +0 -1
  240. package/commands/cms/__tests__/module.test.js +0 -45
  241. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  242. package/commands/cms/__tests__/mv.test.js +0 -46
  243. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  244. package/commands/cms/__tests__/theme.test.js +0 -54
  245. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  246. package/commands/cms/__tests__/upload.test.js +0 -312
  247. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  248. package/commands/cms/__tests__/watch.test.js +0 -204
  249. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  250. package/commands/cms/function/__tests__/logs.test.js +0 -70
  251. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  252. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  253. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  254. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  255. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  256. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  257. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  258. package/commands/customObject/__tests__/create.test.js +0 -40
  259. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  260. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  261. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  262. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  263. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  264. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  265. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  267. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  269. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  271. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  272. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  273. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  274. package/commands/filemanager/__tests__/upload.test.js +0 -191
  275. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  276. package/commands/hubdb/__tests__/clear.test.js +0 -28
  277. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  278. package/commands/hubdb/__tests__/create.test.js +0 -28
  279. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  280. package/commands/hubdb/__tests__/delete.test.js +0 -28
  281. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  282. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  283. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/list.test.js +0 -88
  285. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  286. package/commands/mcp/__tests__/setup.test.js +0 -26
  287. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  288. package/commands/mcp/__tests__/start.test.js +0 -144
  289. package/commands/project/__tests__/add.test.d.ts +0 -1
  290. package/commands/project/__tests__/add.test.js +0 -107
  291. package/commands/project/__tests__/create.test.d.ts +0 -1
  292. package/commands/project/__tests__/create.test.js +0 -97
  293. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  294. package/commands/project/__tests__/deploy.test.js +0 -307
  295. package/commands/project/__tests__/dev.test.d.ts +0 -1
  296. package/commands/project/__tests__/dev.test.js +0 -273
  297. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  298. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  299. package/commands/project/__tests__/download.test.d.ts +0 -1
  300. package/commands/project/__tests__/download.test.js +0 -39
  301. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  302. package/commands/project/__tests__/installDeps.test.js +0 -140
  303. package/commands/project/__tests__/lint.test.d.ts +0 -1
  304. package/commands/project/__tests__/lint.test.js +0 -704
  305. package/commands/project/__tests__/list.test.d.ts +0 -1
  306. package/commands/project/__tests__/list.test.js +0 -31
  307. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  308. package/commands/project/__tests__/listBuilds.test.js +0 -38
  309. package/commands/project/__tests__/logs.test.d.ts +0 -1
  310. package/commands/project/__tests__/logs.test.js +0 -202
  311. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  312. package/commands/project/__tests__/migrate.test.js +0 -106
  313. package/commands/project/__tests__/open.test.d.ts +0 -1
  314. package/commands/project/__tests__/open.test.js +0 -39
  315. package/commands/project/__tests__/profile.test.d.ts +0 -1
  316. package/commands/project/__tests__/profile.test.js +0 -42
  317. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  318. package/commands/project/__tests__/updateDeps.test.js +0 -140
  319. package/commands/project/__tests__/upload.test.d.ts +0 -1
  320. package/commands/project/__tests__/upload.test.js +0 -234
  321. package/commands/project/__tests__/validate.test.d.ts +0 -1
  322. package/commands/project/__tests__/validate.test.js +0 -381
  323. package/commands/project/__tests__/watch.test.d.ts +0 -1
  324. package/commands/project/__tests__/watch.test.js +0 -35
  325. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  326. package/commands/sandbox/__tests__/create.test.js +0 -198
  327. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  328. package/commands/sandbox/__tests__/delete.test.js +0 -31
  329. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  330. package/commands/secret/__tests__/addSecret.test.js +0 -162
  331. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  332. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  333. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  334. package/commands/secret/__tests__/listSecret.test.js +0 -29
  335. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  336. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  337. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  338. package/commands/testAccount/__tests__/create.test.js +0 -106
  339. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  340. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  341. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  342. package/commands/testAccount/__tests__/delete.test.js +0 -29
  343. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  344. package/commands/testAccount/__tests__/importData.test.js +0 -92
  345. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  346. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  347. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  348. package/lib/__tests__/accountAuth.test.js +0 -258
  349. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  350. package/lib/__tests__/accountTypes.test.js +0 -98
  351. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  352. package/lib/__tests__/buildAccount.test.js +0 -211
  353. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  354. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  355. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  356. package/lib/__tests__/commandSuggestion.test.js +0 -121
  357. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  358. package/lib/__tests__/commonOpts.test.js +0 -80
  359. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  360. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  361. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  362. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  363. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  364. package/lib/__tests__/hasFeature.test.js +0 -167
  365. package/lib/__tests__/http.test.d.ts +0 -1
  366. package/lib/__tests__/http.test.js +0 -40
  367. package/lib/__tests__/importData.test.d.ts +0 -1
  368. package/lib/__tests__/importData.test.js +0 -98
  369. package/lib/__tests__/npmCli.test.d.ts +0 -1
  370. package/lib/__tests__/npmCli.test.js +0 -84
  371. package/lib/__tests__/oauth.test.d.ts +0 -1
  372. package/lib/__tests__/oauth.test.js +0 -109
  373. package/lib/__tests__/parsing.test.d.ts +0 -1
  374. package/lib/__tests__/parsing.test.js +0 -34
  375. package/lib/__tests__/polling.test.d.ts +0 -1
  376. package/lib/__tests__/polling.test.js +0 -76
  377. package/lib/__tests__/process.test.d.ts +0 -1
  378. package/lib/__tests__/process.test.js +0 -89
  379. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  380. package/lib/__tests__/sandboxes.test.js +0 -128
  381. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  382. package/lib/__tests__/serverlessLogs.test.js +0 -163
  383. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  384. package/lib/__tests__/usageTracking.test.js +0 -197
  385. package/lib/__tests__/validation.test.d.ts +0 -1
  386. package/lib/__tests__/validation.test.js +0 -143
  387. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  388. package/lib/__tests__/yargsUtils.test.js +0 -124
  389. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  390. package/lib/app/__tests__/migrate.test.js +0 -638
  391. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  392. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  393. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  394. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  395. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  396. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  397. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  398. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  399. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  400. package/lib/mcp/__tests__/setup.test.js +0 -523
  401. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  402. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  403. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  404. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  405. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  406. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  407. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  408. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  409. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  410. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  411. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  413. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  414. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  415. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  416. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  417. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  418. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  419. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  420. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  421. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  422. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  423. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  424. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  425. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  426. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  427. package/lib/projects/__tests__/components.test.d.ts +0 -1
  428. package/lib/projects/__tests__/components.test.js +0 -440
  429. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  430. package/lib/projects/__tests__/deploy.test.js +0 -231
  431. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  432. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  433. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  434. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  435. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  436. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  437. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  438. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  439. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  440. package/lib/projects/__tests__/projects.test.js +0 -58
  441. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  442. package/lib/projects/__tests__/structure.test.js +0 -210
  443. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  444. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  445. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  446. package/lib/projects/__tests__/upload.test.js +0 -183
  447. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  448. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  449. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  450. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  451. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  452. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  453. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  454. package/lib/projects/create/__tests__/v2.test.js +0 -257
  455. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  456. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  457. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  458. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  459. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  460. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  461. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  462. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  463. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  464. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  465. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  466. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  467. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  469. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  471. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  472. package/lib/theme/__tests__/migrate.test.js +0 -247
  473. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  474. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  475. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  476. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  477. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  478. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  479. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  480. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  481. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  482. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  483. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  484. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  485. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  486. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  487. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  488. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  489. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  490. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  491. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  492. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  493. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  494. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  495. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  496. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  497. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  498. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  499. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  500. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  501. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  503. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  505. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  507. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  509. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  511. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  513. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  515. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  517. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  518. package/mcp-server/utils/__tests__/command.test.js +0 -275
  519. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  520. package/mcp-server/utils/__tests__/content.test.js +0 -164
  521. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  522. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -16,7 +16,8 @@ class LocalDevState {
16
16
  _devServerMessage;
17
17
  _uploadWarnings;
18
18
  _devServersStarted;
19
- constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectData, debug, initialProjectNodes, initialProjectProfileData, profile, env, }) {
19
+ actions;
20
+ constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectData, debug, initialProjectNodes, initialProjectProfileData, profile, env, actions, }) {
20
21
  this._targetProjectAccountId = targetProjectAccountId;
21
22
  this._targetTestingAccountId = targetTestingAccountId;
22
23
  this._profile = profile;
@@ -32,6 +33,7 @@ class LocalDevState {
32
33
  this._devServerMessage = LOCAL_DEV_SERVER_MESSAGE_TYPES.INITIAL;
33
34
  this._uploadWarnings = new Set();
34
35
  this._devServersStarted = false;
36
+ this.actions = actions;
35
37
  this._listeners = {};
36
38
  }
37
39
  runListeners(key) {
@@ -2,13 +2,14 @@ import { HubSpotConfigAccount } from '@hubspot/local-dev-lib/types/Accounts';
2
2
  import { Environment } from '@hubspot/local-dev-lib/types/Accounts';
3
3
  import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTestAccounts.js';
4
4
  import { ProjectDevTargetAccountPromptResponse } from '../../../prompts/projectDevTargetAccountPrompt.js';
5
- export declare function confirmDefaultAccountIsTarget(accountConfig: HubSpotConfigAccount): Promise<void>;
6
- export declare function checkIfDefaultAccountIsSupported(accountConfig: HubSpotConfigAccount, hasPublicApps: boolean): Promise<void>;
5
+ import { ExitFunction } from '../../../../types/Yargs.js';
6
+ export declare function confirmDefaultAccountIsTarget(accountConfig: HubSpotConfigAccount, exit: ExitFunction): Promise<void>;
7
+ export declare function checkIfDefaultAccountIsSupported(accountConfig: HubSpotConfigAccount, hasPublicApps: boolean, exit: ExitFunction): Promise<void>;
7
8
  export declare function checkIfParentAccountIsAuthed(accountConfig: HubSpotConfigAccount): void;
8
9
  export declare function checkIfAccountFlagIsSupported(accountConfig: HubSpotConfigAccount, hasPublicApps: boolean): void;
9
10
  export declare function suggestRecommendedNestedAccount(accounts: HubSpotConfigAccount[], accountConfig: HubSpotConfigAccount, hasPublicApps: boolean): Promise<ProjectDevTargetAccountPromptResponse>;
10
11
  export declare function createSandboxForLocalDev(accountId: number, accountConfig: HubSpotConfigAccount, env: Environment): Promise<number>;
11
12
  export declare function createDeveloperTestAccountForLocalDev(accountId: number, accountConfig: HubSpotConfigAccount, env: Environment, useV2?: boolean): Promise<number>;
12
- export declare function useExistingDevTestAccount(env: Environment, account: DeveloperTestAccount): Promise<void>;
13
+ export declare function useExistingDevTestAccount(env: Environment, account: DeveloperTestAccount): Promise<boolean>;
13
14
  export declare function hasSandboxes(account: HubSpotConfigAccount): Promise<boolean>;
14
15
  export declare function selectAccountTypePrompt(accountConfig: HubSpotConfigAccount): Promise<string | null>;
@@ -27,54 +27,51 @@ import { listPrompt } from '../../../prompts/promptUtils.js';
27
27
  import { confirmUseExistingDeveloperTestAccountPrompt } from '../../../prompts/projectDevTargetAccountPrompt.js';
28
28
  // If the user passed in the --account flag, confirm they want to use that account as
29
29
  // their target account, otherwise exit
30
- export async function confirmDefaultAccountIsTarget(accountConfig) {
30
+ export async function confirmDefaultAccountIsTarget(accountConfig, exit) {
31
31
  if (!accountConfig.name || !accountConfig.accountType) {
32
32
  uiLogger.error(lib.localDevHelpers.account.confirmDefaultAccountIsTarget.configError);
33
- process.exit(EXIT_CODES.ERROR);
33
+ return exit(EXIT_CODES.ERROR);
34
34
  }
35
35
  uiLogger.log('');
36
36
  const useDefaultAccount = await confirmDefaultAccountPrompt(accountConfig.name, HUBSPOT_ACCOUNT_TYPE_STRINGS[accountConfig.accountType]);
37
37
  if (!useDefaultAccount) {
38
38
  uiLogger.log(lib.localDevHelpers.account.confirmDefaultAccountIsTarget
39
39
  .declineDefaultAccountExplanation);
40
- process.exit(EXIT_CODES.SUCCESS);
40
+ return exit(EXIT_CODES.SUCCESS);
41
41
  }
42
42
  }
43
43
  // Confirm the default account is supported for the type of apps being developed
44
- export async function checkIfDefaultAccountIsSupported(accountConfig, hasPublicApps) {
44
+ export async function checkIfDefaultAccountIsSupported(accountConfig, hasPublicApps, exit) {
45
45
  const defaultAccountIsUnified = await isUnifiedAccount(accountConfig);
46
46
  if (hasPublicApps &&
47
47
  !(isAppDeveloperAccount(accountConfig) ||
48
48
  isDeveloperTestAccount(accountConfig) ||
49
49
  defaultAccountIsUnified)) {
50
50
  uiLogger.error(lib.localDevHelpers.account.checkIfDefaultAccountIsSupported.publicApp);
51
- process.exit(EXIT_CODES.SUCCESS);
51
+ return exit(EXIT_CODES.SUCCESS);
52
52
  }
53
53
  else if (!hasPublicApps && isAppDeveloperAccount(accountConfig)) {
54
54
  uiLogger.error(lib.localDevHelpers.account.checkIfDefaultAccountIsSupported.privateApp);
55
- process.exit(EXIT_CODES.SUCCESS);
55
+ return exit(EXIT_CODES.SUCCESS);
56
56
  }
57
57
  }
58
58
  export function checkIfParentAccountIsAuthed(accountConfig) {
59
59
  if (!accountConfig.parentAccountId ||
60
60
  !getConfigAccountIfExists(accountConfig.parentAccountId)?.accountId) {
61
- uiLogger.error(lib.localDevHelpers.account.checkIfParentAccountIsAuthed.notAuthedError(accountConfig.parentAccountId || '', uiAccountDescription(accountConfig.accountId)));
62
- process.exit(EXIT_CODES.SUCCESS);
61
+ throw new Error(lib.localDevHelpers.account.checkIfParentAccountIsAuthed.notAuthedError(accountConfig.parentAccountId || '', uiAccountDescription(accountConfig.accountId)));
63
62
  }
64
63
  }
65
64
  // Confirm the default account is a developer account if developing public apps
66
65
  export function checkIfAccountFlagIsSupported(accountConfig, hasPublicApps) {
67
66
  if (hasPublicApps) {
68
67
  if (!isDeveloperTestAccount(accountConfig)) {
69
- uiLogger.error(lib.localDevHelpers.account.validateAccountOption
68
+ throw new Error(lib.localDevHelpers.account.validateAccountOption
70
69
  .invalidPublicAppAccount);
71
- process.exit(EXIT_CODES.SUCCESS);
72
70
  }
73
71
  checkIfParentAccountIsAuthed(accountConfig);
74
72
  }
75
73
  else if (isAppDeveloperAccount(accountConfig)) {
76
- uiLogger.error(lib.localDevHelpers.account.validateAccountOption.invalidPrivateAppAccount);
77
- process.exit(EXIT_CODES.SUCCESS);
74
+ throw new Error(lib.localDevHelpers.account.validateAccountOption.invalidPrivateAppAccount);
78
75
  }
79
76
  }
80
77
  // If the user isn't using the recommended account type, prompt them to use or create one
@@ -110,7 +107,7 @@ export async function createSandboxForLocalDev(accountId, accountConfig, env) {
110
107
  else {
111
108
  logError(err);
112
109
  }
113
- process.exit(EXIT_CODES.ERROR);
110
+ throw err;
114
111
  }
115
112
  try {
116
113
  const { name } = await hubspotAccountNamePrompt({
@@ -123,7 +120,7 @@ export async function createSandboxForLocalDev(accountId, accountConfig, env) {
123
120
  }
124
121
  catch (err) {
125
122
  logError(err);
126
- process.exit(EXIT_CODES.ERROR);
123
+ throw err;
127
124
  }
128
125
  }
129
126
  // Create a developer test account and return its accountId
@@ -149,7 +146,7 @@ export async function createDeveloperTestAccountForLocalDev(accountId, accountCo
149
146
  else {
150
147
  logError(err);
151
148
  }
152
- process.exit(EXIT_CODES.ERROR);
149
+ throw err;
153
150
  }
154
151
  try {
155
152
  const { name } = await hubspotAccountNamePrompt({
@@ -157,12 +154,11 @@ export async function createDeveloperTestAccountForLocalDev(accountId, accountCo
157
154
  accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST,
158
155
  });
159
156
  trackCommandMetadataUsage('developer-test-account-create', { step: 'project-dev' }, accountId);
160
- const result = await buildDeveloperTestAccount(name, accountConfig, env, maxTestPortals, useV2);
161
- return result;
157
+ return await buildDeveloperTestAccount(name, accountConfig, env, maxTestPortals, useV2);
162
158
  }
163
159
  catch (err) {
164
160
  logError(err);
165
- process.exit(EXIT_CODES.ERROR);
161
+ throw err;
166
162
  }
167
163
  }
168
164
  // Prompt user to confirm usage of an existing developer test account that is not currently in the config
@@ -173,10 +169,11 @@ export async function useExistingDevTestAccount(env, account) {
173
169
  uiLogger.log(lib.localDevHelpers.account.confirmDefaultAccountIsTarget
174
170
  .declineDefaultAccountExplanation);
175
171
  uiLogger.log('');
176
- process.exit(EXIT_CODES.SUCCESS);
172
+ return false;
177
173
  }
178
174
  const devTestAcctConfigName = await saveAccountToConfig(account.id, account.accountName, env);
179
175
  uiLogger.success(lib.developerTestAccount.create.success.configFileUpdated(devTestAcctConfigName, PERSONAL_ACCESS_KEY_AUTH_METHOD.name));
176
+ return true;
180
177
  }
181
178
  export async function hasSandboxes(account) {
182
179
  const accountId = account.accountId;
@@ -1 +1 @@
1
- export declare function confirmLocalDevIsNotRunning(): Promise<void>;
1
+ export declare function isLocalDevRunning(): Promise<boolean>;
@@ -1,17 +1,11 @@
1
1
  import { LOCAL_DEV_WEBSOCKET_SERVER_INSTANCE_ID } from '../../../constants.js';
2
- import { EXIT_CODES } from '../../../enums/exitCodes.js';
3
2
  import { getServerPortByInstanceId } from '@hubspot/local-dev-lib/portManager';
4
- import { uiLogger } from '../../../ui/logger.js';
5
- import { commands } from '../../../../lang/en.js';
6
- export async function confirmLocalDevIsNotRunning() {
3
+ export async function isLocalDevRunning() {
7
4
  try {
8
5
  const existingPortInUse = await getServerPortByInstanceId(LOCAL_DEV_WEBSOCKET_SERVER_INSTANCE_ID);
9
- if (existingPortInUse) {
10
- uiLogger.error(commands.project.dev.errors.localDevAlreadyRunning);
11
- process.exit(EXIT_CODES.ERROR);
12
- }
6
+ return Boolean(existingPortInUse);
13
7
  }
14
- catch (error) {
15
- return;
8
+ catch {
9
+ return false;
16
10
  }
17
11
  }
@@ -2,11 +2,12 @@ import { type IntermediateRepresentationNode, type IntermediateRepresentationNod
2
2
  import { Build } from '@hubspot/local-dev-lib/types/Build';
3
3
  import { Project } from '@hubspot/local-dev-lib/types/Project';
4
4
  import { ProjectConfig } from '../../../../types/Projects.js';
5
- export declare function createNewProjectForLocalDev(projectConfig: ProjectConfig, targetAccountId: number, shouldCreateWithoutConfirmation: boolean, hasPublicApps: boolean): Promise<Project>;
6
- export declare function createInitialBuildForNewProject(projectConfig: ProjectConfig, projectDir: string, targetAccountId: number, sendIR?: boolean, profile?: string): Promise<Build>;
5
+ import { ExitFunction } from '../../../../types/Yargs.js';
6
+ export declare function createNewProjectForLocalDev(projectConfig: ProjectConfig, targetAccountId: number, shouldCreateWithoutConfirmation: boolean, hasPublicApps: boolean, exit: ExitFunction): Promise<Project>;
7
+ export declare function createInitialBuildForNewProject(projectConfig: ProjectConfig, projectDir: string, targetAccountId: number, exit: ExitFunction, sendIR?: boolean, profile?: string): Promise<Build>;
7
8
  export declare function compareLocalProjectToDeployed(projectConfig: ProjectConfig, accountId: number, deployedBuildId: number | undefined, localProjectNodes: {
8
9
  [key: string]: IntermediateRepresentationNodeLocalDev;
9
- }, profile?: string): Promise<void>;
10
+ }, exit: ExitFunction, profile?: string): Promise<void>;
10
11
  export declare function getDeployedProjectNodes(projectConfig: ProjectConfig, accountId: number, deployedBuildId: number, profile?: string): Promise<{
11
12
  [key: string]: IntermediateRepresentationNode;
12
13
  }>;
@@ -8,7 +8,7 @@ import { sanitizeFileName } from '@hubspot/local-dev-lib/path';
8
8
  import { isDeepEqual } from '@hubspot/local-dev-lib/isDeepEqual';
9
9
  import { translate, } from '@hubspot/project-parsing-lib/translate';
10
10
  import { isSpecifiedError } from '@hubspot/local-dev-lib/errors/index';
11
- import { PROJECT_ERROR_TYPES, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, } from '../../../constants.js';
11
+ import { PROJECT_ERROR_TYPES, PROJECT_BUILD_TEXT, PROJECT_DEPLOY_TEXT, PROJECT_CONFIG_FILE, } from '../../../constants.js';
12
12
  import { lib } from '../../../../lang/en.js';
13
13
  import { uiLogger } from '../../../ui/logger.js';
14
14
  import { uiLine } from '../../../ui/index.js';
@@ -22,7 +22,7 @@ import { debugError, logError } from '../../../errorHandlers/index.js';
22
22
  import { ApiErrorContext } from '../../../errorHandlers/index.js';
23
23
  import { getProjectPackageJsonLocations, hasMissingPackages, installPackages, } from '../../../dependencyManagement.js';
24
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) {
25
+ export async function createNewProjectForLocalDev(projectConfig, targetAccountId, shouldCreateWithoutConfirmation, hasPublicApps, exit) {
26
26
  // Create the project without prompting if this is a newly created sandbox
27
27
  let shouldCreateProject = shouldCreateWithoutConfirmation;
28
28
  if (!shouldCreateProject) {
@@ -54,7 +54,7 @@ export async function createNewProjectForLocalDev(projectConfig, targetAccountId
54
54
  SpinniesManager.fail('createProject');
55
55
  uiLogger.log(lib.localDevHelpers.project.createNewProjectForLocalDev
56
56
  .failedToCreateProject);
57
- process.exit(EXIT_CODES.ERROR);
57
+ return exit(EXIT_CODES.ERROR);
58
58
  }
59
59
  }
60
60
  else {
@@ -62,24 +62,24 @@ export async function createNewProjectForLocalDev(projectConfig, targetAccountId
62
62
  uiLogger.log('');
63
63
  uiLogger.log(lib.localDevHelpers.project.createNewProjectForLocalDev
64
64
  .choseNotToCreateProject);
65
- process.exit(EXIT_CODES.SUCCESS);
65
+ return exit(EXIT_CODES.SUCCESS);
66
66
  }
67
67
  }
68
- function projectUploadCallback(accountId, projectConfig, tempFile, buildId) {
68
+ function projectUploadCallback(accountId, projectConfig, tempFile, exit, buildId) {
69
69
  if (!buildId) {
70
70
  uiLogger.error(lib.localDevHelpers.project.createInitialBuildForNewProject.genericError);
71
- process.exit(EXIT_CODES.ERROR);
71
+ return exit(EXIT_CODES.ERROR);
72
72
  }
73
73
  return pollProjectBuildAndDeploy(accountId, projectConfig, tempFile, buildId, true);
74
74
  }
75
75
  // Create an initial build if the project was newly created in the account
76
76
  // Return the newly deployed build
77
- export async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, sendIR, profile) {
77
+ export async function createInitialBuildForNewProject(projectConfig, projectDir, targetAccountId, exit, sendIR, profile) {
78
78
  const { result: initialUploadResult, uploadError } = await handleProjectUpload({
79
79
  accountId: targetAccountId,
80
80
  projectConfig,
81
81
  projectDir,
82
- callbackFunc: projectUploadCallback,
82
+ callbackFunc: (accountId, config, tempFile, buildId) => projectUploadCallback(accountId, config, tempFile, exit, buildId),
83
83
  uploadMessage: lib.localDevHelpers.project.createInitialBuildForNewProject
84
84
  .initialUploadMessage,
85
85
  forceCreate: true,
@@ -102,7 +102,7 @@ export async function createInitialBuildForNewProject(projectConfig, projectDir,
102
102
  projectName: projectConfig.name,
103
103
  }));
104
104
  }
105
- process.exit(EXIT_CODES.ERROR);
105
+ return exit(EXIT_CODES.ERROR);
106
106
  }
107
107
  if (!initialUploadResult?.succeeded) {
108
108
  let subTasks = [];
@@ -120,15 +120,15 @@ export async function createInitialBuildForNewProject(projectConfig, projectDir,
120
120
  uiLogger.error(failedSubTask.errorMessage);
121
121
  });
122
122
  uiLogger.log('');
123
- process.exit(EXIT_CODES.ERROR);
123
+ return exit(EXIT_CODES.ERROR);
124
124
  }
125
125
  return initialUploadResult.buildResult;
126
126
  }
127
- export async function compareLocalProjectToDeployed(projectConfig, accountId, deployedBuildId, localProjectNodes, profile) {
127
+ export async function compareLocalProjectToDeployed(projectConfig, accountId, deployedBuildId, localProjectNodes, exit, profile) {
128
128
  uiLogger.log('');
129
129
  if (!deployedBuildId) {
130
130
  uiLogger.error(lib.localDevHelpers.project.compareLocalProjectToDeployed.noDeployedBuild(projectConfig.name, uiAccountDescription(accountId)));
131
- process.exit(EXIT_CODES.SUCCESS);
131
+ return exit(EXIT_CODES.SUCCESS);
132
132
  }
133
133
  SpinniesManager.add('compareLocalProjectToDeployed', {
134
134
  text: lib.localDevHelpers.project.compareLocalProjectToDeployed.checking,
@@ -146,7 +146,7 @@ export async function compareLocalProjectToDeployed(projectConfig, accountId, de
146
146
  });
147
147
  uiLogger.log('');
148
148
  uiLogger.log(lib.localDevHelpers.project.compareLocalProjectToDeployed.notUpToDateExplanation(profile));
149
- process.exit(EXIT_CODES.SUCCESS);
149
+ return exit(EXIT_CODES.SUCCESS);
150
150
  }
151
151
  }
152
152
  export async function getDeployedProjectNodes(projectConfig, accountId, deployedBuildId, profile) {
@@ -155,7 +155,23 @@ export async function getDeployedProjectNodes(projectConfig, accountId, deployed
155
155
  tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'hubspot-project-compare-'));
156
156
  const { data: zippedProject } = await downloadProject(accountId, projectConfig.name, deployedBuildId);
157
157
  await extractZipArchive(zippedProject, sanitizeFileName(projectConfig.name), tempDir, { hideLogs: true });
158
- const deployedProjectSourceDir = path.join(tempDir, projectConfig.srcDir);
158
+ // Read the deployed project's hsproject.json to get its srcDir
159
+ // Deployed projects always use "src" as the srcDir
160
+ const possibleProjectPaths = [
161
+ path.join(tempDir, PROJECT_CONFIG_FILE),
162
+ path.join(tempDir, sanitizeFileName(projectConfig.name), PROJECT_CONFIG_FILE),
163
+ ];
164
+ let deployedSrcDir = 'src';
165
+ for (const projectJsonPath of possibleProjectPaths) {
166
+ if (await fs.pathExists(projectJsonPath)) {
167
+ const deployedProjectConfig = await fs.readJson(projectJsonPath);
168
+ if (deployedProjectConfig.srcDir) {
169
+ deployedSrcDir = deployedProjectConfig.srcDir;
170
+ }
171
+ break;
172
+ }
173
+ }
174
+ const deployedProjectSourceDir = path.join(tempDir, deployedSrcDir);
159
175
  const { intermediateNodesIndexedByUid } = await translate({
160
176
  projectSourceDir: deployedProjectSourceDir,
161
177
  platformVersion: projectConfig.platformVersion,
@@ -211,6 +227,6 @@ export async function checkAndInstallDependencies() {
211
227
  text: lib.localDevHelpers.project.checkAndInstallDependencies
212
228
  .dependenciesFailure,
213
229
  });
214
- process.exit(EXIT_CODES.ERROR);
230
+ throw e;
215
231
  }
216
232
  }
@@ -0,0 +1,5 @@
1
+ import { Project } from '@hubspot/local-dev-lib/types/Project';
2
+ import { ProjectInfo } from '../../types/Projects.js';
3
+ export type { ProjectInfo };
4
+ export declare function getProjectInfo(project: Project, platformVersion: string, accountId: number): Promise<ProjectInfo>;
5
+ export declare function logProjectInfo(projectInfo: ProjectInfo): void;
@@ -0,0 +1,82 @@
1
+ import chalk from 'chalk';
2
+ import { fetchAppMetadataBySourceId } from '@hubspot/local-dev-lib/api/appsDev';
3
+ import { APP_KEY, USER_FACING_TO_INTERNAL_TYPE, } from '@hubspot/project-parsing-lib/constants';
4
+ import { debugError } from '../errorHandlers/index.js';
5
+ import { getProjectDetailUrl } from './urls.js';
6
+ import { commands } from '../../lang/en.js';
7
+ import { uiLine, uiLink } from '../ui/index.js';
8
+ import { uiLogger } from '../ui/logger.js';
9
+ export async function getProjectInfo(project, platformVersion, accountId) {
10
+ const deployedBuild = project.deployedBuild;
11
+ const projectInfo = {
12
+ projectName: project.name,
13
+ platformVersion,
14
+ projectId: project.id,
15
+ deployedBuildId: deployedBuild.buildId,
16
+ autoDeployEnabled: deployedBuild.isAutoDeployEnabled,
17
+ components: [],
18
+ };
19
+ const projectUrl = getProjectDetailUrl(project.name, accountId);
20
+ if (projectUrl) {
21
+ projectInfo.projectUrl = projectUrl;
22
+ }
23
+ const appSubbuild = deployedBuild.subbuildStatuses.find(s => s.buildType === USER_FACING_TO_INTERNAL_TYPE[APP_KEY]);
24
+ if (appSubbuild) {
25
+ try {
26
+ const { data: appMetadata } = await fetchAppMetadataBySourceId(project.id, appSubbuild.buildName, accountId);
27
+ projectInfo.app = {
28
+ name: appMetadata.name,
29
+ id: appMetadata.id,
30
+ uid: appSubbuild.buildName,
31
+ authType: appMetadata.authType,
32
+ distributionType: appMetadata.distributionType,
33
+ };
34
+ }
35
+ catch (err) {
36
+ debugError(err);
37
+ }
38
+ }
39
+ projectInfo.components = deployedBuild.subbuildStatuses
40
+ .filter(s => s.buildType !== USER_FACING_TO_INTERNAL_TYPE[APP_KEY])
41
+ .map(s => ({
42
+ uid: s.buildName,
43
+ type: s.buildType,
44
+ }));
45
+ return projectInfo;
46
+ }
47
+ export function logProjectInfo(projectInfo) {
48
+ uiLogger.log(chalk.bold(commands.project.info.project.title(projectInfo.projectName)));
49
+ uiLine();
50
+ uiLogger.log(commands.project.info.project.platformVersion(projectInfo.platformVersion));
51
+ uiLogger.log(commands.project.info.project.id(projectInfo.projectId));
52
+ uiLogger.log(commands.project.info.project.deployedBuild(projectInfo.deployedBuildId));
53
+ uiLogger.log(commands.project.info.project.autoDeploy(projectInfo.autoDeployEnabled));
54
+ if (projectInfo.projectUrl) {
55
+ uiLogger.log('');
56
+ uiLogger.log(uiLink(commands.project.info.viewProjectLink, projectInfo.projectUrl));
57
+ }
58
+ if (projectInfo.app) {
59
+ uiLogger.log('');
60
+ uiLogger.log(chalk.bold(commands.project.info.app.title));
61
+ uiLine();
62
+ uiLogger.log(commands.project.info.app.name(projectInfo.app.name));
63
+ uiLogger.log(commands.project.info.app.id(projectInfo.app.id));
64
+ uiLogger.log(commands.project.info.app.uid(projectInfo.app.uid));
65
+ if (projectInfo.app.authType) {
66
+ uiLogger.log(commands.project.info.app.authType(projectInfo.app.authType));
67
+ }
68
+ if (projectInfo.app.distributionType) {
69
+ uiLogger.log(commands.project.info.app.distributionType(projectInfo.app.distributionType));
70
+ }
71
+ }
72
+ if (projectInfo.components.length > 0) {
73
+ uiLogger.log('');
74
+ uiLogger.log(chalk.bold(commands.project.info.componentsHeader));
75
+ uiLine();
76
+ const typeColWidth = Math.max(commands.project.info.labels.type.length, ...projectInfo.components.map(c => c.type.length));
77
+ uiLogger.log(`${commands.project.info.labels.type.padEnd(typeColWidth)} ${commands.project.info.labels.uid}`);
78
+ for (const component of projectInfo.components) {
79
+ uiLogger.log(`${component.type.padEnd(typeColWidth)} ${component.uid}`);
80
+ }
81
+ }
82
+ }
@@ -3,8 +3,7 @@ import { ProjectConfig } from '../../types/Projects.js';
3
3
  export declare function logProfileHeader(profileName: string): void;
4
4
  export declare function logProfileFooter(profile: HsProfileFile, includeVariables?: boolean): void;
5
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>;
6
+ export declare function loadAndValidateProfile(projectConfig: ProjectConfig | null, projectDir: string | null, profileName: string, silent?: boolean): Promise<HsProfileFile | never>;
8
7
  type ValidateProjectForProfileOptions = {
9
8
  projectConfig: ProjectConfig;
10
9
  projectDir: string;
@@ -1,7 +1,7 @@
1
1
  import path from 'path';
2
- import { loadHsProfileFile, getHsProfileFilename, getAllHsProfiles, validateProfileVariables, } from '@hubspot/project-parsing-lib/profiles';
2
+ import { loadHsProfileFile, getHsProfileFilename, validateProfileVariables, } from '@hubspot/project-parsing-lib/profiles';
3
3
  import { commands, lib } from '../../lang/en.js';
4
- import { indent, uiBetaTag, uiLine } from '../ui/index.js';
4
+ import { indent, uiLine } from '../ui/index.js';
5
5
  import { uiLogger } from '../ui/logger.js';
6
6
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
7
7
  import SpinniesManager from '../ui/SpinniesManager.js';
@@ -9,7 +9,7 @@ import { handleTranslate } from './upload.js';
9
9
  import { getErrorMessage } from '../errorHandlers/index.js';
10
10
  export function logProfileHeader(profileName) {
11
11
  uiLine();
12
- uiBetaTag(lib.projectProfiles.logs.usingProfile(getHsProfileFilename(profileName)));
12
+ uiLogger.log(lib.projectProfiles.logs.usingProfile(getHsProfileFilename(profileName)));
13
13
  uiLogger.log('');
14
14
  }
15
15
  export function logProfileFooter(profile, includeVariables = false) {
@@ -51,19 +51,7 @@ export function loadProfile(projectConfig, projectDir, profileName) {
51
51
  }
52
52
  return profile;
53
53
  }
54
- export async function enforceProfileUsage(projectConfig, projectDir) {
55
- if (projectConfig && projectDir) {
56
- const existingProfiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
57
- if (existingProfiles.length > 0) {
58
- throw new Error(lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
59
- }
60
- }
61
- }
62
54
  export async function loadAndValidateProfile(projectConfig, projectDir, profileName, silent = false) {
63
- if (!profileName) {
64
- await enforceProfileUsage(projectConfig, projectDir);
65
- return;
66
- }
67
55
  if (!silent) {
68
56
  logProfileHeader(profileName);
69
57
  }
@@ -77,7 +65,7 @@ export async function loadAndValidateProfile(projectConfig, projectDir, profileN
77
65
  throw new Error(lib.projectProfiles.loadProfile.errors.profileNotValid(profileName, validationResult.errors));
78
66
  }
79
67
  }
80
- return profile.accountId;
68
+ return profile;
81
69
  }
82
70
  function formatProfileValidationError(error, leadingIndentationLevel = 0) {
83
71
  // Trim leading whitespace and replace tabs with spaces to reducing indentations
@@ -97,7 +85,7 @@ export async function validateProjectForProfile({ projectConfig, projectDir, pro
97
85
  });
98
86
  }
99
87
  try {
100
- const accountId = await loadAndValidateProfile(projectConfig, projectDir, profileName, true);
88
+ const { accountId } = await loadAndValidateProfile(projectConfig, projectDir, profileName, true);
101
89
  targetAccountId = accountId || derivedAccountId;
102
90
  }
103
91
  catch (error) {
@@ -1,5 +1,6 @@
1
1
  import { promptUser } from './promptUtils.js';
2
2
  import { lib } from '../../lang/en.js';
3
+ import { isPromptExitError } from '../errors/PromptExitError.js';
3
4
  function getSampleTypesPrompt(choices) {
4
5
  return {
5
6
  type: 'rawlist',
@@ -53,6 +54,9 @@ export async function createApiSamplePrompt(samplesConfig) {
53
54
  };
54
55
  }
55
56
  catch (e) {
57
+ if (isPromptExitError(e)) {
58
+ throw e;
59
+ }
56
60
  return {};
57
61
  }
58
62
  }
@@ -0,0 +1,2 @@
1
+ import { ProjectConfig } from '../../types/Projects.js';
2
+ export declare function projectProfilePrompt(projectDir: string, projectConfig: ProjectConfig, profileName?: string, exitIfMissing?: boolean): Promise<string | null>;
@@ -0,0 +1,46 @@
1
+ import path from 'path';
2
+ import { getAllHsProfiles } from '@hubspot/project-parsing-lib/profiles';
3
+ import { listPrompt } from './promptUtils.js';
4
+ import { loadProfile } from '../projects/projectProfiles.js';
5
+ import { lib } from '../../lang/en.js';
6
+ function generateProfilePromptOption(projectDir, projectConfig, profileName) {
7
+ const choice = {
8
+ name: profileName,
9
+ value: profileName,
10
+ };
11
+ try {
12
+ const profile = loadProfile(projectConfig, projectDir, profileName);
13
+ choice.name = `${profileName} [${profile.accountId}]`;
14
+ }
15
+ catch (e) {
16
+ choice.name = `${profileName} [Invalid profile]`;
17
+ choice.disabled = true;
18
+ }
19
+ return choice;
20
+ }
21
+ export async function projectProfilePrompt(projectDir, projectConfig, profileName, exitIfMissing) {
22
+ if (profileName) {
23
+ return profileName;
24
+ }
25
+ const existingProfiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
26
+ if (existingProfiles.length !== 0) {
27
+ if (existingProfiles.length === 1) {
28
+ return existingProfiles[0];
29
+ }
30
+ // In automated workflows exit instead of prompting
31
+ if (exitIfMissing) {
32
+ throw new Error(lib.prompts.projectProfilePrompt.exitMessage);
33
+ }
34
+ const listOptions = existingProfiles.map(p => generateProfilePromptOption(projectDir, projectConfig, p));
35
+ const hasAnyValidProfiles = listOptions.some(option => typeof option === 'object' && 'name' in option && !option.disabled);
36
+ // Exit early if the user has no valid profiles for us to show in the prompt
37
+ if (!hasAnyValidProfiles) {
38
+ throw new Error(lib.prompts.projectProfilePrompt.noValidProfilesMessage);
39
+ }
40
+ const profileNameFromPrompt = await listPrompt(lib.prompts.projectProfilePrompt.message, {
41
+ choices: listOptions,
42
+ });
43
+ return profileNameFromPrompt;
44
+ }
45
+ return null;
46
+ }
@@ -3,6 +3,7 @@ import { EXIT_CODES } from '../enums/exitCodes.js';
3
3
  import chalk from 'chalk';
4
4
  import { lib } from '../../lang/en.js';
5
5
  import { uiLogger } from '../ui/logger.js';
6
+ import { PromptExitError } from '../errors/PromptExitError.js';
6
7
  export const Separator = new _Separator();
7
8
  export const PROMPT_THEME = { prefix: { idle: chalk.green('?') } };
8
9
  export const CHECKBOX_PROMPT_THEME = {
@@ -19,14 +20,14 @@ function isNoSelectableChoicesError(error) {
19
20
  }
20
21
  function handlePromptError(config, error) {
21
22
  if (isUserCancellationError(error)) {
22
- process.exit(EXIT_CODES.SUCCESS);
23
+ throw new PromptExitError(lib.prompts.promptUtils.errors.userCancelled, EXIT_CODES.SUCCESS);
23
24
  }
24
25
  if (isNoSelectableChoicesError(error)) {
25
26
  if (!Array.isArray(config)) {
26
27
  uiLogger.log(config.message);
27
28
  }
28
29
  uiLogger.error(lib.prompts.promptUtils.errors.noSelectableChoices);
29
- process.exit(EXIT_CODES.ERROR);
30
+ throw new PromptExitError(lib.prompts.promptUtils.errors.noSelectableChoices, EXIT_CODES.ERROR);
30
31
  }
31
32
  throw error;
32
33
  }
@@ -5,7 +5,7 @@ import { debugError } from '../errorHandlers/index.js';
5
5
  import { uiLogger } from '../ui/logger.js';
6
6
  import { fetchTables } from '@hubspot/local-dev-lib/api/hubdb';
7
7
  import { isValidPath, untildify } from '@hubspot/local-dev-lib/path';
8
- import { PromptExitError } from '../errors/PromptExitError.js';
8
+ import { isPromptExitError, PromptExitError, } from '../errors/PromptExitError.js';
9
9
  import { EXIT_CODES } from '../enums/exitCodes.js';
10
10
  async function fetchHubDBOptions(accountId) {
11
11
  try {
@@ -17,7 +17,7 @@ async function fetchHubDBOptions(accountId) {
17
17
  return tables;
18
18
  }
19
19
  catch (error) {
20
- if (error instanceof PromptExitError) {
20
+ if (isPromptExitError(error)) {
21
21
  throw error;
22
22
  }
23
23
  debugError(error, { accountId });
@@ -4,7 +4,7 @@ import { uiLine } from '../ui/index.js';
4
4
  import { logError } from '../errorHandlers/index.js';
5
5
  import { uiLogger } from '../ui/logger.js';
6
6
  import { fetchPublicAppsForPortal } from '@hubspot/local-dev-lib/api/appsDev';
7
- import { PromptExitError } from '../errors/PromptExitError.js';
7
+ import { isPromptExitError, PromptExitError, } from '../errors/PromptExitError.js';
8
8
  import { EXIT_CODES } from '../enums/exitCodes.js';
9
9
  async function fetchPublicAppOptions(accountId, accountName, isMigratingApp = false) {
10
10
  if (!accountId) {
@@ -32,7 +32,7 @@ async function fetchPublicAppOptions(accountId, accountName, isMigratingApp = fa
32
32
  return filteredPublicApps;
33
33
  }
34
34
  catch (error) {
35
- if (error instanceof PromptExitError) {
35
+ if (isPromptExitError(error)) {
36
36
  throw error;
37
37
  }
38
38
  logError(error, accountId ? { accountId } : undefined);
@@ -1,4 +1,5 @@
1
1
  import { ChildProcess } from 'child_process';
2
+ import { ExitFunction } from '../../types/Yargs.js';
2
3
  interface DevServerOptions {
3
4
  absoluteSrc: string;
4
5
  accountName?: string;
@@ -7,6 +8,7 @@ interface DevServerOptions {
7
8
  generateFieldsTypes?: boolean;
8
9
  resetSession?: boolean;
9
10
  dest: string;
11
+ exit: ExitFunction;
10
12
  }
11
13
  export declare function spawnDevServer(options: DevServerOptions): Promise<ChildProcess>;
12
14
  export {};