@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,534 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema-Driven UI Handler
|
|
3
|
+
* Generates CLI interfaces from Zod schemas in endpoint definitions
|
|
4
|
+
* Integrates with existing CLI handler system
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { checkbox, confirm, input, select } from "@inquirer/prompts";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Zod shape type for object schemas
|
|
12
|
+
*/
|
|
13
|
+
interface ZodShape {
|
|
14
|
+
[key: string]: z.ZodTypeAny;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Zod check constraint
|
|
19
|
+
*/
|
|
20
|
+
interface ZodCheck {
|
|
21
|
+
kind: string;
|
|
22
|
+
value?: number;
|
|
23
|
+
message?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Zod with internal _def property
|
|
28
|
+
*/
|
|
29
|
+
interface ZodInternal {
|
|
30
|
+
_def: {
|
|
31
|
+
innerType?: z.ZodTypeAny;
|
|
32
|
+
defaultValue?: () => FormFieldValue;
|
|
33
|
+
description?: string;
|
|
34
|
+
checks?: ZodCheck[];
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Type guard to check if a Zod schema has internal _def property
|
|
40
|
+
*/
|
|
41
|
+
function hasZodDef(schema: z.ZodTypeAny): schema is z.ZodTypeAny & ZodInternal {
|
|
42
|
+
return "_def" in schema && typeof schema._def === "object";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Valid form field value types
|
|
47
|
+
*/
|
|
48
|
+
export type FormFieldValue =
|
|
49
|
+
| string
|
|
50
|
+
| number
|
|
51
|
+
| boolean
|
|
52
|
+
| string[]
|
|
53
|
+
| undefined
|
|
54
|
+
| null;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Schema field metadata for CLI rendering
|
|
58
|
+
*/
|
|
59
|
+
export interface SchemaFieldMetadata {
|
|
60
|
+
name: string;
|
|
61
|
+
type: string;
|
|
62
|
+
required: boolean;
|
|
63
|
+
description?: string;
|
|
64
|
+
defaultValue?: FormFieldValue;
|
|
65
|
+
choices?: string[];
|
|
66
|
+
validation?: z.ZodTypeAny;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* CLI form configuration
|
|
71
|
+
*/
|
|
72
|
+
export interface CLIFormConfig {
|
|
73
|
+
title?: string;
|
|
74
|
+
description?: string;
|
|
75
|
+
fields: SchemaFieldMetadata[];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Schema-driven UI handler class
|
|
80
|
+
*/
|
|
81
|
+
export class SchemaUIHandler {
|
|
82
|
+
/**
|
|
83
|
+
* Parse Zod schema into CLI field metadata
|
|
84
|
+
*/
|
|
85
|
+
parseSchema(schema: z.ZodTypeAny, prefix = ""): SchemaFieldMetadata[] {
|
|
86
|
+
const fields: SchemaFieldMetadata[] = [];
|
|
87
|
+
|
|
88
|
+
if (schema instanceof z.ZodObject) {
|
|
89
|
+
const shape: ZodShape = schema.shape;
|
|
90
|
+
|
|
91
|
+
for (const key of Object.keys(shape)) {
|
|
92
|
+
const fieldSchema = shape[key];
|
|
93
|
+
if (fieldSchema && fieldSchema instanceof z.ZodType) {
|
|
94
|
+
const fieldName = prefix ? `${prefix}.${key}` : key;
|
|
95
|
+
const fieldMeta = this.parseFieldSchema(fieldName, fieldSchema);
|
|
96
|
+
fields.push(fieldMeta);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
} else if (
|
|
100
|
+
schema instanceof z.ZodUndefined ||
|
|
101
|
+
schema instanceof z.ZodVoid
|
|
102
|
+
) {
|
|
103
|
+
// No fields for undefined schemas
|
|
104
|
+
return [];
|
|
105
|
+
} else {
|
|
106
|
+
// Handle single field schemas
|
|
107
|
+
const fieldMeta = this.parseFieldSchema(prefix || "value", schema);
|
|
108
|
+
fields.push(fieldMeta);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return fields;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Parse individual field schema
|
|
116
|
+
*/
|
|
117
|
+
private parseFieldSchema(
|
|
118
|
+
name: string,
|
|
119
|
+
schema: z.ZodTypeAny,
|
|
120
|
+
): SchemaFieldMetadata {
|
|
121
|
+
let required = true;
|
|
122
|
+
let defaultValue: FormFieldValue = undefined;
|
|
123
|
+
let currentSchema = schema;
|
|
124
|
+
|
|
125
|
+
// Unwrap optional schemas
|
|
126
|
+
while (currentSchema instanceof z.ZodOptional && hasZodDef(currentSchema)) {
|
|
127
|
+
required = false;
|
|
128
|
+
const innerType = currentSchema._def.innerType;
|
|
129
|
+
if (innerType && innerType instanceof z.ZodType) {
|
|
130
|
+
currentSchema = innerType;
|
|
131
|
+
} else {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Extract default value and unwrap default schemas
|
|
137
|
+
if (currentSchema instanceof z.ZodDefault && hasZodDef(currentSchema)) {
|
|
138
|
+
const defaultFn = currentSchema._def.defaultValue;
|
|
139
|
+
if (typeof defaultFn === "function") {
|
|
140
|
+
const value = defaultFn();
|
|
141
|
+
if (
|
|
142
|
+
typeof value === "string" ||
|
|
143
|
+
typeof value === "number" ||
|
|
144
|
+
typeof value === "boolean" ||
|
|
145
|
+
value === null ||
|
|
146
|
+
value === undefined ||
|
|
147
|
+
(Array.isArray(value) && value.every((v) => typeof v === "string"))
|
|
148
|
+
) {
|
|
149
|
+
defaultValue = value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const innerType = currentSchema._def.innerType;
|
|
153
|
+
if (innerType) {
|
|
154
|
+
currentSchema = innerType;
|
|
155
|
+
}
|
|
156
|
+
required = false;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const fieldType = this.getFieldType(currentSchema);
|
|
160
|
+
const choices = this.getFieldChoices(currentSchema);
|
|
161
|
+
|
|
162
|
+
// For number fields, use coercion schema for validation
|
|
163
|
+
let validationSchema: z.ZodTypeAny = currentSchema;
|
|
164
|
+
if (currentSchema instanceof z.ZodNumber) {
|
|
165
|
+
let numberSchema = z.coerce.number();
|
|
166
|
+
// Copy constraints from original schema if possible
|
|
167
|
+
if (hasZodDef(currentSchema)) {
|
|
168
|
+
const checks = (currentSchema._def as ZodInternal["_def"]).checks;
|
|
169
|
+
if (Array.isArray(checks)) {
|
|
170
|
+
for (const check of checks) {
|
|
171
|
+
if (check && typeof check === "object" && "kind" in check) {
|
|
172
|
+
const checkKind = check.kind;
|
|
173
|
+
const checkValue = check.value;
|
|
174
|
+
if (checkKind === "min" && typeof checkValue === "number") {
|
|
175
|
+
numberSchema = numberSchema.min(checkValue);
|
|
176
|
+
} else if (
|
|
177
|
+
checkKind === "max" &&
|
|
178
|
+
typeof checkValue === "number"
|
|
179
|
+
) {
|
|
180
|
+
numberSchema = numberSchema.max(checkValue);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
validationSchema = numberSchema;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return {
|
|
190
|
+
name,
|
|
191
|
+
type: fieldType,
|
|
192
|
+
required,
|
|
193
|
+
defaultValue,
|
|
194
|
+
choices,
|
|
195
|
+
validation: validationSchema,
|
|
196
|
+
description: this.getFieldDescription(currentSchema),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Get field type for CLI rendering
|
|
202
|
+
*/
|
|
203
|
+
private getFieldType(schema: z.ZodTypeAny): string {
|
|
204
|
+
if (schema instanceof z.ZodString) {
|
|
205
|
+
return "input";
|
|
206
|
+
}
|
|
207
|
+
if (schema instanceof z.ZodNumber) {
|
|
208
|
+
return "number";
|
|
209
|
+
}
|
|
210
|
+
if (schema instanceof z.ZodBoolean) {
|
|
211
|
+
return "confirm";
|
|
212
|
+
}
|
|
213
|
+
if (schema instanceof z.ZodEnum) {
|
|
214
|
+
return "list";
|
|
215
|
+
}
|
|
216
|
+
if (schema instanceof z.ZodArray) {
|
|
217
|
+
return "checkbox";
|
|
218
|
+
} // Multi-select for arrays
|
|
219
|
+
if (schema instanceof z.ZodObject) {
|
|
220
|
+
return "object";
|
|
221
|
+
}
|
|
222
|
+
if (schema instanceof z.ZodDate) {
|
|
223
|
+
return "input";
|
|
224
|
+
} // Date as string input
|
|
225
|
+
|
|
226
|
+
return "input"; // Default to text input
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Get field choices for enum/select fields
|
|
231
|
+
*/
|
|
232
|
+
private getFieldChoices(schema: z.ZodTypeAny): string[] | undefined {
|
|
233
|
+
if (schema instanceof z.ZodEnum) {
|
|
234
|
+
const options = schema.options;
|
|
235
|
+
if (Array.isArray(options)) {
|
|
236
|
+
return options.filter((opt): opt is string => typeof opt === "string");
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Get field description from schema
|
|
245
|
+
*/
|
|
246
|
+
private getFieldDescription(schema: z.ZodTypeAny): string | undefined {
|
|
247
|
+
// Try to get description from schema._def.description
|
|
248
|
+
if (hasZodDef(schema) && "description" in schema._def) {
|
|
249
|
+
const desc = schema._def.description;
|
|
250
|
+
if (typeof desc === "string") {
|
|
251
|
+
return desc;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Generate CLI form from schema
|
|
260
|
+
*/
|
|
261
|
+
async generateForm(
|
|
262
|
+
config: CLIFormConfig,
|
|
263
|
+
): Promise<Record<string, FormFieldValue>> {
|
|
264
|
+
if (config.title) {
|
|
265
|
+
// eslint-disable-next-line i18next/no-literal-string
|
|
266
|
+
process.stdout.write(`\n📋 ${config.title}\n`);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (config.description) {
|
|
270
|
+
// eslint-disable-next-line i18next/no-literal-string
|
|
271
|
+
process.stdout.write(` ${config.description}\n\n`);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (config.fields.length === 0) {
|
|
275
|
+
// eslint-disable-next-line i18next/no-literal-string
|
|
276
|
+
process.stdout.write(" No input required.\n\n");
|
|
277
|
+
return {};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
interface InquirerAnswer {
|
|
281
|
+
[key: string]: FormFieldValue;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const answers: InquirerAnswer = {};
|
|
285
|
+
|
|
286
|
+
for (const field of config.fields) {
|
|
287
|
+
const message = this.formatFieldMessage(field);
|
|
288
|
+
let value: FormFieldValue;
|
|
289
|
+
|
|
290
|
+
// Use appropriate prompt function based on field type
|
|
291
|
+
if (field.type === "confirm") {
|
|
292
|
+
value = await confirm({
|
|
293
|
+
message,
|
|
294
|
+
default: field.defaultValue as boolean | undefined,
|
|
295
|
+
});
|
|
296
|
+
} else if (field.type === "list" && field.choices) {
|
|
297
|
+
value = await select({
|
|
298
|
+
message,
|
|
299
|
+
choices: field.choices.map((choice) => ({
|
|
300
|
+
name: choice,
|
|
301
|
+
value: choice,
|
|
302
|
+
})),
|
|
303
|
+
default: field.defaultValue ? String(field.defaultValue) : undefined,
|
|
304
|
+
});
|
|
305
|
+
} else if (field.type === "checkbox" && field.choices) {
|
|
306
|
+
value = await checkbox({
|
|
307
|
+
message,
|
|
308
|
+
choices: field.choices.map((choice) => ({
|
|
309
|
+
name: choice,
|
|
310
|
+
value: choice,
|
|
311
|
+
})),
|
|
312
|
+
});
|
|
313
|
+
} else if (field.type === "number") {
|
|
314
|
+
const inputValue = await input({
|
|
315
|
+
message,
|
|
316
|
+
default: field.defaultValue?.toString(),
|
|
317
|
+
validate: field.validation
|
|
318
|
+
? (inputStr): string | boolean => {
|
|
319
|
+
// First check if it's a valid number format
|
|
320
|
+
const trimmed = inputStr.trim();
|
|
321
|
+
if (trimmed === "" && !field.required) {
|
|
322
|
+
return true; // Allow empty for optional fields
|
|
323
|
+
}
|
|
324
|
+
const num = parseFloat(trimmed);
|
|
325
|
+
if (isNaN(num)) {
|
|
326
|
+
return "Please enter a valid number";
|
|
327
|
+
}
|
|
328
|
+
// Validate the parsed NUMBER against the schema
|
|
329
|
+
const validationResult = this.validateField(
|
|
330
|
+
num,
|
|
331
|
+
field.validation!,
|
|
332
|
+
);
|
|
333
|
+
return validationResult;
|
|
334
|
+
}
|
|
335
|
+
: (inputStr): string | boolean => {
|
|
336
|
+
const trimmed = inputStr.trim();
|
|
337
|
+
if (trimmed === "" && !field.required) {
|
|
338
|
+
return true;
|
|
339
|
+
}
|
|
340
|
+
const num = parseFloat(trimmed);
|
|
341
|
+
if (isNaN(num)) {
|
|
342
|
+
return "Please enter a valid number";
|
|
343
|
+
}
|
|
344
|
+
return true;
|
|
345
|
+
},
|
|
346
|
+
});
|
|
347
|
+
const num = parseFloat(inputValue);
|
|
348
|
+
value = isNaN(num) ? undefined : num;
|
|
349
|
+
} else {
|
|
350
|
+
// Default to input for string fields
|
|
351
|
+
value = await input({
|
|
352
|
+
message,
|
|
353
|
+
default: field.defaultValue?.toString(),
|
|
354
|
+
validate: field.validation
|
|
355
|
+
? (inputStr): string | boolean =>
|
|
356
|
+
this.validateField(inputStr, field.validation!)
|
|
357
|
+
: undefined,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
if (value !== undefined) {
|
|
362
|
+
answers[field.name] = value;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
return this.processAnswers(answers, config.fields);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Format field message for CLI prompt
|
|
371
|
+
*/
|
|
372
|
+
private formatFieldMessage(field: SchemaFieldMetadata): string {
|
|
373
|
+
let message = field.name;
|
|
374
|
+
|
|
375
|
+
if (field.description) {
|
|
376
|
+
// eslint-disable-next-line i18next/no-literal-string
|
|
377
|
+
message += ` (${field.description})`;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
if (field.required) {
|
|
381
|
+
message += " *";
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return message;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Validate field input against Zod schema
|
|
389
|
+
*/
|
|
390
|
+
private validateField(
|
|
391
|
+
input: FormFieldValue,
|
|
392
|
+
schema: z.ZodTypeAny,
|
|
393
|
+
): boolean | string {
|
|
394
|
+
try {
|
|
395
|
+
schema.parse(input);
|
|
396
|
+
return true;
|
|
397
|
+
} catch (error) {
|
|
398
|
+
if (error instanceof z.ZodError) {
|
|
399
|
+
const issues = error.issues;
|
|
400
|
+
if (Array.isArray(issues) && issues.length > 0) {
|
|
401
|
+
const firstIssue = issues[0];
|
|
402
|
+
if (firstIssue && typeof firstIssue.message === "string") {
|
|
403
|
+
return firstIssue.message;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// eslint-disable-next-line i18next/no-literal-string
|
|
407
|
+
return "Invalid input";
|
|
408
|
+
}
|
|
409
|
+
// eslint-disable-next-line i18next/no-literal-string
|
|
410
|
+
return "Validation failed";
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Process form answers and convert types
|
|
416
|
+
*/
|
|
417
|
+
private processAnswers(
|
|
418
|
+
answers: Record<string, FormFieldValue>,
|
|
419
|
+
fields: SchemaFieldMetadata[],
|
|
420
|
+
): Record<string, FormFieldValue> {
|
|
421
|
+
const processed: Record<string, FormFieldValue> = {};
|
|
422
|
+
|
|
423
|
+
for (const field of fields) {
|
|
424
|
+
const value = answers[field.name];
|
|
425
|
+
|
|
426
|
+
if (value !== undefined && value !== null && value !== "") {
|
|
427
|
+
processed[field.name] = this.convertFieldValue(value, field);
|
|
428
|
+
} else if (field.required) {
|
|
429
|
+
// This shouldn't happen due to validation, but handle it by returning empty object
|
|
430
|
+
// Since this is internal utility code, we'll let the caller handle validation
|
|
431
|
+
|
|
432
|
+
processed[field.name] = undefined;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
return processed;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Convert field value to appropriate type based on Zod schema
|
|
441
|
+
*/
|
|
442
|
+
private convertFieldValue(
|
|
443
|
+
value: FormFieldValue,
|
|
444
|
+
field: SchemaFieldMetadata,
|
|
445
|
+
): FormFieldValue {
|
|
446
|
+
// Use the validation schema to determine the actual type
|
|
447
|
+
if (field.validation) {
|
|
448
|
+
let schema = field.validation;
|
|
449
|
+
|
|
450
|
+
// Unwrap optional and default schemas to get to the core type
|
|
451
|
+
while (
|
|
452
|
+
schema instanceof z.ZodOptional ||
|
|
453
|
+
schema instanceof z.ZodDefault
|
|
454
|
+
) {
|
|
455
|
+
if (hasZodDef(schema)) {
|
|
456
|
+
const innerType = schema._def.innerType;
|
|
457
|
+
if (innerType) {
|
|
458
|
+
schema = innerType;
|
|
459
|
+
} else {
|
|
460
|
+
break;
|
|
461
|
+
}
|
|
462
|
+
} else {
|
|
463
|
+
break;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// Check if schema is a ZodNumber
|
|
468
|
+
if (schema instanceof z.ZodNumber) {
|
|
469
|
+
if (typeof value === "number") {
|
|
470
|
+
return value;
|
|
471
|
+
}
|
|
472
|
+
if (typeof value === "string") {
|
|
473
|
+
const parsed = parseFloat(value);
|
|
474
|
+
return isNaN(parsed) ? undefined : parsed;
|
|
475
|
+
}
|
|
476
|
+
return undefined;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// Check if schema is a ZodBoolean
|
|
480
|
+
if (schema instanceof z.ZodBoolean) {
|
|
481
|
+
return Boolean(value);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// Check if schema is a ZodArray
|
|
485
|
+
if (schema instanceof z.ZodArray && Array.isArray(value)) {
|
|
486
|
+
return value.filter((item): item is string => typeof item === "string");
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
// Fallback to field type
|
|
491
|
+
if (field.type === "number") {
|
|
492
|
+
if (typeof value === "number") {
|
|
493
|
+
return value;
|
|
494
|
+
}
|
|
495
|
+
if (typeof value === "string") {
|
|
496
|
+
const parsed = parseFloat(value);
|
|
497
|
+
return isNaN(parsed) ? undefined : parsed;
|
|
498
|
+
}
|
|
499
|
+
return undefined;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
if (field.type === "confirm") {
|
|
503
|
+
return Boolean(value);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
if (field.type === "checkbox" && Array.isArray(value)) {
|
|
507
|
+
return value.filter((item): item is string => typeof item === "string");
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
// Handle string fields
|
|
511
|
+
if (typeof value === "string") {
|
|
512
|
+
return value;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
// Handle boolean values
|
|
516
|
+
if (typeof value === "boolean") {
|
|
517
|
+
return value;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
// Handle null/undefined
|
|
521
|
+
if (value === null) {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (value === undefined) {
|
|
526
|
+
return undefined;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
// Fallback for any other type
|
|
530
|
+
return undefined;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
export const schemaUIHandler = new SchemaUIHandler();
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { translations as cliTranslations } from "../../cli/i18n/de";
|
|
2
|
+
import { translations as mcpTranslations } from "../../mcp/i18n/de";
|
|
3
|
+
import type { translations as enTranslations } from "../en";
|
|
4
|
+
|
|
5
|
+
export const translations: typeof enTranslations = {
|
|
6
|
+
cli: cliTranslations,
|
|
7
|
+
mcp: mcpTranslations,
|
|
8
|
+
shared: {
|
|
9
|
+
permissions: {
|
|
10
|
+
publicUsersCannotAccess:
|
|
11
|
+
"Öffentliche Benutzer können nicht auf diesen authentifizierten Endpunkt zugreifen",
|
|
12
|
+
insufficientPermissions:
|
|
13
|
+
"Unzureichende Berechtigungen für den Zugriff auf diesen Endpunkt",
|
|
14
|
+
errors: {
|
|
15
|
+
platformAccessDenied:
|
|
16
|
+
"Zugriff verweigert für {{platform}} Plattform: {{reason}}",
|
|
17
|
+
insufficientRoles:
|
|
18
|
+
"Unzureichende Rollen. Benutzer hat: {{userRoles}}. Erforderlich: {{requiredRoles}}",
|
|
19
|
+
definitionError: "Endpunkt-Definitionsfehler: {{error}}",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
endpoints: {
|
|
23
|
+
definition: {
|
|
24
|
+
loader: {
|
|
25
|
+
errors: {
|
|
26
|
+
endpointNotFound: "Endpunkt '{{identifier}}' nicht gefunden",
|
|
27
|
+
loadFailed:
|
|
28
|
+
"Fehler beim Laden des Endpunkts '{{identifier}}': {{error}}",
|
|
29
|
+
batchLoadFailed:
|
|
30
|
+
"Batch-Laden fehlgeschlagen: {{failedCount}} von {{totalCount}} Endpunkten fehlgeschlagen",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
widgets: {
|
|
37
|
+
chart: {
|
|
38
|
+
noDataAvailable: "Keine Daten verfügbar",
|
|
39
|
+
noDataToDisplay: "Keine Daten zum Anzeigen",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { translations as cliTranslations } from "../../cli/i18n/en";
|
|
2
|
+
import { translations as mcpTranslations } from "../../mcp/i18n/en";
|
|
3
|
+
|
|
4
|
+
export const translations = {
|
|
5
|
+
cli: cliTranslations,
|
|
6
|
+
mcp: mcpTranslations,
|
|
7
|
+
shared: {
|
|
8
|
+
permissions: {
|
|
9
|
+
publicUsersCannotAccess:
|
|
10
|
+
"Public users cannot access this authenticated endpoint",
|
|
11
|
+
insufficientPermissions:
|
|
12
|
+
"Insufficient permissions to access this endpoint",
|
|
13
|
+
errors: {
|
|
14
|
+
platformAccessDenied:
|
|
15
|
+
"Access denied for {{platform}} platform: {{reason}}",
|
|
16
|
+
insufficientRoles:
|
|
17
|
+
"Insufficient roles. User has: {{userRoles}}. Required: {{requiredRoles}}",
|
|
18
|
+
definitionError: "Endpoint definition error: {{error}}",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
endpoints: {
|
|
22
|
+
definition: {
|
|
23
|
+
loader: {
|
|
24
|
+
errors: {
|
|
25
|
+
endpointNotFound: "Endpoint '{{identifier}}' not found",
|
|
26
|
+
loadFailed: "Failed to load endpoint '{{identifier}}': {{error}}",
|
|
27
|
+
batchLoadFailed:
|
|
28
|
+
"Batch load failed: {{failedCount}} of {{totalCount}} endpoints failed",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
widgets: {
|
|
35
|
+
chart: {
|
|
36
|
+
noDataAvailable: "No data available",
|
|
37
|
+
noDataToDisplay: "No data to display",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { translations as cliTranslations } from "../../cli/i18n/pl";
|
|
2
|
+
import { translations as mcpTranslations } from "../../mcp/i18n/pl";
|
|
3
|
+
import type { translations as enTranslations } from "../en";
|
|
4
|
+
|
|
5
|
+
export const translations: typeof enTranslations = {
|
|
6
|
+
cli: cliTranslations,
|
|
7
|
+
mcp: mcpTranslations,
|
|
8
|
+
shared: {
|
|
9
|
+
permissions: {
|
|
10
|
+
publicUsersCannotAccess:
|
|
11
|
+
"Użytkownicy publiczni nie mogą uzyskać dostępu do tego uwierzytelnionego punktu końcowego",
|
|
12
|
+
insufficientPermissions:
|
|
13
|
+
"Niewystarczające uprawnienia do dostępu do tego punktu końcowego",
|
|
14
|
+
errors: {
|
|
15
|
+
platformAccessDenied:
|
|
16
|
+
"Odmowa dostępu dla platformy {{platform}}: {{reason}}",
|
|
17
|
+
insufficientRoles:
|
|
18
|
+
"Niewystarczające role. Użytkownik ma: {{userRoles}}. Wymagane: {{requiredRoles}}",
|
|
19
|
+
definitionError: "Błąd definicji punktu końcowego: {{error}}",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
endpoints: {
|
|
23
|
+
definition: {
|
|
24
|
+
loader: {
|
|
25
|
+
errors: {
|
|
26
|
+
endpointNotFound:
|
|
27
|
+
"Punkt końcowy '{{identifier}}' nie został znaleziony",
|
|
28
|
+
loadFailed:
|
|
29
|
+
"Nie udało się załadować punktu końcowego '{{identifier}}': {{error}}",
|
|
30
|
+
batchLoadFailed:
|
|
31
|
+
"Ładowanie wsadowe nie powiodło się: {{failedCount}} z {{totalCount}} punktów końcowych nie powiodło się",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
widgets: {
|
|
38
|
+
chart: {
|
|
39
|
+
noDataAvailable: "Brak dostępnych danych",
|
|
40
|
+
noDataToDisplay: "Brak danych do wyświetlenia",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|