@next-vibe/checker 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dist/bin/vibe-runtime.js +26 -22
- package/.dist/bin/vibe-runtime.js.map +5 -5
- package/.dist/oxlint-plugins/i18n.js +4 -0
- package/.dist/oxlint-plugins/i18n.js.map +1 -0
- package/.dist/oxlint-plugins/jsx-capitalization.js +4 -0
- package/.dist/oxlint-plugins/jsx-capitalization.js.map +1 -0
- package/.dist/oxlint-plugins/restricted-syntax.js +4 -0
- package/.dist/oxlint-plugins/restricted-syntax.js.map +1 -0
- package/check.config.ts +4 -12
- 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 +78 -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 +886 -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 +532 -0
- package/src/app/api/[locale]/system/check/test-project/check.config.ts +981 -0
- package/src/app/api/[locale]/system/check/test-project/package.json +12 -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 +34 -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
package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type utilities for extracting field names and types from endpoint definitions
|
|
3
|
+
* Provides full type inference from definition.POST.fields to form components
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Countries } from "@/i18n/core/config";
|
|
7
|
+
|
|
8
|
+
import type { PrefillDisplayConfig } from "./field-config-types";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Type for endpoint field structure from unified interface
|
|
12
|
+
* This matches the structure created by objectField() in endpoint definitions
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export interface EndpointFieldStructure {
|
|
16
|
+
type?: string;
|
|
17
|
+
children?: Record<string, EndpointFieldStructure>;
|
|
18
|
+
// Union-specific fields
|
|
19
|
+
discriminator?: string;
|
|
20
|
+
variants?: readonly EndpointFieldStructure[];
|
|
21
|
+
ui?: {
|
|
22
|
+
type: string;
|
|
23
|
+
fieldType?: string;
|
|
24
|
+
label?: string;
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
className?: string;
|
|
29
|
+
defaultCountry?: Countries;
|
|
30
|
+
preferredCountries?: Countries[];
|
|
31
|
+
min?: number;
|
|
32
|
+
max?: number;
|
|
33
|
+
step?: number;
|
|
34
|
+
minDate?: Date;
|
|
35
|
+
maxDate?: Date;
|
|
36
|
+
rows?: number;
|
|
37
|
+
maxLength?: number;
|
|
38
|
+
options?: Array<{
|
|
39
|
+
value: string | number;
|
|
40
|
+
label: string;
|
|
41
|
+
labelParams?: Record<string, string | number>;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
icon?: string;
|
|
44
|
+
}>;
|
|
45
|
+
maxTags?: number;
|
|
46
|
+
// Readonly and prefill display options
|
|
47
|
+
readonly?: boolean;
|
|
48
|
+
prefillDisplay?: PrefillDisplayConfig;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get runtime field structure by path
|
|
53
|
+
* Supports object, object-optional, and object-union types
|
|
54
|
+
*/
|
|
55
|
+
export function getFieldStructureByPath(
|
|
56
|
+
fields: EndpointFieldStructure,
|
|
57
|
+
path: string,
|
|
58
|
+
): EndpointFieldStructure | null {
|
|
59
|
+
const parts = path.split(".");
|
|
60
|
+
let current = fields;
|
|
61
|
+
|
|
62
|
+
for (const part of parts) {
|
|
63
|
+
if (!current || typeof current !== "object") {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Handle object-union types
|
|
68
|
+
if (current.type === "object-union") {
|
|
69
|
+
const unionField = current as EndpointFieldStructure & {
|
|
70
|
+
variants?: readonly EndpointFieldStructure[];
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// Look for the field in any variant (all variants should have the discriminator field)
|
|
74
|
+
// For other fields, we return the first match (assuming variants have consistent field definitions)
|
|
75
|
+
if (unionField.variants && Array.isArray(unionField.variants)) {
|
|
76
|
+
for (const variant of unionField.variants) {
|
|
77
|
+
if (variant.type === "object" || variant.type === "object-optional") {
|
|
78
|
+
const variantChildren = variant.children as
|
|
79
|
+
| Record<string, EndpointFieldStructure>
|
|
80
|
+
| undefined;
|
|
81
|
+
if (variantChildren && part in variantChildren) {
|
|
82
|
+
current = variantChildren[part];
|
|
83
|
+
break; // Found in this variant, continue with next part
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// If not found in any variant, return null
|
|
88
|
+
if (!current || current === fields) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Navigate through object children (both object and object-optional)
|
|
96
|
+
else if (
|
|
97
|
+
(current.type === "object" || current.type === "object-optional") &&
|
|
98
|
+
current.children
|
|
99
|
+
) {
|
|
100
|
+
current = current.children[part];
|
|
101
|
+
} else {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return current;
|
|
107
|
+
}
|
package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Endpoint Form Field Component
|
|
3
|
+
* Provides type-safe field definitions for use with useEndpoint hook
|
|
4
|
+
*
|
|
5
|
+
* This is the shared version - platform-specific code should import from here
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Countries } from "@/i18n/core/config";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Prefill display configuration for form fields
|
|
12
|
+
* When a field has a prefilled value from server/URL params, this controls how it's displayed
|
|
13
|
+
*/
|
|
14
|
+
export interface PrefillDisplayConfig<TKey extends string> {
|
|
15
|
+
/** Display variant when field is prefilled */
|
|
16
|
+
variant: "badge" | "highlight" | "card";
|
|
17
|
+
/** Translation key for the label shown with prefilled value */
|
|
18
|
+
labelKey?: NoInfer<TKey>;
|
|
19
|
+
/** Icon to show with prefilled value */
|
|
20
|
+
icon?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Base field configuration
|
|
24
|
+
export interface BaseFieldConfig<TKey extends string> {
|
|
25
|
+
label: NoInfer<TKey> | undefined;
|
|
26
|
+
placeholder?: NoInfer<TKey>;
|
|
27
|
+
description?: NoInfer<TKey>;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
className?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Make field readonly - displays value but cannot be edited
|
|
32
|
+
* Use with prefillDisplay to show special styling for server-provided values
|
|
33
|
+
*/
|
|
34
|
+
readonly?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Configure how prefilled values are displayed when readonly
|
|
37
|
+
* Only applies when field has a prefilled value and readonly is true
|
|
38
|
+
*/
|
|
39
|
+
prefillDisplay?: PrefillDisplayConfig<TKey>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Field type specific configurations
|
|
43
|
+
export interface TextFieldConfig<
|
|
44
|
+
TTranslationKey extends string,
|
|
45
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
46
|
+
type: "text" | "email" | "tel" | "url" | "password";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface NumberFieldConfig<
|
|
50
|
+
TTranslationKey extends string,
|
|
51
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
52
|
+
type: "number";
|
|
53
|
+
min?: number;
|
|
54
|
+
max?: number;
|
|
55
|
+
step?: number;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface TextareaFieldConfig<
|
|
59
|
+
TTranslationKey extends string,
|
|
60
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
61
|
+
type: "textarea";
|
|
62
|
+
rows?: number;
|
|
63
|
+
maxLength?: number;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface SelectFieldConfig<
|
|
67
|
+
TTranslationKey extends string,
|
|
68
|
+
TValue = string,
|
|
69
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
70
|
+
type: "select";
|
|
71
|
+
options: Array<{
|
|
72
|
+
value: TValue;
|
|
73
|
+
label: NoInfer<TTranslationKey>;
|
|
74
|
+
labelParams?: Record<string, string | number>;
|
|
75
|
+
disabled?: boolean;
|
|
76
|
+
}>;
|
|
77
|
+
placeholder?: NoInfer<TTranslationKey>;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface CheckboxFieldConfig<
|
|
81
|
+
TTranslationKey extends string,
|
|
82
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
83
|
+
type: "checkbox";
|
|
84
|
+
checkboxLabel?: NoInfer<TTranslationKey>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface RadioFieldConfig<
|
|
88
|
+
TTranslationKey extends string,
|
|
89
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
90
|
+
type: "radio";
|
|
91
|
+
options: Array<{
|
|
92
|
+
value: string;
|
|
93
|
+
label: NoInfer<TTranslationKey>;
|
|
94
|
+
labelParams?: Record<string, string | number>;
|
|
95
|
+
disabled?: boolean;
|
|
96
|
+
}>;
|
|
97
|
+
orientation?: "horizontal" | "vertical";
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface SwitchFieldConfig<
|
|
101
|
+
TTranslationKey extends string,
|
|
102
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
103
|
+
type: "switch";
|
|
104
|
+
switchLabel?: NoInfer<TTranslationKey>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface DateFieldConfig<
|
|
108
|
+
TTranslationKey extends string,
|
|
109
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
110
|
+
type: "date";
|
|
111
|
+
minDate?: Date;
|
|
112
|
+
maxDate?: Date;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface AutocompleteFieldConfig<
|
|
116
|
+
TTranslationKey extends string,
|
|
117
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
118
|
+
type: "autocomplete";
|
|
119
|
+
options: Array<{
|
|
120
|
+
value: string;
|
|
121
|
+
label: NoInfer<TTranslationKey>;
|
|
122
|
+
category?: string;
|
|
123
|
+
}>;
|
|
124
|
+
allowCustom?: boolean;
|
|
125
|
+
searchPlaceholder?: NoInfer<TTranslationKey>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface TagsFieldConfig<
|
|
129
|
+
TTranslationKey extends string,
|
|
130
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
131
|
+
type: "tags";
|
|
132
|
+
suggestions?: Array<{
|
|
133
|
+
value: string;
|
|
134
|
+
label: NoInfer<TTranslationKey>;
|
|
135
|
+
category?: string;
|
|
136
|
+
}>;
|
|
137
|
+
maxTags?: number;
|
|
138
|
+
allowCustom?: boolean;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface PhoneFieldConfig<
|
|
142
|
+
TTranslationKey extends string,
|
|
143
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
144
|
+
type: "phone";
|
|
145
|
+
defaultCountry: Countries;
|
|
146
|
+
preferredCountries: Countries[];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export interface ColorPickerFieldConfig<
|
|
150
|
+
TTranslationKey extends string,
|
|
151
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
152
|
+
type: "color";
|
|
153
|
+
presetColors?: string[];
|
|
154
|
+
allowCustom?: boolean;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface SliderFieldConfig<
|
|
158
|
+
TTranslationKey extends string,
|
|
159
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
160
|
+
type: "slider";
|
|
161
|
+
min: number;
|
|
162
|
+
max: number;
|
|
163
|
+
step?: number;
|
|
164
|
+
marks?: Array<{ value: number; label: string }>;
|
|
165
|
+
formatValue?: (value: number) => string;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface MultiSelectFieldConfig<
|
|
169
|
+
TTranslationKey extends string,
|
|
170
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
171
|
+
type: "multiselect";
|
|
172
|
+
options: Array<{
|
|
173
|
+
value: string;
|
|
174
|
+
label: NoInfer<TTranslationKey>;
|
|
175
|
+
labelParams?: Record<string, string | number>;
|
|
176
|
+
disabled?: boolean;
|
|
177
|
+
icon?: string;
|
|
178
|
+
}>;
|
|
179
|
+
maxSelections?: number;
|
|
180
|
+
searchable?: boolean;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export interface LocationFieldConfig<
|
|
184
|
+
TTranslationKey extends string,
|
|
185
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
186
|
+
type: "location";
|
|
187
|
+
types?: Array<"country" | "city" | "region">;
|
|
188
|
+
multiple?: boolean;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export interface YearPickerFieldConfig<
|
|
192
|
+
TTranslationKey extends string,
|
|
193
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
194
|
+
type: "year";
|
|
195
|
+
minYear?: number;
|
|
196
|
+
maxYear?: number;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export interface IconFieldConfig<
|
|
200
|
+
TTranslationKey extends string,
|
|
201
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
202
|
+
type: "icon";
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface FilterPillsFieldConfig<
|
|
206
|
+
TTranslationKey extends string,
|
|
207
|
+
> extends BaseFieldConfig<TTranslationKey> {
|
|
208
|
+
type: "filter_pills";
|
|
209
|
+
options: Array<{
|
|
210
|
+
value: string;
|
|
211
|
+
label: NoInfer<TTranslationKey>;
|
|
212
|
+
icon?: string;
|
|
213
|
+
disabled?: boolean;
|
|
214
|
+
}>;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Union type for all field configurations
|
|
218
|
+
export type FieldConfig<TTranslationKey extends string> =
|
|
219
|
+
| TextFieldConfig<TTranslationKey>
|
|
220
|
+
| NumberFieldConfig<TTranslationKey>
|
|
221
|
+
| TextareaFieldConfig<TTranslationKey>
|
|
222
|
+
| SelectFieldConfig<TTranslationKey, string>
|
|
223
|
+
| CheckboxFieldConfig<TTranslationKey>
|
|
224
|
+
| RadioFieldConfig<TTranslationKey>
|
|
225
|
+
| SwitchFieldConfig<TTranslationKey>
|
|
226
|
+
| DateFieldConfig<TTranslationKey>
|
|
227
|
+
| AutocompleteFieldConfig<TTranslationKey>
|
|
228
|
+
| TagsFieldConfig<TTranslationKey>
|
|
229
|
+
| PhoneFieldConfig<TTranslationKey>
|
|
230
|
+
| ColorPickerFieldConfig<TTranslationKey>
|
|
231
|
+
| SliderFieldConfig<TTranslationKey>
|
|
232
|
+
| MultiSelectFieldConfig<TTranslationKey>
|
|
233
|
+
| LocationFieldConfig<TTranslationKey>
|
|
234
|
+
| YearPickerFieldConfig<TTranslationKey>
|
|
235
|
+
| IconFieldConfig<TTranslationKey>
|
|
236
|
+
| FilterPillsFieldConfig<TTranslationKey>;
|
|
237
|
+
|
|
238
|
+
// Required field styling options
|
|
239
|
+
export type RequiredFieldStyle =
|
|
240
|
+
| "highlight" // Highlight required fields with colored borders/backgrounds
|
|
241
|
+
| "asterisk" // Show asterisk for required fields
|
|
242
|
+
| "badge" // Show "Required" badge
|
|
243
|
+
| "none"; // No special styling for required fields
|
|
244
|
+
|
|
245
|
+
// Form styling theme for required fields
|
|
246
|
+
export interface RequiredFieldTheme {
|
|
247
|
+
style: RequiredFieldStyle;
|
|
248
|
+
showAllRequired?: boolean; // If true, show required styling even when all fields are required
|
|
249
|
+
requiredColor?: "amber" | "red" | "blue" | "green"; // Color theme for required field highlighting
|
|
250
|
+
completedColor?: "green" | "blue" | "purple"; // Color theme for completed required fields
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Field validation state
|
|
254
|
+
export interface FieldValidationState {
|
|
255
|
+
hasError: boolean;
|
|
256
|
+
hasValue: boolean;
|
|
257
|
+
isRequired: boolean;
|
|
258
|
+
errorMessage?: string;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Field styling classes
|
|
262
|
+
export interface FieldStyleClassName {
|
|
263
|
+
containerClassName: string;
|
|
264
|
+
labelClassName: string;
|
|
265
|
+
inputClassName: string;
|
|
266
|
+
errorClassName: string;
|
|
267
|
+
descriptionClassName: string;
|
|
268
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI Color Codes for Terminal Output
|
|
3
|
+
* Provides consistent, beautiful colors for CLI logging
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ANSI color codes
|
|
8
|
+
*/
|
|
9
|
+
export const colors = {
|
|
10
|
+
// Reset
|
|
11
|
+
reset: "\u001B[0m",
|
|
12
|
+
|
|
13
|
+
// Text colors
|
|
14
|
+
black: "\u001B[30m",
|
|
15
|
+
red: "\u001B[31m",
|
|
16
|
+
green: "\u001B[32m",
|
|
17
|
+
yellow: "\u001B[33m",
|
|
18
|
+
blue: "\u001B[34m",
|
|
19
|
+
magenta: "\u001B[35m",
|
|
20
|
+
cyan: "\u001B[36m",
|
|
21
|
+
white: "\u001B[37m",
|
|
22
|
+
gray: "\u001B[90m",
|
|
23
|
+
|
|
24
|
+
// Bright colors
|
|
25
|
+
brightRed: "\u001B[91m",
|
|
26
|
+
brightGreen: "\u001B[92m",
|
|
27
|
+
brightYellow: "\u001B[93m",
|
|
28
|
+
brightBlue: "\u001B[94m",
|
|
29
|
+
brightMagenta: "\u001B[95m",
|
|
30
|
+
brightCyan: "\u001B[96m",
|
|
31
|
+
brightWhite: "\u001B[97m",
|
|
32
|
+
|
|
33
|
+
// Text styles
|
|
34
|
+
bold: "\u001B[1m",
|
|
35
|
+
dim: "\u001B[2m",
|
|
36
|
+
italic: "\u001B[3m",
|
|
37
|
+
underline: "\u001B[4m",
|
|
38
|
+
} as const;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Semantic color helpers for consistent styling
|
|
42
|
+
*/
|
|
43
|
+
export const semantic = {
|
|
44
|
+
// Status colors
|
|
45
|
+
success: colors.green,
|
|
46
|
+
error: colors.red,
|
|
47
|
+
warning: colors.yellow,
|
|
48
|
+
info: colors.cyan,
|
|
49
|
+
debug: colors.gray,
|
|
50
|
+
|
|
51
|
+
// Component colors
|
|
52
|
+
server: colors.magenta,
|
|
53
|
+
database: colors.brightCyan,
|
|
54
|
+
task: colors.brightMagenta,
|
|
55
|
+
generator: colors.magenta,
|
|
56
|
+
|
|
57
|
+
// Accent colors
|
|
58
|
+
highlight: colors.white,
|
|
59
|
+
muted: colors.gray,
|
|
60
|
+
accent: colors.cyan,
|
|
61
|
+
} as const;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Format a message with color
|
|
65
|
+
*/
|
|
66
|
+
export function colorize(text: string, color: string): string {
|
|
67
|
+
return `${color}${text}${colors.reset}`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Format a message with bold
|
|
72
|
+
*/
|
|
73
|
+
export function bold(text: string): string {
|
|
74
|
+
return `${colors.bold}${text}${colors.reset}`;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Format a message with dim
|
|
79
|
+
*/
|
|
80
|
+
export function dim(text: string): string {
|
|
81
|
+
return `${colors.dim}${text}${colors.reset}`;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Combine multiple styles
|
|
86
|
+
*/
|
|
87
|
+
export function styled(text: string, ...styles: string[]): string {
|
|
88
|
+
return `${styles.join("")}${text}${colors.reset}`;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Check if colors should be disabled (e.g., in CI or when piped)
|
|
93
|
+
*/
|
|
94
|
+
export function shouldUseColors(): boolean {
|
|
95
|
+
// Disable colors if NO_COLOR env var is set
|
|
96
|
+
if (process.env.NO_COLOR) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Disable colors if not in a TTY
|
|
101
|
+
if (!process.stdout.isTTY) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Enable colors by default in terminal
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Conditionally apply color based on environment
|
|
111
|
+
*/
|
|
112
|
+
export function maybeColorize(text: string, color: string): string {
|
|
113
|
+
return shouldUseColors() ? colorize(text, color) : text;
|
|
114
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { parseError } from "next-vibe/shared/utils/parse-error";
|
|
2
|
+
|
|
3
|
+
import { enableDebugLogger, mcpSilentMode } from "@/config/debug";
|
|
4
|
+
import type { CountryLanguage } from "@/i18n/core/config";
|
|
5
|
+
import { simpleT } from "@/i18n/core/shared";
|
|
6
|
+
import type { TranslationKey } from "@/i18n/core/static-types";
|
|
7
|
+
|
|
8
|
+
import type { ErrorResponseType } from "../../../../shared/types/response.schema";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Logger metadata - structured data for logging
|
|
12
|
+
*/
|
|
13
|
+
export type LoggerMetadata =
|
|
14
|
+
| string
|
|
15
|
+
| number
|
|
16
|
+
| boolean
|
|
17
|
+
| null
|
|
18
|
+
| undefined
|
|
19
|
+
| Error
|
|
20
|
+
| Date
|
|
21
|
+
| ErrorResponseType
|
|
22
|
+
| { [key: string]: LoggerMetadata }
|
|
23
|
+
| LoggerMetadata[];
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Dynamically import and use file logging
|
|
27
|
+
* Only imports when actually needed (in MCP mode)
|
|
28
|
+
*/
|
|
29
|
+
async function writeToFile(
|
|
30
|
+
message: string,
|
|
31
|
+
data?: Record<string, LoggerMetadata>,
|
|
32
|
+
): Promise<void> {
|
|
33
|
+
try {
|
|
34
|
+
const { fileLog } = await import("./file-logger");
|
|
35
|
+
fileLog(message, data);
|
|
36
|
+
} catch {
|
|
37
|
+
// Ignore errors - logging is best effort
|
|
38
|
+
// Can't log the error because we're in silent mode
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Logger interface for endpoint handlers
|
|
44
|
+
* Provides structured logging with timing information
|
|
45
|
+
*/
|
|
46
|
+
export interface EndpointLogger {
|
|
47
|
+
/**
|
|
48
|
+
* Log an info message - always runs
|
|
49
|
+
*/
|
|
50
|
+
info(message: string, ...metadata: LoggerMetadata[]): void;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Log an error message - always runs
|
|
54
|
+
*/
|
|
55
|
+
error(
|
|
56
|
+
message: string,
|
|
57
|
+
error?: LoggerMetadata,
|
|
58
|
+
...metadata: LoggerMetadata[]
|
|
59
|
+
): void;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Log a warning message - always runs
|
|
63
|
+
*/
|
|
64
|
+
warn(message: string, ...metadata: LoggerMetadata[]): void;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Log a vibe message (special formatted info) - always runs
|
|
68
|
+
*/
|
|
69
|
+
vibe(message: string, ...metadata: LoggerMetadata[]): void;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Log a debug message - only runs when debug flag is enabled
|
|
73
|
+
*/
|
|
74
|
+
debug(message: string, ...metadata: LoggerMetadata[]): void;
|
|
75
|
+
|
|
76
|
+
isDebugEnabled: boolean;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Creates a logger instance for endpoint handlers
|
|
81
|
+
* Provides pretty formatted logging with running time in seconds
|
|
82
|
+
*/
|
|
83
|
+
export function createEndpointLogger(
|
|
84
|
+
debugEnabled = false,
|
|
85
|
+
startTime: number = Date.now(),
|
|
86
|
+
locale: CountryLanguage,
|
|
87
|
+
): EndpointLogger {
|
|
88
|
+
const getElapsedTime = (): string => {
|
|
89
|
+
const elapsed = (Date.now() - startTime) / 1000;
|
|
90
|
+
return `${elapsed.toFixed(3)}s`;
|
|
91
|
+
};
|
|
92
|
+
const { t } = simpleT(locale);
|
|
93
|
+
|
|
94
|
+
const formatMessage = (message: string): string => {
|
|
95
|
+
return `[${getElapsedTime()}] ${t(message as TranslationKey)}`;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
info(message: string, ...metadata: LoggerMetadata[]): void {
|
|
100
|
+
if (mcpSilentMode) {
|
|
101
|
+
// In MCP mode, dynamically import and log to file instead of console
|
|
102
|
+
const metadataObj = metadata.length > 0 ? { metadata } : undefined;
|
|
103
|
+
void writeToFile(`[INFO] ${formatMessage(message)}`, metadataObj);
|
|
104
|
+
} else {
|
|
105
|
+
// oxlint-disable-next-line no-console
|
|
106
|
+
console.log(formatMessage(message), ...metadata);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
error(
|
|
111
|
+
message: string,
|
|
112
|
+
error?: LoggerMetadata,
|
|
113
|
+
...metadata: LoggerMetadata[]
|
|
114
|
+
): void {
|
|
115
|
+
if (mcpSilentMode) {
|
|
116
|
+
// In MCP mode, dynamically import and log to file instead of console
|
|
117
|
+
const typedError = error ? parseError(error) : undefined;
|
|
118
|
+
const metadataObj = {
|
|
119
|
+
error: typedError,
|
|
120
|
+
...(metadata.length > 0 && { metadata }),
|
|
121
|
+
};
|
|
122
|
+
void writeToFile(`[ERROR] ${formatMessage(message)}`, metadataObj);
|
|
123
|
+
} else {
|
|
124
|
+
const typedError = error ? parseError(error) : undefined;
|
|
125
|
+
// oxlint-disable-next-line no-console
|
|
126
|
+
console.error(formatMessage(message), typedError, ...metadata);
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
vibe(message: string, ...metadata: LoggerMetadata[]): void {
|
|
131
|
+
if (mcpSilentMode) {
|
|
132
|
+
// In MCP mode, dynamically import and log to file instead of console
|
|
133
|
+
const metadataObj = metadata.length > 0 ? { metadata } : undefined;
|
|
134
|
+
void writeToFile(
|
|
135
|
+
`[VIBE] [${getElapsedTime()}] ${message}`,
|
|
136
|
+
metadataObj,
|
|
137
|
+
);
|
|
138
|
+
} else {
|
|
139
|
+
// Special vibe formatting - messages are plain strings
|
|
140
|
+
// oxlint-disable-next-line no-console
|
|
141
|
+
console.log(`[${getElapsedTime()}] ${message}`, ...metadata);
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
debug(message: string, ...metadata: LoggerMetadata[]): void {
|
|
146
|
+
if (debugEnabled || enableDebugLogger) {
|
|
147
|
+
if (mcpSilentMode) {
|
|
148
|
+
// In MCP mode, dynamically import and log to file instead of console
|
|
149
|
+
const metadataObj = metadata.length > 0 ? { metadata } : undefined;
|
|
150
|
+
void writeToFile(`[DEBUG] ${formatMessage(message)}`, metadataObj);
|
|
151
|
+
} else {
|
|
152
|
+
// oxlint-disable-next-line no-console
|
|
153
|
+
console.log(formatMessage(message), ...metadata);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
warn(message: string, ...metadata: LoggerMetadata[]): void {
|
|
158
|
+
if (mcpSilentMode) {
|
|
159
|
+
// In MCP mode, dynamically import and log to file instead of console
|
|
160
|
+
const metadataObj = metadata.length > 0 ? { metadata } : undefined;
|
|
161
|
+
void writeToFile(`[WARN] ${formatMessage(message)}`, metadataObj);
|
|
162
|
+
} else {
|
|
163
|
+
// oxlint-disable-next-line no-console
|
|
164
|
+
console.warn(formatMessage(message), ...metadata);
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
isDebugEnabled: debugEnabled || enableDebugLogger,
|
|
168
|
+
};
|
|
169
|
+
}
|