@next-vibe/checker 1.0.11 → 1.0.13

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 (400) hide show
  1. package/.dist/bin/vibe-runtime.js +26 -22
  2. package/.dist/bin/vibe-runtime.js.map +5 -5
  3. package/.dist/oxlint-plugins/i18n.js +4 -0
  4. package/.dist/oxlint-plugins/i18n.js.map +1 -0
  5. package/.dist/oxlint-plugins/jsx-capitalization.js +4 -0
  6. package/.dist/oxlint-plugins/jsx-capitalization.js.map +1 -0
  7. package/.dist/oxlint-plugins/restricted-syntax.js +4 -0
  8. package/.dist/oxlint-plugins/restricted-syntax.js.map +1 -0
  9. package/check.config.ts +4 -12
  10. package/package.json +2 -9
  11. package/src/app/api/[locale]/LICENSE +674 -0
  12. package/src/app/api/[locale]/i18n/de/index.ts +13 -0
  13. package/src/app/api/[locale]/i18n/en/index.ts +12 -0
  14. package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
  15. package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
  16. package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
  17. package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
  18. package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
  19. package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
  20. package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
  21. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
  22. package/src/app/api/[locale]/shared/types/utils.ts +190 -0
  23. package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
  24. package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
  25. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
  26. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
  27. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
  28. package/src/app/api/[locale]/shared/utils/index.ts +11 -0
  29. package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
  30. package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
  31. package/src/app/api/[locale]/shared/utils/object.ts +75 -0
  32. package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
  33. package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
  34. package/src/app/api/[locale]/shared/utils/time.ts +53 -0
  35. package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
  36. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
  37. package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
  38. package/src/app/api/[locale]/system/builder/enum.ts +78 -0
  39. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
  40. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
  41. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
  42. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
  43. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
  44. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
  45. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
  46. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
  47. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
  48. package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
  49. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
  50. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
  51. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
  52. package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
  53. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
  54. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
  55. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
  56. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
  57. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
  58. package/src/app/api/[locale]/system/builder/route.ts +21 -0
  59. package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
  60. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
  61. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
  62. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
  63. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
  64. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
  65. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
  66. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
  67. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
  68. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
  69. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
  70. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
  71. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
  72. package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
  73. package/src/app/api/[locale]/system/check/config/repository.ts +886 -0
  74. package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
  75. package/src/app/api/[locale]/system/check/config/types.ts +616 -0
  76. package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
  77. package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
  78. package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
  79. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
  80. package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
  81. package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
  82. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
  83. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
  84. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
  85. package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
  86. package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
  87. package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
  88. package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
  89. package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
  90. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
  91. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
  92. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
  93. package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
  94. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
  95. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
  96. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
  97. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
  98. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
  99. package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
  100. package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
  101. package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
  102. package/src/app/api/[locale]/system/check/test-project/bun.lock +532 -0
  103. package/src/app/api/[locale]/system/check/test-project/check.config.ts +981 -0
  104. package/src/app/api/[locale]/system/check/test-project/package.json +12 -0
  105. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
  106. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
  107. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
  108. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
  109. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
  110. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
  111. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
  112. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
  113. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
  114. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
  115. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
  116. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
  117. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
  118. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +34 -0
  119. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
  120. package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
  121. package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
  122. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
  123. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
  124. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
  125. package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
  126. package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
  127. package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
  128. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
  129. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
  130. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
  131. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
  132. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
  133. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
  134. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
  135. package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
  136. package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
  137. package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
  138. package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
  139. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
  140. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
  141. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
  142. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
  143. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
  144. package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
  145. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
  146. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
  147. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
  148. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
  149. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
  150. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
  151. package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
  152. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
  153. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
  154. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
  155. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
  156. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
  157. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
  158. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
  159. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
  160. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
  161. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
  162. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
  163. package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
  164. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
  165. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
  166. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
  167. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
  168. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
  169. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
  170. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
  171. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
  172. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
  173. package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
  174. package/src/app/api/[locale]/system/help/definition.ts +445 -0
  175. package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
  176. package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
  177. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
  178. package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
  179. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
  180. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
  181. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
  182. package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
  183. package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
  184. package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
  185. package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
  186. package/src/app/api/[locale]/system/help/list/route.ts +21 -0
  187. package/src/app/api/[locale]/system/help/repository.ts +212 -0
  188. package/src/app/api/[locale]/system/help/route.ts +16 -0
  189. package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
  190. package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
  191. package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
  192. package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
  193. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
  194. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
  195. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
  196. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
  197. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
  198. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
  199. package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
  200. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
  201. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
  202. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
  203. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
  204. package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
  205. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
  206. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
  207. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
  208. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
  209. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
  210. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
  211. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
  212. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
  213. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
  214. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
  215. package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
  216. package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
  217. package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
  218. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
  219. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
  220. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
  221. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
  222. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
  223. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
  224. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
  225. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
  226. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
  227. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
  228. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
  229. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
  230. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
  231. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
  232. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
  233. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
  234. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
  235. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
  236. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
  237. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
  238. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
  239. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
  240. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
  252. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
  253. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
  254. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
  255. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
  256. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
  257. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
  258. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
  259. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
  260. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
  261. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
  262. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
  263. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
  264. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
  265. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
  266. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
  267. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
  268. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
  288. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
  289. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
  290. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
  291. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
  292. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
  293. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
  294. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
  295. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
  296. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
  297. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
  298. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
  299. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
  300. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
  301. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
  302. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
  303. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
  304. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
  305. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
  306. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
  307. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
  308. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
  309. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
  310. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
  311. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
  312. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
  313. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
  314. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
  315. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
  316. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
  317. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
  318. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
  319. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
  320. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
  321. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
  322. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
  323. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
  324. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
  325. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
  326. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
  327. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
  328. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
  329. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
  330. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
  331. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
  332. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
  333. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
  334. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
  335. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
  336. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
  337. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
  338. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
  339. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
  340. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
  341. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
  342. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
  343. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
  344. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
  345. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
  346. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
  347. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
  348. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
  349. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
  350. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
  351. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
  352. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
  353. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
  354. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
  355. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
  356. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
  374. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
  375. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
  376. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
  377. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
  378. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
  379. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
  380. package/src/app/api/[locale]/user/auth/enum.ts +16 -0
  381. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
  382. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
  383. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
  384. package/src/app/api/[locale]/user/auth/types.ts +110 -0
  385. package/src/app/api/[locale]/user/enum.ts +64 -0
  386. package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
  387. package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
  388. package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
  389. package/src/app/api/[locale]/user/types.ts +118 -0
  390. package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
  391. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
  392. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
  393. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
  394. package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
  395. package/src/app/api/i18n/de/index.ts +6 -0
  396. package/src/app/api/i18n/en/index.ts +5 -0
  397. package/src/app/api/i18n/pl/index.ts +5 -0
  398. package/src/app/i18n/de/index.ts +6 -0
  399. package/src/app/i18n/en/index.ts +5 -0
  400. package/src/app/i18n/pl/index.ts +5 -0
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Code Quality List Widget Logic
3
+ * Shared data extraction and processing for CODE_QUALITY_LIST widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Code quality issue item
11
+ */
12
+ export interface CodeQualityItem {
13
+ file: string;
14
+ line?: number;
15
+ column?: number;
16
+ severity: "error" | "warning" | "info";
17
+ message: string;
18
+ rule?: string;
19
+ [key: string]: WidgetData;
20
+ }
21
+
22
+ /**
23
+ * Summary statistics for code quality checks
24
+ */
25
+ export interface CodeQualitySummary {
26
+ totalIssues: number;
27
+ totalFiles: number;
28
+ totalErrors: number;
29
+ displayedIssues: number;
30
+ displayedFiles: number;
31
+ truncatedMessage?: string;
32
+ currentPage: number;
33
+ totalPages: number;
34
+ }
35
+
36
+ /**
37
+ * Processed code quality list structure
38
+ */
39
+ export interface ProcessedCodeQualityList {
40
+ items: CodeQualityItem[];
41
+ groupBy?: "file" | "severity" | "rule";
42
+ }
43
+
44
+ /**
45
+ * Extract and validate code quality list data from WidgetData
46
+ * CODE_QUALITY_LIST widget only handles the items array
47
+ * Summary is rendered by separate CONTAINER widget
48
+ */
49
+ export function extractCodeQualityListData(
50
+ value: WidgetData,
51
+ ): ProcessedCodeQualityList | null {
52
+ // Handle array of issues directly
53
+ if (Array.isArray(value)) {
54
+ if (value.length === 0) {
55
+ return null;
56
+ }
57
+
58
+ const items = value
59
+ .map((item: WidgetData) => validateCodeQualityItem(item))
60
+ .filter((item): item is CodeQualityItem => item !== null);
61
+
62
+ if (items.length === 0) {
63
+ return null;
64
+ }
65
+
66
+ return {
67
+ items,
68
+ };
69
+ }
70
+
71
+ // Handle object with items array
72
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
73
+ const items =
74
+ "items" in value && Array.isArray(value.items) ? value.items : [];
75
+ const groupBy =
76
+ "groupBy" in value && typeof value.groupBy === "string"
77
+ ? value.groupBy
78
+ : undefined;
79
+
80
+ const validItems = items
81
+ .map((item: WidgetData) => validateCodeQualityItem(item))
82
+ .filter((item): item is CodeQualityItem => item !== null);
83
+
84
+ if (validItems.length === 0) {
85
+ return null;
86
+ }
87
+
88
+ return {
89
+ items: validItems,
90
+ groupBy:
91
+ groupBy === "file" || groupBy === "severity" || groupBy === "rule"
92
+ ? groupBy
93
+ : undefined,
94
+ };
95
+ }
96
+
97
+ return null;
98
+ }
99
+
100
+ /**
101
+ * Validate a single code quality item
102
+ */
103
+ function validateCodeQualityItem(item: WidgetData): CodeQualityItem | null {
104
+ if (typeof item !== "object" || item === null || Array.isArray(item)) {
105
+ return null;
106
+ }
107
+
108
+ const file = "file" in item && typeof item.file === "string" ? item.file : "";
109
+ const message =
110
+ "message" in item && typeof item.message === "string" ? item.message : "";
111
+
112
+ if (!file || !message) {
113
+ return null;
114
+ }
115
+
116
+ const line =
117
+ "line" in item && typeof item.line === "number" ? item.line : undefined;
118
+ const column =
119
+ "column" in item && typeof item.column === "number"
120
+ ? item.column
121
+ : undefined;
122
+ const severity =
123
+ "severity" in item && typeof item.severity === "string"
124
+ ? item.severity
125
+ : "info";
126
+ const rule =
127
+ "rule" in item && typeof item.rule === "string" ? item.rule : undefined;
128
+
129
+ return {
130
+ file,
131
+ line,
132
+ column,
133
+ severity:
134
+ severity === "error" || severity === "warning" || severity === "info"
135
+ ? severity
136
+ : "info",
137
+ message,
138
+ rule,
139
+ ...item,
140
+ } as CodeQualityItem;
141
+ }
142
+
143
+ /**
144
+ * Group items by specified field
145
+ */
146
+ export function groupCodeQualityItems(
147
+ items: CodeQualityItem[],
148
+ groupBy: "file" | "severity" | "rule",
149
+ ): Map<string, CodeQualityItem[]> {
150
+ const groups = new Map<string, CodeQualityItem[]>();
151
+
152
+ for (const item of items) {
153
+ const groupKey = item[groupBy] ?? "unknown";
154
+ const key = String(groupKey);
155
+
156
+ if (!groups.has(key)) {
157
+ groups.set(key, []);
158
+ }
159
+ groups.get(key)!.push(item);
160
+ }
161
+
162
+ return groups;
163
+ }
164
+
165
+ /**
166
+ * Count items by severity
167
+ */
168
+ export function countCodeQualityBySeverity(items: CodeQualityItem[]): {
169
+ error: number;
170
+ warning: number;
171
+ info: number;
172
+ } {
173
+ const counts = { error: 0, warning: 0, info: 0 };
174
+
175
+ for (const item of items) {
176
+ if (item.severity in counts) {
177
+ counts[item.severity]++;
178
+ }
179
+ }
180
+
181
+ return counts;
182
+ }
183
+
184
+ /**
185
+ * Sort code quality items by severity (errors first, then warnings, then info)
186
+ */
187
+ export function sortBySeverity(items: CodeQualityItem[]): CodeQualityItem[] {
188
+ const severityOrder: Record<string, number> = {
189
+ error: 0,
190
+ warning: 1,
191
+ info: 2,
192
+ };
193
+ return items.toSorted((a, b) => {
194
+ const aOrder = severityOrder[a.severity] ?? 3;
195
+ const bOrder = severityOrder[b.severity] ?? 3;
196
+ if (aOrder !== bOrder) {
197
+ return aOrder - bOrder;
198
+ }
199
+ // Secondary sort by line number
200
+ return (a.line || 0) - (b.line || 0);
201
+ });
202
+ }
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Container Widget Logic
3
+ * Shared data extraction and processing for CONTAINER 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
+ * Container layout configuration
13
+ */
14
+ export interface ContainerLayout {
15
+ type: "vertical" | "horizontal" | "grid";
16
+ columns?: number;
17
+ }
18
+
19
+ /**
20
+ * Container configuration
21
+ */
22
+ export interface ContainerConfig {
23
+ layout?: ContainerLayout;
24
+ icon?: string;
25
+ border?: boolean;
26
+ spacing?: "compact" | "normal" | "relaxed";
27
+ }
28
+
29
+ /**
30
+ * Processed container data structure
31
+ */
32
+ export interface ProcessedContainer {
33
+ children: WidgetData[];
34
+ title?: string;
35
+ layout?: "vertical" | "horizontal" | "grid";
36
+ spacing?: number;
37
+ }
38
+
39
+ /**
40
+ * Extract and validate container data from WidgetData
41
+ */
42
+ export function extractContainerData(
43
+ value: WidgetData,
44
+ ): ProcessedContainer | null {
45
+ // Handle array value directly (children only)
46
+ if (Array.isArray(value)) {
47
+ return {
48
+ children: value,
49
+ layout: "vertical",
50
+ };
51
+ }
52
+
53
+ // Handle object value with container properties
54
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
55
+ const children =
56
+ "children" in value && Array.isArray(value.children)
57
+ ? value.children
58
+ : [];
59
+ const title =
60
+ "title" in value && typeof value.title === "string"
61
+ ? value.title
62
+ : undefined;
63
+ const layout =
64
+ "layout" in value && typeof value.layout === "string"
65
+ ? value.layout
66
+ : "vertical";
67
+ const spacing =
68
+ "spacing" in value && typeof value.spacing === "number"
69
+ ? value.spacing
70
+ : undefined;
71
+
72
+ if (children.length === 0) {
73
+ return null;
74
+ }
75
+
76
+ return {
77
+ children,
78
+ title,
79
+ layout:
80
+ layout === "horizontal" || layout === "grid" || layout === "vertical"
81
+ ? layout
82
+ : "vertical",
83
+ spacing,
84
+ };
85
+ }
86
+
87
+ return null;
88
+ }
89
+
90
+ /**
91
+ * Get container configuration from field
92
+ */
93
+ export function getContainerConfig<TKey extends string>(
94
+ field: UnifiedField<TKey>,
95
+ ): ContainerConfig {
96
+ const defaultConfig: ContainerConfig = {
97
+ spacing: "normal",
98
+ };
99
+
100
+ if (field.ui.type !== WidgetType.CONTAINER) {
101
+ return defaultConfig;
102
+ }
103
+
104
+ const config = field.ui;
105
+
106
+ const layout =
107
+ config.layout &&
108
+ typeof config.layout === "object" &&
109
+ !Array.isArray(config.layout) &&
110
+ "type" in config.layout
111
+ ? (config.layout as ContainerLayout)
112
+ : { type: "vertical" as const, columns: 1 };
113
+
114
+ const icon = typeof config.icon === "string" ? config.icon : undefined;
115
+ const border = typeof config.border === "boolean" ? config.border : false;
116
+ const spacing =
117
+ config.spacing === "compact" ||
118
+ config.spacing === "normal" ||
119
+ config.spacing === "relaxed"
120
+ ? config.spacing
121
+ : "normal";
122
+
123
+ return {
124
+ layout,
125
+ icon,
126
+ border,
127
+ spacing,
128
+ };
129
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Data Card Widget Logic
3
+ * Shared data extraction and processing for DATA_CARD widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Processed data card structure
11
+ */
12
+ export interface ProcessedDataCard {
13
+ title: string;
14
+ description?: string;
15
+ fields: Array<{
16
+ label: string;
17
+ value: WidgetData;
18
+ }>;
19
+ actions?: Array<{
20
+ label: string;
21
+ action: string;
22
+ }>;
23
+ }
24
+
25
+ /**
26
+ * Extract and validate data card from WidgetData
27
+ */
28
+ export function extractDataCardData(
29
+ value: WidgetData,
30
+ ): ProcessedDataCard | null {
31
+ // Handle object value with card properties
32
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
33
+ const title =
34
+ "title" in value && typeof value.title === "string" ? value.title : "";
35
+ const description =
36
+ "description" in value && typeof value.description === "string"
37
+ ? value.description
38
+ : undefined;
39
+ const fields =
40
+ "fields" in value && Array.isArray(value.fields) ? value.fields : [];
41
+ const actions =
42
+ "actions" in value && Array.isArray(value.actions)
43
+ ? value.actions
44
+ : undefined;
45
+
46
+ if (!title) {
47
+ return null;
48
+ }
49
+
50
+ // Validate fields
51
+ const validFields = fields
52
+ .filter((f) => typeof f === "object" && f !== null)
53
+ .map((f) => ({
54
+ label:
55
+ "label" in f && typeof f.label === "string" ? f.label : "Unknown",
56
+ value: "value" in f ? f.value : null,
57
+ }));
58
+
59
+ // Validate actions if present
60
+ const validActions = actions
61
+ ? actions
62
+ .filter((a) => typeof a === "object" && a !== null)
63
+ .map((a) => ({
64
+ label:
65
+ "label" in a && typeof a.label === "string" ? a.label : "Action",
66
+ action:
67
+ "action" in a && typeof a.action === "string" ? a.action : "",
68
+ }))
69
+ : undefined;
70
+
71
+ return {
72
+ title,
73
+ description,
74
+ fields: validFields,
75
+ actions: validActions,
76
+ };
77
+ }
78
+
79
+ // Invalid type
80
+ return null;
81
+ }
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Data Cards Widget Logic
3
+ * Shared data extraction and processing for DATA_CARDS 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
+ * Individual card item
13
+ */
14
+ export interface CardItem {
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
+ * Type guard to check if a value is a CardItem
26
+ */
27
+ function isCardItem(item: WidgetData): item is CardItem {
28
+ return typeof item === "object" && item !== null && !Array.isArray(item);
29
+ }
30
+
31
+ /**
32
+ * Card configuration
33
+ */
34
+ export interface CardConfig {
35
+ layout: {
36
+ columns: number;
37
+ spacing: string;
38
+ };
39
+ groupBy?: string;
40
+ cardTemplate: string;
41
+ showSummary: boolean;
42
+ summaryTemplate?: string;
43
+ itemConfig: {
44
+ template: string;
45
+ size: string;
46
+ spacing: string;
47
+ };
48
+ }
49
+
50
+ /**
51
+ * Processed data cards structure
52
+ */
53
+ export interface ProcessedDataCards {
54
+ cards: CardItem[];
55
+ columns: number;
56
+ title?: string;
57
+ }
58
+
59
+ /**
60
+ * Get card configuration from field
61
+ */
62
+ export function getCardsConfig<TKey extends string>(
63
+ field: UnifiedField<TKey>,
64
+ ): CardConfig {
65
+ const defaultConfig: CardConfig = {
66
+ layout: { columns: 2, spacing: "normal" },
67
+ cardTemplate: "default",
68
+ showSummary: false,
69
+ itemConfig: { template: "default", size: "medium", spacing: "normal" },
70
+ };
71
+
72
+ if (field.ui.type !== WidgetType.DATA_CARDS) {
73
+ return defaultConfig;
74
+ }
75
+
76
+ const config = field.ui;
77
+
78
+ // Handle layout config - ensure it's an object
79
+ let layout: { columns: number; spacing: string } = {
80
+ columns: 2,
81
+ spacing: "normal",
82
+ };
83
+ if (
84
+ config.layout &&
85
+ typeof config.layout === "object" &&
86
+ "columns" in config.layout &&
87
+ "spacing" in config.layout
88
+ ) {
89
+ layout = {
90
+ columns:
91
+ typeof config.layout.columns === "number" ? config.layout.columns : 2,
92
+ spacing:
93
+ typeof config.layout.spacing === "string"
94
+ ? config.layout.spacing
95
+ : "normal",
96
+ };
97
+ }
98
+
99
+ return {
100
+ layout,
101
+ groupBy: config.groupBy !== undefined ? String(config.groupBy) : undefined,
102
+ cardTemplate:
103
+ config.cardTemplate !== undefined
104
+ ? String(config.cardTemplate)
105
+ : "default",
106
+ showSummary:
107
+ config.showSummary !== undefined ? Boolean(config.showSummary) : false,
108
+ summaryTemplate:
109
+ config.summaryTemplate !== undefined
110
+ ? String(config.summaryTemplate)
111
+ : undefined,
112
+ itemConfig:
113
+ config.itemConfig &&
114
+ typeof config.itemConfig === "object" &&
115
+ "template" in config.itemConfig &&
116
+ "size" in config.itemConfig &&
117
+ "spacing" in config.itemConfig
118
+ ? {
119
+ template:
120
+ typeof config.itemConfig.template === "string"
121
+ ? config.itemConfig.template
122
+ : "default",
123
+ size:
124
+ typeof config.itemConfig.size === "string"
125
+ ? config.itemConfig.size
126
+ : "medium",
127
+ spacing:
128
+ typeof config.itemConfig.spacing === "string"
129
+ ? config.itemConfig.spacing
130
+ : "normal",
131
+ }
132
+ : {
133
+ template: "default",
134
+ size: "medium",
135
+ spacing: "normal",
136
+ },
137
+ };
138
+ }
139
+
140
+ /**
141
+ * Group card data by specified field
142
+ */
143
+ export function groupCardData(
144
+ data: CardItem[],
145
+ groupBy: string,
146
+ ): Map<string, CardItem[]> {
147
+ const groups = new Map<string, CardItem[]>();
148
+
149
+ for (const item of data) {
150
+ const groupValue = item[groupBy];
151
+ let groupKey = "unknown";
152
+ if (typeof groupValue === "string") {
153
+ groupKey = groupValue;
154
+ } else if (typeof groupValue === "number") {
155
+ groupKey = String(groupValue);
156
+ } else if (typeof groupValue === "boolean") {
157
+ groupKey = groupValue ? "true" : "false";
158
+ } else if (groupValue !== null && groupValue !== undefined) {
159
+ groupKey = "unknown";
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 cards by severity
172
+ */
173
+ export function countBySeverity(data: CardItem[]): Record<string, number> {
174
+ const counts: Record<string, number> = { error: 0, warning: 0, info: 0 };
175
+
176
+ for (const item of data) {
177
+ const severityValue = item.severity;
178
+ let severity = "info";
179
+ if (typeof severityValue === "string") {
180
+ severity = severityValue;
181
+ }
182
+ if (severity in counts) {
183
+ counts[severity]++;
184
+ } else {
185
+ counts[severity] = 1;
186
+ }
187
+ }
188
+
189
+ return counts;
190
+ }
191
+
192
+ /**
193
+ * Extract and validate data cards from WidgetData
194
+ */
195
+ export function extractDataCardsData(
196
+ value: WidgetData,
197
+ ): ProcessedDataCards | null {
198
+ // Handle array of cards directly
199
+ if (Array.isArray(value)) {
200
+ if (value.length === 0) {
201
+ return null;
202
+ }
203
+
204
+ const filteredCards: CardItem[] = [];
205
+ for (const item of value) {
206
+ if (isCardItem(item)) {
207
+ filteredCards.push(item);
208
+ }
209
+ }
210
+
211
+ if (filteredCards.length === 0) {
212
+ return null;
213
+ }
214
+
215
+ return {
216
+ cards: filteredCards,
217
+ columns: 3,
218
+ };
219
+ }
220
+
221
+ // Handle object with cards array
222
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
223
+ const cards =
224
+ "cards" in value && Array.isArray(value.cards) ? value.cards : [];
225
+ const columns =
226
+ "columns" in value && typeof value.columns === "number"
227
+ ? value.columns
228
+ : 3;
229
+ const title =
230
+ "title" in value && typeof value.title === "string"
231
+ ? value.title
232
+ : undefined;
233
+
234
+ const validCards = cards.filter(
235
+ (item): item is CardItem =>
236
+ typeof item === "object" && item !== null && !Array.isArray(item),
237
+ );
238
+
239
+ if (validCards.length === 0) {
240
+ return null;
241
+ }
242
+
243
+ return {
244
+ cards: validCards,
245
+ columns: Math.max(1, Math.min(4, columns)),
246
+ title,
247
+ };
248
+ }
249
+
250
+ return null;
251
+ }
252
+
253
+ /**
254
+ * Get grid columns count
255
+ */
256
+ export function getDataCardsColumns(columns: number): number {
257
+ return Math.max(1, Math.min(4, columns));
258
+ }