@next-vibe/checker 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/.dist/bin/vibe-runtime.js +10 -19
  2. package/.dist/bin/vibe-runtime.js.map +3 -3
  3. package/check.config.ts +4 -4
  4. package/package.json +2 -9
  5. package/src/app/api/[locale]/LICENSE +674 -0
  6. package/src/app/api/[locale]/i18n/de/index.ts +13 -0
  7. package/src/app/api/[locale]/i18n/en/index.ts +12 -0
  8. package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
  9. package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
  10. package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
  11. package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
  12. package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
  13. package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
  14. package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
  15. package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
  16. package/src/app/api/[locale]/shared/types/utils.ts +190 -0
  17. package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
  18. package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
  19. package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
  20. package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
  21. package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
  22. package/src/app/api/[locale]/shared/utils/index.ts +11 -0
  23. package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
  24. package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
  25. package/src/app/api/[locale]/shared/utils/object.ts +75 -0
  26. package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
  27. package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
  28. package/src/app/api/[locale]/shared/utils/time.ts +53 -0
  29. package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
  30. package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
  31. package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
  32. package/src/app/api/[locale]/system/builder/enum.ts +77 -0
  33. package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
  34. package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
  35. package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
  36. package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
  37. package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
  38. package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
  39. package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
  40. package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
  41. package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
  42. package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
  43. package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
  44. package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
  45. package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
  46. package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
  47. package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
  48. package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
  49. package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
  50. package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
  51. package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
  52. package/src/app/api/[locale]/system/builder/route.ts +21 -0
  53. package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
  54. package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
  55. package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
  56. package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
  57. package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
  58. package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
  59. package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
  60. package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
  61. package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
  62. package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
  63. package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
  64. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
  65. package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
  66. package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
  67. package/src/app/api/[locale]/system/check/config/repository.ts +819 -0
  68. package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
  69. package/src/app/api/[locale]/system/check/config/types.ts +616 -0
  70. package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
  71. package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
  72. package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
  73. package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
  74. package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
  75. package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
  76. package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
  77. package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
  78. package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
  79. package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
  80. package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
  81. package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
  82. package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
  83. package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
  84. package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
  85. package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
  86. package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
  87. package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
  88. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
  89. package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
  90. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
  91. package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
  92. package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
  93. package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
  94. package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
  95. package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
  96. package/src/app/api/[locale]/system/check/test-project/bun.lock +449 -0
  97. package/src/app/api/[locale]/system/check/test-project/check.config.ts +989 -0
  98. package/src/app/api/[locale]/system/check/test-project/package.json +20 -0
  99. package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
  100. package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
  101. package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
  102. package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
  103. package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
  104. package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
  105. package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
  106. package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
  107. package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
  108. package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
  109. package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
  110. package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
  111. package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
  112. package/src/app/api/[locale]/system/check/test-project/tsconfig.json +38 -0
  113. package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
  114. package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
  115. package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
  116. package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
  117. package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
  118. package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
  119. package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
  120. package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
  121. package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
  122. package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
  123. package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
  124. package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
  125. package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
  126. package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
  127. package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
  128. package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
  129. package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
  130. package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
  131. package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
  132. package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
  133. package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
  134. package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
  135. package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
  136. package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
  137. package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
  138. package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
  139. package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
  140. package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
  141. package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
  142. package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
  143. package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
  144. package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
  145. package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
  146. package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
  147. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
  148. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
  149. package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
  150. package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
  151. package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
  152. package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
  153. package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
  154. package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
  155. package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
  156. package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
  157. package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
  158. package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
  159. package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
  160. package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
  161. package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
  162. package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
  163. package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
  164. package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
  165. package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
  166. package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
  167. package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
  168. package/src/app/api/[locale]/system/help/definition.ts +445 -0
  169. package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
  170. package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
  171. package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
  172. package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
  173. package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
  174. package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
  175. package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
  176. package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
  177. package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
  178. package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
  179. package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
  180. package/src/app/api/[locale]/system/help/list/route.ts +21 -0
  181. package/src/app/api/[locale]/system/help/repository.ts +212 -0
  182. package/src/app/api/[locale]/system/help/route.ts +16 -0
  183. package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
  184. package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
  185. package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
  186. package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
  187. package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
  188. package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
  189. package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
  190. package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
  191. package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
  192. package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
  193. package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
  194. package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
  195. package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
  196. package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
  197. package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
  198. package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
  199. package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
  200. package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
  201. package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
  202. package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
  203. package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
  204. package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
  205. package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
  206. package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
  207. package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
  208. package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
  209. package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
  210. package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
  211. package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
  212. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
  213. package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
  214. package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
  215. package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
  216. package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
  217. package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
  218. package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
  219. package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
  220. package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
  221. package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
  222. package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
  223. package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
  224. package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
  225. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
  226. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
  227. package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
  228. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
  229. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
  230. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
  231. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
  232. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
  233. package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
  234. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
  235. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
  236. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
  237. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
  238. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
  239. package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
  240. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
  241. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
  242. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
  243. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
  244. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
  245. package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
  246. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
  247. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
  248. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
  249. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
  250. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
  251. package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
  252. package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
  253. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
  254. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
  255. package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
  256. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
  257. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
  258. package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
  259. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
  260. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
  261. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
  262. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
  263. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
  264. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
  265. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
  266. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
  267. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
  268. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
  269. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
  270. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
  271. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
  272. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
  273. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
  274. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
  275. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
  276. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
  277. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
  278. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
  279. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
  280. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
  281. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
  282. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
  283. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
  284. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
  285. package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
  286. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
  287. package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
  288. package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
  289. package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
  290. package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
  291. package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
  292. package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
  293. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
  294. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
  295. package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
  296. package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
  297. package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
  298. package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
  299. package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
  300. package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
  301. package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
  302. package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
  303. package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
  304. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
  305. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
  306. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
  307. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
  308. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
  309. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
  310. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
  311. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
  312. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
  313. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
  314. package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
  315. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
  316. package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
  317. package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
  318. package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
  319. package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
  320. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
  321. package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
  322. package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
  323. package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
  324. package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
  325. package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
  326. package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
  327. package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
  328. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
  329. package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
  330. package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
  331. package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
  332. package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
  333. package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
  334. package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
  335. package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
  336. package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
  337. package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
  338. package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
  339. package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
  340. package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
  341. package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
  342. package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
  343. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
  344. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
  345. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
  346. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
  347. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
  348. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
  349. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
  350. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
  351. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
  352. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
  353. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
  354. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
  355. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
  356. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
  357. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
  358. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
  359. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
  360. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
  361. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
  362. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
  363. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
  364. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
  365. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
  366. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
  367. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
  368. package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
  369. package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
  370. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
  371. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
  372. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
  373. package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
  374. package/src/app/api/[locale]/user/auth/enum.ts +16 -0
  375. package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
  376. package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
  377. package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
  378. package/src/app/api/[locale]/user/auth/types.ts +110 -0
  379. package/src/app/api/[locale]/user/enum.ts +64 -0
  380. package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
  381. package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
  382. package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
  383. package/src/app/api/[locale]/user/types.ts +118 -0
  384. package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
  385. package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
  386. package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
  387. package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
  388. package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
  389. package/src/app/api/i18n/de/index.ts +6 -0
  390. package/src/app/api/i18n/en/index.ts +5 -0
  391. package/src/app/api/i18n/pl/index.ts +5 -0
  392. package/src/app/i18n/de/index.ts +6 -0
  393. package/src/app/i18n/en/index.ts +5 -0
  394. package/src/app/i18n/pl/index.ts +5 -0
@@ -0,0 +1,184 @@
1
+ import "server-only";
2
+
3
+ /**
4
+ * Endpoint Handler Implementation
5
+ * Main function for creating type-safe multi-method handlers
6
+ */
7
+ import type { ResponseType } from "next-vibe/shared/types/response.schema";
8
+
9
+ import type { UserRoleValue } from "@/app/api/[locale]/user/user-roles/enum";
10
+ import type { CountryLanguage } from "@/i18n/core/config";
11
+
12
+ import type { CreateApiEndpointAny } from "../../types/endpoint";
13
+ import { Methods } from "../../types/enums";
14
+ import type {
15
+ GenericHandlerReturnType as GenericHandlerReturnTypeImport,
16
+ MethodHandlerConfig,
17
+ } from "./handler";
18
+ import { endpointHandler } from "./single";
19
+
20
+ /**
21
+ * Base constraint for endpoint definitions
22
+ * All endpoint objects must be a partial record of Methods to CreateApiEndpoint
23
+ */
24
+ export type EndpointDefinitionsConstraint = Partial<
25
+ Record<Methods, CreateApiEndpointAny>
26
+ >;
27
+
28
+ /**
29
+ * Type-safe configuration that enforces handler types match endpoint types
30
+ * Uses conditional types to extract exact types from each endpoint
31
+ * Only requires handlers for methods that exist in the endpoint definition
32
+ * Handlers receive OUTPUT types (validated data) and return OUTPUT types
33
+ */
34
+ export type EndpointHandlerConfig<T extends EndpointDefinitionsConstraint> = {
35
+ endpoint: T;
36
+ } & {
37
+ [K in Methods]?: K extends keyof T
38
+ ? T[K] extends CreateApiEndpointAny
39
+ ? MethodHandlerConfig<
40
+ T[K]["types"]["RequestOutput"],
41
+ T[K]["types"]["ResponseOutput"],
42
+ T[K]["types"]["UrlVariablesOutput"],
43
+ T[K]["allowedRoles"]
44
+ >
45
+ : never
46
+ : never;
47
+ };
48
+
49
+ /**
50
+ * Type for tools object exported from route handlers
51
+ * Contains method handlers (GET, POST, etc.) with their specific types
52
+ * T must be a partial record of Methods to endpoint definitions with proper structure
53
+ */
54
+ export type ToolsObject<T extends EndpointDefinitionsConstraint> = {
55
+ [K in keyof T]: T[K] extends CreateApiEndpointAny
56
+ ? GenericHandlerReturnTypeImport<
57
+ T[K]["types"]["RequestOutput"],
58
+ T[K]["types"]["ResponseOutput"],
59
+ T[K]["types"]["UrlVariablesOutput"],
60
+ T[K]["allowedRoles"]
61
+ >
62
+ : never;
63
+ };
64
+
65
+ /**
66
+ * Return type for endpointsHandler with proper Next.js handler types
67
+ * CLI handlers receive RAW input data (TRequestOutput, TUrlVariablesOutput)
68
+ * tRPC handlers receive RAW input data (TRequestOutput, TUrlVariablesOutput)
69
+ * Next.js handlers work with raw request objects
70
+ * All return VALIDATED response data (TResponseOutput)
71
+ */
72
+ type EndpointsHandlerReturn<T extends EndpointDefinitionsConstraint> = {
73
+ [K in keyof T]: undefined;
74
+ } & {
75
+ tools: ToolsObject<T>;
76
+ };
77
+
78
+ /**
79
+ * Creates handlers for multiple HTTP methods from endpoint definitions
80
+ * Returns an object with Next.js handlers, generic tool handlers, and definitions
81
+ *
82
+ * Note: We use direct endpointHandler calls instead of a helper function because
83
+ * endpointHandler has complex type inference that extracts types from the endpoint.
84
+ * TypeScript can properly infer types when we call endpointHandler directly with
85
+ * the specific endpoint and handler, but not when we try to abstract it into a
86
+ * generic helper function.
87
+ */
88
+ export function endpointsHandler<const T extends EndpointDefinitionsConstraint>(
89
+ config: EndpointHandlerConfig<T>,
90
+ ): EndpointsHandlerReturn<T> {
91
+ const { endpoint: definitions, ...methodConfigs } = config;
92
+
93
+ // Build the result object dynamically with flexible typing
94
+ // We construct the result object gradually and assert the final type at return
95
+ // This pattern is necessary because TypeScript cannot properly track conditional
96
+ // types during dynamic object construction
97
+ type FlexibleResult = Record<string, undefined> & {
98
+ tools: Record<
99
+ string,
100
+ GenericHandlerReturnTypeImport<
101
+ Record<string, string | number | boolean>,
102
+ ResponseType<Record<string, string | number | boolean>>,
103
+ Record<string, string> & { locale: CountryLanguage },
104
+ readonly UserRoleValue[]
105
+ >
106
+ >;
107
+ };
108
+
109
+ const result: FlexibleResult = {
110
+ tools: {} as FlexibleResult["tools"],
111
+ } as FlexibleResult;
112
+
113
+ // Process GET method
114
+ if (Methods.GET in definitions && Methods.GET in methodConfigs) {
115
+ const endpoint = definitions[Methods.GET];
116
+ const methodConfig = methodConfigs[Methods.GET];
117
+ if (endpoint && methodConfig && "handler" in methodConfig) {
118
+ const handler = endpointHandler({
119
+ endpoint,
120
+ handler: methodConfig.handler,
121
+ });
122
+ result[Methods.GET] = undefined;
123
+ result.tools[Methods.GET] = handler.tools[Methods.GET];
124
+ }
125
+ }
126
+
127
+ // Process POST method
128
+ if (Methods.POST in definitions && Methods.POST in methodConfigs) {
129
+ const endpoint = definitions[Methods.POST];
130
+ const methodConfig = methodConfigs[Methods.POST];
131
+ if (endpoint && methodConfig && "handler" in methodConfig) {
132
+ const handler = endpointHandler({
133
+ endpoint,
134
+ handler: methodConfig.handler,
135
+ });
136
+ result[Methods.POST] = undefined;
137
+ result.tools[Methods.POST] = handler.tools[Methods.POST];
138
+ }
139
+ }
140
+
141
+ // Process PUT method
142
+ if (Methods.PUT in definitions && Methods.PUT in methodConfigs) {
143
+ const endpoint = definitions[Methods.PUT];
144
+ const methodConfig = methodConfigs[Methods.PUT];
145
+ if (endpoint && methodConfig && "handler" in methodConfig) {
146
+ const handler = endpointHandler({
147
+ endpoint,
148
+ handler: methodConfig.handler,
149
+ });
150
+ result[Methods.PUT] = handler[Methods.PUT];
151
+ result.tools[Methods.PUT] = handler.tools[Methods.PUT];
152
+ }
153
+ }
154
+
155
+ // Process PATCH method
156
+ if (Methods.PATCH in definitions && Methods.PATCH in methodConfigs) {
157
+ const endpoint = definitions[Methods.PATCH];
158
+ const methodConfig = methodConfigs[Methods.PATCH];
159
+ if (endpoint && methodConfig && "handler" in methodConfig) {
160
+ const handler = endpointHandler({
161
+ endpoint,
162
+ handler: methodConfig.handler,
163
+ });
164
+ result[Methods.PATCH] = handler[Methods.PATCH];
165
+ result.tools[Methods.PATCH] = handler.tools[Methods.PATCH];
166
+ }
167
+ }
168
+
169
+ // Process DELETE method
170
+ if (Methods.DELETE in definitions && Methods.DELETE in methodConfigs) {
171
+ const endpoint = definitions[Methods.DELETE];
172
+ const methodConfig = methodConfigs[Methods.DELETE];
173
+ if (endpoint && methodConfig && "handler" in methodConfig) {
174
+ const handler = endpointHandler({
175
+ endpoint,
176
+ handler: methodConfig.handler,
177
+ });
178
+ result[Methods.DELETE] = handler[Methods.DELETE];
179
+ result.tools[Methods.DELETE] = handler.tools[Methods.DELETE];
180
+ }
181
+ }
182
+
183
+ return result as EndpointsHandlerReturn<T>;
184
+ }
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Core Validation Module
3
+ * Generic validation utilities used by all handler types
4
+ * Platform-specific validation logic should be in respective handler folders
5
+ */
6
+
7
+ import "server-only";
8
+
9
+ import {
10
+ ErrorResponseTypes,
11
+ fail,
12
+ type ResponseType,
13
+ success,
14
+ } from "next-vibe/shared/types/response.schema";
15
+ import { parseError, validateData } from "next-vibe/shared/utils";
16
+ import { z } from "zod";
17
+
18
+ import type { CountryLanguage } from "@/i18n/core/config";
19
+ import { CountryLanguageValues } from "@/i18n/core/config";
20
+
21
+ import type { EndpointLogger } from "../../logger/endpoint";
22
+ import type { Methods } from "../../types/enums";
23
+
24
+ /**
25
+ * Validate locale using the standard schema
26
+ */
27
+ export function validateLocale(
28
+ locale: CountryLanguage,
29
+ logger: EndpointLogger,
30
+ ): ResponseType<CountryLanguage> {
31
+ const localeValidation = validateData(
32
+ locale,
33
+ z.enum(CountryLanguageValues).optional(),
34
+ logger,
35
+ );
36
+ const validatedLocale = localeValidation.success
37
+ ? localeValidation.data
38
+ : undefined;
39
+ if (!validatedLocale) {
40
+ logger.error("Invalid locale provided:", locale);
41
+ return fail({
42
+ message: ErrorResponseTypes.INVALID_REQUEST_ERROR.errorKey,
43
+ errorType: ErrorResponseTypes.INVALID_REQUEST_ERROR,
44
+ messageParams: {
45
+ error: "Invalid locale provided",
46
+ },
47
+ });
48
+ }
49
+ return success(validatedLocale);
50
+ }
51
+
52
+ /**
53
+ * CLI validation context
54
+ */
55
+ export interface HandlerValidationContext<TRequestData, TUrlParameters> {
56
+ /** HTTP method being used */
57
+ method: Methods;
58
+ /** Direct request data */
59
+ requestData: TRequestData;
60
+ /** Direct URL parameters */
61
+ urlParameters: TUrlParameters;
62
+ /** Locale for error messages */
63
+ locale: CountryLanguage;
64
+ }
65
+
66
+ /**
67
+ * Validated request data - contains validated data (OUTPUT types) ready for handler
68
+ * This represents the final validated data that domain handlers receive
69
+ */
70
+ export interface ValidatedRequestData<TRequestOutput, TUrlVariablesOutput> {
71
+ /** Validated request data (OUTPUT type - what handlers receive) */
72
+ requestData: TRequestOutput;
73
+ /** Validated URL parameters (OUTPUT type - what handlers receive) */
74
+ urlPathParams: TUrlVariablesOutput;
75
+ /** Validated locale */
76
+ locale: CountryLanguage;
77
+ }
78
+
79
+ /**
80
+ * Validate CLI request data
81
+ * Types flow naturally from schemas - no explicit type parameters needed
82
+ */
83
+ export function validateHandlerRequestData<
84
+ TRequestSchema extends z.ZodTypeAny,
85
+ TUrlSchema extends z.ZodTypeAny,
86
+ >(
87
+ endpoint: {
88
+ requestSchema: TRequestSchema;
89
+ requestUrlPathParamsSchema: TUrlSchema;
90
+ },
91
+ context: HandlerValidationContext<
92
+ z.input<TRequestSchema>,
93
+ z.input<TUrlSchema>
94
+ >,
95
+ logger: EndpointLogger,
96
+ ): ResponseType<
97
+ ValidatedRequestData<z.output<TRequestSchema>, z.output<TUrlSchema>>
98
+ > {
99
+ try {
100
+ // Validate locale
101
+ const localeResult = validateLocale(context.locale, logger);
102
+ if (!localeResult.success) {
103
+ return localeResult;
104
+ }
105
+ const validatedLocale = localeResult.data;
106
+
107
+ const urlValidation = validateData(
108
+ context.urlParameters,
109
+ endpoint.requestUrlPathParamsSchema,
110
+ logger,
111
+ );
112
+ if (!urlValidation.success) {
113
+ logger.error("URL validation failed", {
114
+ error: urlValidation.message,
115
+ messageParams: urlValidation.messageParams,
116
+ });
117
+ return {
118
+ success: false,
119
+ message: ErrorResponseTypes.INVALID_QUERY_ERROR.errorKey,
120
+ errorType: ErrorResponseTypes.INVALID_QUERY_ERROR,
121
+ messageParams: {
122
+ error: urlValidation.message,
123
+ },
124
+ };
125
+ }
126
+
127
+ // Now validate the final merged data
128
+ const requestValidation = validateData(
129
+ context.requestData,
130
+ endpoint.requestSchema,
131
+ logger,
132
+ );
133
+ if (!requestValidation.success) {
134
+ logger.error("Request validation failed", {
135
+ error: requestValidation.message,
136
+ messageParams: requestValidation.messageParams,
137
+ });
138
+ return {
139
+ success: false,
140
+ message: ErrorResponseTypes.INVALID_REQUEST_ERROR.errorKey,
141
+ errorType: ErrorResponseTypes.INVALID_REQUEST_ERROR,
142
+ messageParams: {
143
+ error: requestValidation.message,
144
+ },
145
+ cause: requestValidation,
146
+ };
147
+ }
148
+
149
+ return {
150
+ success: true,
151
+ data: {
152
+ requestData: requestValidation.data,
153
+ urlPathParams: urlValidation.data,
154
+ locale: validatedLocale,
155
+ },
156
+ };
157
+ } catch (error) {
158
+ logger.error("Request validation failed", parseError(error));
159
+ return {
160
+ success: false,
161
+ message: ErrorResponseTypes.INVALID_REQUEST_ERROR.errorKey,
162
+ errorType: ErrorResponseTypes.INVALID_REQUEST_ERROR,
163
+ messageParams: {
164
+ error: parseError(error).message,
165
+ },
166
+ };
167
+ }
168
+ }
169
+
170
+ /**
171
+ * Validate response data against endpoint schema
172
+ * Returns validated data or error
173
+ */
174
+ export function validateResponseData<TResponseOutput>(
175
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Schema validation: Response data can be any type until validated against schema, so unknown is correct.
176
+ data: unknown,
177
+ schema: z.ZodTypeAny,
178
+ logger: EndpointLogger,
179
+ ): ResponseType<TResponseOutput> {
180
+ const validation = validateData(data, schema, logger);
181
+
182
+ if (!validation.success) {
183
+ logger.error("[Request Validator] Response validation failed", {
184
+ error: validation.message,
185
+ messageParams: validation.messageParams,
186
+ });
187
+ return {
188
+ success: false,
189
+ message: "app.api.shared.errorTypes.invalid_response_error",
190
+ errorType: ErrorResponseTypes.INVALID_RESPONSE_ERROR,
191
+ messageParams: {
192
+ error: validation.message,
193
+ },
194
+ };
195
+ }
196
+
197
+ return {
198
+ success: true,
199
+ data: validation.data as TResponseOutput,
200
+ };
201
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * API Handler Implementation
3
+ * Main function for creating API handlers that support Next.js, tRPC, and CLI
4
+ */
5
+
6
+ import "server-only";
7
+
8
+ import type { CreateApiEndpointAny } from "../../types/endpoint";
9
+ import {
10
+ type ApiHandlerOptions,
11
+ createGenericHandler,
12
+ type GenericHandlerReturnType,
13
+ } from "./handler";
14
+
15
+ /**
16
+ * API handler return type that supports both Next.js and tRPC
17
+ */
18
+ type EndpointHandlerReturn<TEndpoint extends CreateApiEndpointAny> = {
19
+ [K in TEndpoint["method"]]: undefined;
20
+ } & {
21
+ tools: {
22
+ [K in TEndpoint["method"]]: GenericHandlerReturnType<
23
+ TEndpoint["types"]["RequestOutput"],
24
+ TEndpoint["types"]["ResponseOutput"],
25
+ TEndpoint["types"]["UrlVariablesOutput"],
26
+ TEndpoint["allowedRoles"]
27
+ >;
28
+ };
29
+ definitions: TEndpoint;
30
+ };
31
+
32
+ /**
33
+ * Create an API route handler that supports both Next.js, tRPC, and CLI
34
+ * @param options - API handler options
35
+ * @returns Object with both Next.js handler, tRPC procedure, and CLI handler
36
+ *
37
+ * Type parameters are inferred from options.endpoint.types for proper type flow
38
+ */
39
+ export function endpointHandler<T extends CreateApiEndpointAny>(
40
+ options: ApiHandlerOptions<
41
+ T["types"]["RequestOutput"],
42
+ T["types"]["ResponseOutput"],
43
+ T["types"]["UrlVariablesOutput"],
44
+ T["allowedRoles"],
45
+ T
46
+ >,
47
+ ): EndpointHandlerReturn<T> {
48
+ const genericHandler = createGenericHandler(options);
49
+ const method = options.endpoint.method;
50
+
51
+ return {
52
+ [method]: undefined!,
53
+ tools: {
54
+ [method]: genericHandler,
55
+ },
56
+ definitions: options.endpoint,
57
+ } as EndpointHandlerReturn<T>;
58
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Client Environment Definition
3
+ * Enforces explicit process.env references for Next.js bundler
4
+ */
5
+
6
+ import type { z } from "zod";
7
+ import { z as zod } from "zod";
8
+
9
+ interface FieldDef<T extends z.ZodTypeAny = z.ZodTypeAny> {
10
+ schema: T;
11
+ value: z.input<T>; // Must pass explicit process.env.VAR_NAME
12
+ example: string;
13
+ comment?: string;
14
+ }
15
+
16
+ type Fields = Record<string, FieldDef>;
17
+
18
+ type InferEnv<T extends Fields> = {
19
+ [K in keyof T]: z.infer<T[K]["schema"]>;
20
+ };
21
+
22
+ /**
23
+ * Define client environment with explicit process.env references
24
+ *
25
+ * @example
26
+ * export const { env } = defineEnvClient({
27
+ * NEXT_PUBLIC_APP_URL: {
28
+ * schema: z.string().url(),
29
+ * value: process.env.NEXT_PUBLIC_APP_URL, // Required for bundler
30
+ * example: "http://localhost:3000"
31
+ * },
32
+ * });
33
+ */
34
+ export function defineEnvClient<T extends Fields>(
35
+ fields: T,
36
+ ): { envClient: InferEnv<T> } {
37
+ const schemaShape = Object.fromEntries(
38
+ Object.entries(fields).map(([key, def]) => [key, def.schema]),
39
+ );
40
+ const schema = zod.object(schemaShape);
41
+
42
+ const values = Object.fromEntries(
43
+ Object.entries(fields).map(([key, def]) => [key, def.value]),
44
+ );
45
+
46
+ const envClient = schema.parse(values) as InferEnv<T>;
47
+
48
+ return { envClient };
49
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Minimal Environment Definition
3
+ */
4
+
5
+ import "server-only";
6
+
7
+ import { validateEnv } from "next-vibe/shared/utils/env-util";
8
+ import type { z } from "zod";
9
+ import { z as zod } from "zod";
10
+
11
+ import { envValidationLogger } from "./validation-logger";
12
+
13
+ interface FieldDef<T extends z.ZodTypeAny = z.ZodTypeAny> {
14
+ schema: T;
15
+ example: string;
16
+ comment?: string;
17
+ }
18
+
19
+ type Fields = Record<string, FieldDef>;
20
+
21
+ type InferEnv<T extends Fields> = {
22
+ [K in keyof T]: z.infer<T[K]["schema"]>;
23
+ };
24
+
25
+ /**
26
+ * Define and validate environment variables
27
+ *
28
+ * @example
29
+ * export const { env } = defineEnv({
30
+ * DATABASE_URL: { schema: z.string().url(), example: "postgres://localhost/db", comment: "DB" },
31
+ * API_KEY: { schema: z.string().min(10), example: "your-api-key" },
32
+ * });
33
+ */
34
+ export function defineEnv<T extends Fields>(fields: T): { env: InferEnv<T> } {
35
+ const schemaShape = Object.fromEntries(
36
+ Object.entries(fields).map(([key, def]) => [key, def.schema]),
37
+ );
38
+ const schema = zod.object(schemaShape);
39
+
40
+ const env = validateEnv(
41
+ process.env,
42
+ schema,
43
+ envValidationLogger,
44
+ ) as InferEnv<T>;
45
+
46
+ return { env };
47
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Environment Validation Logger
3
+ * Simple logger for environment validation that works in both browser and server contexts
4
+ */
5
+
6
+ import type { ExplicitAnyType } from "next-vibe/shared/types/utils";
7
+
8
+ import type { EndpointLogger } from "@/app/api/[locale]/system/unified-interface/shared/logger/endpoint";
9
+
10
+ declare const process: {
11
+ env: {
12
+ [key: string]: string | undefined;
13
+ };
14
+ stdout: {
15
+ write: (message: string) => boolean;
16
+ };
17
+ stderr: {
18
+ write: (message: string) => boolean;
19
+ };
20
+ };
21
+
22
+ /**
23
+ * Simple logger for environment validation
24
+ * Works in both browser and server contexts
25
+ */
26
+ export const envValidationLogger: EndpointLogger = {
27
+ info: (message: string, meta?: ExplicitAnyType) => {
28
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : "";
29
+ if (typeof window === "undefined") {
30
+ process.stdout.write(`[ENV] ${message}${metaStr}\n`);
31
+ }
32
+ },
33
+ error: (message: string, meta?: ExplicitAnyType) => {
34
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : "";
35
+ if (typeof window === "undefined") {
36
+ process.stderr.write(`[ENV] ${message}${metaStr}\n`);
37
+ }
38
+ },
39
+ debug: (message: string, meta?: ExplicitAnyType) => {
40
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : "";
41
+ if (typeof window === "undefined") {
42
+ process.stdout.write(`[ENV] ${message}${metaStr}\n`);
43
+ }
44
+ },
45
+ warn: (message: string, meta?: ExplicitAnyType) => {
46
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : "";
47
+ if (typeof window === "undefined") {
48
+ process.stderr.write(`[ENV] ${message}${metaStr}\n`);
49
+ }
50
+ },
51
+ vibe: (message: string, meta?: ExplicitAnyType) => {
52
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : "";
53
+ if (typeof window === "undefined") {
54
+ process.stdout.write(`[ENV] ${message}${metaStr}\n`);
55
+ }
56
+ },
57
+ isDebugEnabled: false,
58
+ };