@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,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data List Widget Logic
|
|
3
|
+
* Shared data extraction and processing for DATA_LIST widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* List item type
|
|
11
|
+
*/
|
|
12
|
+
export interface ListItem {
|
|
13
|
+
[key: string]: WidgetData;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Type guard to check if a value is a ListItem
|
|
18
|
+
*/
|
|
19
|
+
function isListItem(item: WidgetData): item is ListItem {
|
|
20
|
+
return typeof item === "object" && item !== null && !Array.isArray(item);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Processed data list structure
|
|
25
|
+
*/
|
|
26
|
+
export interface ProcessedDataList {
|
|
27
|
+
items: ListItem[];
|
|
28
|
+
title?: string;
|
|
29
|
+
showBullets: boolean;
|
|
30
|
+
maxItems?: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Extract and validate data list from WidgetData
|
|
35
|
+
*/
|
|
36
|
+
export function extractDataListData(
|
|
37
|
+
value: WidgetData,
|
|
38
|
+
): ProcessedDataList | null {
|
|
39
|
+
// Handle array of items directly
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
if (value.length === 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const filteredItems: ListItem[] = [];
|
|
46
|
+
for (const item of value) {
|
|
47
|
+
if (isListItem(item)) {
|
|
48
|
+
filteredItems.push(item);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (filteredItems.length === 0) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
items: filteredItems,
|
|
58
|
+
showBullets: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Handle object with items array
|
|
63
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
64
|
+
const items =
|
|
65
|
+
"items" in value && Array.isArray(value.items) ? value.items : [];
|
|
66
|
+
const title =
|
|
67
|
+
"title" in value && typeof value.title === "string"
|
|
68
|
+
? value.title
|
|
69
|
+
: undefined;
|
|
70
|
+
const showBullets =
|
|
71
|
+
"showBullets" in value && typeof value.showBullets === "boolean"
|
|
72
|
+
? value.showBullets
|
|
73
|
+
: true;
|
|
74
|
+
const maxItems =
|
|
75
|
+
"maxItems" in value && typeof value.maxItems === "number"
|
|
76
|
+
? value.maxItems
|
|
77
|
+
: undefined;
|
|
78
|
+
|
|
79
|
+
const validItems = items.filter(
|
|
80
|
+
(item): item is ListItem =>
|
|
81
|
+
typeof item === "object" && item !== null && !Array.isArray(item),
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
if (validItems.length === 0) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
items: validItems,
|
|
90
|
+
title,
|
|
91
|
+
showBullets,
|
|
92
|
+
maxItems,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Get display items based on maxItems limit
|
|
101
|
+
*/
|
|
102
|
+
export function getListDisplayItems(
|
|
103
|
+
items: ListItem[],
|
|
104
|
+
maxItems?: number,
|
|
105
|
+
): ListItem[] {
|
|
106
|
+
if (!maxItems || items.length <= maxItems) {
|
|
107
|
+
return items;
|
|
108
|
+
}
|
|
109
|
+
return items.slice(0, maxItems);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Get remaining items count
|
|
114
|
+
*/
|
|
115
|
+
export function getRemainingListItemsCount(
|
|
116
|
+
totalItems: number,
|
|
117
|
+
maxItems?: number,
|
|
118
|
+
): number {
|
|
119
|
+
if (!maxItems || totalItems <= maxItems) {
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
return totalItems - maxItems;
|
|
123
|
+
}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Table Widget Logic
|
|
3
|
+
* Shared data extraction and processing for DATA_TABLE widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { CountryLanguage } from "@/i18n/core/config";
|
|
8
|
+
|
|
9
|
+
import type { UnifiedField } from "../../types/endpoint";
|
|
10
|
+
import { FieldDataType, WidgetType } from "../../types/enums";
|
|
11
|
+
import type { WidgetData } from "../types";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Table row type
|
|
15
|
+
*/
|
|
16
|
+
export interface TableRow {
|
|
17
|
+
[key: string]: WidgetData;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Table column definition
|
|
22
|
+
*/
|
|
23
|
+
export interface TableColumn<TKey extends string> {
|
|
24
|
+
key: string;
|
|
25
|
+
label: NoInfer<TKey>;
|
|
26
|
+
type?: FieldDataType;
|
|
27
|
+
width?: string;
|
|
28
|
+
align?: "left" | "center" | "right";
|
|
29
|
+
formatter?: (value: WidgetData) => string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Table rendering configuration
|
|
34
|
+
*/
|
|
35
|
+
export interface TableRenderConfig<TKey extends string> {
|
|
36
|
+
columns: TableColumn<TKey>[];
|
|
37
|
+
pagination: { enabled: boolean; pageSize: number };
|
|
38
|
+
sorting: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
defaultSort?: { key: string; direction: "asc" | "desc" };
|
|
41
|
+
};
|
|
42
|
+
filtering: { enabled: boolean };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Processed data table structure
|
|
47
|
+
*/
|
|
48
|
+
export interface ProcessedDataTable<TKey extends string> {
|
|
49
|
+
rows: TableRow[];
|
|
50
|
+
columns: TableColumn<TKey>[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Extract and validate data table from WidgetData
|
|
55
|
+
*/
|
|
56
|
+
export function extractDataTableData<TKey extends string>(
|
|
57
|
+
value: WidgetData,
|
|
58
|
+
): ProcessedDataTable<TKey> | null {
|
|
59
|
+
// Handle array of objects (auto-detect columns)
|
|
60
|
+
if (Array.isArray(value)) {
|
|
61
|
+
if (value.length === 0) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Auto-detect columns from first row
|
|
66
|
+
const firstRow = value[0];
|
|
67
|
+
if (
|
|
68
|
+
typeof firstRow === "object" &&
|
|
69
|
+
firstRow !== null &&
|
|
70
|
+
!Array.isArray(firstRow)
|
|
71
|
+
) {
|
|
72
|
+
const columns: TableColumn<TKey>[] = Object.keys(firstRow).map((key) => ({
|
|
73
|
+
key,
|
|
74
|
+
label: key as TKey,
|
|
75
|
+
}));
|
|
76
|
+
|
|
77
|
+
const rows = value.filter(
|
|
78
|
+
(item): item is TableRow =>
|
|
79
|
+
item !== undefined &&
|
|
80
|
+
typeof item === "object" &&
|
|
81
|
+
item !== null &&
|
|
82
|
+
!Array.isArray(item),
|
|
83
|
+
) as TableRow[];
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
rows,
|
|
87
|
+
columns,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Handle object with rows and columns
|
|
95
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
96
|
+
const rows = "rows" in value && Array.isArray(value.rows) ? value.rows : [];
|
|
97
|
+
const columns =
|
|
98
|
+
"columns" in value && Array.isArray(value.columns) ? value.columns : [];
|
|
99
|
+
|
|
100
|
+
// Validate rows
|
|
101
|
+
const validRows = rows.filter(
|
|
102
|
+
(item): item is TableRow =>
|
|
103
|
+
typeof item === "object" && item !== null && !Array.isArray(item),
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// Validate columns
|
|
107
|
+
const validColumns = columns
|
|
108
|
+
.map((col: WidgetData) => {
|
|
109
|
+
if (typeof col !== "object" || col === null || Array.isArray(col)) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const key = "key" in col && typeof col.key === "string" ? col.key : "";
|
|
114
|
+
const label =
|
|
115
|
+
"label" in col && typeof col.label === "string" ? col.label : key;
|
|
116
|
+
|
|
117
|
+
if (!key) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return { key, label };
|
|
122
|
+
})
|
|
123
|
+
.filter((col): col is TableColumn<TKey> => col !== null);
|
|
124
|
+
|
|
125
|
+
if (validRows.length === 0) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// If no columns provided, auto-detect from first row
|
|
130
|
+
if (validColumns.length === 0 && validRows.length > 0) {
|
|
131
|
+
const firstRow = validRows[0];
|
|
132
|
+
const autoColumns: TableColumn<TKey>[] = Object.keys(firstRow).map(
|
|
133
|
+
(key) => ({
|
|
134
|
+
key,
|
|
135
|
+
label: key as TKey,
|
|
136
|
+
}),
|
|
137
|
+
);
|
|
138
|
+
return {
|
|
139
|
+
rows: validRows,
|
|
140
|
+
columns: autoColumns,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
rows: validRows,
|
|
146
|
+
columns: validColumns,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Get cell value from row
|
|
155
|
+
*/
|
|
156
|
+
export function getCellValue(row: TableRow, columnKey: string): WidgetData {
|
|
157
|
+
return row[columnKey];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Get table configuration from field
|
|
162
|
+
*/
|
|
163
|
+
export function getTableConfig<TKey extends string>(
|
|
164
|
+
field: UnifiedField<TKey>,
|
|
165
|
+
): TableRenderConfig<TKey> {
|
|
166
|
+
const defaultConfig: TableRenderConfig<TKey> = {
|
|
167
|
+
columns: [],
|
|
168
|
+
pagination: { enabled: false, pageSize: 50 },
|
|
169
|
+
sorting: { enabled: false },
|
|
170
|
+
filtering: { enabled: false },
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
if (field.ui.type !== WidgetType.DATA_TABLE) {
|
|
174
|
+
return defaultConfig;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const config = field.ui;
|
|
178
|
+
|
|
179
|
+
const columns: TableColumn<TKey>[] =
|
|
180
|
+
config.columns?.map((col) => ({
|
|
181
|
+
key: col.key,
|
|
182
|
+
label: col.label,
|
|
183
|
+
type: FieldDataType.TEXT,
|
|
184
|
+
width: typeof col.width === "string" ? col.width : undefined,
|
|
185
|
+
align: col.align || ("left" as const),
|
|
186
|
+
})) || [];
|
|
187
|
+
|
|
188
|
+
// Extract and type-check pagination config
|
|
189
|
+
const paginationValue = config.pagination;
|
|
190
|
+
let pagination: { enabled: boolean; pageSize: number } = {
|
|
191
|
+
enabled: false,
|
|
192
|
+
pageSize: 50,
|
|
193
|
+
};
|
|
194
|
+
if (
|
|
195
|
+
typeof paginationValue === "object" &&
|
|
196
|
+
paginationValue !== null &&
|
|
197
|
+
!Array.isArray(paginationValue)
|
|
198
|
+
) {
|
|
199
|
+
const paginationObj = paginationValue;
|
|
200
|
+
if ("enabled" in paginationObj && "pageSize" in paginationObj) {
|
|
201
|
+
const enabledVal = paginationObj.enabled;
|
|
202
|
+
const pageSizeVal = paginationObj.pageSize;
|
|
203
|
+
if (typeof enabledVal === "boolean" && typeof pageSizeVal === "number") {
|
|
204
|
+
pagination = { enabled: enabledVal, pageSize: pageSizeVal };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Extract and type-check sorting config
|
|
210
|
+
const sortingValue = config.sorting;
|
|
211
|
+
let sorting: {
|
|
212
|
+
enabled: boolean;
|
|
213
|
+
defaultSort?: { key: string; direction: "asc" | "desc" };
|
|
214
|
+
} = {
|
|
215
|
+
enabled: false,
|
|
216
|
+
};
|
|
217
|
+
if (
|
|
218
|
+
typeof sortingValue === "object" &&
|
|
219
|
+
sortingValue !== null &&
|
|
220
|
+
!Array.isArray(sortingValue)
|
|
221
|
+
) {
|
|
222
|
+
const sortingObj = sortingValue;
|
|
223
|
+
if ("enabled" in sortingObj) {
|
|
224
|
+
const enabledVal = sortingObj.enabled;
|
|
225
|
+
if (typeof enabledVal === "boolean") {
|
|
226
|
+
sorting.enabled = enabledVal;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Extract and type-check filtering config
|
|
232
|
+
const filteringValue = config.filtering;
|
|
233
|
+
let filtering: { enabled: boolean } = { enabled: false };
|
|
234
|
+
if (
|
|
235
|
+
typeof filteringValue === "object" &&
|
|
236
|
+
filteringValue !== null &&
|
|
237
|
+
!Array.isArray(filteringValue)
|
|
238
|
+
) {
|
|
239
|
+
const filteringObj = filteringValue;
|
|
240
|
+
if ("enabled" in filteringObj) {
|
|
241
|
+
const enabledVal = filteringObj.enabled;
|
|
242
|
+
if (typeof enabledVal === "boolean") {
|
|
243
|
+
filtering = { enabled: enabledVal };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return {
|
|
249
|
+
columns,
|
|
250
|
+
pagination,
|
|
251
|
+
sorting,
|
|
252
|
+
filtering,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Detect field data type from value
|
|
258
|
+
*/
|
|
259
|
+
export function detectFieldType(value: WidgetData): FieldDataType {
|
|
260
|
+
if (typeof value === "number") {
|
|
261
|
+
return FieldDataType.NUMBER;
|
|
262
|
+
}
|
|
263
|
+
if (typeof value === "boolean") {
|
|
264
|
+
return FieldDataType.BOOLEAN;
|
|
265
|
+
}
|
|
266
|
+
if (Array.isArray(value)) {
|
|
267
|
+
return FieldDataType.ARRAY;
|
|
268
|
+
}
|
|
269
|
+
if (value && typeof value === "object") {
|
|
270
|
+
return FieldDataType.OBJECT;
|
|
271
|
+
}
|
|
272
|
+
if (typeof value === "string" && !isNaN(Date.parse(value))) {
|
|
273
|
+
return FieldDataType.DATE;
|
|
274
|
+
}
|
|
275
|
+
return FieldDataType.TEXT;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Calculate column widths based on content
|
|
280
|
+
*/
|
|
281
|
+
export function calculateColumnWidths<TKey extends string>(
|
|
282
|
+
data: TableRow[],
|
|
283
|
+
config: TableRenderConfig<TKey>,
|
|
284
|
+
maxWidth: number,
|
|
285
|
+
): number[] {
|
|
286
|
+
const availableWidth = maxWidth - (config.columns.length - 1) * 3; // Account for separators
|
|
287
|
+
|
|
288
|
+
return config.columns.map((col: TableColumn<TKey>) => {
|
|
289
|
+
if (col.width?.endsWith("%")) {
|
|
290
|
+
const percentage = parseInt(col.width.replace("%", ""), 10) / 100;
|
|
291
|
+
return Math.floor(availableWidth * percentage);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Auto-calculate based on content
|
|
295
|
+
const headerWidth = col.label.length;
|
|
296
|
+
const maxContentWidth = Math.max(
|
|
297
|
+
...data.slice(0, 10).map((row) => {
|
|
298
|
+
const value = row[col.key];
|
|
299
|
+
const formatted = formatCellValue(value);
|
|
300
|
+
return formatted.length;
|
|
301
|
+
}),
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
return Math.min(Math.max(headerWidth, maxContentWidth), 50);
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Get column formatter based on field type
|
|
310
|
+
*/
|
|
311
|
+
export function getColumnFormatter(
|
|
312
|
+
type: FieldDataType,
|
|
313
|
+
locale: CountryLanguage,
|
|
314
|
+
): (value: WidgetData) => string {
|
|
315
|
+
switch (type) {
|
|
316
|
+
case FieldDataType.NUMBER:
|
|
317
|
+
return (value) => {
|
|
318
|
+
if (typeof value === "number") {
|
|
319
|
+
return value.toLocaleString(locale);
|
|
320
|
+
}
|
|
321
|
+
return formatCellValue(value);
|
|
322
|
+
};
|
|
323
|
+
case FieldDataType.BOOLEAN:
|
|
324
|
+
return (value) => {
|
|
325
|
+
if (typeof value === "boolean") {
|
|
326
|
+
return value ? "✓" : "✗";
|
|
327
|
+
}
|
|
328
|
+
return formatCellValue(value);
|
|
329
|
+
};
|
|
330
|
+
case FieldDataType.DATE:
|
|
331
|
+
return (value) => {
|
|
332
|
+
if (typeof value === "string" || value instanceof Date) {
|
|
333
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
334
|
+
return date.toLocaleDateString(locale);
|
|
335
|
+
}
|
|
336
|
+
return formatCellValue(value);
|
|
337
|
+
};
|
|
338
|
+
case FieldDataType.ARRAY:
|
|
339
|
+
return (value) => {
|
|
340
|
+
if (Array.isArray(value)) {
|
|
341
|
+
return `[${value.length} items]`;
|
|
342
|
+
}
|
|
343
|
+
return formatCellValue(value);
|
|
344
|
+
};
|
|
345
|
+
case FieldDataType.OBJECT:
|
|
346
|
+
return (value) => {
|
|
347
|
+
if (
|
|
348
|
+
typeof value === "object" &&
|
|
349
|
+
value !== null &&
|
|
350
|
+
!Array.isArray(value)
|
|
351
|
+
) {
|
|
352
|
+
return `{${Object.keys(value).length} properties}`;
|
|
353
|
+
}
|
|
354
|
+
return formatCellValue(value);
|
|
355
|
+
};
|
|
356
|
+
default:
|
|
357
|
+
return (value) => {
|
|
358
|
+
const str = formatCellValue(value);
|
|
359
|
+
return str.length > 50 ? `${str.slice(0, 47)}...` : str;
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Format cell value as string for display
|
|
366
|
+
*/
|
|
367
|
+
export function formatCellValue(value: WidgetData): string {
|
|
368
|
+
if (typeof value === "string") {
|
|
369
|
+
return value;
|
|
370
|
+
}
|
|
371
|
+
if (typeof value === "number") {
|
|
372
|
+
return String(value);
|
|
373
|
+
}
|
|
374
|
+
if (typeof value === "boolean") {
|
|
375
|
+
return value ? "true" : "false";
|
|
376
|
+
}
|
|
377
|
+
if (value === null || value === undefined) {
|
|
378
|
+
return "";
|
|
379
|
+
}
|
|
380
|
+
if (Array.isArray(value)) {
|
|
381
|
+
return JSON.stringify(value);
|
|
382
|
+
}
|
|
383
|
+
if (typeof value === "object") {
|
|
384
|
+
return JSON.stringify(value);
|
|
385
|
+
}
|
|
386
|
+
return "";
|
|
387
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Editable Text Widget Logic
|
|
3
|
+
* Shared data extraction and processing for EDITABLE_TEXT widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Processed editable text data structure
|
|
11
|
+
*/
|
|
12
|
+
export interface ProcessedEditableText {
|
|
13
|
+
value: string;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
multiline?: boolean;
|
|
16
|
+
maxLength?: number;
|
|
17
|
+
readonly?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Extract and validate editable text data from WidgetData
|
|
22
|
+
*/
|
|
23
|
+
export function extractEditableTextData(
|
|
24
|
+
value: WidgetData,
|
|
25
|
+
): ProcessedEditableText | null {
|
|
26
|
+
// Handle string value directly
|
|
27
|
+
if (typeof value === "string") {
|
|
28
|
+
return {
|
|
29
|
+
value,
|
|
30
|
+
multiline: false,
|
|
31
|
+
readonly: false,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Handle number value
|
|
36
|
+
if (typeof value === "number") {
|
|
37
|
+
return {
|
|
38
|
+
value: String(value),
|
|
39
|
+
multiline: false,
|
|
40
|
+
readonly: false,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Handle object value with editable text properties
|
|
45
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
46
|
+
const textValue =
|
|
47
|
+
"value" in value && typeof value.value === "string"
|
|
48
|
+
? value.value
|
|
49
|
+
: "value" in value && typeof value.value === "number"
|
|
50
|
+
? String(value.value)
|
|
51
|
+
: "";
|
|
52
|
+
const placeholder =
|
|
53
|
+
"placeholder" in value && typeof value.placeholder === "string"
|
|
54
|
+
? value.placeholder
|
|
55
|
+
: undefined;
|
|
56
|
+
const multiline =
|
|
57
|
+
"multiline" in value && typeof value.multiline === "boolean"
|
|
58
|
+
? value.multiline
|
|
59
|
+
: false;
|
|
60
|
+
const maxLength =
|
|
61
|
+
"maxLength" in value && typeof value.maxLength === "number"
|
|
62
|
+
? value.maxLength
|
|
63
|
+
: undefined;
|
|
64
|
+
const readonly =
|
|
65
|
+
"readonly" in value && typeof value.readonly === "boolean"
|
|
66
|
+
? value.readonly
|
|
67
|
+
: false;
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
value: textValue,
|
|
71
|
+
placeholder,
|
|
72
|
+
multiline,
|
|
73
|
+
maxLength,
|
|
74
|
+
readonly,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Validate text length
|
|
83
|
+
*/
|
|
84
|
+
export function isValidTextLength(text: string, maxLength?: number): boolean {
|
|
85
|
+
if (!maxLength) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return text.length <= maxLength;
|
|
89
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Empty State Widget Logic
|
|
3
|
+
* Shared data extraction and processing for EMPTY_STATE widget
|
|
4
|
+
* Used by both React and CLI implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { WidgetData } from "../types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Processed empty state data structure
|
|
11
|
+
*/
|
|
12
|
+
export interface ProcessedEmptyState {
|
|
13
|
+
title: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
icon?: string;
|
|
16
|
+
action?: {
|
|
17
|
+
label: string;
|
|
18
|
+
action: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Extract and validate empty state data from WidgetData
|
|
24
|
+
*/
|
|
25
|
+
export function extractEmptyStateData(
|
|
26
|
+
value: WidgetData,
|
|
27
|
+
): ProcessedEmptyState | null {
|
|
28
|
+
// Handle string value directly (simple message)
|
|
29
|
+
if (typeof value === "string") {
|
|
30
|
+
return {
|
|
31
|
+
title: value,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Handle object value with empty state properties
|
|
36
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
37
|
+
const title =
|
|
38
|
+
"title" in value && typeof value.title === "string"
|
|
39
|
+
? value.title
|
|
40
|
+
: "No data";
|
|
41
|
+
const description =
|
|
42
|
+
"description" in value && typeof value.description === "string"
|
|
43
|
+
? value.description
|
|
44
|
+
: undefined;
|
|
45
|
+
const icon =
|
|
46
|
+
"icon" in value && typeof value.icon === "string"
|
|
47
|
+
? value.icon
|
|
48
|
+
: undefined;
|
|
49
|
+
const action =
|
|
50
|
+
"action" in value &&
|
|
51
|
+
typeof value.action === "object" &&
|
|
52
|
+
value.action !== null
|
|
53
|
+
? {
|
|
54
|
+
label:
|
|
55
|
+
"label" in value.action && typeof value.action.label === "string"
|
|
56
|
+
? value.action.label
|
|
57
|
+
: "Action",
|
|
58
|
+
action:
|
|
59
|
+
"action" in value.action &&
|
|
60
|
+
typeof value.action.action === "string"
|
|
61
|
+
? value.action.action
|
|
62
|
+
: "",
|
|
63
|
+
}
|
|
64
|
+
: undefined;
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
title,
|
|
68
|
+
description,
|
|
69
|
+
icon,
|
|
70
|
+
action,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Default empty state
|
|
75
|
+
return {
|
|
76
|
+
title: "No data",
|
|
77
|
+
};
|
|
78
|
+
}
|