@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,10 +1,15 @@
1
- import path from 'path';
2
- import { loadHsProfileFile, getHsProfileFilename, getAllHsProfiles, } from '@hubspot/project-parsing-lib';
3
- import { lib } from '../../lang/en.js';
4
- import { uiBetaTag, uiLine } from '../ui/index.js';
5
- import { uiLogger } from '../ui/logger.js';
6
- import { EXIT_CODES } from '../enums/exitCodes.js';
7
- import { logProfileHeader, logProfileFooter, loadProfile, exitIfUsingProfiles, } from '../projectProfiles.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 path_1 = __importDefault(require("path"));
7
+ const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
8
+ const en_1 = require("../../lang/en");
9
+ const ui_1 = require("../ui");
10
+ const logger_1 = require("../ui/logger");
11
+ const exitCodes_1 = require("../enums/exitCodes");
12
+ const projectProfiles_1 = require("../projectProfiles");
8
13
  // Mock dependencies
9
14
  vi.mock('@hubspot/project-parsing-lib');
10
15
  vi.mock('../ui');
@@ -14,21 +19,21 @@ vi.mock('../../lang/en');
14
19
  const mockExit = vi.spyOn(process, 'exit').mockImplementation(code => {
15
20
  throw new Error(`Process.exit called with code ${code}`);
16
21
  });
17
- const mockedLoadHsProfileFile = loadHsProfileFile;
18
- const mockedGetHsProfileFilename = getHsProfileFilename;
19
- const mockedGetAllHsProfiles = getAllHsProfiles;
20
- const mockedUiBetaTag = uiBetaTag;
21
- const mockedUiLine = uiLine;
22
- const mockedUiLogger = uiLogger;
22
+ const mockedLoadHsProfileFile = project_parsing_lib_1.loadHsProfileFile;
23
+ const mockedGetHsProfileFilename = project_parsing_lib_1.getHsProfileFilename;
24
+ const mockedGetAllHsProfiles = project_parsing_lib_1.getAllHsProfiles;
25
+ const mockedUiBetaTag = ui_1.uiBetaTag;
26
+ const mockedUiLine = ui_1.uiLine;
27
+ const mockedUiLogger = logger_1.uiLogger;
23
28
  describe('lib/projectProfiles', () => {
24
29
  describe('logProfileHeader()', () => {
25
30
  it('should log profile header with correct format', () => {
26
31
  const profileName = 'test-profile';
27
32
  const filename = 'test-profile.hsprofile';
28
33
  mockedGetHsProfileFilename.mockReturnValue(filename);
29
- logProfileHeader(profileName);
34
+ (0, projectProfiles_1.logProfileHeader)(profileName);
30
35
  expect(mockedUiLine).toHaveBeenCalled();
31
- expect(mockedUiBetaTag).toHaveBeenCalledWith(lib.projectProfiles.logs.usingProfile(filename));
36
+ expect(mockedUiBetaTag).toHaveBeenCalledWith(en_1.lib.projectProfiles.logs.usingProfile(filename));
32
37
  expect(mockedUiLogger.log).toHaveBeenCalledWith('');
33
38
  });
34
39
  });
@@ -41,16 +46,16 @@ describe('lib/projectProfiles', () => {
41
46
  },
42
47
  };
43
48
  it('should log profile footer with account ID', () => {
44
- logProfileFooter(mockProfile);
45
- expect(mockedUiLogger.log).toHaveBeenCalledWith(lib.projectProfiles.logs.profileTargetAccount(mockProfile.accountId));
49
+ (0, projectProfiles_1.logProfileFooter)(mockProfile);
50
+ expect(mockedUiLogger.log).toHaveBeenCalledWith(en_1.lib.projectProfiles.logs.profileTargetAccount(mockProfile.accountId));
46
51
  expect(mockedUiLine).toHaveBeenCalled();
47
52
  expect(mockedUiLogger.log).toHaveBeenCalledWith('');
48
53
  });
49
54
  it('should log variables when includeVariables is true', () => {
50
- logProfileFooter(mockProfile, true);
51
- expect(mockedUiLogger.log).toHaveBeenCalledWith(lib.projectProfiles.logs.profileTargetAccount(mockProfile.accountId));
55
+ (0, projectProfiles_1.logProfileFooter)(mockProfile, true);
56
+ expect(mockedUiLogger.log).toHaveBeenCalledWith(en_1.lib.projectProfiles.logs.profileTargetAccount(mockProfile.accountId));
52
57
  expect(mockedUiLogger.log).toHaveBeenCalledWith('');
53
- expect(mockedUiLogger.log).toHaveBeenCalledWith(lib.projectProfiles.logs.profileVariables);
58
+ expect(mockedUiLogger.log).toHaveBeenCalledWith(en_1.lib.projectProfiles.logs.profileVariables);
54
59
  expect(mockedUiLogger.log).toHaveBeenCalledWith(' key1: value1');
55
60
  expect(mockedUiLogger.log).toHaveBeenCalledWith(' key2: value2');
56
61
  expect(mockedUiLine).toHaveBeenCalled();
@@ -69,25 +74,25 @@ describe('lib/projectProfiles', () => {
69
74
  accountId: 123,
70
75
  };
71
76
  it('should return undefined when project config is missing', () => {
72
- const result = loadProfile(null, mockProjectDir, mockProfileName);
77
+ const result = (0, projectProfiles_1.loadProfile)(null, mockProjectDir, mockProfileName);
73
78
  expect(result).toBeUndefined();
74
- expect(mockedUiLogger.error).toHaveBeenCalledWith(lib.projectProfiles.loadProfile.errors.noProjectConfig);
79
+ expect(mockedUiLogger.error).toHaveBeenCalledWith(en_1.lib.projectProfiles.loadProfile.errors.noProjectConfig);
75
80
  });
76
81
  it('should return undefined when profile is not found', () => {
77
82
  mockedLoadHsProfileFile.mockReturnValue(null);
78
83
  const filename = 'test-profile.hsprofile';
79
84
  mockedGetHsProfileFilename.mockReturnValue(filename);
80
- const result = loadProfile(mockProjectConfig, mockProjectDir, mockProfileName);
85
+ const result = (0, projectProfiles_1.loadProfile)(mockProjectConfig, mockProjectDir, mockProfileName);
81
86
  expect(result).toBeUndefined();
82
- expect(mockedUiLogger.error).toHaveBeenCalledWith(lib.projectProfiles.loadProfile.errors.profileNotFound(filename));
87
+ expect(mockedUiLogger.error).toHaveBeenCalledWith(en_1.lib.projectProfiles.loadProfile.errors.profileNotFound(filename));
83
88
  });
84
89
  it('should return undefined when profile has no account ID', () => {
85
90
  mockedLoadHsProfileFile.mockReturnValue({});
86
91
  const filename = 'test-profile.hsprofile';
87
92
  mockedGetHsProfileFilename.mockReturnValue(filename);
88
- const result = loadProfile(mockProjectConfig, mockProjectDir, mockProfileName);
93
+ const result = (0, projectProfiles_1.loadProfile)(mockProjectConfig, mockProjectDir, mockProfileName);
89
94
  expect(result).toBeUndefined();
90
- expect(mockedUiLogger.error).toHaveBeenCalledWith(lib.projectProfiles.loadProfile.errors.missingAccountId(filename));
95
+ expect(mockedUiLogger.error).toHaveBeenCalledWith(en_1.lib.projectProfiles.loadProfile.errors.missingAccountId(filename));
91
96
  });
92
97
  it('should return undefined when profile loading fails', () => {
93
98
  mockedLoadHsProfileFile.mockImplementation(() => {
@@ -95,15 +100,15 @@ describe('lib/projectProfiles', () => {
95
100
  });
96
101
  const filename = 'test-profile.hsprofile';
97
102
  mockedGetHsProfileFilename.mockReturnValue(filename);
98
- const result = loadProfile(mockProjectConfig, mockProjectDir, mockProfileName);
103
+ const result = (0, projectProfiles_1.loadProfile)(mockProjectConfig, mockProjectDir, mockProfileName);
99
104
  expect(result).toBeUndefined();
100
- expect(mockedUiLogger.error).toHaveBeenCalledWith(lib.projectProfiles.loadProfile.errors.failedToLoadProfile(filename));
105
+ expect(mockedUiLogger.error).toHaveBeenCalledWith(en_1.lib.projectProfiles.loadProfile.errors.failedToLoadProfile(filename));
101
106
  });
102
107
  it('should return profile when loading succeeds', () => {
103
108
  mockedLoadHsProfileFile.mockReturnValue(mockProfile);
104
- const result = loadProfile(mockProjectConfig, mockProjectDir, mockProfileName);
109
+ const result = (0, projectProfiles_1.loadProfile)(mockProjectConfig, mockProjectDir, mockProfileName);
105
110
  expect(result).toEqual(mockProfile);
106
- expect(mockedLoadHsProfileFile).toHaveBeenCalledWith(path.join(mockProjectDir, mockProjectConfig.srcDir), mockProfileName);
111
+ expect(mockedLoadHsProfileFile).toHaveBeenCalledWith(path_1.default.join(mockProjectDir, mockProjectConfig.srcDir), mockProfileName);
107
112
  });
108
113
  });
109
114
  describe('exitIfUsingProfiles()', () => {
@@ -115,15 +120,15 @@ describe('lib/projectProfiles', () => {
115
120
  const mockProjectDir = '/test/project';
116
121
  it('should not exit when no profiles exist', async () => {
117
122
  mockedGetAllHsProfiles.mockResolvedValue([]);
118
- await exitIfUsingProfiles(mockProjectConfig, mockProjectDir);
123
+ await (0, projectProfiles_1.exitIfUsingProfiles)(mockProjectConfig, mockProjectDir);
119
124
  expect(mockedUiLogger.error).not.toHaveBeenCalled();
120
125
  expect(mockExit).not.toHaveBeenCalled();
121
126
  });
122
127
  it('should exit with error when profiles exist', async () => {
123
128
  mockedGetAllHsProfiles.mockResolvedValue(['profile1', 'profile2']);
124
- await expect(exitIfUsingProfiles(mockProjectConfig, mockProjectDir)).rejects.toThrow(`Process.exit called with code ${EXIT_CODES.ERROR}`);
125
- expect(mockedUiLogger.error).toHaveBeenCalledWith(lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
126
- expect(mockExit).toHaveBeenCalledWith(EXIT_CODES.ERROR);
129
+ await expect((0, projectProfiles_1.exitIfUsingProfiles)(mockProjectConfig, mockProjectDir)).rejects.toThrow(`Process.exit called with code ${exitCodes_1.EXIT_CODES.ERROR}`);
130
+ expect(mockedUiLogger.error).toHaveBeenCalledWith(en_1.lib.projectProfiles.exitIfUsingProfiles.errors.noProfileSpecified);
131
+ expect(mockExit).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
127
132
  });
128
133
  });
129
134
  });
@@ -1,36 +1,41 @@
1
- import { logger } from '@hubspot/local-dev-lib/logger';
2
- import { initiateSync } from '@hubspot/local-dev-lib/api/sandboxSync';
3
- import { getAccountId } from '@hubspot/local-dev-lib/config';
4
- import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
5
- import { mockHubSpotHttpError } from '../testUtils.js';
6
- import { getAvailableSyncTypes } from '../sandboxes.js';
7
- import { syncSandbox } from '../sandboxSync.js';
8
- import SpinniesManager from '../ui/SpinniesManager.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 logger_1 = require("@hubspot/local-dev-lib/logger");
7
+ const sandboxSync_1 = require("@hubspot/local-dev-lib/api/sandboxSync");
8
+ const config_1 = require("@hubspot/local-dev-lib/config");
9
+ const config_2 = require("@hubspot/local-dev-lib/constants/config");
10
+ const testUtils_1 = require("../testUtils");
11
+ const sandboxes_1 = require("../sandboxes");
12
+ const sandboxSync_2 = require("../sandboxSync");
13
+ const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
9
14
  vi.mock('@hubspot/local-dev-lib/logger');
10
15
  vi.mock('@hubspot/local-dev-lib/api/sandboxSync');
11
16
  vi.mock('@hubspot/local-dev-lib/config');
12
17
  vi.mock('../sandboxes');
13
18
  vi.mock('../ui/SpinniesManager');
14
- const mockedLogger = logger;
15
- const mockedInitiateSync = initiateSync;
16
- const mockedGetAccountId = getAccountId;
17
- const mockedGetAvailableSyncTypes = getAvailableSyncTypes;
18
- const mockedSpinniesInit = SpinniesManager.init;
19
- const mockedSpinniesAdd = SpinniesManager.add;
20
- const mockedSpinniesSucceed = SpinniesManager.succeed;
21
- const mockedSpinniesFail = SpinniesManager.fail;
19
+ const mockedLogger = logger_1.logger;
20
+ const mockedInitiateSync = sandboxSync_1.initiateSync;
21
+ const mockedGetAccountId = config_1.getAccountId;
22
+ const mockedGetAvailableSyncTypes = sandboxes_1.getAvailableSyncTypes;
23
+ const mockedSpinniesInit = SpinniesManager_1.default.init;
24
+ const mockedSpinniesAdd = SpinniesManager_1.default.add;
25
+ const mockedSpinniesSucceed = SpinniesManager_1.default.succeed;
26
+ const mockedSpinniesFail = SpinniesManager_1.default.fail;
22
27
  describe('lib/sandboxSync', () => {
23
28
  const mockEnv = 'qa';
24
29
  const mockParentAccount = {
25
30
  name: 'Parent Account',
26
31
  portalId: 123,
27
- accountType: HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX,
32
+ accountType: config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX,
28
33
  env: mockEnv,
29
34
  };
30
35
  const mockChildAccount = {
31
36
  name: 'Child Account',
32
37
  portalId: 456,
33
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
38
+ accountType: config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
34
39
  env: mockEnv,
35
40
  };
36
41
  const mockSyncTasks = [{ type: 'mock-sync-type' }];
@@ -43,7 +48,7 @@ describe('lib/sandboxSync', () => {
43
48
  describe('syncSandbox()', () => {
44
49
  it('successfully syncs a sandbox with provided sync tasks', async () => {
45
50
  mockedInitiateSync.mockResolvedValue({ status: 'SUCCESS' });
46
- await syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks);
51
+ await (0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks);
47
52
  expect(mockedSpinniesInit).toHaveBeenCalled();
48
53
  expect(mockedSpinniesAdd).toHaveBeenCalled();
49
54
  expect(mockedInitiateSync).toHaveBeenCalledWith(mockParentAccount.portalId, mockChildAccount.portalId, mockSyncTasks, mockChildAccount.portalId);
@@ -51,7 +56,7 @@ describe('lib/sandboxSync', () => {
51
56
  });
52
57
  it('fetches sync types when no tasks are provided', async () => {
53
58
  mockedInitiateSync.mockResolvedValue({ status: 'SUCCESS' });
54
- await syncSandbox(mockChildAccount, mockParentAccount, mockEnv, []);
59
+ await (0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, []);
55
60
  expect(mockedGetAvailableSyncTypes).toHaveBeenCalledWith(mockParentAccount, mockChildAccount);
56
61
  expect(mockedGetAvailableSyncTypes).toHaveBeenCalledWith(mockParentAccount, mockChildAccount);
57
62
  expect(mockedInitiateSync).toHaveBeenCalled();
@@ -60,10 +65,10 @@ describe('lib/sandboxSync', () => {
60
65
  mockedGetAccountId.mockReset();
61
66
  mockedGetAccountId.mockReturnValue(null);
62
67
  const errorRegex = new RegExp(`Couldn't sync ${mockChildAccount.portalId} because your account has been removed from`);
63
- await expect(syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toThrow(errorRegex);
68
+ await expect((0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toThrow(errorRegex);
64
69
  });
65
70
  it('handles sync in progress error', async () => {
66
- const error = mockHubSpotHttpError('', {
71
+ const error = (0, testUtils_1.mockHubSpotHttpError)('', {
67
72
  status: 429,
68
73
  data: {
69
74
  category: 'RATE_LIMITS',
@@ -71,12 +76,12 @@ describe('lib/sandboxSync', () => {
71
76
  },
72
77
  });
73
78
  mockedInitiateSync.mockRejectedValue(error);
74
- await expect(syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
79
+ await expect((0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
75
80
  expect(mockedSpinniesFail).toHaveBeenCalled();
76
81
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/Couldn't run the sync because there's another sync in progress/));
77
82
  });
78
83
  it('handles invalid user error', async () => {
79
- const error = mockHubSpotHttpError('', {
84
+ const error = (0, testUtils_1.mockHubSpotHttpError)('', {
80
85
  status: 403,
81
86
  data: {
82
87
  category: 'BANNED',
@@ -84,12 +89,12 @@ describe('lib/sandboxSync', () => {
84
89
  },
85
90
  });
86
91
  mockedInitiateSync.mockRejectedValue(error);
87
- await expect(syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
92
+ await expect((0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
88
93
  expect(mockedSpinniesFail).toHaveBeenCalled();
89
94
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/because your account has been removed from/));
90
95
  });
91
96
  it('handles not super admin error', async () => {
92
- const error = mockHubSpotHttpError('', {
97
+ const error = (0, testUtils_1.mockHubSpotHttpError)('', {
93
98
  status: 403,
94
99
  data: {
95
100
  category: 'BANNED',
@@ -97,12 +102,12 @@ describe('lib/sandboxSync', () => {
97
102
  },
98
103
  });
99
104
  mockedInitiateSync.mockRejectedValue(error);
100
- await expect(syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
105
+ await expect((0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
101
106
  expect(mockedSpinniesFail).toHaveBeenCalled();
102
107
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/Couldn't run the sync because you are not a super admin in/));
103
108
  });
104
109
  it('handles sandbox not found error', async () => {
105
- const error = mockHubSpotHttpError('', {
110
+ const error = (0, testUtils_1.mockHubSpotHttpError)('', {
106
111
  status: 404,
107
112
  data: {
108
113
  category: 'OBJECT_NOT_FOUND',
@@ -110,13 +115,13 @@ describe('lib/sandboxSync', () => {
110
115
  },
111
116
  });
112
117
  mockedInitiateSync.mockRejectedValue(error);
113
- await expect(syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
118
+ await expect((0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks)).rejects.toEqual(error);
114
119
  expect(mockedSpinniesFail).toHaveBeenCalled();
115
120
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/may have been deleted through the UI/));
116
121
  });
117
122
  it('displays slim info message when specified', async () => {
118
123
  mockedInitiateSync.mockResolvedValue({ status: 'SUCCESS' });
119
- await syncSandbox(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks, true);
124
+ await (0, sandboxSync_2.syncSandbox)(mockChildAccount, mockParentAccount, mockEnv, mockSyncTasks, true);
120
125
  expect(mockedLogger.info).not.toHaveBeenCalled();
121
126
  expect(mockedSpinniesSucceed).toHaveBeenCalledWith('sandboxSync', expect.objectContaining({
122
127
  text: expect.stringMatching(/Initiated sync of object definitions from production to /),
@@ -1,29 +1,31 @@
1
- import { logger } from '@hubspot/local-dev-lib/logger';
2
- import { getSandboxUsageLimits } from '@hubspot/local-dev-lib/api/sandboxHubs';
3
- import { fetchTypes } from '@hubspot/local-dev-lib/api/sandboxSync';
4
- import { getAccountId, getConfigAccounts } from '@hubspot/local-dev-lib/config';
5
- import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
6
- import { mockHubSpotHttpError } from '../testUtils.js';
7
- import { getSandboxTypeAsString, getHasSandboxesByType, getAvailableSyncTypes, validateSandboxUsageLimits, handleSandboxCreateError, } from '../sandboxes.js';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
4
+ const sandboxHubs_1 = require("@hubspot/local-dev-lib/api/sandboxHubs");
5
+ const sandboxSync_1 = require("@hubspot/local-dev-lib/api/sandboxSync");
6
+ const config_1 = require("@hubspot/local-dev-lib/config");
7
+ const config_2 = require("@hubspot/local-dev-lib/constants/config");
8
+ const testUtils_1 = require("../testUtils");
9
+ const sandboxes_1 = require("../sandboxes");
8
10
  vi.mock('@hubspot/local-dev-lib/logger');
9
11
  vi.mock('@hubspot/local-dev-lib/api/sandboxHubs');
10
12
  vi.mock('@hubspot/local-dev-lib/api/sandboxSync');
11
13
  vi.mock('@hubspot/local-dev-lib/config');
12
- const mockedGetAccountId = getAccountId;
13
- const mockedGetSandboxUsageLimits = getSandboxUsageLimits;
14
- const mockedFetchTypes = fetchTypes;
15
- const mockedGetConfigAccounts = getConfigAccounts;
16
- const mockedLogger = logger;
14
+ const mockedGetAccountId = config_1.getAccountId;
15
+ const mockedGetSandboxUsageLimits = sandboxHubs_1.getSandboxUsageLimits;
16
+ const mockedFetchTypes = sandboxSync_1.fetchTypes;
17
+ const mockedGetConfigAccounts = config_1.getConfigAccounts;
18
+ const mockedLogger = logger_1.logger;
17
19
  describe('lib/sandboxes', () => {
18
20
  describe('getSandboxTypeAsString()', () => {
19
21
  it('returns "development" for development sandbox type', () => {
20
- expect(getSandboxTypeAsString(HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX)).toBe('development');
22
+ expect((0, sandboxes_1.getSandboxTypeAsString)(config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX)).toBe('development');
21
23
  });
22
24
  it('returns "standard" for standard sandbox type', () => {
23
- expect(getSandboxTypeAsString(HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX)).toBe('standard');
25
+ expect((0, sandboxes_1.getSandboxTypeAsString)(config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX)).toBe('standard');
24
26
  });
25
27
  it('returns "standard" for undefined input', () => {
26
- expect(getSandboxTypeAsString(undefined)).toBe('standard');
28
+ expect((0, sandboxes_1.getSandboxTypeAsString)(undefined)).toBe('standard');
27
29
  });
28
30
  });
29
31
  describe('getHasSandboxesByType()', () => {
@@ -31,7 +33,7 @@ describe('lib/sandboxes', () => {
31
33
  name: 'Parent Account',
32
34
  portalId: 123,
33
35
  authType: undefined,
34
- accountType: HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX,
36
+ accountType: config_2.HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX,
35
37
  env: 'qa',
36
38
  };
37
39
  it('returns true when sandbox of specified type exists', () => {
@@ -41,14 +43,14 @@ describe('lib/sandboxes', () => {
41
43
  {
42
44
  ...mockParentAccount,
43
45
  parentAccountId: 123,
44
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
46
+ accountType: config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
45
47
  },
46
48
  ]);
47
- expect(getHasSandboxesByType(mockParentAccount, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX)).toBe(true);
49
+ expect((0, sandboxes_1.getHasSandboxesByType)(mockParentAccount, config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX)).toBe(true);
48
50
  });
49
51
  it('returns false when no sandbox of specified type exists', () => {
50
52
  mockedGetConfigAccounts.mockReturnValue([mockParentAccount]);
51
- expect(getHasSandboxesByType(mockParentAccount, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX)).toBe(false);
53
+ expect((0, sandboxes_1.getHasSandboxesByType)(mockParentAccount, config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX)).toBe(false);
52
54
  });
53
55
  });
54
56
  describe('getAvailableSyncTypes()', () => {
@@ -69,12 +71,12 @@ describe('lib/sandboxes', () => {
69
71
  mockedFetchTypes.mockResolvedValue({
70
72
  data: { results: mockSyncTypes },
71
73
  });
72
- const result = await getAvailableSyncTypes(mockParentAccount, mockChildAccount);
74
+ const result = await (0, sandboxes_1.getAvailableSyncTypes)(mockParentAccount, mockChildAccount);
73
75
  expect(result).toEqual([{ type: 'type1' }, { type: 'type2' }]);
74
76
  });
75
77
  it('throws error when sync types fetch fails', async () => {
76
78
  mockedFetchTypes.mockResolvedValue({ data: { results: null } });
77
- await expect(getAvailableSyncTypes(mockParentAccount, mockChildAccount)).rejects.toThrow(/Unable to fetch available sandbox sync types/);
79
+ await expect((0, sandboxes_1.getAvailableSyncTypes)(mockParentAccount, mockChildAccount)).rejects.toThrow(/Unable to fetch available sandbox sync types/);
78
80
  });
79
81
  });
80
82
  describe('validateSandboxUsageLimits()', () => {
@@ -91,7 +93,7 @@ describe('lib/sandboxes', () => {
91
93
  usage: { DEVELOPER: { available: 1, limit: 3 } },
92
94
  },
93
95
  });
94
- await expect(validateSandboxUsageLimits(mockAccount, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, 'qa')).resolves.not.toThrow();
96
+ await expect((0, sandboxes_1.validateSandboxUsageLimits)(mockAccount, config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, 'qa')).resolves.not.toThrow();
95
97
  });
96
98
  it('throws error when development sandbox limit is reached', async () => {
97
99
  mockedGetAccountId.mockReturnValue(mockAccount.portalId);
@@ -101,7 +103,7 @@ describe('lib/sandboxes', () => {
101
103
  usage: { DEVELOPER: { available: 0, limit: 1 } },
102
104
  },
103
105
  });
104
- await expect(validateSandboxUsageLimits(mockAccount, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, 'qa')).rejects.toThrow(/reached the limit of 1 development sandbox/);
106
+ await expect((0, sandboxes_1.validateSandboxUsageLimits)(mockAccount, config_2.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, 'qa')).rejects.toThrow(/reached the limit of 1 development sandbox/);
105
107
  });
106
108
  });
107
109
  describe('handleSandboxCreateError()', () => {
@@ -109,37 +111,37 @@ describe('lib/sandboxes', () => {
109
111
  const mockName = 'Test Sandbox';
110
112
  const mockAccountId = 123;
111
113
  it('handles missing scope error', () => {
112
- const error = mockHubSpotHttpError('missing scopes error', {
114
+ const error = (0, testUtils_1.mockHubSpotHttpError)('missing scopes error', {
113
115
  status: 403,
114
116
  data: {
115
117
  message: 'Missing scopes error',
116
118
  category: 'MISSING_SCOPES',
117
119
  },
118
120
  });
119
- expect(() => handleSandboxCreateError(error, mockEnv, mockName, mockAccountId)).toThrow(error);
121
+ expect(() => (0, sandboxes_1.handleSandboxCreateError)(error, mockEnv, mockName, mockAccountId)).toThrow(error);
120
122
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/The personal access key you provided doesn't include sandbox permissions/));
121
123
  expect(mockedLogger.info).toHaveBeenCalledWith(expect.stringMatching(/To update CLI permissions for/));
122
124
  });
123
125
  it('handles user access not allowed error', () => {
124
- const error = mockHubSpotHttpError('user access not allowed error', {
126
+ const error = (0, testUtils_1.mockHubSpotHttpError)('user access not allowed error', {
125
127
  status: 403,
126
128
  data: {
127
129
  category: 'BANNED',
128
130
  subCategory: 'SandboxErrors.USER_ACCESS_NOT_ALLOWED',
129
131
  },
130
132
  });
131
- expect(() => handleSandboxCreateError(error, mockEnv, mockName, mockAccountId)).toThrow(error);
133
+ expect(() => (0, sandboxes_1.handleSandboxCreateError)(error, mockEnv, mockName, mockAccountId)).toThrow(error);
132
134
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/your permission set doesn't allow you to create the sandbox/));
133
135
  });
134
136
  it('handles 403 gating error', () => {
135
- const error = mockHubSpotHttpError('403 gating error', {
137
+ const error = (0, testUtils_1.mockHubSpotHttpError)('403 gating error', {
136
138
  status: 403,
137
139
  data: {
138
140
  category: 'BANNED',
139
141
  subCategory: 'SandboxErrors.DEVELOPMENT_SANDBOX_ACCESS_NOT_ALLOWED',
140
142
  },
141
143
  });
142
- expect(() => handleSandboxCreateError(error, mockEnv, mockName, mockAccountId)).toThrow(error);
144
+ expect(() => (0, sandboxes_1.handleSandboxCreateError)(error, mockEnv, mockName, mockAccountId)).toThrow(error);
143
145
  expect(mockedLogger.error).toHaveBeenCalledWith(expect.stringMatching(/does not have access to development sandboxes/));
144
146
  });
145
147
  });
@@ -1,6 +1,11 @@
1
- import mockStdIn from 'mock-stdin';
2
- import { outputLogs } from '../ui/serverlessFunctionLogs.js';
3
- import { tailLogs } from '../serverlessLogs.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 mock_stdin_1 = __importDefault(require("mock-stdin"));
7
+ const serverlessFunctionLogs_1 = require("../ui/serverlessFunctionLogs");
8
+ const serverlessLogs_1 = require("../serverlessLogs");
4
9
  vi.mock('../ui/serverlessFunctionLogs');
5
10
  vi.mock('@hubspot/local-dev-lib/logger');
6
11
  vi.mock('../ui/SpinniesManager', () => ({
@@ -21,7 +26,7 @@ describe('lib/serverlessLogs', () => {
21
26
  beforeEach(() => {
22
27
  // @ts-ignore - we don't need to mock the entire process object
23
28
  vi.spyOn(process, 'exit').mockImplementation(() => { });
24
- stdinMock = mockStdIn.stdin();
29
+ stdinMock = mock_stdin_1.default.stdin();
25
30
  });
26
31
  afterEach(() => {
27
32
  vi.clearAllTimers();
@@ -64,7 +69,7 @@ describe('lib/serverlessLogs', () => {
64
69
  });
65
70
  });
66
71
  // @ts-ignore - headers is not used in the actual function and does not need to be mocked
67
- await tailLogs(ACCOUNT_ID, 'name', fetchLatest, tailCall, compact);
72
+ await (0, serverlessLogs_1.tailLogs)(ACCOUNT_ID, 'name', fetchLatest, tailCall, compact);
68
73
  vi.runOnlyPendingTimers();
69
74
  expect(fetchLatest).toHaveBeenCalled();
70
75
  expect(tailCall).toHaveBeenCalledTimes(2);
@@ -120,9 +125,9 @@ describe('lib/serverlessLogs', () => {
120
125
  };
121
126
  const tailCall = vi.fn(() => Promise.resolve({ data: latestLogResponse }));
122
127
  // @ts-ignore - headers is not used in the actual function and does not need to be mocked
123
- await tailLogs(ACCOUNT_ID, 'name', fetchLatest, tailCall, compact);
128
+ await (0, serverlessLogs_1.tailLogs)(ACCOUNT_ID, 'name', fetchLatest, tailCall, compact);
124
129
  vi.runOnlyPendingTimers();
125
- expect(outputLogs).toHaveBeenCalledWith(latestLogResponse, expect.objectContaining({ compact }));
130
+ expect(serverlessFunctionLogs_1.outputLogs).toHaveBeenCalledWith(latestLogResponse, expect.objectContaining({ compact }));
126
131
  expect(tailCall).toHaveBeenCalledTimes(2);
127
132
  });
128
133
  it('handles no logs', async () => {
@@ -141,7 +146,7 @@ describe('lib/serverlessLogs', () => {
141
146
  stackTrace: [],
142
147
  statusCode: 404,
143
148
  }));
144
- await tailLogs(ACCOUNT_ID, 'name', fetchLatest, tailCall, compact);
149
+ await (0, serverlessLogs_1.tailLogs)(ACCOUNT_ID, 'name', fetchLatest, tailCall, compact);
145
150
  vi.runOnlyPendingTimers();
146
151
  expect(tailCall).toHaveBeenCalledTimes(2);
147
152
  });