@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,123 @@
1
+ /**
2
+ * Data List Widget Logic
3
+ * Shared data extraction and processing for DATA_LIST widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * List item type
11
+ */
12
+ export interface ListItem {
13
+ [key: string]: WidgetData;
14
+ }
15
+
16
+ /**
17
+ * Type guard to check if a value is a ListItem
18
+ */
19
+ function isListItem(item: WidgetData): item is ListItem {
20
+ return typeof item === "object" && item !== null && !Array.isArray(item);
21
+ }
22
+
23
+ /**
24
+ * Processed data list structure
25
+ */
26
+ export interface ProcessedDataList {
27
+ items: ListItem[];
28
+ title?: string;
29
+ showBullets: boolean;
30
+ maxItems?: number;
31
+ }
32
+
33
+ /**
34
+ * Extract and validate data list from WidgetData
35
+ */
36
+ export function extractDataListData(
37
+ value: WidgetData,
38
+ ): ProcessedDataList | null {
39
+ // Handle array of items directly
40
+ if (Array.isArray(value)) {
41
+ if (value.length === 0) {
42
+ return null;
43
+ }
44
+
45
+ const filteredItems: ListItem[] = [];
46
+ for (const item of value) {
47
+ if (isListItem(item)) {
48
+ filteredItems.push(item);
49
+ }
50
+ }
51
+
52
+ if (filteredItems.length === 0) {
53
+ return null;
54
+ }
55
+
56
+ return {
57
+ items: filteredItems,
58
+ showBullets: true,
59
+ };
60
+ }
61
+
62
+ // Handle object with items array
63
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
64
+ const items =
65
+ "items" in value && Array.isArray(value.items) ? value.items : [];
66
+ const title =
67
+ "title" in value && typeof value.title === "string"
68
+ ? value.title
69
+ : undefined;
70
+ const showBullets =
71
+ "showBullets" in value && typeof value.showBullets === "boolean"
72
+ ? value.showBullets
73
+ : true;
74
+ const maxItems =
75
+ "maxItems" in value && typeof value.maxItems === "number"
76
+ ? value.maxItems
77
+ : undefined;
78
+
79
+ const validItems = items.filter(
80
+ (item): item is ListItem =>
81
+ typeof item === "object" && item !== null && !Array.isArray(item),
82
+ );
83
+
84
+ if (validItems.length === 0) {
85
+ return null;
86
+ }
87
+
88
+ return {
89
+ items: validItems,
90
+ title,
91
+ showBullets,
92
+ maxItems,
93
+ };
94
+ }
95
+
96
+ return null;
97
+ }
98
+
99
+ /**
100
+ * Get display items based on maxItems limit
101
+ */
102
+ export function getListDisplayItems(
103
+ items: ListItem[],
104
+ maxItems?: number,
105
+ ): ListItem[] {
106
+ if (!maxItems || items.length <= maxItems) {
107
+ return items;
108
+ }
109
+ return items.slice(0, maxItems);
110
+ }
111
+
112
+ /**
113
+ * Get remaining items count
114
+ */
115
+ export function getRemainingListItemsCount(
116
+ totalItems: number,
117
+ maxItems?: number,
118
+ ): number {
119
+ if (!maxItems || totalItems <= maxItems) {
120
+ return 0;
121
+ }
122
+ return totalItems - maxItems;
123
+ }
@@ -0,0 +1,387 @@
1
+ /**
2
+ * Data Table Widget Logic
3
+ * Shared data extraction and processing for DATA_TABLE widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { CountryLanguage } from "@/i18n/core/config";
8
+
9
+ import type { UnifiedField } from "../../types/endpoint";
10
+ import { FieldDataType, WidgetType } from "../../types/enums";
11
+ import type { WidgetData } from "../types";
12
+
13
+ /**
14
+ * Table row type
15
+ */
16
+ export interface TableRow {
17
+ [key: string]: WidgetData;
18
+ }
19
+
20
+ /**
21
+ * Table column definition
22
+ */
23
+ export interface TableColumn<TKey extends string> {
24
+ key: string;
25
+ label: NoInfer<TKey>;
26
+ type?: FieldDataType;
27
+ width?: string;
28
+ align?: "left" | "center" | "right";
29
+ formatter?: (value: WidgetData) => string;
30
+ }
31
+
32
+ /**
33
+ * Table rendering configuration
34
+ */
35
+ export interface TableRenderConfig<TKey extends string> {
36
+ columns: TableColumn<TKey>[];
37
+ pagination: { enabled: boolean; pageSize: number };
38
+ sorting: {
39
+ enabled: boolean;
40
+ defaultSort?: { key: string; direction: "asc" | "desc" };
41
+ };
42
+ filtering: { enabled: boolean };
43
+ }
44
+
45
+ /**
46
+ * Processed data table structure
47
+ */
48
+ export interface ProcessedDataTable<TKey extends string> {
49
+ rows: TableRow[];
50
+ columns: TableColumn<TKey>[];
51
+ }
52
+
53
+ /**
54
+ * Extract and validate data table from WidgetData
55
+ */
56
+ export function extractDataTableData<TKey extends string>(
57
+ value: WidgetData,
58
+ ): ProcessedDataTable<TKey> | null {
59
+ // Handle array of objects (auto-detect columns)
60
+ if (Array.isArray(value)) {
61
+ if (value.length === 0) {
62
+ return null;
63
+ }
64
+
65
+ // Auto-detect columns from first row
66
+ const firstRow = value[0];
67
+ if (
68
+ typeof firstRow === "object" &&
69
+ firstRow !== null &&
70
+ !Array.isArray(firstRow)
71
+ ) {
72
+ const columns: TableColumn<TKey>[] = Object.keys(firstRow).map((key) => ({
73
+ key,
74
+ label: key as TKey,
75
+ }));
76
+
77
+ const rows = value.filter(
78
+ (item): item is TableRow =>
79
+ item !== undefined &&
80
+ typeof item === "object" &&
81
+ item !== null &&
82
+ !Array.isArray(item),
83
+ ) as TableRow[];
84
+
85
+ return {
86
+ rows,
87
+ columns,
88
+ };
89
+ }
90
+
91
+ return null;
92
+ }
93
+
94
+ // Handle object with rows and columns
95
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
96
+ const rows = "rows" in value && Array.isArray(value.rows) ? value.rows : [];
97
+ const columns =
98
+ "columns" in value && Array.isArray(value.columns) ? value.columns : [];
99
+
100
+ // Validate rows
101
+ const validRows = rows.filter(
102
+ (item): item is TableRow =>
103
+ typeof item === "object" && item !== null && !Array.isArray(item),
104
+ );
105
+
106
+ // Validate columns
107
+ const validColumns = columns
108
+ .map((col: WidgetData) => {
109
+ if (typeof col !== "object" || col === null || Array.isArray(col)) {
110
+ return null;
111
+ }
112
+
113
+ const key = "key" in col && typeof col.key === "string" ? col.key : "";
114
+ const label =
115
+ "label" in col && typeof col.label === "string" ? col.label : key;
116
+
117
+ if (!key) {
118
+ return null;
119
+ }
120
+
121
+ return { key, label };
122
+ })
123
+ .filter((col): col is TableColumn<TKey> => col !== null);
124
+
125
+ if (validRows.length === 0) {
126
+ return null;
127
+ }
128
+
129
+ // If no columns provided, auto-detect from first row
130
+ if (validColumns.length === 0 && validRows.length > 0) {
131
+ const firstRow = validRows[0];
132
+ const autoColumns: TableColumn<TKey>[] = Object.keys(firstRow).map(
133
+ (key) => ({
134
+ key,
135
+ label: key as TKey,
136
+ }),
137
+ );
138
+ return {
139
+ rows: validRows,
140
+ columns: autoColumns,
141
+ };
142
+ }
143
+
144
+ return {
145
+ rows: validRows,
146
+ columns: validColumns,
147
+ };
148
+ }
149
+
150
+ return null;
151
+ }
152
+
153
+ /**
154
+ * Get cell value from row
155
+ */
156
+ export function getCellValue(row: TableRow, columnKey: string): WidgetData {
157
+ return row[columnKey];
158
+ }
159
+
160
+ /**
161
+ * Get table configuration from field
162
+ */
163
+ export function getTableConfig<TKey extends string>(
164
+ field: UnifiedField<TKey>,
165
+ ): TableRenderConfig<TKey> {
166
+ const defaultConfig: TableRenderConfig<TKey> = {
167
+ columns: [],
168
+ pagination: { enabled: false, pageSize: 50 },
169
+ sorting: { enabled: false },
170
+ filtering: { enabled: false },
171
+ };
172
+
173
+ if (field.ui.type !== WidgetType.DATA_TABLE) {
174
+ return defaultConfig;
175
+ }
176
+
177
+ const config = field.ui;
178
+
179
+ const columns: TableColumn<TKey>[] =
180
+ config.columns?.map((col) => ({
181
+ key: col.key,
182
+ label: col.label,
183
+ type: FieldDataType.TEXT,
184
+ width: typeof col.width === "string" ? col.width : undefined,
185
+ align: col.align || ("left" as const),
186
+ })) || [];
187
+
188
+ // Extract and type-check pagination config
189
+ const paginationValue = config.pagination;
190
+ let pagination: { enabled: boolean; pageSize: number } = {
191
+ enabled: false,
192
+ pageSize: 50,
193
+ };
194
+ if (
195
+ typeof paginationValue === "object" &&
196
+ paginationValue !== null &&
197
+ !Array.isArray(paginationValue)
198
+ ) {
199
+ const paginationObj = paginationValue;
200
+ if ("enabled" in paginationObj && "pageSize" in paginationObj) {
201
+ const enabledVal = paginationObj.enabled;
202
+ const pageSizeVal = paginationObj.pageSize;
203
+ if (typeof enabledVal === "boolean" && typeof pageSizeVal === "number") {
204
+ pagination = { enabled: enabledVal, pageSize: pageSizeVal };
205
+ }
206
+ }
207
+ }
208
+
209
+ // Extract and type-check sorting config
210
+ const sortingValue = config.sorting;
211
+ let sorting: {
212
+ enabled: boolean;
213
+ defaultSort?: { key: string; direction: "asc" | "desc" };
214
+ } = {
215
+ enabled: false,
216
+ };
217
+ if (
218
+ typeof sortingValue === "object" &&
219
+ sortingValue !== null &&
220
+ !Array.isArray(sortingValue)
221
+ ) {
222
+ const sortingObj = sortingValue;
223
+ if ("enabled" in sortingObj) {
224
+ const enabledVal = sortingObj.enabled;
225
+ if (typeof enabledVal === "boolean") {
226
+ sorting.enabled = enabledVal;
227
+ }
228
+ }
229
+ }
230
+
231
+ // Extract and type-check filtering config
232
+ const filteringValue = config.filtering;
233
+ let filtering: { enabled: boolean } = { enabled: false };
234
+ if (
235
+ typeof filteringValue === "object" &&
236
+ filteringValue !== null &&
237
+ !Array.isArray(filteringValue)
238
+ ) {
239
+ const filteringObj = filteringValue;
240
+ if ("enabled" in filteringObj) {
241
+ const enabledVal = filteringObj.enabled;
242
+ if (typeof enabledVal === "boolean") {
243
+ filtering = { enabled: enabledVal };
244
+ }
245
+ }
246
+ }
247
+
248
+ return {
249
+ columns,
250
+ pagination,
251
+ sorting,
252
+ filtering,
253
+ };
254
+ }
255
+
256
+ /**
257
+ * Detect field data type from value
258
+ */
259
+ export function detectFieldType(value: WidgetData): FieldDataType {
260
+ if (typeof value === "number") {
261
+ return FieldDataType.NUMBER;
262
+ }
263
+ if (typeof value === "boolean") {
264
+ return FieldDataType.BOOLEAN;
265
+ }
266
+ if (Array.isArray(value)) {
267
+ return FieldDataType.ARRAY;
268
+ }
269
+ if (value && typeof value === "object") {
270
+ return FieldDataType.OBJECT;
271
+ }
272
+ if (typeof value === "string" && !isNaN(Date.parse(value))) {
273
+ return FieldDataType.DATE;
274
+ }
275
+ return FieldDataType.TEXT;
276
+ }
277
+
278
+ /**
279
+ * Calculate column widths based on content
280
+ */
281
+ export function calculateColumnWidths<TKey extends string>(
282
+ data: TableRow[],
283
+ config: TableRenderConfig<TKey>,
284
+ maxWidth: number,
285
+ ): number[] {
286
+ const availableWidth = maxWidth - (config.columns.length - 1) * 3; // Account for separators
287
+
288
+ return config.columns.map((col: TableColumn<TKey>) => {
289
+ if (col.width?.endsWith("%")) {
290
+ const percentage = parseInt(col.width.replace("%", ""), 10) / 100;
291
+ return Math.floor(availableWidth * percentage);
292
+ }
293
+
294
+ // Auto-calculate based on content
295
+ const headerWidth = col.label.length;
296
+ const maxContentWidth = Math.max(
297
+ ...data.slice(0, 10).map((row) => {
298
+ const value = row[col.key];
299
+ const formatted = formatCellValue(value);
300
+ return formatted.length;
301
+ }),
302
+ );
303
+
304
+ return Math.min(Math.max(headerWidth, maxContentWidth), 50);
305
+ });
306
+ }
307
+
308
+ /**
309
+ * Get column formatter based on field type
310
+ */
311
+ export function getColumnFormatter(
312
+ type: FieldDataType,
313
+ locale: CountryLanguage,
314
+ ): (value: WidgetData) => string {
315
+ switch (type) {
316
+ case FieldDataType.NUMBER:
317
+ return (value) => {
318
+ if (typeof value === "number") {
319
+ return value.toLocaleString(locale);
320
+ }
321
+ return formatCellValue(value);
322
+ };
323
+ case FieldDataType.BOOLEAN:
324
+ return (value) => {
325
+ if (typeof value === "boolean") {
326
+ return value ? "✓" : "✗";
327
+ }
328
+ return formatCellValue(value);
329
+ };
330
+ case FieldDataType.DATE:
331
+ return (value) => {
332
+ if (typeof value === "string" || value instanceof Date) {
333
+ const date = value instanceof Date ? value : new Date(value);
334
+ return date.toLocaleDateString(locale);
335
+ }
336
+ return formatCellValue(value);
337
+ };
338
+ case FieldDataType.ARRAY:
339
+ return (value) => {
340
+ if (Array.isArray(value)) {
341
+ return `[${value.length} items]`;
342
+ }
343
+ return formatCellValue(value);
344
+ };
345
+ case FieldDataType.OBJECT:
346
+ return (value) => {
347
+ if (
348
+ typeof value === "object" &&
349
+ value !== null &&
350
+ !Array.isArray(value)
351
+ ) {
352
+ return `{${Object.keys(value).length} properties}`;
353
+ }
354
+ return formatCellValue(value);
355
+ };
356
+ default:
357
+ return (value) => {
358
+ const str = formatCellValue(value);
359
+ return str.length > 50 ? `${str.slice(0, 47)}...` : str;
360
+ };
361
+ }
362
+ }
363
+
364
+ /**
365
+ * Format cell value as string for display
366
+ */
367
+ export function formatCellValue(value: WidgetData): string {
368
+ if (typeof value === "string") {
369
+ return value;
370
+ }
371
+ if (typeof value === "number") {
372
+ return String(value);
373
+ }
374
+ if (typeof value === "boolean") {
375
+ return value ? "true" : "false";
376
+ }
377
+ if (value === null || value === undefined) {
378
+ return "";
379
+ }
380
+ if (Array.isArray(value)) {
381
+ return JSON.stringify(value);
382
+ }
383
+ if (typeof value === "object") {
384
+ return JSON.stringify(value);
385
+ }
386
+ return "";
387
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Editable Text Widget Logic
3
+ * Shared data extraction and processing for EDITABLE_TEXT widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Processed editable text data structure
11
+ */
12
+ export interface ProcessedEditableText {
13
+ value: string;
14
+ placeholder?: string;
15
+ multiline?: boolean;
16
+ maxLength?: number;
17
+ readonly?: boolean;
18
+ }
19
+
20
+ /**
21
+ * Extract and validate editable text data from WidgetData
22
+ */
23
+ export function extractEditableTextData(
24
+ value: WidgetData,
25
+ ): ProcessedEditableText | null {
26
+ // Handle string value directly
27
+ if (typeof value === "string") {
28
+ return {
29
+ value,
30
+ multiline: false,
31
+ readonly: false,
32
+ };
33
+ }
34
+
35
+ // Handle number value
36
+ if (typeof value === "number") {
37
+ return {
38
+ value: String(value),
39
+ multiline: false,
40
+ readonly: false,
41
+ };
42
+ }
43
+
44
+ // Handle object value with editable text properties
45
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
46
+ const textValue =
47
+ "value" in value && typeof value.value === "string"
48
+ ? value.value
49
+ : "value" in value && typeof value.value === "number"
50
+ ? String(value.value)
51
+ : "";
52
+ const placeholder =
53
+ "placeholder" in value && typeof value.placeholder === "string"
54
+ ? value.placeholder
55
+ : undefined;
56
+ const multiline =
57
+ "multiline" in value && typeof value.multiline === "boolean"
58
+ ? value.multiline
59
+ : false;
60
+ const maxLength =
61
+ "maxLength" in value && typeof value.maxLength === "number"
62
+ ? value.maxLength
63
+ : undefined;
64
+ const readonly =
65
+ "readonly" in value && typeof value.readonly === "boolean"
66
+ ? value.readonly
67
+ : false;
68
+
69
+ return {
70
+ value: textValue,
71
+ placeholder,
72
+ multiline,
73
+ maxLength,
74
+ readonly,
75
+ };
76
+ }
77
+
78
+ return null;
79
+ }
80
+
81
+ /**
82
+ * Validate text length
83
+ */
84
+ export function isValidTextLength(text: string, maxLength?: number): boolean {
85
+ if (!maxLength) {
86
+ return true;
87
+ }
88
+ return text.length <= maxLength;
89
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Empty State Widget Logic
3
+ * Shared data extraction and processing for EMPTY_STATE widget
4
+ * Used by both React and CLI implementations
5
+ */
6
+
7
+ import type { WidgetData } from "../types";
8
+
9
+ /**
10
+ * Processed empty state data structure
11
+ */
12
+ export interface ProcessedEmptyState {
13
+ title: string;
14
+ description?: string;
15
+ icon?: string;
16
+ action?: {
17
+ label: string;
18
+ action: string;
19
+ };
20
+ }
21
+
22
+ /**
23
+ * Extract and validate empty state data from WidgetData
24
+ */
25
+ export function extractEmptyStateData(
26
+ value: WidgetData,
27
+ ): ProcessedEmptyState | null {
28
+ // Handle string value directly (simple message)
29
+ if (typeof value === "string") {
30
+ return {
31
+ title: value,
32
+ };
33
+ }
34
+
35
+ // Handle object value with empty state properties
36
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
37
+ const title =
38
+ "title" in value && typeof value.title === "string"
39
+ ? value.title
40
+ : "No data";
41
+ const description =
42
+ "description" in value && typeof value.description === "string"
43
+ ? value.description
44
+ : undefined;
45
+ const icon =
46
+ "icon" in value && typeof value.icon === "string"
47
+ ? value.icon
48
+ : undefined;
49
+ const action =
50
+ "action" in value &&
51
+ typeof value.action === "object" &&
52
+ value.action !== null
53
+ ? {
54
+ label:
55
+ "label" in value.action && typeof value.action.label === "string"
56
+ ? value.action.label
57
+ : "Action",
58
+ action:
59
+ "action" in value.action &&
60
+ typeof value.action.action === "string"
61
+ ? value.action.action
62
+ : "",
63
+ }
64
+ : undefined;
65
+
66
+ return {
67
+ title,
68
+ description,
69
+ icon,
70
+ action,
71
+ };
72
+ }
73
+
74
+ // Default empty state
75
+ return {
76
+ title: "No data",
77
+ };
78
+ }