@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,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section Widget Logic
|
|
3
|
+
* Shared data extraction and processing for SECTION widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Processed section data structure
|
|
11
|
+
*/
|
|
12
|
+
export interface ProcessedSection {
|
|
13
|
+
title: string;
|
|
14
|
+
content: WidgetData;
|
|
15
|
+
description?: string;
|
|
16
|
+
collapsible?: boolean;
|
|
17
|
+
defaultExpanded?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Check if section is empty (has no meaningful content)
|
|
22
|
+
*/
|
|
23
|
+
export function isSectionEmpty(value: Record<string, WidgetData>): boolean {
|
|
24
|
+
const entries = Object.entries(value);
|
|
25
|
+
if (entries.length === 0) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Check if all values are empty/null/undefined
|
|
30
|
+
return entries.every((entry) => {
|
|
31
|
+
const val = entry[1];
|
|
32
|
+
if (val === null || val === undefined) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(val) && val.length === 0) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
if (typeof val === "object" && Object.keys(val).length === 0) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Extract and validate section data from WidgetData
|
|
47
|
+
*/
|
|
48
|
+
export function extractSectionData(value: WidgetData): ProcessedSection | null {
|
|
49
|
+
// Section must be an object
|
|
50
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Extract required title
|
|
55
|
+
const title =
|
|
56
|
+
"title" in value && typeof value.title === "string" ? value.title : "";
|
|
57
|
+
|
|
58
|
+
if (!title) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Extract required content
|
|
63
|
+
const content = "content" in value ? value.content : null;
|
|
64
|
+
|
|
65
|
+
if (content === null || content === undefined) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Extract optional properties
|
|
70
|
+
const description =
|
|
71
|
+
"description" in value && typeof value.description === "string"
|
|
72
|
+
? value.description
|
|
73
|
+
: undefined;
|
|
74
|
+
const collapsible =
|
|
75
|
+
"collapsible" in value && typeof value.collapsible === "boolean"
|
|
76
|
+
? value.collapsible
|
|
77
|
+
: false;
|
|
78
|
+
const defaultExpanded =
|
|
79
|
+
"defaultExpanded" in value && typeof value.defaultExpanded === "boolean"
|
|
80
|
+
? value.defaultExpanded
|
|
81
|
+
: true;
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
title,
|
|
85
|
+
content,
|
|
86
|
+
description,
|
|
87
|
+
collapsible,
|
|
88
|
+
defaultExpanded,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stats Grid Widget Logic
|
|
3
|
+
* Shared data extraction and processing for STATS_GRID widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
import type { ProcessedMetricCard } from "./metric-card";
|
|
9
|
+
import { extractMetricCardData } from "./metric-card";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Processed stats grid data structure
|
|
13
|
+
*/
|
|
14
|
+
export interface ProcessedStatsGrid {
|
|
15
|
+
stats: ProcessedMetricCard[];
|
|
16
|
+
columns: number;
|
|
17
|
+
title?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Extract and validate stats grid data from WidgetData
|
|
22
|
+
*/
|
|
23
|
+
export function extractStatsGridData(
|
|
24
|
+
value: WidgetData,
|
|
25
|
+
): ProcessedStatsGrid | null {
|
|
26
|
+
// Narrow to object type first
|
|
27
|
+
const isObject =
|
|
28
|
+
typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29
|
+
|
|
30
|
+
if (!isObject) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Extract stats array
|
|
35
|
+
const stats =
|
|
36
|
+
"stats" in value && Array.isArray(value.stats) ? value.stats : [];
|
|
37
|
+
|
|
38
|
+
if (stats.length === 0) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Extract optional properties
|
|
43
|
+
const columns =
|
|
44
|
+
"columns" in value && typeof value.columns === "number" ? value.columns : 3;
|
|
45
|
+
const title =
|
|
46
|
+
"title" in value && typeof value.title === "string"
|
|
47
|
+
? value.title
|
|
48
|
+
: undefined;
|
|
49
|
+
|
|
50
|
+
// Process each stat using metric card extractor
|
|
51
|
+
const processedStats = stats
|
|
52
|
+
.map((stat: WidgetData) => extractMetricCardData(stat))
|
|
53
|
+
.filter((stat): stat is ProcessedMetricCard => stat !== null);
|
|
54
|
+
|
|
55
|
+
if (processedStats.length === 0) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
stats: processedStats,
|
|
61
|
+
columns: Math.max(1, Math.min(4, columns)),
|
|
62
|
+
title,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Get grid columns count
|
|
68
|
+
*/
|
|
69
|
+
export function getStatsGridColumns(columns: number): number {
|
|
70
|
+
return Math.max(1, Math.min(4, columns));
|
|
71
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tabs Widget Logic
|
|
3
|
+
* Shared data extraction and processing for TABS widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Tab item structure
|
|
11
|
+
*/
|
|
12
|
+
export interface TabItem {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
content: WidgetData;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Processed tabs data structure
|
|
21
|
+
*/
|
|
22
|
+
export interface ProcessedTabs {
|
|
23
|
+
tabs: TabItem[];
|
|
24
|
+
activeTab?: string;
|
|
25
|
+
variant?: "default" | "pills" | "underline";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Extract and validate tabs data from WidgetData
|
|
30
|
+
*/
|
|
31
|
+
export function extractTabsData(value: WidgetData): ProcessedTabs | null {
|
|
32
|
+
// Handle object value with tabs properties
|
|
33
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
34
|
+
const tabs = "tabs" in value && Array.isArray(value.tabs) ? value.tabs : [];
|
|
35
|
+
const activeTab =
|
|
36
|
+
"activeTab" in value && typeof value.activeTab === "string"
|
|
37
|
+
? value.activeTab
|
|
38
|
+
: undefined;
|
|
39
|
+
const variant =
|
|
40
|
+
"variant" in value && typeof value.variant === "string"
|
|
41
|
+
? (value.variant as "default" | "pills" | "underline")
|
|
42
|
+
: "default";
|
|
43
|
+
|
|
44
|
+
// Validate tabs
|
|
45
|
+
const validTabs = tabs
|
|
46
|
+
.filter((t) => typeof t === "object" && t !== null)
|
|
47
|
+
.map((t) => ({
|
|
48
|
+
id: "id" in t && typeof t.id === "string" ? t.id : "",
|
|
49
|
+
label: "label" in t && typeof t.label === "string" ? t.label : "",
|
|
50
|
+
content: "content" in t ? t.content : null,
|
|
51
|
+
disabled:
|
|
52
|
+
"disabled" in t && typeof t.disabled === "boolean"
|
|
53
|
+
? t.disabled
|
|
54
|
+
: false,
|
|
55
|
+
}))
|
|
56
|
+
.filter((t) => t.id && t.label);
|
|
57
|
+
|
|
58
|
+
if (validTabs.length === 0) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
tabs: validTabs,
|
|
64
|
+
activeTab: activeTab || validTabs[0].id,
|
|
65
|
+
variant,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Invalid type
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Get active tab from tabs
|
|
75
|
+
*/
|
|
76
|
+
export function getActiveTab(data: ProcessedTabs): TabItem | null {
|
|
77
|
+
return (
|
|
78
|
+
data.tabs.find((tab) => tab.id === data.activeTab) || data.tabs[0] || null
|
|
79
|
+
);
|
|
80
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text Widget Logic
|
|
3
|
+
* Shared data extraction and processing for TEXT widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Processed text data structure
|
|
11
|
+
*/
|
|
12
|
+
export interface ProcessedText {
|
|
13
|
+
text: string;
|
|
14
|
+
truncate?: number;
|
|
15
|
+
format?: "plain" | "code" | "pre";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Extract and validate text data from WidgetData
|
|
20
|
+
*/
|
|
21
|
+
export function extractTextData(value: WidgetData): ProcessedText | null {
|
|
22
|
+
// Handle string value directly
|
|
23
|
+
if (typeof value === "string") {
|
|
24
|
+
return {
|
|
25
|
+
text: value,
|
|
26
|
+
format: "plain",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Handle number value
|
|
31
|
+
if (typeof value === "number") {
|
|
32
|
+
return {
|
|
33
|
+
text: String(value),
|
|
34
|
+
format: "plain",
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Handle boolean value
|
|
39
|
+
if (typeof value === "boolean") {
|
|
40
|
+
return {
|
|
41
|
+
text: value ? "true" : "false",
|
|
42
|
+
format: "plain",
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Handle object value with text properties
|
|
47
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
48
|
+
const text =
|
|
49
|
+
"text" in value && typeof value.text === "string" ? value.text : "";
|
|
50
|
+
const truncate =
|
|
51
|
+
"truncate" in value && typeof value.truncate === "number"
|
|
52
|
+
? value.truncate
|
|
53
|
+
: undefined;
|
|
54
|
+
const format =
|
|
55
|
+
"format" in value && typeof value.format === "string"
|
|
56
|
+
? value.format
|
|
57
|
+
: "plain";
|
|
58
|
+
|
|
59
|
+
if (!text) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
text,
|
|
65
|
+
truncate,
|
|
66
|
+
format:
|
|
67
|
+
format === "code" || format === "pre" || format === "plain"
|
|
68
|
+
? format
|
|
69
|
+
: "plain",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Handle null/undefined
|
|
74
|
+
if (value === null || value === undefined) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Handle array by converting to JSON
|
|
79
|
+
if (Array.isArray(value)) {
|
|
80
|
+
return {
|
|
81
|
+
text: JSON.stringify(value),
|
|
82
|
+
format: "code",
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Truncate text to specified length
|
|
91
|
+
*/
|
|
92
|
+
export function truncateText(text: string, maxLength?: number): string {
|
|
93
|
+
if (!maxLength || text.length <= maxLength) {
|
|
94
|
+
return text;
|
|
95
|
+
}
|
|
96
|
+
// oxlint-disable-next-line prefer-template
|
|
97
|
+
return text.slice(0, maxLength - 3) + "...";
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Format text value for display
|
|
102
|
+
*/
|
|
103
|
+
export function formatText(text: string, truncate?: number): string {
|
|
104
|
+
return truncateText(text, truncate);
|
|
105
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Title Widget Logic
|
|
3
|
+
* Shared data extraction and processing for TITLE widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Processed title data structure
|
|
11
|
+
*/
|
|
12
|
+
export interface ProcessedTitle {
|
|
13
|
+
text: string;
|
|
14
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
15
|
+
subtitle?: string;
|
|
16
|
+
align?: "left" | "center" | "right";
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Extract and validate title data from WidgetData
|
|
21
|
+
*/
|
|
22
|
+
export function extractTitleData(value: WidgetData): ProcessedTitle | null {
|
|
23
|
+
// Handle string value directly
|
|
24
|
+
if (typeof value === "string") {
|
|
25
|
+
return {
|
|
26
|
+
text: value,
|
|
27
|
+
level: 2,
|
|
28
|
+
align: "left",
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Handle object value with title properties
|
|
33
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
34
|
+
const text =
|
|
35
|
+
"text" in value && typeof value.text === "string" ? value.text : "";
|
|
36
|
+
|
|
37
|
+
if (!text) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const level =
|
|
42
|
+
"level" in value && typeof value.level === "number" ? value.level : 2;
|
|
43
|
+
const subtitle =
|
|
44
|
+
"subtitle" in value && typeof value.subtitle === "string"
|
|
45
|
+
? value.subtitle
|
|
46
|
+
: undefined;
|
|
47
|
+
const align =
|
|
48
|
+
"align" in value && typeof value.align === "string"
|
|
49
|
+
? value.align
|
|
50
|
+
: "left";
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
text,
|
|
54
|
+
level:
|
|
55
|
+
level === 1 ||
|
|
56
|
+
level === 2 ||
|
|
57
|
+
level === 3 ||
|
|
58
|
+
level === 4 ||
|
|
59
|
+
level === 5 ||
|
|
60
|
+
level === 6
|
|
61
|
+
? level
|
|
62
|
+
: 2,
|
|
63
|
+
subtitle,
|
|
64
|
+
align:
|
|
65
|
+
align === "center" || align === "right" || align === "left"
|
|
66
|
+
? align
|
|
67
|
+
: "left",
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
|
|
3
|
+
import type { ResponseType } from "@/app/api/[locale]/shared/types/response.schema";
|
|
4
|
+
import type { WidgetType } from "@/app/api/[locale]/system/unified-interface/shared/types/enums";
|
|
5
|
+
import type { UserRoleValue } from "@/app/api/[locale]/user/user-roles/enum";
|
|
6
|
+
import type { CountryLanguage } from "@/i18n/core/config";
|
|
7
|
+
import type { TranslatedKeyType } from "@/i18n/core/scoped-translation";
|
|
8
|
+
import type { TParams } from "@/i18n/core/static-types";
|
|
9
|
+
|
|
10
|
+
import type { UnifiedField } from "../types/endpoint";
|
|
11
|
+
import type { Platform } from "../types/platform";
|
|
12
|
+
import type { ExtractWidgetConfig } from "./configs";
|
|
13
|
+
|
|
14
|
+
export type WidgetData =
|
|
15
|
+
| string
|
|
16
|
+
| number
|
|
17
|
+
| boolean
|
|
18
|
+
| null
|
|
19
|
+
| undefined
|
|
20
|
+
| string[]
|
|
21
|
+
| number[]
|
|
22
|
+
| WidgetData[]
|
|
23
|
+
| { [key: string]: WidgetData };
|
|
24
|
+
|
|
25
|
+
export interface WidgetInput<TKey extends string> {
|
|
26
|
+
field: UnifiedField<TKey>;
|
|
27
|
+
value: WidgetData;
|
|
28
|
+
context: WidgetRenderContext;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type WidgetActionType =
|
|
32
|
+
| "click"
|
|
33
|
+
| "edit"
|
|
34
|
+
| "delete"
|
|
35
|
+
| "create"
|
|
36
|
+
| "navigate"
|
|
37
|
+
| "refresh"
|
|
38
|
+
| "retry"
|
|
39
|
+
| "cancel"
|
|
40
|
+
| "submit";
|
|
41
|
+
|
|
42
|
+
export type WidgetActionPayload =
|
|
43
|
+
| { type: "click"; fieldName: string; value?: string | number | boolean }
|
|
44
|
+
| { type: "edit"; fieldName: string; oldValue: string; newValue: string }
|
|
45
|
+
| { type: "delete"; id: string }
|
|
46
|
+
| { type: "create"; data: Record<string, string | number | boolean> }
|
|
47
|
+
| { type: "navigate"; url: string }
|
|
48
|
+
| { type: "refresh" }
|
|
49
|
+
| { type: "retry" }
|
|
50
|
+
| { type: "cancel" }
|
|
51
|
+
| { type: "submit"; data: Record<string, string | number | boolean> };
|
|
52
|
+
|
|
53
|
+
export interface WidgetAction {
|
|
54
|
+
type: WidgetActionType;
|
|
55
|
+
payload: WidgetActionPayload;
|
|
56
|
+
metadata?: {
|
|
57
|
+
fieldName?: string;
|
|
58
|
+
fieldPath?: string;
|
|
59
|
+
timestamp?: number;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface WidgetRenderContext {
|
|
64
|
+
locale: CountryLanguage;
|
|
65
|
+
isInteractive: boolean;
|
|
66
|
+
permissions: readonly UserRoleValue[];
|
|
67
|
+
onNavigate?: (url: string) => void;
|
|
68
|
+
platform?:
|
|
69
|
+
| typeof Platform.TRPC
|
|
70
|
+
| typeof Platform.NEXT_PAGE
|
|
71
|
+
| typeof Platform.NEXT_API
|
|
72
|
+
| typeof Platform.CLI
|
|
73
|
+
| typeof Platform.CLI_PACKAGE;
|
|
74
|
+
theme?: "light" | "dark" | "system";
|
|
75
|
+
endpointFields?: Record<string, WidgetData>; // Original endpoint fields for nested path lookup
|
|
76
|
+
disabled?: boolean; // Disable all form inputs
|
|
77
|
+
response?: ResponseType<WidgetData>; // Full ResponseType from endpoint (includes success/error state)
|
|
78
|
+
/**
|
|
79
|
+
* Optional scoped translation function for this endpoint
|
|
80
|
+
* When provided, widgets should use this instead of the global translation function
|
|
81
|
+
* This enables module-specific translations with type safety
|
|
82
|
+
* Note: Uses method syntax for bivariance - accepts both narrow (scoped) and broad (string) key types
|
|
83
|
+
*/
|
|
84
|
+
scopedT: (locale: CountryLanguage) => {
|
|
85
|
+
t(key: string, params?: TParams): TranslatedKeyType;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Endpoint mutations available for widgets to trigger directly
|
|
89
|
+
* Widgets can call these methods to perform CRUD operations
|
|
90
|
+
* This enables definition-driven interactions without custom handlers
|
|
91
|
+
*/
|
|
92
|
+
endpointMutations?: {
|
|
93
|
+
create?: {
|
|
94
|
+
submit: (data: Record<string, WidgetData>) => Promise<void>;
|
|
95
|
+
isSubmitting?: boolean;
|
|
96
|
+
};
|
|
97
|
+
update?: {
|
|
98
|
+
submit: (data: Record<string, WidgetData>) => Promise<void>;
|
|
99
|
+
isSubmitting?: boolean;
|
|
100
|
+
};
|
|
101
|
+
delete?: {
|
|
102
|
+
submit: (data: Record<string, WidgetData>) => Promise<void>;
|
|
103
|
+
isSubmitting?: boolean;
|
|
104
|
+
};
|
|
105
|
+
read?: {
|
|
106
|
+
refetch: () => Promise<void>;
|
|
107
|
+
isLoading?: boolean;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Base widget component props.
|
|
114
|
+
*/
|
|
115
|
+
export interface WidgetComponentProps<TKey extends string> {
|
|
116
|
+
field: UnifiedField<TKey>;
|
|
117
|
+
fieldName?: string;
|
|
118
|
+
value: WidgetData;
|
|
119
|
+
context: WidgetRenderContext;
|
|
120
|
+
className?: string;
|
|
121
|
+
onSubmit?: () => void;
|
|
122
|
+
isSubmitting?: boolean;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Field type with narrowed widget config based on WidgetType discriminator.
|
|
127
|
+
*/
|
|
128
|
+
export type NarrowedField<
|
|
129
|
+
TKey extends string,
|
|
130
|
+
T extends WidgetType,
|
|
131
|
+
> = UnifiedField<TKey> & {
|
|
132
|
+
ui: ExtractWidgetConfig<T, TKey>;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// DISCRIMINATED UNION TYPES FOR TYPE-SAFE WIDGET PROPS
|
|
137
|
+
// ============================================================================
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Base widget props shared across all platforms.
|
|
141
|
+
* The `widgetType` field acts as the discriminator for the union.
|
|
142
|
+
*/
|
|
143
|
+
export interface BaseWidgetProps<TKey extends string, T extends WidgetType> {
|
|
144
|
+
widgetType: T;
|
|
145
|
+
field: NarrowedField<TKey, T>;
|
|
146
|
+
value: WidgetData;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Maps each WidgetType to its base props.
|
|
151
|
+
* Used to create discriminated unions that TypeScript can narrow automatically.
|
|
152
|
+
*/
|
|
153
|
+
export type WidgetPropsMap<TKey extends string> = {
|
|
154
|
+
[T in WidgetType]: BaseWidgetProps<TKey, T>;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Union of all widget props - TypeScript narrows this in switch statements.
|
|
159
|
+
*/
|
|
160
|
+
export type WidgetPropsUnion<TKey extends string> =
|
|
161
|
+
WidgetPropsMap<TKey>[WidgetType];
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* React-specific widget props. Extends base props with React context and form handling.
|
|
165
|
+
*/
|
|
166
|
+
export interface ReactWidgetProps<
|
|
167
|
+
T extends WidgetType,
|
|
168
|
+
TKey extends string,
|
|
169
|
+
> extends BaseWidgetProps<TKey, T> {
|
|
170
|
+
context: WidgetRenderContext;
|
|
171
|
+
fieldName?: string;
|
|
172
|
+
onAction?: (action: WidgetAction) => void | Promise<void>;
|
|
173
|
+
className?: string;
|
|
174
|
+
onSubmit?: () => void;
|
|
175
|
+
isSubmitting?: boolean;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Value-only React widget props for widgets that don't need field definition.
|
|
180
|
+
* Use this for leaf widgets that only consume value/context (e.g., MetricCardWidget).
|
|
181
|
+
*/
|
|
182
|
+
export interface ValueOnlyReactWidgetProps<T extends WidgetType> {
|
|
183
|
+
widgetType: T;
|
|
184
|
+
value: WidgetData;
|
|
185
|
+
context: WidgetRenderContext;
|
|
186
|
+
className?: string;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Maps each WidgetType to React-specific props.
|
|
191
|
+
*/
|
|
192
|
+
export type ReactWidgetPropsMap<TKey extends string> = {
|
|
193
|
+
[T in WidgetType]: ReactWidgetProps<T, TKey>;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Union of all React widget props.
|
|
198
|
+
*/
|
|
199
|
+
export type ReactWidgetPropsUnion<TKey extends string> =
|
|
200
|
+
ReactWidgetPropsMap<TKey>[WidgetType];
|
|
201
|
+
|
|
202
|
+
export type WidgetRenderer<TKey extends string> = (
|
|
203
|
+
props: WidgetComponentProps<TKey>,
|
|
204
|
+
) => React.ReactElement | string | null;
|
|
205
|
+
|
|
206
|
+
export interface WidgetRegistryEntry<TKey extends string> {
|
|
207
|
+
type: WidgetType;
|
|
208
|
+
component:
|
|
209
|
+
| React.ComponentType<WidgetComponentProps<TKey>>
|
|
210
|
+
| WidgetRenderer<TKey>;
|
|
211
|
+
platforms?: Array<
|
|
212
|
+
| typeof Platform.TRPC
|
|
213
|
+
| typeof Platform.NEXT_PAGE
|
|
214
|
+
| typeof Platform.NEXT_API
|
|
215
|
+
| typeof Platform.CLI
|
|
216
|
+
>;
|
|
217
|
+
supportsEditing?: boolean;
|
|
218
|
+
supportsCRUD?: boolean;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export interface WidgetErrorBoundaryProps {
|
|
222
|
+
children: React.ReactNode;
|
|
223
|
+
locale: CountryLanguage;
|
|
224
|
+
fallback?: React.ReactElement;
|
|
225
|
+
onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export interface WidgetLoadingProps {
|
|
229
|
+
message?: string;
|
|
230
|
+
size?: "sm" | "md" | "lg";
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export interface WidgetEmptyStateProps {
|
|
234
|
+
message: string;
|
|
235
|
+
icon?: string;
|
|
236
|
+
action?: {
|
|
237
|
+
label: string;
|
|
238
|
+
onClick: () => void;
|
|
239
|
+
};
|
|
240
|
+
}
|