@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.
- package/.dist/bin/vibe-runtime.js +10 -19
- package/.dist/bin/vibe-runtime.js.map +3 -3
- package/check.config.ts +4 -4
- package/package.json +2 -9
- package/src/app/api/[locale]/LICENSE +674 -0
- package/src/app/api/[locale]/i18n/de/index.ts +13 -0
- package/src/app/api/[locale]/i18n/en/index.ts +12 -0
- package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
- package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
- package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
- package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
- package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
- package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
- package/src/app/api/[locale]/shared/types/utils.ts +190 -0
- package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
- package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
- package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/index.ts +11 -0
- package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
- package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
- package/src/app/api/[locale]/shared/utils/object.ts +75 -0
- package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
- package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
- package/src/app/api/[locale]/shared/utils/time.ts +53 -0
- package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
- package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
- package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
- package/src/app/api/[locale]/system/builder/enum.ts +77 -0
- package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
- package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
- package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
- package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
- package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
- package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
- package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
- package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
- package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
- package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
- package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
- package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
- package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
- package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
- package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
- package/src/app/api/[locale]/system/builder/route.ts +21 -0
- package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
- package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
- package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
- package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
- package/src/app/api/[locale]/system/check/config/repository.ts +819 -0
- package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
- package/src/app/api/[locale]/system/check/config/types.ts +616 -0
- package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
- package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
- package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
- package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
- package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
- package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
- package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
- package/src/app/api/[locale]/system/check/test-project/bun.lock +449 -0
- package/src/app/api/[locale]/system/check/test-project/check.config.ts +989 -0
- package/src/app/api/[locale]/system/check/test-project/package.json +20 -0
- package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
- package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.json +38 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
- package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
- package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
- package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
- package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
- package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
- package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
- package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
- package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
- package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
- package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
- package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
- package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
- package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
- package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
- package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
- package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
- package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
- package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
- package/src/app/api/[locale]/system/help/definition.ts +445 -0
- package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
- package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
- package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
- package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
- package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
- package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
- package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
- package/src/app/api/[locale]/system/help/list/route.ts +21 -0
- package/src/app/api/[locale]/system/help/repository.ts +212 -0
- package/src/app/api/[locale]/system/help/route.ts +16 -0
- package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
- package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
- package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
- package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
- package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
- package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
- package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
- package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
- package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
- package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
- package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
- package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
- package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
- package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
- package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
- package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
- package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
- package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
- package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
- package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
- package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
- package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
- package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
- package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
- package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
- package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
- package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
- package/src/app/api/[locale]/user/auth/enum.ts +16 -0
- package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
- package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
- package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
- package/src/app/api/[locale]/user/auth/types.ts +110 -0
- package/src/app/api/[locale]/user/enum.ts +64 -0
- package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
- package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
- package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
- package/src/app/api/[locale]/user/types.ts +118 -0
- package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
- package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
- package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
- package/src/app/api/i18n/de/index.ts +6 -0
- package/src/app/api/i18n/en/index.ts +5 -0
- package/src/app/api/i18n/pl/index.ts +5 -0
- package/src/app/i18n/de/index.ts +6 -0
- package/src/app/i18n/en/index.ts +5 -0
- 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
|
+
};
|