@next-vibe/checker 1.0.11 → 1.0.12

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 (394) hide show
  1. package/.dist/bin/vibe-runtime.js +10 -19
  2. package/.dist/bin/vibe-runtime.js.map +3 -3
  3. package/check.config.ts +4 -4
  4. package/package.json +2 -9
  5. package/src/app/api/[locale]/LICENSE +674 -0
  6. package/src/app/api/[locale]/i18n/de/index.ts +13 -0
  7. package/src/app/api/[locale]/i18n/en/index.ts +12 -0
  8. package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
  9. package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
  10. package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
  11. package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
  12. package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
  13. package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
  14. package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
  15. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
  16. package/src/app/api/[locale]/shared/types/utils.ts +190 -0
  17. package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
  18. package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
  19. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
  20. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
  21. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
  22. package/src/app/api/[locale]/shared/utils/index.ts +11 -0
  23. package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
  24. package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
  25. package/src/app/api/[locale]/shared/utils/object.ts +75 -0
  26. package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
  27. package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
  28. package/src/app/api/[locale]/shared/utils/time.ts +53 -0
  29. package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
  30. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
  31. package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
  32. package/src/app/api/[locale]/system/builder/enum.ts +77 -0
  33. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
  34. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
  35. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
  36. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
  37. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
  38. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
  39. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
  40. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
  41. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
  42. package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
  43. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
  44. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
  45. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
  46. package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
  47. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
  48. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
  49. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
  50. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
  51. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
  52. package/src/app/api/[locale]/system/builder/route.ts +21 -0
  53. package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
  54. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
  55. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
  56. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
  57. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
  58. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
  59. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
  60. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
  61. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
  62. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
  63. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
  64. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
  65. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
  66. package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
  67. package/src/app/api/[locale]/system/check/config/repository.ts +819 -0
  68. package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
  69. package/src/app/api/[locale]/system/check/config/types.ts +616 -0
  70. package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
  71. package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
  72. package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
  73. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
  74. package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
  75. package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
  76. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
  77. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
  78. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
  79. package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
  80. package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
  81. package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
  82. package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
  83. package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
  84. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
  85. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
  86. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
  87. package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
  88. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
  89. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
  90. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
  91. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
  92. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
  93. package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
  94. package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
  95. package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
  96. package/src/app/api/[locale]/system/check/test-project/bun.lock +449 -0
  97. package/src/app/api/[locale]/system/check/test-project/check.config.ts +989 -0
  98. package/src/app/api/[locale]/system/check/test-project/package.json +20 -0
  99. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
  100. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
  101. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
  102. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
  103. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
  104. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
  105. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
  106. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
  107. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
  108. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
  109. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
  110. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
  111. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
  112. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +38 -0
  113. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
  114. package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
  115. package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
  116. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
  117. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
  118. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
  119. package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
  120. package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
  121. package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
  122. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
  123. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
  124. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
  125. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
  126. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
  127. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
  128. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
  129. package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
  130. package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
  131. package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
  132. package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
  133. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
  134. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
  135. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
  136. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
  137. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
  138. package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
  139. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
  140. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
  141. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
  142. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
  143. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
  144. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
  145. package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
  146. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
  147. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
  148. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
  149. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
  150. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
  151. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
  152. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
  153. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
  154. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
  155. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
  156. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
  157. package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
  158. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
  159. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
  160. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
  161. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
  162. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
  163. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
  164. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
  165. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
  166. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
  167. package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
  168. package/src/app/api/[locale]/system/help/definition.ts +445 -0
  169. package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
  170. package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
  171. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
  172. package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
  173. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
  174. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
  175. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
  176. package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
  177. package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
  178. package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
  179. package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
  180. package/src/app/api/[locale]/system/help/list/route.ts +21 -0
  181. package/src/app/api/[locale]/system/help/repository.ts +212 -0
  182. package/src/app/api/[locale]/system/help/route.ts +16 -0
  183. package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
  184. package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
  185. package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
  186. package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
  187. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
  188. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
  189. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
  190. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
  191. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
  192. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
  193. package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
  194. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
  195. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
  196. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
  197. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
  198. package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
  199. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
  200. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
  201. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
  202. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
  203. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
  204. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
  205. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
  206. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
  207. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
  208. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
  209. package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
  210. package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
  211. package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
  212. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
  213. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
  214. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
  215. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
  216. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
  217. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
  218. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
  219. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
  220. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
  221. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
  222. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
  223. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
  224. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
  225. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
  226. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
  227. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
  228. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
  229. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
  230. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
  231. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
  232. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
  233. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
  234. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
  235. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
  236. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
  237. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
  238. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
  239. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
  240. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
  252. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
  253. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
  254. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
  255. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
  256. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
  257. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
  258. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
  259. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
  260. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
  261. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
  262. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
  263. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
  264. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
  265. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
  266. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
  267. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
  268. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
  288. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
  289. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
  290. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
  291. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
  292. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
  293. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
  294. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
  295. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
  296. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
  297. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
  298. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
  299. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
  300. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
  301. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
  302. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
  303. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
  304. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
  305. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
  306. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
  307. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
  308. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
  309. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
  310. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
  311. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
  312. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
  313. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
  314. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
  315. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
  316. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
  317. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
  318. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
  319. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
  320. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
  321. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
  322. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
  323. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
  324. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
  325. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
  326. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
  327. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
  328. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
  329. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
  330. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
  331. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
  332. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
  333. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
  334. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
  335. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
  336. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
  337. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
  338. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
  339. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
  340. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
  341. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
  342. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
  343. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
  344. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
  345. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
  346. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
  347. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
  348. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
  349. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
  350. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
  351. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
  352. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
  353. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
  354. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
  355. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
  356. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
  374. package/src/app/api/[locale]/user/auth/enum.ts +16 -0
  375. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
  376. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
  377. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
  378. package/src/app/api/[locale]/user/auth/types.ts +110 -0
  379. package/src/app/api/[locale]/user/enum.ts +64 -0
  380. package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
  381. package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
  382. package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
  383. package/src/app/api/[locale]/user/types.ts +118 -0
  384. package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
  385. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
  386. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
  387. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
  388. package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
  389. package/src/app/api/i18n/de/index.ts +6 -0
  390. package/src/app/api/i18n/en/index.ts +5 -0
  391. package/src/app/api/i18n/pl/index.ts +5 -0
  392. package/src/app/i18n/de/index.ts +6 -0
  393. package/src/app/i18n/en/index.ts +5 -0
  394. package/src/app/i18n/pl/index.ts +5 -0
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Widget System Helper Types
3
+ *
4
+ * This file contains helper types for working with widgets.
5
+ * For widget configurations, import from widget-configs.ts.
6
+ */
7
+
8
+ import type {
9
+ ComponentSize,
10
+ ComponentVariant,
11
+ InterfaceContext,
12
+ SpacingSize,
13
+ } from "../types/enums";
14
+ import type {
15
+ ChartWidgetConfig,
16
+ ContainerWidgetConfig,
17
+ DataTableWidgetConfig,
18
+ FormFieldWidgetConfig,
19
+ MetricCardWidgetConfig,
20
+ WidgetConfig,
21
+ } from "./configs";
22
+
23
+ /**
24
+ * Widget preset for common patterns
25
+ */
26
+ export interface WidgetPreset<TKey extends string> {
27
+ name: string;
28
+ description: TKey;
29
+ widgets: WidgetConfig<TKey>[];
30
+ contexts?: InterfaceContext[];
31
+ }
32
+
33
+ /**
34
+ * Widget theme configuration
35
+ */
36
+ export interface WidgetTheme {
37
+ name: string;
38
+ colors: Record<ComponentVariant, string>;
39
+ spacing: Record<SpacingSize, string>;
40
+ sizes: Record<ComponentSize, Record<string, string>>;
41
+ typography: Record<string, Record<string, string>>;
42
+ }
43
+
44
+ /**
45
+ * Widget factory for creating common widget patterns
46
+ */
47
+ export interface WidgetFactory<TKey extends string> {
48
+ createFormField(
49
+ config: Partial<FormFieldWidgetConfig<TKey>>,
50
+ ): FormFieldWidgetConfig<TKey>;
51
+ createDataTable(
52
+ config: Partial<DataTableWidgetConfig<TKey>>,
53
+ ): DataTableWidgetConfig<TKey>;
54
+ createMetricCard(
55
+ config: Partial<MetricCardWidgetConfig<TKey>>,
56
+ ): MetricCardWidgetConfig<TKey>;
57
+ createChart(
58
+ config: Partial<ChartWidgetConfig<TKey>>,
59
+ ): ChartWidgetConfig<TKey>;
60
+ createContainer(
61
+ config: Partial<ContainerWidgetConfig<TKey>>,
62
+ ): ContainerWidgetConfig<TKey>;
63
+ }
64
+
65
+ /**
66
+ * Widget validation result
67
+ */
68
+ export interface WidgetValidationResult {
69
+ valid: boolean;
70
+ errors: Array<{
71
+ path: string;
72
+ message: string;
73
+ code: string;
74
+ }>;
75
+ warnings: Array<{
76
+ path: string;
77
+ message: string;
78
+ code: string;
79
+ }>;
80
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Accordion Widget Logic
3
+ * Shared data extraction and processing for ACCORDION widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Accordion item structure
11
+ */
12
+ export interface AccordionItem {
13
+ id: string;
14
+ title: string;
15
+ content: WidgetData;
16
+ expanded?: boolean;
17
+ }
18
+
19
+ /**
20
+ * Processed accordion data structure
21
+ */
22
+ export interface ProcessedAccordion {
23
+ items: AccordionItem[];
24
+ allowMultiple?: boolean;
25
+ variant?: "default" | "bordered" | "separated";
26
+ }
27
+
28
+ /**
29
+ * Extract and validate accordion data from WidgetData
30
+ */
31
+ export function extractAccordionData(
32
+ value: WidgetData,
33
+ ): ProcessedAccordion | null {
34
+ // Handle object value with accordion properties
35
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
36
+ const items =
37
+ "items" in value && Array.isArray(value.items) ? value.items : [];
38
+ const allowMultiple =
39
+ "allowMultiple" in value && typeof value.allowMultiple === "boolean"
40
+ ? value.allowMultiple
41
+ : false;
42
+ const variant =
43
+ "variant" in value && typeof value.variant === "string"
44
+ ? (value.variant as "default" | "bordered" | "separated")
45
+ : "default";
46
+
47
+ // Validate items
48
+ const validItems = items
49
+ .filter((item) => typeof item === "object" && item !== null)
50
+ .map((item) => ({
51
+ id: "id" in item && typeof item.id === "string" ? item.id : "",
52
+ title:
53
+ "title" in item && typeof item.title === "string" ? item.title : "",
54
+ content: "content" in item ? item.content : null,
55
+ expanded:
56
+ "expanded" in item && typeof item.expanded === "boolean"
57
+ ? item.expanded
58
+ : false,
59
+ }))
60
+ .filter((item) => item.id && item.title);
61
+
62
+ if (validItems.length === 0) {
63
+ return null;
64
+ }
65
+
66
+ return {
67
+ items: validItems,
68
+ allowMultiple,
69
+ variant,
70
+ };
71
+ }
72
+
73
+ // Invalid type
74
+ return null;
75
+ }
76
+
77
+ /**
78
+ * Get expanded items from accordion
79
+ */
80
+ export function getExpandedItems(data: ProcessedAccordion): AccordionItem[] {
81
+ return data.items.filter((item) => item.expanded);
82
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Avatar Widget Logic
3
+ * Shared data extraction and processing for AVATAR widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Processed avatar data structure
11
+ */
12
+ export interface ProcessedAvatar {
13
+ src?: string;
14
+ alt: string;
15
+ fallback: string;
16
+ size?: "sm" | "md" | "lg";
17
+ }
18
+
19
+ /**
20
+ * Extract and validate avatar data from WidgetData
21
+ */
22
+ export function extractAvatarData(value: WidgetData): ProcessedAvatar | null {
23
+ // Handle string value directly (image URL)
24
+ if (typeof value === "string") {
25
+ return {
26
+ src: value,
27
+ alt: "Avatar",
28
+ fallback: getInitials(value),
29
+ size: "md",
30
+ };
31
+ }
32
+
33
+ // Handle object value with avatar properties
34
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
35
+ const src =
36
+ "src" in value && typeof value.src === "string" ? value.src : "";
37
+ const alt =
38
+ "alt" in value && typeof value.alt === "string" ? value.alt : "Avatar";
39
+ const fallback =
40
+ "fallback" in value && typeof value.fallback === "string"
41
+ ? value.fallback
42
+ : getInitials(alt);
43
+ const size =
44
+ "size" in value && typeof value.size === "string"
45
+ ? (value.size as "sm" | "md" | "lg")
46
+ : "md";
47
+
48
+ return {
49
+ src: src || undefined,
50
+ alt,
51
+ fallback,
52
+ size,
53
+ };
54
+ }
55
+
56
+ // Invalid type
57
+ return null;
58
+ }
59
+
60
+ /**
61
+ * Get initials from a name
62
+ */
63
+ export function getInitials(name: string): string {
64
+ if (!name) {
65
+ return "?";
66
+ }
67
+
68
+ const parts = name.trim().split(/\s+/);
69
+
70
+ if (parts.length === 1) {
71
+ return parts[0].charAt(0).toUpperCase();
72
+ }
73
+
74
+ return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();
75
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Badge Widget Logic
3
+ * Shared data extraction and processing for BADGE widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Badge variants for styling
11
+ */
12
+ export type BadgeVariant =
13
+ | "default"
14
+ | "primary"
15
+ | "secondary"
16
+ | "success"
17
+ | "warning"
18
+ | "error"
19
+ | "destructive";
20
+
21
+ /**
22
+ * Processed badge data structure
23
+ */
24
+ export interface ProcessedBadge {
25
+ text: string;
26
+ variant: BadgeVariant;
27
+ icon?: string;
28
+ }
29
+
30
+ /**
31
+ * Extract and validate badge data from WidgetData
32
+ */
33
+ export function extractBadgeData(value: WidgetData): ProcessedBadge | null {
34
+ // Handle string value directly
35
+ if (typeof value === "string") {
36
+ return {
37
+ text: value,
38
+ variant: "default",
39
+ };
40
+ }
41
+
42
+ // Handle object value with badge properties
43
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
44
+ const text =
45
+ "text" in value && typeof value.text === "string" ? value.text : "";
46
+ const variant =
47
+ "variant" in value && typeof value.variant === "string"
48
+ ? (value.variant as BadgeVariant)
49
+ : "default";
50
+ const icon =
51
+ "icon" in value && typeof value.icon === "string"
52
+ ? value.icon
53
+ : undefined;
54
+
55
+ if (!text) {
56
+ return null;
57
+ }
58
+
59
+ return {
60
+ text,
61
+ variant,
62
+ icon,
63
+ };
64
+ }
65
+
66
+ // Invalid type
67
+ return null;
68
+ }
69
+
70
+ /**
71
+ * Get color for badge variant
72
+ */
73
+ export function getBadgeColor(variant: BadgeVariant): string {
74
+ switch (variant) {
75
+ case "primary":
76
+ return "blue";
77
+ case "secondary":
78
+ return "gray";
79
+ case "success":
80
+ return "green";
81
+ case "warning":
82
+ return "yellow";
83
+ case "error":
84
+ case "destructive":
85
+ return "red";
86
+ default:
87
+ return "gray";
88
+ }
89
+ }
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Code Output Widget Logic
3
+ * Shared data extraction and processing for CODE_OUTPUT widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { UnifiedField } from "../../types/endpoint";
8
+ import { WidgetType } from "../../types/enums";
9
+ import type { WidgetData } from "../types";
10
+
11
+ /**
12
+ * Code output item interface (for linter/code quality output)
13
+ */
14
+ export interface CodeOutputItem {
15
+ [key: string]: WidgetData;
16
+ line?: number;
17
+ column?: number;
18
+ severity?: string;
19
+ message?: string;
20
+ rule?: string;
21
+ file?: string;
22
+ }
23
+
24
+ /**
25
+ * Code output configuration
26
+ */
27
+ export interface CodeOutputConfig {
28
+ format: "eslint" | "generic" | "json" | "table";
29
+ groupBy?: string;
30
+ showSummary: boolean;
31
+ showLineNumbers: boolean;
32
+ colorScheme: "auto" | "light" | "dark";
33
+ severityIcons: Record<string, string>;
34
+ summaryTemplate?: string;
35
+ }
36
+
37
+ /**
38
+ * Processed code output data structure (simple code display)
39
+ */
40
+ export interface ProcessedCodeOutput {
41
+ code: string;
42
+ language: string;
43
+ showLineNumbers: boolean;
44
+ highlightLines: number[];
45
+ theme: string;
46
+ }
47
+
48
+ /**
49
+ * Extract code output configuration from field
50
+ */
51
+ export function getCodeOutputConfig<const TKey extends string>(
52
+ field: UnifiedField<TKey>,
53
+ ): CodeOutputConfig {
54
+ const defaultConfig: CodeOutputConfig = {
55
+ format: "generic",
56
+ showSummary: true,
57
+ showLineNumbers: false,
58
+ colorScheme: "auto",
59
+ severityIcons: {
60
+ error: "✖ ",
61
+ warning: "⚠ ",
62
+ info: "ℹ ",
63
+ success: "✓ ",
64
+ },
65
+ };
66
+
67
+ if (field.ui.type !== WidgetType.CODE_OUTPUT) {
68
+ return defaultConfig;
69
+ }
70
+
71
+ const config = field.ui;
72
+
73
+ const formatValue = config.outputFormat || config.format;
74
+ const format =
75
+ typeof formatValue === "string" &&
76
+ (formatValue === "eslint" ||
77
+ formatValue === "generic" ||
78
+ formatValue === "json" ||
79
+ formatValue === "table")
80
+ ? formatValue
81
+ : "generic";
82
+
83
+ const showSummary =
84
+ typeof config.showSummary === "boolean" ? config.showSummary : true;
85
+
86
+ const colorSchemeValue =
87
+ "colorScheme" in config ? config.colorScheme : undefined;
88
+ const colorScheme =
89
+ typeof colorSchemeValue === "string" &&
90
+ (colorSchemeValue === "auto" ||
91
+ colorSchemeValue === "light" ||
92
+ colorSchemeValue === "dark")
93
+ ? colorSchemeValue
94
+ : "auto";
95
+
96
+ let severityIcons: Record<string, string> = {
97
+ error: "✖ ",
98
+ warning: "⚠ ",
99
+ info: "ℹ ",
100
+ success: "✓ ",
101
+ };
102
+
103
+ if (
104
+ "severityIcons" in config &&
105
+ typeof config.severityIcons === "object" &&
106
+ config.severityIcons !== null &&
107
+ !Array.isArray(config.severityIcons)
108
+ ) {
109
+ const icons: Record<string, string> = {};
110
+ for (const [key, val] of Object.entries(config.severityIcons)) {
111
+ if (typeof val === "string") {
112
+ icons[key] = val;
113
+ }
114
+ }
115
+ if (Object.keys(icons).length > 0) {
116
+ severityIcons = icons;
117
+ }
118
+ }
119
+
120
+ const groupBy =
121
+ "groupBy" in config && typeof config.groupBy === "string"
122
+ ? config.groupBy
123
+ : undefined;
124
+
125
+ const summaryTemplate =
126
+ "summaryTemplate" in config && typeof config.summaryTemplate === "string"
127
+ ? config.summaryTemplate
128
+ : undefined;
129
+
130
+ return {
131
+ format,
132
+ groupBy,
133
+ showSummary,
134
+ showLineNumbers: false,
135
+ colorScheme,
136
+ severityIcons,
137
+ summaryTemplate,
138
+ };
139
+ }
140
+
141
+ /**
142
+ * Group code output data by specified field
143
+ */
144
+ export function groupCodeOutputData(
145
+ data: CodeOutputItem[],
146
+ groupBy: string,
147
+ ): Map<string, CodeOutputItem[]> {
148
+ const groups = new Map<string, CodeOutputItem[]>();
149
+
150
+ for (const item of data) {
151
+ const groupValue = item[groupBy];
152
+ let groupKey = "unknown";
153
+ if (typeof groupValue === "string") {
154
+ groupKey = groupValue;
155
+ } else if (typeof groupValue === "number") {
156
+ groupKey = String(groupValue);
157
+ } else if (typeof groupValue === "boolean") {
158
+ groupKey = groupValue ? "true" : "false";
159
+ }
160
+
161
+ if (!groups.has(groupKey)) {
162
+ groups.set(groupKey, []);
163
+ }
164
+ groups.get(groupKey)!.push(item);
165
+ }
166
+
167
+ return groups;
168
+ }
169
+
170
+ /**
171
+ * Count items by severity
172
+ */
173
+ export function countCodeOutputBySeverity(
174
+ data: CodeOutputItem[],
175
+ ): Record<string, number> {
176
+ const counts = { error: 0, warning: 0, info: 0, success: 0 };
177
+
178
+ for (const item of data) {
179
+ const severityValue = item.severity;
180
+ let severity = "info";
181
+ if (typeof severityValue === "string") {
182
+ severity = severityValue;
183
+ }
184
+ if (severity in counts) {
185
+ counts[severity as keyof typeof counts]++;
186
+ }
187
+ }
188
+
189
+ return counts;
190
+ }
191
+
192
+ /**
193
+ * Build table data structure from code output items
194
+ */
195
+ export function buildTableData(data: CodeOutputItem[]): {
196
+ keys: string[];
197
+ rows: Array<Record<string, string>>;
198
+ } {
199
+ if (data.length === 0) {
200
+ return { keys: [], rows: [] };
201
+ }
202
+
203
+ const keys = Object.keys(data[0]);
204
+ const rows = data.map((item) => {
205
+ const row: Record<string, string> = {};
206
+ for (const key of keys) {
207
+ const val = item[key];
208
+ if (typeof val === "string") {
209
+ row[key] = val;
210
+ } else if (typeof val === "number") {
211
+ row[key] = String(val);
212
+ } else if (typeof val === "boolean") {
213
+ row[key] = val ? "true" : "false";
214
+ } else {
215
+ row[key] = "";
216
+ }
217
+ }
218
+ return row;
219
+ });
220
+
221
+ return { keys, rows };
222
+ }
223
+
224
+ /**
225
+ * Extract and validate code output data from WidgetData
226
+ * Handles both string (simple code) and object (full config) formats
227
+ */
228
+ export function extractCodeOutputData(
229
+ value: WidgetData,
230
+ defaultTheme = "light",
231
+ ): ProcessedCodeOutput | null {
232
+ // Handle string value directly (simple code string)
233
+ if (typeof value === "string") {
234
+ return {
235
+ code: value,
236
+ language: "text",
237
+ showLineNumbers: false,
238
+ highlightLines: [],
239
+ theme: defaultTheme,
240
+ };
241
+ }
242
+
243
+ // Handle object value with code properties
244
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
245
+ const code =
246
+ "code" in value && typeof value.code === "string" ? value.code : "";
247
+ const language =
248
+ "language" in value && typeof value.language === "string"
249
+ ? value.language
250
+ : "text";
251
+ const showLineNumbers =
252
+ "showLineNumbers" in value && typeof value.showLineNumbers === "boolean"
253
+ ? value.showLineNumbers
254
+ : false;
255
+
256
+ // Extract and validate highlightLines array
257
+ const rawHighlightLines =
258
+ "highlightLines" in value && Array.isArray(value.highlightLines)
259
+ ? value.highlightLines
260
+ : [];
261
+ const highlightLines = rawHighlightLines.filter(
262
+ (item): item is number => typeof item === "number",
263
+ );
264
+
265
+ const theme =
266
+ "theme" in value && typeof value.theme === "string"
267
+ ? value.theme
268
+ : defaultTheme;
269
+
270
+ if (!code) {
271
+ return null;
272
+ }
273
+
274
+ return {
275
+ code,
276
+ language,
277
+ showLineNumbers,
278
+ highlightLines,
279
+ theme,
280
+ };
281
+ }
282
+
283
+ // Invalid type
284
+ return null;
285
+ }
286
+
287
+ /**
288
+ * Split code into lines for rendering
289
+ */
290
+ export function splitCodeIntoLines(code: string): string[] {
291
+ return code.split("\n");
292
+ }
293
+
294
+ /**
295
+ * Check if a line should be highlighted
296
+ */
297
+ export function isLineHighlighted(
298
+ lineNumber: number,
299
+ highlightLines: number[],
300
+ ): boolean {
301
+ return highlightLines.includes(lineNumber);
302
+ }