@hubspot/cli 8.3.0 → 8.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/bin/cli.js +2 -0
  2. package/commands/account/auth.js +12 -22
  3. package/commands/account/clean.js +5 -6
  4. package/commands/account/createOverride.js +7 -7
  5. package/commands/account/info.js +2 -1
  6. package/commands/account/list.js +3 -5
  7. package/commands/account/remove.js +2 -3
  8. package/commands/account/removeOverride.js +8 -10
  9. package/commands/account/rename.js +5 -6
  10. package/commands/account/use.js +8 -19
  11. package/commands/api.d.ts +10 -0
  12. package/commands/api.js +164 -0
  13. package/commands/app/migrate.js +8 -8
  14. package/commands/app/secret/add.js +6 -7
  15. package/commands/app/secret/delete.js +9 -10
  16. package/commands/app/secret/list.js +6 -7
  17. package/commands/app/secret/update.js +8 -9
  18. package/commands/auth.js +12 -12
  19. package/commands/cms/app/create.js +9 -5
  20. package/commands/cms/convertFields.js +8 -8
  21. package/commands/cms/delete.js +2 -3
  22. package/commands/cms/fetch.js +7 -7
  23. package/commands/cms/function/create.js +9 -5
  24. package/commands/cms/function/deploy.js +2 -3
  25. package/commands/cms/function/list.js +11 -7
  26. package/commands/cms/function/logs.js +17 -23
  27. package/commands/cms/function/server.js +2 -3
  28. package/commands/cms/getReactModule.js +7 -8
  29. package/commands/cms/lighthouseScore.js +25 -24
  30. package/commands/cms/lint.js +4 -5
  31. package/commands/cms/list.js +5 -6
  32. package/commands/cms/module/create.js +9 -5
  33. package/commands/cms/module/marketplace-validate.js +7 -8
  34. package/commands/cms/mv.js +2 -3
  35. package/commands/cms/template/create.js +10 -6
  36. package/commands/cms/theme/create.js +5 -5
  37. package/commands/cms/theme/generate-selectors.js +5 -4
  38. package/commands/cms/theme/marketplace-validate.js +8 -9
  39. package/commands/cms/theme/preview.js +16 -8
  40. package/commands/cms/upload.js +15 -12
  41. package/commands/cms/watch.js +5 -5
  42. package/commands/cms/webpack/create.js +5 -5
  43. package/commands/completion.js +3 -5
  44. package/commands/config/migrate.js +6 -7
  45. package/commands/config/set.js +5 -6
  46. package/commands/customObject/create.js +4 -5
  47. package/commands/customObject/createSchema.js +4 -5
  48. package/commands/customObject/deleteSchema.js +4 -5
  49. package/commands/customObject/fetchAllSchemas.js +2 -3
  50. package/commands/customObject/fetchSchema.js +2 -3
  51. package/commands/customObject/listSchemas.js +2 -3
  52. package/commands/customObject/updateSchema.js +4 -5
  53. package/commands/doctor.js +8 -8
  54. package/commands/feedback.js +6 -4
  55. package/commands/filemanager/fetch.js +5 -6
  56. package/commands/filemanager/upload.js +5 -5
  57. package/commands/getStarted.js +14 -16
  58. package/commands/hubdb/clear.js +5 -6
  59. package/commands/hubdb/create.js +4 -5
  60. package/commands/hubdb/delete.js +8 -9
  61. package/commands/hubdb/fetch.js +5 -6
  62. package/commands/hubdb/list.js +16 -14
  63. package/commands/init.js +14 -17
  64. package/commands/mcp/setup.js +5 -6
  65. package/commands/mcp/start.js +2 -3
  66. package/commands/open.js +4 -5
  67. package/commands/project/add.js +10 -5
  68. package/commands/project/create.js +10 -10
  69. package/commands/project/delete.d.ts +7 -0
  70. package/commands/project/delete.js +74 -0
  71. package/commands/project/deploy.js +36 -34
  72. package/commands/project/dev/deprecatedFlow.js +42 -15
  73. package/commands/project/dev/index.d.ts +3 -3
  74. package/commands/project/dev/index.js +24 -30
  75. package/commands/project/dev/unifiedFlow.js +37 -14
  76. package/commands/project/download.js +10 -11
  77. package/commands/project/info.d.ts +4 -0
  78. package/commands/project/info.js +67 -0
  79. package/commands/project/installDeps.js +9 -6
  80. package/commands/project/lint.js +11 -8
  81. package/commands/project/list.js +14 -14
  82. package/commands/project/listBuilds.js +8 -6
  83. package/commands/project/logs.js +5 -6
  84. package/commands/project/migrate.js +8 -8
  85. package/commands/project/open.js +5 -6
  86. package/commands/project/profile/add.js +12 -8
  87. package/commands/project/profile/delete.js +15 -11
  88. package/commands/project/updateDeps.js +9 -6
  89. package/commands/project/upload.js +31 -17
  90. package/commands/project/validate.js +11 -11
  91. package/commands/project/watch.js +20 -20
  92. package/commands/project.js +4 -0
  93. package/commands/sandbox/create.js +15 -15
  94. package/commands/sandbox/delete.js +13 -14
  95. package/commands/secret/addSecret.js +6 -7
  96. package/commands/secret/deleteSecret.js +5 -6
  97. package/commands/secret/listSecret.js +2 -3
  98. package/commands/secret/updateSecret.js +4 -5
  99. package/commands/testAccount/create.d.ts +1 -1
  100. package/commands/testAccount/create.js +20 -16
  101. package/commands/testAccount/createConfig.js +7 -8
  102. package/commands/testAccount/delete.js +27 -18
  103. package/commands/testAccount/importData.js +6 -7
  104. package/commands/upgrade.js +9 -10
  105. package/lang/en.d.ts +114 -5
  106. package/lang/en.js +111 -5
  107. package/lib/accountAuth.js +2 -2
  108. package/lib/buildAccount.js +3 -3
  109. package/lib/doctor/Diagnosis.js +5 -5
  110. package/lib/errorHandlers/index.js +4 -3
  111. package/lib/errorHandlers/suppressError.js +4 -0
  112. package/lib/errors/PromptExitError.d.ts +4 -2
  113. package/lib/errors/PromptExitError.js +3 -0
  114. package/lib/process.d.ts +1 -1
  115. package/lib/process.js +10 -3
  116. package/lib/projects/delete.d.ts +13 -0
  117. package/lib/projects/delete.js +193 -0
  118. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  119. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  120. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  121. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  122. package/lib/projects/localDev/DevSessionManager.js +31 -19
  123. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  124. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  125. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  126. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  127. package/lib/projects/localDev/LocalDevState.js +3 -1
  128. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  129. package/lib/projects/localDev/helpers/account.js +16 -19
  130. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  131. package/lib/projects/localDev/helpers/process.js +4 -10
  132. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/project.js +31 -15
  134. package/lib/projects/projectInfo.d.ts +5 -0
  135. package/lib/projects/projectInfo.js +82 -0
  136. package/lib/projects/projectProfiles.d.ts +1 -2
  137. package/lib/projects/projectProfiles.js +5 -17
  138. package/lib/prompts/createApiSamplePrompt.js +4 -0
  139. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  140. package/lib/prompts/projectProfilePrompt.js +46 -0
  141. package/lib/prompts/promptUtils.js +3 -2
  142. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  143. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  144. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  145. package/lib/theme/cmsDevServerProcess.js +7 -6
  146. package/lib/ui/SpinniesManager.d.ts +1 -0
  147. package/lib/ui/SpinniesManager.js +20 -6
  148. package/lib/ui/spinniesUtils.d.ts +0 -1
  149. package/lib/ui/spinniesUtils.js +6 -16
  150. package/lib/usageTracking.d.ts +3 -4
  151. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  152. package/lib/yargs/makeYargsBuilder.js +33 -0
  153. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  154. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  155. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  156. package/lib/yargs/strictEnforceBoolean.js +13 -0
  157. package/lib/yargsUtils.d.ts +3 -16
  158. package/lib/yargsUtils.js +3 -48
  159. package/package.json +9 -4
  160. package/types/LocalDev.d.ts +5 -0
  161. package/types/Projects.d.ts +19 -0
  162. package/types/Yargs.d.ts +18 -1
  163. package/api/__tests__/migrate.test.d.ts +0 -1
  164. package/api/__tests__/migrate.test.js +0 -199
  165. package/commands/__tests__/account.test.d.ts +0 -1
  166. package/commands/__tests__/account.test.js +0 -69
  167. package/commands/__tests__/auth.test.d.ts +0 -1
  168. package/commands/__tests__/auth.test.js +0 -43
  169. package/commands/__tests__/cms.test.d.ts +0 -1
  170. package/commands/__tests__/cms.test.js +0 -87
  171. package/commands/__tests__/config.test.d.ts +0 -1
  172. package/commands/__tests__/config.test.js +0 -44
  173. package/commands/__tests__/customObject.test.d.ts +0 -1
  174. package/commands/__tests__/customObject.test.js +0 -68
  175. package/commands/__tests__/doctor.test.d.ts +0 -1
  176. package/commands/__tests__/doctor.test.js +0 -132
  177. package/commands/__tests__/feedback.test.d.ts +0 -1
  178. package/commands/__tests__/feedback.test.js +0 -24
  179. package/commands/__tests__/filemanager.test.d.ts +0 -1
  180. package/commands/__tests__/filemanager.test.js +0 -45
  181. package/commands/__tests__/getStarted.test.d.ts +0 -1
  182. package/commands/__tests__/getStarted.test.js +0 -173
  183. package/commands/__tests__/hubdb.test.d.ts +0 -1
  184. package/commands/__tests__/hubdb.test.js +0 -50
  185. package/commands/__tests__/init.test.d.ts +0 -1
  186. package/commands/__tests__/init.test.js +0 -42
  187. package/commands/__tests__/mcp.test.d.ts +0 -1
  188. package/commands/__tests__/mcp.test.js +0 -46
  189. package/commands/__tests__/open.test.d.ts +0 -1
  190. package/commands/__tests__/open.test.js +0 -58
  191. package/commands/__tests__/project.test.d.ts +0 -1
  192. package/commands/__tests__/project.test.js +0 -125
  193. package/commands/__tests__/sandbox.test.d.ts +0 -1
  194. package/commands/__tests__/sandbox.test.js +0 -44
  195. package/commands/__tests__/secret.test.d.ts +0 -1
  196. package/commands/__tests__/secret.test.js +0 -49
  197. package/commands/__tests__/testAccount.test.d.ts +0 -1
  198. package/commands/__tests__/testAccount.test.js +0 -57
  199. package/commands/__tests__/upgrade.test.d.ts +0 -1
  200. package/commands/__tests__/upgrade.test.js +0 -309
  201. package/commands/account/__tests__/auth.test.d.ts +0 -1
  202. package/commands/account/__tests__/auth.test.js +0 -206
  203. package/commands/account/__tests__/clean.test.d.ts +0 -1
  204. package/commands/account/__tests__/clean.test.js +0 -28
  205. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  206. package/commands/account/__tests__/createOverride.test.js +0 -32
  207. package/commands/account/__tests__/info.test.d.ts +0 -1
  208. package/commands/account/__tests__/info.test.js +0 -28
  209. package/commands/account/__tests__/list.test.d.ts +0 -1
  210. package/commands/account/__tests__/list.test.js +0 -153
  211. package/commands/account/__tests__/remove.test.d.ts +0 -1
  212. package/commands/account/__tests__/remove.test.js +0 -36
  213. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  214. package/commands/account/__tests__/removeOverride.js +0 -25
  215. package/commands/account/__tests__/rename.test.d.ts +0 -1
  216. package/commands/account/__tests__/rename.test.js +0 -82
  217. package/commands/account/__tests__/use.test.d.ts +0 -1
  218. package/commands/account/__tests__/use.test.js +0 -170
  219. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  220. package/commands/app/__tests__/migrate.test.js +0 -111
  221. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  222. package/commands/app/secret/__tests__/add.test.js +0 -140
  223. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  224. package/commands/app/secret/__tests__/delete.test.js +0 -28
  225. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  226. package/commands/app/secret/__tests__/list.test.js +0 -25
  227. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  228. package/commands/app/secret/__tests__/update.test.js +0 -28
  229. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  230. package/commands/cms/__tests__/delete.test.js +0 -39
  231. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  232. package/commands/cms/__tests__/fetch.test.js +0 -156
  233. package/commands/cms/__tests__/function.test.d.ts +0 -1
  234. package/commands/cms/__tests__/function.test.js +0 -50
  235. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  236. package/commands/cms/__tests__/lint.test.js +0 -33
  237. package/commands/cms/__tests__/list.test.d.ts +0 -1
  238. package/commands/cms/__tests__/list.test.js +0 -42
  239. package/commands/cms/__tests__/module.test.d.ts +0 -1
  240. package/commands/cms/__tests__/module.test.js +0 -45
  241. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  242. package/commands/cms/__tests__/mv.test.js +0 -46
  243. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  244. package/commands/cms/__tests__/theme.test.js +0 -54
  245. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  246. package/commands/cms/__tests__/upload.test.js +0 -312
  247. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  248. package/commands/cms/__tests__/watch.test.js +0 -204
  249. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  250. package/commands/cms/function/__tests__/logs.test.js +0 -70
  251. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  252. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  253. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  254. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  255. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  256. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  257. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  258. package/commands/customObject/__tests__/create.test.js +0 -40
  259. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  260. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  261. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  262. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  263. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  264. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  265. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  267. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  269. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  271. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  272. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  273. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  274. package/commands/filemanager/__tests__/upload.test.js +0 -191
  275. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  276. package/commands/hubdb/__tests__/clear.test.js +0 -28
  277. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  278. package/commands/hubdb/__tests__/create.test.js +0 -28
  279. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  280. package/commands/hubdb/__tests__/delete.test.js +0 -28
  281. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  282. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  283. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/list.test.js +0 -88
  285. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  286. package/commands/mcp/__tests__/setup.test.js +0 -26
  287. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  288. package/commands/mcp/__tests__/start.test.js +0 -144
  289. package/commands/project/__tests__/add.test.d.ts +0 -1
  290. package/commands/project/__tests__/add.test.js +0 -107
  291. package/commands/project/__tests__/create.test.d.ts +0 -1
  292. package/commands/project/__tests__/create.test.js +0 -97
  293. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  294. package/commands/project/__tests__/deploy.test.js +0 -307
  295. package/commands/project/__tests__/dev.test.d.ts +0 -1
  296. package/commands/project/__tests__/dev.test.js +0 -273
  297. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  298. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  299. package/commands/project/__tests__/download.test.d.ts +0 -1
  300. package/commands/project/__tests__/download.test.js +0 -39
  301. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  302. package/commands/project/__tests__/installDeps.test.js +0 -140
  303. package/commands/project/__tests__/lint.test.d.ts +0 -1
  304. package/commands/project/__tests__/lint.test.js +0 -704
  305. package/commands/project/__tests__/list.test.d.ts +0 -1
  306. package/commands/project/__tests__/list.test.js +0 -31
  307. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  308. package/commands/project/__tests__/listBuilds.test.js +0 -38
  309. package/commands/project/__tests__/logs.test.d.ts +0 -1
  310. package/commands/project/__tests__/logs.test.js +0 -202
  311. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  312. package/commands/project/__tests__/migrate.test.js +0 -106
  313. package/commands/project/__tests__/open.test.d.ts +0 -1
  314. package/commands/project/__tests__/open.test.js +0 -39
  315. package/commands/project/__tests__/profile.test.d.ts +0 -1
  316. package/commands/project/__tests__/profile.test.js +0 -42
  317. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  318. package/commands/project/__tests__/updateDeps.test.js +0 -140
  319. package/commands/project/__tests__/upload.test.d.ts +0 -1
  320. package/commands/project/__tests__/upload.test.js +0 -234
  321. package/commands/project/__tests__/validate.test.d.ts +0 -1
  322. package/commands/project/__tests__/validate.test.js +0 -381
  323. package/commands/project/__tests__/watch.test.d.ts +0 -1
  324. package/commands/project/__tests__/watch.test.js +0 -35
  325. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  326. package/commands/sandbox/__tests__/create.test.js +0 -198
  327. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  328. package/commands/sandbox/__tests__/delete.test.js +0 -31
  329. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  330. package/commands/secret/__tests__/addSecret.test.js +0 -162
  331. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  332. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  333. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  334. package/commands/secret/__tests__/listSecret.test.js +0 -29
  335. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  336. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  337. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  338. package/commands/testAccount/__tests__/create.test.js +0 -106
  339. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  340. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  341. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  342. package/commands/testAccount/__tests__/delete.test.js +0 -29
  343. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  344. package/commands/testAccount/__tests__/importData.test.js +0 -92
  345. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  346. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  347. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  348. package/lib/__tests__/accountAuth.test.js +0 -258
  349. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  350. package/lib/__tests__/accountTypes.test.js +0 -98
  351. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  352. package/lib/__tests__/buildAccount.test.js +0 -211
  353. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  354. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  355. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  356. package/lib/__tests__/commandSuggestion.test.js +0 -121
  357. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  358. package/lib/__tests__/commonOpts.test.js +0 -80
  359. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  360. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  361. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  362. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  363. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  364. package/lib/__tests__/hasFeature.test.js +0 -167
  365. package/lib/__tests__/http.test.d.ts +0 -1
  366. package/lib/__tests__/http.test.js +0 -40
  367. package/lib/__tests__/importData.test.d.ts +0 -1
  368. package/lib/__tests__/importData.test.js +0 -98
  369. package/lib/__tests__/npmCli.test.d.ts +0 -1
  370. package/lib/__tests__/npmCli.test.js +0 -84
  371. package/lib/__tests__/oauth.test.d.ts +0 -1
  372. package/lib/__tests__/oauth.test.js +0 -109
  373. package/lib/__tests__/parsing.test.d.ts +0 -1
  374. package/lib/__tests__/parsing.test.js +0 -34
  375. package/lib/__tests__/polling.test.d.ts +0 -1
  376. package/lib/__tests__/polling.test.js +0 -76
  377. package/lib/__tests__/process.test.d.ts +0 -1
  378. package/lib/__tests__/process.test.js +0 -89
  379. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  380. package/lib/__tests__/sandboxes.test.js +0 -128
  381. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  382. package/lib/__tests__/serverlessLogs.test.js +0 -163
  383. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  384. package/lib/__tests__/usageTracking.test.js +0 -197
  385. package/lib/__tests__/validation.test.d.ts +0 -1
  386. package/lib/__tests__/validation.test.js +0 -143
  387. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  388. package/lib/__tests__/yargsUtils.test.js +0 -124
  389. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  390. package/lib/app/__tests__/migrate.test.js +0 -638
  391. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  392. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  393. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  394. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  395. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  396. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  397. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  398. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  399. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  400. package/lib/mcp/__tests__/setup.test.js +0 -523
  401. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  402. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  403. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  404. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  405. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  406. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  407. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  408. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  409. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  410. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  411. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  413. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  414. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  415. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  416. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  417. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  418. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  419. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  420. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  421. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  422. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  423. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  424. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  425. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  426. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  427. package/lib/projects/__tests__/components.test.d.ts +0 -1
  428. package/lib/projects/__tests__/components.test.js +0 -440
  429. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  430. package/lib/projects/__tests__/deploy.test.js +0 -231
  431. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  432. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  433. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  434. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  435. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  436. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  437. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  438. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  439. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  440. package/lib/projects/__tests__/projects.test.js +0 -58
  441. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  442. package/lib/projects/__tests__/structure.test.js +0 -210
  443. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  444. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  445. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  446. package/lib/projects/__tests__/upload.test.js +0 -183
  447. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  448. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  449. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  450. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  451. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  452. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  453. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  454. package/lib/projects/create/__tests__/v2.test.js +0 -257
  455. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  456. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  457. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  458. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  459. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  460. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  461. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  462. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  463. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  464. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  465. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  466. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  467. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  469. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  471. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  472. package/lib/theme/__tests__/migrate.test.js +0 -247
  473. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  474. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  475. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  476. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  477. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  478. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  479. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  480. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  481. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  482. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  483. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  484. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  485. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  486. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  487. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  488. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  489. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  490. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  491. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  492. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  493. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  494. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  495. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  496. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  497. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  498. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  499. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  500. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  501. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  503. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  505. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  507. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  509. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  511. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  513. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  515. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  517. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  518. package/mcp-server/utils/__tests__/command.test.js +0 -275
  519. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  520. package/mcp-server/utils/__tests__/content.test.js +0 -164
  521. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  522. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,198 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addTestingOptions, } from '../../../lib/commonOpts.js';
3
- import sandboxCreateCommand from '../create.js';
4
- import * as sandboxPrompts from '../../../lib/prompts/sandboxesPrompt.js';
5
- import * as accountNamePrompt from '../../../lib/prompts/accountNamePrompt.js';
6
- import * as configUtils from '@hubspot/local-dev-lib/config';
7
- import * as promptUtils from '../../../lib/prompts/promptUtils.js';
8
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
9
- import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
10
- import * as buildAccount from '../../../lib/buildAccount.js';
11
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
12
- import { uiLogger } from '../../../lib/ui/logger.js';
13
- import * as sandboxesLib from '../../../lib/sandboxes.js';
14
- import { vi } from 'vitest';
15
- import { ENVIRONMENTS } from '@hubspot/local-dev-lib/constants/environments';
16
- vi.mock('@hubspot/local-dev-lib/config');
17
- vi.mock('../../../lib/commonOpts');
18
- vi.mock('../../../lib/hasFeature');
19
- vi.mock('../../../lib/prompts/sandboxesPrompt');
20
- vi.mock('../../../lib/prompts/promptUtils');
21
- vi.mock('../../../lib/prompts/accountNamePrompt');
22
- vi.mock('../../../lib/sandboxes');
23
- vi.mock('../../../lib/buildAccount');
24
- vi.mock('../../../lib/sandboxes');
25
- vi.mock('../../../lib/commonOpts');
26
- const getConfigAccountByIdSpy = vi.spyOn(configUtils, 'getConfigAccountById');
27
- const promptUserSpy = vi.spyOn(promptUtils, 'promptUser');
28
- const sandboxTypePromptSpy = vi.spyOn(sandboxPrompts, 'sandboxTypePrompt');
29
- const processExitSpy = vi.spyOn(process, 'exit');
30
- const buildV2SandboxSpy = vi.spyOn(buildAccount, 'buildV2Sandbox');
31
- const getConfigAccountEnvironmentSpy = vi.spyOn(configUtils, 'getConfigAccountEnvironment');
32
- const validateSandboxUsageLimitsSpy = vi.spyOn(sandboxesLib, 'validateSandboxUsageLimits');
33
- const hubspotAccountNamePromptSpy = vi.spyOn(accountNamePrompt, 'hubspotAccountNamePrompt');
34
- describe('commands/sandbox/create', () => {
35
- const yargsMock = yargs;
36
- describe('command', () => {
37
- it('should have the correct command structure', () => {
38
- expect(sandboxCreateCommand.command).toEqual('create');
39
- });
40
- });
41
- describe('describe', () => {
42
- it('should provide a description', () => {
43
- expect(sandboxCreateCommand.describe).toBeDefined();
44
- });
45
- });
46
- describe('builder', () => {
47
- it('should support the correct options', () => {
48
- sandboxCreateCommand.builder(yargsMock);
49
- expect(yargsMock.example).toHaveBeenCalledTimes(1);
50
- expect(addTestingOptions).toHaveBeenCalledTimes(1);
51
- expect(addTestingOptions).toHaveBeenCalledWith(yargsMock);
52
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
53
- expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
54
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
55
- expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
56
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
57
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
58
- });
59
- });
60
- describe('handler', () => {
61
- let args;
62
- const sandboxNameFromPrompt = 'sandbox name from prompt';
63
- const mockSandbox = {
64
- sandboxHubId: 56789,
65
- parentHubId: 123456,
66
- createdAt: '2025-01-01',
67
- type: 'DEVELOPER',
68
- archived: false,
69
- version: 'V1',
70
- status: 'PENDING',
71
- name: 'Test Sandbox',
72
- domain: 'test-sandbox.hubspot.com',
73
- createdByUser: {
74
- userId: 11111,
75
- email: 'test@test.com',
76
- firstName: 'Test',
77
- lastName: 'User',
78
- },
79
- };
80
- beforeEach(() => {
81
- args = {
82
- derivedAccountId: 1234567890,
83
- };
84
- getConfigAccountByIdSpy.mockReturnValue({
85
- accountId: 1234567890,
86
- accountType: HUBSPOT_ACCOUNT_TYPES.STANDARD,
87
- env: 'prod',
88
- });
89
- hubspotAccountNamePromptSpy.mockResolvedValue({
90
- name: sandboxNameFromPrompt,
91
- });
92
- sandboxTypePromptSpy.mockResolvedValue({
93
- type: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
94
- });
95
- promptUserSpy.mockResolvedValue({
96
- contactRecordsSyncPrompt: false,
97
- });
98
- validateSandboxUsageLimitsSpy.mockResolvedValue(undefined);
99
- getConfigAccountEnvironmentSpy.mockReturnValue(ENVIRONMENTS.PROD);
100
- buildV2SandboxSpy.mockResolvedValue({
101
- sandbox: { ...mockSandbox, version: 'V2' },
102
- });
103
- // Spy on process.exit so our tests don't close when it's called
104
- // @ts-expect-error Doesn't match the actual signature because then the linter complains about unused variables
105
- processExitSpy.mockImplementation(() => { });
106
- });
107
- it('should load the account config for the correct account id', async () => {
108
- await sandboxCreateCommand.handler(args);
109
- expect(getConfigAccountByIdSpy).toHaveBeenCalledTimes(2); // 1st is for parent account, 2nd is for sandbox account
110
- expect(getConfigAccountByIdSpy).toHaveBeenCalledWith(args.derivedAccountId);
111
- });
112
- it('should track the command usage', async () => {
113
- await sandboxCreateCommand.handler(args);
114
- expect(trackCommandUsage).toHaveBeenCalledTimes(1);
115
- expect(trackCommandUsage).toHaveBeenCalledWith('sandbox-create', {}, args.derivedAccountId);
116
- });
117
- it('should validate sandbox usage limits', async () => {
118
- await sandboxCreateCommand.handler(args);
119
- expect(validateSandboxUsageLimitsSpy).toHaveBeenCalledTimes(1);
120
- expect(validateSandboxUsageLimitsSpy).toHaveBeenCalledWith({
121
- accountId: 1234567890,
122
- accountType: HUBSPOT_ACCOUNT_TYPES.STANDARD,
123
- env: 'prod',
124
- }, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, 'prod');
125
- });
126
- it('should prompt for the sandbox type if no type is provided in options', async () => {
127
- await sandboxCreateCommand.handler(args);
128
- expect(sandboxTypePromptSpy).toHaveBeenCalledTimes(1);
129
- });
130
- it('should not prompt for the sandbox type if type is provided in options', async () => {
131
- await sandboxCreateCommand.handler({
132
- ...args,
133
- type: 'developer',
134
- });
135
- expect(sandboxTypePromptSpy).toHaveBeenCalledTimes(0);
136
- });
137
- it('should not prompt for contact records sync if the sandbox type is developer', async () => {
138
- await sandboxCreateCommand.handler({
139
- ...args,
140
- type: 'developer',
141
- });
142
- expect(promptUserSpy).toHaveBeenCalledTimes(0);
143
- });
144
- it('should prompt for the contact records sync if the sandbox type is standard', async () => {
145
- await sandboxCreateCommand.handler({
146
- ...args,
147
- type: 'standard',
148
- });
149
- expect(promptUserSpy).toHaveBeenCalledTimes(1);
150
- });
151
- it('should build a v2 sandbox', async () => {
152
- await sandboxCreateCommand.handler(args);
153
- expect(buildV2SandboxSpy).toHaveBeenCalledTimes(1);
154
- expect(buildV2SandboxSpy).toHaveBeenCalledWith(sandboxNameFromPrompt, {
155
- accountId: 1234567890,
156
- accountType: HUBSPOT_ACCOUNT_TYPES.STANDARD,
157
- env: 'prod',
158
- }, HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX, false, // syncObjectRecords
159
- 'prod', undefined // force
160
- );
161
- });
162
- it('should log an error and exit when force is used and invalid sandbox type is provided', async () => {
163
- await sandboxCreateCommand.handler({
164
- ...args,
165
- name: sandboxNameFromPrompt,
166
- type: 'invalid',
167
- force: true,
168
- });
169
- expect(uiLogger.error).toHaveBeenCalledTimes(1);
170
- expect(processExitSpy).toHaveBeenCalled();
171
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
172
- });
173
- it('should log an error and exit when force is used and no sandbox name is provided', async () => {
174
- await sandboxCreateCommand.handler({
175
- ...args,
176
- type: 'standard',
177
- force: true,
178
- });
179
- expect(uiLogger.error).toHaveBeenCalled();
180
- expect(processExitSpy).toHaveBeenCalled();
181
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
182
- });
183
- it('should error out if the default account type is not standard', async () => {
184
- getConfigAccountByIdSpy.mockReturnValue({
185
- accountId: 1234567890,
186
- accountType: HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX,
187
- env: 'prod',
188
- });
189
- await sandboxCreateCommand.handler({
190
- ...args,
191
- type: 'developer',
192
- });
193
- expect(uiLogger.error).toHaveBeenCalled();
194
- expect(processExitSpy).toHaveBeenCalled();
195
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
196
- });
197
- });
198
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,31 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addTestingOptions, } from '../../../lib/commonOpts.js';
3
- import sandboxDeleteCommand from '../delete.js';
4
- vi.mock('../../../lib/commonOpts');
5
- describe('commands/sandbox/delete', () => {
6
- const yargsMock = yargs;
7
- describe('command', () => {
8
- it('should have the correct command structure', () => {
9
- expect(sandboxDeleteCommand.command).toEqual('delete');
10
- });
11
- });
12
- describe('describe', () => {
13
- it('should provide a description', () => {
14
- expect(sandboxDeleteCommand.describe).toBeDefined();
15
- });
16
- });
17
- describe('builder', () => {
18
- it('should support the correct options', () => {
19
- sandboxDeleteCommand.builder(yargsMock);
20
- expect(yargsMock.example).toHaveBeenCalledTimes(1);
21
- expect(addTestingOptions).toHaveBeenCalledTimes(1);
22
- expect(addTestingOptions).toHaveBeenCalledWith(yargsMock);
23
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
24
- expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
25
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
26
- expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
27
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
28
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
29
- });
30
- });
31
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,162 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addSecret, fetchSecrets } from '@hubspot/local-dev-lib/api/secrets';
3
- import { secretNamePrompt, secretValuePrompt, } from '../../../lib/prompts/secretPrompt.js';
4
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
5
- import { logError, ApiErrorContext } from '../../../lib/errorHandlers/index.js';
6
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
7
- import addSecretCommand from '../addSecret.js';
8
- vi.mock('../../../lib/commonOpts');
9
- vi.mock('@hubspot/local-dev-lib/api/secrets');
10
- vi.mock('../../../lib/prompts/secretPrompt.js');
11
- vi.mock('../../../lib/errorHandlers/index.js');
12
- vi.mock('@hubspot/local-dev-lib/config');
13
- const addSecretMock = vi.mocked(addSecret);
14
- const fetchSecretsMock = vi.mocked(fetchSecrets);
15
- const secretNamePromptMock = vi.mocked(secretNamePrompt);
16
- const secretValuePromptMock = vi.mocked(secretValuePrompt);
17
- const trackCommandUsageMock = vi.mocked(trackCommandUsage);
18
- const logErrorMock = vi.mocked(logError);
19
- const processExitSpy = vi.spyOn(process, 'exit');
20
- describe('commands/secret/addSecret', () => {
21
- const yargsMock = yargs;
22
- const uiLogger = global.mockUiLogger;
23
- beforeEach(() => {
24
- vi.clearAllMocks();
25
- // @ts-expect-error Mock implementation
26
- processExitSpy.mockImplementation(() => { });
27
- fetchSecretsMock.mockResolvedValue({
28
- data: { results: [] },
29
- status: 200,
30
- statusText: 'OK',
31
- headers: {},
32
- // @ts-expect-error
33
- config: {},
34
- });
35
- secretValuePromptMock.mockResolvedValue({ secretValue: 'test-value' });
36
- // @ts-expect-error
37
- addSecretMock.mockResolvedValue(undefined);
38
- });
39
- describe('command', () => {
40
- it('should have the correct command structure', () => {
41
- expect(addSecretCommand.command).toEqual('add [name]');
42
- });
43
- });
44
- describe('describe', () => {
45
- it('should provide a description', () => {
46
- expect(addSecretCommand.describe).toBeDefined();
47
- });
48
- });
49
- describe('builder', () => {
50
- it('should support the correct options', () => {
51
- addSecretCommand.builder(yargsMock);
52
- expect(yargsMock.positional).toHaveBeenCalledTimes(1);
53
- expect(yargsMock.positional).toHaveBeenCalledWith('name', expect.objectContaining({ type: 'string' }));
54
- });
55
- });
56
- describe('handler', () => {
57
- let args;
58
- beforeEach(() => {
59
- args = {
60
- name: 'test-secret',
61
- derivedAccountId: 123456,
62
- d: false,
63
- debug: false,
64
- };
65
- });
66
- it('should track command usage', async () => {
67
- await addSecretCommand.handler(args);
68
- expect(trackCommandUsageMock).toHaveBeenCalledWith('secrets-add', {}, 123456);
69
- });
70
- it('should prompt for secret name when not provided', async () => {
71
- delete args.name;
72
- secretNamePromptMock.mockResolvedValue({ secretName: 'prompted-name' });
73
- await addSecretCommand.handler(args);
74
- expect(secretNamePromptMock).toHaveBeenCalledTimes(1);
75
- expect(addSecretMock).toHaveBeenCalledWith(123456, 'prompted-name', 'test-value');
76
- });
77
- it('should use provided secret name', async () => {
78
- await addSecretCommand.handler(args);
79
- expect(secretNamePromptMock).not.toHaveBeenCalled();
80
- expect(addSecretMock).toHaveBeenCalledWith(123456, 'test-secret', 'test-value');
81
- });
82
- it('should fetch existing secrets to check for duplicates', async () => {
83
- await addSecretCommand.handler(args);
84
- expect(fetchSecretsMock).toHaveBeenCalledWith(123456);
85
- });
86
- it('should error and exit if secret already exists', async () => {
87
- fetchSecretsMock.mockResolvedValue({
88
- data: { results: ['test-secret', 'other-secret'] },
89
- status: 200,
90
- statusText: 'OK',
91
- headers: {},
92
- // @ts-expect-error
93
- config: {},
94
- });
95
- await addSecretCommand.handler(args);
96
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('test-secret'));
97
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
98
- expect(addSecretMock).not.toHaveBeenCalled();
99
- });
100
- it('should allow adding secret if name does not exist', async () => {
101
- fetchSecretsMock.mockResolvedValue({
102
- data: { results: ['other-secret', 'another-secret'] },
103
- status: 200,
104
- statusText: 'OK',
105
- headers: {},
106
- // @ts-expect-error
107
- config: {},
108
- });
109
- // @ts-expect-error doesn't matter
110
- addSecretMock.mockResolvedValue(undefined);
111
- await addSecretCommand.handler(args);
112
- expect(addSecretMock).toHaveBeenCalledWith(123456, 'test-secret', 'test-value');
113
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringContaining('test-secret'));
114
- });
115
- it('should prompt for secret value', async () => {
116
- await addSecretCommand.handler(args);
117
- expect(secretValuePromptMock).toHaveBeenCalledTimes(1);
118
- });
119
- it('should add secret successfully', async () => {
120
- // @ts-expect-error doesn't matter
121
- addSecretMock.mockResolvedValue(undefined);
122
- await addSecretCommand.handler(args);
123
- expect(addSecretMock).toHaveBeenCalledWith(123456, 'test-secret', 'test-value');
124
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringContaining('test-secret'));
125
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringContaining('123456'));
126
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.SUCCESS);
127
- });
128
- it('should handle errors when adding secret', async () => {
129
- const error = new Error('API error');
130
- addSecretMock.mockRejectedValueOnce(error);
131
- await addSecretCommand.handler(args);
132
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('test-secret'));
133
- expect(logErrorMock).toHaveBeenCalledWith(error, expect.any(ApiErrorContext));
134
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
135
- });
136
- it('should handle errors when fetching existing secrets', async () => {
137
- const error = new Error('Fetch error');
138
- fetchSecretsMock.mockRejectedValueOnce(error);
139
- await addSecretCommand.handler(args);
140
- expect(uiLogger.error).toHaveBeenCalled();
141
- expect(logErrorMock).toHaveBeenCalledWith(error, expect.any(ApiErrorContext));
142
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
143
- });
144
- it('should handle errors when prompting for name', async () => {
145
- delete args.name;
146
- const error = new Error('Prompt error');
147
- secretNamePromptMock.mockRejectedValueOnce(error);
148
- await addSecretCommand.handler(args);
149
- expect(uiLogger.error).toHaveBeenCalled();
150
- expect(logErrorMock).toHaveBeenCalledWith(error, expect.any(ApiErrorContext));
151
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
152
- });
153
- it('should handle errors when prompting for value', async () => {
154
- const error = new Error('Value prompt error');
155
- secretValuePromptMock.mockRejectedValueOnce(error);
156
- await addSecretCommand.handler(args);
157
- expect(uiLogger.error).toHaveBeenCalled();
158
- expect(logErrorMock).toHaveBeenCalledWith(error, expect.any(ApiErrorContext));
159
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
160
- });
161
- });
162
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,41 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } from '../../../lib/commonOpts.js';
3
- import deleteSecretCommand from '../deleteSecret.js';
4
- vi.mock('yargs');
5
- vi.mock('../../../lib/commonOpts');
6
- describe('commands/secret/deleteSecret', () => {
7
- let yargsMock = yargs;
8
- beforeEach(() => {
9
- yargsMock = {
10
- positional: vi.fn().mockReturnThis(),
11
- options: vi.fn().mockReturnThis(),
12
- command: vi.fn().mockReturnThis(),
13
- demandCommand: vi.fn().mockReturnThis(),
14
- help: vi.fn().mockReturnThis(),
15
- alias: vi.fn().mockReturnThis(),
16
- argv: {},
17
- };
18
- });
19
- describe('command', () => {
20
- it('should have the correct command structure', () => {
21
- expect(deleteSecretCommand.command).toEqual('delete [name]');
22
- });
23
- });
24
- describe('describe', () => {
25
- it('should provide a description', () => {
26
- expect(deleteSecretCommand.describe).toBeDefined();
27
- });
28
- });
29
- describe('builder', () => {
30
- it('should support the correct options', () => {
31
- deleteSecretCommand.builder(yargsMock);
32
- expect(yargsMock.positional).toHaveBeenCalledTimes(1);
33
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
34
- expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
35
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
36
- expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
37
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
38
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
39
- });
40
- });
41
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } from '../../../lib/commonOpts.js';
3
- import listSecretCommand from '../listSecret.js';
4
- vi.mock('yargs');
5
- vi.mock('../../../lib/commonOpts');
6
- describe('commands/secret/listSecret', () => {
7
- const yargsMock = yargs;
8
- describe('command', () => {
9
- it('should have the correct command structure', () => {
10
- expect(listSecretCommand.command).toEqual('list');
11
- });
12
- });
13
- describe('describe', () => {
14
- it('should provide a description', () => {
15
- expect(listSecretCommand.describe).toBeDefined();
16
- });
17
- });
18
- describe('builder', () => {
19
- it('should support the correct options', () => {
20
- listSecretCommand.builder(yargsMock);
21
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
22
- expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
23
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
24
- expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
25
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
26
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
27
- });
28
- });
29
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } from '../../../lib/commonOpts.js';
3
- import updateSecretCommand from '../updateSecret.js';
4
- vi.mock('../../../lib/commonOpts');
5
- describe('commands/secret/updateSecret', () => {
6
- const yargsMock = yargs;
7
- describe('command', () => {
8
- it('should have the correct command structure', () => {
9
- expect(updateSecretCommand.command).toEqual('update [name]');
10
- });
11
- });
12
- describe('describe', () => {
13
- it('should provide a description', () => {
14
- expect(updateSecretCommand.describe).toBeDefined();
15
- });
16
- });
17
- describe('builder', () => {
18
- it('should support the correct options', () => {
19
- updateSecretCommand.builder(yargsMock);
20
- expect(yargsMock.positional).toHaveBeenCalledTimes(1);
21
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
22
- expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
23
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
24
- expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
25
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
26
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
27
- });
28
- });
29
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,106 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addTestingOptions, addJSONOutputOptions, } from '../../../lib/commonOpts.js';
3
- import testAccountCreateCommand from '../create.js';
4
- import { ACCOUNT_LEVEL_CHOICES, ACCOUNT_LEVELS, } from '../../../lib/constants.js';
5
- vi.mock('../../../lib/commonOpts');
6
- describe('commands/testAccount/create', () => {
7
- const yargsMock = yargs;
8
- describe('command', () => {
9
- it('should have the correct command structure', () => {
10
- expect(testAccountCreateCommand.command).toEqual('create');
11
- });
12
- });
13
- describe('describe', () => {
14
- it('should provide a description', () => {
15
- expect(testAccountCreateCommand.describe).toBeDefined();
16
- });
17
- });
18
- describe('builder', () => {
19
- it('should support the correct options', () => {
20
- testAccountCreateCommand.builder(yargsMock);
21
- expect(yargsMock.example).toHaveBeenCalledTimes(1);
22
- expect(addTestingOptions).toHaveBeenCalledTimes(1);
23
- expect(addTestingOptions).toHaveBeenCalledWith(yargsMock);
24
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
25
- expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
26
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
27
- expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
28
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
29
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargsMock);
30
- expect(addJSONOutputOptions).toHaveBeenCalledTimes(1);
31
- expect(addJSONOutputOptions).toHaveBeenCalledWith(yargsMock);
32
- });
33
- it('should add account-name option', () => {
34
- testAccountCreateCommand.builder(yargsMock);
35
- expect(yargsMock.option).toHaveBeenCalledWith('name', {
36
- type: 'string',
37
- description: 'Name for the test account',
38
- });
39
- });
40
- it('should add description option', () => {
41
- testAccountCreateCommand.builder(yargsMock);
42
- expect(yargsMock.option).toHaveBeenCalledWith('description', {
43
- type: 'string',
44
- description: 'Description for the test account',
45
- });
46
- });
47
- it('should add hub level options', () => {
48
- testAccountCreateCommand.builder(yargsMock);
49
- expect(yargsMock.option).toHaveBeenCalledWith('marketing-level', {
50
- type: 'string',
51
- description: 'Marketing Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
52
- choices: ACCOUNT_LEVEL_CHOICES,
53
- });
54
- expect(yargsMock.option).toHaveBeenCalledWith('ops-level', {
55
- type: 'string',
56
- description: 'Operations Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
57
- choices: ACCOUNT_LEVEL_CHOICES,
58
- });
59
- expect(yargsMock.option).toHaveBeenCalledWith('service-level', {
60
- type: 'string',
61
- description: 'Service Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
62
- choices: ACCOUNT_LEVEL_CHOICES,
63
- });
64
- expect(yargsMock.option).toHaveBeenCalledWith('sales-level', {
65
- type: 'string',
66
- description: 'Sales Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
67
- choices: ACCOUNT_LEVEL_CHOICES,
68
- });
69
- expect(yargsMock.option).toHaveBeenCalledWith('content-level', {
70
- type: 'string',
71
- description: 'CMS Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
72
- choices: ACCOUNT_LEVEL_CHOICES,
73
- });
74
- expect(yargsMock.option).toHaveBeenCalledWith('commerce-level', {
75
- type: 'string',
76
- description: 'Commerce Hub tier. Options: FREE, PROFESSIONAL, ENTERPRISE',
77
- choices: ACCOUNT_LEVEL_CHOICES.filter(level => level !== ACCOUNT_LEVELS.STARTER),
78
- });
79
- });
80
- it('should add examples for all usage scenarios', () => {
81
- testAccountCreateCommand.builder(yargsMock);
82
- expect(yargsMock.example).toHaveBeenCalledWith([
83
- [
84
- '$0 test-account create',
85
- 'Interactive mode - prompts for all options',
86
- ],
87
- [
88
- '$0 test-account create --name "MyTestAccount"',
89
- 'Provide name via flag, prompt for description and tier selection',
90
- ],
91
- [
92
- '$0 test-account create --name "MyTestAccount" --description "Test account"',
93
- 'Provide name and description, prompt for tier selection',
94
- ],
95
- [
96
- '$0 test-account create --name "MyTestAccount" --marketing-level PROFESSIONAL',
97
- 'Specify marketing tier, other tiers default to ENTERPRISE',
98
- ],
99
- [
100
- '$0 test-account create --config-path ./test-account-config.json',
101
- 'Create from config file (mutually exclusive with other flags)',
102
- ],
103
- ]);
104
- });
105
- });
106
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,32 +0,0 @@
1
- import yargs from 'yargs';
2
- import testAccountCreateConfigCommand from '../createConfig.js';
3
- vi.mock('../../../lib/commonOpts');
4
- describe('commands/testAccount/createConfig', () => {
5
- const yargsMock = yargs;
6
- describe('command', () => {
7
- it('should have the correct command structure', () => {
8
- expect(testAccountCreateConfigCommand.command).toEqual('create-config');
9
- });
10
- });
11
- describe('describe', () => {
12
- it('should provide a description', () => {
13
- expect(testAccountCreateConfigCommand.describe).toBeDefined();
14
- });
15
- });
16
- describe('builder', () => {
17
- it('should support the correct options', () => {
18
- const optionSpy = vi.spyOn(yargsMock, 'option');
19
- testAccountCreateConfigCommand.builder(yargsMock);
20
- expect(yargsMock.example).toHaveBeenCalledTimes(1);
21
- expect(optionSpy).toHaveBeenCalledWith('name', expect.objectContaining({
22
- type: 'string',
23
- }));
24
- expect(optionSpy).toHaveBeenCalledWith('description', expect.objectContaining({
25
- type: 'string',
26
- }));
27
- expect(optionSpy).toHaveBeenCalledWith('path', expect.objectContaining({
28
- type: 'string',
29
- }));
30
- });
31
- });
32
- });
@@ -1 +0,0 @@
1
- export {};