@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,22 +1,60 @@
1
- import { HttpStatusCode } from 'axios';
2
- import yargs from 'yargs';
3
- import chalk from 'chalk';
4
- import * as configUtils from '@hubspot/local-dev-lib/config';
5
- import { logger } from '@hubspot/local-dev-lib/logger';
6
- import * as projectApiUtils from '@hubspot/local-dev-lib/api/projects';
7
- import * as ui from '../../../lib/ui/index.js';
8
- import { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } from '../../../lib/commonOpts.js';
9
- import * as projectUtils from '../../../lib/projects/config.js';
10
- import * as projectUrlUtils from '../../../lib/projects/urls.js';
11
- import { pollDeployStatus } from '../../../lib/projects/buildAndDeploy.js';
12
- import * as projectNamePrompt from '../../../lib/prompts/projectNamePrompt.js';
13
- import * as promptUtils from '../../../lib/prompts/promptUtils.js';
14
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
15
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
16
- import exampleProject from './fixtures/exampleProject.json' with { type: 'json' };
17
- import { mockHubSpotHttpResponse, mockHubSpotHttpError, } from '../../../lib/testUtils.js';
18
- import projectDeployCommand from '../deploy.js';
19
- vi.mock('@hubspot/local-dev-lib/logger');
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const axios_1 = require("axios");
40
+ const yargs_1 = __importDefault(require("yargs"));
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
43
+ const configUtils = __importStar(require("@hubspot/local-dev-lib/config"));
44
+ const projectApiUtils = __importStar(require("@hubspot/local-dev-lib/api/projects"));
45
+ const ui = __importStar(require("../../../lib/ui"));
46
+ const commonOpts_1 = require("../../../lib/commonOpts");
47
+ const projectUtils = __importStar(require("../../../lib/projects/config"));
48
+ const projectUrlUtils = __importStar(require("../../../lib/projects/urls"));
49
+ const buildAndDeploy_1 = require("../../../lib/projects/buildAndDeploy");
50
+ const projectNamePrompt = __importStar(require("../../../lib/prompts/projectNamePrompt"));
51
+ const promptUtils = __importStar(require("../../../lib/prompts/promptUtils"));
52
+ const usageTracking_1 = require("../../../lib/usageTracking");
53
+ const exitCodes_1 = require("../../../lib/enums/exitCodes");
54
+ const exampleProject_json_1 = __importDefault(require("./fixtures/exampleProject.json"));
55
+ const testUtils_1 = require("../../../lib/testUtils");
56
+ const deploy_1 = __importDefault(require("../deploy"));
57
+ const logger_2 = require("../../../lib/ui/logger");
20
58
  vi.mock('@hubspot/local-dev-lib/api/projects');
21
59
  vi.mock('@hubspot/local-dev-lib/config');
22
60
  vi.mock('../../../lib/commonOpts');
@@ -27,8 +65,9 @@ vi.mock('../../../lib/projects/buildAndDeploy');
27
65
  vi.mock('../../../lib/prompts/projectNamePrompt');
28
66
  vi.mock('../../../lib/prompts/promptUtils');
29
67
  vi.mock('../../../lib/usageTracking');
68
+ vi.mock('../../../lib/ui/logger');
69
+ vi.mock('@hubspot/local-dev-lib/logger');
30
70
  vi.spyOn(ui, 'uiLine');
31
- const uiLinkSpy = vi.spyOn(ui, 'uiLink').mockImplementation(text => text);
32
71
  const uiCommandReferenceSpy = vi.spyOn(ui, 'uiCommandReference');
33
72
  const uiAccountDescriptionSpy = vi.spyOn(ui, 'uiAccountDescription');
34
73
  const getProjectConfigSpy = vi.spyOn(projectUtils, 'getProjectConfig');
@@ -40,35 +79,36 @@ const getAccountConfigSpy = vi.spyOn(configUtils, 'getAccountConfig');
40
79
  const promptUserSpy = vi.spyOn(promptUtils, 'promptUser');
41
80
  const processExitSpy = vi.spyOn(process, 'exit');
42
81
  const optionsSpy = vi
43
- .spyOn(yargs, 'options')
44
- .mockReturnValue(yargs);
82
+ .spyOn(yargs_1.default, 'options')
83
+ .mockReturnValue(yargs_1.default);
45
84
  const exampleSpy = vi
46
- .spyOn(yargs, 'example')
47
- .mockReturnValue(yargs);
85
+ .spyOn(yargs_1.default, 'example')
86
+ .mockReturnValue(yargs_1.default);
48
87
  const conflictsSpy = vi
49
- .spyOn(yargs, 'conflicts')
50
- .mockReturnValue(yargs);
88
+ .spyOn(yargs_1.default, 'conflicts')
89
+ .mockReturnValue(yargs_1.default);
51
90
  describe('commands/project/deploy', () => {
52
91
  const projectFlag = 'project';
53
92
  const buildFlag = 'build';
93
+ const deployLatestBuildFlag = 'deployLatestBuild';
54
94
  const profileFlag = 'profile';
55
95
  const forceFlag = 'force';
56
96
  describe('command', () => {
57
97
  it('should have the correct command structure', () => {
58
- expect(projectDeployCommand.command).toEqual('deploy');
98
+ expect(deploy_1.default.command).toEqual('deploy');
59
99
  });
60
100
  });
61
101
  describe('describe', () => {
62
102
  it('should contain the beta tag', () => {
63
- expect(projectDeployCommand.describe).toContain('[BETA]');
103
+ expect(deploy_1.default.describe).toContain('[BETA]');
64
104
  });
65
105
  it('should provide a description', () => {
66
- expect(projectDeployCommand.describe).toBeDefined();
106
+ expect(deploy_1.default.describe).toBeDefined();
67
107
  });
68
108
  });
69
109
  describe('builder', () => {
70
110
  it('should support the correct options', () => {
71
- projectDeployCommand.builder(yargs);
111
+ deploy_1.default.builder(yargs_1.default);
72
112
  expect(conflictsSpy).toHaveBeenCalledTimes(2);
73
113
  expect(conflictsSpy).toHaveBeenNthCalledWith(1, profileFlag, projectFlag);
74
114
  expect(conflictsSpy).toHaveBeenNthCalledWith(2, profileFlag, 'account');
@@ -79,6 +119,11 @@ describe('commands/project/deploy', () => {
79
119
  alias: ['build-id'],
80
120
  type: 'number',
81
121
  }),
122
+ [deployLatestBuildFlag]: expect.objectContaining({
123
+ type: 'boolean',
124
+ alias: ['deploy-latest-build'],
125
+ default: false,
126
+ }),
82
127
  [profileFlag]: expect.objectContaining({
83
128
  type: 'string',
84
129
  alias: ['p'],
@@ -89,15 +134,17 @@ describe('commands/project/deploy', () => {
89
134
  alias: ['f'],
90
135
  }),
91
136
  });
92
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
93
- expect(addConfigOptions).toHaveBeenCalledWith(yargs);
94
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
95
- expect(addAccountOptions).toHaveBeenCalledWith(yargs);
96
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
97
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargs);
137
+ expect(commonOpts_1.addConfigOptions).toHaveBeenCalledTimes(1);
138
+ expect(commonOpts_1.addConfigOptions).toHaveBeenCalledWith(yargs_1.default);
139
+ expect(commonOpts_1.addAccountOptions).toHaveBeenCalledTimes(1);
140
+ expect(commonOpts_1.addAccountOptions).toHaveBeenCalledWith(yargs_1.default);
141
+ expect(commonOpts_1.addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
142
+ expect(commonOpts_1.addUseEnvironmentOptions).toHaveBeenCalledWith(yargs_1.default);
143
+ expect(commonOpts_1.addJSONOutputOptions).toHaveBeenCalledTimes(1);
144
+ expect(commonOpts_1.addJSONOutputOptions).toHaveBeenCalledWith(yargs_1.default);
98
145
  });
99
146
  it('should provide examples', () => {
100
- projectDeployCommand.builder(yargs);
147
+ deploy_1.default.builder(yargs_1.default);
101
148
  expect(exampleSpy).toHaveBeenCalledTimes(1);
102
149
  });
103
150
  });
@@ -108,9 +155,9 @@ describe('commands/project/deploy', () => {
108
155
  const projectNameFromPrompt = 'project name from prompt';
109
156
  const deployDetails = {
110
157
  id: 123,
158
+ buildResultType: 'DEPLOY_QUEUED',
111
159
  };
112
160
  const projectDetailUrl = 'http://project-details-page-url.com';
113
- const viewProjectsInHubSpot = 'View project builds in HubSpot';
114
161
  beforeEach(() => {
115
162
  args = {
116
163
  project: 'project name from options',
@@ -130,33 +177,30 @@ describe('commands/project/deploy', () => {
130
177
  projectName: projectNameFromPrompt,
131
178
  });
132
179
  getProjectDetailUrlSpy.mockReturnValue(projectDetailUrl);
133
- uiLinkSpy.mockImplementation(text => {
134
- return text;
135
- });
136
180
  getAccountConfigSpy.mockReturnValue({ accountType, env: 'qa' });
137
- fetchProjectSpy.mockReturnValue(mockHubSpotHttpResponse(exampleProject));
138
- deployProjectSpy.mockReturnValue(mockHubSpotHttpResponse(deployDetails));
181
+ fetchProjectSpy.mockReturnValue((0, testUtils_1.mockHubSpotHttpResponse)(exampleProject_json_1.default));
182
+ deployProjectSpy.mockReturnValue((0, testUtils_1.mockHubSpotHttpResponse)(deployDetails));
139
183
  // Spy on process.exit so our tests don't close when it's called
140
184
  // @ts-expect-error Doesn't match the actual signature because then the linter complains about unused variables
141
185
  processExitSpy.mockImplementation(() => { });
142
186
  });
143
187
  it('should load the account config for the correct account id', async () => {
144
- await projectDeployCommand.handler(args);
188
+ await deploy_1.default.handler(args);
145
189
  expect(getAccountConfigSpy).toHaveBeenCalledTimes(1);
146
190
  expect(getAccountConfigSpy).toHaveBeenCalledWith(args.derivedAccountId);
147
191
  });
148
192
  it('should track the command usage', async () => {
149
- await projectDeployCommand.handler(args);
150
- expect(trackCommandUsage).toHaveBeenCalledTimes(1);
151
- expect(trackCommandUsage).toHaveBeenCalledWith('project-deploy', { type: accountType }, args.derivedAccountId);
193
+ await deploy_1.default.handler(args);
194
+ expect(usageTracking_1.trackCommandUsage).toHaveBeenCalledTimes(1);
195
+ expect(usageTracking_1.trackCommandUsage).toHaveBeenCalledWith('project-deploy', { type: accountType }, args.derivedAccountId);
152
196
  });
153
197
  it('should load the project config', async () => {
154
- await projectDeployCommand.handler(args);
198
+ await deploy_1.default.handler(args);
155
199
  expect(getProjectConfigSpy).toHaveBeenCalledTimes(1);
156
200
  expect(getProjectConfigSpy).toHaveBeenCalled();
157
201
  });
158
202
  it('should prompt for the project name', async () => {
159
- await projectDeployCommand.handler(args);
203
+ await deploy_1.default.handler(args);
160
204
  expect(projectNamePromptSpy).toHaveBeenCalledTimes(1);
161
205
  expect(projectNamePromptSpy).toHaveBeenCalledWith(args.derivedAccountId, {
162
206
  project: args.project,
@@ -164,14 +208,14 @@ describe('commands/project/deploy', () => {
164
208
  });
165
209
  it('should use the project name from the config is a project args is not provided', async () => {
166
210
  delete args.project;
167
- await projectDeployCommand.handler(args);
211
+ await deploy_1.default.handler(args);
168
212
  expect(projectNamePromptSpy).toHaveBeenCalledTimes(1);
169
213
  expect(projectNamePromptSpy).toHaveBeenCalledWith(args.derivedAccountId, {
170
214
  project: projectConfig.name,
171
215
  });
172
216
  });
173
217
  it('should fetch the project details', async () => {
174
- await projectDeployCommand.handler(args);
218
+ await deploy_1.default.handler(args);
175
219
  expect(fetchProjectSpy).toHaveBeenCalledTimes(1);
176
220
  expect(fetchProjectSpy).toHaveBeenCalledWith(args.derivedAccountId, projectNameFromPrompt);
177
221
  });
@@ -186,76 +230,72 @@ describe('commands/project/deploy', () => {
186
230
  projectConfig: null,
187
231
  projectDir: null,
188
232
  });
189
- await projectDeployCommand.handler(argsWithoutProject);
233
+ await deploy_1.default.handler(argsWithoutProject);
190
234
  expect(projectNamePromptSpy).toHaveBeenCalledTimes(1);
191
235
  expect(projectNamePromptSpy).toHaveBeenCalledWith(args.derivedAccountId, {});
192
236
  expect(fetchProjectSpy).toHaveBeenCalledTimes(1);
193
237
  expect(fetchProjectSpy).toHaveBeenCalledWith(args.derivedAccountId, promptProjectName);
194
238
  });
195
239
  it('should log an error and exit when latest build is not defined', async () => {
196
- fetchProjectSpy.mockReturnValue(mockHubSpotHttpResponse({}));
197
- await projectDeployCommand.handler(args);
198
- expect(logger.error).toHaveBeenCalledTimes(1);
199
- expect(logger.error).toHaveBeenCalledWith('Deploy error: no builds for this project were found.');
240
+ fetchProjectSpy.mockReturnValue((0, testUtils_1.mockHubSpotHttpResponse)({}));
241
+ await deploy_1.default.handler(args);
242
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
243
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith('Deploy error: no builds for this project were found.');
200
244
  expect(processExitSpy).toHaveBeenCalledTimes(1);
201
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
245
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
202
246
  });
203
247
  it('should log an error and exit when buildId option is not a valid build', async () => {
204
- args.buildId = exampleProject.latestBuild.buildId + 1;
205
- await projectDeployCommand.handler(args);
206
- expect(uiLinkSpy).toHaveBeenCalledTimes(1);
207
- expect(uiLinkSpy).toHaveBeenCalledWith(viewProjectsInHubSpot, projectDetailUrl);
208
- expect(logger.error).toHaveBeenCalledTimes(1);
209
- expect(logger.error).toHaveBeenCalledWith(`Build ${args.buildId} does not exist for project ${projectNameFromPrompt}. ${viewProjectsInHubSpot}`);
248
+ args.buildId = exampleProject_json_1.default.latestBuild.buildId + 1;
249
+ await deploy_1.default.handler(args);
250
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
251
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith(expect.stringMatching(`Build ${args.buildId} does not exist for project`));
210
252
  expect(processExitSpy).toHaveBeenCalledTimes(1);
211
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
253
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
212
254
  });
213
255
  it('should log an error and exit when buildId option is already deployed', async () => {
214
- args.buildId = exampleProject.deployedBuildId;
215
- await projectDeployCommand.handler(args);
216
- expect(uiLinkSpy).toHaveBeenCalledTimes(1);
217
- expect(uiLinkSpy).toHaveBeenCalledWith(viewProjectsInHubSpot, projectDetailUrl);
218
- expect(logger.error).toHaveBeenCalledTimes(1);
219
- expect(logger.error).toHaveBeenCalledWith(`Build ${args.buildId} is already deployed. ${viewProjectsInHubSpot}`);
256
+ args.buildId = exampleProject_json_1.default.deployedBuildId;
257
+ await deploy_1.default.handler(args);
258
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
259
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith(expect.stringMatching(`Build ${args.buildId} is already deployed. View project builds in HubSpot.`));
220
260
  expect(processExitSpy).toHaveBeenCalledTimes(1);
221
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
261
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
222
262
  });
223
263
  it('should prompt for build id if no option is provided', async () => {
224
264
  delete args.buildId;
225
265
  promptUserSpy.mockResolvedValue({
226
- buildId: exampleProject.latestBuild.buildId,
266
+ buildId: exampleProject_json_1.default.latestBuild.buildId,
227
267
  });
228
- await projectDeployCommand.handler(args);
268
+ await deploy_1.default.handler(args);
229
269
  expect(promptUserSpy).toHaveBeenCalledTimes(1);
230
270
  });
231
271
  it('should log an error and exit if the prompted value is invalid', async () => {
232
272
  delete args.buildId;
233
273
  promptUserSpy.mockResolvedValue({});
234
- await projectDeployCommand.handler(args);
274
+ await deploy_1.default.handler(args);
235
275
  expect(promptUserSpy).toHaveBeenCalledTimes(1);
236
- expect(logger.error).toHaveBeenCalledTimes(1);
237
- expect(logger.error).toHaveBeenCalledWith('You must specify a build to deploy');
276
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
277
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith('You must specify a build to deploy');
238
278
  expect(processExitSpy).toHaveBeenCalledTimes(1);
239
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
279
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
240
280
  });
241
281
  it('should deploy the project', async () => {
242
- await projectDeployCommand.handler(args);
282
+ await deploy_1.default.handler(args);
243
283
  expect(deployProjectSpy).toHaveBeenCalledTimes(1);
244
284
  expect(deployProjectSpy).toHaveBeenCalledWith(args.derivedAccountId, projectNameFromPrompt, args.buildId, undefined, undefined);
245
285
  });
246
286
  it('should log an error and exit when the deploy fails', async () => {
247
287
  // @ts-expect-error Testing an edge case where the response is empty
248
288
  deployProjectSpy.mockResolvedValue({});
249
- await projectDeployCommand.handler(args);
250
- expect(logger.error).toHaveBeenCalledTimes(1);
251
- expect(logger.error).toHaveBeenCalledWith(`Deploy error: an unknown error occurred.`);
289
+ await deploy_1.default.handler(args);
290
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
291
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith(`Deploy error: an unknown error occurred.`);
252
292
  expect(processExitSpy).toHaveBeenCalledTimes(1);
253
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
293
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
254
294
  });
255
295
  it('should poll the deploy status', async () => {
256
- await projectDeployCommand.handler(args);
257
- expect(pollDeployStatus).toHaveBeenCalledTimes(1);
258
- expect(pollDeployStatus).toHaveBeenCalledWith(args.derivedAccountId, projectNameFromPrompt, deployDetails.id, args.buildId);
296
+ await deploy_1.default.handler(args);
297
+ expect(buildAndDeploy_1.pollDeployStatus).toHaveBeenCalledTimes(1);
298
+ expect(buildAndDeploy_1.pollDeployStatus).toHaveBeenCalledWith(args.derivedAccountId, projectNameFromPrompt, deployDetails.id, args.buildId);
259
299
  });
260
300
  it('log an error and exit if a 404 status is returned', async () => {
261
301
  const commandReference = 'hs project upload';
@@ -263,44 +303,44 @@ describe('commands/project/deploy', () => {
263
303
  uiCommandReferenceSpy.mockReturnValueOnce(commandReference);
264
304
  uiAccountDescriptionSpy.mockReturnValueOnce(accountDescription);
265
305
  fetchProjectSpy.mockImplementation(() => {
266
- throw mockHubSpotHttpError('OH NO', {
267
- status: HttpStatusCode.NotFound,
306
+ throw (0, testUtils_1.mockHubSpotHttpError)('OH NO', {
307
+ status: axios_1.HttpStatusCode.NotFound,
268
308
  data: {},
269
309
  });
270
310
  });
271
- await projectDeployCommand.handler(args);
272
- expect(logger.error).toHaveBeenCalledTimes(1);
273
- expect(logger.error).toHaveBeenCalledWith(`The project ${chalk.bold(projectNameFromPrompt)} does not exist in account ${accountDescription}. Run ${commandReference} to upload your project files to HubSpot.`);
311
+ await deploy_1.default.handler(args);
312
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
313
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith(`The project ${chalk_1.default.bold(projectNameFromPrompt)} does not exist in account ${accountDescription}. Run ${commandReference} to upload your project files to HubSpot.`);
274
314
  expect(processExitSpy).toHaveBeenCalledTimes(1);
275
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
315
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
276
316
  });
277
317
  it('log an error and exit if a 400 status is returned', async () => {
278
318
  const errorMessage = 'Something bad happened';
279
319
  fetchProjectSpy.mockImplementation(() => {
280
- throw mockHubSpotHttpError(errorMessage, {
281
- status: HttpStatusCode.BadRequest,
320
+ throw (0, testUtils_1.mockHubSpotHttpError)(errorMessage, {
321
+ status: axios_1.HttpStatusCode.BadRequest,
282
322
  data: {},
283
323
  });
284
324
  });
285
- await projectDeployCommand.handler(args);
286
- expect(logger.error).toHaveBeenCalledTimes(1);
287
- expect(logger.error).toHaveBeenCalledWith('The request was bad.');
325
+ await deploy_1.default.handler(args);
326
+ expect(logger_2.uiLogger.error).toHaveBeenCalledTimes(1);
327
+ expect(logger_2.uiLogger.error).toHaveBeenCalledWith('The request was bad.');
288
328
  expect(processExitSpy).toHaveBeenCalledTimes(1);
289
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
329
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
290
330
  });
291
331
  it('log an error another unexpected status code is returned', async () => {
292
332
  const errorMessage = 'Something bad happened';
293
333
  fetchProjectSpy.mockImplementation(() => {
294
- throw mockHubSpotHttpError(errorMessage, {
295
- status: HttpStatusCode.MethodNotAllowed,
334
+ throw (0, testUtils_1.mockHubSpotHttpError)(errorMessage, {
335
+ status: axios_1.HttpStatusCode.MethodNotAllowed,
296
336
  data: {},
297
337
  });
298
338
  });
299
- await projectDeployCommand.handler(args);
300
- expect(logger.error).toHaveBeenCalledTimes(1);
301
- expect(logger.error).toHaveBeenCalledWith(`The request for 'project deploy' in account ${args.derivedAccountId} failed due to a client error.`);
339
+ await deploy_1.default.handler(args);
340
+ expect(logger_1.logger.error).toHaveBeenCalledTimes(1);
341
+ expect(logger_1.logger.error).toHaveBeenCalledWith(`The request for 'project deploy' in account ${args.derivedAccountId} failed due to a client error.`);
302
342
  expect(processExitSpy).toHaveBeenCalledTimes(1);
303
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
343
+ expect(processExitSpy).toHaveBeenCalledWith(exitCodes_1.EXIT_CODES.ERROR);
304
344
  });
305
345
  });
306
346
  });