@next-vibe/checker 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dist/bin/vibe-runtime.js +26 -22
- package/.dist/bin/vibe-runtime.js.map +5 -5
- package/.dist/oxlint-plugins/i18n.js +4 -0
- package/.dist/oxlint-plugins/i18n.js.map +1 -0
- package/.dist/oxlint-plugins/jsx-capitalization.js +4 -0
- package/.dist/oxlint-plugins/jsx-capitalization.js.map +1 -0
- package/.dist/oxlint-plugins/restricted-syntax.js +4 -0
- package/.dist/oxlint-plugins/restricted-syntax.js.map +1 -0
- package/check.config.ts +4 -12
- package/package.json +2 -9
- package/src/app/api/[locale]/LICENSE +674 -0
- package/src/app/api/[locale]/i18n/de/index.ts +13 -0
- package/src/app/api/[locale]/i18n/en/index.ts +12 -0
- package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
- package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
- package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
- package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
- package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
- package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
- package/src/app/api/[locale]/shared/types/utils.ts +190 -0
- package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
- package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
- package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/index.ts +11 -0
- package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
- package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
- package/src/app/api/[locale]/shared/utils/object.ts +75 -0
- package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
- package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
- package/src/app/api/[locale]/shared/utils/time.ts +53 -0
- package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
- package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
- package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
- package/src/app/api/[locale]/system/builder/enum.ts +78 -0
- package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
- package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
- package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
- package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
- package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
- package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
- package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
- package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
- package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
- package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
- package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
- package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
- package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
- package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
- package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
- package/src/app/api/[locale]/system/builder/route.ts +21 -0
- package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
- package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
- package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
- package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
- package/src/app/api/[locale]/system/check/config/repository.ts +886 -0
- package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
- package/src/app/api/[locale]/system/check/config/types.ts +616 -0
- package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
- package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
- package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
- package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
- package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
- package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
- package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
- package/src/app/api/[locale]/system/check/test-project/bun.lock +532 -0
- package/src/app/api/[locale]/system/check/test-project/check.config.ts +981 -0
- package/src/app/api/[locale]/system/check/test-project/package.json +12 -0
- package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
- package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.json +34 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
- package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
- package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
- package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
- package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
- package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
- package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
- package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
- package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
- package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
- package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
- package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
- package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
- package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
- package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
- package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
- package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
- package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
- package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
- package/src/app/api/[locale]/system/help/definition.ts +445 -0
- package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
- package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
- package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
- package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
- package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
- package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
- package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
- package/src/app/api/[locale]/system/help/list/route.ts +21 -0
- package/src/app/api/[locale]/system/help/repository.ts +212 -0
- package/src/app/api/[locale]/system/help/route.ts +16 -0
- package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
- package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
- package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
- package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
- package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
- package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
- package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
- package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
- package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
- package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
- package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
- package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
- package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
- package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
- package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
- package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
- package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
- package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
- package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
- package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
- package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
- package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
- package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
- package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
- package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
- package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
- package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
- package/src/app/api/[locale]/user/auth/enum.ts +16 -0
- package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
- package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
- package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
- package/src/app/api/[locale]/user/auth/types.ts +110 -0
- package/src/app/api/[locale]/user/enum.ts +64 -0
- package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
- package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
- package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
- package/src/app/api/[locale]/user/types.ts +118 -0
- package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
- package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
- package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
- package/src/app/api/i18n/de/index.ts +6 -0
- package/src/app/api/i18n/en/index.ts +5 -0
- package/src/app/api/i18n/pl/index.ts +5 -0
- package/src/app/i18n/de/index.ts +6 -0
- package/src/app/i18n/en/index.ts +5 -0
- package/src/app/i18n/pl/index.ts +5 -0
|
@@ -0,0 +1,581 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Endpoint Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Clean, DRY endpoint system with complete type inference from the 6 core types.
|
|
5
|
+
* No legacy compatibility - this is the single source of truth.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Complete type inference from Zod schemas
|
|
9
|
+
* - Zero any/unknown types
|
|
10
|
+
* - Strict field enforcement
|
|
11
|
+
* - Production-ready error handling
|
|
12
|
+
* - Support for all 5 interfaces
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { z } from "zod";
|
|
16
|
+
|
|
17
|
+
import { generateSchemaForUsage as generateSchemaFromUtils } from "@/app/api/[locale]/system/unified-interface/shared/field/utils";
|
|
18
|
+
import type {
|
|
19
|
+
ExamplesList,
|
|
20
|
+
ExtractInput,
|
|
21
|
+
ExtractOutput,
|
|
22
|
+
InferSchemaFromField,
|
|
23
|
+
LifecycleActions,
|
|
24
|
+
UnifiedField,
|
|
25
|
+
} from "@/app/api/[locale]/system/unified-interface/shared/types/endpoint";
|
|
26
|
+
import type {
|
|
27
|
+
EndpointErrorTypes,
|
|
28
|
+
Methods,
|
|
29
|
+
} from "@/app/api/[locale]/system/unified-interface/shared/types/enums";
|
|
30
|
+
import { FieldUsage } from "@/app/api/[locale]/system/unified-interface/shared/types/enums";
|
|
31
|
+
import {
|
|
32
|
+
UserRole,
|
|
33
|
+
type UserRoleValue,
|
|
34
|
+
} from "@/app/api/[locale]/user/user-roles/enum";
|
|
35
|
+
import type { CountryLanguage } from "@/i18n/core/config";
|
|
36
|
+
import type { TranslatedKeyType } from "@/i18n/core/scoped-translation";
|
|
37
|
+
import { simpleT } from "@/i18n/core/shared";
|
|
38
|
+
import type { TParams, TranslationKey } from "@/i18n/core/static-types";
|
|
39
|
+
|
|
40
|
+
// Extract schema type directly from field, bypassing complex field structure
|
|
41
|
+
type ExtractSchemaType<F> = F extends { schema: z.ZodType<infer T> }
|
|
42
|
+
? T
|
|
43
|
+
: never;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Options for read (GET) operations at the endpoint level
|
|
47
|
+
* These options will be merged with hook-provided options (hook options take priority)
|
|
48
|
+
*/
|
|
49
|
+
export interface EndpointReadOptions<TRequest, TUrlVariables> {
|
|
50
|
+
/** Form options for query forms (filtering, search, etc.) */
|
|
51
|
+
formOptions?: {
|
|
52
|
+
defaultValues?: Partial<TRequest>;
|
|
53
|
+
persistForm?: boolean;
|
|
54
|
+
persistenceKey?: string;
|
|
55
|
+
autoSubmit?: boolean;
|
|
56
|
+
debounceMs?: number;
|
|
57
|
+
};
|
|
58
|
+
/** Query options for data fetching */
|
|
59
|
+
queryOptions?: {
|
|
60
|
+
enabled?: boolean;
|
|
61
|
+
staleTime?: number;
|
|
62
|
+
cacheTime?: number;
|
|
63
|
+
refetchOnWindowFocus?: boolean;
|
|
64
|
+
disableLocalCache?: boolean;
|
|
65
|
+
cacheDuration?: number;
|
|
66
|
+
deduplicateRequests?: boolean;
|
|
67
|
+
refreshDelay?: number;
|
|
68
|
+
forceRefresh?: boolean;
|
|
69
|
+
backgroundRefresh?: boolean;
|
|
70
|
+
};
|
|
71
|
+
/** URL path parameters for the read endpoint */
|
|
72
|
+
urlPathParams?: TUrlVariables;
|
|
73
|
+
/** Initial state for the form */
|
|
74
|
+
initialState?: Partial<TRequest>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Options for create/update (POST/PUT/PATCH) operations at the endpoint level
|
|
79
|
+
* These options will be merged with hook-provided options (hook options take priority)
|
|
80
|
+
*/
|
|
81
|
+
export interface EndpointCreateOptions<TRequest, TUrlVariables> {
|
|
82
|
+
/** Form options for mutation forms */
|
|
83
|
+
formOptions?: {
|
|
84
|
+
defaultValues?: Partial<TRequest>;
|
|
85
|
+
persistForm?: boolean;
|
|
86
|
+
persistenceKey?: string;
|
|
87
|
+
};
|
|
88
|
+
/** Mutation options for create/update operations */
|
|
89
|
+
mutationOptions?: {
|
|
90
|
+
invalidateQueries?: string[];
|
|
91
|
+
};
|
|
92
|
+
/** URL path parameters for the create endpoint */
|
|
93
|
+
urlPathParams?: TUrlVariables;
|
|
94
|
+
/** Data to auto-prefill the form with */
|
|
95
|
+
autoPrefillData?: Partial<TRequest>;
|
|
96
|
+
/** Initial state for the form */
|
|
97
|
+
initialState?: Partial<TRequest>;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Options for delete (DELETE) operations at the endpoint level
|
|
102
|
+
* These options will be merged with hook-provided options (hook options take priority)
|
|
103
|
+
*/
|
|
104
|
+
export interface EndpointDeleteOptions<TUrlVariables> {
|
|
105
|
+
/** Mutation options for delete operations */
|
|
106
|
+
mutationOptions?: {
|
|
107
|
+
invalidateQueries?: string[];
|
|
108
|
+
};
|
|
109
|
+
/** URL path parameters for the delete endpoint */
|
|
110
|
+
urlPathParams?: TUrlVariables;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Core endpoint definition with complete type inference from TFields:
|
|
115
|
+
* All Input/Output types are automatically inferred from the unified field structure:
|
|
116
|
+
* - TRequestInput/Output: Inferred from fields with FieldUsage.RequestData
|
|
117
|
+
* - TResponseInput/Output: Inferred from fields with FieldUsage.Response
|
|
118
|
+
* - TUrlVariablesInput/Output: Inferred from fields with FieldUsage.RequestUrlParams
|
|
119
|
+
*
|
|
120
|
+
* Features:
|
|
121
|
+
* - Zero any/unknown types - all types are properly inferred from TFields
|
|
122
|
+
* - Strict field enforcement - missing required fields cause TypeScript errors
|
|
123
|
+
* - Complete type safety with proper error handling
|
|
124
|
+
* - Support for all 5 consumption interfaces
|
|
125
|
+
* - Simplified type parameters - only 4 core types needed
|
|
126
|
+
* - Optional scoped translation keys - use TScopedTranslationKey to restrict translation keys to a specific scope
|
|
127
|
+
*
|
|
128
|
+
*/
|
|
129
|
+
export interface ApiEndpoint<
|
|
130
|
+
TExampleKey extends string,
|
|
131
|
+
TMethod extends Methods,
|
|
132
|
+
TUserRoleValue extends readonly UserRoleValue[],
|
|
133
|
+
TScopedTranslationKey extends string = TranslationKey,
|
|
134
|
+
TFields extends UnifiedField<string, z.ZodTypeAny> = UnifiedField<
|
|
135
|
+
TScopedTranslationKey,
|
|
136
|
+
z.ZodTypeAny
|
|
137
|
+
>,
|
|
138
|
+
> {
|
|
139
|
+
// Core endpoint metadata - all required for type safety
|
|
140
|
+
readonly method: TMethod;
|
|
141
|
+
readonly path: readonly string[];
|
|
142
|
+
readonly allowedRoles: TUserRoleValue;
|
|
143
|
+
|
|
144
|
+
// Translation keys use NoInfer to ensure they don't contribute to TScopedTranslationKey inference
|
|
145
|
+
// This makes errors appear on the specific property with the invalid key
|
|
146
|
+
readonly title: NoInfer<TScopedTranslationKey>;
|
|
147
|
+
readonly description: NoInfer<TScopedTranslationKey>;
|
|
148
|
+
readonly category: NoInfer<TScopedTranslationKey>;
|
|
149
|
+
readonly tags: readonly NoInfer<TScopedTranslationKey>[];
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Scoped translation function for this endpoint
|
|
153
|
+
* Required on endpoint instances, but can be auto-generated by createEndpoint
|
|
154
|
+
*/
|
|
155
|
+
readonly scopedTranslation?: {
|
|
156
|
+
readonly ScopedTranslationKey: TScopedTranslationKey;
|
|
157
|
+
readonly scopedT: (locale: CountryLanguage) => {
|
|
158
|
+
t(key: TScopedTranslationKey, params?: TParams): TranslatedKeyType;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
readonly debug?: boolean;
|
|
163
|
+
readonly aliases?: readonly string[];
|
|
164
|
+
readonly cli?: {
|
|
165
|
+
// TODO: use keyof TRequestInput, TResponseInput, TUrlVariablesInput
|
|
166
|
+
firstCliArgKey?: string;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Credit cost for this endpoint (0 = free, undefined = free)
|
|
171
|
+
*/
|
|
172
|
+
readonly credits?: number;
|
|
173
|
+
/** Icon identifier */
|
|
174
|
+
readonly icon: string;
|
|
175
|
+
|
|
176
|
+
// Unified fields for schema generation
|
|
177
|
+
readonly fields: TFields;
|
|
178
|
+
|
|
179
|
+
lifecycle?: LifecycleActions;
|
|
180
|
+
|
|
181
|
+
readonly examples: (ExtractInput<
|
|
182
|
+
InferSchemaFromField<TFields, FieldUsage.RequestData>
|
|
183
|
+
> extends undefined
|
|
184
|
+
? { requests?: undefined }
|
|
185
|
+
: ExtractInput<
|
|
186
|
+
InferSchemaFromField<TFields, FieldUsage.RequestData>
|
|
187
|
+
> extends never
|
|
188
|
+
? {
|
|
189
|
+
requests?: undefined;
|
|
190
|
+
}
|
|
191
|
+
: {
|
|
192
|
+
requests: ExamplesList<
|
|
193
|
+
ExtractInput<InferSchemaFromField<TFields, FieldUsage.RequestData>>,
|
|
194
|
+
TExampleKey
|
|
195
|
+
>;
|
|
196
|
+
}) &
|
|
197
|
+
(ExtractInput<
|
|
198
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
199
|
+
> extends undefined
|
|
200
|
+
? { urlPathParams?: undefined }
|
|
201
|
+
: ExtractInput<
|
|
202
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
203
|
+
> extends never
|
|
204
|
+
? {
|
|
205
|
+
urlPathParams?: undefined;
|
|
206
|
+
}
|
|
207
|
+
: {
|
|
208
|
+
urlPathParams: ExamplesList<
|
|
209
|
+
ExtractInput<
|
|
210
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
211
|
+
>,
|
|
212
|
+
TExampleKey
|
|
213
|
+
>;
|
|
214
|
+
}) &
|
|
215
|
+
(ExtractInput<
|
|
216
|
+
InferSchemaFromField<TFields, FieldUsage.Response>
|
|
217
|
+
> extends undefined
|
|
218
|
+
? { responses?: undefined }
|
|
219
|
+
: ExtractInput<
|
|
220
|
+
InferSchemaFromField<TFields, FieldUsage.Response>
|
|
221
|
+
> extends never
|
|
222
|
+
? {
|
|
223
|
+
responses?: undefined;
|
|
224
|
+
}
|
|
225
|
+
: {
|
|
226
|
+
responses: ExamplesList<
|
|
227
|
+
ExtractInput<InferSchemaFromField<TFields, FieldUsage.Response>>,
|
|
228
|
+
TExampleKey
|
|
229
|
+
>;
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
// Additional configuration - optional
|
|
233
|
+
// readonly config: EndpointConfig;
|
|
234
|
+
|
|
235
|
+
// Error handling configuration - NoInfer ensures errors appear on specific invalid keys
|
|
236
|
+
readonly errorTypes: Record<
|
|
237
|
+
EndpointErrorTypes,
|
|
238
|
+
{
|
|
239
|
+
title: NoInfer<TScopedTranslationKey>;
|
|
240
|
+
description: NoInfer<TScopedTranslationKey>;
|
|
241
|
+
}
|
|
242
|
+
>;
|
|
243
|
+
|
|
244
|
+
// Success handling configuration - NoInfer ensures errors appear on specific invalid keys
|
|
245
|
+
readonly successTypes: {
|
|
246
|
+
title: NoInfer<TScopedTranslationKey>;
|
|
247
|
+
description: NoInfer<TScopedTranslationKey>;
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
// Method-specific options that will be merged with hook-provided options
|
|
251
|
+
// Hook options take priority over endpoint options
|
|
252
|
+
readonly options?: TMethod extends Methods.GET
|
|
253
|
+
? EndpointReadOptions<
|
|
254
|
+
ExtractOutput<InferSchemaFromField<TFields, FieldUsage.RequestData>>,
|
|
255
|
+
ExtractOutput<
|
|
256
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
257
|
+
>
|
|
258
|
+
>
|
|
259
|
+
: TMethod extends Methods.POST | Methods.PUT | Methods.PATCH
|
|
260
|
+
? EndpointCreateOptions<
|
|
261
|
+
ExtractOutput<InferSchemaFromField<TFields, FieldUsage.RequestData>>,
|
|
262
|
+
ExtractOutput<
|
|
263
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
264
|
+
>
|
|
265
|
+
>
|
|
266
|
+
: TMethod extends Methods.DELETE
|
|
267
|
+
? EndpointDeleteOptions<
|
|
268
|
+
ExtractOutput<
|
|
269
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
270
|
+
>
|
|
271
|
+
>
|
|
272
|
+
: never;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// --- COMPILE-TIME TYPE INFERENCE FROM UNIFIED FIELDS ---
|
|
276
|
+
// Ergonomic system that prevents requestData + requestUrlPathParams conflicts
|
|
277
|
+
|
|
278
|
+
// Extract core properties from UnifiedField - handle all the extra properties
|
|
279
|
+
export type ExtractFieldCore<F> = F extends {
|
|
280
|
+
type: "primitive";
|
|
281
|
+
schema: infer Schema;
|
|
282
|
+
usage: infer Usage;
|
|
283
|
+
}
|
|
284
|
+
? { type: "primitive"; schema: Schema; usage: Usage }
|
|
285
|
+
: F extends { type: "object"; children: infer Children }
|
|
286
|
+
? { type: "object"; children: Children }
|
|
287
|
+
: F extends { type: "array"; child: infer Child; usage: infer Usage }
|
|
288
|
+
? { type: "array"; child: Child; usage: Usage }
|
|
289
|
+
: never;
|
|
290
|
+
|
|
291
|
+
// --- MAINTAINABLE SUB-TYPES FOR FIELD INFERENCE ---
|
|
292
|
+
|
|
293
|
+
// Extract field core structure
|
|
294
|
+
type FieldCore<F> = ExtractFieldCore<F>;
|
|
295
|
+
|
|
296
|
+
// Usage checking helpers
|
|
297
|
+
type HasResponseUsage<U> = U extends { response: true } ? true : false;
|
|
298
|
+
type HasRequestDataUsage<U> = U extends { request: "data" } ? true : false;
|
|
299
|
+
type HasRequestUrlParamsUsage<U> = U extends { request: "urlPathParams" }
|
|
300
|
+
? true
|
|
301
|
+
: false;
|
|
302
|
+
|
|
303
|
+
// Direct field type inference that forces evaluation
|
|
304
|
+
export type InferFieldType<F, Usage extends FieldUsage> =
|
|
305
|
+
FieldCore<F> extends { type: "primitive"; usage: infer U }
|
|
306
|
+
? Usage extends FieldUsage.Response
|
|
307
|
+
? HasResponseUsage<U> extends true
|
|
308
|
+
? ExtractSchemaType<F>
|
|
309
|
+
: never
|
|
310
|
+
: Usage extends FieldUsage.RequestData
|
|
311
|
+
? HasRequestDataUsage<U> extends true
|
|
312
|
+
? ExtractSchemaType<F>
|
|
313
|
+
: never
|
|
314
|
+
: Usage extends FieldUsage.RequestUrlParams
|
|
315
|
+
? HasRequestUrlParamsUsage<U> extends true
|
|
316
|
+
? ExtractSchemaType<F>
|
|
317
|
+
: never
|
|
318
|
+
: never
|
|
319
|
+
: FieldCore<F> extends { type: "object"; children: infer C }
|
|
320
|
+
? InferObjectType<C, Usage>
|
|
321
|
+
: FieldCore<F> extends {
|
|
322
|
+
type: "array";
|
|
323
|
+
child: infer Child;
|
|
324
|
+
usage: infer U;
|
|
325
|
+
}
|
|
326
|
+
? Usage extends FieldUsage.Response
|
|
327
|
+
? HasResponseUsage<U> extends true
|
|
328
|
+
? Array<InferFieldType<Child, Usage>>
|
|
329
|
+
: never
|
|
330
|
+
: Usage extends FieldUsage.RequestData
|
|
331
|
+
? HasRequestDataUsage<U> extends true
|
|
332
|
+
? Array<InferFieldType<Child, Usage>>
|
|
333
|
+
: never
|
|
334
|
+
: Usage extends FieldUsage.RequestUrlParams
|
|
335
|
+
? HasRequestUrlParamsUsage<U> extends true
|
|
336
|
+
? Array<InferFieldType<Child, Usage>>
|
|
337
|
+
: never
|
|
338
|
+
: never
|
|
339
|
+
: never;
|
|
340
|
+
|
|
341
|
+
// Fixed object type inference - filter out never fields and remove readonly
|
|
342
|
+
// Uses flexible constraint that accepts both readonly and mutable properties
|
|
343
|
+
type InferObjectType<C, Usage extends FieldUsage> =
|
|
344
|
+
C extends Record<string, UnifiedField<string, z.ZodTypeAny>>
|
|
345
|
+
? {
|
|
346
|
+
-readonly [K in keyof C as InferFieldType<C[K], Usage> extends never
|
|
347
|
+
? never
|
|
348
|
+
: K]: InferFieldType<C[K], Usage>;
|
|
349
|
+
}
|
|
350
|
+
: never;
|
|
351
|
+
|
|
352
|
+
// --- SCHEMA GENERATION FROM UNIFIED FIELDS ---
|
|
353
|
+
// Use the proper generateSchemaForUsage function from utils
|
|
354
|
+
const generateSchemaForUsage = generateSchemaFromUtils;
|
|
355
|
+
|
|
356
|
+
function generateRequestDataSchema<F>(
|
|
357
|
+
field: F,
|
|
358
|
+
): InferSchemaFromField<F, FieldUsage.RequestData> {
|
|
359
|
+
return generateSchemaForUsage<F, FieldUsage.RequestData>(
|
|
360
|
+
field,
|
|
361
|
+
FieldUsage.RequestData,
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
function generateRequestUrlSchema<F>(
|
|
366
|
+
field: F,
|
|
367
|
+
): InferSchemaFromField<F, FieldUsage.RequestUrlParams> {
|
|
368
|
+
return generateSchemaForUsage<F, FieldUsage.RequestUrlParams>(
|
|
369
|
+
field,
|
|
370
|
+
FieldUsage.RequestUrlParams,
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
function generateResponseSchema<F>(
|
|
375
|
+
field: F,
|
|
376
|
+
): InferSchemaFromField<F, FieldUsage.Response> {
|
|
377
|
+
return generateSchemaForUsage<F, FieldUsage.Response>(
|
|
378
|
+
field,
|
|
379
|
+
FieldUsage.Response,
|
|
380
|
+
);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
export type CreateApiEndpoint<
|
|
384
|
+
TExampleKey extends string,
|
|
385
|
+
TMethod extends Methods,
|
|
386
|
+
TUserRoleValue extends readonly UserRoleValue[],
|
|
387
|
+
TScopedTranslationKey extends string,
|
|
388
|
+
TFields extends UnifiedField<string, z.ZodTypeAny>,
|
|
389
|
+
RequestInput = ExtractInput<
|
|
390
|
+
InferSchemaFromField<TFields, FieldUsage.RequestData>
|
|
391
|
+
>,
|
|
392
|
+
RequestOutput = ExtractOutput<
|
|
393
|
+
InferSchemaFromField<TFields, FieldUsage.RequestData>
|
|
394
|
+
>,
|
|
395
|
+
ResponseInput = ExtractInput<
|
|
396
|
+
InferSchemaFromField<TFields, FieldUsage.Response>
|
|
397
|
+
>,
|
|
398
|
+
ResponseOutput = ExtractOutput<
|
|
399
|
+
InferSchemaFromField<TFields, FieldUsage.Response>
|
|
400
|
+
>,
|
|
401
|
+
UrlVariablesInput = ExtractInput<
|
|
402
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
403
|
+
>,
|
|
404
|
+
UrlVariablesOutput = ExtractOutput<
|
|
405
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
406
|
+
>,
|
|
407
|
+
> = ApiEndpoint<
|
|
408
|
+
TExampleKey,
|
|
409
|
+
TMethod,
|
|
410
|
+
TUserRoleValue,
|
|
411
|
+
TScopedTranslationKey,
|
|
412
|
+
TFields
|
|
413
|
+
> & {
|
|
414
|
+
readonly scopedTranslation: {
|
|
415
|
+
readonly ScopedTranslationKey: TScopedTranslationKey;
|
|
416
|
+
readonly scopedT: (locale: CountryLanguage) => {
|
|
417
|
+
t(key: TScopedTranslationKey, params?: TParams): TranslatedKeyType;
|
|
418
|
+
};
|
|
419
|
+
};
|
|
420
|
+
readonly requestSchema: InferSchemaFromField<TFields, FieldUsage.RequestData>;
|
|
421
|
+
readonly requestUrlPathParamsSchema: InferSchemaFromField<
|
|
422
|
+
TFields,
|
|
423
|
+
FieldUsage.RequestUrlParams
|
|
424
|
+
>;
|
|
425
|
+
readonly responseSchema: InferSchemaFromField<TFields, FieldUsage.Response>;
|
|
426
|
+
|
|
427
|
+
readonly requiresAuthentication: () => boolean;
|
|
428
|
+
|
|
429
|
+
readonly types: {
|
|
430
|
+
RequestInput: RequestInput;
|
|
431
|
+
RequestOutput: RequestOutput;
|
|
432
|
+
ResponseInput: ResponseInput;
|
|
433
|
+
ResponseOutput: ResponseOutput;
|
|
434
|
+
UrlVariablesInput: UrlVariablesInput;
|
|
435
|
+
UrlVariablesOutput: UrlVariablesOutput;
|
|
436
|
+
Fields: TFields;
|
|
437
|
+
ExampleKey: TExampleKey;
|
|
438
|
+
Method: TMethod;
|
|
439
|
+
UserRoleValue: TUserRoleValue;
|
|
440
|
+
ScopedTranslationKey: TScopedTranslationKey;
|
|
441
|
+
};
|
|
442
|
+
};
|
|
443
|
+
/**
|
|
444
|
+
* Return type for createEndpoint with full type inference from fields
|
|
445
|
+
*/
|
|
446
|
+
export type CreateEndpointReturnInMethod<
|
|
447
|
+
TExampleKey extends string,
|
|
448
|
+
TMethod extends Methods,
|
|
449
|
+
TUserRoleValue extends readonly UserRoleValue[],
|
|
450
|
+
TScopedTranslationKey extends string,
|
|
451
|
+
TFields extends UnifiedField<string, z.ZodTypeAny>,
|
|
452
|
+
> = {
|
|
453
|
+
readonly [KMethod in TMethod]: CreateApiEndpoint<
|
|
454
|
+
TExampleKey,
|
|
455
|
+
KMethod,
|
|
456
|
+
TUserRoleValue,
|
|
457
|
+
TScopedTranslationKey,
|
|
458
|
+
TFields
|
|
459
|
+
>;
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Create an endpoint definition with perfect type inference from unified fields
|
|
464
|
+
* Returns both legacy format and new destructured format for maximum compatibility
|
|
465
|
+
*
|
|
466
|
+
* Translation key inference:
|
|
467
|
+
* - TScopedTranslationKey is inferred from scopedTranslation.ScopedTranslationKey when provided
|
|
468
|
+
* - Defaults to TranslationKey (global keys) when scopedTranslation is not provided
|
|
469
|
+
*/
|
|
470
|
+
export function createEndpoint<
|
|
471
|
+
const TExampleKey extends string,
|
|
472
|
+
const TMethod extends Methods,
|
|
473
|
+
const TUserRoleValue extends readonly UserRoleValue[],
|
|
474
|
+
const TScopedTranslationKey extends string = TranslationKey,
|
|
475
|
+
TFields extends UnifiedField<string, z.ZodTypeAny> = UnifiedField<
|
|
476
|
+
TScopedTranslationKey,
|
|
477
|
+
z.ZodTypeAny
|
|
478
|
+
>,
|
|
479
|
+
>(
|
|
480
|
+
config: ApiEndpoint<
|
|
481
|
+
TExampleKey,
|
|
482
|
+
TMethod,
|
|
483
|
+
TUserRoleValue,
|
|
484
|
+
TScopedTranslationKey,
|
|
485
|
+
TFields
|
|
486
|
+
>,
|
|
487
|
+
): CreateEndpointReturnInMethod<
|
|
488
|
+
TExampleKey,
|
|
489
|
+
TMethod,
|
|
490
|
+
TUserRoleValue,
|
|
491
|
+
TScopedTranslationKey,
|
|
492
|
+
TFields
|
|
493
|
+
> {
|
|
494
|
+
// Generate schemas from unified fields
|
|
495
|
+
const fields = config.fields;
|
|
496
|
+
const requestSchema = generateRequestDataSchema(fields);
|
|
497
|
+
const responseSchema = generateResponseSchema(fields);
|
|
498
|
+
const requestUrlSchema = generateRequestUrlSchema(fields);
|
|
499
|
+
|
|
500
|
+
function requiresAuthentication(): boolean {
|
|
501
|
+
// Endpoint requires authentication if PUBLIC role is NOT in the allowed roles
|
|
502
|
+
return !config.allowedRoles.includes(UserRole.PUBLIC);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// Default scopedTranslation when none provided - uses global TranslationKey with simpleT
|
|
506
|
+
const defaultScopedTranslation = {
|
|
507
|
+
ScopedTranslationKey: undefined as unknown as TScopedTranslationKey,
|
|
508
|
+
scopedT: (locale: CountryLanguage) => ({
|
|
509
|
+
t: (key: TScopedTranslationKey, params?: TParams) =>
|
|
510
|
+
simpleT(locale).t(key as TranslationKey, params) as TranslatedKeyType,
|
|
511
|
+
}),
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
// Create endpoint with proper type inference - preserve actual schema types for input/output differentiation
|
|
515
|
+
const endpointDefinition: CreateApiEndpoint<
|
|
516
|
+
TExampleKey,
|
|
517
|
+
TMethod,
|
|
518
|
+
TUserRoleValue,
|
|
519
|
+
TScopedTranslationKey,
|
|
520
|
+
TFields
|
|
521
|
+
> = {
|
|
522
|
+
method: config.method,
|
|
523
|
+
path: config.path,
|
|
524
|
+
title: config.title,
|
|
525
|
+
description: config.description,
|
|
526
|
+
category: config.category,
|
|
527
|
+
tags: config.tags,
|
|
528
|
+
fields: fields as typeof config.fields,
|
|
529
|
+
allowedRoles: config.allowedRoles,
|
|
530
|
+
examples: config.examples,
|
|
531
|
+
errorTypes: config.errorTypes,
|
|
532
|
+
successTypes: config.successTypes,
|
|
533
|
+
scopedTranslation: config.scopedTranslation ?? defaultScopedTranslation,
|
|
534
|
+
debug: config.debug,
|
|
535
|
+
aliases: config.aliases,
|
|
536
|
+
cli: config.cli,
|
|
537
|
+
credits: config.credits,
|
|
538
|
+
icon: config.icon,
|
|
539
|
+
options: config.options,
|
|
540
|
+
requestSchema,
|
|
541
|
+
responseSchema,
|
|
542
|
+
requestUrlPathParamsSchema: requestUrlSchema,
|
|
543
|
+
requiresAuthentication,
|
|
544
|
+
types: {
|
|
545
|
+
RequestInput: undefined! as ExtractInput<
|
|
546
|
+
InferSchemaFromField<TFields, FieldUsage.RequestData>
|
|
547
|
+
>,
|
|
548
|
+
RequestOutput: undefined! as ExtractOutput<
|
|
549
|
+
InferSchemaFromField<TFields, FieldUsage.RequestData>
|
|
550
|
+
>,
|
|
551
|
+
ResponseInput: undefined! as ExtractInput<
|
|
552
|
+
InferSchemaFromField<TFields, FieldUsage.Response>
|
|
553
|
+
>,
|
|
554
|
+
ResponseOutput: undefined! as ExtractOutput<
|
|
555
|
+
InferSchemaFromField<TFields, FieldUsage.Response>
|
|
556
|
+
>,
|
|
557
|
+
UrlVariablesInput: undefined! as ExtractInput<
|
|
558
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
559
|
+
>,
|
|
560
|
+
UrlVariablesOutput: undefined! as ExtractOutput<
|
|
561
|
+
InferSchemaFromField<TFields, FieldUsage.RequestUrlParams>
|
|
562
|
+
>,
|
|
563
|
+
Fields: undefined! as TFields,
|
|
564
|
+
ExampleKey: undefined! as TExampleKey,
|
|
565
|
+
Method: undefined! as TMethod,
|
|
566
|
+
UserRoleValue: undefined! as TUserRoleValue,
|
|
567
|
+
ScopedTranslationKey: undefined! as TScopedTranslationKey,
|
|
568
|
+
},
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
// Return the method-keyed object with proper type inference
|
|
572
|
+
return {
|
|
573
|
+
[config.method]: endpointDefinition,
|
|
574
|
+
} as CreateEndpointReturnInMethod<
|
|
575
|
+
TExampleKey,
|
|
576
|
+
TMethod,
|
|
577
|
+
TUserRoleValue,
|
|
578
|
+
TScopedTranslationKey,
|
|
579
|
+
TFields
|
|
580
|
+
>;
|
|
581
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Endpoint to Metadata Converter
|
|
3
|
+
* Shared conversion logic for all platforms
|
|
4
|
+
* Eliminates duplication across MCP, AI, CLI converters
|
|
5
|
+
* Pure logic - no server dependencies
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Convert Zod schema to JSON Schema
|
|
12
|
+
* z.toJSONSchema automatically handles transforms and refinements
|
|
13
|
+
* Post-processes to make fields with defaults optional (not required)
|
|
14
|
+
*/
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
export function zodSchemaToJsonSchema(schema: z.ZodTypeAny): any {
|
|
17
|
+
try {
|
|
18
|
+
// z.toJSONSchema automatically strips transforms and refinements
|
|
19
|
+
// No manual stripping needed
|
|
20
|
+
const jsonSchema = z.toJSONSchema(schema, {
|
|
21
|
+
target: "draft-7",
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Post-process: Remove fields with default values from required array
|
|
25
|
+
// Fields with defaults should be optional in tool schemas
|
|
26
|
+
if (
|
|
27
|
+
jsonSchema &&
|
|
28
|
+
typeof jsonSchema === "object" &&
|
|
29
|
+
jsonSchema.type === "object" &&
|
|
30
|
+
Array.isArray(jsonSchema.required) &&
|
|
31
|
+
jsonSchema.properties &&
|
|
32
|
+
typeof jsonSchema.properties === "object"
|
|
33
|
+
) {
|
|
34
|
+
jsonSchema.required = jsonSchema.required.filter((fieldName: string) => {
|
|
35
|
+
const field = jsonSchema.properties[fieldName];
|
|
36
|
+
// Keep field as required only if it doesn't have a default value
|
|
37
|
+
return !field || !("default" in field);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Remove required array if it's empty
|
|
41
|
+
if (jsonSchema.required.length === 0) {
|
|
42
|
+
delete jsonSchema.required;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return jsonSchema;
|
|
47
|
+
} catch {
|
|
48
|
+
return {
|
|
49
|
+
type: "object",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|