@hubspot/cli 7.6.0-beta.4 → 7.6.0-beta.6

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 (587) hide show
  1. package/api/__tests__/migrate.test.js +27 -29
  2. package/api/migrate.d.ts +7 -0
  3. package/api/migrate.js +22 -22
  4. package/bin/cli.js +92 -97
  5. package/bin/hs +2 -2
  6. package/bin/hscms +2 -2
  7. package/bin/silenceErrors.js +1 -2
  8. package/commands/__tests__/account.test.js +29 -34
  9. package/commands/__tests__/auth.test.js +11 -16
  10. package/commands/__tests__/cms.test.js +15 -20
  11. package/commands/__tests__/config.test.js +14 -19
  12. package/commands/__tests__/create.test.js +10 -15
  13. package/commands/__tests__/customObject.test.js +14 -19
  14. package/commands/__tests__/doctor.test.js +43 -48
  15. package/commands/__tests__/feedback.test.js +7 -45
  16. package/commands/__tests__/fetch.test.js +29 -28
  17. package/commands/__tests__/filemanager.test.js +14 -19
  18. package/commands/__tests__/function.test.js +16 -21
  19. package/commands/__tests__/getStarted.test.js +45 -60
  20. package/commands/__tests__/hubdb.test.js +17 -22
  21. package/commands/__tests__/init.test.js +12 -17
  22. package/commands/__tests__/lint.test.js +13 -18
  23. package/commands/__tests__/list.test.js +18 -23
  24. package/commands/__tests__/logs.test.js +28 -27
  25. package/commands/__tests__/mcp.test.js +14 -19
  26. package/commands/__tests__/mv.test.js +14 -52
  27. package/commands/__tests__/open.test.js +13 -51
  28. package/commands/__tests__/project.test.js +44 -49
  29. package/commands/__tests__/remove.test.js +13 -51
  30. package/commands/__tests__/sandbox.test.js +14 -19
  31. package/commands/__tests__/secret.test.js +16 -21
  32. package/commands/__tests__/testAccount.test.js +16 -21
  33. package/commands/__tests__/theme.test.js +15 -20
  34. package/commands/account/__tests__/auth.test.js +11 -16
  35. package/commands/account/__tests__/clean.test.js +12 -17
  36. package/commands/account/__tests__/createOverride.test.js +10 -15
  37. package/commands/account/__tests__/info.test.js +11 -16
  38. package/commands/account/__tests__/list.test.js +11 -16
  39. package/commands/account/__tests__/remove.test.js +13 -18
  40. package/commands/account/__tests__/removeOverride.js +8 -13
  41. package/commands/account/__tests__/rename.test.js +15 -20
  42. package/commands/account/__tests__/use.test.js +10 -15
  43. package/commands/account/auth.d.ts +1 -1
  44. package/commands/account/auth.js +78 -69
  45. package/commands/account/clean.d.ts +1 -1
  46. package/commands/account/clean.js +55 -60
  47. package/commands/account/createOverride.d.ts +1 -1
  48. package/commands/account/createOverride.js +52 -57
  49. package/commands/account/info.d.ts +1 -1
  50. package/commands/account/info.js +33 -35
  51. package/commands/account/list.d.ts +1 -1
  52. package/commands/account/list.js +43 -45
  53. package/commands/account/remove.d.ts +1 -1
  54. package/commands/account/remove.js +37 -42
  55. package/commands/account/removeOverride.d.ts +1 -1
  56. package/commands/account/removeOverride.js +38 -43
  57. package/commands/account/rename.d.ts +1 -1
  58. package/commands/account/rename.js +18 -20
  59. package/commands/account/use.d.ts +1 -1
  60. package/commands/account/use.js +29 -31
  61. package/commands/account.d.ts +1 -1
  62. package/commands/account.js +23 -28
  63. package/commands/app/__tests__/migrate.test.js +29 -34
  64. package/commands/app/migrate.d.ts +2 -2
  65. package/commands/app/migrate.js +40 -43
  66. package/commands/app/secret/__tests__/add.test.js +6 -11
  67. package/commands/app/secret/__tests__/delete.test.js +6 -11
  68. package/commands/app/secret/__tests__/list.test.js +6 -11
  69. package/commands/app/secret/__tests__/update.test.js +6 -11
  70. package/commands/app/secret/add.d.ts +1 -1
  71. package/commands/app/secret/add.js +28 -30
  72. package/commands/app/secret/delete.d.ts +1 -1
  73. package/commands/app/secret/delete.js +34 -36
  74. package/commands/app/secret/list.d.ts +1 -1
  75. package/commands/app/secret/list.js +25 -27
  76. package/commands/app/secret/update.d.ts +1 -1
  77. package/commands/app/secret/update.js +32 -34
  78. package/commands/app/secret.d.ts +1 -1
  79. package/commands/app/secret.js +12 -17
  80. package/commands/app.d.ts +1 -1
  81. package/commands/app.js +6 -11
  82. package/commands/auth.d.ts +1 -1
  83. package/commands/auth.js +70 -72
  84. package/commands/cms/convertFields.d.ts +1 -1
  85. package/commands/cms/convertFields.js +34 -39
  86. package/commands/cms/getReactModule.d.ts +1 -1
  87. package/commands/cms/getReactModule.js +32 -37
  88. package/commands/cms/lighthouseScore.d.ts +1 -1
  89. package/commands/cms/lighthouseScore.js +67 -72
  90. package/commands/cms.d.ts +1 -1
  91. package/commands/cms.js +11 -16
  92. package/commands/completion.d.ts +1 -1
  93. package/commands/completion.js +10 -15
  94. package/commands/config/migrate.d.ts +1 -1
  95. package/commands/config/migrate.js +27 -32
  96. package/commands/config/set.d.ts +2 -1
  97. package/commands/config/set.js +40 -32
  98. package/commands/config.d.ts +1 -1
  99. package/commands/config.js +8 -13
  100. package/commands/create/api-sample.d.ts +1 -1
  101. package/commands/create/api-sample.js +28 -33
  102. package/commands/create/app.d.ts +1 -1
  103. package/commands/create/app.js +3 -5
  104. package/commands/create/function.d.ts +1 -1
  105. package/commands/create/function.js +9 -11
  106. package/commands/create/index.d.ts +1 -1
  107. package/commands/create/index.js +19 -24
  108. package/commands/create/module.d.ts +1 -1
  109. package/commands/create/module.js +12 -14
  110. package/commands/create/react-app.d.ts +1 -1
  111. package/commands/create/react-app.js +3 -5
  112. package/commands/create/template.d.ts +1 -1
  113. package/commands/create/template.js +12 -14
  114. package/commands/create/vue-app.d.ts +1 -1
  115. package/commands/create/vue-app.js +3 -5
  116. package/commands/create/webpack-serverless.d.ts +1 -1
  117. package/commands/create/webpack-serverless.js +3 -5
  118. package/commands/create/website-theme.d.ts +1 -1
  119. package/commands/create/website-theme.js +5 -7
  120. package/commands/create.d.ts +2 -2
  121. package/commands/create.js +30 -35
  122. package/commands/customObject/__tests__/create.test.js +13 -18
  123. package/commands/customObject/__tests__/schema.test.js +18 -23
  124. package/commands/customObject/create.d.ts +1 -1
  125. package/commands/customObject/create.js +28 -30
  126. package/commands/customObject/schema/__tests__/create.test.js +13 -18
  127. package/commands/customObject/schema/__tests__/delete.test.js +13 -18
  128. package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
  129. package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
  130. package/commands/customObject/schema/__tests__/list.test.js +13 -18
  131. package/commands/customObject/schema/__tests__/update.test.js +13 -18
  132. package/commands/customObject/schema/create.d.ts +1 -1
  133. package/commands/customObject/schema/create.js +28 -30
  134. package/commands/customObject/schema/delete.d.ts +1 -1
  135. package/commands/customObject/schema/delete.js +24 -26
  136. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  137. package/commands/customObject/schema/fetch-all.js +22 -24
  138. package/commands/customObject/schema/fetch.d.ts +1 -1
  139. package/commands/customObject/schema/fetch.js +24 -26
  140. package/commands/customObject/schema/list.d.ts +1 -1
  141. package/commands/customObject/schema/list.js +13 -15
  142. package/commands/customObject/schema/update.d.ts +1 -1
  143. package/commands/customObject/schema/update.js +32 -34
  144. package/commands/customObject/schema.d.ts +1 -1
  145. package/commands/customObject/schema.js +17 -22
  146. package/commands/customObject.d.ts +1 -1
  147. package/commands/customObject.js +13 -18
  148. package/commands/doctor.d.ts +1 -1
  149. package/commands/doctor.js +28 -33
  150. package/commands/feedback.d.ts +1 -1
  151. package/commands/feedback.js +19 -24
  152. package/commands/fetch.d.ts +1 -1
  153. package/commands/fetch.js +28 -30
  154. package/commands/filemanager/__tests__/fetch.test.js +17 -22
  155. package/commands/filemanager/__tests__/upload.test.js +15 -20
  156. package/commands/filemanager/fetch.d.ts +1 -1
  157. package/commands/filemanager/fetch.js +23 -25
  158. package/commands/filemanager/upload.d.ts +1 -1
  159. package/commands/filemanager/upload.js +39 -44
  160. package/commands/filemanager.d.ts +1 -1
  161. package/commands/filemanager.js +8 -13
  162. package/commands/function/deploy.d.ts +1 -1
  163. package/commands/function/deploy.js +35 -40
  164. package/commands/function/list.d.ts +1 -1
  165. package/commands/function/list.js +24 -29
  166. package/commands/function/server.d.ts +1 -1
  167. package/commands/function/server.js +15 -17
  168. package/commands/function.d.ts +1 -1
  169. package/commands/function.js +12 -18
  170. package/commands/getStarted.d.ts +1 -1
  171. package/commands/getStarted.js +125 -146
  172. package/commands/hubdb/__tests__/clear.test.js +13 -18
  173. package/commands/hubdb/__tests__/create.test.js +13 -18
  174. package/commands/hubdb/__tests__/delete.test.js +13 -18
  175. package/commands/hubdb/__tests__/fetch.test.js +13 -18
  176. package/commands/hubdb/__tests__/list.test.js +23 -28
  177. package/commands/hubdb/clear.d.ts +1 -1
  178. package/commands/hubdb/clear.js +20 -22
  179. package/commands/hubdb/create.d.ts +1 -1
  180. package/commands/hubdb/create.js +30 -35
  181. package/commands/hubdb/delete.d.ts +1 -1
  182. package/commands/hubdb/delete.js +24 -26
  183. package/commands/hubdb/fetch.d.ts +1 -1
  184. package/commands/hubdb/fetch.js +17 -19
  185. package/commands/hubdb/list.d.ts +1 -1
  186. package/commands/hubdb/list.js +33 -35
  187. package/commands/hubdb.d.ts +1 -1
  188. package/commands/hubdb.js +18 -24
  189. package/commands/init.d.ts +1 -1
  190. package/commands/init.js +83 -88
  191. package/commands/lint.d.ts +1 -1
  192. package/commands/lint.js +24 -26
  193. package/commands/list.d.ts +1 -1
  194. package/commands/list.js +32 -37
  195. package/commands/logs.d.ts +1 -1
  196. package/commands/logs.js +35 -37
  197. package/commands/mcp/__tests__/setup.test.js +7 -12
  198. package/commands/mcp/__tests__/start.test.js +7 -12
  199. package/commands/mcp/setup.d.ts +1 -1
  200. package/commands/mcp/setup.js +17 -19
  201. package/commands/mcp/start.d.ts +1 -1
  202. package/commands/mcp/start.js +32 -34
  203. package/commands/mcp.d.ts +1 -1
  204. package/commands/mcp.js +7 -12
  205. package/commands/module/marketplace-validate.d.ts +1 -1
  206. package/commands/module/marketplace-validate.js +21 -26
  207. package/commands/module.d.ts +1 -1
  208. package/commands/module.js +7 -13
  209. package/commands/mv.d.ts +1 -1
  210. package/commands/mv.js +20 -22
  211. package/commands/open.d.ts +1 -1
  212. package/commands/open.js +19 -21
  213. package/commands/project/__tests__/add.test.js +10 -15
  214. package/commands/project/__tests__/create.test.js +14 -19
  215. package/commands/project/__tests__/deploy.test.js +99 -141
  216. package/commands/project/__tests__/devUnifiedFlow.test.js +151 -155
  217. package/commands/project/__tests__/download.test.js +14 -19
  218. package/commands/project/__tests__/installDeps.test.js +32 -70
  219. package/commands/project/__tests__/listBuilds.test.js +14 -19
  220. package/commands/project/__tests__/logs.test.js +56 -94
  221. package/commands/project/__tests__/migrate.test.js +25 -30
  222. package/commands/project/__tests__/migrateApp.test.js +17 -22
  223. package/commands/project/__tests__/open.test.js +16 -21
  224. package/commands/project/__tests__/profile.test.js +14 -19
  225. package/commands/project/__tests__/upload.test.js +18 -23
  226. package/commands/project/__tests__/watch.test.js +14 -19
  227. package/commands/project/add.d.ts +1 -1
  228. package/commands/project/add.js +34 -36
  229. package/commands/project/cloneApp.d.ts +1 -1
  230. package/commands/project/cloneApp.js +67 -72
  231. package/commands/project/create.d.ts +2 -2
  232. package/commands/project/create.js +63 -68
  233. package/commands/project/deploy.d.ts +2 -2
  234. package/commands/project/deploy.js +83 -90
  235. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  236. package/commands/project/dev/deprecatedFlow.js +52 -58
  237. package/commands/project/dev/index.d.ts +1 -1
  238. package/commands/project/dev/index.js +44 -47
  239. package/commands/project/dev/unifiedFlow.d.ts +3 -3
  240. package/commands/project/dev/unifiedFlow.js +69 -76
  241. package/commands/project/download.d.ts +1 -1
  242. package/commands/project/download.js +35 -40
  243. package/commands/project/installDeps.d.ts +1 -1
  244. package/commands/project/installDeps.js +29 -34
  245. package/commands/project/listBuilds.d.ts +1 -1
  246. package/commands/project/listBuilds.js +40 -45
  247. package/commands/project/logs.d.ts +1 -1
  248. package/commands/project/logs.js +52 -54
  249. package/commands/project/migrate.d.ts +1 -1
  250. package/commands/project/migrate.js +24 -26
  251. package/commands/project/migrateApp.d.ts +2 -2
  252. package/commands/project/migrateApp.js +18 -20
  253. package/commands/project/open.d.ts +1 -1
  254. package/commands/project/open.js +25 -30
  255. package/commands/project/profile/add.d.ts +1 -1
  256. package/commands/project/profile/add.js +68 -73
  257. package/commands/project/profile/delete.d.ts +1 -1
  258. package/commands/project/profile/delete.js +68 -61
  259. package/commands/project/profile.d.ts +1 -1
  260. package/commands/project/profile.js +9 -14
  261. package/commands/project/upload.d.ts +1 -1
  262. package/commands/project/upload.js +50 -55
  263. package/commands/project/validate.d.ts +1 -1
  264. package/commands/project/validate.js +36 -40
  265. package/commands/project/watch.d.ts +1 -1
  266. package/commands/project/watch.js +59 -61
  267. package/commands/project.d.ts +1 -1
  268. package/commands/project.js +38 -43
  269. package/commands/remove.d.ts +1 -1
  270. package/commands/remove.js +15 -17
  271. package/commands/sandbox/__tests__/create.test.js +222 -20
  272. package/commands/sandbox/__tests__/delete.test.js +15 -20
  273. package/commands/sandbox/create.d.ts +2 -2
  274. package/commands/sandbox/create.js +92 -79
  275. package/commands/sandbox/delete.d.ts +1 -1
  276. package/commands/sandbox/delete.js +94 -96
  277. package/commands/sandbox.d.ts +1 -1
  278. package/commands/sandbox.js +9 -14
  279. package/commands/secret/__tests__/addSecret.test.js +13 -18
  280. package/commands/secret/__tests__/deleteSecret.test.js +13 -18
  281. package/commands/secret/__tests__/listSecret.test.js +13 -18
  282. package/commands/secret/__tests__/updateSecret.test.js +13 -18
  283. package/commands/secret/addSecret.d.ts +1 -1
  284. package/commands/secret/addSecret.js +26 -28
  285. package/commands/secret/deleteSecret.d.ts +1 -1
  286. package/commands/secret/deleteSecret.js +27 -29
  287. package/commands/secret/listSecret.d.ts +1 -1
  288. package/commands/secret/listSecret.js +19 -21
  289. package/commands/secret/updateSecret.d.ts +1 -1
  290. package/commands/secret/updateSecret.js +25 -27
  291. package/commands/secret.d.ts +1 -1
  292. package/commands/secret.js +13 -18
  293. package/commands/testAccount/__tests__/create.test.js +17 -22
  294. package/commands/testAccount/__tests__/createConfig.test.js +6 -11
  295. package/commands/testAccount/__tests__/delete.test.js +15 -20
  296. package/commands/testAccount/create.d.ts +1 -1
  297. package/commands/testAccount/create.js +63 -84
  298. package/commands/testAccount/createConfig.d.ts +1 -1
  299. package/commands/testAccount/createConfig.js +36 -41
  300. package/commands/testAccount/delete.d.ts +1 -1
  301. package/commands/testAccount/delete.js +17 -19
  302. package/commands/testAccount.d.ts +1 -1
  303. package/commands/testAccount.js +10 -15
  304. package/commands/theme/__tests__/generate-selectors.test.js +7 -12
  305. package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
  306. package/commands/theme/__tests__/preview.test.js +12 -17
  307. package/commands/theme/generate-selectors.d.ts +1 -1
  308. package/commands/theme/generate-selectors.js +23 -28
  309. package/commands/theme/marketplace-validate.d.ts +1 -1
  310. package/commands/theme/marketplace-validate.js +19 -24
  311. package/commands/theme/preview.d.ts +1 -1
  312. package/commands/theme/preview.js +60 -65
  313. package/commands/theme.d.ts +1 -1
  314. package/commands/theme.js +11 -16
  315. package/commands/upload.d.ts +1 -1
  316. package/commands/upload.js +77 -82
  317. package/commands/watch.d.ts +1 -1
  318. package/commands/watch.js +45 -51
  319. package/lang/en.d.ts +52 -25
  320. package/lang/en.js +421 -397
  321. package/lang/en.lyaml +4 -28
  322. package/lib/__tests__/accountTypes.test.js +20 -22
  323. package/lib/__tests__/buildAccount.test.js +115 -64
  324. package/lib/__tests__/commonOpts.test.js +20 -22
  325. package/lib/__tests__/dependencyManagement.test.js +46 -51
  326. package/lib/__tests__/developerTestAccounts.test.js +27 -62
  327. package/lib/__tests__/hasFeature.test.js +6 -8
  328. package/lib/__tests__/npm.test.js +15 -20
  329. package/lib/__tests__/oauth.test.js +23 -28
  330. package/lib/__tests__/parsing.test.js +18 -20
  331. package/lib/__tests__/polling.test.js +24 -26
  332. package/lib/__tests__/process.test.js +14 -19
  333. package/lib/__tests__/projectProfiles.test.js +34 -39
  334. package/lib/__tests__/sandboxSync.test.js +30 -35
  335. package/lib/__tests__/sandboxes.test.js +29 -31
  336. package/lib/__tests__/serverlessLogs.test.js +8 -13
  337. package/lib/__tests__/usageTracking.test.js +33 -34
  338. package/lib/__tests__/validation.test.js +18 -20
  339. package/lib/__tests__/yargsUtils.test.js +17 -41
  340. package/lib/accountTypes.js +24 -34
  341. package/lib/app/__tests__/migrate.test.js +117 -109
  342. package/lib/app/__tests__/migrate_legacy.test.js +29 -31
  343. package/lib/app/migrate.d.ts +18 -4
  344. package/lib/app/migrate.js +152 -148
  345. package/lib/app/migrate_legacy.d.ts +1 -1
  346. package/lib/app/migrate_legacy.js +72 -78
  347. package/lib/app/urls.js +5 -9
  348. package/lib/buildAccount.d.ts +12 -3
  349. package/lib/buildAccount.js +165 -69
  350. package/lib/commonOpts.d.ts +1 -1
  351. package/lib/commonOpts.js +67 -59
  352. package/lib/configMigrate.js +34 -38
  353. package/lib/configOptions.d.ts +5 -0
  354. package/lib/configOptions.js +44 -40
  355. package/lib/constants.d.ts +8 -0
  356. package/lib/constants.js +39 -34
  357. package/lib/customObject.js +2 -6
  358. package/lib/dependencyManagement.js +37 -45
  359. package/lib/developerTestAccounts.d.ts +1 -1
  360. package/lib/developerTestAccounts.js +34 -39
  361. package/lib/doctor/Diagnosis.d.ts +1 -1
  362. package/lib/doctor/Diagnosis.js +25 -29
  363. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  364. package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
  365. package/lib/doctor/Doctor.d.ts +1 -1
  366. package/lib/doctor/Doctor.js +94 -101
  367. package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
  368. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
  369. package/lib/doctor/__tests__/Doctor.test.js +24 -26
  370. package/lib/enums/exitCodes.js +1 -4
  371. package/lib/errorHandlers/index.js +33 -52
  372. package/lib/errorHandlers/suppressError.d.ts +1 -1
  373. package/lib/errorHandlers/suppressError.js +28 -31
  374. package/lib/errors/ProjectValidationError.d.ts +4 -0
  375. package/lib/errors/ProjectValidationError.js +9 -0
  376. package/lib/filesystem.js +8 -15
  377. package/lib/generateSelectors.js +18 -29
  378. package/lib/hasFeature.d.ts +1 -1
  379. package/lib/hasFeature.js +3 -6
  380. package/lib/interpolation.js +11 -18
  381. package/lib/lang.d.ts +1 -1
  382. package/lib/lang.js +22 -27
  383. package/lib/links.js +16 -24
  384. package/lib/marketplaceValidate.js +29 -39
  385. package/lib/mcp/setup.d.ts +4 -0
  386. package/lib/mcp/setup.js +106 -82
  387. package/lib/middleware/__test__/configMiddleware.test.js +20 -55
  388. package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
  389. package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
  390. package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
  391. package/lib/middleware/__test__/utils.test.js +9 -11
  392. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
  393. package/lib/middleware/autoUpdateMiddleware.js +33 -40
  394. package/lib/middleware/configMiddleware.js +36 -42
  395. package/lib/middleware/fireAlarmMiddleware.js +12 -18
  396. package/lib/middleware/gitMiddleware.js +5 -8
  397. package/lib/middleware/notificationsMiddleware.js +16 -23
  398. package/lib/middleware/requestMiddleware.js +4 -10
  399. package/lib/middleware/utils.js +1 -4
  400. package/lib/middleware/yargsChecksMiddleware.js +10 -13
  401. package/lib/npm.js +14 -23
  402. package/lib/oauth.js +29 -35
  403. package/lib/parsing.js +3 -6
  404. package/lib/polling.js +11 -15
  405. package/lib/process.js +11 -19
  406. package/lib/projectProfiles.d.ts +2 -2
  407. package/lib/projectProfiles.js +32 -42
  408. package/lib/projects/ProjectLogsManager.js +18 -21
  409. package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
  410. package/lib/projects/__tests__/LocalDevProcess.test.js +100 -140
  411. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +201 -37
  412. package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
  413. package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
  414. package/lib/projects/__tests__/components.test.js +9 -14
  415. package/lib/projects/__tests__/localDevHelpers.test.js +117 -0
  416. package/lib/projects/__tests__/projects.test.js +35 -40
  417. package/lib/projects/__tests__/structure.test.js +43 -81
  418. package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
  419. package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
  420. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  421. package/lib/projects/add/legacyAddComponent.js +24 -30
  422. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  423. package/lib/projects/add/v3AddComponent.js +37 -42
  424. package/lib/projects/buildAndDeploy.d.ts +1 -1
  425. package/lib/projects/buildAndDeploy.js +88 -97
  426. package/lib/projects/components.js +19 -25
  427. package/lib/projects/config.d.ts +1 -1
  428. package/lib/projects/config.js +32 -41
  429. package/lib/projects/create/__tests__/legacy.test.js +22 -57
  430. package/lib/projects/create/__tests__/v3.test.js +5 -7
  431. package/lib/projects/create/index.d.ts +3 -3
  432. package/lib/projects/create/index.js +19 -22
  433. package/lib/projects/create/legacy.d.ts +1 -1
  434. package/lib/projects/create/legacy.js +25 -31
  435. package/lib/projects/create/v3.d.ts +3 -5
  436. package/lib/projects/create/v3.js +47 -59
  437. package/lib/projects/ensureProjectExists.js +31 -37
  438. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  439. package/lib/projects/localDev/AppDevModeInterface.js +58 -60
  440. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  441. package/lib/projects/localDev/DevServerManager.js +22 -26
  442. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  443. package/lib/projects/localDev/DevServerManagerV2.js +15 -22
  444. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -2
  445. package/lib/projects/localDev/LocalDevLogger.js +66 -66
  446. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  447. package/lib/projects/localDev/LocalDevManager.js +106 -111
  448. package/lib/projects/localDev/LocalDevProcess.d.ts +6 -5
  449. package/lib/projects/localDev/LocalDevProcess.js +37 -50
  450. package/lib/projects/localDev/LocalDevState.d.ts +5 -7
  451. package/lib/projects/localDev/LocalDevState.js +9 -11
  452. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  453. package/lib/projects/localDev/LocalDevWatcher.js +6 -11
  454. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +3 -3
  455. package/lib/projects/localDev/LocalDevWebsocketServer.js +63 -55
  456. package/lib/projects/localDev/helpers.d.ts +11 -4
  457. package/lib/projects/localDev/helpers.js +211 -174
  458. package/lib/projects/structure.d.ts +3 -3
  459. package/lib/projects/structure.js +32 -78
  460. package/lib/projects/ui.js +10 -13
  461. package/lib/projects/upload.d.ts +1 -1
  462. package/lib/projects/upload.js +57 -73
  463. package/lib/projects/urls.d.ts +1 -1
  464. package/lib/projects/urls.js +15 -25
  465. package/lib/projects/watch.d.ts +1 -1
  466. package/lib/projects/watch.js +48 -54
  467. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
  469. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  470. package/lib/prompts/accountNamePrompt.js +26 -31
  471. package/lib/prompts/accountsPrompt.js +12 -15
  472. package/lib/prompts/cmsFieldPrompt.js +13 -19
  473. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  474. package/lib/prompts/createApiSamplePrompt.js +9 -12
  475. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +2 -2
  476. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +27 -31
  477. package/lib/prompts/createFunctionPrompt.js +17 -20
  478. package/lib/prompts/createModulePrompt.js +12 -15
  479. package/lib/prompts/createTemplatePrompt.js +5 -8
  480. package/lib/prompts/downloadProjectPrompt.js +17 -20
  481. package/lib/prompts/installAppPrompt.js +19 -26
  482. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  483. package/lib/prompts/personalAccessKeyPrompt.js +40 -47
  484. package/lib/prompts/previewPrompt.js +15 -22
  485. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  486. package/lib/prompts/projectAddPrompt.js +14 -18
  487. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  488. package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
  489. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  490. package/lib/prompts/projectNameAndDestPrompt.js +22 -29
  491. package/lib/prompts/projectNamePrompt.js +11 -14
  492. package/lib/prompts/projectsLogsPrompt.js +5 -8
  493. package/lib/prompts/promptUtils.d.ts +1 -1
  494. package/lib/prompts/promptUtils.js +80 -77
  495. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  496. package/lib/prompts/sandboxesPrompt.js +26 -30
  497. package/lib/prompts/secretPrompt.js +10 -15
  498. package/lib/prompts/selectAppPrompt.js +11 -14
  499. package/lib/prompts/selectHubDBTablePrompt.js +24 -30
  500. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  501. package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
  502. package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
  503. package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
  504. package/lib/prompts/uploadPrompt.js +11 -17
  505. package/lib/sandboxSync.d.ts +1 -1
  506. package/lib/sandboxSync.js +58 -65
  507. package/lib/sandboxes.d.ts +5 -1
  508. package/lib/sandboxes.js +72 -76
  509. package/lib/schema.js +13 -20
  510. package/lib/serverlessLogs.js +45 -52
  511. package/lib/testUtils.js +4 -8
  512. package/lib/ui/SpinniesManager.d.ts +1 -1
  513. package/lib/ui/SpinniesManager.js +29 -34
  514. package/lib/ui/boxen.js +11 -14
  515. package/lib/ui/git.js +14 -20
  516. package/lib/ui/index.d.ts +6 -0
  517. package/lib/ui/index.js +56 -76
  518. package/lib/ui/logger.js +10 -13
  519. package/lib/ui/serverlessFunctionLogs.js +14 -20
  520. package/lib/ui/spinniesUtils.js +24 -39
  521. package/lib/ui/supportHyperlinks.js +3 -6
  522. package/lib/ui/supportsColor.js +11 -17
  523. package/lib/ui/table.js +6 -13
  524. package/lib/upload.js +15 -21
  525. package/lib/usageTracking.js +35 -44
  526. package/lib/utils/__tests__/isDeepEqual.test.js +269 -0
  527. package/lib/utils/hasFlag.js +2 -8
  528. package/lib/utils/isDeepEqual.d.ts +1 -0
  529. package/lib/utils/isDeepEqual.js +31 -0
  530. package/lib/validation.js +48 -87
  531. package/lib/yargsUtils.d.ts +2 -1
  532. package/lib/yargsUtils.js +19 -16
  533. package/mcp-server/server.js +6 -8
  534. package/mcp-server/tools/index.js +15 -16
  535. package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
  536. package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
  537. package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
  538. package/mcp-server/tools/project/CreateProjectTool.js +40 -54
  539. package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
  540. package/mcp-server/tools/project/DeployProjectTool.js +49 -0
  541. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
  542. package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
  543. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  544. package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
  545. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  546. package/mcp-server/tools/project/UploadProjectTools.js +12 -19
  547. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  548. package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
  549. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
  550. package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
  551. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
  552. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
  553. package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
  554. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
  555. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
  556. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
  557. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
  558. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
  559. package/mcp-server/tools/project/constants.d.ts +1 -0
  560. package/mcp-server/tools/project/constants.js +14 -9
  561. package/mcp-server/types.js +1 -5
  562. package/mcp-server/utils/__tests__/command.test.js +9 -11
  563. package/mcp-server/utils/__tests__/project.test.js +12 -17
  564. package/mcp-server/utils/command.d.ts +1 -1
  565. package/mcp-server/utils/command.js +4 -11
  566. package/mcp-server/utils/content.d.ts +1 -1
  567. package/mcp-server/utils/content.js +2 -6
  568. package/mcp-server/utils/project.js +8 -14
  569. package/mcp-server/utils/toolUsageTracking.js +11 -14
  570. package/package.json +22 -15
  571. package/types/Cms.d.ts +1 -1
  572. package/types/Cms.js +1 -2
  573. package/types/LocalDev.d.ts +4 -6
  574. package/types/LocalDev.js +1 -2
  575. package/types/ProjectComponents.d.ts +2 -2
  576. package/types/ProjectComponents.js +1 -2
  577. package/types/Projects.d.ts +1 -1
  578. package/types/Projects.js +2 -5
  579. package/types/Prompts.js +1 -2
  580. package/types/Sandboxes.js +1 -2
  581. package/types/Yargs.js +1 -2
  582. package/ui/index.d.ts +1 -0
  583. package/ui/index.js +6 -0
  584. package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
  585. package/mcp-server/tools/project/DeployProject.js +0 -53
  586. /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → lib/projects/__tests__/localDevHelpers.test.d.ts} +0 -0
  587. /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/utils/__tests__/isDeepEqual.test.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
- import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types';
2
- import LocalDevState from './LocalDevState';
3
- import LocalDevLogger from './LocalDevLogger';
4
- import { LocalDevStateConstructorOptions, LocalDevStateListener, LocalDevServerMessage } from '../../../types/LocalDev';
1
+ import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
2
+ import LocalDevState from './LocalDevState.js';
3
+ import LocalDevLogger from './LocalDevLogger.js';
4
+ import { LocalDevStateConstructorOptions, LocalDevStateListener, LocalDevServerMessage } from '../../../types/LocalDev.js';
5
5
  declare class LocalDevProcess {
6
6
  private state;
7
7
  private _logger;
@@ -19,11 +19,11 @@ declare class LocalDevProcess {
19
19
  private setupDevServers;
20
20
  private startDevServers;
21
21
  private cleanupDevServers;
22
- private compareLocalProjectToDeployed;
23
22
  private projectConfigValidForUpload;
24
23
  private getIntermediateRepresentation;
25
24
  private updateProjectNodes;
26
25
  private updateProjectNodesAfterUpload;
26
+ private openLocalDevUi;
27
27
  handleFileChange(filePath: string, event: string): Promise<void>;
28
28
  handleConfigFileChange(): Promise<void>;
29
29
  start(): Promise<void>;
@@ -31,5 +31,6 @@ declare class LocalDevProcess {
31
31
  uploadProject(): Promise<boolean>;
32
32
  addStateListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>, callOnInit?: boolean): void;
33
33
  sendDevServerMessage(message: LocalDevServerMessage): void;
34
+ removeStateListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>): void;
34
35
  }
35
36
  export default LocalDevProcess;
@@ -1,26 +1,25 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
7
- const path_1 = __importDefault(require("path"));
8
- const LocalDevState_1 = __importDefault(require("./LocalDevState"));
9
- const LocalDevLogger_1 = __importDefault(require("./LocalDevLogger"));
10
- const DevServerManagerV2_1 = __importDefault(require("./DevServerManagerV2"));
11
- const exitCodes_1 = require("../../enums/exitCodes");
12
- const transform_1 = require("@hubspot/project-parsing-lib/src/lib/transform");
13
- const config_1 = require("../config");
14
- const upload_1 = require("../upload");
15
- const buildAndDeploy_1 = require("../buildAndDeploy");
1
+ import { translateForLocalDev } from '@hubspot/project-parsing-lib';
2
+ import { hasLocalStateFlag } from '@hubspot/local-dev-lib/config';
3
+ import path from 'path';
4
+ import open from 'open';
5
+ import LocalDevState from './LocalDevState.js';
6
+ import LocalDevLogger from './LocalDevLogger.js';
7
+ import DevServerManagerV2 from './DevServerManagerV2.js';
8
+ import { EXIT_CODES } from '../../enums/exitCodes.js';
9
+ import { getProjectConfig } from '../config.js';
10
+ import { handleProjectUpload } from '../upload.js';
11
+ import { pollProjectBuildAndDeploy } from '../buildAndDeploy.js';
12
+ import { getLocalDevUiUrl } from '../urls.js';
13
+ import { CONFIG_LOCAL_STATE_FLAGS } from '../../constants.js';
14
+ import { isAutoOpenBrowserEnabled } from '../../configOptions.js';
16
15
  class LocalDevProcess {
17
16
  state;
18
17
  _logger;
19
18
  devServerManager;
20
19
  constructor(options) {
21
- this.state = new LocalDevState_1.default(options);
22
- this._logger = new LocalDevLogger_1.default(this.state);
23
- this.devServerManager = new DevServerManagerV2_1.default({
20
+ this.state = new LocalDevState(options);
21
+ this._logger = new LocalDevLogger(this.state);
22
+ this.devServerManager = new DevServerManagerV2({
24
23
  localDevState: this.state,
25
24
  logger: this._logger,
26
25
  });
@@ -62,7 +61,7 @@ class LocalDevProcess {
62
61
  }
63
62
  catch (e) {
64
63
  this.logger.devServerStartError(e);
65
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
64
+ process.exit(EXIT_CODES.ERROR);
66
65
  }
67
66
  }
68
67
  async cleanupDevServers() {
@@ -75,22 +74,8 @@ class LocalDevProcess {
75
74
  return false;
76
75
  }
77
76
  }
78
- compareLocalProjectToDeployed() {
79
- const deployedComponentNames = this.state.deployedBuild.subbuildStatuses.map(subbuildStatus => subbuildStatus.buildName);
80
- const missingProjectNodes = [];
81
- Object.values(this.projectNodes).forEach(node => {
82
- if (!deployedComponentNames.includes(node.uid)) {
83
- const userFriendlyName = (0, transform_1.mapToUserFriendlyName)(node.componentType);
84
- const label = userFriendlyName ? `[${userFriendlyName}] ` : '';
85
- missingProjectNodes.push(`${label}${node.uid}`);
86
- }
87
- });
88
- if (missingProjectNodes.length) {
89
- this.logger.missingComponentsWarning(missingProjectNodes);
90
- }
91
- }
92
77
  async projectConfigValidForUpload() {
93
- const { projectConfig } = await (0, config_1.getProjectConfig)();
78
+ const { projectConfig } = await getProjectConfig();
94
79
  if (!projectConfig) {
95
80
  return false;
96
81
  }
@@ -103,8 +88,8 @@ class LocalDevProcess {
103
88
  return true;
104
89
  }
105
90
  getIntermediateRepresentation(projectNodesAtLastUpload) {
106
- return (0, project_parsing_lib_1.translateForLocalDev)({
107
- projectSourceDir: path_1.default.join(this.state.projectDir, this.state.projectConfig.srcDir),
91
+ return translateForLocalDev({
92
+ projectSourceDir: path.join(this.state.projectDir, this.state.projectConfig.srcDir),
108
93
  platformVersion: this.state.projectConfig.platformVersion,
109
94
  accountId: this.state.targetProjectAccountId,
110
95
  }, {
@@ -124,6 +109,10 @@ class LocalDevProcess {
124
109
  this.state.projectNodesAtLastUpload =
125
110
  intermediateRepresentation.intermediateNodesIndexedByUid;
126
111
  }
112
+ openLocalDevUi() {
113
+ const showWelcomeScreen = !hasLocalStateFlag(CONFIG_LOCAL_STATE_FLAGS.LOCAL_DEV_UI_WELCOME);
114
+ open(getLocalDevUiUrl(this.state.targetTestingAccountId, showWelcomeScreen));
115
+ }
127
116
  async handleFileChange(filePath, event) {
128
117
  await this.updateProjectNodes();
129
118
  try {
@@ -139,21 +128,16 @@ class LocalDevProcess {
139
128
  }
140
129
  async start() {
141
130
  this.logger.resetSpinnies();
142
- // Local dev currently relies on the existence of a deployed build in the target account
143
- if (!this.state.deployedBuild) {
144
- this.logger.noDeployedBuild();
145
- process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
146
- }
147
131
  const setupSucceeded = await this.setupDevServers();
148
132
  if (!setupSucceeded) {
149
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
133
+ process.exit(EXIT_CODES.ERROR);
150
134
  }
151
135
  this.logger.startupMessage();
136
+ if (isAutoOpenBrowserEnabled()) {
137
+ this.openLocalDevUi();
138
+ }
152
139
  await this.startDevServers();
153
140
  this.logger.monitorConsoleOutput();
154
- // Verify that there are no mismatches between components in the local project
155
- // and components in the deployed build of the project.
156
- this.compareLocalProjectToDeployed();
157
141
  }
158
142
  async stop(showProgress = true) {
159
143
  if (showProgress) {
@@ -164,12 +148,12 @@ class LocalDevProcess {
164
148
  if (showProgress) {
165
149
  this.logger.cleanupError();
166
150
  }
167
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
151
+ process.exit(EXIT_CODES.ERROR);
168
152
  }
169
153
  if (showProgress) {
170
154
  this.logger.cleanupSuccess();
171
155
  }
172
- process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
156
+ process.exit(EXIT_CODES.SUCCESS);
173
157
  }
174
158
  async uploadProject() {
175
159
  this.logger.uploadInitiated();
@@ -178,11 +162,11 @@ class LocalDevProcess {
178
162
  this.logger.projectConfigMismatch();
179
163
  return false;
180
164
  }
181
- const { uploadError } = await (0, upload_1.handleProjectUpload)({
165
+ const { uploadError } = await handleProjectUpload({
182
166
  accountId: this.state.targetProjectAccountId,
183
167
  projectConfig: this.state.projectConfig,
184
168
  projectDir: this.state.projectDir,
185
- callbackFunc: buildAndDeploy_1.pollProjectBuildAndDeploy,
169
+ callbackFunc: pollProjectBuildAndDeploy,
186
170
  sendIR: true,
187
171
  skipValidation: true,
188
172
  });
@@ -201,5 +185,8 @@ class LocalDevProcess {
201
185
  sendDevServerMessage(message) {
202
186
  this.state.devServerMessage = message;
203
187
  }
188
+ removeStateListener(key, listener) {
189
+ this.state.removeListener(key, listener);
190
+ }
204
191
  }
205
- exports.default = LocalDevProcess;
192
+ export default LocalDevProcess;
@@ -1,8 +1,7 @@
1
- import { Build } from '@hubspot/local-dev-lib/types/Build';
2
- import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types';
1
+ import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
3
2
  import { Environment } from '@hubspot/local-dev-lib/types/Config';
4
- import { ProjectConfig } from '../../../types/Projects';
5
- import { LocalDevStateConstructorOptions, LocalDevStateListener, AppLocalDevData, LocalDevServerMessage } from '../../../types/LocalDev';
3
+ import { ProjectConfig } from '../../../types/Projects.js';
4
+ import { LocalDevStateConstructorOptions, LocalDevStateListener, AppLocalDevData, LocalDevServerMessage } from '../../../types/LocalDev.js';
6
5
  declare class LocalDevState {
7
6
  private _targetProjectAccountId;
8
7
  private _targetTestingAccountId;
@@ -12,7 +11,6 @@ declare class LocalDevState {
12
11
  private _projectId;
13
12
  private _projectName;
14
13
  private _debug;
15
- private _deployedBuild?;
16
14
  private _isGithubLinked;
17
15
  private _projectNodes;
18
16
  private _projectNodesAtLastUpload;
@@ -20,7 +18,7 @@ declare class LocalDevState {
20
18
  private _listeners;
21
19
  private _appData;
22
20
  private _devServerMessage;
23
- constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug, deployedBuild, isGithubLinked, initialProjectNodes, profile, env, }: LocalDevStateConstructorOptions);
21
+ constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug, isGithubLinked, initialProjectNodes, profile, env, }: LocalDevStateConstructorOptions);
24
22
  private runListeners;
25
23
  get targetProjectAccountId(): number;
26
24
  get targetTestingAccountId(): number;
@@ -30,7 +28,6 @@ declare class LocalDevState {
30
28
  get projectId(): number;
31
29
  get projectName(): string;
32
30
  get debug(): boolean;
33
- get deployedBuild(): Build | undefined;
34
31
  get isGithubLinked(): boolean;
35
32
  get projectNodes(): {
36
33
  [key: string]: IntermediateRepresentationNodeLocalDev;
@@ -51,5 +48,6 @@ declare class LocalDevState {
51
48
  get devServerMessage(): string;
52
49
  set devServerMessage(message: LocalDevServerMessage);
53
50
  addListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>, callOnInit?: boolean): void;
51
+ removeListener<K extends keyof LocalDevState>(key: K, listener: LocalDevStateListener<K>): void;
54
52
  }
55
53
  export default LocalDevState;
@@ -1,6 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const constants_1 = require("../../constants");
1
+ import { LOCAL_DEV_SERVER_MESSAGE_TYPES } from '../../constants.js';
4
2
  class LocalDevState {
5
3
  _targetProjectAccountId;
6
4
  _targetTestingAccountId;
@@ -10,7 +8,6 @@ class LocalDevState {
10
8
  _projectId;
11
9
  _projectName;
12
10
  _debug;
13
- _deployedBuild;
14
11
  _isGithubLinked;
15
12
  _projectNodes;
16
13
  _projectNodesAtLastUpload;
@@ -18,7 +15,7 @@ class LocalDevState {
18
15
  _listeners;
19
16
  _appData;
20
17
  _devServerMessage;
21
- constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug, deployedBuild, isGithubLinked, initialProjectNodes, profile, env, }) {
18
+ constructor({ targetProjectAccountId, targetTestingAccountId, projectConfig, projectDir, projectId, projectName, debug, isGithubLinked, initialProjectNodes, profile, env, }) {
22
19
  this._targetProjectAccountId = targetProjectAccountId;
23
20
  this._targetTestingAccountId = targetTestingAccountId;
24
21
  this._profile = profile;
@@ -27,13 +24,12 @@ class LocalDevState {
27
24
  this._projectId = projectId;
28
25
  this._projectName = projectName;
29
26
  this._debug = debug || false;
30
- this._deployedBuild = deployedBuild;
31
27
  this._isGithubLinked = isGithubLinked;
32
28
  this._projectNodes = initialProjectNodes;
33
29
  this._projectNodesAtLastUpload = initialProjectNodes;
34
30
  this._env = env;
35
31
  this._appData = {};
36
- this._devServerMessage = constants_1.LOCAL_DEV_SERVER_MESSAGE_TYPES.INITIAL;
32
+ this._devServerMessage = LOCAL_DEV_SERVER_MESSAGE_TYPES.INITIAL;
37
33
  this._listeners = {};
38
34
  }
39
35
  runListeners(key) {
@@ -65,9 +61,6 @@ class LocalDevState {
65
61
  get debug() {
66
62
  return this._debug;
67
63
  }
68
- get deployedBuild() {
69
- return this._deployedBuild && structuredClone(this._deployedBuild);
70
- }
71
64
  get isGithubLinked() {
72
65
  return this._isGithubLinked;
73
66
  }
@@ -113,5 +106,10 @@ class LocalDevState {
113
106
  listener(this[key]);
114
107
  }
115
108
  }
109
+ removeListener(key, listener) {
110
+ if (this._listeners[key]) {
111
+ this._listeners[key].splice(this._listeners[key].indexOf(listener), 1);
112
+ }
113
+ }
116
114
  }
117
- exports.default = LocalDevState;
115
+ export default LocalDevState;
@@ -1,4 +1,4 @@
1
- import LocalDevProcess from './LocalDevProcess';
1
+ import LocalDevProcess from './LocalDevProcess.js';
2
2
  declare class LocalDevWatcher {
3
3
  private localDevProcess;
4
4
  private watcher;
@@ -1,11 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const path_1 = __importDefault(require("path"));
7
- const chokidar_1 = __importDefault(require("chokidar"));
8
- const constants_1 = require("../../constants");
1
+ import path from 'path';
2
+ import chokidar from 'chokidar';
3
+ import { PROJECT_CONFIG_FILE } from '../../constants.js';
9
4
  const WATCH_EVENTS = {
10
5
  add: 'add',
11
6
  change: 'change',
@@ -26,12 +21,12 @@ class LocalDevWatcher {
26
21
  return this.localDevProcess.handleFileChange(filePath, event);
27
22
  }
28
23
  start() {
29
- this.watcher = chokidar_1.default.watch(this.localDevProcess.projectDir, {
24
+ this.watcher = chokidar.watch(this.localDevProcess.projectDir, {
30
25
  ignoreInitial: true,
31
26
  ignored: ['**/dist'],
32
27
  });
33
28
  const configPaths = Object.values(this.localDevProcess.projectNodes).map(component => component.localDev.componentConfigPath);
34
- const projectConfigPath = path_1.default.join(this.localDevProcess.projectDir, constants_1.PROJECT_CONFIG_FILE);
29
+ const projectConfigPath = path.join(this.localDevProcess.projectDir, PROJECT_CONFIG_FILE);
35
30
  configPaths.push(projectConfigPath);
36
31
  this.watcher.on('add', filePath => {
37
32
  this.handleWatchEvent(filePath, WATCH_EVENTS.add, configPaths);
@@ -50,4 +45,4 @@ class LocalDevWatcher {
50
45
  await this.watcher?.close();
51
46
  }
52
47
  }
53
- exports.default = LocalDevWatcher;
48
+ export default LocalDevWatcher;
@@ -1,18 +1,18 @@
1
- import LocalDevProcess from './LocalDevProcess';
1
+ import LocalDevProcess from './LocalDevProcess.js';
2
2
  declare class LocalDevWebsocketServer {
3
3
  private server?;
4
- private _websocket?;
5
4
  private debug?;
6
5
  private localDevProcess;
7
6
  private ALLOWED_ORIGINS;
8
7
  constructor(localDevProcess: LocalDevProcess, debug?: boolean);
9
- private websocket;
10
8
  private log;
11
9
  private logError;
12
10
  private sendMessage;
13
11
  private handleUpload;
14
12
  private setupMessageHandlers;
15
13
  private sendProjectData;
14
+ private setupProjectNodesListener;
15
+ private setupAppDataListener;
16
16
  private setupStateListeners;
17
17
  start(): Promise<void>;
18
18
  shutdown(): void;
@@ -1,15 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ws_1 = require("ws");
4
- const portManager_1 = require("@hubspot/local-dev-lib/portManager");
5
- const logger_1 = require("@hubspot/local-dev-lib/logger");
6
- const constants_1 = require("../../constants");
7
- const en_1 = require("../../../lang/en");
1
+ import { WebSocketServer } from 'ws';
2
+ import { isPortManagerServerRunning, requestPorts, } from '@hubspot/local-dev-lib/portManager';
3
+ import { logger } from '@hubspot/local-dev-lib/logger';
4
+ import { addLocalStateFlag } from '@hubspot/local-dev-lib/config';
5
+ import { LOCAL_DEV_UI_MESSAGE_SEND_TYPES, LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES, LOCAL_DEV_SERVER_MESSAGE_TYPES, CONFIG_LOCAL_STATE_FLAGS, } from '../../constants.js';
6
+ import { lib } from '../../../lang/en.js';
8
7
  const SERVER_INSTANCE_ID = 'local-dev-ui-websocket-server';
9
8
  const LOG_PREFIX = '[LocalDevWebsocketServer]';
10
9
  class LocalDevWebsocketServer {
11
10
  server;
12
- _websocket;
13
11
  debug;
14
12
  localDevProcess;
15
13
  ALLOWED_ORIGINS = [
@@ -22,62 +20,59 @@ class LocalDevWebsocketServer {
22
20
  this.localDevProcess = localDevProcess;
23
21
  this.debug = debug;
24
22
  }
25
- websocket() {
26
- if (!this._websocket) {
27
- throw new Error(en_1.lib.LocalDevWebsocketServer.errors.notInitialized(LOG_PREFIX));
28
- }
29
- return this._websocket;
30
- }
31
23
  log(message) {
32
24
  if (this.debug) {
33
- logger_1.logger.log(LOG_PREFIX, message);
25
+ logger.log(LOG_PREFIX, message);
34
26
  }
35
27
  }
36
28
  logError(message) {
37
29
  if (this.debug) {
38
- logger_1.logger.error(LOG_PREFIX, message);
30
+ logger.error(LOG_PREFIX, message);
39
31
  }
40
32
  }
41
- sendMessage(message) {
42
- this.websocket().send(JSON.stringify(message));
33
+ sendMessage(websocket, message) {
34
+ websocket.send(JSON.stringify(message));
43
35
  }
44
- async handleUpload() {
36
+ async handleUpload(websocket) {
45
37
  const uploadSuccess = await this.localDevProcess.uploadProject();
46
38
  if (uploadSuccess) {
47
- this.sendMessage({
48
- type: constants_1.LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPLOAD_SUCCESS,
39
+ this.sendMessage(websocket, {
40
+ type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPLOAD_SUCCESS,
49
41
  });
50
42
  }
51
43
  else {
52
- this.sendMessage({
53
- type: constants_1.LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPLOAD_FAILURE,
44
+ this.sendMessage(websocket, {
45
+ type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPLOAD_FAILURE,
54
46
  });
55
47
  }
56
48
  }
57
- setupMessageHandlers() {
58
- this.websocket().on('message', data => {
49
+ setupMessageHandlers(websocket) {
50
+ websocket.on('message', data => {
59
51
  try {
60
52
  const message = JSON.parse(data.toString());
61
53
  if (!message.type) {
62
- this.logError(en_1.lib.LocalDevWebsocketServer.errors.missingTypeField(data.toString()));
54
+ this.logError(lib.LocalDevWebsocketServer.errors.missingTypeField(data.toString()));
63
55
  return;
64
56
  }
65
57
  switch (message.type) {
66
- case constants_1.LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.UPLOAD:
67
- this.handleUpload();
58
+ case LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.UPLOAD:
59
+ this.handleUpload(websocket);
60
+ break;
61
+ case LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.VIEWED_WELCOME_SCREEN:
62
+ addLocalStateFlag(CONFIG_LOCAL_STATE_FLAGS.LOCAL_DEV_UI_WELCOME);
68
63
  break;
69
64
  default:
70
- this.logError(en_1.lib.LocalDevWebsocketServer.errors.unknownMessageType(message.type));
65
+ this.logError(lib.LocalDevWebsocketServer.errors.unknownMessageType(message.type));
71
66
  }
72
67
  }
73
68
  catch (e) {
74
- this.logError(en_1.lib.LocalDevWebsocketServer.errors.invalidJSON(data.toString()));
69
+ this.logError(lib.LocalDevWebsocketServer.errors.invalidJSON(data.toString()));
75
70
  }
76
71
  });
77
72
  }
78
- sendProjectData() {
79
- this.sendMessage({
80
- type: constants_1.LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_PROJECT_DATA,
73
+ sendProjectData(websocket) {
74
+ this.sendMessage(websocket, {
75
+ type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_PROJECT_DATA,
81
76
  data: {
82
77
  projectName: this.localDevProcess.projectName,
83
78
  projectId: this.localDevProcess.projectId,
@@ -86,46 +81,59 @@ class LocalDevWebsocketServer {
86
81
  },
87
82
  });
88
83
  }
89
- setupStateListeners() {
90
- this.localDevProcess.addStateListener('projectNodes', nodes => {
91
- this.sendMessage({
92
- type: constants_1.LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_PROJECT_NODES,
84
+ setupProjectNodesListener(websocket) {
85
+ const listener = (nodes) => {
86
+ this.sendMessage(websocket, {
87
+ type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_PROJECT_NODES,
93
88
  data: nodes,
94
89
  });
95
- }, true);
96
- this.localDevProcess.addStateListener('appData', appData => {
97
- this.sendMessage({
98
- type: constants_1.LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_APP_DATA,
90
+ };
91
+ this.localDevProcess.addStateListener('projectNodes', listener, true);
92
+ websocket.on('close', () => {
93
+ this.localDevProcess.removeStateListener('projectNodes', listener);
94
+ });
95
+ }
96
+ setupAppDataListener(websocket) {
97
+ const listener = (appData) => {
98
+ this.sendMessage(websocket, {
99
+ type: LOCAL_DEV_UI_MESSAGE_SEND_TYPES.UPDATE_APP_DATA,
99
100
  data: appData,
100
101
  });
101
- }, true);
102
+ };
103
+ this.localDevProcess.addStateListener('appData', listener, true);
104
+ websocket.on('close', () => {
105
+ this.localDevProcess.removeStateListener('appData', listener);
106
+ });
107
+ }
108
+ setupStateListeners(websocket) {
109
+ this.setupProjectNodesListener(websocket);
110
+ this.setupAppDataListener(websocket);
102
111
  }
103
112
  async start() {
104
- const portManagerIsRunning = await (0, portManager_1.isPortManagerServerRunning)();
113
+ const portManagerIsRunning = await isPortManagerServerRunning();
105
114
  if (!portManagerIsRunning) {
106
- throw new Error(en_1.lib.LocalDevWebsocketServer.errors.portManagerNotRunning(LOG_PREFIX));
115
+ throw new Error(lib.LocalDevWebsocketServer.errors.portManagerNotRunning(LOG_PREFIX));
107
116
  }
108
- const portData = await (0, portManager_1.requestPorts)([{ instanceId: SERVER_INSTANCE_ID }]);
117
+ const portData = await requestPorts([{ instanceId: SERVER_INSTANCE_ID }]);
109
118
  const port = portData[SERVER_INSTANCE_ID];
110
- this.server = new ws_1.WebSocketServer({ port });
111
- this.log(en_1.lib.LocalDevWebsocketServer.logs.startup(port));
119
+ this.server = new WebSocketServer({ port });
120
+ this.log(lib.LocalDevWebsocketServer.logs.startup(port));
112
121
  this.server.on('connection', (ws, req) => {
113
122
  const origin = req.headers.origin;
114
123
  if (!origin || !this.ALLOWED_ORIGINS.includes(origin)) {
115
- ws.close(1008, en_1.lib.LocalDevWebsocketServer.errors.originNotAllowed(origin));
124
+ ws.close(1008, lib.LocalDevWebsocketServer.errors.originNotAllowed(origin));
116
125
  return;
117
126
  }
118
- this._websocket = ws;
119
- this.sendProjectData();
120
- this.setupMessageHandlers();
121
- this.setupStateListeners();
122
- this.localDevProcess.sendDevServerMessage(constants_1.LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
127
+ this.sendProjectData(ws);
128
+ this.setupMessageHandlers(ws);
129
+ this.setupStateListeners(ws);
130
+ this.localDevProcess.sendDevServerMessage(LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
123
131
  });
132
+ this.server.on('close', () => { });
124
133
  }
125
134
  shutdown() {
126
135
  this.server?.close();
127
136
  this.server = undefined;
128
- this._websocket = undefined;
129
137
  }
130
138
  }
131
- exports.default = LocalDevWebsocketServer;
139
+ export default LocalDevWebsocketServer;
@@ -1,20 +1,27 @@
1
1
  import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
2
2
  import { Environment } from '@hubspot/local-dev-lib/types/Config';
3
- import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTestAccounts';
3
+ import { DeveloperTestAccount } from '@hubspot/local-dev-lib/types/developerTestAccounts.js';
4
4
  import { Project } from '@hubspot/local-dev-lib/types/Project';
5
5
  import { Build } from '@hubspot/local-dev-lib/types/Build';
6
- import { ProjectConfig } from '../../../types/Projects';
7
- import { ProjectDevTargetAccountPromptResponse } from '../../prompts/projectDevTargetAccountPrompt';
6
+ import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
7
+ import { ProjectConfig } from '../../../types/Projects.js';
8
+ import { ProjectDevTargetAccountPromptResponse } from '../../prompts/projectDevTargetAccountPrompt.js';
8
9
  export declare function confirmDefaultAccountIsTarget(accountConfig: CLIAccount): Promise<void>;
9
10
  export declare function checkIfDefaultAccountIsSupported(accountConfig: CLIAccount, hasPublicApps: boolean): Promise<void>;
10
11
  export declare function checkIfParentAccountIsAuthed(accountConfig: CLIAccount): void;
11
12
  export declare function checkIfAccountFlagIsSupported(accountConfig: CLIAccount, hasPublicApps: boolean): void;
12
13
  export declare function suggestRecommendedNestedAccount(accounts: CLIAccount[], accountConfig: CLIAccount, hasPublicApps: boolean): Promise<ProjectDevTargetAccountPromptResponse>;
13
14
  export declare function createSandboxForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment): Promise<number>;
14
- export declare function createDeveloperTestAccountForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment): Promise<number>;
15
+ export declare function createDeveloperTestAccountForLocalDev(accountId: number, accountConfig: CLIAccount, env: Environment, useV3?: boolean): Promise<number>;
15
16
  export declare function useExistingDevTestAccount(env: Environment, account: DeveloperTestAccount): Promise<void>;
16
17
  export declare function createNewProjectForLocalDev(projectConfig: ProjectConfig, targetAccountId: number, shouldCreateWithoutConfirmation: boolean, hasPublicApps: boolean): Promise<Project>;
17
18
  export declare function createInitialBuildForNewProject(projectConfig: ProjectConfig, projectDir: string, targetAccountId: number, sendIR?: boolean, profile?: string): Promise<Build>;
18
19
  export declare function getAccountHomeUrl(accountId: number): string;
19
20
  export declare function hasSandboxes(account: CLIAccount): Promise<boolean>;
20
21
  export declare function selectAccountTypePrompt(accountConfig: CLIAccount): Promise<string | null>;
22
+ export declare function compareLocalProjectToDeployed(projectConfig: ProjectConfig, accountId: number, deployedBuildId: number | undefined, localProjectNodes: {
23
+ [key: string]: IntermediateRepresentationNodeLocalDev;
24
+ }): Promise<void>;
25
+ export declare function isDeployedProjectUpToDateWithLocal(projectConfig: ProjectConfig, accountId: number, deployedBuildId: number, localProjectNodes: {
26
+ [key: string]: IntermediateRepresentationNodeLocalDev;
27
+ }): Promise<boolean>;