@hubspot/cli 8.0.10-experimental.5 → 8.0.10-experimental.7

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 (368) hide show
  1. package/commands/getStarted.js +1 -1
  2. package/lang/en.js +1 -1
  3. package/lib/app/migrate.js +10 -5
  4. package/lib/getStartedV2Actions.js +1 -1
  5. package/lib/projects/components.js +3 -2
  6. package/lib/projects/create/v2.js +1 -1
  7. package/lib/ui/SpinniesManager.js +2 -0
  8. package/package.json +6 -2
  9. package/api/__tests__/migrate.test.d.ts +0 -1
  10. package/api/__tests__/migrate.test.js +0 -199
  11. package/commands/__tests__/account.test.d.ts +0 -1
  12. package/commands/__tests__/account.test.js +0 -69
  13. package/commands/__tests__/auth.test.d.ts +0 -1
  14. package/commands/__tests__/auth.test.js +0 -43
  15. package/commands/__tests__/cms.test.d.ts +0 -1
  16. package/commands/__tests__/cms.test.js +0 -87
  17. package/commands/__tests__/config.test.d.ts +0 -1
  18. package/commands/__tests__/config.test.js +0 -44
  19. package/commands/__tests__/customObject.test.d.ts +0 -1
  20. package/commands/__tests__/customObject.test.js +0 -68
  21. package/commands/__tests__/doctor.test.d.ts +0 -1
  22. package/commands/__tests__/doctor.test.js +0 -132
  23. package/commands/__tests__/feedback.test.d.ts +0 -1
  24. package/commands/__tests__/feedback.test.js +0 -24
  25. package/commands/__tests__/filemanager.test.d.ts +0 -1
  26. package/commands/__tests__/filemanager.test.js +0 -45
  27. package/commands/__tests__/getStarted.test.d.ts +0 -1
  28. package/commands/__tests__/getStarted.test.js +0 -173
  29. package/commands/__tests__/hubdb.test.d.ts +0 -1
  30. package/commands/__tests__/hubdb.test.js +0 -50
  31. package/commands/__tests__/init.test.d.ts +0 -1
  32. package/commands/__tests__/init.test.js +0 -42
  33. package/commands/__tests__/mcp.test.d.ts +0 -1
  34. package/commands/__tests__/mcp.test.js +0 -46
  35. package/commands/__tests__/open.test.d.ts +0 -1
  36. package/commands/__tests__/open.test.js +0 -58
  37. package/commands/__tests__/project.test.d.ts +0 -1
  38. package/commands/__tests__/project.test.js +0 -125
  39. package/commands/__tests__/sandbox.test.d.ts +0 -1
  40. package/commands/__tests__/sandbox.test.js +0 -44
  41. package/commands/__tests__/secret.test.d.ts +0 -1
  42. package/commands/__tests__/secret.test.js +0 -49
  43. package/commands/__tests__/testAccount.test.d.ts +0 -1
  44. package/commands/__tests__/testAccount.test.js +0 -57
  45. package/commands/__tests__/upgrade.test.d.ts +0 -1
  46. package/commands/__tests__/upgrade.test.js +0 -309
  47. package/commands/account/__tests__/auth.test.d.ts +0 -1
  48. package/commands/account/__tests__/auth.test.js +0 -206
  49. package/commands/account/__tests__/clean.test.d.ts +0 -1
  50. package/commands/account/__tests__/clean.test.js +0 -28
  51. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  52. package/commands/account/__tests__/createOverride.test.js +0 -32
  53. package/commands/account/__tests__/info.test.d.ts +0 -1
  54. package/commands/account/__tests__/info.test.js +0 -28
  55. package/commands/account/__tests__/list.test.d.ts +0 -1
  56. package/commands/account/__tests__/list.test.js +0 -153
  57. package/commands/account/__tests__/remove.test.d.ts +0 -1
  58. package/commands/account/__tests__/remove.test.js +0 -36
  59. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  60. package/commands/account/__tests__/removeOverride.js +0 -25
  61. package/commands/account/__tests__/rename.test.d.ts +0 -1
  62. package/commands/account/__tests__/rename.test.js +0 -82
  63. package/commands/account/__tests__/use.test.d.ts +0 -1
  64. package/commands/account/__tests__/use.test.js +0 -170
  65. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  66. package/commands/app/__tests__/migrate.test.js +0 -111
  67. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  68. package/commands/app/secret/__tests__/add.test.js +0 -140
  69. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  70. package/commands/app/secret/__tests__/delete.test.js +0 -28
  71. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  72. package/commands/app/secret/__tests__/list.test.js +0 -25
  73. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  74. package/commands/app/secret/__tests__/update.test.js +0 -28
  75. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  76. package/commands/cms/__tests__/delete.test.js +0 -39
  77. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  78. package/commands/cms/__tests__/fetch.test.js +0 -156
  79. package/commands/cms/__tests__/function.test.d.ts +0 -1
  80. package/commands/cms/__tests__/function.test.js +0 -50
  81. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  82. package/commands/cms/__tests__/lint.test.js +0 -33
  83. package/commands/cms/__tests__/list.test.d.ts +0 -1
  84. package/commands/cms/__tests__/list.test.js +0 -42
  85. package/commands/cms/__tests__/module.test.d.ts +0 -1
  86. package/commands/cms/__tests__/module.test.js +0 -45
  87. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  88. package/commands/cms/__tests__/mv.test.js +0 -46
  89. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  90. package/commands/cms/__tests__/theme.test.js +0 -54
  91. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  92. package/commands/cms/__tests__/upload.test.js +0 -312
  93. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  94. package/commands/cms/__tests__/watch.test.js +0 -204
  95. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  96. package/commands/cms/function/__tests__/logs.test.js +0 -70
  97. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  98. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  99. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  100. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  101. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  102. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  103. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  104. package/commands/customObject/__tests__/create.test.js +0 -40
  105. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  106. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  107. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  108. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  109. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  110. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  111. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  112. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  113. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  114. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  115. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  116. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  117. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  118. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  119. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  120. package/commands/filemanager/__tests__/upload.test.js +0 -191
  121. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  122. package/commands/hubdb/__tests__/clear.test.js +0 -28
  123. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  124. package/commands/hubdb/__tests__/create.test.js +0 -28
  125. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  126. package/commands/hubdb/__tests__/delete.test.js +0 -28
  127. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  128. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  129. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  130. package/commands/hubdb/__tests__/list.test.js +0 -88
  131. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  132. package/commands/mcp/__tests__/setup.test.js +0 -26
  133. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  134. package/commands/mcp/__tests__/start.test.js +0 -144
  135. package/commands/project/__tests__/add.test.d.ts +0 -1
  136. package/commands/project/__tests__/add.test.js +0 -107
  137. package/commands/project/__tests__/create.test.d.ts +0 -1
  138. package/commands/project/__tests__/create.test.js +0 -97
  139. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  140. package/commands/project/__tests__/deploy.test.js +0 -307
  141. package/commands/project/__tests__/dev.test.d.ts +0 -1
  142. package/commands/project/__tests__/dev.test.js +0 -273
  143. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  144. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  145. package/commands/project/__tests__/download.test.d.ts +0 -1
  146. package/commands/project/__tests__/download.test.js +0 -39
  147. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  148. package/commands/project/__tests__/installDeps.test.js +0 -140
  149. package/commands/project/__tests__/lint.test.d.ts +0 -1
  150. package/commands/project/__tests__/lint.test.js +0 -704
  151. package/commands/project/__tests__/list.test.d.ts +0 -1
  152. package/commands/project/__tests__/list.test.js +0 -31
  153. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  154. package/commands/project/__tests__/listBuilds.test.js +0 -38
  155. package/commands/project/__tests__/logs.test.d.ts +0 -1
  156. package/commands/project/__tests__/logs.test.js +0 -202
  157. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  158. package/commands/project/__tests__/migrate.test.js +0 -106
  159. package/commands/project/__tests__/open.test.d.ts +0 -1
  160. package/commands/project/__tests__/open.test.js +0 -39
  161. package/commands/project/__tests__/profile.test.d.ts +0 -1
  162. package/commands/project/__tests__/profile.test.js +0 -42
  163. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  164. package/commands/project/__tests__/updateDeps.test.js +0 -140
  165. package/commands/project/__tests__/upload.test.d.ts +0 -1
  166. package/commands/project/__tests__/upload.test.js +0 -234
  167. package/commands/project/__tests__/validate.test.d.ts +0 -1
  168. package/commands/project/__tests__/validate.test.js +0 -381
  169. package/commands/project/__tests__/watch.test.d.ts +0 -1
  170. package/commands/project/__tests__/watch.test.js +0 -35
  171. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  172. package/commands/sandbox/__tests__/create.test.js +0 -198
  173. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  174. package/commands/sandbox/__tests__/delete.test.js +0 -31
  175. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  176. package/commands/secret/__tests__/addSecret.test.js +0 -162
  177. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  178. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  179. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  180. package/commands/secret/__tests__/listSecret.test.js +0 -29
  181. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  182. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  183. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  184. package/commands/testAccount/__tests__/create.test.js +0 -106
  185. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  186. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  187. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  188. package/commands/testAccount/__tests__/delete.test.js +0 -29
  189. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  190. package/commands/testAccount/__tests__/importData.test.js +0 -92
  191. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  192. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  193. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  194. package/lib/__tests__/accountAuth.test.js +0 -258
  195. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  196. package/lib/__tests__/accountTypes.test.js +0 -98
  197. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  198. package/lib/__tests__/buildAccount.test.js +0 -211
  199. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  200. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  201. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  202. package/lib/__tests__/commandSuggestion.test.js +0 -121
  203. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  204. package/lib/__tests__/commonOpts.test.js +0 -80
  205. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  206. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  207. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  208. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  209. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  210. package/lib/__tests__/hasFeature.test.js +0 -167
  211. package/lib/__tests__/http.test.d.ts +0 -1
  212. package/lib/__tests__/http.test.js +0 -40
  213. package/lib/__tests__/importData.test.d.ts +0 -1
  214. package/lib/__tests__/importData.test.js +0 -98
  215. package/lib/__tests__/npmCli.test.d.ts +0 -1
  216. package/lib/__tests__/npmCli.test.js +0 -84
  217. package/lib/__tests__/oauth.test.d.ts +0 -1
  218. package/lib/__tests__/oauth.test.js +0 -109
  219. package/lib/__tests__/parsing.test.d.ts +0 -1
  220. package/lib/__tests__/parsing.test.js +0 -34
  221. package/lib/__tests__/polling.test.d.ts +0 -1
  222. package/lib/__tests__/polling.test.js +0 -76
  223. package/lib/__tests__/process.test.d.ts +0 -1
  224. package/lib/__tests__/process.test.js +0 -89
  225. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  226. package/lib/__tests__/sandboxes.test.js +0 -128
  227. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  228. package/lib/__tests__/serverlessLogs.test.js +0 -163
  229. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  230. package/lib/__tests__/usageTracking.test.js +0 -197
  231. package/lib/__tests__/validation.test.d.ts +0 -1
  232. package/lib/__tests__/validation.test.js +0 -143
  233. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  234. package/lib/__tests__/yargsUtils.test.js +0 -124
  235. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  236. package/lib/app/__tests__/migrate.test.js +0 -638
  237. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  238. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  239. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  240. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  241. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  242. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  243. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  244. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  245. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  246. package/lib/mcp/__tests__/setup.test.js +0 -523
  247. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  248. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  249. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  250. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  251. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  252. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  253. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  254. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  255. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  256. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  257. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  258. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  259. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  260. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  261. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  262. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  263. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  264. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  265. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  266. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  267. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  268. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  269. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  270. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  271. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  272. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  273. package/lib/projects/__tests__/components.test.d.ts +0 -1
  274. package/lib/projects/__tests__/components.test.js +0 -440
  275. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  276. package/lib/projects/__tests__/deploy.test.js +0 -231
  277. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  278. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  279. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  280. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  281. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  282. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  283. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  284. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  285. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  286. package/lib/projects/__tests__/projects.test.js +0 -58
  287. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  288. package/lib/projects/__tests__/structure.test.js +0 -210
  289. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  290. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  291. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  292. package/lib/projects/__tests__/upload.test.js +0 -183
  293. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  294. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  295. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  296. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  297. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  298. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  299. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  300. package/lib/projects/create/__tests__/v2.test.js +0 -257
  301. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  302. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  303. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  304. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  305. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  306. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  307. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  308. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  309. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  310. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  311. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  312. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  313. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  314. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  315. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  316. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  317. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  318. package/lib/theme/__tests__/migrate.test.js +0 -247
  319. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  320. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  321. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  322. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  323. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  324. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  325. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  326. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  327. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  328. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  329. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  330. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  331. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  332. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  333. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  334. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  335. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  336. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  337. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  338. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  339. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  340. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  341. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  342. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  343. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  344. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  345. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  346. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  347. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  348. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  349. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  350. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  351. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  352. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  353. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  354. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  355. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  356. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  357. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  358. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  359. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  360. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  361. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  362. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  363. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  364. package/mcp-server/utils/__tests__/command.test.js +0 -275
  365. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  366. package/mcp-server/utils/__tests__/content.test.js +0 -164
  367. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  368. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,312 +0,0 @@
1
- import yargs from 'yargs';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import * as uploadFolderLib from '@hubspot/local-dev-lib/cms/uploadFolder';
5
- import * as fileMapperLib from '@hubspot/local-dev-lib/api/fileMapper';
6
- import * as pathLib from '@hubspot/local-dev-lib/path';
7
- import * as modulesLib from '@hubspot/local-dev-lib/cms/modules';
8
- import * as ignoreRulesLib from '@hubspot/local-dev-lib/ignoreRules';
9
- import * as themesLib from '@hubspot/local-dev-lib/cms/themes';
10
- import * as configLib from '@hubspot/local-dev-lib/config';
11
- import * as handleFieldsJSLib from '@hubspot/local-dev-lib/cms/handleFieldsJS';
12
- import { uiLogger } from '../../../lib/ui/logger.js';
13
- import * as errorHandlers from '../../../lib/errorHandlers/index.js';
14
- import * as commonOpts from '../../../lib/commonOpts.js';
15
- import * as uploadPromptLib from '../../../lib/prompts/uploadPrompt.js';
16
- import * as promptUtilsLib from '../../../lib/prompts/promptUtils.js';
17
- import * as validationLib from '../../../lib/validation.js';
18
- import * as usageTrackingLib from '../../../lib/usageTracking.js';
19
- import * as uploadLib from '../../../lib/upload.js';
20
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
21
- import uploadCommand from '../upload.js';
22
- vi.mock('fs');
23
- vi.mock('@hubspot/local-dev-lib/cms/uploadFolder');
24
- vi.mock('@hubspot/local-dev-lib/api/fileMapper');
25
- vi.mock('@hubspot/local-dev-lib/path');
26
- vi.mock('@hubspot/local-dev-lib/cms/modules');
27
- vi.mock('@hubspot/local-dev-lib/ignoreRules');
28
- vi.mock('@hubspot/local-dev-lib/cms/themes');
29
- vi.mock('@hubspot/local-dev-lib/config');
30
- vi.mock('@hubspot/local-dev-lib/cms/handleFieldsJS');
31
- vi.mock('../../../lib/errorHandlers/index.js');
32
- vi.mock('../../../lib/commonOpts.js');
33
- vi.mock('../../../lib/prompts/uploadPrompt.js');
34
- vi.mock('../../../lib/prompts/promptUtils.js');
35
- vi.mock('../../../lib/validation.js');
36
- vi.mock('../../../lib/upload.js');
37
- const uploadFolderSpy = vi.spyOn(uploadFolderLib, 'uploadFolder');
38
- const uploadSpy = vi.spyOn(fileMapperLib, 'upload');
39
- const deleteFileSpy = vi.spyOn(fileMapperLib, 'deleteFile');
40
- const statSyncSpy = vi.spyOn(fs, 'statSync');
41
- const validateSrcAndDestPathsSpy = vi.spyOn(modulesLib, 'validateSrcAndDestPaths');
42
- const shouldIgnoreFileSpy = vi.spyOn(ignoreRulesLib, 'shouldIgnoreFile');
43
- const isAllowedExtensionSpy = vi.spyOn(pathLib, 'isAllowedExtension');
44
- const getCwdSpy = vi.spyOn(pathLib, 'getCwd');
45
- const convertToUnixPathSpy = vi.spyOn(pathLib, 'convertToUnixPath');
46
- const uploadPromptSpy = vi.spyOn(uploadPromptLib, 'uploadPrompt');
47
- const confirmPromptSpy = vi.spyOn(promptUtilsLib, 'confirmPrompt');
48
- const validateCmsPublishModeSpy = vi.spyOn(validationLib, 'validateCmsPublishMode');
49
- const trackCommandUsageSpy = vi.spyOn(usageTrackingLib, 'trackCommandUsage');
50
- const getUploadableFileListSpy = vi.spyOn(uploadLib, 'getUploadableFileList');
51
- const getCmsPublishModeSpy = vi.spyOn(commonOpts, 'getCmsPublishMode');
52
- const getThemePreviewUrlSpy = vi.spyOn(themesLib, 'getThemePreviewUrl');
53
- const getThemeJSONPathSpy = vi.spyOn(themesLib, 'getThemeJSONPath');
54
- const hasUploadErrorsSpy = vi.spyOn(uploadFolderLib, 'hasUploadErrors');
55
- const processExitSpy = vi.spyOn(process, 'exit');
56
- const logErrorSpy = vi.spyOn(errorHandlers, 'logError');
57
- const getConfigAccountIfExistsSpy = vi.spyOn(configLib, 'getConfigAccountIfExists');
58
- const isConvertableFieldJsSpy = vi.spyOn(handleFieldsJSLib, 'isConvertableFieldJs');
59
- describe('commands/cms/upload', () => {
60
- beforeEach(() => {
61
- // @ts-expect-error Mock implementation
62
- processExitSpy.mockImplementation(() => { });
63
- getCwdSpy.mockReturnValue('/test/cwd');
64
- convertToUnixPathSpy.mockImplementation(p => p.replace(/\\/g, '/'));
65
- validateCmsPublishModeSpy.mockReturnValue(true);
66
- getCmsPublishModeSpy.mockReturnValue('publish');
67
- uploadPromptSpy.mockResolvedValue({ src: '', dest: '' });
68
- validateSrcAndDestPathsSpy.mockResolvedValue([]);
69
- getThemeJSONPathSpy.mockReturnValue(null);
70
- getThemePreviewUrlSpy.mockReturnValue(undefined);
71
- // Mock config to prevent reading actual config file in CI
72
- getConfigAccountIfExistsSpy.mockReturnValue(undefined);
73
- isConvertableFieldJsSpy.mockReturnValue(false);
74
- });
75
- describe('command', () => {
76
- it('should have the correct command structure', () => {
77
- expect(uploadCommand.command).toEqual('upload [src] [dest]');
78
- });
79
- });
80
- describe('describe', () => {
81
- it('should provide a description', () => {
82
- expect(uploadCommand.describe).toBeDefined();
83
- });
84
- });
85
- describe('builder', () => {
86
- it('should support the correct options', () => {
87
- const optionsSpy = vi.spyOn(yargs, 'option');
88
- const positionalSpy = vi.spyOn(yargs, 'positional');
89
- uploadCommand.builder(yargs);
90
- expect(positionalSpy).toHaveBeenCalledWith('src', expect.objectContaining({ type: 'string' }));
91
- expect(positionalSpy).toHaveBeenCalledWith('dest', expect.objectContaining({ type: 'string' }));
92
- expect(optionsSpy).toHaveBeenCalledWith('field-options', expect.objectContaining({ type: 'array' }));
93
- expect(optionsSpy).toHaveBeenCalledWith('save-output', expect.objectContaining({ type: 'boolean' }));
94
- expect(optionsSpy).toHaveBeenCalledWith('convert-fields', expect.objectContaining({ type: 'boolean' }));
95
- expect(optionsSpy).toHaveBeenCalledWith('clean', expect.objectContaining({ type: 'boolean' }));
96
- expect(optionsSpy).toHaveBeenCalledWith('force', expect.objectContaining({ type: 'boolean' }));
97
- });
98
- });
99
- describe('handler', () => {
100
- let args;
101
- beforeEach(() => {
102
- args = {
103
- src: 'test.js',
104
- dest: '/dest/test.js',
105
- derivedAccountId: 123456,
106
- };
107
- });
108
- describe('validation', () => {
109
- it('should exit if CMS publish mode validation fails', async () => {
110
- validateCmsPublishModeSpy.mockReturnValue(false);
111
- await uploadCommand.handler(args);
112
- expect(validateCmsPublishModeSpy).toHaveBeenCalledWith(args);
113
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
114
- });
115
- it('should prompt for src and dest when not provided', async () => {
116
- delete args.src;
117
- delete args.dest;
118
- uploadPromptSpy.mockResolvedValue({
119
- src: 'prompted.js',
120
- dest: '/prompted/dest.js',
121
- });
122
- statSyncSpy.mockReturnValue({
123
- isFile: () => true,
124
- isDirectory: () => false,
125
- });
126
- isAllowedExtensionSpy.mockReturnValue(true);
127
- shouldIgnoreFileSpy.mockReturnValue(false);
128
- // @ts-expect-error Mock return value doesn't need full type implementation
129
- uploadSpy.mockResolvedValue({});
130
- await uploadCommand.handler(args);
131
- expect(uploadPromptSpy).toHaveBeenCalledWith(args);
132
- expect(uploadSpy).toHaveBeenCalled();
133
- });
134
- it('should error if dest is not provided', async () => {
135
- args.dest = '';
136
- uploadPromptSpy.mockResolvedValue({ src: 'test.js', dest: '' });
137
- await uploadCommand.handler(args);
138
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('destination'));
139
- });
140
- it('should error if src path is invalid', async () => {
141
- statSyncSpy.mockImplementation(() => {
142
- throw new Error('File not found');
143
- });
144
- await uploadCommand.handler(args);
145
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('path to a file or folder'));
146
- });
147
- it('should error if src path is not a file or directory', async () => {
148
- statSyncSpy.mockReturnValue({
149
- isFile: () => false,
150
- isDirectory: () => false,
151
- });
152
- await uploadCommand.handler(args);
153
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('path to a file or folder'));
154
- });
155
- it('should exit if src/dest validation fails', async () => {
156
- statSyncSpy.mockReturnValue({
157
- isFile: () => true,
158
- isDirectory: () => false,
159
- });
160
- validateSrcAndDestPathsSpy.mockResolvedValue([
161
- { id: '1', message: 'Invalid path' },
162
- ]);
163
- await uploadCommand.handler(args);
164
- expect(uiLogger.error).toHaveBeenCalledWith('Invalid path');
165
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
166
- });
167
- });
168
- describe('file upload', () => {
169
- beforeEach(() => {
170
- statSyncSpy.mockReturnValue({
171
- isFile: () => true,
172
- isDirectory: () => false,
173
- });
174
- isAllowedExtensionSpy.mockReturnValue(true);
175
- shouldIgnoreFileSpy.mockReturnValue(false);
176
- });
177
- it('should track command usage for file uploads', async () => {
178
- // @ts-expect-error Mock return value doesn't need full type implementation
179
- uploadSpy.mockResolvedValue({});
180
- await uploadCommand.handler(args);
181
- expect(trackCommandUsageSpy).toHaveBeenCalledWith('upload', { mode: 'publish', type: 'file' }, 123456);
182
- });
183
- it('should upload a file successfully', async () => {
184
- // @ts-expect-error Mock return value doesn't need full type implementation
185
- uploadSpy.mockResolvedValue({});
186
- await uploadCommand.handler(args);
187
- expect(uploadSpy).toHaveBeenCalledWith(123456, path.resolve('/test/cwd', 'test.js'), '/dest/test.js', expect.any(Object));
188
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringMatching(/uploaded/i));
189
- });
190
- it('should error if file has disallowed extension', async () => {
191
- isAllowedExtensionSpy.mockReturnValue(false);
192
- await uploadCommand.handler(args);
193
- expect(uploadSpy).not.toHaveBeenCalled();
194
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('path to a file or folder'));
195
- });
196
- it('should error if file is ignored', async () => {
197
- shouldIgnoreFileSpy.mockReturnValue(true);
198
- await uploadCommand.handler(args);
199
- expect(uploadSpy).not.toHaveBeenCalled();
200
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('ignored'));
201
- });
202
- it('should handle upload errors', async () => {
203
- vi.useFakeTimers();
204
- const error = new Error('Upload failed');
205
- uploadSpy.mockRejectedValue(error);
206
- await uploadCommand.handler(args);
207
- await vi.runAllTimersAsync();
208
- expect(uiLogger.error).toHaveBeenCalled();
209
- expect(logErrorSpy).toHaveBeenCalledWith(error, expect.any(errorHandlers.ApiErrorContext));
210
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
211
- vi.useRealTimers();
212
- });
213
- it('should log theme preview URL if available', async () => {
214
- getThemePreviewUrlSpy.mockReturnValue('http://preview.url');
215
- // @ts-expect-error Mock return value doesn't need full type implementation
216
- uploadSpy.mockResolvedValue({});
217
- await uploadCommand.handler(args);
218
- expect(getThemePreviewUrlSpy).toHaveBeenCalledWith('test.js', 123456);
219
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('http://preview.url'));
220
- });
221
- });
222
- describe('folder upload', () => {
223
- beforeEach(() => {
224
- statSyncSpy.mockReturnValue({
225
- isFile: () => false,
226
- isDirectory: () => true,
227
- });
228
- getUploadableFileListSpy.mockResolvedValue([]);
229
- uploadFolderSpy.mockResolvedValue([]);
230
- hasUploadErrorsSpy.mockReturnValue(false);
231
- });
232
- it('should track command usage for folder uploads', async () => {
233
- await uploadCommand.handler(args);
234
- expect(trackCommandUsageSpy).toHaveBeenCalledWith('upload', { mode: 'publish', type: 'folder' }, 123456);
235
- });
236
- it('should upload a folder successfully', async () => {
237
- await uploadCommand.handler(args);
238
- expect(uploadFolderSpy).toHaveBeenCalledWith(123456, path.resolve('/test/cwd', 'test.js'), '/dest/test.js', {}, expect.objectContaining({
239
- convertFields: undefined,
240
- saveOutput: undefined,
241
- }), []);
242
- expect(uiLogger.success).toHaveBeenCalledWith(expect.stringContaining('complete'));
243
- });
244
- it('should handle clean upload with confirmation', async () => {
245
- args.clean = true;
246
- confirmPromptSpy.mockResolvedValue(true);
247
- // @ts-expect-error Mock return value doesn't need full type implementation
248
- deleteFileSpy.mockResolvedValue({});
249
- await uploadCommand.handler(args);
250
- expect(confirmPromptSpy).toHaveBeenCalled();
251
- expect(deleteFileSpy).toHaveBeenCalledWith(123456, '/dest/test.js');
252
- // Check that log was called multiple times (upload message + cleaning message)
253
- expect(uiLogger.log).toHaveBeenCalled();
254
- });
255
- it('should skip clean upload if not confirmed', async () => {
256
- args.clean = true;
257
- confirmPromptSpy.mockResolvedValue(false);
258
- await uploadCommand.handler(args);
259
- expect(deleteFileSpy).not.toHaveBeenCalled();
260
- });
261
- it('should force clean upload without confirmation', async () => {
262
- args.clean = true;
263
- args.force = true;
264
- // @ts-expect-error Mock return value doesn't need full type implementation
265
- deleteFileSpy.mockResolvedValue({});
266
- await uploadCommand.handler(args);
267
- expect(confirmPromptSpy).not.toHaveBeenCalled();
268
- expect(deleteFileSpy).toHaveBeenCalledWith(123456, '/dest/test.js');
269
- });
270
- it('should handle delete errors during clean upload', async () => {
271
- args.clean = true;
272
- args.force = true;
273
- const error = new Error('Delete failed');
274
- deleteFileSpy.mockRejectedValue(error);
275
- await uploadCommand.handler(args);
276
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('Deleting'));
277
- });
278
- it('should error if folder upload has errors', async () => {
279
- hasUploadErrorsSpy.mockReturnValue(true);
280
- await uploadCommand.handler(args);
281
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('failed'));
282
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
283
- });
284
- it('should handle folder upload errors', async () => {
285
- vi.useFakeTimers();
286
- const error = new Error('Folder upload failed');
287
- uploadFolderSpy.mockRejectedValue(error);
288
- await uploadCommand.handler(args);
289
- await vi.runAllTimersAsync();
290
- expect(uiLogger.error).toHaveBeenCalled();
291
- expect(logErrorSpy).toHaveBeenCalledWith(error, {
292
- accountId: 123456,
293
- });
294
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.WARNING);
295
- vi.useRealTimers();
296
- });
297
- it('should pass convertFields option to uploadFolder', async () => {
298
- args.convertFields = true;
299
- await uploadCommand.handler(args);
300
- expect(uploadFolderSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), {}, expect.objectContaining({
301
- convertFields: true,
302
- }), expect.any(Array));
303
- });
304
- it('should generate uploadable file list with convertFields', async () => {
305
- args.convertFields = true;
306
- getUploadableFileListSpy.mockResolvedValue(['file1.js', 'file2.js']);
307
- await uploadCommand.handler(args);
308
- expect(getUploadableFileListSpy).toHaveBeenCalledWith(path.resolve('/test/cwd', 'test.js'), true);
309
- });
310
- });
311
- });
312
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,204 +0,0 @@
1
- import yargs from 'yargs';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { AxiosError } from 'axios';
5
- import * as watchLib from '@hubspot/local-dev-lib/cms/watch';
6
- import * as pathLib from '@hubspot/local-dev-lib/path';
7
- import * as configLib from '@hubspot/local-dev-lib/config';
8
- import { uiLogger } from '../../../lib/ui/logger.js';
9
- import * as commonOpts from '../../../lib/commonOpts.js';
10
- import * as uploadPromptLib from '../../../lib/prompts/uploadPrompt.js';
11
- import * as validationLib from '../../../lib/validation.js';
12
- import * as usageTrackingLib from '../../../lib/usageTracking.js';
13
- import * as uploadLib from '../../../lib/upload.js';
14
- import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
15
- import watchCommand from '../watch.js';
16
- vi.mock('fs');
17
- vi.mock('@hubspot/local-dev-lib/cms/watch');
18
- vi.mock('@hubspot/local-dev-lib/path');
19
- vi.mock('@hubspot/local-dev-lib/config');
20
- vi.mock('../../../lib/commonOpts.js');
21
- vi.mock('../../../lib/prompts/uploadPrompt.js');
22
- vi.mock('../../../lib/validation.js');
23
- vi.mock('../../../lib/upload.js');
24
- const watchSpy = vi.spyOn(watchLib, 'watch');
25
- const statSyncSpy = vi.spyOn(fs, 'statSync');
26
- const getCwdSpy = vi.spyOn(pathLib, 'getCwd');
27
- const uploadPromptSpy = vi.spyOn(uploadPromptLib, 'uploadPrompt');
28
- const validateCmsPublishModeSpy = vi.spyOn(validationLib, 'validateCmsPublishMode');
29
- const getCmsPublishModeSpy = vi.spyOn(commonOpts, 'getCmsPublishMode');
30
- const trackCommandUsageSpy = vi.spyOn(usageTrackingLib, 'trackCommandUsage');
31
- const getUploadableFileListSpy = vi.spyOn(uploadLib, 'getUploadableFileList');
32
- const processExitSpy = vi.spyOn(process, 'exit');
33
- const getConfigAccountIfExistsSpy = vi.spyOn(configLib, 'getConfigAccountIfExists');
34
- describe('commands/cms/watch', () => {
35
- beforeEach(() => {
36
- // @ts-expect-error Mock implementation
37
- processExitSpy.mockImplementation(() => { });
38
- getCwdSpy.mockReturnValue('/test/cwd');
39
- validateCmsPublishModeSpy.mockReturnValue(true);
40
- getCmsPublishModeSpy.mockReturnValue('publish');
41
- uploadPromptSpy.mockResolvedValue({ src: '', dest: '' });
42
- // @ts-expect-error Mock return value doesn't need full type implementation
43
- watchSpy.mockImplementation(() => ({}));
44
- getUploadableFileListSpy.mockResolvedValue([]);
45
- // Mock config to prevent reading actual config file in CI
46
- getConfigAccountIfExistsSpy.mockReturnValue(undefined);
47
- });
48
- describe('command', () => {
49
- it('should have the correct command structure', () => {
50
- expect(watchCommand.command).toEqual('watch [src] [dest]');
51
- });
52
- });
53
- describe('describe', () => {
54
- it('should provide a description', () => {
55
- expect(watchCommand.describe).toBeDefined();
56
- });
57
- });
58
- describe('builder', () => {
59
- it('should support the correct options', () => {
60
- const positionalSpy = vi.spyOn(yargs, 'positional');
61
- const optionSpy = vi.spyOn(yargs, 'option');
62
- watchCommand.builder(yargs);
63
- expect(positionalSpy).toHaveBeenCalledWith('src', expect.objectContaining({ type: 'string' }));
64
- expect(positionalSpy).toHaveBeenCalledWith('dest', expect.objectContaining({ type: 'string' }));
65
- expect(optionSpy).toHaveBeenCalledWith('remove', expect.objectContaining({ type: 'boolean', alias: 'r' }));
66
- expect(optionSpy).toHaveBeenCalledWith('initial-upload', expect.objectContaining({ type: 'boolean', alias: 'i' }));
67
- expect(optionSpy).toHaveBeenCalledWith('notify', expect.objectContaining({ type: 'string', alias: 'n' }));
68
- expect(optionSpy).toHaveBeenCalledWith('convert-fields', expect.objectContaining({ type: 'boolean' }));
69
- });
70
- });
71
- describe('handler', () => {
72
- let args;
73
- beforeEach(() => {
74
- args = {
75
- src: 'src',
76
- dest: '/dest',
77
- derivedAccountId: 123456,
78
- remove: false,
79
- initialUpload: false,
80
- };
81
- statSyncSpy.mockReturnValue({
82
- isFile: () => false,
83
- isDirectory: () => true,
84
- });
85
- });
86
- describe('validation', () => {
87
- it('should exit if CMS publish mode validation fails', async () => {
88
- validateCmsPublishModeSpy.mockReturnValue(false);
89
- await watchCommand.handler(args);
90
- expect(validateCmsPublishModeSpy).toHaveBeenCalledWith(args);
91
- expect(processExitSpy).toHaveBeenCalledWith(EXIT_CODES.ERROR);
92
- });
93
- it('should prompt for src and dest when not provided', async () => {
94
- delete args.src;
95
- delete args.dest;
96
- uploadPromptSpy.mockResolvedValue({
97
- src: 'prompted-src',
98
- dest: '/prompted-dest',
99
- });
100
- await watchCommand.handler(args);
101
- expect(uploadPromptSpy).toHaveBeenCalledWith(args);
102
- });
103
- it('should error if src path is invalid', async () => {
104
- statSyncSpy.mockImplementation(() => {
105
- throw new Error('File not found');
106
- });
107
- await watchCommand.handler(args);
108
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('path to a directory'));
109
- expect(watchSpy).not.toHaveBeenCalled();
110
- });
111
- it('should error if src path is not a directory', async () => {
112
- statSyncSpy.mockReturnValue({
113
- isFile: () => true,
114
- isDirectory: () => false,
115
- });
116
- await watchCommand.handler(args);
117
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('path to a directory'));
118
- expect(watchSpy).not.toHaveBeenCalled();
119
- });
120
- it('should error if dest is not provided', async () => {
121
- args.dest = '';
122
- uploadPromptSpy.mockResolvedValue({ src: 'src', dest: '' });
123
- await watchCommand.handler(args);
124
- expect(uiLogger.log).toHaveBeenCalledWith(expect.stringContaining('destination'));
125
- expect(watchSpy).not.toHaveBeenCalled();
126
- });
127
- });
128
- describe('watch execution', () => {
129
- it('should track command usage', async () => {
130
- await watchCommand.handler(args);
131
- expect(trackCommandUsageSpy).toHaveBeenCalledWith('watch', { mode: 'publish' }, 123456);
132
- });
133
- it('should start watching without initial upload by default', async () => {
134
- await watchCommand.handler(args);
135
- expect(getUploadableFileListSpy).not.toHaveBeenCalled();
136
- expect(watchSpy).toHaveBeenCalledWith(123456, path.resolve('/test/cwd', 'src'), '/dest', expect.objectContaining({
137
- cmsPublishMode: 'publish',
138
- remove: false,
139
- disableInitial: true,
140
- }), null, expect.any(Function), undefined, expect.any(Function));
141
- });
142
- it('should generate uploadable file list when initialUpload is true', async () => {
143
- args.initialUpload = true;
144
- getUploadableFileListSpy.mockResolvedValue(['file1.js', 'file2.js']);
145
- await watchCommand.handler(args);
146
- expect(getUploadableFileListSpy).toHaveBeenCalledWith(path.resolve('/test/cwd', 'src'), undefined);
147
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
148
- disableInitial: false,
149
- filePaths: ['file1.js', 'file2.js'],
150
- }), null, expect.any(Function), undefined, expect.any(Function));
151
- });
152
- it('should pass remove option to watch', async () => {
153
- args.remove = true;
154
- await watchCommand.handler(args);
155
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
156
- remove: true,
157
- }), null, expect.any(Function), undefined, expect.any(Function));
158
- });
159
- it('should pass notify option to watch', async () => {
160
- args.notify = 'http://notify.url';
161
- await watchCommand.handler(args);
162
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
163
- notify: 'http://notify.url',
164
- }), null, expect.any(Function), undefined, expect.any(Function));
165
- });
166
- it('should pass convertFields to getUploadableFileList', async () => {
167
- args.initialUpload = true;
168
- args.convertFields = true;
169
- await watchCommand.handler(args);
170
- expect(getUploadableFileListSpy).toHaveBeenCalledWith(expect.any(String), true);
171
- });
172
- it('should pass command options to watch', async () => {
173
- args.saveOutput = true;
174
- args.fieldOptions = ['option1'];
175
- await watchCommand.handler(args);
176
- expect(watchSpy).toHaveBeenCalledWith(123456, expect.any(String), expect.any(String), expect.objectContaining({
177
- commandOptions: expect.objectContaining({
178
- saveOutput: true,
179
- fieldOptions: ['option1'],
180
- }),
181
- }), null, expect.any(Function), undefined, expect.any(Function));
182
- });
183
- });
184
- describe('error handlers', () => {
185
- it('should provide error handler for folder errors', async () => {
186
- await watchCommand.handler(args);
187
- const folderErrorHandler = watchSpy.mock.calls[0][5];
188
- const error = new AxiosError('Folder error');
189
- // @ts-expect-error Axios version mismatch between test and implementation
190
- folderErrorHandler?.(error);
191
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('failures'));
192
- });
193
- it('should provide error handler factory for file errors', async () => {
194
- await watchCommand.handler(args);
195
- const fileErrorHandlerFactory = watchSpy.mock.calls[0][7];
196
- const fileErrorHandler = fileErrorHandlerFactory?.('test.js', '/dest/test.js', 123456);
197
- const error = new AxiosError('File error');
198
- // @ts-expect-error Axios version mismatch between test and implementation
199
- fileErrorHandler?.(error);
200
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('test.js'));
201
- });
202
- });
203
- });
204
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,70 +0,0 @@
1
- import yargs from 'yargs';
2
- import { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } from '../../../../lib/commonOpts.js';
3
- import logsCommand from '../logs.js';
4
- vi.mock('../../../../lib/commonOpts');
5
- const optionsSpy = vi
6
- .spyOn(yargs, 'options')
7
- .mockReturnValue(yargs);
8
- const conflictsSpy = vi
9
- .spyOn(yargs, 'conflicts')
10
- .mockReturnValue(yargs);
11
- const exampleSpy = vi
12
- .spyOn(yargs, 'example')
13
- .mockReturnValue(yargs);
14
- const positionalSpy = vi
15
- .spyOn(yargs, 'positional')
16
- .mockReturnValue(yargs);
17
- describe('commands/cms/function/logs', () => {
18
- describe('command', () => {
19
- it('should have the correct command structure', () => {
20
- expect(logsCommand.command).toEqual('logs [endpoint]');
21
- });
22
- });
23
- describe('describe', () => {
24
- it('should provide a description', () => {
25
- expect(logsCommand.describe).toBeDefined();
26
- });
27
- });
28
- describe('builder', () => {
29
- it('should support the correct positional arguments', () => {
30
- logsCommand.builder(yargs);
31
- expect(positionalSpy).toHaveBeenCalledTimes(1);
32
- expect(positionalSpy).toHaveBeenCalledWith('endpoint', expect.objectContaining({ type: 'string' }));
33
- });
34
- it('should support the correct options', () => {
35
- logsCommand.builder(yargs);
36
- expect(optionsSpy).toHaveBeenCalledTimes(1);
37
- expect(optionsSpy).toHaveBeenCalledWith({
38
- latest: expect.objectContaining({
39
- alias: 'l',
40
- type: 'boolean',
41
- }),
42
- compact: expect.objectContaining({
43
- type: 'boolean',
44
- }),
45
- follow: expect.objectContaining({
46
- alias: ['f'],
47
- type: 'boolean',
48
- }),
49
- limit: expect.objectContaining({
50
- type: 'number',
51
- }),
52
- });
53
- expect(addConfigOptions).toHaveBeenCalledTimes(1);
54
- expect(addConfigOptions).toHaveBeenCalledWith(yargs);
55
- expect(addAccountOptions).toHaveBeenCalledTimes(1);
56
- expect(addAccountOptions).toHaveBeenCalledWith(yargs);
57
- expect(addUseEnvironmentOptions).toHaveBeenCalledTimes(1);
58
- expect(addUseEnvironmentOptions).toHaveBeenCalledWith(yargs);
59
- });
60
- it('should set the correct conflicts', () => {
61
- logsCommand.builder(yargs);
62
- expect(conflictsSpy).toHaveBeenCalledTimes(1);
63
- expect(conflictsSpy).toHaveBeenCalledWith('follow', 'limit');
64
- });
65
- it('should provide examples', () => {
66
- logsCommand.builder(yargs);
67
- expect(exampleSpy).toHaveBeenCalledTimes(1);
68
- });
69
- });
70
- });
@@ -1,28 +0,0 @@
1
- import yargs from 'yargs';
2
- import generateSelectorsCommand from '../generate-selectors.js';
3
- const positionalSpy = vi
4
- .spyOn(yargs, 'positional')
5
- .mockReturnValue(yargs);
6
- describe('commands/theme/generate-selectors', () => {
7
- describe('command', () => {
8
- it('should have the correct command structure', () => {
9
- expect(generateSelectorsCommand.command).toEqual('generate-selectors <path>');
10
- });
11
- });
12
- describe('describe', () => {
13
- it('should provide a description', () => {
14
- expect(generateSelectorsCommand.describe).toBeDefined();
15
- });
16
- });
17
- describe('builder', () => {
18
- it('should support the correct options', () => {
19
- generateSelectorsCommand.builder(yargs);
20
- expect(positionalSpy).toHaveBeenCalledTimes(1);
21
- expect(positionalSpy).toHaveBeenCalledWith('path', {
22
- describe: expect.any(String),
23
- required: true,
24
- type: 'string',
25
- });
26
- });
27
- });
28
- });