@next-vibe/checker 1.0.52 → 3.0.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 (430) hide show
  1. package/LICENSE +669 -5
  2. package/README.md +179 -200
  3. package/check.config.ts +85 -16
  4. package/generated/alias-map.ts +30 -0
  5. package/generated/endpoint.ts +75 -0
  6. package/{src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts → oxlint-plugins/i18n.ts} +45 -9
  7. package/{src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts → oxlint-plugins/jsx-capitalization.ts} +84 -17
  8. package/{src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts → oxlint-plugins/restricted-syntax.ts} +40 -14
  9. package/package.json +28 -132
  10. package/.dist/LICENSE +0 -674
  11. package/.dist/README.md +0 -257
  12. package/.dist/bin/vibe-runtime.js +0 -58166
  13. package/.dist/bin/vibe-runtime.js.map +0 -451
  14. package/.dist/oxlint-plugins/i18n.js +0 -381
  15. package/.dist/oxlint-plugins/jsx-capitalization.js +0 -436
  16. package/.dist/oxlint-plugins/restricted-syntax.js +0 -409
  17. package/src/app/api/[locale]/LICENSE +0 -674
  18. package/src/app/api/[locale]/i18n/de/index.ts +0 -15
  19. package/src/app/api/[locale]/i18n/en/index.ts +0 -14
  20. package/src/app/api/[locale]/i18n/pl/index.ts +0 -13
  21. package/src/app/api/[locale]/shared/i18n/de/index.ts +0 -85
  22. package/src/app/api/[locale]/shared/i18n/en/index.ts +0 -83
  23. package/src/app/api/[locale]/shared/i18n/pl/index.ts +0 -85
  24. package/src/app/api/[locale]/shared/stats-filtering.ts +0 -174
  25. package/src/app/api/[locale]/shared/types/common.schema.ts +0 -55
  26. package/src/app/api/[locale]/shared/types/response.schema.ts +0 -411
  27. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +0 -315
  28. package/src/app/api/[locale]/shared/types/utils.ts +0 -187
  29. package/src/app/api/[locale]/shared/utils/base64.ts +0 -46
  30. package/src/app/api/[locale]/shared/utils/env-util.ts +0 -36
  31. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +0 -21
  32. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +0 -19
  33. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +0 -21
  34. package/src/app/api/[locale]/shared/utils/index.ts +0 -11
  35. package/src/app/api/[locale]/shared/utils/object-path.ts +0 -41
  36. package/src/app/api/[locale]/shared/utils/object.test.ts +0 -82
  37. package/src/app/api/[locale]/shared/utils/object.ts +0 -73
  38. package/src/app/api/[locale]/shared/utils/parse-error.ts +0 -134
  39. package/src/app/api/[locale]/shared/utils/parse-json.ts +0 -62
  40. package/src/app/api/[locale]/shared/utils/time.ts +0 -46
  41. package/src/app/api/[locale]/shared/utils/validation.ts +0 -117
  42. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +0 -115
  43. package/src/app/api/[locale]/system/builder/definition.ts +0 -1750
  44. package/src/app/api/[locale]/system/builder/enum.ts +0 -78
  45. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +0 -645
  46. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +0 -653
  47. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +0 -643
  48. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +0 -178
  49. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +0 -538
  50. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +0 -250
  51. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +0 -170
  52. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +0 -146
  53. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +0 -97
  54. package/src/app/api/[locale]/system/builder/repository/constants.ts +0 -125
  55. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +0 -67
  56. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +0 -90
  57. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +0 -75
  58. package/src/app/api/[locale]/system/builder/repository/index.ts +0 -2
  59. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +0 -143
  60. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +0 -104
  61. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +0 -79
  62. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +0 -109
  63. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +0 -277
  64. package/src/app/api/[locale]/system/builder/route.ts +0 -21
  65. package/src/app/api/[locale]/system/builder/test-files/file1.ts +0 -2
  66. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +0 -10
  67. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +0 -16
  68. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +0 -2
  69. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +0 -38
  70. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +0 -8
  71. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +0 -24
  72. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +0 -6
  73. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +0 -18
  74. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +0 -7
  75. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +0 -27
  76. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +0 -19
  77. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +0 -1
  78. package/src/app/api/[locale]/system/builder/test-files/test3.css +0 -1
  79. package/src/app/api/[locale]/system/check/config/create/definition.ts +0 -266
  80. package/src/app/api/[locale]/system/check/config/create/i18n/de/index.ts +0 -151
  81. package/src/app/api/[locale]/system/check/config/create/i18n/en/index.ts +0 -146
  82. package/src/app/api/[locale]/system/check/config/create/i18n/pl/index.ts +0 -148
  83. package/src/app/api/[locale]/system/check/config/create/repository.ts +0 -269
  84. package/src/app/api/[locale]/system/check/config/create/route.ts +0 -21
  85. package/src/app/api/[locale]/system/check/config/repository.ts +0 -846
  86. package/src/app/api/[locale]/system/check/config/shared.ts +0 -364
  87. package/src/app/api/[locale]/system/check/config/types.ts +0 -610
  88. package/src/app/api/[locale]/system/check/config/utils.ts +0 -155
  89. package/src/app/api/[locale]/system/check/i18n/de/index.ts +0 -19
  90. package/src/app/api/[locale]/system/check/i18n/en/index.ts +0 -18
  91. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +0 -19
  92. package/src/app/api/[locale]/system/check/lint/definition.ts +0 -383
  93. package/src/app/api/[locale]/system/check/lint/enum.ts +0 -34
  94. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +0 -160
  95. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +0 -158
  96. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +0 -160
  97. package/src/app/api/[locale]/system/check/lint/repository.ts +0 -844
  98. package/src/app/api/[locale]/system/check/lint/route.ts +0 -21
  99. package/src/app/api/[locale]/system/check/oxlint/README.md +0 -190
  100. package/src/app/api/[locale]/system/check/oxlint/definition.ts +0 -375
  101. package/src/app/api/[locale]/system/check/oxlint/enum.ts +0 -34
  102. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +0 -166
  103. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +0 -164
  104. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +0 -166
  105. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +0 -269
  106. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +0 -74
  107. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +0 -283
  108. package/src/app/api/[locale]/system/check/oxlint/repository.ts +0 -553
  109. package/src/app/api/[locale]/system/check/oxlint/route.ts +0 -21
  110. package/src/app/api/[locale]/system/check/oxlint/types.ts +0 -191
  111. package/src/app/api/[locale]/system/check/test-project/.vscode/settings.json +0 -48
  112. package/src/app/api/[locale]/system/check/test-project/bun.lock +0 -640
  113. package/src/app/api/[locale]/system/check/test-project/check.config.ts +0 -955
  114. package/src/app/api/[locale]/system/check/test-project/package.json +0 -17
  115. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +0 -6
  116. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +0 -18
  117. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +0 -107
  118. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +0 -37
  119. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +0 -135
  120. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +0 -113
  121. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +0 -127
  122. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +0 -92
  123. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +0 -73
  124. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +0 -95
  125. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +0 -61
  126. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +0 -78
  127. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +0 -27
  128. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +0 -22
  129. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +0 -1
  130. package/src/app/api/[locale]/system/check/typecheck/definition.ts +0 -328
  131. package/src/app/api/[locale]/system/check/typecheck/enum.ts +0 -34
  132. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +0 -148
  133. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +0 -145
  134. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +0 -148
  135. package/src/app/api/[locale]/system/check/typecheck/repository.ts +0 -863
  136. package/src/app/api/[locale]/system/check/typecheck/route.ts +0 -21
  137. package/src/app/api/[locale]/system/check/typecheck/utils.ts +0 -160
  138. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +0 -448
  139. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +0 -63
  140. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +0 -164
  141. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +0 -161
  142. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +0 -163
  143. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +0 -516
  144. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +0 -1010
  145. package/src/app/api/[locale]/system/check/vibe-check/route.ts +0 -21
  146. package/src/app/api/[locale]/system/generated/endpoint.ts +0 -274
  147. package/src/app/api/[locale]/system/generated/endpoints.ts +0 -138
  148. package/src/app/api/[locale]/system/generated/route-handlers.ts +0 -213
  149. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +0 -167
  150. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +0 -48
  151. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +0 -48
  152. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +0 -50
  153. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +0 -286
  154. package/src/app/api/[locale]/system/generators/endpoint/route.ts +0 -18
  155. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +0 -246
  156. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +0 -54
  157. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +0 -52
  158. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +0 -54
  159. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +0 -425
  160. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +0 -368
  161. package/src/app/api/[locale]/system/generators/endpoints/route.ts +0 -17
  162. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +0 -166
  163. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +0 -71
  164. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +0 -69
  165. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +0 -71
  166. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +0 -279
  167. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +0 -18
  168. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +0 -327
  169. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +0 -96
  170. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +0 -94
  171. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +0 -96
  172. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +0 -240
  173. package/src/app/api/[locale]/system/generators/generate-all/route.ts +0 -19
  174. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +0 -15
  175. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +0 -14
  176. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +0 -15
  177. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +0 -178
  178. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +0 -48
  179. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +0 -48
  180. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +0 -50
  181. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +0 -267
  182. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +0 -14
  183. package/src/app/api/[locale]/system/generators/shared/utils.ts +0 -215
  184. package/src/app/api/[locale]/system/help/definition.ts +0 -433
  185. package/src/app/api/[locale]/system/help/i18n/de/index.ts +0 -263
  186. package/src/app/api/[locale]/system/help/i18n/en/index.ts +0 -259
  187. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +0 -262
  188. package/src/app/api/[locale]/system/help/interactive/definition.ts +0 -122
  189. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +0 -21
  190. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +0 -19
  191. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +0 -21
  192. package/src/app/api/[locale]/system/help/interactive/repository.ts +0 -1131
  193. package/src/app/api/[locale]/system/help/interactive/route.ts +0 -43
  194. package/src/app/api/[locale]/system/help/list/definition.ts +0 -362
  195. package/src/app/api/[locale]/system/help/list/repository.ts +0 -99
  196. package/src/app/api/[locale]/system/help/list/route.ts +0 -21
  197. package/src/app/api/[locale]/system/help/repository.ts +0 -238
  198. package/src/app/api/[locale]/system/help/route.ts +0 -16
  199. package/src/app/api/[locale]/system/i18n/de/index.ts +0 -67
  200. package/src/app/api/[locale]/system/i18n/en/index.ts +0 -66
  201. package/src/app/api/[locale]/system/i18n/pl/index.ts +0 -67
  202. package/src/app/api/[locale]/system/release-tool/definition.ts +0 -2925
  203. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +0 -782
  204. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +0 -779
  205. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +0 -781
  206. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +0 -122
  207. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +0 -205
  208. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +0 -540
  209. package/src/app/api/[locale]/system/release-tool/repository/config.ts +0 -106
  210. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +0 -406
  211. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +0 -496
  212. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +0 -378
  213. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +0 -96
  214. package/src/app/api/[locale]/system/release-tool/repository/index.ts +0 -1
  215. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +0 -575
  216. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +0 -150
  217. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +0 -241
  218. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +0 -413
  219. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +0 -283
  220. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +0 -1084
  221. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +0 -132
  222. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +0 -603
  223. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +0 -265
  224. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +0 -275
  225. package/src/app/api/[locale]/system/release-tool/route.ts +0 -21
  226. package/src/app/api/[locale]/system/unified-interface/README.md +0 -328
  227. package/src/app/api/[locale]/system/unified-interface/cli/README.md +0 -349
  228. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +0 -82
  229. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +0 -120
  230. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +0 -244
  231. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +0 -24
  232. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +0 -159
  233. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +0 -158
  234. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +0 -159
  235. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +0 -573
  236. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +0 -128
  237. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +0 -155
  238. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +0 -423
  239. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +0 -252
  240. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +0 -901
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +0 -12
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +0 -11
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +0 -12
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +0 -235
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +0 -54
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +0 -52
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +0 -54
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +0 -444
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +0 -25
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +0 -159
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +0 -61
  252. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +0 -59
  253. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +0 -61
  254. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +0 -181
  255. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +0 -22
  256. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +0 -164
  257. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +0 -54
  258. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +0 -52
  259. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +0 -54
  260. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +0 -195
  261. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +0 -24
  262. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +0 -180
  263. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +0 -54
  264. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +0 -52
  265. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +0 -54
  266. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +0 -105
  267. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +0 -22
  268. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +0 -264
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +0 -246
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +0 -305
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +0 -116
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +0 -67
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +0 -65
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +0 -67
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +0 -70
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +0 -37
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +0 -52
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +0 -285
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +0 -71
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +0 -281
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +0 -83
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +0 -175
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +0 -61
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +0 -518
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +0 -75
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +0 -357
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +0 -93
  288. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +0 -49
  289. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +0 -63
  290. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +0 -667
  291. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +0 -78
  292. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +0 -99
  293. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +0 -54
  294. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +0 -46
  295. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +0 -123
  296. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +0 -269
  297. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +0 -114
  298. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +0 -138
  299. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +0 -59
  300. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +0 -76
  301. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +0 -37
  302. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +0 -403
  303. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +0 -504
  304. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +0 -39
  305. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +0 -37
  306. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +0 -39
  307. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +0 -114
  308. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +0 -136
  309. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +0 -180
  310. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +0 -178
  311. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +0 -180
  312. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +0 -305
  313. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +0 -124
  314. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +0 -44
  315. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +0 -14
  316. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +0 -291
  317. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +0 -155
  318. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +0 -191
  319. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +0 -247
  320. package/src/app/api/[locale]/system/unified-interface/react/icons.tsx +0 -346
  321. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +0 -1413
  322. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +0 -525
  323. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +0 -52
  324. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +0 -144
  325. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +0 -262
  326. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +0 -656
  327. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +0 -220
  328. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +0 -313
  329. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +0 -182
  330. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +0 -173
  331. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +0 -58
  332. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +0 -45
  333. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +0 -43
  334. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +0 -58
  335. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +0 -107
  336. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +0 -336
  337. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +0 -385
  338. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +0 -1827
  339. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +0 -108
  340. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +0 -288
  341. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +0 -114
  342. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +0 -155
  343. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +0 -85
  344. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +0 -167
  345. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +0 -82
  346. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +0 -34
  347. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +0 -1
  348. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +0 -284
  349. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +0 -1101
  350. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +0 -383
  351. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +0 -34
  352. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +0 -76
  353. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +0 -72
  354. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +0 -27
  355. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +0 -80
  356. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +0 -225
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +0 -251
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +0 -1060
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +0 -70
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +0 -75
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +0 -69
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +0 -86
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +0 -283
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +0 -190
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +0 -114
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +0 -71
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +0 -228
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +0 -119
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +0 -367
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +0 -81
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +0 -71
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +0 -79
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +0 -426
  374. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +0 -38
  375. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +0 -112
  376. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +0 -110
  377. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +0 -66
  378. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +0 -79
  379. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +0 -159
  380. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +0 -225
  381. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +0 -85
  382. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +0 -63
  383. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +0 -73
  384. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +0 -96
  385. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +0 -57
  386. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +0 -236
  387. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +0 -120
  388. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +0 -414
  389. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +0 -37
  390. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +0 -427
  391. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +0 -204
  392. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +0 -199
  393. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +0 -203
  394. package/src/app/api/[locale]/user/auth/types.ts +0 -45
  395. package/src/app/api/[locale]/user/enum.ts +0 -64
  396. package/src/app/api/[locale]/user/i18n/de/index.ts +0 -75
  397. package/src/app/api/[locale]/user/i18n/en/index.ts +0 -74
  398. package/src/app/api/[locale]/user/i18n/pl/index.ts +0 -75
  399. package/src/app/api/[locale]/user/types.ts +0 -111
  400. package/src/app/api/[locale]/user/user-roles/enum.ts +0 -103
  401. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +0 -85
  402. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +0 -83
  403. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +0 -85
  404. package/src/app/api/[locale]/user/user-roles/types.ts +0 -32
  405. package/src/app/api/i18n/de/index.ts +0 -6
  406. package/src/app/api/i18n/en/index.ts +0 -5
  407. package/src/app/api/i18n/pl/index.ts +0 -5
  408. package/src/app/i18n/de/index.ts +0 -18
  409. package/src/app/i18n/en/index.ts +0 -18
  410. package/src/app/i18n/pl/index.ts +0 -17
  411. package/src/config/constants.ts +0 -8
  412. package/src/config/debug.ts +0 -30
  413. package/src/config/env-client.ts +0 -57
  414. package/src/config/env.ts +0 -56
  415. package/src/config/i18n/de/index.ts +0 -3
  416. package/src/config/i18n/en/index.ts +0 -51
  417. package/src/config/i18n/pl/index.ts +0 -3
  418. package/src/i18n/core/config.ts +0 -225
  419. package/src/i18n/core/language-utils.ts +0 -226
  420. package/src/i18n/core/localization-utils.ts +0 -394
  421. package/src/i18n/core/scoped-translation.ts +0 -104
  422. package/src/i18n/core/shared-component.tsx +0 -28
  423. package/src/i18n/core/shared-translation-utils.ts +0 -97
  424. package/src/i18n/core/shared.ts +0 -44
  425. package/src/i18n/core/static-types.ts +0 -64
  426. package/src/i18n/core/translation-utils.ts +0 -186
  427. package/src/i18n/de/index.ts +0 -8
  428. package/src/i18n/en/index.ts +0 -7
  429. package/src/i18n/index.ts +0 -100
  430. package/src/i18n/pl/index.ts +0 -7
@@ -1,844 +0,0 @@
1
- /**
2
- * Run ESLint Repository (Parallel)
3
- * Handles parallel eslint operations using Bun.spawn with resource management
4
- */
5
-
6
- import { promises as fs } from "node:fs";
7
- import { dirname, relative, resolve } from "node:path";
8
-
9
- import type { EndpointLogger } from "@/app/api/[locale]/system/unified-interface/shared/logger/endpoint";
10
-
11
- import type { ResponseType as ApiResponseType } from "../../../shared/types/response.schema";
12
- import { success } from "../../../shared/types/response.schema";
13
- import { parseError } from "../../../shared/utils/parse-error";
14
- import { ensureConfigReady } from "../config/repository";
15
- import {
16
- createWorkerExitCodeMessage,
17
- createWorkerFailedMessage,
18
- createWorkerTimeoutMessage,
19
- discoverFiles,
20
- distributeFilesAcrossWorkers,
21
- sortIssuesByLocation,
22
- } from "../config/shared";
23
- import type { CheckConfig } from "../config/types";
24
- import { getSystemResources } from "../config/utils";
25
- import type { LintIssue, LintRequestOutput, LintResponseOutput } from "./definition";
26
-
27
- /**
28
- * Worker task for parallel processing
29
- */
30
- interface WorkerTask {
31
- id: number;
32
- files: string[];
33
- cacheDir: string;
34
- eslintConfigPath: string;
35
- fix: boolean;
36
- timeout: number;
37
- }
38
-
39
- /**
40
- * Worker result from parallel processing
41
- */
42
- interface WorkerResult {
43
- id: number;
44
- success: boolean;
45
- issues: Array<{
46
- file: string;
47
- line?: number;
48
- column?: number;
49
- rule?: string;
50
- code?: string;
51
- severity: "error" | "warning" | "info";
52
- message: string;
53
- type: "oxlint" | "lint" | "type";
54
- }>;
55
- duration: number;
56
- error?: string;
57
- }
58
-
59
- /**
60
- * Run ESLint Repository Interface
61
- */
62
- export interface LintRepositoryInterface {
63
- execute(
64
- data: LintRequestOutput,
65
- logger: EndpointLogger,
66
- providedConfig?: CheckConfig,
67
- ): Promise<ApiResponseType<LintResponseOutput>>;
68
- }
69
-
70
- /**
71
- * Run ESLint Repository Implementation (Parallel)
72
- */
73
- export class LintRepositoryImpl implements LintRepositoryInterface {
74
- async execute(
75
- data: LintRequestOutput,
76
- logger: EndpointLogger,
77
- providedConfig?: CheckConfig,
78
- ): Promise<ApiResponseType<LintResponseOutput>> {
79
- try {
80
- // Use provided config or load it
81
- let checkConfig: CheckConfig;
82
- if (providedConfig) {
83
- checkConfig = providedConfig;
84
- } else {
85
- const configResult = await ensureConfigReady(logger, false);
86
-
87
- if (!configResult.ready) {
88
- return success({
89
- issues: {
90
- items: [
91
- {
92
- file: configResult.configPath,
93
- severity: "error" as const,
94
- message: configResult.message,
95
- type: "lint" as const,
96
- },
97
- ],
98
- files: [
99
- {
100
- file: configResult.configPath,
101
- errors: 1,
102
- warnings: 0,
103
- total: 1,
104
- },
105
- ],
106
- summary: {
107
- totalIssues: 1,
108
- totalFiles: 1,
109
- totalErrors: 1,
110
- displayedIssues: 1,
111
- displayedFiles: 1,
112
- currentPage: 1,
113
- totalPages: 1,
114
- },
115
- },
116
- });
117
- }
118
- checkConfig = configResult.config;
119
- }
120
-
121
- // Check if ESLint is enabled in config
122
- if (!(checkConfig.eslint?.enabled ?? true)) {
123
- logger.info("ESLint is disabled in check.config.ts (eslint.enabled: false)");
124
-
125
- return success({
126
- issues: {
127
- items: [],
128
- files: [],
129
- summary: {
130
- totalIssues: 0,
131
- totalFiles: 0,
132
- totalErrors: 0,
133
- displayedIssues: 0,
134
- displayedFiles: 0,
135
- currentPage: 1,
136
- totalPages: 1,
137
- },
138
- },
139
- });
140
- }
141
-
142
- // Check if ESLint is enabled
143
- if (!checkConfig.eslint.enabled) {
144
- logger.info("ESLint is disabled in check.config.ts");
145
- return success({
146
- issues: {
147
- items: [],
148
- files: [],
149
- summary: {
150
- totalIssues: 0,
151
- totalFiles: 0,
152
- totalErrors: 0,
153
- displayedIssues: 0,
154
- displayedFiles: 0,
155
- currentPage: 1,
156
- totalPages: 1,
157
- },
158
- },
159
- });
160
- }
161
-
162
- logger.debug("[ESLINT] Configuration loaded");
163
-
164
- // At this point, we know eslint is enabled (checked above)
165
- const enabledConfig = checkConfig as CheckConfig & {
166
- eslint: { enabled: true; configPath: string; cachePath: string };
167
- };
168
-
169
- // Check if parallel mode is enabled
170
- const useParallel = enabledConfig.eslint.parallel ?? true;
171
-
172
- if (!useParallel) {
173
- // Non-parallel mode: pass paths directly to eslint
174
-
175
- logger.debug(
176
- `[ESLINT] Starting sequential execution (path: ${data.path || "./"}, fix: ${data.fix})`,
177
- );
178
-
179
- const result = await this.executeSequential(data, enabledConfig, logger);
180
-
181
- logger.debug(
182
- `[ESLINT] Sequential execution completed (${result.issues.items.length} issues found)`,
183
- );
184
-
185
- return success(result);
186
- }
187
-
188
- // Parallel mode: discover files and distribute across workers
189
-
190
- logger.debug(
191
- `[ESLINT] Starting parallel execution (path: ${data.path || "./"}, fix: ${data.fix})`,
192
- );
193
-
194
- // Get system resources and determine optimal worker count
195
- const resources = getSystemResources();
196
-
197
- logger.debug(
198
- `[ESLINT] System resources detected (CPUs: ${resources.cpuCores}, Memory: ${resources.availableMemoryMB}MB)`,
199
- );
200
-
201
- // Discover files to lint using config's ignored directories
202
- const filesToLint = await discoverFiles(data.path || "./", logger, {
203
- extensions: enabledConfig.eslint.lintableExtensions,
204
- ignores: enabledConfig.eslint.ignores || [],
205
- });
206
-
207
- logger.debug(`[ESLINT] Found ${filesToLint.length} files to lint`);
208
-
209
- if (filesToLint.length === 0) {
210
- return success({
211
- issues: {
212
- items: [],
213
- files: [],
214
- summary: {
215
- totalIssues: 0,
216
- totalFiles: 0,
217
- totalErrors: 0,
218
- displayedIssues: 0,
219
- displayedFiles: 0,
220
- currentPage: 1,
221
- totalPages: 1,
222
- },
223
- },
224
- });
225
- }
226
-
227
- // Distribute files across workers
228
- const eslintConfigPath = resolve(process.cwd(), enabledConfig.eslint.configPath);
229
- const workerTasks = this.distributeFiles(
230
- filesToLint,
231
- resources.maxWorkers,
232
- data,
233
- eslintConfigPath,
234
- );
235
-
236
- logger.debug(`[ESLINT] Distributing work across ${workerTasks.length} workers`);
237
-
238
- // Pre-create all cache directories in parallel
239
- await this.createCacheDirectories(workerTasks, logger);
240
-
241
- // Execute workers in parallel
242
- const workerResults = await this.executeWorkersInParallel(workerTasks, logger);
243
-
244
- // Merge results from all workers
245
- const mergedResult = this.mergeWorkerResults(workerResults, data, logger);
246
-
247
- logger.debug(
248
- `[ESLINT] Parallel execution completed (${mergedResult.issues.items.length} issues found)`,
249
- );
250
-
251
- return success(mergedResult);
252
- } catch (error) {
253
- const errorMessage = parseError(error).message;
254
-
255
- logger.error(`[ESLINT] Parallel execution failed: ${errorMessage}`);
256
-
257
- return success({
258
- issues: {
259
- items: [
260
- {
261
- file: "unknown",
262
- severity: "error" as const,
263
- message: errorMessage,
264
- type: "lint" as const,
265
- },
266
- ],
267
- files: [
268
- {
269
- file: "unknown",
270
- errors: 1,
271
- warnings: 0,
272
- total: 1,
273
- },
274
- ],
275
- summary: {
276
- totalIssues: 1,
277
- totalFiles: 1,
278
- totalErrors: 1,
279
- displayedIssues: 1,
280
- displayedFiles: 1,
281
- currentPage: 1,
282
- totalPages: 1,
283
- },
284
- },
285
- });
286
- }
287
- }
288
-
289
- /**
290
- * Execute ESLint sequentially (non-parallel mode)
291
- * Passes paths directly to eslint instead of discovering all files
292
- */
293
- private async executeSequential(
294
- data: LintRequestOutput,
295
- checkConfig: {
296
- eslint: { enabled: true; configPath: string; cachePath: string };
297
- },
298
- logger: EndpointLogger,
299
- ): Promise<LintResponseOutput> {
300
- // Ensure cache directory exists
301
- const cacheDir = checkConfig.eslint.cachePath;
302
- await fs.mkdir(dirname(cacheDir), { recursive: true });
303
-
304
- // Handle multiple paths - support files, folders, or mixed
305
- const targetPaths = data.path ? (Array.isArray(data.path) ? data.path : [data.path]) : ["./"];
306
-
307
- logger.debug(`[ESLINT] Running on ${targetPaths.length} path(s): ${targetPaths.join(", ")}`);
308
-
309
- // Build ESLint command
310
- const eslintConfigPath = resolve(process.cwd(), checkConfig.eslint.configPath);
311
- const args = [
312
- "eslint",
313
- "--format=json",
314
- "--cache",
315
- "--cache-location",
316
- cacheDir,
317
- "--cache-strategy",
318
- "metadata",
319
- "--config",
320
- eslintConfigPath,
321
- ...targetPaths,
322
- ];
323
-
324
- if (data.fix) {
325
- args.push("--fix");
326
- }
327
-
328
- // Execute ESLint
329
-
330
- logger.debug(`[ESLINT] Executing command: bunx ${args.join(" ")}`);
331
-
332
- const { spawn } = await import("node:child_process");
333
- const stdout = await new Promise<string>((resolve, reject) => {
334
- const child = spawn("bunx", args, {
335
- cwd: process.cwd(),
336
- stdio: ["ignore", "pipe", "pipe"],
337
- shell: false,
338
- });
339
-
340
- let output = "";
341
-
342
- child.stdout?.on("data", (data: Buffer) => {
343
- output += data.toString();
344
- });
345
-
346
- child.stderr?.on("data", () => {
347
- // Ignore stderr
348
- });
349
-
350
- child.on("close", (code) => {
351
- // ESLint exit codes: 0=success, 1=lint errors found, 2=config/internal error
352
- if (code !== null && code > 2) {
353
- reject(new Error(`ESLint failed with exit code ${code}`));
354
- } else {
355
- resolve(output);
356
- }
357
- });
358
-
359
- child.on("error", (error) => {
360
- reject(error);
361
- });
362
-
363
- // Set timeout
364
- const timeoutId = setTimeout(() => {
365
- child.kill("SIGTERM");
366
- setTimeout(() => {
367
- child.kill("SIGKILL");
368
- }, 5000);
369
-
370
- reject(new Error(`ESLint timed out after ${data.timeout}s`));
371
- }, data.timeout * 1000);
372
-
373
- child.on("close", () => {
374
- clearTimeout(timeoutId);
375
- });
376
- });
377
-
378
- // Parse ESLint output
379
- const result = await this.parseEslintOutputWithFixableDetection(stdout, data.fix, logger);
380
-
381
- // Build response
382
- const sortedIssues = data.skipSorting ? result.issues : sortIssuesByLocation(result.issues);
383
-
384
- return this.buildResponse(sortedIssues, data);
385
- }
386
-
387
- /**
388
- * Distribute files across workers evenly
389
- * Note: Only called when eslint is enabled
390
- */
391
- private distributeFiles(
392
- files: string[],
393
- workerCount: number,
394
- data: LintRequestOutput,
395
- eslintConfigPath: string,
396
- ): WorkerTask[] {
397
- const distributed = distributeFilesAcrossWorkers(files, workerCount);
398
-
399
- return distributed.map((workerFiles, index) => ({
400
- id: index,
401
- files: workerFiles,
402
- cacheDir: data.cacheDir,
403
- eslintConfigPath,
404
- fix: data.fix,
405
- timeout: data.timeout,
406
- }));
407
- }
408
-
409
- /**
410
- * Create global cache directory
411
- */
412
- private async createCacheDirectories(tasks: WorkerTask[], logger: EndpointLogger): Promise<void> {
413
- if (tasks.length === 0) {
414
- return;
415
- }
416
-
417
- // All workers use the same cache directory now
418
- const globalCacheDir = tasks[0].cacheDir;
419
-
420
- try {
421
- await fs.mkdir(dirname(globalCacheDir), { recursive: true });
422
- } catch (error) {
423
- logger.warn(
424
- `[ESLINT] Failed to create global cache directory: ${globalCacheDir} - ${parseError(error).message}`,
425
- );
426
- }
427
- }
428
-
429
- /**
430
- * Execute workers in parallel using Bun.spawn
431
- */
432
- private async executeWorkersInParallel(
433
- tasks: WorkerTask[],
434
- logger: EndpointLogger,
435
- ): Promise<WorkerResult[]> {
436
- const results: WorkerResult[] = [];
437
-
438
- // Execute all workers in parallel
439
- const workerPromises = tasks.map((task) => this.executeWorker(task, logger));
440
-
441
- const workerResults = await Promise.allSettled(workerPromises);
442
-
443
- for (let i = 0; i < workerResults.length; i++) {
444
- const result = workerResults[i];
445
- if (result.status === "fulfilled") {
446
- results.push(result.value);
447
- } else {
448
- // Handle failed worker
449
- results.push({
450
- id: tasks[i].id,
451
- success: false,
452
- issues: [
453
- {
454
- file: "worker-error",
455
- severity: "error" as const,
456
- message: createWorkerFailedMessage(tasks[i].id, String(result.reason)),
457
- type: "lint" as const,
458
- },
459
- ],
460
- duration: 0,
461
- error: String(result.reason),
462
- });
463
- }
464
- }
465
-
466
- return results;
467
- }
468
-
469
- /**
470
- * Execute a single worker using Bun.spawn
471
- */
472
- private async executeWorker(task: WorkerTask, logger: EndpointLogger): Promise<WorkerResult> {
473
- const startTime = Date.now();
474
-
475
- try {
476
- // Cache directory already created in parallel during setup
477
-
478
- const baseArgs = [
479
- "eslint",
480
- "--format=json",
481
- "--cache",
482
- "--cache-location",
483
- task.cacheDir,
484
- "--cache-strategy",
485
- "metadata",
486
- // Use ESLint config path from check.config.ts
487
- "--config",
488
- task.eslintConfigPath,
489
- ...task.files,
490
- ];
491
-
492
- // If fix is requested, first check if there are any fixable issues
493
- if (task.fix) {
494
- const checkResult = await this.runEslintCommand(baseArgs, task, logger);
495
- if (!checkResult.hasFixableIssues) {
496
- // No fixable issues, return the check result
497
- return {
498
- id: task.id,
499
- success: true,
500
- issues: checkResult.issues,
501
- duration: Date.now() - startTime,
502
- };
503
- }
504
-
505
- // There are fixable issues, run with --fix
506
- const fixArgs = [...baseArgs, "--fix"];
507
- const fixResult = await this.runEslintCommand(fixArgs, task, logger);
508
- return {
509
- id: task.id,
510
- success: true,
511
- issues: fixResult.issues,
512
- duration: Date.now() - startTime,
513
- };
514
- }
515
-
516
- // Just run normal check
517
- const result = await this.runEslintCommand(baseArgs, task, logger);
518
- return {
519
- id: task.id,
520
- success: true,
521
- issues: result.issues,
522
- duration: Date.now() - startTime,
523
- };
524
- } catch (error) {
525
- const errorMessage = parseError(error).message;
526
-
527
- logger.error(`[ESLINT:Worker${task.id}] Execution failed: ${errorMessage}`);
528
-
529
- return {
530
- id: task.id,
531
- success: false,
532
- issues: [
533
- {
534
- file: "worker-error",
535
- severity: "error" as const,
536
- message: errorMessage,
537
- type: "lint" as const,
538
- },
539
- ],
540
- duration: Date.now() - startTime,
541
- error: errorMessage,
542
- };
543
- }
544
- }
545
-
546
- /**
547
- * Build file statistics from issues
548
- */
549
- private buildFileStats(
550
- issues: LintIssue[],
551
- ): Map<string, { errors: number; warnings: number; total: number }> {
552
- const fileStats = new Map<string, { errors: number; warnings: number; total: number }>();
553
-
554
- for (const issue of issues) {
555
- const stats = fileStats.get(issue.file) || {
556
- errors: 0,
557
- warnings: 0,
558
- total: 0,
559
- };
560
- stats.total++;
561
- if (issue.severity === "error") {
562
- stats.errors++;
563
- }
564
- if (issue.severity === "warning") {
565
- stats.warnings++;
566
- }
567
- fileStats.set(issue.file, stats);
568
- }
569
-
570
- return fileStats;
571
- }
572
-
573
- /**
574
- * Format file statistics for response
575
- */
576
- private formatFileStats(
577
- fileStats: Map<string, { errors: number; warnings: number; total: number }>,
578
- ): Array<{ file: string; errors: number; warnings: number; total: number }> {
579
- return [...fileStats.entries()]
580
- .map(([file, stats]) => ({
581
- file,
582
- errors: stats.errors,
583
- warnings: stats.warnings,
584
- total: stats.total,
585
- }))
586
- .toSorted((a, b) => a.file.localeCompare(b.file));
587
- }
588
-
589
- /**
590
- * Build response with pagination and statistics
591
- */
592
- private buildResponse(allIssues: LintIssue[], data: LintRequestOutput): LintResponseOutput {
593
- const totalIssues = allIssues.length;
594
- const totalFiles = new Set(allIssues.map((issue) => issue.file)).size;
595
- const totalErrors = allIssues.filter((issue) => issue.severity === "error").length;
596
-
597
- const fileStats = this.buildFileStats(allIssues);
598
- const allFiles = this.formatFileStats(fileStats);
599
-
600
- const limit = data.limit;
601
- const currentPage = data.page;
602
- const totalPages = Math.ceil(totalIssues / limit);
603
- const startIndex = (currentPage - 1) * limit;
604
- const endIndex = startIndex + limit;
605
- const limitedIssues = allIssues.slice(startIndex, endIndex);
606
-
607
- const displayedIssues = limitedIssues.length;
608
- const displayedFiles = new Set(limitedIssues.map((issue) => issue.file)).size;
609
-
610
- return {
611
- issues: {
612
- items: limitedIssues,
613
- files: allFiles,
614
- summary: {
615
- totalIssues,
616
- totalFiles,
617
- totalErrors,
618
- displayedIssues,
619
- displayedFiles,
620
- truncatedMessage:
621
- displayedIssues < totalIssues || displayedFiles < totalFiles
622
- ? `Showing ${displayedIssues} of ${totalIssues} issues from ${displayedFiles} of ${totalFiles} files`
623
- : "",
624
- currentPage,
625
- totalPages,
626
- },
627
- },
628
- };
629
- }
630
-
631
- /**
632
- * Merge results from all workers
633
- */
634
- private mergeWorkerResults(
635
- workerResults: WorkerResult[],
636
- data: LintRequestOutput,
637
- logger: EndpointLogger,
638
- ): LintResponseOutput {
639
- const allIssues: LintIssue[] = [];
640
-
641
- // Collect all issues from workers
642
- for (const result of workerResults) {
643
- allIssues.push(...result.issues);
644
- }
645
-
646
- // Sort issues by file, then by line number (unless skipSorting is true)
647
- const issues = data.skipSorting ? allIssues : sortIssuesByLocation(allIssues);
648
-
649
- logger.debug(
650
- `[ESLINT] Merged results from ${workerResults.length} workers (${issues.length} total issues)`,
651
- );
652
-
653
- return this.buildResponse(issues, data);
654
- }
655
-
656
- /**
657
- * Run ESLint command and return results with fixable issue detection
658
- */
659
- private async runEslintCommand(
660
- args: string[],
661
- task: WorkerTask,
662
- logger: EndpointLogger,
663
- ): Promise<{
664
- issues: LintIssue[];
665
- hasFixableIssues: boolean;
666
- }> {
667
- logger.debug(`[ESLINT:Worker${task.id}] Executing command: bunx ${args.join(" ")}`);
668
-
669
- // Use spawn for parallel execution
670
- const { spawn } = await import("node:child_process");
671
- const stdout = await new Promise<string>((resolve, reject) => {
672
- const child = spawn("bunx", args, {
673
- cwd: process.cwd(),
674
- stdio: ["ignore", "pipe", "pipe"],
675
- shell: false,
676
- });
677
-
678
- let output = "";
679
-
680
- child.stdout?.on("data", (data: Buffer) => {
681
- output += data.toString();
682
- });
683
-
684
- child.stderr?.on("data", () => {
685
- // Ignore stderr for ESLint output
686
- });
687
-
688
- child.on("close", (code) => {
689
- // ESLint exit codes: 0=success, 1=lint errors found, 2=config/internal error
690
- // ESLint with JSON format outputs valid JSON even on code 2, so we accept 0-2
691
- // Only reject on unexpected errors (code > 2)
692
- if (code !== null && code > 2) {
693
- reject(new Error(createWorkerExitCodeMessage(task.id, code)));
694
- } else {
695
- resolve(output);
696
- }
697
- });
698
-
699
- child.on("error", (error) => {
700
- reject(error);
701
- });
702
-
703
- // Set timeout
704
- const timeoutId = setTimeout(() => {
705
- child.kill("SIGTERM");
706
- setTimeout(() => {
707
- child.kill("SIGKILL");
708
- }, 5000);
709
- reject(new Error(createWorkerTimeoutMessage(task.id, task.timeout)));
710
- }, task.timeout * 1000);
711
-
712
- // Clear timeout when process completes
713
- child.on("close", () => {
714
- clearTimeout(timeoutId);
715
- });
716
- });
717
-
718
- // Parse ESLint output and detect fixable issues
719
- const result = await this.parseEslintOutputWithFixableDetection(
720
- stdout,
721
- args.includes("--fix"),
722
- logger,
723
- );
724
-
725
- logger.debug(
726
- `[ESLINT:Worker${task.id}] Completed with ${result.issues.length} issues (${result.hasFixableIssues ? "has" : "no"} fixable)`,
727
- );
728
-
729
- return result;
730
- }
731
-
732
- /**
733
- * Parse ESLint JSON output and detect fixable issues
734
- */
735
- private async parseEslintOutputWithFixableDetection(
736
- stdout: string,
737
- shouldFix: boolean,
738
- logger: EndpointLogger,
739
- ): Promise<{
740
- issues: LintIssue[];
741
- hasFixableIssues: boolean;
742
- }> {
743
- const issues: LintIssue[] = [];
744
- let hasFixableIssues = false;
745
-
746
- if (!stdout.trim()) {
747
- return { issues, hasFixableIssues };
748
- }
749
-
750
- // Define ESLint result structure for type safety
751
- type EslintResult = Array<{
752
- filePath: string;
753
- messages: Array<{
754
- line: number;
755
- column: number;
756
- ruleId: string | null;
757
- severity: 1 | 2;
758
- message: string;
759
- fix?: { range: [number, number]; text: string }; // ESLint provides fix info for fixable issues
760
- }>;
761
- output?: string; // Fixed content when --fix is used
762
- }>;
763
-
764
- try {
765
- let parsedResults: EslintResult;
766
- try {
767
- parsedResults = JSON.parse(stdout) as EslintResult;
768
- } catch (parseError) {
769
- // JSON parse failed - log the error and return empty results
770
-
771
- logger.warn(
772
- `[ESLINT] Failed to parse JSON output: ${parseError instanceof Error ? parseError.message : String(parseError)} (preview: ${stdout.slice(0, 100)}...)`,
773
- );
774
- return { issues, hasFixableIssues };
775
- }
776
-
777
- // If --fix was used, write the fixed content back to files in parallel
778
- if (shouldFix) {
779
- const writePromises = parsedResults
780
- .filter((result) => result.output)
781
- .map(async (result) => {
782
- try {
783
- await fs.writeFile(result.filePath, result.output!, "utf8");
784
- } catch (error) {
785
- logger.warn(
786
- `[ESLINT] Failed to write fixed file: ${result.filePath} - ${parseError(error).message}`,
787
- );
788
- }
789
- });
790
-
791
- // Execute all file writes in parallel
792
- await Promise.allSettled(writePromises);
793
- }
794
-
795
- // Convert results to issues and detect fixable ones in parallel
796
- const processedResults = parsedResults.map((result) => {
797
- const relativePath = relative(process.cwd(), result.filePath);
798
- const resultIssues: LintIssue[] = [];
799
- let hasFixableInResult = false;
800
-
801
- for (const msg of result.messages) {
802
- // Check if this issue is fixable
803
- if (msg.fix && !shouldFix) {
804
- hasFixableInResult = true;
805
- }
806
-
807
- resultIssues.push({
808
- file: relativePath,
809
- line: msg.line,
810
- column: msg.column,
811
- rule: msg.ruleId || "unknown",
812
- code: msg.ruleId || "unknown",
813
- severity: msg.severity === 2 ? "error" : "warning",
814
- message: msg.message,
815
- type: "lint",
816
- });
817
- }
818
-
819
- return { issues: resultIssues, hasFixable: hasFixableInResult };
820
- });
821
-
822
- // Combine all issues and fixable flags
823
- for (const processed of processedResults) {
824
- issues.push(...processed.issues);
825
- if (processed.hasFixable) {
826
- hasFixableIssues = true;
827
- }
828
- }
829
- } catch (error) {
830
- // Unexpected error during processing
831
-
832
- logger.error(
833
- `[ESLINT] Unexpected error processing results: ${error instanceof Error ? error.message : String(error)}`,
834
- );
835
- }
836
-
837
- return { issues, hasFixableIssues };
838
- }
839
- }
840
-
841
- /**
842
- * Default repository instance
843
- */
844
- export const lintRepository = new LintRepositoryImpl();