@hubspot/cli 7.7.21-experimental.0 → 7.7.21-experimental.1

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 (570) hide show
  1. package/api/__tests__/migrate.test.js +29 -27
  2. package/api/migrate.js +22 -14
  3. package/bin/cli.js +101 -92
  4. package/bin/hs +2 -2
  5. package/bin/hscms +2 -2
  6. package/bin/silenceErrors.js +2 -1
  7. package/commands/__tests__/account.test.js +34 -29
  8. package/commands/__tests__/auth.test.js +16 -11
  9. package/commands/__tests__/cms.test.js +20 -15
  10. package/commands/__tests__/config.test.js +19 -14
  11. package/commands/__tests__/create.test.js +15 -10
  12. package/commands/__tests__/customObject.test.js +19 -14
  13. package/commands/__tests__/doctor.test.js +48 -43
  14. package/commands/__tests__/feedback.test.js +45 -7
  15. package/commands/__tests__/fetch.test.js +28 -29
  16. package/commands/__tests__/filemanager.test.js +19 -14
  17. package/commands/__tests__/function.test.js +21 -16
  18. package/commands/__tests__/getStarted.test.js +50 -55
  19. package/commands/__tests__/hubdb.test.js +22 -17
  20. package/commands/__tests__/init.test.js +17 -12
  21. package/commands/__tests__/lint.test.js +18 -13
  22. package/commands/__tests__/list.test.js +23 -18
  23. package/commands/__tests__/logs.test.js +27 -28
  24. package/commands/__tests__/mcp.test.js +19 -14
  25. package/commands/__tests__/mv.test.js +52 -14
  26. package/commands/__tests__/open.test.js +51 -13
  27. package/commands/__tests__/project.test.js +49 -44
  28. package/commands/__tests__/remove.test.js +51 -13
  29. package/commands/__tests__/sandbox.test.js +19 -14
  30. package/commands/__tests__/secret.test.js +21 -16
  31. package/commands/__tests__/testAccount.test.js +21 -16
  32. package/commands/__tests__/theme.test.js +20 -15
  33. package/commands/account/__tests__/auth.test.js +16 -11
  34. package/commands/account/__tests__/clean.test.js +17 -12
  35. package/commands/account/__tests__/createOverride.test.js +15 -10
  36. package/commands/account/__tests__/info.test.js +16 -11
  37. package/commands/account/__tests__/list.test.js +16 -11
  38. package/commands/account/__tests__/remove.test.js +18 -13
  39. package/commands/account/__tests__/removeOverride.js +13 -8
  40. package/commands/account/__tests__/rename.test.js +20 -15
  41. package/commands/account/__tests__/use.test.js +15 -10
  42. package/commands/account/auth.d.ts +1 -1
  43. package/commands/account/auth.js +67 -65
  44. package/commands/account/clean.d.ts +1 -1
  45. package/commands/account/clean.js +60 -55
  46. package/commands/account/createOverride.d.ts +1 -1
  47. package/commands/account/createOverride.js +57 -52
  48. package/commands/account/info.d.ts +1 -1
  49. package/commands/account/info.js +35 -33
  50. package/commands/account/list.d.ts +1 -1
  51. package/commands/account/list.js +45 -43
  52. package/commands/account/remove.d.ts +1 -1
  53. package/commands/account/remove.js +42 -37
  54. package/commands/account/removeOverride.d.ts +1 -1
  55. package/commands/account/removeOverride.js +43 -38
  56. package/commands/account/rename.d.ts +1 -1
  57. package/commands/account/rename.js +20 -18
  58. package/commands/account/use.d.ts +1 -1
  59. package/commands/account/use.js +31 -29
  60. package/commands/account.d.ts +1 -1
  61. package/commands/account.js +28 -23
  62. package/commands/app/__tests__/install.test.js +52 -0
  63. package/commands/app/__tests__/migrate.test.js +34 -29
  64. package/commands/app/install.d.ts +8 -0
  65. package/commands/app/install.js +127 -0
  66. package/commands/app/migrate.d.ts +2 -2
  67. package/commands/app/migrate.js +43 -40
  68. package/commands/app/secret/__tests__/add.test.js +11 -6
  69. package/commands/app/secret/__tests__/delete.test.js +11 -6
  70. package/commands/app/secret/__tests__/list.test.js +11 -6
  71. package/commands/app/secret/__tests__/update.test.js +11 -6
  72. package/commands/app/secret/add.d.ts +1 -1
  73. package/commands/app/secret/add.js +30 -28
  74. package/commands/app/secret/delete.d.ts +1 -1
  75. package/commands/app/secret/delete.js +36 -34
  76. package/commands/app/secret/list.d.ts +1 -1
  77. package/commands/app/secret/list.js +27 -25
  78. package/commands/app/secret/update.d.ts +1 -1
  79. package/commands/app/secret/update.js +34 -32
  80. package/commands/app/secret.d.ts +1 -1
  81. package/commands/app/secret.js +17 -12
  82. package/commands/app.d.ts +1 -1
  83. package/commands/app.js +16 -6
  84. package/commands/auth.d.ts +1 -1
  85. package/commands/auth.js +72 -70
  86. package/commands/cms/convertFields.d.ts +1 -1
  87. package/commands/cms/convertFields.js +39 -34
  88. package/commands/cms/getReactModule.d.ts +1 -1
  89. package/commands/cms/getReactModule.js +37 -32
  90. package/commands/cms/lighthouseScore.d.ts +1 -1
  91. package/commands/cms/lighthouseScore.js +72 -67
  92. package/commands/cms.d.ts +1 -1
  93. package/commands/cms.js +16 -11
  94. package/commands/completion.d.ts +1 -1
  95. package/commands/completion.js +15 -10
  96. package/commands/config/migrate.d.ts +1 -1
  97. package/commands/config/migrate.js +32 -27
  98. package/commands/config/set.d.ts +1 -1
  99. package/commands/config/set.js +25 -23
  100. package/commands/config.d.ts +1 -1
  101. package/commands/config.js +13 -8
  102. package/commands/create/api-sample.d.ts +1 -1
  103. package/commands/create/api-sample.js +33 -28
  104. package/commands/create/app.d.ts +1 -1
  105. package/commands/create/app.js +5 -3
  106. package/commands/create/function.d.ts +1 -1
  107. package/commands/create/function.js +11 -9
  108. package/commands/create/index.d.ts +1 -1
  109. package/commands/create/index.js +24 -19
  110. package/commands/create/module.d.ts +1 -1
  111. package/commands/create/module.js +14 -12
  112. package/commands/create/react-app.d.ts +1 -1
  113. package/commands/create/react-app.js +5 -3
  114. package/commands/create/template.d.ts +1 -1
  115. package/commands/create/template.js +14 -12
  116. package/commands/create/vue-app.d.ts +1 -1
  117. package/commands/create/vue-app.js +5 -3
  118. package/commands/create/webpack-serverless.d.ts +1 -1
  119. package/commands/create/webpack-serverless.js +5 -3
  120. package/commands/create/website-theme.d.ts +1 -1
  121. package/commands/create/website-theme.js +7 -5
  122. package/commands/create.d.ts +2 -2
  123. package/commands/create.js +35 -30
  124. package/commands/customObject/__tests__/create.test.js +18 -13
  125. package/commands/customObject/__tests__/schema.test.js +23 -18
  126. package/commands/customObject/create.d.ts +1 -1
  127. package/commands/customObject/create.js +30 -28
  128. package/commands/customObject/schema/__tests__/create.test.js +18 -13
  129. package/commands/customObject/schema/__tests__/delete.test.js +18 -13
  130. package/commands/customObject/schema/__tests__/fetch-all.test.js +18 -13
  131. package/commands/customObject/schema/__tests__/fetch.test.js +18 -13
  132. package/commands/customObject/schema/__tests__/list.test.js +18 -13
  133. package/commands/customObject/schema/__tests__/update.test.js +18 -13
  134. package/commands/customObject/schema/create.d.ts +1 -1
  135. package/commands/customObject/schema/create.js +30 -28
  136. package/commands/customObject/schema/delete.d.ts +1 -1
  137. package/commands/customObject/schema/delete.js +26 -24
  138. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  139. package/commands/customObject/schema/fetch-all.js +24 -22
  140. package/commands/customObject/schema/fetch.d.ts +1 -1
  141. package/commands/customObject/schema/fetch.js +26 -24
  142. package/commands/customObject/schema/list.d.ts +1 -1
  143. package/commands/customObject/schema/list.js +15 -13
  144. package/commands/customObject/schema/update.d.ts +1 -1
  145. package/commands/customObject/schema/update.js +34 -32
  146. package/commands/customObject/schema.d.ts +1 -1
  147. package/commands/customObject/schema.js +22 -17
  148. package/commands/customObject.d.ts +1 -1
  149. package/commands/customObject.js +18 -13
  150. package/commands/doctor.d.ts +1 -1
  151. package/commands/doctor.js +33 -28
  152. package/commands/feedback.d.ts +1 -1
  153. package/commands/feedback.js +24 -19
  154. package/commands/fetch.d.ts +1 -1
  155. package/commands/fetch.js +30 -28
  156. package/commands/filemanager/__tests__/fetch.test.js +22 -17
  157. package/commands/filemanager/__tests__/upload.test.js +20 -15
  158. package/commands/filemanager/fetch.d.ts +1 -1
  159. package/commands/filemanager/fetch.js +25 -23
  160. package/commands/filemanager/upload.d.ts +1 -1
  161. package/commands/filemanager/upload.js +44 -39
  162. package/commands/filemanager.d.ts +1 -1
  163. package/commands/filemanager.js +13 -8
  164. package/commands/function/deploy.d.ts +1 -1
  165. package/commands/function/deploy.js +40 -35
  166. package/commands/function/list.d.ts +1 -1
  167. package/commands/function/list.js +29 -24
  168. package/commands/function/server.d.ts +1 -1
  169. package/commands/function/server.js +17 -15
  170. package/commands/function.d.ts +1 -1
  171. package/commands/function.js +18 -12
  172. package/commands/getStarted.d.ts +1 -1
  173. package/commands/getStarted.js +131 -140
  174. package/commands/hubdb/__tests__/clear.test.js +18 -13
  175. package/commands/hubdb/__tests__/create.test.js +18 -13
  176. package/commands/hubdb/__tests__/delete.test.js +18 -13
  177. package/commands/hubdb/__tests__/fetch.test.js +18 -13
  178. package/commands/hubdb/__tests__/list.test.js +28 -23
  179. package/commands/hubdb/clear.d.ts +1 -1
  180. package/commands/hubdb/clear.js +22 -20
  181. package/commands/hubdb/create.d.ts +1 -1
  182. package/commands/hubdb/create.js +35 -30
  183. package/commands/hubdb/delete.d.ts +1 -1
  184. package/commands/hubdb/delete.js +26 -24
  185. package/commands/hubdb/fetch.d.ts +1 -1
  186. package/commands/hubdb/fetch.js +19 -17
  187. package/commands/hubdb/list.d.ts +1 -1
  188. package/commands/hubdb/list.js +35 -33
  189. package/commands/hubdb.d.ts +1 -1
  190. package/commands/hubdb.js +24 -18
  191. package/commands/init.d.ts +1 -1
  192. package/commands/init.js +88 -83
  193. package/commands/lint.d.ts +1 -1
  194. package/commands/lint.js +26 -24
  195. package/commands/list.d.ts +1 -1
  196. package/commands/list.js +37 -32
  197. package/commands/logs.d.ts +1 -1
  198. package/commands/logs.js +37 -35
  199. package/commands/mcp/__tests__/setup.test.js +12 -7
  200. package/commands/mcp/__tests__/start.test.js +12 -7
  201. package/commands/mcp/setup.d.ts +1 -1
  202. package/commands/mcp/setup.js +20 -17
  203. package/commands/mcp/start.d.ts +5 -2
  204. package/commands/mcp/start.js +41 -31
  205. package/commands/mcp.d.ts +1 -1
  206. package/commands/mcp.js +12 -7
  207. package/commands/module/marketplace-validate.d.ts +1 -1
  208. package/commands/module/marketplace-validate.js +26 -21
  209. package/commands/module.d.ts +1 -1
  210. package/commands/module.js +13 -7
  211. package/commands/mv.d.ts +1 -1
  212. package/commands/mv.js +22 -20
  213. package/commands/open.d.ts +1 -1
  214. package/commands/open.js +21 -19
  215. package/commands/project/__tests__/add.test.js +15 -10
  216. package/commands/project/__tests__/create.test.js +19 -14
  217. package/commands/project/__tests__/deploy.test.js +143 -103
  218. package/commands/project/__tests__/devUnifiedFlow.test.js +157 -148
  219. package/commands/project/__tests__/download.test.js +19 -14
  220. package/commands/project/__tests__/installDeps.test.js +70 -32
  221. package/commands/project/__tests__/listBuilds.test.js +19 -14
  222. package/commands/project/__tests__/logs.test.js +94 -56
  223. package/commands/project/__tests__/migrate.test.js +30 -25
  224. package/commands/project/__tests__/migrateApp.test.js +22 -17
  225. package/commands/project/__tests__/open.test.js +21 -16
  226. package/commands/project/__tests__/profile.test.js +19 -14
  227. package/commands/project/__tests__/upload.test.js +23 -18
  228. package/commands/project/__tests__/watch.test.js +19 -14
  229. package/commands/project/add.d.ts +1 -1
  230. package/commands/project/add.js +36 -34
  231. package/commands/project/cloneApp.d.ts +1 -1
  232. package/commands/project/cloneApp.js +72 -67
  233. package/commands/project/create.d.ts +2 -2
  234. package/commands/project/create.js +68 -63
  235. package/commands/project/deploy.d.ts +3 -2
  236. package/commands/project/deploy.js +102 -91
  237. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  238. package/commands/project/dev/deprecatedFlow.js +58 -52
  239. package/commands/project/dev/index.d.ts +1 -1
  240. package/commands/project/dev/index.js +47 -44
  241. package/commands/project/dev/unifiedFlow.d.ts +3 -3
  242. package/commands/project/dev/unifiedFlow.js +74 -67
  243. package/commands/project/download.d.ts +1 -1
  244. package/commands/project/download.js +40 -35
  245. package/commands/project/installDeps.d.ts +1 -1
  246. package/commands/project/installDeps.js +34 -29
  247. package/commands/project/listBuilds.d.ts +1 -1
  248. package/commands/project/listBuilds.js +45 -40
  249. package/commands/project/logs.d.ts +1 -1
  250. package/commands/project/logs.js +54 -52
  251. package/commands/project/migrate.d.ts +1 -1
  252. package/commands/project/migrate.js +26 -24
  253. package/commands/project/migrateApp.d.ts +2 -2
  254. package/commands/project/migrateApp.js +20 -18
  255. package/commands/project/open.d.ts +1 -1
  256. package/commands/project/open.js +30 -25
  257. package/commands/project/profile/add.d.ts +1 -1
  258. package/commands/project/profile/add.js +73 -68
  259. package/commands/project/profile/delete.d.ts +1 -1
  260. package/commands/project/profile/delete.js +56 -51
  261. package/commands/project/profile.d.ts +1 -1
  262. package/commands/project/profile.js +14 -9
  263. package/commands/project/upload.d.ts +1 -1
  264. package/commands/project/upload.js +55 -50
  265. package/commands/project/validate.d.ts +1 -1
  266. package/commands/project/validate.js +40 -35
  267. package/commands/project/watch.d.ts +1 -1
  268. package/commands/project/watch.js +61 -59
  269. package/commands/project.d.ts +1 -1
  270. package/commands/project.js +43 -38
  271. package/commands/remove.d.ts +1 -1
  272. package/commands/remove.js +17 -15
  273. package/commands/sandbox/__tests__/create.test.js +20 -15
  274. package/commands/sandbox/__tests__/delete.test.js +20 -15
  275. package/commands/sandbox/create.d.ts +1 -1
  276. package/commands/sandbox/create.js +69 -67
  277. package/commands/sandbox/delete.d.ts +1 -1
  278. package/commands/sandbox/delete.js +96 -94
  279. package/commands/sandbox.d.ts +1 -1
  280. package/commands/sandbox.js +14 -9
  281. package/commands/secret/__tests__/addSecret.test.js +18 -13
  282. package/commands/secret/__tests__/deleteSecret.test.js +18 -13
  283. package/commands/secret/__tests__/listSecret.test.js +18 -13
  284. package/commands/secret/__tests__/updateSecret.test.js +18 -13
  285. package/commands/secret/addSecret.d.ts +1 -1
  286. package/commands/secret/addSecret.js +28 -26
  287. package/commands/secret/deleteSecret.d.ts +1 -1
  288. package/commands/secret/deleteSecret.js +29 -27
  289. package/commands/secret/listSecret.d.ts +1 -1
  290. package/commands/secret/listSecret.js +21 -19
  291. package/commands/secret/updateSecret.d.ts +1 -1
  292. package/commands/secret/updateSecret.js +27 -25
  293. package/commands/secret.d.ts +1 -1
  294. package/commands/secret.js +18 -13
  295. package/commands/testAccount/__tests__/create.test.js +22 -17
  296. package/commands/testAccount/__tests__/createConfig.test.js +11 -9
  297. package/commands/testAccount/__tests__/delete.test.js +20 -15
  298. package/commands/testAccount/create.d.ts +1 -1
  299. package/commands/testAccount/create.js +57 -62
  300. package/commands/testAccount/createConfig.d.ts +1 -3
  301. package/commands/testAccount/createConfig.js +47 -43
  302. package/commands/testAccount/delete.d.ts +1 -1
  303. package/commands/testAccount/delete.js +19 -17
  304. package/commands/testAccount.d.ts +1 -1
  305. package/commands/testAccount.js +15 -10
  306. package/commands/theme/__tests__/generate-selectors.test.js +12 -7
  307. package/commands/theme/__tests__/marketplace-validate.test.js +19 -14
  308. package/commands/theme/__tests__/preview.test.js +17 -12
  309. package/commands/theme/generate-selectors.d.ts +1 -1
  310. package/commands/theme/generate-selectors.js +28 -23
  311. package/commands/theme/marketplace-validate.d.ts +1 -1
  312. package/commands/theme/marketplace-validate.js +24 -19
  313. package/commands/theme/preview.d.ts +1 -1
  314. package/commands/theme/preview.js +65 -60
  315. package/commands/theme.d.ts +1 -1
  316. package/commands/theme.js +16 -11
  317. package/commands/upload.d.ts +1 -1
  318. package/commands/upload.js +82 -77
  319. package/commands/watch.d.ts +1 -1
  320. package/commands/watch.js +51 -45
  321. package/lang/en.d.ts +62 -23
  322. package/lang/en.js +434 -389
  323. package/lang/en.lyaml +0 -26
  324. package/lib/__tests__/accountTypes.test.js +22 -20
  325. package/lib/__tests__/buildAccount.test.js +90 -27
  326. package/lib/__tests__/commonOpts.test.js +22 -20
  327. package/lib/__tests__/dependencyManagement.test.js +51 -46
  328. package/lib/__tests__/developerTestAccounts.test.js +62 -27
  329. package/lib/__tests__/hasFeature.test.js +8 -6
  330. package/lib/__tests__/npm.test.js +20 -15
  331. package/lib/__tests__/oauth.test.js +28 -23
  332. package/lib/__tests__/parsing.test.js +20 -18
  333. package/lib/__tests__/polling.test.js +26 -24
  334. package/lib/__tests__/process.test.js +19 -14
  335. package/lib/__tests__/projectProfiles.test.js +39 -34
  336. package/lib/__tests__/sandboxSync.test.js +35 -30
  337. package/lib/__tests__/sandboxes.test.js +31 -29
  338. package/lib/__tests__/serverlessLogs.test.js +13 -8
  339. package/lib/__tests__/usageTracking.test.js +42 -47
  340. package/lib/__tests__/validation.test.js +20 -18
  341. package/lib/__tests__/yargsUtils.test.js +41 -6
  342. package/lib/accountTypes.js +34 -24
  343. package/lib/app/__tests__/migrate.test.js +99 -94
  344. package/lib/app/__tests__/migrate_legacy.test.js +31 -29
  345. package/lib/app/migrate.d.ts +3 -3
  346. package/lib/app/migrate.js +145 -127
  347. package/lib/app/migrate_legacy.d.ts +1 -1
  348. package/lib/app/migrate_legacy.js +78 -72
  349. package/lib/app/urls.js +9 -5
  350. package/lib/buildAccount.d.ts +8 -2
  351. package/lib/buildAccount.js +119 -61
  352. package/lib/commonOpts.d.ts +1 -1
  353. package/lib/commonOpts.js +59 -42
  354. package/lib/configMigrate.js +38 -34
  355. package/lib/configOptions.js +40 -34
  356. package/lib/constants.js +34 -31
  357. package/lib/customObject.js +6 -2
  358. package/lib/dependencyManagement.js +45 -37
  359. package/lib/developerTestAccounts.d.ts +1 -1
  360. package/lib/developerTestAccounts.js +39 -34
  361. package/lib/doctor/Diagnosis.d.ts +1 -1
  362. package/lib/doctor/Diagnosis.js +29 -25
  363. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  364. package/lib/doctor/DiagnosticInfoBuilder.js +37 -30
  365. package/lib/doctor/Doctor.d.ts +1 -1
  366. package/lib/doctor/Doctor.js +101 -94
  367. package/lib/doctor/__tests__/Diagnosis.test.js +14 -9
  368. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +34 -29
  369. package/lib/doctor/__tests__/Doctor.test.js +26 -24
  370. package/lib/enums/exitCodes.js +4 -1
  371. package/lib/errorHandlers/index.js +41 -32
  372. package/lib/errorHandlers/suppressError.d.ts +1 -1
  373. package/lib/errorHandlers/suppressError.js +31 -28
  374. package/lib/filesystem.js +15 -8
  375. package/lib/generateSelectors.js +29 -18
  376. package/lib/hasFeature.d.ts +1 -1
  377. package/lib/hasFeature.js +6 -3
  378. package/lib/interpolation.js +18 -11
  379. package/lib/lang.d.ts +1 -1
  380. package/lib/lang.js +27 -22
  381. package/lib/links.js +24 -16
  382. package/lib/marketplaceValidate.js +39 -29
  383. package/lib/mcp/setup.js +105 -72
  384. package/lib/middleware/__test__/configMiddleware.test.js +55 -20
  385. package/lib/middleware/__test__/gitMiddleware.test.js +42 -7
  386. package/lib/middleware/__test__/notificationsMiddleware.test.js +4 -2
  387. package/lib/middleware/__test__/requestMiddleware.test.js +11 -6
  388. package/lib/middleware/__test__/utils.test.js +11 -9
  389. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +44 -9
  390. package/lib/middleware/autoUpdateMiddleware.js +40 -33
  391. package/lib/middleware/configMiddleware.js +42 -36
  392. package/lib/middleware/fireAlarmMiddleware.js +18 -12
  393. package/lib/middleware/gitMiddleware.js +8 -5
  394. package/lib/middleware/notificationsMiddleware.js +23 -16
  395. package/lib/middleware/requestMiddleware.js +10 -4
  396. package/lib/middleware/utils.js +4 -1
  397. package/lib/middleware/yargsChecksMiddleware.js +13 -10
  398. package/lib/npm.js +23 -14
  399. package/lib/oauth.js +35 -29
  400. package/lib/parsing.js +6 -3
  401. package/lib/polling.js +15 -11
  402. package/lib/process.js +19 -11
  403. package/lib/projectProfiles.d.ts +2 -2
  404. package/lib/projectProfiles.js +42 -32
  405. package/lib/projects/ProjectLogsManager.js +21 -18
  406. package/lib/projects/__tests__/AppDevModeInterface.test.js +145 -140
  407. package/lib/projects/__tests__/LocalDevProcess.test.js +73 -68
  408. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +37 -32
  409. package/lib/projects/__tests__/ProjectLogsManager.test.js +58 -56
  410. package/lib/projects/__tests__/buildAndDeploy.test.js +9 -7
  411. package/lib/projects/__tests__/components.test.js +14 -9
  412. package/lib/projects/__tests__/projects.test.js +40 -35
  413. package/lib/projects/__tests__/structure.test.js +81 -43
  414. package/lib/projects/add/__tests__/legacyAddComponent.test.js +28 -26
  415. package/lib/projects/add/__tests__/v3AddComponent.test.js +30 -25
  416. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  417. package/lib/projects/add/legacyAddComponent.js +30 -24
  418. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  419. package/lib/projects/add/v3AddComponent.js +42 -36
  420. package/lib/projects/buildAndDeploy.d.ts +1 -1
  421. package/lib/projects/buildAndDeploy.js +97 -88
  422. package/lib/projects/components.js +25 -19
  423. package/lib/projects/config.d.ts +1 -1
  424. package/lib/projects/config.js +41 -32
  425. package/lib/projects/create/__tests__/legacy.test.js +57 -22
  426. package/lib/projects/create/__tests__/v3.test.js +7 -5
  427. package/lib/projects/create/index.d.ts +3 -3
  428. package/lib/projects/create/index.js +22 -19
  429. package/lib/projects/create/legacy.d.ts +1 -1
  430. package/lib/projects/create/legacy.js +31 -25
  431. package/lib/projects/create/v3.d.ts +3 -3
  432. package/lib/projects/create/v3.js +59 -49
  433. package/lib/projects/ensureProjectExists.js +37 -31
  434. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  435. package/lib/projects/localDev/AppDevModeInterface.js +60 -58
  436. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  437. package/lib/projects/localDev/DevServerManager.js +24 -24
  438. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  439. package/lib/projects/localDev/DevServerManagerV2.js +20 -17
  440. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -1
  441. package/lib/projects/localDev/LocalDevLogger.js +64 -59
  442. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  443. package/lib/projects/localDev/LocalDevManager.js +111 -106
  444. package/lib/projects/localDev/LocalDevProcess.d.ts +4 -4
  445. package/lib/projects/localDev/LocalDevProcess.js +30 -25
  446. package/lib/projects/localDev/LocalDevState.d.ts +3 -3
  447. package/lib/projects/localDev/LocalDevState.js +5 -3
  448. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  449. package/lib/projects/localDev/LocalDevWatcher.js +11 -6
  450. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
  451. package/lib/projects/localDev/LocalDevWebsocketServer.js +27 -25
  452. package/lib/projects/localDev/helpers.d.ts +4 -4
  453. package/lib/projects/localDev/helpers.js +174 -156
  454. package/lib/projects/structure.d.ts +4 -4
  455. package/lib/projects/structure.js +78 -32
  456. package/lib/projects/ui.js +13 -10
  457. package/lib/projects/upload.d.ts +3 -2
  458. package/lib/projects/upload.js +65 -55
  459. package/lib/projects/urls.js +24 -14
  460. package/lib/projects/watch.d.ts +1 -1
  461. package/lib/projects/watch.js +54 -48
  462. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +11 -9
  463. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +16 -11
  464. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  465. package/lib/prompts/accountNamePrompt.js +31 -26
  466. package/lib/prompts/accountsPrompt.js +15 -12
  467. package/lib/prompts/cmsFieldPrompt.js +19 -13
  468. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  469. package/lib/prompts/createApiSamplePrompt.js +12 -9
  470. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +11 -10
  471. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +88 -43
  472. package/lib/prompts/createFunctionPrompt.js +20 -17
  473. package/lib/prompts/createModulePrompt.js +15 -12
  474. package/lib/prompts/createTemplatePrompt.js +8 -5
  475. package/lib/prompts/downloadProjectPrompt.js +20 -17
  476. package/lib/prompts/installAppPrompt.js +26 -19
  477. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  478. package/lib/prompts/personalAccessKeyPrompt.js +47 -40
  479. package/lib/prompts/previewPrompt.js +22 -15
  480. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  481. package/lib/prompts/projectAddPrompt.js +18 -14
  482. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  483. package/lib/prompts/projectDevTargetAccountPrompt.js +54 -48
  484. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  485. package/lib/prompts/projectNameAndDestPrompt.js +29 -22
  486. package/lib/prompts/projectNamePrompt.js +14 -11
  487. package/lib/prompts/projectsLogsPrompt.js +8 -5
  488. package/lib/prompts/promptUtils.d.ts +1 -1
  489. package/lib/prompts/promptUtils.js +87 -70
  490. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  491. package/lib/prompts/sandboxesPrompt.js +30 -26
  492. package/lib/prompts/secretPrompt.js +15 -10
  493. package/lib/prompts/selectAppPrompt.js +14 -11
  494. package/lib/prompts/selectHubDBTablePrompt.js +30 -24
  495. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  496. package/lib/prompts/selectProjectTemplatePrompt.js +13 -10
  497. package/lib/prompts/selectPublicAppForMigrationPrompt.js +25 -22
  498. package/lib/prompts/setAsDefaultAccountPrompt.js +16 -13
  499. package/lib/prompts/uploadPrompt.js +17 -11
  500. package/lib/sandboxSync.d.ts +1 -1
  501. package/lib/sandboxSync.js +65 -58
  502. package/lib/sandboxes.d.ts +1 -1
  503. package/lib/sandboxes.js +76 -68
  504. package/lib/schema.js +23 -12
  505. package/lib/serverlessLogs.js +52 -45
  506. package/lib/testUtils.js +8 -4
  507. package/lib/ui/SpinniesManager.d.ts +1 -1
  508. package/lib/ui/SpinniesManager.js +34 -29
  509. package/lib/ui/boxen.js +14 -11
  510. package/lib/ui/git.js +20 -14
  511. package/lib/ui/index.js +74 -56
  512. package/lib/ui/logger.js +13 -10
  513. package/lib/ui/serverlessFunctionLogs.js +20 -14
  514. package/lib/ui/spinniesUtils.js +39 -24
  515. package/lib/ui/supportHyperlinks.js +6 -3
  516. package/lib/ui/supportsColor.js +17 -11
  517. package/lib/ui/table.js +13 -6
  518. package/lib/upload.js +21 -15
  519. package/lib/usageTracking.d.ts +11 -0
  520. package/lib/usageTracking.js +95 -95
  521. package/lib/utils/hasFlag.js +8 -2
  522. package/lib/validation.js +87 -48
  523. package/lib/yargsUtils.d.ts +1 -1
  524. package/lib/yargsUtils.js +16 -13
  525. package/mcp-server/server.js +8 -6
  526. package/mcp-server/tools/index.js +16 -13
  527. package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
  528. package/mcp-server/tools/project/AddFeatureToProject.js +41 -34
  529. package/mcp-server/tools/project/CreateProjectTool.d.ts +3 -3
  530. package/mcp-server/tools/project/CreateProjectTool.js +52 -45
  531. package/mcp-server/tools/project/DeployProject.d.ts +1 -1
  532. package/mcp-server/tools/project/DeployProject.js +24 -17
  533. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  534. package/mcp-server/tools/project/GuidedWalkthroughTool.js +27 -20
  535. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  536. package/mcp-server/tools/project/UploadProjectTools.js +21 -11
  537. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  538. package/mcp-server/tools/project/ValidateProjectTool.js +19 -12
  539. package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +15 -12
  540. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +16 -13
  541. package/mcp-server/tools/project/__tests__/DeployProject.test.js +9 -6
  542. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +7 -4
  543. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +7 -4
  544. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +7 -4
  545. package/mcp-server/tools/project/constants.js +9 -3
  546. package/mcp-server/types.js +5 -1
  547. package/mcp-server/utils/__tests__/command.test.js +11 -9
  548. package/mcp-server/utils/__tests__/project.test.js +26 -18
  549. package/mcp-server/utils/command.d.ts +1 -1
  550. package/mcp-server/utils/command.js +11 -4
  551. package/mcp-server/utils/content.d.ts +1 -1
  552. package/mcp-server/utils/content.js +6 -2
  553. package/mcp-server/utils/project.js +17 -8
  554. package/mcp-server/utils/toolUsageTracking.d.ts +1 -0
  555. package/mcp-server/utils/toolUsageTracking.js +25 -0
  556. package/package.json +13 -17
  557. package/types/{cms.d.ts → Cms.d.ts} +1 -1
  558. package/types/Cms.js +2 -0
  559. package/types/LocalDev.d.ts +4 -4
  560. package/types/LocalDev.js +2 -1
  561. package/types/ProjectComponents.d.ts +2 -2
  562. package/types/ProjectComponents.js +2 -1
  563. package/types/Projects.d.ts +1 -1
  564. package/types/Projects.js +5 -2
  565. package/types/Prompts.js +2 -1
  566. package/types/Sandboxes.js +2 -0
  567. package/types/Yargs.js +2 -1
  568. package/types/sandboxes.js +0 -1
  569. /package/{types/cms.js → commands/app/__tests__/install.test.d.ts} +0 -0
  570. /package/types/{sandboxes.d.ts → Sandboxes.d.ts} +0 -0
@@ -1,26 +1,31 @@
1
- import path from 'path';
2
- import { translateForLocalDev } from '@hubspot/project-parsing-lib';
3
- import { handleProjectUpload } from '../upload.js';
4
- import { getProjectConfig } from '../config.js';
5
- import LocalDevProcess from '../localDev/LocalDevProcess.js';
6
- import LocalDevLogger from '../localDev/LocalDevLogger.js';
7
- import DevServerManagerV2 from '../localDev/DevServerManagerV2.js';
8
- import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
9
- import { vi } from 'vitest';
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 project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
8
+ const upload_1 = require("../upload");
9
+ const config_1 = require("../config");
10
+ const LocalDevProcess_1 = __importDefault(require("../localDev/LocalDevProcess"));
11
+ const LocalDevLogger_1 = __importDefault(require("../localDev/LocalDevLogger"));
12
+ const DevServerManagerV2_1 = __importDefault(require("../localDev/DevServerManagerV2"));
13
+ const environments_1 = require("@hubspot/local-dev-lib/constants/environments");
14
+ const vitest_1 = require("vitest");
10
15
  // Mock @hubspot/ui-extensions-dev-server
11
- vi.mock('@hubspot/ui-extensions-dev-server', () => ({
16
+ vitest_1.vi.mock('@hubspot/ui-extensions-dev-server', () => ({
12
17
  DevModeUnifiedInterface: {
13
- setup: vi.fn().mockResolvedValue(undefined),
14
- start: vi.fn().mockResolvedValue(undefined),
15
- fileChange: vi.fn().mockResolvedValue(undefined),
16
- cleanup: vi.fn().mockResolvedValue(undefined),
18
+ setup: vitest_1.vi.fn().mockResolvedValue(undefined),
19
+ start: vitest_1.vi.fn().mockResolvedValue(undefined),
20
+ fileChange: vitest_1.vi.fn().mockResolvedValue(undefined),
21
+ cleanup: vitest_1.vi.fn().mockResolvedValue(undefined),
17
22
  },
18
23
  }));
19
- vi.mock('@hubspot/project-parsing-lib');
20
- vi.mock('../upload');
21
- vi.mock('../config');
22
- vi.mock('../localDev/LocalDevLogger');
23
- vi.mock('../localDev/DevServerManagerV2');
24
+ vitest_1.vi.mock('@hubspot/project-parsing-lib');
25
+ vitest_1.vi.mock('../upload');
26
+ vitest_1.vi.mock('../config');
27
+ vitest_1.vi.mock('../localDev/LocalDevLogger');
28
+ vitest_1.vi.mock('../localDev/DevServerManagerV2');
24
29
  // Tests for LocalDevProcess and LocalDevState
25
30
  describe('LocalDevProcess', () => {
26
31
  let mockLocalDevLogger;
@@ -74,51 +79,51 @@ describe('LocalDevProcess', () => {
74
79
  projectId: 789,
75
80
  isGithubLinked: false,
76
81
  initialProjectNodes: {},
77
- env: ENVIRONMENTS.PROD,
82
+ env: environments_1.ENVIRONMENTS.PROD,
78
83
  deployedBuild: mockBuild,
79
84
  projectName: 'test-project',
80
85
  };
81
86
  beforeEach(() => {
82
- vi.clearAllMocks();
87
+ vitest_1.vi.clearAllMocks();
83
88
  mockLocalDevLogger = {
84
- resetSpinnies: vi.fn(),
85
- devServerSetupError: vi.fn(),
86
- devServerStartError: vi.fn(),
87
- devServerCleanupError: vi.fn(),
88
- missingComponentsWarning: vi.fn(),
89
- noDeployedBuild: vi.fn(),
90
- startupMessage: vi.fn(),
91
- monitorConsoleOutput: vi.fn(),
92
- cleanupStart: vi.fn(),
93
- cleanupError: vi.fn(),
94
- cleanupSuccess: vi.fn(),
95
- uploadInitiated: vi.fn(),
96
- projectConfigMismatch: vi.fn(),
97
- uploadError: vi.fn(),
98
- uploadSuccess: vi.fn(),
99
- clearUploadWarnings: vi.fn(),
100
- fileChangeError: vi.fn(),
101
- uploadWarning: vi.fn(),
89
+ resetSpinnies: vitest_1.vi.fn(),
90
+ devServerSetupError: vitest_1.vi.fn(),
91
+ devServerStartError: vitest_1.vi.fn(),
92
+ devServerCleanupError: vitest_1.vi.fn(),
93
+ missingComponentsWarning: vitest_1.vi.fn(),
94
+ noDeployedBuild: vitest_1.vi.fn(),
95
+ startupMessage: vitest_1.vi.fn(),
96
+ monitorConsoleOutput: vitest_1.vi.fn(),
97
+ cleanupStart: vitest_1.vi.fn(),
98
+ cleanupError: vitest_1.vi.fn(),
99
+ cleanupSuccess: vitest_1.vi.fn(),
100
+ uploadInitiated: vitest_1.vi.fn(),
101
+ projectConfigMismatch: vitest_1.vi.fn(),
102
+ uploadError: vitest_1.vi.fn(),
103
+ uploadSuccess: vitest_1.vi.fn(),
104
+ clearUploadWarnings: vitest_1.vi.fn(),
105
+ fileChangeError: vitest_1.vi.fn(),
106
+ uploadWarning: vitest_1.vi.fn(),
102
107
  };
103
108
  mockDevServerManager = {
104
- setup: vi.fn().mockResolvedValue(undefined),
105
- start: vi.fn().mockResolvedValue(undefined),
106
- cleanup: vi.fn().mockResolvedValue(undefined),
107
- fileChange: vi.fn().mockResolvedValue(undefined),
109
+ setup: vitest_1.vi.fn().mockResolvedValue(undefined),
110
+ start: vitest_1.vi.fn().mockResolvedValue(undefined),
111
+ cleanup: vitest_1.vi.fn().mockResolvedValue(undefined),
112
+ fileChange: vitest_1.vi.fn().mockResolvedValue(undefined),
108
113
  };
109
114
  // Mock constructors
110
- LocalDevLogger.mockImplementation(() => mockLocalDevLogger);
111
- DevServerManagerV2.mockImplementation(() => mockDevServerManager);
115
+ LocalDevLogger_1.default.mockImplementation(() => mockLocalDevLogger);
116
+ DevServerManagerV2_1.default.mockImplementation(() => mockDevServerManager);
112
117
  // Create process instance
113
- process = new LocalDevProcess(mockOptions);
118
+ process = new LocalDevProcess_1.default(mockOptions);
114
119
  // Mock process.exit
115
- vi.spyOn(global.process, 'exit').mockImplementation((code) => {
120
+ vitest_1.vi.spyOn(global.process, 'exit').mockImplementation((code) => {
116
121
  throw new Error(`Process.exit called with code ${code}`);
117
122
  });
118
123
  });
119
124
  describe('start()', () => {
120
125
  it('should exit if no deployed build exists', async () => {
121
- const processWithoutBuild = new LocalDevProcess({
126
+ const processWithoutBuild = new LocalDevProcess_1.default({
122
127
  ...mockOptions,
123
128
  deployedBuild: undefined,
124
129
  });
@@ -151,7 +156,7 @@ describe('LocalDevProcess', () => {
151
156
  config: {},
152
157
  files: [],
153
158
  };
154
- const processWithNode = new LocalDevProcess({
159
+ const processWithNode = new LocalDevProcess_1.default({
155
160
  ...mockOptions,
156
161
  initialProjectNodes: {
157
162
  component3: mockNode,
@@ -182,13 +187,13 @@ describe('LocalDevProcess', () => {
182
187
  describe('updateProjectNodes()', () => {
183
188
  it('should update project nodes with translated representation', async () => {
184
189
  const mockNodes = { node1: { uid: 'node1' } };
185
- translateForLocalDev.mockResolvedValue({
190
+ project_parsing_lib_1.translateForLocalDev.mockResolvedValue({
186
191
  intermediateNodesIndexedByUid: mockNodes,
187
192
  });
188
193
  // @ts-expect-error testing private method
189
194
  await process.updateProjectNodes();
190
- expect(translateForLocalDev).toHaveBeenCalledWith({
191
- projectSourceDir: path.join(mockOptions.projectDir, mockOptions.projectConfig.srcDir),
195
+ expect(project_parsing_lib_1.translateForLocalDev).toHaveBeenCalledWith({
196
+ projectSourceDir: path_1.default.join(mockOptions.projectDir, mockOptions.projectConfig.srcDir),
192
197
  platformVersion: mockOptions.projectConfig.platformVersion,
193
198
  accountId: mockOptions.targetProjectAccountId,
194
199
  }, { projectNodesAtLastUpload: {} });
@@ -197,18 +202,18 @@ describe('LocalDevProcess', () => {
197
202
  });
198
203
  describe('uploadProject()', () => {
199
204
  it('should not upload if project config is invalid', async () => {
200
- getProjectConfig.mockResolvedValue({
205
+ config_1.getProjectConfig.mockResolvedValue({
201
206
  projectConfig: null,
202
207
  });
203
208
  await process.uploadProject();
204
209
  expect(mockLocalDevLogger.projectConfigMismatch).toHaveBeenCalled();
205
- expect(handleProjectUpload).not.toHaveBeenCalled();
210
+ expect(upload_1.handleProjectUpload).not.toHaveBeenCalled();
206
211
  });
207
212
  it('should handle upload error', async () => {
208
- getProjectConfig.mockResolvedValue({
213
+ config_1.getProjectConfig.mockResolvedValue({
209
214
  projectConfig: mockOptions.projectConfig,
210
215
  });
211
- handleProjectUpload.mockResolvedValue({
216
+ upload_1.handleProjectUpload.mockResolvedValue({
212
217
  uploadError: new Error('Upload failed'),
213
218
  });
214
219
  const success = await process.uploadProject();
@@ -217,10 +222,10 @@ describe('LocalDevProcess', () => {
217
222
  });
218
223
  it('should handle successful upload', async () => {
219
224
  await process.handleConfigFileChange();
220
- getProjectConfig.mockResolvedValue({
225
+ config_1.getProjectConfig.mockResolvedValue({
221
226
  projectConfig: mockOptions.projectConfig,
222
227
  });
223
- handleProjectUpload.mockResolvedValue({
228
+ upload_1.handleProjectUpload.mockResolvedValue({
224
229
  uploadError: null,
225
230
  });
226
231
  const success = await process.uploadProject();
@@ -233,19 +238,19 @@ describe('LocalDevProcess', () => {
233
238
  const initialProjectNodes = { existingNode: { uid: 'existingNode' } };
234
239
  // @ts-expect-error accessing private property for testing
235
240
  process.state._projectNodesAtLastUpload = initialProjectNodes;
236
- getProjectConfig.mockResolvedValue({
241
+ config_1.getProjectConfig.mockResolvedValue({
237
242
  projectConfig: mockOptions.projectConfig,
238
243
  });
239
- handleProjectUpload.mockResolvedValue({
244
+ upload_1.handleProjectUpload.mockResolvedValue({
240
245
  uploadError: null,
241
246
  });
242
- translateForLocalDev.mockResolvedValue({
247
+ project_parsing_lib_1.translateForLocalDev.mockResolvedValue({
243
248
  intermediateNodesIndexedByUid: mockNodes,
244
249
  });
245
250
  const success = await process.uploadProject();
246
251
  // Verify translateForLocalDev was called without projectNodesAtLastUpload option
247
- expect(translateForLocalDev).toHaveBeenCalledWith({
248
- projectSourceDir: path.join(mockOptions.projectDir, mockOptions.projectConfig.srcDir),
252
+ expect(project_parsing_lib_1.translateForLocalDev).toHaveBeenCalledWith({
253
+ projectSourceDir: path_1.default.join(mockOptions.projectDir, mockOptions.projectConfig.srcDir),
249
254
  platformVersion: mockOptions.projectConfig.platformVersion,
250
255
  accountId: mockOptions.targetProjectAccountId,
251
256
  }, { projectNodesAtLastUpload: undefined });
@@ -276,14 +281,14 @@ describe('LocalDevProcess', () => {
276
281
  });
277
282
  describe('handleConfigFileChange()', () => {
278
283
  beforeEach(() => {
279
- translateForLocalDev.mockResolvedValue({
284
+ project_parsing_lib_1.translateForLocalDev.mockResolvedValue({
280
285
  intermediateNodesIndexedByUid: {},
281
286
  });
282
287
  });
283
288
  it('should update project nodes and show upload warning', async () => {
284
289
  await process.handleConfigFileChange();
285
- expect(translateForLocalDev).toHaveBeenCalledWith({
286
- projectSourceDir: path.join(mockOptions.projectDir, mockOptions.projectConfig.srcDir),
290
+ expect(project_parsing_lib_1.translateForLocalDev).toHaveBeenCalledWith({
291
+ projectSourceDir: path_1.default.join(mockOptions.projectDir, mockOptions.projectConfig.srcDir),
287
292
  platformVersion: mockOptions.projectConfig.platformVersion,
288
293
  accountId: mockOptions.targetProjectAccountId,
289
294
  }, { projectNodesAtLastUpload: {} });
@@ -292,7 +297,7 @@ describe('LocalDevProcess', () => {
292
297
  });
293
298
  describe('addStateListener()', () => {
294
299
  it('should add state listener', () => {
295
- const listener = vi.fn();
300
+ const listener = vitest_1.vi.fn();
296
301
  const key = 'projectNodes';
297
302
  process.addStateListener(key, listener);
298
303
  // @ts-expect-error
@@ -300,7 +305,7 @@ describe('LocalDevProcess', () => {
300
305
  expect(listener).toHaveBeenCalled();
301
306
  });
302
307
  it('should call listener immediately when callOnInit is true', () => {
303
- const listener = vi.fn();
308
+ const listener = vitest_1.vi.fn();
304
309
  const key = 'projectNodes';
305
310
  process.addStateListener(key, listener, true);
306
311
  expect(listener).toHaveBeenCalledWith(process.projectNodes);
@@ -1,9 +1,14 @@
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 { LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES, LOCAL_DEV_SERVER_MESSAGE_TYPES, } from '../../constants.js';
5
- import LocalDevWebsocketServer from '../localDev/LocalDevWebsocketServer.js';
6
- import { lib } from '../../../lang/en.js';
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 ws_1 = require("ws");
7
+ const portManager_1 = require("@hubspot/local-dev-lib/portManager");
8
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
9
+ const constants_1 = require("../../constants");
10
+ const LocalDevWebsocketServer_1 = __importDefault(require("../localDev/LocalDevWebsocketServer"));
11
+ const en_1 = require("../../../lang/en");
7
12
  vi.mock('ws');
8
13
  vi.mock('@hubspot/local-dev-lib/portManager');
9
14
  vi.mock('@hubspot/local-dev-lib/logger');
@@ -33,28 +38,28 @@ describe('LocalDevWebsocketServer', () => {
33
38
  sendDevServerMessage: vi.fn(),
34
39
  };
35
40
  // Mock WebSocketServer constructor
36
- WebSocketServer.mockImplementation(() => mockWebSocketServer);
41
+ ws_1.WebSocketServer.mockImplementation(() => mockWebSocketServer);
37
42
  // Create server instance
38
- server = new LocalDevWebsocketServer(mockLocalDevProcess, true);
43
+ server = new LocalDevWebsocketServer_1.default(mockLocalDevProcess, true);
39
44
  });
40
45
  describe('start()', () => {
41
46
  it('should throw error if port manager is not running', async () => {
42
- isPortManagerServerRunning.mockResolvedValue(false);
47
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(false);
43
48
  await expect(server.start()).rejects.toThrow();
44
49
  });
45
50
  it('should start websocket server successfully', async () => {
46
- isPortManagerServerRunning.mockResolvedValue(true);
47
- requestPorts.mockResolvedValue({
51
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
52
+ portManager_1.requestPorts.mockResolvedValue({
48
53
  'local-dev-ui-websocket-server': 1234,
49
54
  });
50
55
  await server.start();
51
- expect(WebSocketServer).toHaveBeenCalledWith({ port: 1234 });
56
+ expect(ws_1.WebSocketServer).toHaveBeenCalledWith({ port: 1234 });
52
57
  expect(mockWebSocketServer.on).toHaveBeenCalledWith('connection', expect.any(Function));
53
- expect(logger.log).toHaveBeenCalled();
58
+ expect(logger_1.logger.log).toHaveBeenCalled();
54
59
  });
55
60
  it('should accept connection from valid origin', async () => {
56
- isPortManagerServerRunning.mockResolvedValue(true);
57
- requestPorts.mockResolvedValue({
61
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
62
+ portManager_1.requestPorts.mockResolvedValue({
58
63
  'local-dev-ui-websocket-server': 1234,
59
64
  });
60
65
  await server.start();
@@ -69,8 +74,8 @@ describe('LocalDevWebsocketServer', () => {
69
74
  expect(mockWebSocket.close).not.toHaveBeenCalled();
70
75
  });
71
76
  it('should reject connection from invalid origin', async () => {
72
- isPortManagerServerRunning.mockResolvedValue(true);
73
- requestPorts.mockResolvedValue({
77
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
78
+ portManager_1.requestPorts.mockResolvedValue({
74
79
  'local-dev-ui-websocket-server': 1234,
75
80
  });
76
81
  await server.start();
@@ -80,13 +85,13 @@ describe('LocalDevWebsocketServer', () => {
80
85
  connectionCallback(mockWebSocket, {
81
86
  headers: { origin: 'https://malicious-site.com' },
82
87
  });
83
- expect(mockWebSocket.close).toHaveBeenCalledWith(1008, lib.LocalDevWebsocketServer.errors.originNotAllowed('https://malicious-site.com'));
88
+ expect(mockWebSocket.close).toHaveBeenCalledWith(1008, en_1.lib.LocalDevWebsocketServer.errors.originNotAllowed('https://malicious-site.com'));
84
89
  expect(mockWebSocket.on).not.toHaveBeenCalled();
85
90
  expect(mockLocalDevProcess.addStateListener).not.toHaveBeenCalled();
86
91
  });
87
92
  it('should reject connection with no origin header', async () => {
88
- isPortManagerServerRunning.mockResolvedValue(true);
89
- requestPorts.mockResolvedValue({
93
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
94
+ portManager_1.requestPorts.mockResolvedValue({
90
95
  'local-dev-ui-websocket-server': 1234,
91
96
  });
92
97
  await server.start();
@@ -96,13 +101,13 @@ describe('LocalDevWebsocketServer', () => {
96
101
  connectionCallback(mockWebSocket, {
97
102
  headers: {},
98
103
  });
99
- expect(mockWebSocket.close).toHaveBeenCalledWith(1008, lib.LocalDevWebsocketServer.errors.originNotAllowed());
104
+ expect(mockWebSocket.close).toHaveBeenCalledWith(1008, en_1.lib.LocalDevWebsocketServer.errors.originNotAllowed());
100
105
  expect(mockWebSocket.on).not.toHaveBeenCalled();
101
106
  expect(mockLocalDevProcess.addStateListener).not.toHaveBeenCalled();
102
107
  });
103
108
  it('should send WEBSOCKET_SERVER_CONNECTED message when valid connection is established', async () => {
104
- isPortManagerServerRunning.mockResolvedValue(true);
105
- requestPorts.mockResolvedValue({
109
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
110
+ portManager_1.requestPorts.mockResolvedValue({
106
111
  'local-dev-ui-websocket-server': 1234,
107
112
  });
108
113
  await server.start();
@@ -112,13 +117,13 @@ describe('LocalDevWebsocketServer', () => {
112
117
  connectionCallback(mockWebSocket, {
113
118
  headers: { origin: 'https://app.hubspot.com' },
114
119
  });
115
- expect(mockLocalDevProcess.sendDevServerMessage).toHaveBeenCalledWith(LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
120
+ expect(mockLocalDevProcess.sendDevServerMessage).toHaveBeenCalledWith(constants_1.LOCAL_DEV_SERVER_MESSAGE_TYPES.WEBSOCKET_SERVER_CONNECTED);
116
121
  });
117
122
  });
118
123
  describe('message handling', () => {
119
124
  beforeEach(async () => {
120
- isPortManagerServerRunning.mockResolvedValue(true);
121
- requestPorts.mockResolvedValue({
125
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
126
+ portManager_1.requestPorts.mockResolvedValue({
122
127
  'local-dev-ui-websocket-server': 1234,
123
128
  });
124
129
  await server.start();
@@ -130,7 +135,7 @@ describe('LocalDevWebsocketServer', () => {
130
135
  it('should handle UPLOAD message type', () => {
131
136
  const messageCallback = mockWebSocket.on.mock.calls[0][1];
132
137
  const message = {
133
- type: LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.UPLOAD,
138
+ type: constants_1.LOCAL_DEV_UI_MESSAGE_RECEIVE_TYPES.UPLOAD,
134
139
  };
135
140
  messageCallback(JSON.stringify(message));
136
141
  expect(mockLocalDevProcess.uploadProject).toHaveBeenCalled();
@@ -139,7 +144,7 @@ describe('LocalDevWebsocketServer', () => {
139
144
  const messageCallback = mockWebSocket.on.mock.calls[0][1];
140
145
  const message = {};
141
146
  messageCallback(JSON.stringify(message));
142
- expect(logger.error).toHaveBeenCalled();
147
+ expect(logger_1.logger.error).toHaveBeenCalled();
143
148
  });
144
149
  it('should log error for unknown message type', () => {
145
150
  const messageCallback = mockWebSocket.on.mock.calls[0][1];
@@ -147,19 +152,19 @@ describe('LocalDevWebsocketServer', () => {
147
152
  type: 'UNKNOWN_TYPE',
148
153
  };
149
154
  messageCallback(JSON.stringify(message));
150
- expect(logger.error).toHaveBeenCalled();
155
+ expect(logger_1.logger.error).toHaveBeenCalled();
151
156
  });
152
157
  it('should log error for invalid JSON', () => {
153
158
  const messageCallback = mockWebSocket.on.mock.calls[0][1];
154
159
  const invalidJson = 'invalid json';
155
160
  messageCallback(invalidJson);
156
- expect(logger.error).toHaveBeenCalled();
161
+ expect(logger_1.logger.error).toHaveBeenCalled();
157
162
  });
158
163
  });
159
164
  describe('shutdown()', () => {
160
165
  it('should close the websocket server', async () => {
161
- isPortManagerServerRunning.mockResolvedValue(true);
162
- requestPorts.mockResolvedValue({
166
+ portManager_1.isPortManagerServerRunning.mockResolvedValue(true);
167
+ portManager_1.requestPorts.mockResolvedValue({
163
168
  'local-dev-ui-websocket-server': 1234,
164
169
  });
165
170
  await server.start();
@@ -1,7 +1,9 @@
1
- import { ProjectLogsManager } from '../ProjectLogsManager.js';
2
- import { getProjectConfig } from '../config.js';
3
- import { ensureProjectExists } from '../ensureProjectExists.js';
4
- import { fetchProjectComponentsMetadata } from '@hubspot/local-dev-lib/api/projects';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ProjectLogsManager_1 = require("../ProjectLogsManager");
4
+ const config_1 = require("../config");
5
+ const ensureProjectExists_1 = require("../ensureProjectExists");
6
+ const projects_1 = require("@hubspot/local-dev-lib/api/projects");
5
7
  const SUBCOMPONENT_TYPES = {
6
8
  APP_ID: 'APP_ID',
7
9
  PACKAGE_LOCK_FILE: 'PACKAGE_LOCK_FILE',
@@ -55,10 +57,10 @@ describe('lib/projects/ProjectLogsManager', () => {
55
57
  },
56
58
  ];
57
59
  beforeEach(() => {
58
- ProjectLogsManager.reset();
59
- getProjectConfig.mockResolvedValue(projectConfig);
60
- ensureProjectExists.mockResolvedValue(projectDetails);
61
- fetchProjectComponentsMetadata.mockResolvedValue({
60
+ ProjectLogsManager_1.ProjectLogsManager.reset();
61
+ config_1.getProjectConfig.mockResolvedValue(projectConfig);
62
+ ensureProjectExists_1.ensureProjectExists.mockResolvedValue(projectDetails);
63
+ projects_1.fetchProjectComponentsMetadata.mockResolvedValue({
62
64
  data: {
63
65
  topLevelComponentMetadata: [
64
66
  {
@@ -83,59 +85,59 @@ describe('lib/projects/ProjectLogsManager', () => {
83
85
  });
84
86
  describe('init', () => {
85
87
  it('should load the project config', async () => {
86
- await ProjectLogsManager.init(accountId);
87
- expect(getProjectConfig).toHaveBeenCalledTimes(1);
88
+ await ProjectLogsManager_1.ProjectLogsManager.init(accountId);
89
+ expect(config_1.getProjectConfig).toHaveBeenCalledTimes(1);
88
90
  });
89
91
  it('should throw an error if there is a problem with the config', async () => {
90
- getProjectConfig.mockResolvedValue({});
91
- await expect(async () => ProjectLogsManager.init(accountId)).rejects.toThrow('No project detected. Run this command again from a project directory.');
92
- expect(getProjectConfig).toHaveBeenCalledTimes(1);
92
+ config_1.getProjectConfig.mockResolvedValue({});
93
+ await expect(async () => ProjectLogsManager_1.ProjectLogsManager.init(accountId)).rejects.toThrow('No project detected. Run this command again from a project directory.');
94
+ expect(config_1.getProjectConfig).toHaveBeenCalledTimes(1);
93
95
  });
94
96
  it('should ensure the project exists', async () => {
95
- await ProjectLogsManager.init(accountId);
96
- expect(ensureProjectExists).toHaveBeenCalledTimes(1);
97
- expect(ensureProjectExists).toHaveBeenCalledWith(accountId, projectName, {
97
+ await ProjectLogsManager_1.ProjectLogsManager.init(accountId);
98
+ expect(ensureProjectExists_1.ensureProjectExists).toHaveBeenCalledTimes(1);
99
+ expect(ensureProjectExists_1.ensureProjectExists).toHaveBeenCalledWith(accountId, projectName, {
98
100
  allowCreate: false,
99
101
  });
100
102
  });
101
103
  it('should throw an error if there is data missing from the project details', async () => {
102
- ensureProjectExists.mockResolvedValue({});
103
- await expect(async () => ProjectLogsManager.init(accountId)).rejects.toThrow(/There was an error fetching project details/);
104
+ ensureProjectExists_1.ensureProjectExists.mockResolvedValue({});
105
+ await expect(async () => ProjectLogsManager_1.ProjectLogsManager.init(accountId)).rejects.toThrow(/There was an error fetching project details/);
104
106
  });
105
107
  it('should set all of the expected fields correctly', async () => {
106
- await ProjectLogsManager.init(accountId);
107
- expect(ProjectLogsManager.projectId).toEqual(projectId);
108
- expect(ProjectLogsManager.projectName).toEqual(projectName);
109
- expect(ProjectLogsManager.accountId).toEqual(accountId);
110
- expect(ProjectLogsManager.functions).toEqual(functions);
108
+ await ProjectLogsManager_1.ProjectLogsManager.init(accountId);
109
+ expect(ProjectLogsManager_1.ProjectLogsManager.projectId).toEqual(projectId);
110
+ expect(ProjectLogsManager_1.ProjectLogsManager.projectName).toEqual(projectName);
111
+ expect(ProjectLogsManager_1.ProjectLogsManager.accountId).toEqual(accountId);
112
+ expect(ProjectLogsManager_1.ProjectLogsManager.functions).toEqual(functions);
111
113
  });
112
114
  });
113
115
  describe('fetchFunctionDetails', () => {
114
116
  it('should throw an error if the projectId is null when the method is called', async () => {
115
- await expect(async () => ProjectLogsManager.fetchFunctionDetails()).rejects.toThrow('No project detected. Run this command again from a project directory.');
117
+ await expect(async () => ProjectLogsManager_1.ProjectLogsManager.fetchFunctionDetails()).rejects.toThrow('No project detected. Run this command again from a project directory.');
116
118
  });
117
119
  it('should fetch the component metadata', async () => {
118
- ProjectLogsManager.projectId = projectId;
119
- ProjectLogsManager.accountId = accountId;
120
- await ProjectLogsManager.fetchFunctionDetails();
121
- expect(fetchProjectComponentsMetadata).toHaveBeenCalledTimes(1);
122
- expect(fetchProjectComponentsMetadata).toHaveBeenCalledWith(accountId, projectId);
120
+ ProjectLogsManager_1.ProjectLogsManager.projectId = projectId;
121
+ ProjectLogsManager_1.ProjectLogsManager.accountId = accountId;
122
+ await ProjectLogsManager_1.ProjectLogsManager.fetchFunctionDetails();
123
+ expect(projects_1.fetchProjectComponentsMetadata).toHaveBeenCalledTimes(1);
124
+ expect(projects_1.fetchProjectComponentsMetadata).toHaveBeenCalledWith(accountId, projectId);
123
125
  });
124
126
  it('should set the functions correctly', async () => {
125
- ProjectLogsManager.projectId = projectId;
126
- ProjectLogsManager.accountId = accountId;
127
- await ProjectLogsManager.fetchFunctionDetails();
128
- expect(ProjectLogsManager.functions).toEqual(functions);
127
+ ProjectLogsManager_1.ProjectLogsManager.projectId = projectId;
128
+ ProjectLogsManager_1.ProjectLogsManager.accountId = accountId;
129
+ await ProjectLogsManager_1.ProjectLogsManager.fetchFunctionDetails();
130
+ expect(ProjectLogsManager_1.ProjectLogsManager.functions).toEqual(functions);
129
131
  });
130
132
  });
131
133
  describe('getFunctionNames', () => {
132
134
  it('should return an empty array if functions is empty', async () => {
133
- ProjectLogsManager.functions = [];
134
- expect(ProjectLogsManager.getFunctionNames()).toEqual([]);
135
+ ProjectLogsManager_1.ProjectLogsManager.functions = [];
136
+ expect(ProjectLogsManager_1.ProjectLogsManager.getFunctionNames()).toEqual([]);
135
137
  });
136
138
  it('should return an array of the componentNames', async () => {
137
- ProjectLogsManager.functions = functions;
138
- expect(ProjectLogsManager.getFunctionNames()).toEqual([
139
+ ProjectLogsManager_1.ProjectLogsManager.functions = functions;
140
+ expect(ProjectLogsManager_1.ProjectLogsManager.getFunctionNames()).toEqual([
139
141
  'function1',
140
142
  'function2',
141
143
  ]);
@@ -143,13 +145,13 @@ describe('lib/projects/ProjectLogsManager', () => {
143
145
  });
144
146
  describe('setFunction', () => {
145
147
  it('should throw an error when functions is empty', async () => {
146
- ProjectLogsManager.functions = [];
147
- expect(() => ProjectLogsManager.setFunction('foo')).toThrow(`There aren't any functions in this project`);
148
+ ProjectLogsManager_1.ProjectLogsManager.functions = [];
149
+ expect(() => ProjectLogsManager_1.ProjectLogsManager.setFunction('foo')).toThrow(`There aren't any functions in this project`);
148
150
  });
149
151
  it('should throw an error when the provided function is invalid', async () => {
150
- ProjectLogsManager.functions = functions;
152
+ ProjectLogsManager_1.ProjectLogsManager.functions = functions;
151
153
  const badName = 'foo';
152
- expect(() => ProjectLogsManager.setFunction(badName)).toThrow(`No function with name "${badName}"`);
154
+ expect(() => ProjectLogsManager_1.ProjectLogsManager.setFunction(badName)).toThrow(`No function with name "${badName}"`);
153
155
  });
154
156
  it('should set the data correctly for public functions', async () => {
155
157
  const functionToChoose = {
@@ -163,27 +165,27 @@ describe('lib/projects/ProjectLogsManager', () => {
163
165
  endpoint: { path: 'yooooooo', methods: ['GET'] },
164
166
  },
165
167
  };
166
- ProjectLogsManager.functions = [functionToChoose];
167
- ProjectLogsManager.setFunction('function1');
168
- expect(ProjectLogsManager.functionName).toEqual('function1');
169
- expect(ProjectLogsManager.endpointName).toEqual('yooooooo');
170
- expect(ProjectLogsManager.selectedFunction).toEqual(functionToChoose);
171
- expect(ProjectLogsManager.isPublicFunction).toEqual(true);
168
+ ProjectLogsManager_1.ProjectLogsManager.functions = [functionToChoose];
169
+ ProjectLogsManager_1.ProjectLogsManager.setFunction('function1');
170
+ expect(ProjectLogsManager_1.ProjectLogsManager.functionName).toEqual('function1');
171
+ expect(ProjectLogsManager_1.ProjectLogsManager.endpointName).toEqual('yooooooo');
172
+ expect(ProjectLogsManager_1.ProjectLogsManager.selectedFunction).toEqual(functionToChoose);
173
+ expect(ProjectLogsManager_1.ProjectLogsManager.isPublicFunction).toEqual(true);
172
174
  });
173
175
  it('should set the data correctly for public functions', async () => {
174
- ProjectLogsManager.functions = functions;
175
- ProjectLogsManager.setFunction('function1');
176
- expect(ProjectLogsManager.selectedFunction).toEqual(function1);
177
- expect(ProjectLogsManager.functionName).toEqual('function1');
178
- expect(ProjectLogsManager.isPublicFunction).toEqual(false);
176
+ ProjectLogsManager_1.ProjectLogsManager.functions = functions;
177
+ ProjectLogsManager_1.ProjectLogsManager.setFunction('function1');
178
+ expect(ProjectLogsManager_1.ProjectLogsManager.selectedFunction).toEqual(function1);
179
+ expect(ProjectLogsManager_1.ProjectLogsManager.functionName).toEqual('function1');
180
+ expect(ProjectLogsManager_1.ProjectLogsManager.isPublicFunction).toEqual(false);
179
181
  });
180
182
  });
181
183
  describe('reset', () => {
182
184
  it('should reset all the values', async () => {
183
- ProjectLogsManager.projectName = 'value';
184
- expect(ProjectLogsManager.projectName).toBeDefined();
185
- ProjectLogsManager.reset();
186
- expect(ProjectLogsManager.projectName).toBeUndefined();
185
+ ProjectLogsManager_1.ProjectLogsManager.projectName = 'value';
186
+ expect(ProjectLogsManager_1.ProjectLogsManager.projectName).toBeDefined();
187
+ ProjectLogsManager_1.ProjectLogsManager.reset();
188
+ expect(ProjectLogsManager_1.ProjectLogsManager.projectName).toBeUndefined();
187
189
  });
188
190
  });
189
191
  });
@@ -1,23 +1,25 @@
1
- import { useV3Api } from '../buildAndDeploy.js';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const buildAndDeploy_1 = require("../buildAndDeploy");
2
4
  describe('buildAndDeploy', () => {
3
5
  describe('useV3Api', () => {
4
6
  it('returns true if platform version is UNSTABLE', () => {
5
- expect(useV3Api('UNSTABLE')).toBe(true);
7
+ expect((0, buildAndDeploy_1.useV3Api)('UNSTABLE')).toBe(true);
6
8
  });
7
9
  it('returns true if platform version is equal to the minimum', () => {
8
- expect(useV3Api('2025.2')).toBe(true);
10
+ expect((0, buildAndDeploy_1.useV3Api)('2025.2')).toBe(true);
9
11
  });
10
12
  it('returns true if platform version is greater than the minimum', () => {
11
- expect(useV3Api('2026.2')).toBe(true);
13
+ expect((0, buildAndDeploy_1.useV3Api)('2026.2')).toBe(true);
12
14
  });
13
15
  it('returns false if platform version is less than the minimum', () => {
14
- expect(useV3Api('2025.0')).toBe(false);
16
+ expect((0, buildAndDeploy_1.useV3Api)('2025.0')).toBe(false);
15
17
  });
16
18
  it('returns false if platform version is invalid', () => {
17
- expect(useV3Api(null)).toBe(false);
19
+ expect((0, buildAndDeploy_1.useV3Api)(null)).toBe(false);
18
20
  });
19
21
  it('returns false for an invalid platform version', () => {
20
- expect(useV3Api('notplaformversion')).toBe(false);
22
+ expect((0, buildAndDeploy_1.useV3Api)('notplaformversion')).toBe(false);
21
23
  });
22
24
  });
23
25
  });