@hubspot/cli 8.1.0-beta.0 → 8.1.0-experimental.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 (670) hide show
  1. package/api/migrate.js +8 -4
  2. package/bin/cli.js +12 -6
  3. package/commands/account/auth.js +7 -7
  4. package/commands/account/clean.js +7 -6
  5. package/commands/account/createOverride.js +10 -7
  6. package/commands/account/info.js +36 -17
  7. package/commands/account/link.d.ts +4 -0
  8. package/commands/account/link.js +89 -0
  9. package/commands/account/list.js +32 -76
  10. package/commands/account/remove.js +4 -3
  11. package/commands/account/removeOverride.js +11 -10
  12. package/commands/account/rename.js +5 -6
  13. package/commands/account/unlink.d.ts +4 -0
  14. package/commands/account/unlink.js +70 -0
  15. package/commands/account/use.js +75 -6
  16. package/commands/account.js +4 -0
  17. package/commands/api.d.ts +10 -0
  18. package/commands/api.js +164 -0
  19. package/commands/app/migrate.js +13 -13
  20. package/commands/app/secret/add.js +6 -7
  21. package/commands/app/secret/delete.js +9 -10
  22. package/commands/app/secret/list.js +6 -7
  23. package/commands/app/secret/update.js +8 -9
  24. package/commands/auth.js +19 -15
  25. package/commands/cms/app/create.js +9 -5
  26. package/commands/cms/convertFields.js +8 -8
  27. package/commands/cms/delete.js +2 -3
  28. package/commands/cms/fetch.js +7 -7
  29. package/commands/cms/function/create.js +9 -5
  30. package/commands/cms/function/deploy.js +2 -3
  31. package/commands/cms/function/list.js +11 -7
  32. package/commands/cms/function/logs.js +17 -22
  33. package/commands/cms/function/server.js +2 -3
  34. package/commands/cms/getReactModule.js +7 -8
  35. package/commands/cms/lighthouseScore.js +25 -24
  36. package/commands/cms/lint.js +4 -5
  37. package/commands/cms/list.js +5 -6
  38. package/commands/cms/module/create.js +9 -5
  39. package/commands/cms/module/marketplace-validate.js +7 -8
  40. package/commands/cms/mv.js +2 -3
  41. package/commands/cms/template/create.js +10 -6
  42. package/commands/cms/theme/create.js +5 -5
  43. package/commands/cms/theme/generate-selectors.js +5 -4
  44. package/commands/cms/theme/marketplace-validate.js +8 -9
  45. package/commands/cms/theme/preview.js +23 -70
  46. package/commands/cms/upload.js +15 -12
  47. package/commands/cms/watch.d.ts +0 -1
  48. package/commands/cms/watch.js +6 -12
  49. package/commands/cms/webpack/create.js +5 -5
  50. package/commands/completion.js +3 -5
  51. package/commands/config/migrate.js +6 -7
  52. package/commands/config/set.js +5 -6
  53. package/commands/customObject/create.js +4 -5
  54. package/commands/customObject/createSchema.js +4 -5
  55. package/commands/customObject/deleteSchema.js +4 -5
  56. package/commands/customObject/fetchAllSchemas.js +2 -3
  57. package/commands/customObject/fetchSchema.js +2 -3
  58. package/commands/customObject/listSchemas.js +2 -3
  59. package/commands/customObject/updateSchema.js +4 -5
  60. package/commands/doctor.js +8 -8
  61. package/commands/feedback.js +7 -5
  62. package/commands/filemanager/fetch.js +5 -6
  63. package/commands/filemanager/upload.js +5 -5
  64. package/commands/getStarted.js +17 -19
  65. package/commands/hubdb/clear.js +6 -3
  66. package/commands/hubdb/create.js +4 -5
  67. package/commands/hubdb/delete.js +9 -6
  68. package/commands/hubdb/fetch.js +6 -3
  69. package/commands/hubdb/list.js +16 -14
  70. package/commands/init.js +15 -14
  71. package/commands/mcp/setup.js +5 -14
  72. package/commands/mcp/start.js +2 -4
  73. package/commands/open.js +4 -5
  74. package/commands/project/add.js +13 -8
  75. package/commands/project/appInstallStatus.d.ts +4 -0
  76. package/commands/project/appInstallStatus.js +132 -0
  77. package/commands/project/create.js +28 -17
  78. package/commands/project/delete.d.ts +7 -0
  79. package/commands/project/delete.js +74 -0
  80. package/commands/project/deploy.js +39 -36
  81. package/commands/project/dev/deprecatedFlow.js +62 -17
  82. package/commands/project/dev/index.d.ts +3 -3
  83. package/commands/project/dev/index.js +59 -48
  84. package/commands/project/dev/unifiedFlow.js +70 -21
  85. package/commands/project/download.js +12 -9
  86. package/commands/project/info.d.ts +4 -0
  87. package/commands/project/info.js +67 -0
  88. package/commands/project/installDeps.js +9 -6
  89. package/commands/project/lint.js +31 -10
  90. package/commands/project/list.js +14 -14
  91. package/commands/project/listBuilds.js +8 -6
  92. package/commands/project/logs.js +5 -6
  93. package/commands/project/migrate.js +18 -18
  94. package/commands/project/open.js +5 -6
  95. package/commands/project/profile/add.js +12 -8
  96. package/commands/project/profile/delete.js +15 -11
  97. package/commands/project/updateDeps.js +9 -6
  98. package/commands/project/upload.js +33 -19
  99. package/commands/project/validate.js +12 -12
  100. package/commands/project/watch.js +32 -19
  101. package/commands/project.js +12 -3
  102. package/commands/sandbox/create.js +18 -45
  103. package/commands/sandbox/delete.js +13 -14
  104. package/commands/secret/addSecret.js +6 -7
  105. package/commands/secret/deleteSecret.js +5 -6
  106. package/commands/secret/listSecret.js +2 -3
  107. package/commands/secret/updateSecret.js +4 -5
  108. package/commands/testAccount/create.d.ts +1 -1
  109. package/commands/testAccount/create.js +25 -17
  110. package/commands/testAccount/createConfig.js +7 -8
  111. package/commands/testAccount/delete.js +27 -18
  112. package/commands/testAccount/importData.js +6 -7
  113. package/commands/upgrade.js +9 -10
  114. package/lang/en.d.ts +248 -14
  115. package/lang/en.js +265 -28
  116. package/lib/accountAuth.js +4 -0
  117. package/lib/app/migrate.js +18 -5
  118. package/lib/buildAccount.d.ts +1 -6
  119. package/lib/buildAccount.js +9 -42
  120. package/lib/commandSuggestion.js +1 -7
  121. package/lib/constants.d.ts +2 -4
  122. package/lib/constants.js +4 -4
  123. package/lib/doctor/Diagnosis.js +5 -5
  124. package/lib/doctor/Doctor.js +7 -7
  125. package/lib/errorHandlers/index.js +4 -3
  126. package/lib/errorHandlers/suppressError.js +4 -0
  127. package/lib/errors/PromptExitError.d.ts +6 -0
  128. package/lib/errors/PromptExitError.js +11 -0
  129. package/lib/generateSelectors.js +1 -2
  130. package/lib/getStartedV2Actions.d.ts +13 -0
  131. package/lib/getStartedV2Actions.js +56 -3
  132. package/lib/hasFeature.js +1 -2
  133. package/lib/link/accountTableUtils.d.ts +10 -0
  134. package/lib/link/accountTableUtils.js +39 -0
  135. package/lib/link/index.d.ts +18 -0
  136. package/lib/link/index.js +185 -0
  137. package/lib/link/linkUtils.d.ts +5 -0
  138. package/lib/link/linkUtils.js +49 -0
  139. package/lib/link/prompts.d.ts +7 -0
  140. package/lib/link/prompts.js +126 -0
  141. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  142. package/lib/link/renderLinkedAccountsTable.js +14 -0
  143. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  144. package/lib/link/warnIfLinkedDirectory.js +9 -0
  145. package/lib/mcp/setup.d.ts +1 -0
  146. package/lib/mcp/setup.js +77 -30
  147. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  148. package/lib/process.d.ts +1 -1
  149. package/lib/process.js +10 -3
  150. package/lib/projects/ProjectLogsManager.js +6 -3
  151. package/lib/projects/components.js +15 -4
  152. package/lib/projects/create/index.js +3 -6
  153. package/lib/projects/create/legacy.js +5 -10
  154. package/lib/projects/create/v2.js +5 -14
  155. package/lib/projects/delete.d.ts +13 -0
  156. package/lib/projects/delete.js +193 -0
  157. package/lib/projects/deploy.d.ts +1 -1
  158. package/lib/projects/deploy.js +2 -2
  159. package/lib/projects/ensureProjectExists.js +1 -2
  160. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  161. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  162. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  163. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  164. package/lib/projects/localDev/DevSessionManager.js +31 -19
  165. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  166. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  167. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  168. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  169. package/lib/projects/localDev/LocalDevState.js +3 -1
  170. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  171. package/lib/projects/localDev/helpers/account.js +21 -30
  172. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  173. package/lib/projects/localDev/helpers/process.js +4 -10
  174. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  175. package/lib/projects/localDev/helpers/project.js +31 -15
  176. package/lib/projects/pollProjectBuildAndDeploy.js +90 -85
  177. package/lib/projects/projectInfo.d.ts +5 -0
  178. package/lib/projects/projectInfo.js +82 -0
  179. package/lib/projects/projectProfiles.d.ts +1 -2
  180. package/lib/projects/projectProfiles.js +5 -17
  181. package/lib/projects/uieLinting.d.ts +17 -3
  182. package/lib/projects/uieLinting.js +93 -28
  183. package/lib/projects/upload.d.ts +1 -0
  184. package/lib/projects/upload.js +59 -49
  185. package/lib/projects/watch.d.ts +2 -1
  186. package/lib/projects/watch.js +32 -24
  187. package/lib/projects/workspaces.d.ts +52 -0
  188. package/lib/projects/workspaces.js +365 -0
  189. package/lib/prompts/createApiSamplePrompt.js +4 -0
  190. package/lib/prompts/downloadProjectPrompt.js +11 -10
  191. package/lib/prompts/installAppPrompt.js +3 -2
  192. package/lib/prompts/personalAccessKeyPrompt.js +3 -2
  193. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  194. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  195. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  196. package/lib/prompts/projectProfilePrompt.js +46 -0
  197. package/lib/prompts/projectsLogsPrompt.js +3 -0
  198. package/lib/prompts/promptUtils.js +4 -2
  199. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  200. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  201. package/lib/sandboxes.d.ts +1 -9
  202. package/lib/sandboxes.js +0 -21
  203. package/lib/serverlessLogs.js +50 -44
  204. package/lib/theme/cmsDevServerProcess.d.ts +14 -0
  205. package/lib/theme/cmsDevServerProcess.js +149 -0
  206. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  207. package/lib/theme/cmsDevServerRunner.js +90 -0
  208. package/lib/theme/migrate.d.ts +1 -1
  209. package/lib/theme/migrate.js +1 -5
  210. package/lib/ui/SpinniesManager.d.ts +1 -0
  211. package/lib/ui/SpinniesManager.js +22 -6
  212. package/lib/ui/accountTable.d.ts +8 -0
  213. package/lib/ui/accountTable.js +67 -0
  214. package/lib/ui/spinniesUtils.d.ts +0 -1
  215. package/lib/ui/spinniesUtils.js +6 -16
  216. package/lib/usageTracking.d.ts +3 -4
  217. package/lib/usageTracking.js +9 -6
  218. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  219. package/lib/yargs/makeYargsBuilder.js +33 -0
  220. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  221. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  222. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  223. package/lib/yargs/parseYargsOrExit.js +25 -0
  224. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  225. package/lib/yargs/strictEnforceBoolean.js +13 -0
  226. package/lib/yargsUtils.d.ts +3 -16
  227. package/lib/yargsUtils.js +3 -48
  228. package/mcp-server/Tool.d.ts +15 -0
  229. package/mcp-server/Tool.js +53 -0
  230. package/mcp-server/server.js +43 -3
  231. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  232. package/mcp-server/tools/cms/HsCreateFunctionTool.js +9 -7
  233. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  234. package/mcp-server/tools/cms/HsCreateModuleTool.js +9 -7
  235. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  236. package/mcp-server/tools/cms/HsCreateTemplateTool.js +9 -7
  237. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  238. package/mcp-server/tools/cms/HsFunctionLogsTool.js +9 -7
  239. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  240. package/mcp-server/tools/cms/HsListFunctionsTool.js +9 -7
  241. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  242. package/mcp-server/tools/cms/HsListTool.js +9 -7
  243. package/mcp-server/tools/index.d.ts +3 -2
  244. package/mcp-server/tools/index.js +24 -22
  245. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
  246. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
  247. package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
  248. package/mcp-server/tools/project/CreateProjectTool.js +16 -18
  249. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  250. package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
  251. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  252. package/mcp-server/tools/project/DeployProjectTool.js +6 -8
  253. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  254. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  255. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  256. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  257. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  258. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  259. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  260. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
  261. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  262. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  263. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
  264. package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
  265. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
  266. package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
  267. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  268. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  269. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
  270. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
  271. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  272. package/mcp-server/tools/project/UploadProjectTools.js +11 -9
  273. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  274. package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
  275. package/mcp-server/tools/project/constants.d.ts +13 -1
  276. package/mcp-server/tools/project/constants.js +13 -16
  277. package/mcp-server/types.d.ts +0 -7
  278. package/mcp-server/types.js +1 -13
  279. package/mcp-server/utils/command.d.ts +5 -0
  280. package/mcp-server/utils/command.js +24 -0
  281. package/mcp-server/utils/feedbackTracking.js +2 -17
  282. package/mcp-server/utils/logger.d.ts +10 -0
  283. package/mcp-server/utils/logger.js +29 -0
  284. package/mcp-server/utils/toolUsageTracking.js +0 -2
  285. package/package.json +15 -11
  286. package/types/Link.d.ts +32 -0
  287. package/types/Link.js +5 -0
  288. package/types/LocalDev.d.ts +5 -0
  289. package/types/PackageJson.d.ts +1 -0
  290. package/types/Projects.d.ts +19 -0
  291. package/types/Prompts.d.ts +1 -0
  292. package/types/Yargs.d.ts +19 -1
  293. package/ui/components/getStarted/GetStartedFlow.js +79 -2
  294. package/ui/components/getStarted/reducer.d.ts +20 -0
  295. package/ui/components/getStarted/reducer.js +36 -0
  296. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  297. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  298. package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
  299. package/ui/lib/constants.d.ts +1 -0
  300. package/ui/lib/constants.js +1 -0
  301. package/api/__tests__/migrate.test.d.ts +0 -1
  302. package/api/__tests__/migrate.test.js +0 -199
  303. package/commands/__tests__/account.test.d.ts +0 -1
  304. package/commands/__tests__/account.test.js +0 -69
  305. package/commands/__tests__/auth.test.d.ts +0 -1
  306. package/commands/__tests__/auth.test.js +0 -43
  307. package/commands/__tests__/cms.test.d.ts +0 -1
  308. package/commands/__tests__/cms.test.js +0 -87
  309. package/commands/__tests__/config.test.d.ts +0 -1
  310. package/commands/__tests__/config.test.js +0 -44
  311. package/commands/__tests__/customObject.test.d.ts +0 -1
  312. package/commands/__tests__/customObject.test.js +0 -68
  313. package/commands/__tests__/doctor.test.d.ts +0 -1
  314. package/commands/__tests__/doctor.test.js +0 -132
  315. package/commands/__tests__/feedback.test.d.ts +0 -1
  316. package/commands/__tests__/feedback.test.js +0 -24
  317. package/commands/__tests__/filemanager.test.d.ts +0 -1
  318. package/commands/__tests__/filemanager.test.js +0 -45
  319. package/commands/__tests__/getStarted.test.d.ts +0 -1
  320. package/commands/__tests__/getStarted.test.js +0 -173
  321. package/commands/__tests__/hubdb.test.d.ts +0 -1
  322. package/commands/__tests__/hubdb.test.js +0 -50
  323. package/commands/__tests__/init.test.d.ts +0 -1
  324. package/commands/__tests__/init.test.js +0 -42
  325. package/commands/__tests__/mcp.test.d.ts +0 -1
  326. package/commands/__tests__/mcp.test.js +0 -46
  327. package/commands/__tests__/open.test.d.ts +0 -1
  328. package/commands/__tests__/open.test.js +0 -58
  329. package/commands/__tests__/project.test.d.ts +0 -1
  330. package/commands/__tests__/project.test.js +0 -125
  331. package/commands/__tests__/sandbox.test.d.ts +0 -1
  332. package/commands/__tests__/sandbox.test.js +0 -44
  333. package/commands/__tests__/secret.test.d.ts +0 -1
  334. package/commands/__tests__/secret.test.js +0 -49
  335. package/commands/__tests__/testAccount.test.d.ts +0 -1
  336. package/commands/__tests__/testAccount.test.js +0 -57
  337. package/commands/__tests__/upgrade.test.d.ts +0 -1
  338. package/commands/__tests__/upgrade.test.js +0 -309
  339. package/commands/account/__tests__/auth.test.d.ts +0 -1
  340. package/commands/account/__tests__/auth.test.js +0 -206
  341. package/commands/account/__tests__/clean.test.d.ts +0 -1
  342. package/commands/account/__tests__/clean.test.js +0 -28
  343. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  344. package/commands/account/__tests__/createOverride.test.js +0 -32
  345. package/commands/account/__tests__/info.test.d.ts +0 -1
  346. package/commands/account/__tests__/info.test.js +0 -28
  347. package/commands/account/__tests__/list.test.d.ts +0 -1
  348. package/commands/account/__tests__/list.test.js +0 -153
  349. package/commands/account/__tests__/remove.test.d.ts +0 -1
  350. package/commands/account/__tests__/remove.test.js +0 -36
  351. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  352. package/commands/account/__tests__/removeOverride.js +0 -25
  353. package/commands/account/__tests__/rename.test.d.ts +0 -1
  354. package/commands/account/__tests__/rename.test.js +0 -82
  355. package/commands/account/__tests__/use.test.d.ts +0 -1
  356. package/commands/account/__tests__/use.test.js +0 -170
  357. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  358. package/commands/app/__tests__/migrate.test.js +0 -111
  359. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  360. package/commands/app/secret/__tests__/add.test.js +0 -140
  361. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  362. package/commands/app/secret/__tests__/delete.test.js +0 -28
  363. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  364. package/commands/app/secret/__tests__/list.test.js +0 -25
  365. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  366. package/commands/app/secret/__tests__/update.test.js +0 -28
  367. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  368. package/commands/cms/__tests__/delete.test.js +0 -39
  369. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  370. package/commands/cms/__tests__/fetch.test.js +0 -156
  371. package/commands/cms/__tests__/function.test.d.ts +0 -1
  372. package/commands/cms/__tests__/function.test.js +0 -50
  373. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  374. package/commands/cms/__tests__/lint.test.js +0 -33
  375. package/commands/cms/__tests__/list.test.d.ts +0 -1
  376. package/commands/cms/__tests__/list.test.js +0 -42
  377. package/commands/cms/__tests__/module.test.d.ts +0 -1
  378. package/commands/cms/__tests__/module.test.js +0 -45
  379. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  380. package/commands/cms/__tests__/mv.test.js +0 -46
  381. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  382. package/commands/cms/__tests__/theme.test.js +0 -54
  383. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  384. package/commands/cms/__tests__/upload.test.js +0 -308
  385. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  386. package/commands/cms/__tests__/watch.test.js +0 -212
  387. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  388. package/commands/cms/function/__tests__/logs.test.js +0 -70
  389. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  390. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  391. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  392. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  393. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  394. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  395. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  396. package/commands/customObject/__tests__/create.test.js +0 -40
  397. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  398. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  399. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  400. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  401. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  402. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  403. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  404. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  405. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  406. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  407. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  408. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  409. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  410. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  411. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  412. package/commands/filemanager/__tests__/upload.test.js +0 -191
  413. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  414. package/commands/hubdb/__tests__/clear.test.js +0 -28
  415. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  416. package/commands/hubdb/__tests__/create.test.js +0 -28
  417. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  418. package/commands/hubdb/__tests__/delete.test.js +0 -28
  419. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  420. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  421. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  422. package/commands/hubdb/__tests__/list.test.js +0 -88
  423. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  424. package/commands/mcp/__tests__/setup.test.js +0 -26
  425. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  426. package/commands/mcp/__tests__/start.test.js +0 -137
  427. package/commands/project/__tests__/add.test.d.ts +0 -1
  428. package/commands/project/__tests__/add.test.js +0 -107
  429. package/commands/project/__tests__/create.test.d.ts +0 -1
  430. package/commands/project/__tests__/create.test.js +0 -97
  431. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  432. package/commands/project/__tests__/deploy.test.js +0 -307
  433. package/commands/project/__tests__/dev.test.d.ts +0 -1
  434. package/commands/project/__tests__/dev.test.js +0 -273
  435. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  436. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  437. package/commands/project/__tests__/download.test.d.ts +0 -1
  438. package/commands/project/__tests__/download.test.js +0 -39
  439. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  440. package/commands/project/__tests__/installDeps.test.js +0 -140
  441. package/commands/project/__tests__/lint.test.d.ts +0 -1
  442. package/commands/project/__tests__/lint.test.js +0 -704
  443. package/commands/project/__tests__/list.test.d.ts +0 -1
  444. package/commands/project/__tests__/list.test.js +0 -31
  445. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  446. package/commands/project/__tests__/listBuilds.test.js +0 -38
  447. package/commands/project/__tests__/logs.test.d.ts +0 -1
  448. package/commands/project/__tests__/logs.test.js +0 -202
  449. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  450. package/commands/project/__tests__/migrate.test.js +0 -106
  451. package/commands/project/__tests__/open.test.d.ts +0 -1
  452. package/commands/project/__tests__/open.test.js +0 -39
  453. package/commands/project/__tests__/profile.test.d.ts +0 -1
  454. package/commands/project/__tests__/profile.test.js +0 -42
  455. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  456. package/commands/project/__tests__/updateDeps.test.js +0 -140
  457. package/commands/project/__tests__/upload.test.d.ts +0 -1
  458. package/commands/project/__tests__/upload.test.js +0 -234
  459. package/commands/project/__tests__/validate.test.d.ts +0 -1
  460. package/commands/project/__tests__/validate.test.js +0 -381
  461. package/commands/project/__tests__/watch.test.d.ts +0 -1
  462. package/commands/project/__tests__/watch.test.js +0 -35
  463. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  464. package/commands/sandbox/__tests__/create.test.js +0 -245
  465. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  466. package/commands/sandbox/__tests__/delete.test.js +0 -31
  467. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  468. package/commands/secret/__tests__/addSecret.test.js +0 -162
  469. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  470. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  471. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  472. package/commands/secret/__tests__/listSecret.test.js +0 -29
  473. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  474. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  475. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  476. package/commands/testAccount/__tests__/create.test.js +0 -106
  477. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  478. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  479. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  480. package/commands/testAccount/__tests__/delete.test.js +0 -29
  481. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  482. package/commands/testAccount/__tests__/importData.test.js +0 -92
  483. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  484. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  485. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  486. package/lib/__tests__/accountAuth.test.js +0 -258
  487. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  488. package/lib/__tests__/accountTypes.test.js +0 -98
  489. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  490. package/lib/__tests__/buildAccount.test.js +0 -262
  491. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  492. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  493. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  494. package/lib/__tests__/commandSuggestion.test.js +0 -119
  495. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  496. package/lib/__tests__/commonOpts.test.js +0 -80
  497. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  498. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  499. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  500. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  501. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  502. package/lib/__tests__/hasFeature.test.js +0 -167
  503. package/lib/__tests__/http.test.d.ts +0 -1
  504. package/lib/__tests__/http.test.js +0 -40
  505. package/lib/__tests__/importData.test.d.ts +0 -1
  506. package/lib/__tests__/importData.test.js +0 -98
  507. package/lib/__tests__/npmCli.test.d.ts +0 -1
  508. package/lib/__tests__/npmCli.test.js +0 -84
  509. package/lib/__tests__/oauth.test.d.ts +0 -1
  510. package/lib/__tests__/oauth.test.js +0 -109
  511. package/lib/__tests__/parsing.test.d.ts +0 -1
  512. package/lib/__tests__/parsing.test.js +0 -34
  513. package/lib/__tests__/polling.test.d.ts +0 -1
  514. package/lib/__tests__/polling.test.js +0 -76
  515. package/lib/__tests__/process.test.d.ts +0 -1
  516. package/lib/__tests__/process.test.js +0 -89
  517. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  518. package/lib/__tests__/sandboxSync.test.js +0 -147
  519. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  520. package/lib/__tests__/sandboxes.test.js +0 -156
  521. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  522. package/lib/__tests__/serverlessLogs.test.js +0 -148
  523. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  524. package/lib/__tests__/usageTracking.test.js +0 -197
  525. package/lib/__tests__/validation.test.d.ts +0 -1
  526. package/lib/__tests__/validation.test.js +0 -143
  527. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  528. package/lib/__tests__/yargsUtils.test.js +0 -124
  529. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  530. package/lib/app/__tests__/migrate.test.js +0 -638
  531. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  532. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  533. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  534. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  535. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  536. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  537. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  538. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  539. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  540. package/lib/mcp/__tests__/setup.test.js +0 -194
  541. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  542. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  543. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  544. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  545. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  546. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  547. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  548. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  549. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  550. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  551. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  552. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  553. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  554. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  555. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  556. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  557. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  558. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  559. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  560. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  561. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  562. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  563. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  564. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  565. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  566. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  567. package/lib/projects/__tests__/components.test.d.ts +0 -1
  568. package/lib/projects/__tests__/components.test.js +0 -426
  569. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  570. package/lib/projects/__tests__/deploy.test.js +0 -231
  571. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  572. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  573. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  574. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  575. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  576. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  577. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  578. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  579. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  580. package/lib/projects/__tests__/projects.test.js +0 -58
  581. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  582. package/lib/projects/__tests__/structure.test.js +0 -210
  583. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  584. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  585. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  586. package/lib/projects/__tests__/upload.test.js +0 -183
  587. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  588. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  589. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  590. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  591. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  592. package/lib/projects/create/__tests__/legacy.test.js +0 -90
  593. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  594. package/lib/projects/create/__tests__/v2.test.js +0 -257
  595. package/lib/projects/platformVersion.d.ts +0 -9
  596. package/lib/projects/platformVersion.js +0 -39
  597. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  598. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  599. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  600. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  601. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  602. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  603. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  604. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  605. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  606. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  607. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  608. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  609. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  610. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  611. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  612. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  613. package/lib/sandboxSync.d.ts +0 -4
  614. package/lib/sandboxSync.js +0 -102
  615. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  616. package/lib/theme/__tests__/migrate.test.js +0 -256
  617. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  618. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  619. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  620. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  621. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  622. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
  623. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  624. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
  625. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  626. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
  627. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  628. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
  629. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  630. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
  631. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  632. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
  633. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  634. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
  635. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  636. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
  637. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  638. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
  639. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  640. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
  641. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  642. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  643. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  644. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  645. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  646. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
  647. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  648. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  649. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  650. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  651. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  652. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  653. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  654. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  655. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  656. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  657. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  658. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
  659. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  660. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  661. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  662. package/mcp-server/utils/__tests__/command.test.js +0 -45
  663. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  664. package/mcp-server/utils/__tests__/content.test.js +0 -164
  665. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  666. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
  667. package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
  668. package/mcp-server/utils/__tests__/project.test.js +0 -140
  669. package/mcp-server/utils/project.d.ts +0 -5
  670. package/mcp-server/utils/project.js +0 -18
@@ -1,631 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import util from 'util';
4
- import { uiLogger } from '../../ui/logger.js';
5
- import * as dependencyManagement from '../../dependencyManagement.js';
6
- import { isEslintInstalled, areAllLintPackagesInstalled, getMissingLintPackages, lintPackages, lintPackagesInDirectory, displayLintResults, hasEslintConfig, hasDeprecatedEslintConfig, getDeprecatedEslintConfigFiles, createEslintConfig, } from '../uieLinting.js';
7
- import { clearPackageJsonCache } from '../../npm/packageJson.js';
8
- vi.mock('fs');
9
- vi.mock('../../dependencyManagement.js', async () => {
10
- const actual = await vi.importActual('../../dependencyManagement.js');
11
- return {
12
- ...actual,
13
- getProjectPackageJsonLocations: vi.fn(),
14
- };
15
- });
16
- vi.mock('node:child_process');
17
- vi.mock('util');
18
- const readFileSyncSpy = vi.spyOn(fs, 'readFileSync');
19
- const existsSyncSpy = vi.spyOn(fs, 'existsSync');
20
- const getProjectPackageJsonLocationsSpy = vi.spyOn(dependencyManagement, 'getProjectPackageJsonLocations');
21
- // Mock exec function
22
- const mockExec = vi.fn();
23
- vi.mocked(util.promisify).mockReturnValue(mockExec);
24
- describe('lib/linting', () => {
25
- afterEach(() => {
26
- clearPackageJsonCache();
27
- });
28
- describe('isEslintInstalled', () => {
29
- it('should return true if eslint is in package.json and node_modules', () => {
30
- const directory = '/test/project/component1';
31
- readFileSyncSpy.mockReturnValueOnce(JSON.stringify({
32
- dependencies: {
33
- eslint: '^8.0.0',
34
- },
35
- }));
36
- existsSyncSpy.mockReturnValueOnce(true);
37
- const result = isEslintInstalled(directory);
38
- expect(result).toBe(true);
39
- expect(existsSyncSpy).toHaveBeenCalledWith(path.join(directory, 'node_modules', 'eslint'));
40
- });
41
- it('should return false if eslint is in package.json but not in node_modules', () => {
42
- const directory = '/test/project/component1';
43
- readFileSyncSpy.mockReturnValueOnce(JSON.stringify({
44
- dependencies: {
45
- eslint: '^8.0.0',
46
- },
47
- }));
48
- existsSyncSpy.mockReturnValueOnce(false);
49
- const result = isEslintInstalled(directory);
50
- expect(result).toBe(false);
51
- });
52
- it('should return false if eslint is not in package.json', () => {
53
- const directory = '/test/project/component1';
54
- readFileSyncSpy.mockReturnValueOnce(JSON.stringify({
55
- dependencies: {
56
- typescript: '^5.0.0',
57
- },
58
- }));
59
- existsSyncSpy.mockReturnValueOnce(false);
60
- const result = isEslintInstalled(directory);
61
- expect(result).toBe(false);
62
- });
63
- it('should return false if eslint is only in node_modules (no package.json entry)', () => {
64
- const directory = '/test/project/component1';
65
- readFileSyncSpy.mockReturnValueOnce(JSON.stringify({
66
- dependencies: {
67
- typescript: '^5.0.0',
68
- },
69
- }));
70
- existsSyncSpy.mockReturnValueOnce(true);
71
- const result = isEslintInstalled(directory);
72
- expect(result).toBe(false);
73
- });
74
- it('should return true if eslint is in both node_modules and package.json', () => {
75
- const directory = '/test/project/component1';
76
- readFileSyncSpy.mockReturnValueOnce(JSON.stringify({
77
- devDependencies: {
78
- eslint: '^9.0.0',
79
- },
80
- }));
81
- existsSyncSpy.mockReturnValueOnce(true);
82
- const result = isEslintInstalled(directory);
83
- expect(result).toBe(true);
84
- });
85
- });
86
- describe('areAllLintPackagesInstalled', () => {
87
- it('should return true if all packages are installed', () => {
88
- const directory = '/test/project/component1';
89
- const packageJson = JSON.stringify({
90
- devDependencies: {
91
- eslint: '^9.0.0',
92
- '@typescript-eslint/eslint-plugin': '^8.46.4',
93
- '@typescript-eslint/parser': '^8.46.4',
94
- 'typescript-eslint': '^8.46.4',
95
- jiti: '^2.6.1',
96
- },
97
- });
98
- readFileSyncSpy.mockImplementation(() => packageJson);
99
- existsSyncSpy.mockImplementation(() => true);
100
- const result = areAllLintPackagesInstalled(directory);
101
- expect(result).toBe(true);
102
- });
103
- it('should return false if eslint is missing', () => {
104
- const directory = '/test/project/component1';
105
- readFileSyncSpy.mockImplementation(() => JSON.stringify({ dependencies: {} }));
106
- existsSyncSpy.mockImplementation(() => false);
107
- const result = areAllLintPackagesInstalled(directory);
108
- expect(result).toBe(false);
109
- });
110
- it('should return false if @typescript-eslint/eslint-plugin is missing', () => {
111
- const directory = '/test/project/component1';
112
- const packageJson = JSON.stringify({
113
- devDependencies: {
114
- eslint: '^9.0.0',
115
- '@typescript-eslint/parser': '^8.46.4',
116
- // @typescript-eslint/eslint-plugin is missing
117
- },
118
- });
119
- readFileSyncSpy.mockImplementation(() => packageJson);
120
- existsSyncSpy.mockImplementation(path => {
121
- // Only @typescript-eslint/eslint-plugin is missing from node_modules
122
- return !String(path).includes('@typescript-eslint/eslint-plugin');
123
- });
124
- const result = areAllLintPackagesInstalled(directory);
125
- expect(result).toBe(false);
126
- });
127
- it('should return false if @typescript-eslint/parser is missing', () => {
128
- const directory = '/test/project/component1';
129
- const packageJson = JSON.stringify({
130
- devDependencies: {
131
- eslint: '^9.0.0',
132
- '@typescript-eslint/eslint-plugin': '^8.46.4',
133
- // @typescript-eslint/parser is missing
134
- },
135
- });
136
- readFileSyncSpy.mockImplementation(() => packageJson);
137
- existsSyncSpy.mockImplementation(path => {
138
- // Only @typescript-eslint/parser is missing from node_modules
139
- return !String(path).includes('@typescript-eslint/parser');
140
- });
141
- const result = areAllLintPackagesInstalled(directory);
142
- expect(result).toBe(false);
143
- });
144
- it('should return false if typescript-eslint is missing', () => {
145
- const directory = '/test/project/component1';
146
- const packageJson = JSON.stringify({
147
- devDependencies: {
148
- eslint: '^9.0.0',
149
- '@typescript-eslint/eslint-plugin': '^8.46.4',
150
- '@typescript-eslint/parser': '^8.46.4',
151
- // typescript-eslint is missing
152
- },
153
- });
154
- readFileSyncSpy.mockImplementation(() => packageJson);
155
- existsSyncSpy.mockImplementation(path => {
156
- // Only typescript-eslint is missing from node_modules
157
- return !String(path).includes('typescript-eslint');
158
- });
159
- const result = areAllLintPackagesInstalled(directory);
160
- expect(result).toBe(false);
161
- });
162
- it('should return false if jiti is missing', () => {
163
- const directory = '/test/project/component1';
164
- const packageJson = JSON.stringify({
165
- devDependencies: {
166
- eslint: '^9.0.0',
167
- '@typescript-eslint/eslint-plugin': '^8.46.4',
168
- '@typescript-eslint/parser': '^8.46.4',
169
- 'typescript-eslint': '^8.46.4',
170
- // jiti is missing
171
- },
172
- });
173
- readFileSyncSpy.mockImplementation(() => packageJson);
174
- existsSyncSpy.mockImplementation(path => {
175
- // Only jiti is missing from node_modules
176
- return !String(path).includes('jiti');
177
- });
178
- const result = areAllLintPackagesInstalled(directory);
179
- expect(result).toBe(false);
180
- });
181
- });
182
- describe('getMissingLintPackages', () => {
183
- it('should return empty array if all packages are installed with correct versions', () => {
184
- const directory = '/test/project/component1';
185
- const packageJson = JSON.stringify({
186
- devDependencies: {
187
- eslint: '^9.0.0',
188
- '@typescript-eslint/eslint-plugin': '^8.46.4',
189
- '@typescript-eslint/parser': '^8.46.4',
190
- 'typescript-eslint': '^8.46.4',
191
- jiti: '^2.6.1',
192
- },
193
- });
194
- readFileSyncSpy.mockImplementation(() => packageJson);
195
- existsSyncSpy.mockImplementation(() => true);
196
- const result = getMissingLintPackages(directory);
197
- expect(result).toEqual({
198
- missingPackages: [],
199
- });
200
- });
201
- it('should return packages that are in package.json but not installed', () => {
202
- const directory = '/test/project/component1';
203
- const packageJson = JSON.stringify({
204
- devDependencies: {
205
- eslint: '^9.0.0',
206
- '@typescript-eslint/eslint-plugin': '^8.46.4',
207
- '@typescript-eslint/parser': '^8.46.4',
208
- 'typescript-eslint': '^8.46.4',
209
- jiti: '^2.6.1',
210
- },
211
- });
212
- readFileSyncSpy.mockImplementation(() => packageJson);
213
- existsSyncSpy.mockImplementation(() => false);
214
- const result = getMissingLintPackages(directory);
215
- expect(result).toEqual({
216
- missingPackages: [
217
- 'eslint',
218
- '@typescript-eslint/eslint-plugin',
219
- '@typescript-eslint/parser',
220
- 'typescript-eslint',
221
- 'jiti',
222
- ],
223
- });
224
- });
225
- it('should return packages that are not in package.json', () => {
226
- const directory = '/test/project/component1';
227
- readFileSyncSpy.mockReturnValue(JSON.stringify({ dependencies: {} }));
228
- existsSyncSpy.mockReturnValue(false);
229
- const result = getMissingLintPackages(directory);
230
- expect(result).toEqual({
231
- missingPackages: [
232
- 'eslint',
233
- '@typescript-eslint/eslint-plugin',
234
- '@typescript-eslint/parser',
235
- 'typescript-eslint',
236
- 'jiti',
237
- ],
238
- });
239
- });
240
- it('should return packages that are missing in mixed scenarios', () => {
241
- const directory = '/test/project/component1';
242
- let readCount = 0;
243
- readFileSyncSpy.mockImplementation(() => {
244
- readCount++;
245
- if (readCount === 1) {
246
- // eslint in package.json
247
- return JSON.stringify({ devDependencies: { eslint: '^9.0.0' } });
248
- }
249
- // Others not in package.json
250
- return JSON.stringify({ dependencies: {} });
251
- });
252
- existsSyncSpy.mockReturnValue(false);
253
- const result = getMissingLintPackages(directory);
254
- expect(result).toEqual({
255
- missingPackages: [
256
- 'eslint',
257
- '@typescript-eslint/eslint-plugin',
258
- '@typescript-eslint/parser',
259
- 'typescript-eslint',
260
- 'jiti',
261
- ],
262
- });
263
- });
264
- it('should return packages that are in node_modules but not in package.json', () => {
265
- const directory = '/test/project/component1';
266
- readFileSyncSpy.mockReturnValue(JSON.stringify({ dependencies: {} }));
267
- existsSyncSpy.mockReturnValue(true);
268
- const result = getMissingLintPackages(directory);
269
- expect(result).toEqual({
270
- missingPackages: [
271
- 'eslint',
272
- '@typescript-eslint/eslint-plugin',
273
- '@typescript-eslint/parser',
274
- 'typescript-eslint',
275
- 'jiti',
276
- ],
277
- });
278
- });
279
- it('should return packages that have versions below minimum', () => {
280
- const directory = '/test/project/component1';
281
- const packageJson = JSON.stringify({
282
- devDependencies: {
283
- eslint: '^8.0.0',
284
- '@typescript-eslint/eslint-plugin': '^7.0.0',
285
- '@typescript-eslint/parser': '^8.0.0',
286
- 'typescript-eslint': '^8.0.0',
287
- jiti: '^2.0.0',
288
- },
289
- });
290
- readFileSyncSpy.mockImplementation(() => packageJson);
291
- existsSyncSpy.mockImplementation(() => true);
292
- const result = getMissingLintPackages(directory);
293
- expect(result).toEqual({
294
- missingPackages: [
295
- 'eslint',
296
- '@typescript-eslint/eslint-plugin',
297
- '@typescript-eslint/parser',
298
- 'typescript-eslint',
299
- 'jiti',
300
- ],
301
- });
302
- });
303
- it('should return only packages with wrong versions when others are correct', () => {
304
- const directory = '/test/project/component1';
305
- const packageJson = JSON.stringify({
306
- devDependencies: {
307
- eslint: '^8.0.0',
308
- '@typescript-eslint/eslint-plugin': '^8.46.4',
309
- '@typescript-eslint/parser': '^8.46.4',
310
- 'typescript-eslint': '^8.46.4',
311
- jiti: '^2.6.1',
312
- },
313
- });
314
- readFileSyncSpy.mockImplementation(() => packageJson);
315
- existsSyncSpy.mockImplementation(() => true);
316
- const result = getMissingLintPackages(directory);
317
- expect(result).toEqual({
318
- missingPackages: ['eslint'],
319
- });
320
- });
321
- });
322
- describe('hasEslintConfig', () => {
323
- it('should return true if eslint.config.mts exists', () => {
324
- const directory = '/test/project/component1';
325
- existsSyncSpy.mockReturnValueOnce(true);
326
- const result = hasEslintConfig(directory);
327
- expect(result).toBe(true);
328
- });
329
- it('should return true if eslint.config.ts exists', () => {
330
- const directory = '/test/project/component1';
331
- existsSyncSpy
332
- .mockReturnValueOnce(false) // eslint.config.mts
333
- .mockReturnValueOnce(true); // eslint.config.ts
334
- const result = hasEslintConfig(directory);
335
- expect(result).toBe(true);
336
- });
337
- it('should return true if eslint.config.cts exists', () => {
338
- const directory = '/test/project/component1';
339
- existsSyncSpy
340
- .mockReturnValueOnce(false) // eslint.config.mts
341
- .mockReturnValueOnce(false) // eslint.config.ts
342
- .mockReturnValueOnce(true); // eslint.config.cts
343
- const result = hasEslintConfig(directory);
344
- expect(result).toBe(true);
345
- });
346
- it('should return true if eslint.config.js exists', () => {
347
- const directory = '/test/project/component1';
348
- existsSyncSpy
349
- .mockReturnValueOnce(false) // eslint.config.mts
350
- .mockReturnValueOnce(false) // eslint.config.ts
351
- .mockReturnValueOnce(false) // eslint.config.cts
352
- .mockReturnValueOnce(true); // eslint.config.js
353
- const result = hasEslintConfig(directory);
354
- expect(result).toBe(true);
355
- });
356
- it('should return true if eslint.config.mjs exists', () => {
357
- const directory = '/test/project/component1';
358
- existsSyncSpy
359
- .mockReturnValueOnce(false) // eslint.config.mts
360
- .mockReturnValueOnce(false) // eslint.config.ts
361
- .mockReturnValueOnce(false) // eslint.config.cts
362
- .mockReturnValueOnce(false) // eslint.config.js
363
- .mockReturnValueOnce(true); // eslint.config.mjs
364
- const result = hasEslintConfig(directory);
365
- expect(result).toBe(true);
366
- });
367
- it('should return true if eslint.config.cjs exists', () => {
368
- const directory = '/test/project/component1';
369
- existsSyncSpy
370
- .mockReturnValueOnce(false) // eslint.config.mts
371
- .mockReturnValueOnce(false) // eslint.config.ts
372
- .mockReturnValueOnce(false) // eslint.config.cts
373
- .mockReturnValueOnce(false) // eslint.config.js
374
- .mockReturnValueOnce(false) // eslint.config.mjs
375
- .mockReturnValueOnce(true); // eslint.config.cjs
376
- const result = hasEslintConfig(directory);
377
- expect(result).toBe(true);
378
- });
379
- it('should return false if no modern config file exists', () => {
380
- const directory = '/test/project/component1';
381
- existsSyncSpy.mockReturnValue(false);
382
- const result = hasEslintConfig(directory);
383
- expect(result).toBe(false);
384
- });
385
- it('should return false if only deprecated config files exist', () => {
386
- const directory = '/test/project/component1';
387
- existsSyncSpy.mockReturnValue(false); // No modern config files
388
- const result = hasEslintConfig(directory);
389
- expect(result).toBe(false);
390
- });
391
- });
392
- describe('hasDeprecatedEslintConfig', () => {
393
- it('should return true if .eslintrc.js exists', () => {
394
- const directory = '/test/project/component1';
395
- existsSyncSpy.mockReturnValueOnce(true);
396
- const result = hasDeprecatedEslintConfig(directory);
397
- expect(result).toBe(true);
398
- });
399
- it('should return true if .eslintrc.json exists', () => {
400
- const directory = '/test/project/component1';
401
- existsSyncSpy
402
- .mockReturnValueOnce(false) // .eslintrc.js
403
- .mockReturnValueOnce(false) // .eslintrc.cjs
404
- .mockReturnValueOnce(false) // .eslintrc.yaml
405
- .mockReturnValueOnce(false) // .eslintrc.yml
406
- .mockReturnValueOnce(true); // .eslintrc.json
407
- const result = hasDeprecatedEslintConfig(directory);
408
- expect(result).toBe(true);
409
- });
410
- it('should return false if no deprecated config file exists', () => {
411
- const directory = '/test/project/component1';
412
- existsSyncSpy.mockReturnValue(false);
413
- const result = hasDeprecatedEslintConfig(directory);
414
- expect(result).toBe(false);
415
- });
416
- });
417
- describe('getDeprecatedEslintConfigFiles', () => {
418
- it('should return array of deprecated config files that exist', () => {
419
- const directory = '/test/project/component1';
420
- existsSyncSpy
421
- .mockReturnValueOnce(true) // .eslintrc.js
422
- .mockReturnValueOnce(false) // .eslintrc.cjs
423
- .mockReturnValueOnce(false) // .eslintrc.yaml
424
- .mockReturnValueOnce(false) // .eslintrc.yml
425
- .mockReturnValueOnce(true) // .eslintrc.json
426
- .mockReturnValueOnce(false); // .eslintrc
427
- const result = getDeprecatedEslintConfigFiles(directory);
428
- expect(result).toEqual(['.eslintrc.js', '.eslintrc.json']);
429
- });
430
- it('should return empty array if no deprecated config files exist', () => {
431
- const directory = '/test/project/component1';
432
- existsSyncSpy.mockReturnValue(false);
433
- const result = getDeprecatedEslintConfigFiles(directory);
434
- expect(result).toEqual([]);
435
- });
436
- });
437
- describe('createEslintConfig', () => {
438
- const writeFileSyncSpy = vi.spyOn(fs, 'writeFileSync');
439
- it('should create eslint.config.mts with template content', () => {
440
- const directory = '/test/project/component1';
441
- const result = createEslintConfig(directory);
442
- expect(writeFileSyncSpy).toHaveBeenCalledWith(path.join(directory, 'eslint.config.mts'), expect.stringContaining('@typescript-eslint/parser'), 'utf-8');
443
- expect(writeFileSyncSpy).toHaveBeenCalledWith(path.join(directory, 'eslint.config.mts'), expect.stringContaining('"no-console": ["warn"'), 'utf-8');
444
- // Result is a relative path from process.cwd() to the config file
445
- expect(result).toContain('eslint.config.mts');
446
- });
447
- it('should log error if write fails', () => {
448
- const directory = '/test/project/component1';
449
- writeFileSyncSpy.mockImplementationOnce(() => {
450
- throw new Error('Write failed');
451
- });
452
- expect(() => createEslintConfig(directory)).toThrow();
453
- expect(uiLogger.error).toHaveBeenCalledWith(expect.stringContaining('Failed to create ESLint configuration'));
454
- });
455
- });
456
- describe('lintPackagesInDirectory', () => {
457
- it('should execute eslint and return success with output', async () => {
458
- const directory = '/test/project/component1';
459
- mockExec.mockResolvedValueOnce({
460
- stdout: 'All files passed!',
461
- stderr: '',
462
- });
463
- const result = await lintPackagesInDirectory(directory);
464
- expect(mockExec).toHaveBeenCalledWith('npx eslint . --color', {
465
- cwd: directory,
466
- maxBuffer: 10 * 1024 * 1024,
467
- });
468
- expect(result.success).toBe(true);
469
- expect(result.output).toContain('/test/project/component1');
470
- expect(result.output).toContain('All files passed!');
471
- });
472
- it('should use relative path when projectDir is provided', async () => {
473
- const directory = '/test/project/component1';
474
- const projectDir = '/test/project';
475
- mockExec.mockResolvedValueOnce({ stdout: '', stderr: '' });
476
- const result = await lintPackagesInDirectory(directory, projectDir);
477
- expect(result.output).toContain('component1:');
478
- expect(result.output).toContain('No linting issues found.');
479
- });
480
- it('should return false and include errors in output when eslint fails', async () => {
481
- const directory = '/test/project/component1';
482
- const error = {
483
- stdout: 'Error: Linting failed\n /test/file.ts\n 1:1 error Missing semicolon',
484
- stderr: '',
485
- code: 1,
486
- };
487
- mockExec.mockRejectedValueOnce(error);
488
- const result = await lintPackagesInDirectory(directory);
489
- expect(result.success).toBe(false);
490
- expect(result.output).toContain(error.stdout);
491
- });
492
- it('should handle errors with stderr', async () => {
493
- const directory = '/test/project/component1';
494
- const error = {
495
- stdout: '',
496
- stderr: 'ESLint configuration error',
497
- code: 2,
498
- };
499
- mockExec.mockRejectedValueOnce(error);
500
- const result = await lintPackagesInDirectory(directory);
501
- expect(result.success).toBe(false);
502
- expect(result.output).toContain(error.stderr);
503
- });
504
- });
505
- describe('lintPackages', () => {
506
- it('should return success true when all directories pass linting', async () => {
507
- const locations = [
508
- '/test/project/component1',
509
- '/test/project/component2',
510
- ];
511
- mockExec.mockResolvedValue({ stdout: '', stderr: '' });
512
- const result = await lintPackages(locations);
513
- expect(mockExec).toHaveBeenCalledTimes(2);
514
- expect(result.success).toBe(true);
515
- expect(result.results).toHaveLength(2);
516
- expect(result.results[0].success).toBe(true);
517
- expect(result.results[1].success).toBe(true);
518
- });
519
- it('should return success false when some directories fail', async () => {
520
- const locations = [
521
- '/test/project/component1',
522
- '/test/project/component2',
523
- ];
524
- const projectDir = '/test/project';
525
- mockExec
526
- .mockResolvedValueOnce({ stdout: '', stderr: '' }) // component1 passes
527
- .mockRejectedValueOnce({ stdout: 'errors', stderr: '', code: 1 }); // component2 fails
528
- const result = await lintPackages(locations, projectDir);
529
- expect(result.success).toBe(false);
530
- expect(result.results).toHaveLength(2);
531
- expect(result.results[0].location).toBe('component1');
532
- expect(result.results[0].success).toBe(true);
533
- expect(result.results[1].location).toBe('component2');
534
- expect(result.results[1].success).toBe(false);
535
- });
536
- it('should handle multiple failures', async () => {
537
- const locations = [
538
- '/test/project/component1',
539
- '/test/project/component2',
540
- '/test/project/component3',
541
- ];
542
- const projectDir = '/test/project';
543
- mockExec
544
- .mockRejectedValueOnce({ stdout: 'errors', stderr: '', code: 1 })
545
- .mockResolvedValueOnce({ stdout: '', stderr: '' })
546
- .mockRejectedValueOnce({ stdout: 'errors', stderr: '', code: 1 });
547
- const result = await lintPackages(locations, projectDir);
548
- expect(result.success).toBe(false);
549
- expect(result.results).toHaveLength(3);
550
- expect(result.results[0].success).toBe(false);
551
- expect(result.results[1].success).toBe(true);
552
- expect(result.results[2].success).toBe(false);
553
- });
554
- it('should get package.json locations if none provided', async () => {
555
- const locations = ['/test/project/component1'];
556
- getProjectPackageJsonLocationsSpy.mockResolvedValueOnce(locations);
557
- mockExec.mockResolvedValueOnce({ stdout: '', stderr: '' });
558
- await lintPackages();
559
- expect(getProjectPackageJsonLocationsSpy).toHaveBeenCalledTimes(1);
560
- expect(mockExec).toHaveBeenCalledWith('npx eslint . --color', {
561
- cwd: locations[0],
562
- maxBuffer: 10 * 1024 * 1024,
563
- });
564
- });
565
- it('should handle empty locations array', async () => {
566
- const result = await lintPackages([]);
567
- expect(mockExec).not.toHaveBeenCalled();
568
- expect(result.success).toBe(true);
569
- expect(result.results).toEqual([]);
570
- });
571
- });
572
- describe('displayLintResults', () => {
573
- it('should display output and summary for all passing results', () => {
574
- const results = [
575
- {
576
- location: 'component1',
577
- success: true,
578
- output: '\ncomponent1:\n No linting issues found.\n',
579
- },
580
- {
581
- location: 'component2',
582
- success: true,
583
- output: '\ncomponent2:\n No linting issues found.\n',
584
- },
585
- ];
586
- displayLintResults(results);
587
- expect(uiLogger.log).toHaveBeenCalledWith(results[0].output);
588
- expect(uiLogger.log).toHaveBeenCalledWith(results[1].output);
589
- expect(uiLogger.success).toHaveBeenCalledWith('Linting passed in 2 directories:');
590
- expect(uiLogger.log).toHaveBeenCalledWith(' ✓ component1');
591
- expect(uiLogger.log).toHaveBeenCalledWith(' ✓ component2');
592
- });
593
- it('should display output and summary with mixed results', () => {
594
- const results = [
595
- {
596
- location: 'component1',
597
- success: true,
598
- output: '\ncomponent1:\n No linting issues found.\n',
599
- },
600
- {
601
- location: 'component2',
602
- success: false,
603
- output: '\ncomponent2:\n Linting errors found.\n',
604
- },
605
- ];
606
- displayLintResults(results);
607
- expect(uiLogger.success).toHaveBeenCalledWith('Linting passed in 1 directory:');
608
- expect(uiLogger.log).toHaveBeenCalledWith(' ✓ component1');
609
- expect(uiLogger.error).toHaveBeenCalledWith('Linting failed in 1 directory:');
610
- expect(uiLogger.log).toHaveBeenCalledWith(' ✗ component2');
611
- });
612
- it('should display only failures when all fail', () => {
613
- const results = [
614
- {
615
- location: 'component1',
616
- success: false,
617
- output: '\ncomponent1:\n Errors.\n',
618
- },
619
- {
620
- location: 'component2',
621
- success: false,
622
- output: '\ncomponent2:\n Errors.\n',
623
- },
624
- ];
625
- displayLintResults(results);
626
- expect(uiLogger.error).toHaveBeenCalledWith('Linting failed in 2 directories:');
627
- expect(uiLogger.log).toHaveBeenCalledWith(' ✗ component1');
628
- expect(uiLogger.log).toHaveBeenCalledWith(' ✗ component2');
629
- });
630
- });
631
- });
@@ -1 +0,0 @@
1
- export {};