@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,375 @@
1
+ /**
2
+ * Shared Stats Filtering Schemas and Enums
3
+ * Reusable filtering infrastructure for stats endpoints
4
+ * @deprecated This file should no longer be used and will be removed in the future.
5
+ */
6
+
7
+ import { dateSchema } from "next-vibe/shared/types/common.schema";
8
+ import { z } from "zod";
9
+
10
+ import type { Countries, Languages } from "@/i18n/core/config";
11
+ import type { TranslationKey } from "@/i18n/core/static-types";
12
+
13
+ // Re-export dateSchema for consistency
14
+ export { dateSchema };
15
+
16
+ /**
17
+ * Time Period Enum
18
+ * Defines different time periods for historical data aggregation
19
+ */
20
+ export enum TimePeriod {
21
+ HOUR = "hour",
22
+ DAY = "day",
23
+ WEEK = "week",
24
+ MONTH = "month",
25
+ QUARTER = "quarter",
26
+ YEAR = "year",
27
+ }
28
+
29
+ /**
30
+ * Date Range Preset Enum
31
+ * Common date range presets for quick filtering
32
+ */
33
+ export enum DateRangePreset {
34
+ TODAY = "today",
35
+ YESTERDAY = "yesterday",
36
+ LAST_7_DAYS = "last_7_days",
37
+ LAST_30_DAYS = "last_30_days",
38
+ LAST_90_DAYS = "last_90_days",
39
+ THIS_WEEK = "this_week",
40
+ LAST_WEEK = "last_week",
41
+ THIS_MONTH = "this_month",
42
+ LAST_MONTH = "last_month",
43
+ THIS_QUARTER = "this_quarter",
44
+ LAST_QUARTER = "last_quarter",
45
+ THIS_YEAR = "this_year",
46
+ LAST_YEAR = "last_year",
47
+ CUSTOM = "custom",
48
+ }
49
+
50
+ /**
51
+ * Chart Type Enum
52
+ * Different chart visualization types
53
+ */
54
+ export enum ChartType {
55
+ LINE = "line",
56
+ BAR = "bar",
57
+ AREA = "area",
58
+ PIE = "pie",
59
+ DONUT = "donut",
60
+ }
61
+
62
+ /**
63
+ * Base Stats Filter Schema
64
+ * Common filtering options for all stats endpoints
65
+ */
66
+ export const baseStatsFilterSchema = z.object({
67
+ // Time-based filtering
68
+ timePeriod: z.enum(TimePeriod).default(TimePeriod.DAY),
69
+ dateRangePreset: z
70
+ .nativeEnum(DateRangePreset)
71
+ .default(DateRangePreset.LAST_30_DAYS),
72
+ dateFrom: dateSchema.optional(),
73
+ dateTo: dateSchema.optional(),
74
+
75
+ // Chart configuration
76
+ chartType: z.enum(ChartType).default(ChartType.LINE),
77
+
78
+ // Data options
79
+ includeComparison: z.coerce.boolean().default(false),
80
+ comparisonPeriod: z.enum(DateRangePreset).optional(),
81
+ });
82
+
83
+ export type BaseStatsFilterType = z.infer<typeof baseStatsFilterSchema>;
84
+
85
+ /**
86
+ * Historical Data Point Schema
87
+ * Structure for time-series data points
88
+ */
89
+ export const historicalDataPointSchema = z.object({
90
+ date: dateSchema,
91
+ value: z.coerce.number(),
92
+ label: z.string().optional() as z.ZodType<TranslationKey | undefined>,
93
+ labelParams: z
94
+ .record(z.string(), z.union([z.string(), z.coerce.number()]))
95
+ .optional(),
96
+ metadata: z
97
+ .record(z.string(), z.union([z.string(), z.coerce.number(), z.boolean()]))
98
+ .optional(),
99
+ });
100
+
101
+ export type HistoricalDataPointType = z.infer<typeof historicalDataPointSchema>;
102
+
103
+ /**
104
+ * Historical Data Series Schema
105
+ * Structure for a complete data series
106
+ */
107
+ export const historicalDataSeriesSchema = z.object({
108
+ name: z.string() as z.ZodType<TranslationKey>,
109
+ nameParams: z
110
+ .record(z.string(), z.union([z.string(), z.coerce.number()]))
111
+ .optional(),
112
+ data: z.array(historicalDataPointSchema),
113
+ color: z.string().optional(),
114
+ type: z.enum(ChartType).optional(),
115
+ });
116
+
117
+ export type HistoricalDataSeriesType = z.infer<
118
+ typeof historicalDataSeriesSchema
119
+ >;
120
+
121
+ /**
122
+ * Chart Data Schema
123
+ * Complete chart data structure
124
+ */
125
+ export const chartDataSchema = z.object({
126
+ series: z.array(historicalDataSeriesSchema),
127
+ categories: z.array(z.string()).optional(),
128
+ title: z.string().optional(),
129
+ subtitle: z.string().optional(),
130
+ yAxisLabel: z.string().optional(),
131
+ xAxisLabel: z.string().optional(),
132
+ });
133
+
134
+ export type ChartDataType = z.infer<typeof chartDataSchema>;
135
+
136
+ /**
137
+ * Current period stats schema for summary numbers
138
+ */
139
+ export const currentPeriodStatsSchema = z.object({
140
+ // Core metrics
141
+ totalCount: z.coerce.number().describe("Total count for the current period"),
142
+ newCount: z.coerce.number().describe("New items in the current period"),
143
+ activeCount: z.coerce.number().describe("Active items in the current period"),
144
+
145
+ // Engagement metrics (for emails/campaigns)
146
+ totalSent: z.coerce.number().optional().describe("Total emails sent"),
147
+ totalOpened: z.coerce.number().optional().describe("Total emails opened"),
148
+ totalClicked: z.coerce.number().optional().describe("Total emails clicked"),
149
+ totalBounced: z.coerce.number().optional().describe("Total emails bounced"),
150
+ totalUnsubscribed: z.coerce
151
+ .number()
152
+ .optional()
153
+ .describe("Total unsubscribed"),
154
+
155
+ // Conversion metrics (for leads)
156
+ totalSignedUp: z.coerce.number().optional().describe("Total leads signed up"),
157
+ totalConsultationBooked: z
158
+ .number()
159
+ .optional()
160
+ .describe("Total consultations booked"),
161
+ totalConverted: z.coerce
162
+ .number()
163
+ .optional()
164
+ .describe("Total converted leads"),
165
+
166
+ // Rate calculations
167
+ openRate: z.coerce.number().optional().describe("Email open rate (0-1)"),
168
+ clickRate: z.coerce.number().optional().describe("Email click rate (0-1)"),
169
+ bounceRate: z.coerce.number().optional().describe("Email bounce rate (0-1)"),
170
+ unsubscribeRate: z
171
+ .number()
172
+ .optional()
173
+ .describe("Email unsubscribe rate (0-1)"),
174
+ conversionRate: z.coerce
175
+ .number()
176
+ .optional()
177
+ .describe("Lead conversion rate (0-1)"),
178
+ signupRate: z.coerce.number().optional().describe("Lead signup rate (0-1)"),
179
+ consultationBookingRate: z
180
+ .number()
181
+ .optional()
182
+ .describe("Consultation booking rate (0-1)"),
183
+
184
+ // Distribution data
185
+ // Generic string keys - specific implementations should override with proper enum types
186
+ byType: z
187
+ .record(z.string(), z.coerce.number())
188
+ .optional()
189
+ .describe("Distribution by type"),
190
+ byStatus: z
191
+ .record(z.string(), z.coerce.number())
192
+ .optional()
193
+ .describe("Distribution by status"),
194
+ bySource: z
195
+ .record(z.string(), z.coerce.number())
196
+ .optional()
197
+ .describe("Distribution by source"),
198
+ // Proper enum types for country and language
199
+ byCountry: z
200
+ .record(z.custom<Countries>(), z.coerce.number())
201
+ .optional()
202
+ .describe("Distribution by country"),
203
+ byLanguage: z
204
+ .record(z.custom<Languages>(), z.coerce.number())
205
+ .optional()
206
+ .describe("Distribution by language"),
207
+
208
+ // Time-based metrics
209
+ todayCount: z.coerce.number().optional().describe("Count for today"),
210
+ thisWeekCount: z.coerce.number().optional().describe("Count for this week"),
211
+ thisMonthCount: z.coerce.number().optional().describe("Count for this month"),
212
+ lastMonthCount: z.coerce.number().optional().describe("Count for last month"),
213
+
214
+ // Top performers
215
+ topPerforming: z
216
+ .array(z.record(z.string(), z.unknown()))
217
+ .optional()
218
+ .describe("Top performing items"),
219
+ recentActivity: z
220
+ .array(z.record(z.string(), z.unknown()))
221
+ .optional()
222
+ .describe("Recent activity"),
223
+ });
224
+
225
+ export type CurrentPeriodStatsType = z.infer<typeof currentPeriodStatsSchema>;
226
+
227
+ /**
228
+ * Date Range Calculation Utilities
229
+ */
230
+
231
+ /**
232
+ * Calculate date range from preset
233
+ */
234
+ export function getDateRangeFromPreset(preset: DateRangePreset): {
235
+ from: Date;
236
+ to: Date;
237
+ } {
238
+ const now = new Date();
239
+ const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
240
+
241
+ switch (preset) {
242
+ case DateRangePreset.TODAY:
243
+ return {
244
+ from: today,
245
+ to: new Date(today.getTime() + 24 * 60 * 60 * 1000 - 1),
246
+ };
247
+
248
+ case DateRangePreset.YESTERDAY: {
249
+ const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
250
+ return {
251
+ from: yesterday,
252
+ to: new Date(yesterday.getTime() + 24 * 60 * 60 * 1000 - 1),
253
+ };
254
+ }
255
+
256
+ case DateRangePreset.LAST_7_DAYS:
257
+ return {
258
+ from: new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000),
259
+ to: now,
260
+ };
261
+
262
+ case DateRangePreset.LAST_30_DAYS:
263
+ return {
264
+ from: new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000),
265
+ to: now,
266
+ };
267
+
268
+ case DateRangePreset.LAST_90_DAYS:
269
+ return {
270
+ from: new Date(today.getTime() - 90 * 24 * 60 * 60 * 1000),
271
+ to: now,
272
+ };
273
+
274
+ case DateRangePreset.THIS_WEEK: {
275
+ const startOfWeek = new Date(today);
276
+ startOfWeek.setDate(today.getDate() - today.getDay());
277
+ return { from: startOfWeek, to: now };
278
+ }
279
+ case DateRangePreset.LAST_WEEK: {
280
+ const lastWeekStart = new Date(today);
281
+ lastWeekStart.setDate(today.getDate() - today.getDay() - 7);
282
+ const lastWeekEnd = new Date(lastWeekStart);
283
+ lastWeekEnd.setDate(lastWeekStart.getDate() + 6);
284
+ lastWeekEnd.setHours(23, 59, 59, 999);
285
+ return { from: lastWeekStart, to: lastWeekEnd };
286
+ }
287
+ case DateRangePreset.THIS_MONTH: {
288
+ const startOfMonth = new Date(today.getFullYear(), today.getMonth(), 1);
289
+ return { from: startOfMonth, to: now };
290
+ }
291
+ case DateRangePreset.LAST_MONTH: {
292
+ const lastMonthStart = new Date(
293
+ today.getFullYear(),
294
+ today.getMonth() - 1,
295
+ 1,
296
+ );
297
+ const lastMonthEnd = new Date(today.getFullYear(), today.getMonth(), 0);
298
+ lastMonthEnd.setHours(23, 59, 59, 999);
299
+ return { from: lastMonthStart, to: lastMonthEnd };
300
+ }
301
+ case DateRangePreset.THIS_QUARTER: {
302
+ const quarterStart = new Date(
303
+ today.getFullYear(),
304
+ Math.floor(today.getMonth() / 3) * 3,
305
+ 1,
306
+ );
307
+ return { from: quarterStart, to: now };
308
+ }
309
+ case DateRangePreset.LAST_QUARTER: {
310
+ const lastQuarterMonth = Math.floor(today.getMonth() / 3) * 3 - 3;
311
+ const lastQuarterStart = new Date(
312
+ today.getFullYear(),
313
+ lastQuarterMonth,
314
+ 1,
315
+ );
316
+ if (lastQuarterMonth < 0) {
317
+ lastQuarterStart.setFullYear(today.getFullYear() - 1);
318
+ lastQuarterStart.setMonth(9);
319
+ }
320
+ const lastQuarterEnd = new Date(
321
+ lastQuarterStart.getFullYear(),
322
+ lastQuarterStart.getMonth() + 3,
323
+ 0,
324
+ );
325
+ lastQuarterEnd.setHours(23, 59, 59, 999);
326
+ return { from: lastQuarterStart, to: lastQuarterEnd };
327
+ }
328
+
329
+ case DateRangePreset.THIS_YEAR: {
330
+ const startOfYear = new Date(today.getFullYear(), 0, 1);
331
+ return { from: startOfYear, to: now };
332
+ }
333
+
334
+ case DateRangePreset.LAST_YEAR: {
335
+ const lastYearStart = new Date(today.getFullYear() - 1, 0, 1);
336
+ const lastYearEnd = new Date(
337
+ today.getFullYear() - 1,
338
+ 11,
339
+ 31,
340
+ 23,
341
+ 59,
342
+ 59,
343
+ 999,
344
+ );
345
+ return { from: lastYearStart, to: lastYearEnd };
346
+ }
347
+ default:
348
+ return {
349
+ from: new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000),
350
+ to: now,
351
+ };
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Get time period format string for SQL GROUP BY
357
+ */
358
+ export function getTimePeriodFormat(period: TimePeriod): string {
359
+ switch (period) {
360
+ case TimePeriod.HOUR:
361
+ return "DATE_TRUNC('hour', created_at)";
362
+ case TimePeriod.DAY:
363
+ return "DATE(created_at)";
364
+ case TimePeriod.WEEK:
365
+ return "DATE_TRUNC('week', created_at)";
366
+ case TimePeriod.MONTH:
367
+ return "DATE_TRUNC('month', created_at)";
368
+ case TimePeriod.QUARTER:
369
+ return "DATE_TRUNC('quarter', created_at)";
370
+ case TimePeriod.YEAR:
371
+ return "DATE_TRUNC('year', created_at)";
372
+ default:
373
+ return "DATE(created_at)";
374
+ }
375
+ }
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Utility types for cleaning and prettifying complex types
3
+ */
4
+
5
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for type system operations
6
+ export type ExplicitObjectType = object;
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ export type ExplicitAnyType = any;
10
+
11
+ /**
12
+ * Makes all properties in T optional recursively
13
+ */
14
+ export type DeepPartial<T> = {
15
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
16
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
17
+ };
18
+
19
+ /**
20
+ * Makes all properties in T required recursively
21
+ */
22
+ export type DeepRequired<T> = {
23
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
24
+ [P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P];
25
+ };
26
+
27
+ /**
28
+ * Prettifies complex intersection types by flattening them
29
+ */
30
+ export type Prettify<T> = {
31
+ [K in keyof T]: T[K];
32
+ } & {};
33
+
34
+ /**
35
+ * Removes readonly modifiers from all properties
36
+ */
37
+ export type Mutable<T> = {
38
+ -readonly [P in keyof T]: T[P];
39
+ };
40
+
41
+ /**
42
+ * Makes specific keys optional while keeping others required
43
+ */
44
+ export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
45
+
46
+ /**
47
+ * Makes specific keys required while keeping others optional
48
+ */
49
+ export type RequiredBy<T, K extends keyof T> = Omit<T, K> &
50
+ Required<Pick<T, K>>;
51
+
52
+ /**
53
+ * Extracts the return type of a function, handling async functions
54
+ */
55
+
56
+ export type ExtractReturnType<T> = T extends (
57
+ ...args: ExplicitAnyType[]
58
+ ) => infer R
59
+ ? R extends Promise<infer U>
60
+ ? U
61
+ : R
62
+ : never;
63
+
64
+ /**
65
+ * Creates a union of all property values in an object type
66
+ */
67
+ export type ValueOf<T> = T[keyof T];
68
+
69
+ /**
70
+ * Excludes null and undefined from a type
71
+ */
72
+ export type NonNullable<T> = T extends null | undefined ? never : T;
73
+
74
+ /**
75
+ * Creates a type with all properties from T except those that extend U
76
+ */
77
+ export type OmitByType<T, U> = {
78
+ [K in keyof T as T[K] extends U ? never : K]: T[K];
79
+ };
80
+
81
+ /**
82
+ * Creates a type with only properties from T that extend U
83
+ */
84
+ export type PickByType<T, U> = {
85
+ [K in keyof T as T[K] extends U ? K : never]: T[K];
86
+ };
87
+
88
+ /**
89
+ * Flattens nested object types into a single level
90
+ */
91
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
92
+ export type Flatten<T> = T extends object
93
+ ? {
94
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
95
+ [K in keyof T]: T[K] extends object ? Flatten<T[K]> : T[K];
96
+ }
97
+ : T;
98
+
99
+ /**
100
+ * Creates a strict subset type where all properties must exist in the original type
101
+ */
102
+ export type StrictSubset<T, U extends T> = U;
103
+
104
+ /**
105
+ * Converts union types to intersection types
106
+ */
107
+ export type UnionToIntersection<U> = (
108
+ U extends ExplicitAnyType ? (k: U) => void : never
109
+ ) extends (k: infer I) => void
110
+ ? I
111
+ : never;
112
+
113
+ /**
114
+ * Gets the keys of an object as a union type
115
+ */
116
+ export type KeysOf<T> = keyof T;
117
+
118
+ /**
119
+ * Creates a type that represents either T or an array of T
120
+ */
121
+ export type MaybeArray<T> = T | T[];
122
+
123
+ /**
124
+ * Creates a type that represents a function or the return type of that function
125
+ */
126
+ export type MaybeFunction<T> = T | (() => T);
127
+
128
+ /**
129
+ * Removes functions from an object type
130
+ */
131
+ export type NonFunctionKeys<T> = {
132
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
133
+ [K in keyof T]: T[K] extends Function ? never : K;
134
+ }[keyof T];
135
+
136
+ /**
137
+ * Creates a type with only non-function properties
138
+ */
139
+ export type NonFunctionProperties<T> = Pick<T, NonFunctionKeys<T>>;
140
+
141
+ /**
142
+ * Creates a deeply readonly version of a type
143
+ */
144
+ export type DeepReadonly<T> = {
145
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
146
+ readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
147
+ };
148
+
149
+ /**
150
+ * Extracts the element type from an array type
151
+ */
152
+ export type ArrayElement<T> = T extends readonly (infer U)[] ? U : never;
153
+
154
+ /**
155
+ * Creates a type that excludes empty object types
156
+ */
157
+ export type NonEmptyObject<T> = keyof T extends never ? never : T;
158
+
159
+ /**
160
+ * Creates a conditional type that resolves to different types based on a condition
161
+ */
162
+ export type If<C extends boolean, T, F> = C extends true ? T : F;
163
+
164
+ /**
165
+ * Creates a type that represents all possible paths through an object
166
+ */
167
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
168
+ export type Paths<T> = T extends object
169
+ ? {
170
+ [K in keyof T]: K extends string
171
+ ? // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Generic utility type for recursive type operations
172
+ T[K] extends object
173
+ ? K | `${K}.${Paths<T[K]>}`
174
+ : K
175
+ : never;
176
+ }[keyof T]
177
+ : never;
178
+
179
+ /**
180
+ * Gets the type at a specific path in an object
181
+ */
182
+ export type PathValue<T, P extends Paths<T>> = P extends `${infer K}.${infer R}`
183
+ ? K extends keyof T
184
+ ? R extends Paths<T[K]>
185
+ ? PathValue<T[K], R>
186
+ : never
187
+ : never
188
+ : P extends keyof T
189
+ ? T[P]
190
+ : never;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Base64 encoding utilities for email templates
3
+ */
4
+
5
+ /**
6
+ * Converts a string to base64 encoding
7
+ * @param input - The string to encode
8
+ * @returns The base64 encoded string
9
+ */
10
+ export function encodeBase64(input: string): string {
11
+ return Buffer.from(input).toString("base64");
12
+ }
13
+
14
+ /**
15
+ * Creates a data URL from content and MIME type
16
+ * @param content - The content to encode
17
+ * @param mimeType - The MIME type (e.g., 'image/svg+xml', 'image/png')
18
+ * @returns A data URL string
19
+ */
20
+ export function createDataUrl(content: string, mimeType: string): string {
21
+ const base64Content = encodeBase64(content);
22
+ // eslint-disable-next-line i18next/no-literal-string
23
+ return `data:${mimeType};base64,${base64Content}`;
24
+ }
25
+
26
+ /**
27
+ * Creates a data URL from base64 content and MIME type
28
+ * @param base64Content - The base64 encoded content
29
+ * @param mimeType - The MIME type (e.g., 'image/png', 'image/jpeg')
30
+ * @returns A data URL string
31
+ */
32
+ export function createDataUrlFromBase64(
33
+ base64Content: string,
34
+ mimeType: string,
35
+ ): string {
36
+ // eslint-disable-next-line i18next/no-literal-string
37
+ const dataPrefix = "data:";
38
+ // eslint-disable-next-line i18next/no-literal-string
39
+ const base64Suffix = ";base64,";
40
+ return dataPrefix + mimeType + base64Suffix + base64Content;
41
+ }
42
+
43
+ /**
44
+ * Creates a transparent 1x1 pixel PNG data URL for placeholders
45
+ * @returns A data URL for a transparent pixel
46
+ */
47
+ export function createTransparentPixelDataUrl(): string {
48
+ return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
49
+ }
@@ -0,0 +1,40 @@
1
+ import type { z } from "zod";
2
+
3
+ import type { EndpointLogger } from "@/app/api/[locale]/system/unified-interface/shared/logger/endpoint";
4
+
5
+ import { validateData } from "./validation";
6
+
7
+ export function validateEnv<TSchema extends z.ZodType>(
8
+ env: {
9
+ [key: string]:
10
+ | string
11
+ | undefined
12
+ | boolean
13
+ | number
14
+ | { [key: string]: string | undefined | boolean | number };
15
+ },
16
+ envSchema: TSchema,
17
+ logger: EndpointLogger,
18
+ ): z.infer<TSchema> {
19
+ const validationResult = validateData<TSchema>(
20
+ env as z.input<TSchema>,
21
+ envSchema,
22
+ logger,
23
+ );
24
+ if (!validationResult.success) {
25
+ // eslint-disable-next-line oxlint-plugin-restricted/restricted-syntax -- Environment validation must throw on startup to prevent invalid configuration
26
+ throw new Error(
27
+ // eslint-disable-next-line i18next/no-literal-string
28
+ `Environment validation error: ${validationResult.message} ${JSON.stringify(
29
+ validationResult,
30
+ )}`,
31
+ );
32
+ }
33
+ return validationResult.data as z.infer<TSchema>;
34
+ }
35
+
36
+ export enum Environment {
37
+ PRODUCTION = "production",
38
+ TEST = "test",
39
+ DEVELOPMENT = "development",
40
+ }
@@ -0,0 +1,21 @@
1
+ import type { translations as enTranslations } from "../en";
2
+
3
+ export const translations: typeof enTranslations = {
4
+ parseJsonWithComments: {
5
+ errors: {
6
+ invalid_json: "Ungültiges JSON-Format",
7
+ },
8
+ },
9
+ time: {
10
+ errors: {
11
+ invalid_time_format: {
12
+ title: "Ungültiges Zeitformat",
13
+ description: "Die Zeitangabe muss im Format HH:MM sein",
14
+ },
15
+ invalid_time_range: {
16
+ title: "Ungültiger Zeitbereich",
17
+ description: "Die Zeitangabe muss zwischen 00:00 und 23:59 liegen",
18
+ },
19
+ },
20
+ },
21
+ };
@@ -0,0 +1,19 @@
1
+ export const translations = {
2
+ parseJsonWithComments: {
3
+ errors: {
4
+ invalid_json: "Invalid JSON format",
5
+ },
6
+ },
7
+ time: {
8
+ errors: {
9
+ invalid_time_format: {
10
+ title: "Invalid Time Format",
11
+ description: "The time string must be in HH:MM format",
12
+ },
13
+ invalid_time_range: {
14
+ title: "Invalid Time Range",
15
+ description: "The time value must be between 00:00 and 23:59",
16
+ },
17
+ },
18
+ },
19
+ };