@redocly/realm 0.130.0-next.1 → 0.130.0-next.11
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/CHANGELOG.md +179 -0
- package/dist/bin.js +1 -1
- package/dist/cli/develop.js +1 -1
- package/dist/cli/eject/resolveEjectParams.js +1 -1
- package/dist/cli/prepare/copy-env-files.js +1 -1
- package/dist/cli/stats/collectors/openapi.d.ts +3 -0
- package/dist/cli/stats/collectors/openapi.js +1 -0
- package/dist/cli/stats/index.d.ts +7 -0
- package/dist/cli/stats/index.js +1 -0
- package/dist/cli/stats/options.d.ts +3 -0
- package/dist/cli/stats/options.js +1 -0
- package/dist/cli/telemetry/index.d.ts +2 -2
- package/dist/cli/telemetry/index.js +1 -1
- package/dist/client/ErrorBoundary.js +1 -1
- package/dist/client/app/Sidebar/RequestAccessButton.js +2 -2
- package/dist/client/app/Sidebar/Sidebar.js +2 -2
- package/dist/client/app/hooks/catalog/useCatalogClassic.js +1 -1
- package/dist/client/app/hooks/catalog/useCatalogFilter.js +1 -1
- package/dist/client/app/hooks/catalog/useCatalogViewMode.js +1 -1
- package/dist/client/app/hooks/catalog/useSearchTracker.js +1 -1
- package/dist/client/app/hooks/usePageTimeTracker.js +1 -1
- package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
- package/dist/client/app/hooks/useTelemetry.d.ts +2 -2
- package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
- package/dist/client/app/search/useAiSearch.js +1 -1
- package/dist/client/app/search/useSearch.js +1 -1
- package/dist/client/app/telemetry/index.d.ts +11 -1
- package/dist/client/app/telemetry/index.js +1 -1
- package/dist/client/browser-entry.js +3 -3
- package/dist/constants/common.d.ts +3 -1
- package/dist/constants/common.js +1 -1
- package/dist/constants/l10n/langs/ar.js +1 -1
- package/dist/constants/l10n/langs/de.js +1 -1
- package/dist/constants/l10n/langs/en.js +1 -1
- package/dist/constants/l10n/langs/es.js +1 -1
- package/dist/constants/l10n/langs/fr.js +1 -1
- package/dist/constants/l10n/langs/hi.js +1 -1
- package/dist/constants/l10n/langs/it.js +1 -1
- package/dist/constants/l10n/langs/ja.js +1 -1
- package/dist/constants/l10n/langs/ko.js +1 -1
- package/dist/constants/l10n/langs/pl.js +1 -1
- package/dist/constants/l10n/langs/pt-BR.js +1 -1
- package/dist/constants/l10n/langs/pt.js +1 -1
- package/dist/constants/l10n/langs/ru.js +1 -1
- package/dist/constants/l10n/langs/uk.js +1 -1
- package/dist/constants/l10n/langs/zh.js +1 -1
- package/dist/server/api-routes/execute-api-route.js +1 -1
- package/dist/server/api-routes/run-api-routes-worker.js +1 -1
- package/dist/server/constants/plugins/catalog-entities.d.ts +1 -0
- package/dist/server/constants/plugins/catalog-entities.js +1 -1
- package/dist/server/esbuild/esbuild.js +3 -3
- package/dist/server/fs/cache.js +1 -1
- package/dist/server/node-bundle-entry.js +1 -1
- package/dist/server/persistence/kv/repositories/kv-remote-repository.d.ts +1 -0
- package/dist/server/persistence/kv/repositories/kv-remote-repository.js +2 -1
- package/dist/server/persistence/kv/services/kv-service.js +1 -1
- package/dist/server/plugins/asyncapi-docs/store-definition-bundles.js +1 -1
- package/dist/server/plugins/asyncapi-docs/template/AsyncApiDocs.js +5 -3
- package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +38 -16
- package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.d.ts +8 -0
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.js +1 -0
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.js +1 -1
- package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +27 -0
- package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js +1 -0
- package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.d.ts +36 -0
- package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.js +1 -0
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-bff-repository.d.ts +15 -4
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-bff-repository.js +38 -27
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.d.ts +36 -9
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +37 -21
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +36 -11
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.js +1 -1
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.d.ts +3 -1
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.js +1 -1
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.d.ts +7 -1
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.js +1 -1
- package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.d.ts +2 -5
- package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.js +1 -1
- package/dist/server/plugins/catalog-entities/database/repositories/utils/build-entities-exclusion-filter.d.ts +13 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/build-entities-exclusion-filter.js +1 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/build-rbac-filter.d.ts +31 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/build-rbac-filter.js +9 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.d.ts +34 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.js +13 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/normalize-revision-flags.d.ts +23 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/normalize-revision-flags.js +1 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/semantic-version-sort.d.ts +78 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils/semantic-version-sort.js +34 -0
- package/dist/server/plugins/catalog-entities/entities/validate-entity.d.ts +3 -1
- package/dist/server/plugins/catalog-entities/entities/validate-entity.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +4 -3
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.d.ts +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/fs-entities-extractor.js +1 -1
- package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
- package/dist/server/plugins/catalog-entities/plugin.js +1 -1
- package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +3 -0
- package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
- package/dist/server/plugins/catalog-entities/schemas/dto-schemas.d.ts +15 -1
- package/dist/server/plugins/catalog-entities/schemas/dto-schemas.js +1 -1
- package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.d.ts +1 -0
- package/dist/server/plugins/catalog-entities/types/extractors.d.ts +4 -4
- package/dist/server/plugins/catalog-entities/types/openapi.d.ts +11 -0
- package/dist/server/plugins/catalog-entities/types/openapi.js +0 -0
- package/dist/server/plugins/catalog-entities/types/params.d.ts +6 -0
- package/dist/server/plugins/catalog-entities/types/params.js +0 -0
- package/dist/server/plugins/catalog-entities/utils/ajv-validator.js +1 -1
- package/dist/server/plugins/catalog-entities/utils/catalog-data-collector.js +1 -1
- package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.d.ts +11 -0
- package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.js +1 -0
- package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
- package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
- package/dist/server/plugins/default-theme/index.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.d.ts +54 -0
- package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.js +1 -0
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +7 -13
- package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +9 -6
- package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/search.d.ts +9 -2
- package/dist/server/plugins/mcp/docs-mcp/tools/search.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +2 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
- package/dist/server/plugins/mcp/docs-mcp/tools/whoami.d.ts +9 -2
- package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
- package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
- package/dist/server/plugins/mcp/handlers/errors.js +1 -1
- package/dist/server/plugins/mcp/handlers/handle-mcp-request.d.ts +5 -0
- package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -0
- package/dist/server/plugins/mcp/handlers/mcp-request-handler.d.ts +0 -1
- package/dist/server/plugins/mcp/handlers/mcp-request-handler.js +1 -1
- package/dist/server/plugins/mcp/servers/base-server.js +1 -1
- package/dist/server/plugins/mcp/types.d.ts +40 -0
- package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +3 -0
- package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -0
- package/dist/server/plugins/openapi-docs/index.js +1 -1
- package/dist/server/plugins/openapi-docs/template/OpenAPIDocs.js +8 -4
- package/dist/server/plugins/openapi-docs/template/helpers.d.ts +1 -1
- package/dist/server/plugins/openapi-docs/template/helpers.js +3 -3
- package/dist/server/plugins/scorecard-classic/loaders/scorecard-config.js +1 -1
- package/dist/server/plugins/scorecard-classic/types.d.ts +3 -3
- package/dist/server/plugins/scorecard-classic/types.js +1 -1
- package/dist/server/plugins/scorecards/database/repositories/local/scorecards-config-local-repository.d.ts +12 -0
- package/dist/server/plugins/scorecards/database/repositories/local/scorecards-config-local-repository.js +1 -0
- package/dist/server/plugins/scorecards/database/scorecards-config-service.d.ts +11 -0
- package/dist/server/plugins/scorecards/database/scorecards-config-service.js +1 -0
- package/dist/server/plugins/scorecards/workers/run-scorecards-worker.d.ts +2 -1
- package/dist/server/plugins/scorecards/workers/run-scorecards-worker.js +1 -1
- package/dist/server/plugins/scorecards/workers/scorecards.d.ts +1 -12
- package/dist/server/plugins/scorecards/workers/scorecards.js +1 -1
- package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.js +1 -1
- package/dist/server/plugins/search/documents/search-documents.js +1 -1
- package/dist/server/plugins/search/llmstxt/index.js +4 -4
- package/dist/server/plugins/sso/index.js +1 -1
- package/dist/server/providers/database/base-repository.d.ts +1 -0
- package/dist/server/providers/database/base-repository.js +1 -1
- package/dist/server/providers/database/database-connection-factory.js +1 -1
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/0005_catalog-relations-constraint-fix.sql +2 -0
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/0006_add-catalog-entitities-attributes-table.sql +11 -0
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0005_snapshot.json +393 -0
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0006_snapshot.json +458 -0
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/_journal.json +14 -0
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-attributes-table.d.ts +143 -0
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-attributes-table.js +1 -0
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.js +1 -1
- package/dist/server/providers/database/databases/main-sqlite/migrations/0006_change-scorecards-config-timestamps-field-types.sql +19 -0
- package/dist/server/providers/database/databases/main-sqlite/migrations/meta/0006_snapshot.json +261 -0
- package/dist/server/providers/database/databases/main-sqlite/migrations/meta/_journal.json +7 -0
- package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.d.ts +24 -18
- package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.js +1 -1
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/0007_catalog-relations-constraint-fix.sql +2 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/0008_add-catalog-entitities-attributes-table.sql +11 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0007_snapshot.json +833 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0008_snapshot.json +898 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +14 -0
- package/dist/server/providers/database/pagination/entities-to-filter.d.ts +15 -0
- package/dist/server/providers/database/pagination/entities-to-filter.js +1 -0
- package/dist/server/providers/database/pagination/utils/index.d.ts +4 -0
- package/dist/server/providers/database/pagination/utils/index.js +1 -1
- package/dist/server/providers/database/pagination/utils/is-nested-condition.d.ts +16 -0
- package/dist/server/providers/database/pagination/utils/is-nested-condition.js +1 -0
- package/dist/server/providers/database/pagination/utils/is-simple-condition.d.ts +18 -0
- package/dist/server/providers/database/pagination/utils/is-simple-condition.js +1 -0
- package/dist/server/providers/database/pagination/utils/map-operator.d.ts +10 -0
- package/dist/server/providers/database/pagination/utils/map-operator.js +1 -0
- package/dist/server/providers/database/pagination/utils/transform-condition.d.ts +12 -0
- package/dist/server/providers/database/pagination/utils/transform-condition.js +1 -0
- package/dist/server/ssr/server-side-props/get-server-props-from-user-handler.js +1 -1
- package/dist/server/store.d.ts +3 -1
- package/dist/server/store.js +1 -1
- package/dist/server/tools/notifiers/logger.js +1 -1
- package/dist/server/tools/notifiers/reporter.js +7 -7
- package/dist/server/types/plugins/common.d.ts +3 -1
- package/dist/server/types/plugins/scorecards.d.ts +30 -0
- package/dist/server/types/plugins/scorecards.js +0 -0
- package/dist/server/utils/envs/load-env-variables.d.ts +1 -1
- package/dist/server/utils/envs/load-env-variables.js +1 -1
- package/dist/server/utils/envs/sanitize-branch-name.d.ts +6 -0
- package/dist/server/utils/envs/sanitize-branch-name.js +1 -0
- package/dist/server/utils/lifecycle-hooks.js +1 -1
- package/dist/server/utils/rbac.d.ts +76 -7
- package/dist/server/utils/rbac.js +1 -1
- package/dist/server/utils/time/with-timestamp.d.ts +42 -10
- package/dist/server/utils/time/with-timestamp.js +1 -1
- package/dist/server/web-server/auth.js +3 -3
- package/dist/server/web-server/dev-server.js +1 -1
- package/dist/server/web-server/handle-api-route-request.js +1 -1
- package/dist/server/web-server/middleware/catalogAuthMiddleware.d.ts +4 -6
- package/dist/server/web-server/middleware/catalogAuthMiddleware.js +1 -1
- package/dist/server/web-server/routes/auth.js +1 -1
- package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
- package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
- package/dist/server/web-server/routes/catalog/catalog.js +1 -1
- package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.d.ts +10 -0
- package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.js +1 -0
- package/dist/server/web-server/routes/dynamic-route.js +1 -1
- package/dist/server/web-server/routes/helpers/get-current-rbac-teams.d.ts +3 -0
- package/dist/server/web-server/routes/helpers/get-current-rbac-teams.js +1 -0
- package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.d.ts +11 -0
- package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.js +1 -0
- package/dist/server/web-server/routes/index.js +1 -1
- package/dist/server/web-server/routes/mcp-oauth.js +1 -1
- package/dist/server/web-server/routes/page-data.js +1 -1
- package/dist/server/workers/mcp-tool-worker-pool.d.ts +4 -0
- package/dist/server/workers/mcp-tool-worker-pool.js +1 -0
- package/dist/server/workers/mcp-tool-worker.d.ts +2 -0
- package/dist/server/workers/mcp-tool-worker.js +1 -0
- package/dist/server/workers/types.d.ts +7 -1
- package/dist/utils/env/is-local-development.js +1 -1
- package/package.json +16 -19
- package/dist/server/plugins/mcp/workers/run-api-routes-worker.d.ts +0 -5
- package/dist/server/plugins/mcp/workers/run-api-routes-worker.js +0 -1
- package/dist/server/workers/mcp-worker-pool.d.ts +0 -4
- package/dist/server/workers/mcp-worker-pool.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e={"dev.newApp":"\u65B0\u5E94\u7528\u7A0B\u5E8F","dev.newApp.text":"\u521B\u5EFA\u60A8\u7684\u7B2C\u4E00\u4E2A\u5E94\u7528\u7A0B\u5E8F","dev.sidebar.header":"\u6211\u7684\u5E94\u7528\u7A0B\u5E8F","dev.sidebar.footer.text":"\u65B0\u5E94\u7528\u7A0B\u5E8F","dev.create.app.dialog.appName.placeholder":"\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0","dev.create.app.dialog.appName.error":"\u540D\u79F0\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u5E76\u4E14\u53EA\u80FD\u5305\u542B\uFF1A\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u7A7A\u683C\u3001.\u3001_\u3001-\u3001$\u3001%\u3001#","dev.create.app.dialog.selectAPIs":"\u9009\u62E9 API","dev.create.app.dialog.description":"\u63CF\u8FF0","dev.create.app.dialog.description.placeholder":"\u7A7A","dev.create.app.dialog.create":"\u521B\u5EFA\u5E94\u7528\u7A0B\u5E8F","dev.create.app.dialog.cancel":"\u53D6\u6D88","dev.main.tab.appKeys":"API \u5BC6\u94A5","dev.main.tab.logs":"\u65E5\u5FD7","dev.app.description.title":"\u63CF\u8FF0","dev.edit.description.dialog.title":"\u66F4\u6539\u63CF\u8FF0","dev.edit.description.dialog.save":"\u4FDD\u5B58\u66F4\u6539","dev.edit.description.dialog.cancel":"\u53D6\u6D88","dev.edit.apis.dialog.selectedAPIs":"\u9009\u5B9A\u7684 API","dev.app.key.create":"\u521B\u5EFA\u5BC6\u94A5","dev.create.key.dialog.title":"\u521B\u5EFA\u5BC6\u94A5","dev.create.key.dialog.create":"\u521B\u5EFA\u5BC6\u94A5","dev.create.key.dialog.cancel":"\u53D6\u6D88","dev.app.edit":"\u7F16\u8F91","dev.app.delete":"\u5220\u9664","dev.edit.app.dialog.title":"\u66F4\u6539\u663E\u793A\u540D\u79F0","dev.edit.app.dialog.save":"\u4FDD\u5B58\u66F4\u6539","dev.edit.app.dialog.cancel":"\u53D6\u6D88","dev.delete.app.dialog.title":"\u5220\u9664\u5E94\u7528\u7A0B\u5E8F","dev.delete.app.dialog.confirmation":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u5E94\u7528\u7A0B\u5E8F\u5417\uFF1F","dev.delete.app.dialog.delete":"\u5220\u9664\u5E94\u7528\u7A0B\u5E8F","dev.delete.app.dialog.cancel":"\u53D6\u6D88","dev.app.key.roll":"\u8F6E\u6362 API \u5BC6\u94A5","dev.roll.key.dialog.title":"\u8F6E\u6362 API \u5BC6\u94A5","dev.roll.key.dialog.apiKey":"API key","dev.roll.key.dialog.expires":"\u5230\u671F","dev.roll.key.dialog.confirmation":"\u60A8\u786E\u5B9A\u8981\u8F6E\u6362\u6B64 API \u5BC6\u94A5\u5417\uFF1F","dev.roll.key.dialog.cancel":"\u53D6\u6D88","dev.roll.key.dialog.roll":"\u8F6E\u6362 API \u5BC6\u94A5","dev.update.key.dialog.title":"\u66F4\u65B0\u5BC6\u94A5","dev.update.key.dialog.update":"\u66F4\u65B0\u5BC6\u94A5","dev.update.key.dialog.cancel":"\u53D6\u6D88","dev.app.key.api.name":"API \u540D\u79F0","dev.app.key.api.status":"\u72B6\u6001","dev.app.key.api.edit":"\u7F16\u8F91 API","dev.edit.apis.dialog.title":"\u7F16\u8F91 API","dev.edit.apis.dialog.apiKey":"API key","dev.edit.apis.dialog.save":"\u4FDD\u5B58","dev.edit.apis.dialog.cancel":"\u53D6\u6D88","dev.select.placeholder":"\u7A7A","dev.app.overview.status.pending":"\u5F85\u5904\u7406","dev.app.overview.status.approved":"\u5DF2\u6279\u51C6","dev.app.overview.status.revoked":"\u5DF2\u64A4\u9500","dev.app.overview.status":"\u72B6\u6001","dev.app.overview.non-production":"\u6D4B\u8BD5","dev.app.overview.production":"\u751F\u4EA7","dev.app.overview.clientId":"\u5BC6\u94A5","dev.app.overview.apiKey":"API key","dev.app.key.revoke":"\u64A4\u9500 API \u5BC6\u94A5","dev.revoke.key.dialog.title":"\u64A4\u9500 API \u5BC6\u94A5","dev.revoke.key.dialog.apiKey":"API key","dev.revoke.key.dialog.expires":"\u5230\u671F","dev.revoke.key.dialog.confirmation":"\u60A8\u786E\u5B9A\u8981\u64A4\u9500\u6B64 API \u5BC6\u94A5\u5417\uFF1F","dev.revoke.key.dialog.revoke":"\u64A4\u9500 API \u5BC6\u94A5","dev.revoke.key.dialog.cancel":"\u53D6\u6D88","dev.app.overview.expires":"\u5230\u671F","dev.app.overview.created":"\u5DF2\u521B\u5EFA","dev.app.overview.visibilityToggle.hide":"\u9690\u85CF","dev.app.overview.visibilityToggle.show":"\u663E\u793A","search.loading":"\u52A0\u8F7D\u4E2D...","search.noResults.title":"\u65E0\u7ED3\u679C","search.keys.navigate":"\u5BFC\u822A","search.keys.select":"\u9009\u62E9","search.keys.exit":"\u9000\u51FA","search.searchItem.deprecated":"\u5DF2\u5F03\u7528","search.label":"\u641C\u7D22\u6587\u6863...","search.cancel":"\u53D6\u6D88","search.recent":"\u6700\u8FD1\u641C\u7D22","search.navbar.label":"\u641C\u7D22","search.suggested":"\u5EFA\u8BAE\u9875\u9762","search.groups.all":"\u5168\u90E8","search.showMore":"\u663E\u793A\u66F4\u591A","search.filter.title":"\u9AD8\u7EA7\u7B5B\u9009","search.filter.reset":"\u91CD\u7F6E\u7B5B\u9009","search.filter.field.reset":"\u91CD\u7F6E","search.filter.field.footer":"\u641C\u7D22\u4EE5\u663E\u793A\u66F4\u591A\u9879\u76EE...","search.ai.newConversation":"\u65B0\u5BF9\u8BDD","search.ai.welcomeText":"\u6B22\u8FCE\u4F7F\u7528 AI \u641C\u7D22\uFF01\u60A8\u53EF\u4EE5\u95EE\u6211\u4EFB\u4F55\u95EE\u9898\u3002\u6211\u80FD\u4E3A\u60A8\u63D0\u4F9B\u4EC0\u4E48\u5E2E\u52A9\uFF1F","search.ai.placeholder":"\u63D0\u95EE...","search.ai.back":"\u8FD4\u56DE","search.ai.generatingResponse":"\u6B63\u5728\u751F\u6210\u56DE\u590D...","search.ai.followUpQuestion":"\u63D0\u51FA\u540E\u7EED\u95EE\u9898\uFF1F","search.ai.suggestionsTitle":"\u5EFA\u8BAE","search.ai.thinkingText":"\u601D\u8003\u4E2D...","search.ai.resourcesFound":"\u627E\u5230\u8D44\u6E90","search.ai.resourcesFound.basedOn":"\u57FA\u4E8E","search.ai.resourcesFound.resources":"\u8D44\u6E90","search.ai.feedback.title":"\u60A8\u4E0D\u559C\u6B22\u6B64\u56DE\u590D\u7684\u54EA\u4E9B\u65B9\u9762\uFF1F","search.ai.feedback.detailsPlaceholder":"\u6DFB\u52A0\u5177\u4F53\u7EC6\u8282","search.ai.feedback.thanks":"\u611F\u8C22\u60A8\u7684\u53CD\u9988\uFF01","search.ai.feedback.more":"\u66F4\u591A...","search.ai.label":"\u8BE2\u95EE AI \u52A9\u624B","search.ai.button":"\u4F7F\u7528 AI \u641C\u7D22","search.ai.backToSearch":"\u8FD4\u56DE\u641C\u7D22","search.ai.disclaimer":"AI \u641C\u7D22\u53EF\u80FD\u63D0\u4F9B\u4E0D\u5B8C\u6574\u6216\u4E0D\u6B63\u786E\u7684\u7ED3\u679C\u3002\u8BF7\u6838\u5B9E\u91CD\u8981\u4FE1\u606F\u3002","search.ai.error.description":"\u6211\u4EEC\u5728\u5904\u7406\u60A8\u7684\u641C\u7D22\u65F6\u9047\u5230\u95EE\u9898\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u6216\u4F18\u5316\u60A8\u7684\u67E5\u8BE2\u3002\u5982\u679C\u95EE\u9898\u4ECD\u7136\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB Redocly \u652F\u6301\u3002","search.ai.error.description.forbidden":"AI \u641C\u7D22\u5F53\u524D\u4E0D\u53EF\u7528\u3002","search.ai.error.description.unauthorized":"\u60A8\u65E0\u6743\u4F7F\u7528 AI \u641C\u7D22\u3002","search.ai.error.header":"\u54CE\u5440\uFF01\u51FA\u9519\u4E86\u3002","search.ai.error.header.forbidden":"\u529F\u80FD\u4E0D\u53EF\u7528","search.ai.error.header.unauthorized":"\u9700\u8981\u8EAB\u4EFD\u9A8C\u8BC1","aiAssistant.trigger":"\u8BE2\u95EE AI","toc.header":"\u5728\u672C\u9875","footer.copyrightText":"","page.homeButton":"\u8FD4\u56DE\u9996\u9875","page.forbidden.title":"\u7981\u6B62\u8BBF\u95EE","page.forbidden.description":"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u9875\u9762\u3002\u5982\u679C\u60A8\u8BA4\u4E3A\u8FD9\u662F\u4E00\u4E2A\u9519\u8BEF\uFF0C\u8054\u7CFB\u60A8\u7684\u7BA1\u7406\u5458\u6216\u8FD4\u56DE\u9996\u9875\u3002","page.notFound.title":"\u5185\u5BB9\u4E22\u5931\u4E86...","page.notFound.description":"\u60A8\u5C1D\u8BD5\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u6216\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u3002\u60A8\u53EF\u4EE5\u8FD4\u56DE\u4E0A\u4E00\u9875\u3001\u8FD4\u56DE\u9996\u9875\u6216\u4F7F\u7528\u641C\u7D22\u680F\u67E5\u627E\u6240\u9700\u5185\u5BB9\u3002","page.lastUpdated.timeago":"\u6700\u540E\u66F4\u65B0\u4E8E","page.lastUpdated.on":"\u6700\u540E\u66F4\u65B0\u4E8E","catalog.filters.title":"\u7B5B\u9009\u5668","catalog.filters.add":"\u6DFB\u52A0\u7B5B\u9009\u5668","catalog.filters.placeholder":"\u8F93\u5165\u4EE5\u7B5B\u9009...","catalog.filters.clearAll":"\u6E05\u9664\u6240\u6709\u7B5B\u9009\u5668","catalog.filters.select.addFilter":"\u6DFB\u52A0\u7B5B\u9009\u5668","catalog.filters.select.all":"\u5168\u90E8","catalog.filters.done":"\u5B8C\u6210","filter.dateRange.from":"\u4ECE:","filter.dateRange.to":"\u5230:","sidebar.menu.backLabel":"\u8FD4\u56DE","sidebar.menu.backToLabel":"\u8FD4\u56DE {{value}}","sidebar.actions.show":"\u663E\u793A\u4FA7\u8FB9\u680F","sidebar.actions.hide":"\u9690\u85CF\u4FA7\u8FB9\u680F","sidebar.actions.changeToSingleColumn":"\u5207\u6362\u5230\u5355\u5217","sidebar.actions.changeToTwoColumns":"\u5207\u6362\u5230\u53CC\u5217","sidebar.actions.singleColumn":"\u5355\u5217","sidebar.actions.twoColumns":"\u4E24\u5217","versionPicker.label":"\u7248\u672C\uFF1A","versionPicker.unversioned":"\u6240\u6709\u7248\u672C","codeSnippet.copy.buttonText":"\u5DF2\u590D\u5236\uFF01","codeSnippet.copy.tooltipText":"\u590D\u5236\u5230\u526A\u8D34\u677F","codeSnippet.copy.toasterText":"\u590D\u5236","codeSnippet.expand.tooltipText":"\u5168\u90E8\u5C55\u5F00","codeSnippet.collapse.tooltipText":"\u5168\u90E8\u6298\u53E0","markdown.editPage.text":"\u7F16\u8F91","feedback.settings.comment.submitText":"\u611F\u8C22\u60A8\u5E2E\u52A9\u6539\u8FDB\u6211\u4EEC\u7684\u6587\u6863\uFF01","feedback.settings.comment.label":"\u8BF7\u4E0E\u6211\u4EEC\u5206\u4EAB\u60A8\u7684\u53CD\u9988\u3002","feedback.settings.comment.send":"\u53D1\u9001","feedback.settings.comment.cancel":"\u53D6\u6D88","feedback.settings.comment.satisfiedLabel":"\u6700\u6709\u5E2E\u52A9\u7684\u662F\u4EC0\u4E48\uFF1F","feedback.settings.comment.neutralLabel":"\u6211\u4EEC\u53EF\u4EE5\u6539\u8FDB\u4EC0\u4E48\uFF1F","feedback.settings.comment.dissatisfiedLabel":"\u6211\u4EEC\u53EF\u4EE5\u6539\u8FDB\u4EC0\u4E48\uFF1F","feedback.settings.submitText":"\u611F\u8C22\u60A8\u7684\u53CD\u9988\uFF01","feedback.settings.label":"\u8FD9\u6709\u5E2E\u52A9\u5417\uFF1F","feedback.settings.reasons.label":"\u54EA\u9879\u9648\u8FF0\u63CF\u8FF0\u4E86\u60A8\u5BF9\u6B64\u9875\u9762\u7684\u770B\u6CD5\uFF1F","feedback.submit":"\u63D0\u4EA4","feedback.cancel":"\u53D6\u6D88","feedback.settings.comment.likeLabel":"\u6700\u6709\u5E2E\u52A9\u7684\u662F\u4EC0\u4E48\uFF1F","feedback.settings.comment.dislikeLabel":"\u6211\u4EEC\u53EF\u4EE5\u6539\u8FDB\u4EC0\u4E48\uFF1F","feedback.sentiment.thumbUp":"\u8D5E","feedback.sentiment.thumbDown":"\u8E29","feedback.settings.leftScaleLabel":"\u5B8C\u5168\u6CA1\u6709\u5E2E\u52A9","feedback.settings.rightScaleLabel":"\u975E\u5E38\u6709\u5E2E\u52A9","feedback.settings.optionalEmail.label":"\u60A8\u7684\u7535\u5B50\u90AE\u4EF6\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u8DDF\u8FDB\uFF09","feedback.settings.optionalEmail.placeholder":"yourname@example.com","codeSnippet.report.buttonText":"\u62A5\u544A","codeSnippet.report.tooltipText":"\u62A5\u544A\u95EE\u9898","codeSnippet.report.label":"\u6B64\u4EE3\u7801\u6709\u4EC0\u4E48\u95EE\u9898\uFF1F","userMenu.login":"\u767B\u5F55","userMenu.logout":"\u6CE8\u9500","userMenu.devOnboardingLabel":"\u6211\u7684\u5E94\u7528\u7A0B\u5E8F","mobileMenu.mainMenu":"\u4E3B\u83DC\u5355","mobileMenu.previous":"\u4E0A\u4E00\u6B65","mobileMenu.products":"\u4EA7\u54C1","mobileMenu.version":"\u7248\u672C","page.nextButton":"\u4E0B\u4E00\u9875","page.previousButton":"\u4E0A\u4E00\u9875","page.actions.copyButtonText":"\u590D\u5236","page.actions.copyTitle":"\u4E3A LLM \u590D\u5236","page.actions.copyDescription":"\u5C06\u9875\u9762\u590D\u5236\u4E3A LLM \u7684 Markdown \u683C\u5F0F","page.actions.viewAsMdButtonText":"\u67E5\u770B Markdown","page.actions.viewAsMdTitle":"\u67E5\u770B Markdown","page.actions.viewAsMdDescription":"\u4EE5 Markdown \u683C\u5F0F\u6253\u5F00\u6B64\u9875\u9762","page.actions.chatGptButtonText":"\u5728 ChatGPT \u4E2D\u6253\u5F00","page.actions.chatGptTitle":"\u5728 ChatGPT \u4E2D\u6253\u5F00","page.actions.chatGptDescription":"\u4ECE ChatGPT \u83B7\u53D6\u89C1\u89E3","page.actions.claudeButtonText":"\u5728 Claude \u4E2D\u6253\u5F00","page.actions.claudeTitle":"\u5728 Claude \u4E2D\u6253\u5F00","page.actions.claudeDescription":"\u4ECE Claude \u83B7\u53D6\u89C1\u89E3","page.actions.cursorMcpButtonText":"\u8FDE\u63A5\u5230 Cursor","page.actions.cursorMcpTitle":"\u8FDE\u63A5\u5230 Cursor","page.actions.cursorMcpDescription":"\u5728 Cursor \u4E0A\u5B89\u88C5 MCP \u670D\u52A1\u5668","page.actions.connectMcp":"\u8FDE\u63A5 MCP","page.actions.connectMcp.cursor":"\u8FDE\u63A5\u5230 Cursor","page.actions.connectMcp.cursorDescription":"\u5728 Cursor \u4E0A\u5B89\u88C5 MCP \u670D\u52A1\u5668","page.actions.connectMcp.vscode":"\u8FDE\u63A5\u5230 VS Code","page.actions.connectMcp.vscodeDescription":"\u5728 VS Code \u4E0A\u5B89\u88C5 MCP \u670D\u52A1\u5668","page.actions.connectMcp.copyConfig":"\u590D\u5236 MCP \u914D\u7F6E","page.actions.connectMcp.copyConfigDescription":"\u590D\u5236 MCP JSON \u914D\u7F6E","navbar.products":"\u4EA7\u54C1","openapi.download.description.title":"\u4E0B\u8F7D OpenAPI \u63CF\u8FF0","openapi.info.title":"\u6982\u8FF0","openapi.info.contact.url":"URL","openapi.info.contact.name":"\u7535\u5B50\u90AE\u4EF6","openapi.info.license":"\u8BB8\u53EF\u8BC1","openapi.info.termsOfService":"\u670D\u52A1\u6761\u6B3E","openapi.info.metadata.title":"\u5143\u6570\u636E","openapi.key":"\u952E","openapi.value":"\u503C","openapi.enum":"\u679A\u4E3E","openapi.items":"\u9879","openapi.default":"\u9ED8\u8BA4\u503C","openapi.variable":"\u53D8\u91CF","openapi.variables":"\u53D8\u91CF","openapi.actions.show":"\u663E\u793A","openapi.actions.hide":"\u9690\u85CF","openapi.actions.more":"\u66F4\u591A","openapi.languages.title":"\u8BED\u8A00","openapi.servers.title":"\u670D\u52A1\u5668","openapi.operations":"\u64CD\u4F5C","openapi.webhooks":"Webhook","openapi.description":"\u63CF\u8FF0","openapi.badges.deprecated":"\u5DF2\u5F03\u7528","openapi.badges.required":"\u5FC5\u9700","openapi.badges.webhook":"Webhook","openapi.request":"\u8BF7\u6C42","openapi.path":"\u8DEF\u5F84","openapi.query":"\u67E5\u8BE2","openapi.cookie":"Cookie","openapi.header":"\u6807\u5934","openapi.body":"\u6B63\u6587","openapi.responses":"\u54CD\u5E94","openapi.response":"\u54CD\u5E94","openapi.callbacks":"\u56DE\u8C03","openapi.callbackRequest":"\u56DE\u8C03\u8BF7\u6C42","openapi.callbackResponse":"\u56DE\u8C03\u54CD\u5E94","openapi.payload":"\u8BF7\u6C42\u4F53","openapi.discriminator":"\u9274\u522B\u5668","openapi.contentType":"\u5185\u5BB9\u7C7B\u578B","openapi.tryIt":"\u8BD5\u7528","openapi.loading":"\u52A0\u8F7D\u4E2D...","openapi.example":"\u793A\u4F8B","openapi.examples":"\u793A\u4F8B","openapi.additionalProperties":"\u9644\u52A0\u5C5E\u6027","openapi.patternProperties":"\u6A21\u5F0F\u5C5E\u6027","openapi.required":"\u5FC5\u9700","openapi.recursive":"\u9012\u5F52","openapi.complex":"\u590D\u6742","openapi.hideExample":"\u9690\u85CF\u793A\u4F8B","openapi.showExample":"\u663E\u793A\u793A\u4F8B","openapi.expandAll":"\u5168\u90E8\u5C55\u5F00","openapi.collapseAll":"\u5168\u90E8\u6298\u53E0","openapi.viewSecurityDetails":"\u67E5\u770B\u5B89\u5168\u8BE6\u60C5","openapi.noResponseExample":"\u65E0\u54CD\u5E94\u793A\u4F8B","openapi.discriminator.searchPlaceholder":"\u641C\u7D22\u9879\u76EE","openapi.discriminator.searchNoResults":"\u672A\u627E\u5230\u9879\u76EE","openapi.discriminator.defaultMapping":"\u9ED8\u8BA4\u6620\u5C04","openapi.discriminator.defaultMappingTooltip":"OpenAPI 3.2\uFF1A\u5F53\u5176\u4ED6\u6620\u5C04\u4E0D\u5339\u914D\u65F6\u4F7F\u7528\u9ED8\u8BA4\u6620\u5C04\u3002","openapi.noResponseContent":"\u65E0\u5185\u5BB9","openapi.noRequestPayload":"\u65E0\u8BF7\u6C42\u6709\u6548\u8D1F\u8F7D","openapi.hidePattern":"\u9690\u85CF\u6A21\u5F0F","openapi.showPattern":"\u663E\u793A\u6A21\u5F0F","openapi.authorizationUrl":"\u6388\u6743 URL","openapi.tokenUrl":"\u4EE4\u724C URL","openapi.refreshUrl":"\u5237\u65B0 URL","openapi.showOptionalScopes":"\u663E\u793A\u53EF\u9009\u8303\u56F4","openapi.hideOptionalScopes":"\u9690\u85CF\u53EF\u9009\u8303\u56F4","openapi.security":"\u5B89\u5168","openapi.httpAuthorizationScheme":"HTTP \u6388\u6743\u65B9\u6848","openapi.bearerFormat":"Bearer \u683C\u5F0F","openapi.parameterName":"\u53C2\u6570\u540D\u79F0","openapi.flowType":"\u6D41\u7C7B\u578B","openapi.connectUrl":"\u8FDE\u63A5 URL","openapi.requiredScopes":"\u5FC5\u9700\u8303\u56F4","openapi.unsupportedLanguage":"\u4E0D\u652F\u6301\u8BE5\u8BED\u8A00\u3002","openapi.failedToGenerateCodeSample":"\u65E0\u6CD5\u751F\u6210\u4EE3\u7801\u793A\u4F8B\u3002","openapi.schemaCatalogLink.title":"\u5171\u4EAB\u67B6\u6784","openapi.schemaCatalogLink.copyButtonTooltip":"\u590D\u5236\u5230\u526A\u8D34\u677F","openapi.schemaCatalogLink.copiedTooltip":"\u5DF2\u590D\u5236\uFF01","openapi.mcp.title":"MCP server","openapi.mcp.endpoint":"Endpoint","openapi.mcp.tools":"MCP \u5DE5\u5177","openapi.mcp.protocolVersion":"\u534F\u8BAE\u7248\u672C","openapi.mcp.capabilities":"\u80FD\u529B","openapi.mcp.experimentalCapabilities":"\u5B9E\u9A8C\u6027\u80FD\u529B","openapi.mcp.inputSchema":"\u8F93\u5165\u67B6\u6784","openapi.mcp.inputExample":"\u8F93\u5165\u793A\u4F8B","openapi.mcp.outputSchema":"\u8F93\u51FA\u67B6\u6784","openapi.mcp.outputExample":"\u8F93\u51FA\u793A\u4F8B","asyncapi.download.description.title":"\u4E0B\u8F7D AsyncAPI \u63CF\u8FF0","asyncapi.info.title":"\u6982\u8FF0","graphql.download.description.title":"\u4E0B\u8F7D GraphQL \u67B6\u6784","graphql.info.title":"\u6982\u8FF0","graphql.info.contact.url":"URL","graphql.info.contact.name":"\u7535\u5B50\u90AE\u4EF6","graphql.info.license":"\u8BB8\u53EF\u8BC1","graphql.info.termsOfService":"\u670D\u52A1\u6761\u6B3E","graphql.overview":"GraphQL \u6982\u8FF0","graphql.metadata":"\u5143\u6570\u636E","graphql.key":"\u952E","graphql.value":"\u503C","graphql.queries":"\u67E5\u8BE2","graphql.mutations":"\u53D8\u66F4","graphql.subscriptions":"\u8BA2\u9605","graphql.directives":"\u6307\u4EE4","graphql.objects":"\u5BF9\u8C61","graphql.interfaces":"\u63A5\u53E3","graphql.unions":"\u8054\u5408","graphql.enums":"\u679A\u4E3E","graphql.inputs":"\u8F93\u5165","graphql.scalars":"\u6807\u91CF","graphql.arguments.label":"\u53C2\u6570","graphql.arguments.show":"\u663E\u793A\u53C2\u6570","graphql.arguments.hide":"\u9690\u85CF\u53C2\u6570","graphql.arguments.here":"\u53C2\u6570\u5728\u6B64","graphql.returnTypes.label":"\u7ED3\u679C\u7C7B\u578B","graphql.returnTypes.show":"\u663E\u793A\u7ED3\u679C\u7C7B\u578B","graphql.returnTypes.hide":"\u9690\u85CF\u7ED3\u679C\u7C7B\u578B","graphql.possibleTypes":"\u53EF\u80FD\u7684\u7C7B\u578B","graphql.defaultValue":"\u9ED8\u8BA4\u503C","graphql.deprecationReason":"\u5F03\u7528\u539F\u56E0","graphql.requiredScopes":"\u5FC5\u9700\u8303\u56F4","graphql.viewSecurityDetails":"\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F","graphql.objectScopes":"\u5BF9\u8C61\u8303\u56F4","graphql.fieldScopes":"\u5B57\u6BB5\u8303\u56F4","graphql.implementedInterfaces":"\u5B9E\u73B0\u7684\u63A5\u53E3","graphql.nonNull":"\u975E\u7A7A","graphql.required":"\u5FC5\u9700","graphql.deprecated":"\u5DF2\u5F03\u7528","graphql.variables":"\u53D8\u91CF","graphql.querySample":"\u67E5\u8BE2\u793A\u4F8B","graphql.mutationSample":"\u53D8\u66F4\u793A\u4F8B","graphql.subscriptionSample":"\u8BA2\u9605\u793A\u4F8B","graphql.responseSample":"\u54CD\u5E94\u793A\u4F8B","graphql.locations":"\u4F4D\u7F6E","graphql.sample":"\u793A\u4F8B","graphql.referenced":"\u5F15\u7528\u4F4D\u7F6E","graphql.content.fragment":"\u7247\u6BB5","codeWalkthrough.preview":"\u9884\u89C8","codeWalkthrough.download":"\u4E0B\u8F7D","time.justNow":"\u521A\u624D","time.past.second":"1 \u79D2\u524D","time.past.seconds":"{{value}} \u79D2\u524D","time.past.minute":"1 \u5206\u949F\u524D","time.past.minutes":"{{value}} \u5206\u949F\u524D","time.past.hour":"1 \u5C0F\u65F6\u524D","time.past.hours":"{{value}} \u5C0F\u65F6\u524D","time.past.day":"1 \u5929\u524D","time.past.days":"{{value}} \u5929\u524D","time.past.week":"1 \u5468\u524D","time.past.weeks":"{{value}} \u5468\u524D","time.past.month":"1 \u4E2A\u6708\u524D","time.past.months":"{{value}} \u4E2A\u6708\u524D","time.past.year":"1 \u5E74\u524D","time.past.years":"{{value}} \u5E74\u524D","page.internalServerError.title":"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF","page.internalServerError.description":"\u6211\u4EEC\u7684\u670D\u52A1\u5668\u51FA\u9519\u4E86\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\uFF0C\u5982\u679C\u95EE\u9898\u4ECD\u7136\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458\u3002","page.skipToContent.label":"\u8DF3\u8F6C\u5230\u5185\u5BB9","catalog.catalogs.label":"\u76EE\u5F55","catalog.catalogs.all.title":"\u5168\u90E8","catalog.catalogs.all.description":"\u6240\u6709\u5B9E\u4F53","catalog.catalogs.all.switcherLabel":"\u5168\u90E8","catalog.catalogs.service.title":"\u670D\u52A1","catalog.catalogs.service.description":"\u670D\u52A1\u5B9E\u4F53","catalog.catalogs.service.switcherLabel":"\u670D\u52A1","catalog.catalogs.user.title":"\u7528\u6237","catalog.catalogs.user.description":"\u7528\u6237\u5B9E\u4F53","catalog.catalogs.user.switcherLabel":"\u7528\u6237","catalog.catalogs.team.title":"\u56E2\u961F","catalog.catalogs.team.description":"\u56E2\u961F\u5B9E\u4F53","catalog.catalogs.team.switcherLabel":"\u56E2\u961F","catalog.catalogs.domain.title":"\u57DF","catalog.catalogs.domain.description":"\u57DF\u5B9E\u4F53","catalog.catalogs.domain.switcherLabel":"\u57DF","catalog.catalogs.apiDescription.title":"API \u63CF\u8FF0","catalog.catalogs.apiDescription.description":"API \u63CF\u8FF0\u5B9E\u4F53","catalog.catalogs.apiDescription.switcherLabel":"API \u63CF\u8FF0","catalog.catalogs.dataSchema.title":"\u6570\u636E\u6A21\u5F0F","catalog.catalogs.dataSchema.description":"\u6570\u636E\u6A21\u5F0F\u5B9E\u4F53","catalog.catalogs.dataSchema.switcherLabel":"\u6570\u636E\u6A21\u5F0F","catalog.catalogs.apiOperation.title":"API \u64CD\u4F5C","catalog.catalogs.apiOperation.description":"API \u64CD\u4F5C\u5B9E\u4F53","catalog.catalogs.apiOperation.switcherLabel":"API \u64CD\u4F5C","catalog.entity.metadata.title":"\u5143\u6570\u636E","catalog.entity.schema.title":"\u6A21\u5F0F","catalog.entity.properties.apiDescription.title":"API \u63CF\u8FF0","catalog.backToAllLabel":"\u76EE\u5F55","catalog.tags.label":"\u6807\u7B7E","catalog.tags.more":"\u66F4\u591A","catalog.owners.label":"\u6240\u6709\u8005","catalog.repositories.label":"\u4ED3\u5E93","catalog.email.label":"\u7535\u5B50\u90AE\u4EF6","catalog.format.label":"\u683C\u5F0F","catalog.entityType.label":"\u5B9E\u4F53\u7C7B\u578B","catalog.domains.label":"\u57DF","catalog.contact.label":"Slack \u9891\u9053","catalog.methodAndPath.label":"\u65B9\u6CD5\u548C\u8DEF\u5F84","catalog.links.label":"\u94FE\u63A5","catalog.metadata.domains":"\u57DF:","catalog.metadata.owners":"\u6240\u6709\u8005:","catalog.sort":"\u6392\u5E8F","catalog.history.button.label":"\u7248\u672C\u5386\u53F2","catalog.history.sidebar.title":"\u7248\u672C\u5386\u53F2","catalog.history.sidebar.close":"\u5173\u95ED\u7248\u672C\u5386\u53F2","catalog.history.version.label":"\u7248\u672C","catalog.history.version.notSpecified":"\u672A\u6307\u5B9A","catalog.history.version.default":"\u9ED8\u8BA4","catalog.history.revisions.limitMessage":"\u4E0D\u5B58\u50A8\u8F83\u65E7\u7684\u4FEE\u8BA2\u7248\u672C\u3002","catalog.history.revision.current":"\u5F53\u524D","catalog.history.revisions.showLess":"\u663E\u793A\u66F4\u5C11","catalog.history.revisions.showMore":"\u663E\u793A\u66F4\u591A{{count}}\u9879","select.noResults":"\u65E0\u7ED3\u679C","loaders.loading":"\u52A0\u8F7D\u4E2D..."};export{e as zh};
|
|
1
|
+
const e={"dev.newApp":"\u65B0\u5E94\u7528\u7A0B\u5E8F","dev.newApp.text":"\u521B\u5EFA\u60A8\u7684\u7B2C\u4E00\u4E2A\u5E94\u7528\u7A0B\u5E8F","dev.sidebar.header":"\u6211\u7684\u5E94\u7528\u7A0B\u5E8F","dev.sidebar.footer.text":"\u65B0\u5E94\u7528\u7A0B\u5E8F","dev.create.app.dialog.appName.placeholder":"\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0","dev.create.app.dialog.appName.error":"\u540D\u79F0\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u5E76\u4E14\u53EA\u80FD\u5305\u542B\uFF1A\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u7A7A\u683C\u3001.\u3001_\u3001-\u3001$\u3001%\u3001#","dev.create.app.dialog.selectAPIs":"\u9009\u62E9 API","dev.create.app.dialog.description":"\u63CF\u8FF0","dev.create.app.dialog.description.placeholder":"\u7A7A","dev.create.app.dialog.create":"\u521B\u5EFA\u5E94\u7528\u7A0B\u5E8F","dev.create.app.dialog.cancel":"\u53D6\u6D88","dev.main.tab.appKeys":"API \u5BC6\u94A5","dev.main.tab.logs":"\u65E5\u5FD7","dev.app.description.title":"\u63CF\u8FF0","dev.edit.description.dialog.title":"\u66F4\u6539\u63CF\u8FF0","dev.edit.description.dialog.save":"\u4FDD\u5B58\u66F4\u6539","dev.edit.description.dialog.cancel":"\u53D6\u6D88","dev.edit.apis.dialog.selectedAPIs":"\u9009\u5B9A\u7684 API","dev.app.key.create":"\u521B\u5EFA\u5BC6\u94A5","dev.create.key.dialog.title":"\u521B\u5EFA\u5BC6\u94A5","dev.create.key.dialog.create":"\u521B\u5EFA\u5BC6\u94A5","dev.create.key.dialog.cancel":"\u53D6\u6D88","dev.app.edit":"\u7F16\u8F91","dev.app.delete":"\u5220\u9664","dev.edit.app.dialog.title":"\u66F4\u6539\u663E\u793A\u540D\u79F0","dev.edit.app.dialog.save":"\u4FDD\u5B58\u66F4\u6539","dev.edit.app.dialog.cancel":"\u53D6\u6D88","dev.delete.app.dialog.title":"\u5220\u9664\u5E94\u7528\u7A0B\u5E8F","dev.delete.app.dialog.confirmation":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u5E94\u7528\u7A0B\u5E8F\u5417\uFF1F","dev.delete.app.dialog.delete":"\u5220\u9664\u5E94\u7528\u7A0B\u5E8F","dev.delete.app.dialog.cancel":"\u53D6\u6D88","dev.app.key.roll":"\u8F6E\u6362 API \u5BC6\u94A5","dev.roll.key.dialog.title":"\u8F6E\u6362 API \u5BC6\u94A5","dev.roll.key.dialog.apiKey":"API key","dev.roll.key.dialog.expires":"\u5230\u671F","dev.roll.key.dialog.confirmation":"\u60A8\u786E\u5B9A\u8981\u8F6E\u6362\u6B64 API \u5BC6\u94A5\u5417\uFF1F","dev.roll.key.dialog.cancel":"\u53D6\u6D88","dev.roll.key.dialog.roll":"\u8F6E\u6362 API \u5BC6\u94A5","dev.update.key.dialog.title":"\u66F4\u65B0\u5BC6\u94A5","dev.update.key.dialog.update":"\u66F4\u65B0\u5BC6\u94A5","dev.update.key.dialog.cancel":"\u53D6\u6D88","dev.app.key.api.name":"API \u540D\u79F0","dev.app.key.api.status":"\u72B6\u6001","dev.app.key.api.edit":"\u7F16\u8F91 API","dev.edit.apis.dialog.title":"\u7F16\u8F91 API","dev.edit.apis.dialog.apiKey":"API key","dev.edit.apis.dialog.save":"\u4FDD\u5B58","dev.edit.apis.dialog.cancel":"\u53D6\u6D88","dev.select.placeholder":"\u7A7A","dev.app.overview.status.pending":"\u5F85\u5904\u7406","dev.app.overview.status.approved":"\u5DF2\u6279\u51C6","dev.app.overview.status.revoked":"\u5DF2\u64A4\u9500","dev.app.overview.status":"\u72B6\u6001","dev.app.overview.non-production":"\u6D4B\u8BD5","dev.app.overview.production":"\u751F\u4EA7","dev.app.overview.clientId":"\u5BC6\u94A5","dev.app.overview.apiKey":"API key","dev.app.key.revoke":"\u64A4\u9500 API \u5BC6\u94A5","dev.revoke.key.dialog.title":"\u64A4\u9500 API \u5BC6\u94A5","dev.revoke.key.dialog.apiKey":"API key","dev.revoke.key.dialog.expires":"\u5230\u671F","dev.revoke.key.dialog.confirmation":"\u60A8\u786E\u5B9A\u8981\u64A4\u9500\u6B64 API \u5BC6\u94A5\u5417\uFF1F","dev.revoke.key.dialog.revoke":"\u64A4\u9500 API \u5BC6\u94A5","dev.revoke.key.dialog.cancel":"\u53D6\u6D88","dev.app.overview.expires":"\u5230\u671F","dev.app.overview.created":"\u5DF2\u521B\u5EFA","dev.app.overview.visibilityToggle.hide":"\u9690\u85CF","dev.app.overview.visibilityToggle.show":"\u663E\u793A","search.loading":"\u52A0\u8F7D\u4E2D...","search.noResults.title":"\u65E0\u7ED3\u679C","search.keys.navigate":"\u5BFC\u822A","search.keys.select":"\u9009\u62E9","search.keys.exit":"\u9000\u51FA","search.searchItem.deprecated":"\u5DF2\u5F03\u7528","search.label":"\u641C\u7D22\u6587\u6863...","search.cancel":"\u53D6\u6D88","search.recent":"\u6700\u8FD1\u641C\u7D22","search.navbar.label":"\u641C\u7D22","search.suggested":"\u5EFA\u8BAE\u9875\u9762","search.groups.all":"\u5168\u90E8","search.showMore":"\u663E\u793A\u66F4\u591A","search.filter.title":"\u9AD8\u7EA7\u7B5B\u9009","search.filter.reset":"\u91CD\u7F6E\u7B5B\u9009","search.filter.field.reset":"\u91CD\u7F6E","search.filter.field.footer":"\u641C\u7D22\u4EE5\u663E\u793A\u66F4\u591A\u9879\u76EE...","search.ai.newConversation":"\u65B0\u5BF9\u8BDD","search.ai.welcomeText":"\u6B22\u8FCE\u4F7F\u7528 AI \u641C\u7D22\uFF01\u60A8\u53EF\u4EE5\u95EE\u6211\u4EFB\u4F55\u95EE\u9898\u3002\u6211\u80FD\u4E3A\u60A8\u63D0\u4F9B\u4EC0\u4E48\u5E2E\u52A9\uFF1F","search.ai.placeholder":"\u63D0\u95EE...","search.ai.back":"\u8FD4\u56DE","search.ai.generatingResponse":"\u6B63\u5728\u751F\u6210\u56DE\u590D...","search.ai.followUpQuestion":"\u63D0\u51FA\u540E\u7EED\u95EE\u9898\uFF1F","search.ai.suggestionsTitle":"\u5EFA\u8BAE","search.ai.thinkingText":"\u601D\u8003\u4E2D...","search.ai.resourcesFound":"\u627E\u5230\u8D44\u6E90","search.ai.resourcesFound.basedOn":"\u57FA\u4E8E","search.ai.resourcesFound.resources":"\u8D44\u6E90","search.ai.feedback.title":"\u60A8\u4E0D\u559C\u6B22\u6B64\u56DE\u590D\u7684\u54EA\u4E9B\u65B9\u9762\uFF1F","search.ai.feedback.detailsPlaceholder":"\u6DFB\u52A0\u5177\u4F53\u7EC6\u8282","search.ai.feedback.thanks":"\u611F\u8C22\u60A8\u7684\u53CD\u9988\uFF01","search.ai.feedback.more":"\u66F4\u591A...","search.ai.label":"\u8BE2\u95EE AI \u52A9\u624B","search.ai.button":"\u4F7F\u7528 AI \u641C\u7D22","search.ai.backToSearch":"\u8FD4\u56DE\u641C\u7D22","search.ai.assistant":"\u52A9\u624B","search.ai.disclaimer":"AI \u641C\u7D22\u53EF\u80FD\u63D0\u4F9B\u4E0D\u5B8C\u6574\u6216\u4E0D\u6B63\u786E\u7684\u7ED3\u679C\u3002\u8BF7\u6838\u5B9E\u91CD\u8981\u4FE1\u606F\u3002","search.ai.error.description":"\u6211\u4EEC\u5728\u5904\u7406\u60A8\u7684\u641C\u7D22\u65F6\u9047\u5230\u95EE\u9898\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u6216\u4F18\u5316\u60A8\u7684\u67E5\u8BE2\u3002\u5982\u679C\u95EE\u9898\u4ECD\u7136\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB Redocly \u652F\u6301\u3002","search.ai.error.description.forbidden":"AI \u641C\u7D22\u5F53\u524D\u4E0D\u53EF\u7528\u3002","search.ai.error.description.unauthorized":"\u60A8\u65E0\u6743\u4F7F\u7528 AI \u641C\u7D22\u3002","search.ai.error.header":"\u54CE\u5440\uFF01\u51FA\u9519\u4E86\u3002","search.ai.error.header.forbidden":"\u529F\u80FD\u4E0D\u53EF\u7528","search.ai.error.header.unauthorized":"\u9700\u8981\u8EAB\u4EFD\u9A8C\u8BC1","aiAssistant.trigger":"\u8BE2\u95EE AI","toc.header":"\u5728\u672C\u9875","footer.copyrightText":"","page.homeButton":"\u8FD4\u56DE\u9996\u9875","page.forbidden.title":"\u7981\u6B62\u8BBF\u95EE","page.forbidden.description":"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u9875\u9762\u3002\u5982\u679C\u60A8\u8BA4\u4E3A\u8FD9\u662F\u4E00\u4E2A\u9519\u8BEF\uFF0C\u8054\u7CFB\u60A8\u7684\u7BA1\u7406\u5458\u6216\u8FD4\u56DE\u9996\u9875\u3002","page.notFound.title":"\u5185\u5BB9\u4E22\u5931\u4E86...","page.notFound.description":"\u60A8\u5C1D\u8BD5\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u6216\u53EF\u80FD\u5DF2\u88AB\u79FB\u52A8\u3002\u60A8\u53EF\u4EE5\u8FD4\u56DE\u4E0A\u4E00\u9875\u3001\u8FD4\u56DE\u9996\u9875\u6216\u4F7F\u7528\u641C\u7D22\u680F\u67E5\u627E\u6240\u9700\u5185\u5BB9\u3002","page.lastUpdated.timeago":"\u6700\u540E\u66F4\u65B0\u4E8E","page.lastUpdated.on":"\u6700\u540E\u66F4\u65B0\u4E8E","catalog.filters.title":"\u7B5B\u9009\u5668","catalog.filters.add":"\u6DFB\u52A0\u7B5B\u9009\u5668","catalog.filters.placeholder":"\u8F93\u5165\u4EE5\u7B5B\u9009...","catalog.filters.clearAll":"\u6E05\u9664\u6240\u6709\u7B5B\u9009\u5668","catalog.filters.select.addFilter":"\u6DFB\u52A0\u7B5B\u9009\u5668","catalog.filters.select.all":"\u5168\u90E8","catalog.filters.done":"\u5B8C\u6210","filter.dateRange.from":"\u4ECE:","filter.dateRange.to":"\u5230:","sidebar.menu.backLabel":"\u8FD4\u56DE","sidebar.menu.backToLabel":"\u8FD4\u56DE {{value}}","sidebar.actions.show":"\u663E\u793A\u4FA7\u8FB9\u680F","sidebar.actions.hide":"\u9690\u85CF\u4FA7\u8FB9\u680F","sidebar.actions.changeToSingleColumn":"\u5207\u6362\u5230\u5355\u5217","sidebar.actions.changeToTwoColumns":"\u5207\u6362\u5230\u53CC\u5217","sidebar.actions.singleColumn":"\u5355\u5217","sidebar.actions.twoColumns":"\u4E24\u5217","versionPicker.label":"\u7248\u672C\uFF1A","versionPicker.unversioned":"\u6240\u6709\u7248\u672C","codeSnippet.copy.buttonText":"\u5DF2\u590D\u5236\uFF01","codeSnippet.copy.tooltipText":"\u590D\u5236\u5230\u526A\u8D34\u677F","codeSnippet.copy.toasterText":"\u590D\u5236","codeSnippet.expand.tooltipText":"\u5168\u90E8\u5C55\u5F00","codeSnippet.collapse.tooltipText":"\u5168\u90E8\u6298\u53E0","markdown.editPage.text":"\u7F16\u8F91","feedback.settings.comment.submitText":"\u611F\u8C22\u60A8\u5E2E\u52A9\u6539\u8FDB\u6211\u4EEC\u7684\u6587\u6863\uFF01","feedback.settings.comment.label":"\u8BF7\u4E0E\u6211\u4EEC\u5206\u4EAB\u60A8\u7684\u53CD\u9988\u3002","feedback.settings.comment.send":"\u53D1\u9001","feedback.settings.comment.cancel":"\u53D6\u6D88","feedback.settings.comment.satisfiedLabel":"\u6700\u6709\u5E2E\u52A9\u7684\u662F\u4EC0\u4E48\uFF1F","feedback.settings.comment.neutralLabel":"\u6211\u4EEC\u53EF\u4EE5\u6539\u8FDB\u4EC0\u4E48\uFF1F","feedback.settings.comment.dissatisfiedLabel":"\u6211\u4EEC\u53EF\u4EE5\u6539\u8FDB\u4EC0\u4E48\uFF1F","feedback.settings.submitText":"\u611F\u8C22\u60A8\u7684\u53CD\u9988\uFF01","feedback.settings.label":"\u8FD9\u6709\u5E2E\u52A9\u5417\uFF1F","feedback.settings.reasons.label":"\u54EA\u9879\u9648\u8FF0\u63CF\u8FF0\u4E86\u60A8\u5BF9\u6B64\u9875\u9762\u7684\u770B\u6CD5\uFF1F","feedback.submit":"\u63D0\u4EA4","feedback.cancel":"\u53D6\u6D88","feedback.settings.comment.likeLabel":"\u6700\u6709\u5E2E\u52A9\u7684\u662F\u4EC0\u4E48\uFF1F","feedback.settings.comment.dislikeLabel":"\u6211\u4EEC\u53EF\u4EE5\u6539\u8FDB\u4EC0\u4E48\uFF1F","feedback.sentiment.thumbUp":"\u8D5E","feedback.sentiment.thumbDown":"\u8E29","feedback.settings.leftScaleLabel":"\u5B8C\u5168\u6CA1\u6709\u5E2E\u52A9","feedback.settings.rightScaleLabel":"\u975E\u5E38\u6709\u5E2E\u52A9","feedback.settings.optionalEmail.label":"\u60A8\u7684\u7535\u5B50\u90AE\u4EF6\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u8DDF\u8FDB\uFF09","feedback.settings.optionalEmail.placeholder":"yourname@example.com","codeSnippet.report.buttonText":"\u62A5\u544A","codeSnippet.report.tooltipText":"\u62A5\u544A\u95EE\u9898","codeSnippet.report.label":"\u6B64\u4EE3\u7801\u6709\u4EC0\u4E48\u95EE\u9898\uFF1F","userMenu.login":"\u767B\u5F55","userMenu.logout":"\u6CE8\u9500","userMenu.devOnboardingLabel":"\u6211\u7684\u5E94\u7528\u7A0B\u5E8F","mobileMenu.mainMenu":"\u4E3B\u83DC\u5355","mobileMenu.previous":"\u4E0A\u4E00\u6B65","mobileMenu.products":"\u4EA7\u54C1","mobileMenu.version":"\u7248\u672C","page.nextButton":"\u4E0B\u4E00\u9875","page.previousButton":"\u4E0A\u4E00\u9875","page.actions.copyButtonText":"\u590D\u5236","page.actions.copyTitle":"\u4E3A LLM \u590D\u5236","page.actions.copyDescription":"\u5C06\u9875\u9762\u590D\u5236\u4E3A LLM \u7684 Markdown \u683C\u5F0F","page.actions.viewAsMdButtonText":"\u67E5\u770B Markdown","page.actions.viewAsMdTitle":"\u67E5\u770B Markdown","page.actions.viewAsMdDescription":"\u4EE5 Markdown \u683C\u5F0F\u6253\u5F00\u6B64\u9875\u9762","page.actions.chatGptButtonText":"\u5728 ChatGPT \u4E2D\u6253\u5F00","page.actions.chatGptTitle":"\u5728 ChatGPT \u4E2D\u6253\u5F00","page.actions.chatGptDescription":"\u4ECE ChatGPT \u83B7\u53D6\u89C1\u89E3","page.actions.claudeButtonText":"\u5728 Claude \u4E2D\u6253\u5F00","page.actions.claudeTitle":"\u5728 Claude \u4E2D\u6253\u5F00","page.actions.claudeDescription":"\u4ECE Claude \u83B7\u53D6\u89C1\u89E3","page.actions.cursorMcpButtonText":"\u8FDE\u63A5\u5230 Cursor","page.actions.cursorMcpTitle":"\u8FDE\u63A5\u5230 Cursor","page.actions.cursorMcpDescription":"\u5728 Cursor \u4E0A\u5B89\u88C5 MCP \u670D\u52A1\u5668","page.actions.connectMcp":"\u8FDE\u63A5 MCP","page.actions.connectMcp.cursor":"\u8FDE\u63A5\u5230 Cursor","page.actions.connectMcp.cursorDescription":"\u5728 Cursor \u4E0A\u5B89\u88C5 MCP \u670D\u52A1\u5668","page.actions.connectMcp.vscode":"\u8FDE\u63A5\u5230 VS Code","page.actions.connectMcp.vscodeDescription":"\u5728 VS Code \u4E0A\u5B89\u88C5 MCP \u670D\u52A1\u5668","page.actions.connectMcp.copyConfig":"\u590D\u5236 MCP \u914D\u7F6E","page.actions.connectMcp.copyConfigDescription":"\u590D\u5236 MCP JSON \u914D\u7F6E","navbar.products":"\u4EA7\u54C1","openapi.download.description.title":"\u4E0B\u8F7D OpenAPI \u63CF\u8FF0","openapi.info.title":"\u6982\u8FF0","openapi.info.contact.url":"URL","openapi.info.contact.name":"\u7535\u5B50\u90AE\u4EF6","openapi.info.license":"\u8BB8\u53EF\u8BC1","openapi.info.termsOfService":"\u670D\u52A1\u6761\u6B3E","openapi.info.metadata.title":"\u5143\u6570\u636E","openapi.key":"\u952E","openapi.value":"\u503C","openapi.enum":"\u679A\u4E3E","openapi.items":"\u9879","openapi.default":"\u9ED8\u8BA4\u503C","openapi.variable":"\u53D8\u91CF","openapi.variables":"\u53D8\u91CF","openapi.actions.show":"\u663E\u793A","openapi.actions.hide":"\u9690\u85CF","openapi.actions.more":"\u66F4\u591A","openapi.languages.title":"\u8BED\u8A00","openapi.servers.title":"\u670D\u52A1\u5668","openapi.operations":"\u64CD\u4F5C","openapi.webhooks":"Webhook","openapi.description":"\u63CF\u8FF0","openapi.badges.deprecated":"\u5DF2\u5F03\u7528","openapi.badges.required":"\u5FC5\u9700","openapi.badges.webhook":"Webhook","openapi.request":"\u8BF7\u6C42","openapi.path":"\u8DEF\u5F84","openapi.query":"\u67E5\u8BE2","openapi.cookie":"Cookie","openapi.header":"\u6807\u5934","openapi.body":"\u6B63\u6587","openapi.responses":"\u54CD\u5E94","openapi.response":"\u54CD\u5E94","openapi.callbacks":"\u56DE\u8C03","openapi.callbackRequest":"\u56DE\u8C03\u8BF7\u6C42","openapi.callbackResponse":"\u56DE\u8C03\u54CD\u5E94","openapi.payload":"\u8BF7\u6C42\u4F53","openapi.discriminator":"\u9274\u522B\u5668","openapi.contentType":"\u5185\u5BB9\u7C7B\u578B","openapi.tryIt":"\u8BD5\u7528","openapi.loading":"\u52A0\u8F7D\u4E2D...","openapi.example":"\u793A\u4F8B","openapi.examples":"\u793A\u4F8B","openapi.additionalProperties":"\u9644\u52A0\u5C5E\u6027","openapi.patternProperties":"\u6A21\u5F0F\u5C5E\u6027","openapi.required":"\u5FC5\u9700","openapi.recursive":"\u9012\u5F52","openapi.complex":"\u590D\u6742","openapi.hideExample":"\u9690\u85CF\u793A\u4F8B","openapi.showExample":"\u663E\u793A\u793A\u4F8B","openapi.expandAll":"\u5168\u90E8\u5C55\u5F00","openapi.collapseAll":"\u5168\u90E8\u6298\u53E0","openapi.viewSecurityDetails":"\u67E5\u770B\u5B89\u5168\u8BE6\u60C5","openapi.noResponseExample":"\u65E0\u54CD\u5E94\u793A\u4F8B","openapi.discriminator.searchPlaceholder":"\u641C\u7D22\u9879\u76EE","openapi.discriminator.searchNoResults":"\u672A\u627E\u5230\u9879\u76EE","openapi.discriminator.defaultMapping":"\u9ED8\u8BA4\u6620\u5C04","openapi.discriminator.defaultMappingTooltip":"OpenAPI 3.2\uFF1A\u5F53\u5176\u4ED6\u6620\u5C04\u4E0D\u5339\u914D\u65F6\u4F7F\u7528\u9ED8\u8BA4\u6620\u5C04\u3002","openapi.noResponseContent":"\u65E0\u5185\u5BB9","openapi.noRequestPayload":"\u65E0\u8BF7\u6C42\u6709\u6548\u8D1F\u8F7D","openapi.hidePattern":"\u9690\u85CF\u6A21\u5F0F","openapi.showPattern":"\u663E\u793A\u6A21\u5F0F","openapi.authorizationUrl":"\u6388\u6743 URL","openapi.tokenUrl":"\u4EE4\u724C URL","openapi.refreshUrl":"\u5237\u65B0 URL","openapi.showOptionalScopes":"\u663E\u793A\u53EF\u9009\u8303\u56F4","openapi.hideOptionalScopes":"\u9690\u85CF\u53EF\u9009\u8303\u56F4","openapi.security":"\u5B89\u5168","openapi.httpAuthorizationScheme":"HTTP \u6388\u6743\u65B9\u6848","openapi.bearerFormat":"Bearer \u683C\u5F0F","openapi.parameterName":"\u53C2\u6570\u540D\u79F0","openapi.flowType":"\u6D41\u7C7B\u578B","openapi.connectUrl":"\u8FDE\u63A5 URL","openapi.requiredScopes":"\u5FC5\u9700\u8303\u56F4","openapi.unsupportedLanguage":"\u4E0D\u652F\u6301\u8BE5\u8BED\u8A00\u3002","openapi.failedToGenerateCodeSample":"\u65E0\u6CD5\u751F\u6210\u4EE3\u7801\u793A\u4F8B\u3002","openapi.schemaCatalogLink.title":"\u5171\u4EAB\u67B6\u6784","openapi.schemaCatalogLink.copyButtonTooltip":"\u590D\u5236\u5230\u526A\u8D34\u677F","openapi.schemaCatalogLink.copiedTooltip":"\u5DF2\u590D\u5236\uFF01","openapi.mcp.title":"MCP server","openapi.mcp.endpoint":"Endpoint","openapi.mcp.tools":"MCP \u5DE5\u5177","openapi.mcp.protocolVersion":"\u534F\u8BAE\u7248\u672C","openapi.mcp.capabilities":"\u80FD\u529B","openapi.mcp.experimentalCapabilities":"\u5B9E\u9A8C\u6027\u80FD\u529B","openapi.mcp.inputSchema":"\u8F93\u5165\u67B6\u6784","openapi.mcp.inputExample":"\u8F93\u5165\u793A\u4F8B","openapi.mcp.outputSchema":"\u8F93\u51FA\u67B6\u6784","openapi.mcp.outputExample":"\u8F93\u51FA\u793A\u4F8B","asyncapi.download.description.title":"\u4E0B\u8F7D AsyncAPI \u63CF\u8FF0","asyncapi.info.title":"\u6982\u8FF0","graphql.download.description.title":"\u4E0B\u8F7D GraphQL \u67B6\u6784","graphql.info.title":"\u6982\u8FF0","graphql.info.contact.url":"URL","graphql.info.contact.name":"\u7535\u5B50\u90AE\u4EF6","graphql.info.license":"\u8BB8\u53EF\u8BC1","graphql.info.termsOfService":"\u670D\u52A1\u6761\u6B3E","graphql.overview":"GraphQL \u6982\u8FF0","graphql.metadata":"\u5143\u6570\u636E","graphql.key":"\u952E","graphql.value":"\u503C","graphql.queries":"\u67E5\u8BE2","graphql.mutations":"\u53D8\u66F4","graphql.subscriptions":"\u8BA2\u9605","graphql.directives":"\u6307\u4EE4","graphql.objects":"\u5BF9\u8C61","graphql.interfaces":"\u63A5\u53E3","graphql.unions":"\u8054\u5408","graphql.enums":"\u679A\u4E3E","graphql.inputs":"\u8F93\u5165","graphql.scalars":"\u6807\u91CF","graphql.arguments.label":"\u53C2\u6570","graphql.arguments.show":"\u663E\u793A\u53C2\u6570","graphql.arguments.hide":"\u9690\u85CF\u53C2\u6570","graphql.arguments.here":"\u53C2\u6570\u5728\u6B64","graphql.returnTypes.label":"\u7ED3\u679C\u7C7B\u578B","graphql.returnTypes.show":"\u663E\u793A\u7ED3\u679C\u7C7B\u578B","graphql.returnTypes.hide":"\u9690\u85CF\u7ED3\u679C\u7C7B\u578B","graphql.possibleTypes":"\u53EF\u80FD\u7684\u7C7B\u578B","graphql.defaultValue":"\u9ED8\u8BA4\u503C","graphql.deprecationReason":"\u5F03\u7528\u539F\u56E0","graphql.requiredScopes":"\u5FC5\u9700\u8303\u56F4","graphql.viewSecurityDetails":"\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F","graphql.objectScopes":"\u5BF9\u8C61\u8303\u56F4","graphql.fieldScopes":"\u5B57\u6BB5\u8303\u56F4","graphql.implementedInterfaces":"\u5B9E\u73B0\u7684\u63A5\u53E3","graphql.nonNull":"\u975E\u7A7A","graphql.required":"\u5FC5\u9700","graphql.deprecated":"\u5DF2\u5F03\u7528","graphql.variables":"\u53D8\u91CF","graphql.querySample":"\u67E5\u8BE2\u793A\u4F8B","graphql.mutationSample":"\u53D8\u66F4\u793A\u4F8B","graphql.subscriptionSample":"\u8BA2\u9605\u793A\u4F8B","graphql.responseSample":"\u54CD\u5E94\u793A\u4F8B","graphql.locations":"\u4F4D\u7F6E","graphql.sample":"\u793A\u4F8B","graphql.referenced":"\u5F15\u7528\u4F4D\u7F6E","graphql.content.fragment":"\u7247\u6BB5","codeWalkthrough.preview":"\u9884\u89C8","codeWalkthrough.download":"\u4E0B\u8F7D","time.justNow":"\u521A\u624D","time.past.second":"1 \u79D2\u524D","time.past.seconds":"{{value}} \u79D2\u524D","time.past.minute":"1 \u5206\u949F\u524D","time.past.minutes":"{{value}} \u5206\u949F\u524D","time.past.hour":"1 \u5C0F\u65F6\u524D","time.past.hours":"{{value}} \u5C0F\u65F6\u524D","time.past.day":"1 \u5929\u524D","time.past.days":"{{value}} \u5929\u524D","time.past.week":"1 \u5468\u524D","time.past.weeks":"{{value}} \u5468\u524D","time.past.month":"1 \u4E2A\u6708\u524D","time.past.months":"{{value}} \u4E2A\u6708\u524D","time.past.year":"1 \u5E74\u524D","time.past.years":"{{value}} \u5E74\u524D","page.internalServerError.title":"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF","page.internalServerError.description":"\u6211\u4EEC\u7684\u670D\u52A1\u5668\u51FA\u9519\u4E86\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\uFF0C\u5982\u679C\u95EE\u9898\u4ECD\u7136\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u4EBA\u5458\u3002","page.skipToContent.label":"\u8DF3\u8F6C\u5230\u5185\u5BB9","catalog.catalogs.label":"\u76EE\u5F55","catalog.catalogs.all.title":"\u5168\u90E8","catalog.catalogs.all.description":"\u6240\u6709\u5B9E\u4F53","catalog.catalogs.all.switcherLabel":"\u5168\u90E8","catalog.catalogs.service.title":"\u670D\u52A1","catalog.catalogs.service.description":"\u670D\u52A1\u5B9E\u4F53","catalog.catalogs.service.switcherLabel":"\u670D\u52A1","catalog.catalogs.user.title":"\u7528\u6237","catalog.catalogs.user.description":"\u7528\u6237\u5B9E\u4F53","catalog.catalogs.user.switcherLabel":"\u7528\u6237","catalog.catalogs.team.title":"\u56E2\u961F","catalog.catalogs.team.description":"\u56E2\u961F\u5B9E\u4F53","catalog.catalogs.team.switcherLabel":"\u56E2\u961F","catalog.catalogs.domain.title":"\u57DF","catalog.catalogs.domain.description":"\u57DF\u5B9E\u4F53","catalog.catalogs.domain.switcherLabel":"\u57DF","catalog.catalogs.apiDescription.title":"API \u63CF\u8FF0","catalog.catalogs.apiDescription.description":"API \u63CF\u8FF0\u5B9E\u4F53","catalog.catalogs.apiDescription.switcherLabel":"API \u63CF\u8FF0","catalog.catalogs.dataSchema.title":"\u6570\u636E\u6A21\u5F0F","catalog.catalogs.dataSchema.description":"\u6570\u636E\u6A21\u5F0F\u5B9E\u4F53","catalog.catalogs.dataSchema.switcherLabel":"\u6570\u636E\u6A21\u5F0F","catalog.catalogs.apiOperation.title":"API \u64CD\u4F5C","catalog.catalogs.apiOperation.description":"API \u64CD\u4F5C\u5B9E\u4F53","catalog.catalogs.apiOperation.switcherLabel":"API \u64CD\u4F5C","catalog.entity.metadata.title":"\u5143\u6570\u636E","catalog.entity.schema.title":"\u6A21\u5F0F","catalog.entity.properties.apiDescription.title":"API \u63CF\u8FF0","catalog.backToAllLabel":"\u76EE\u5F55","catalog.tags.label":"\u6807\u7B7E","catalog.tags.more":"\u66F4\u591A","catalog.owners.label":"\u6240\u6709\u8005","catalog.repositories.label":"\u4ED3\u5E93","catalog.email.label":"\u7535\u5B50\u90AE\u4EF6","catalog.format.label":"\u683C\u5F0F","catalog.entityType.label":"\u5B9E\u4F53\u7C7B\u578B","catalog.domains.label":"\u57DF","catalog.contact.label":"Slack \u9891\u9053","catalog.methodAndPath.label":"\u65B9\u6CD5\u548C\u8DEF\u5F84","catalog.links.label":"\u94FE\u63A5","catalog.metadata.domains":"\u57DF:","catalog.metadata.owners":"\u6240\u6709\u8005:","catalog.sort":"\u6392\u5E8F","catalog.history.button.label":"\u7248\u672C\u5386\u53F2","catalog.history.sidebar.title":"\u7248\u672C\u5386\u53F2","catalog.history.sidebar.close":"\u5173\u95ED\u7248\u672C\u5386\u53F2","catalog.history.version.label":"\u7248\u672C","catalog.history.version.notSpecified":"\u672A\u6307\u5B9A","catalog.history.version.default":"\u9ED8\u8BA4","catalog.history.revisions.limitMessage":"\u4E0D\u5B58\u50A8\u8F83\u65E7\u7684\u4FEE\u8BA2\u7248\u672C\u3002","catalog.history.revision.current":"\u5F53\u524D","catalog.history.revisions.showLess":"\u663E\u793A\u66F4\u5C11","catalog.history.revisions.showMore":"\u663E\u793A\u66F4\u591A{{count}}\u9879","select.noResults":"\u65E0\u7ED3\u679C","loaders.loading":"\u52A0\u8F7D\u4E2D...","mermaid.openFullscreen":"\u70B9\u51FB\u5168\u5C4F\u67E5\u770B\u56FE\u8868","mermaid.zoomIn":"\u653E\u5927","mermaid.zoomOut":"\u7F29\u5C0F","mermaid.reset":"\u9002\u5E94\u7A97\u53E3","mermaid.close":"\u5173\u95ED","mermaid.viewer":"Mermaid\u56FE\u8868\u67E5\u770B\u5668"};export{e as zh};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Hono as f}from"hono";import{TrieRouter as m}from"hono/router/trie-router";import{Logger as g}from"../tools/notifiers/logger.js";import{importApiRoutesHandler as q}from"./import-api-routes-handlers.js";import{getBodyWithSizeCheck as
|
|
1
|
+
import{Hono as f}from"hono";import{TrieRouter as m}from"hono/router/trie-router";import{Logger as g}from"../tools/notifiers/logger.js";import{importApiRoutesHandler as q}from"./import-api-routes-handlers.js";import{getBodyWithSizeCheck as h}from"./helpers/get-body-with-size-check.js";import{setupLogger as w}from"./helpers/setup-logger.js";import{telemetry as s}from"../telemetry/index.js";import{KvService as D}from"../persistence/kv/services/kv-service.js";import{enhanceContext as R}from"./helpers/enhance-context.js";const i=new g({forceNonInteractive:!0});async function S(e){s.initialize(),w(i,e.requestHandlerId);const o=new f({router:new m}),{requestHandlers:a}=await q(e.serverOutDir),u=a[e.requestHandlerId],c=(await u()).default,l=async()=>D.getInstance({baseDbDir:e.serverOutDir,sqldRemoteDatabaseUrl:e.sqldRemoteDatabaseUrl,sqldRemoteDatabaseAuthToken:e.sqldRemoteDatabaseAuthToken});o.all(e.slug,async t=>{const r=await c(t.req.raw,R({honoCtx:t,ctx:e.ctxData,telemetry:s,getKv:l}),e.staticData);return r instanceof Response?r:typeof r=="string"?t.text(r):t.json(r)}),o.onError((t,r)=>{if(i.error(`[${e.requestHandlerId}] ${t.message} ${t.stack}`),t instanceof SyntaxError)return r.text(t.message,500);throw t});const n=await o.request(e.req.url,e.req),d=await h(n,e.maxResponseSizeMB);return{status:n.status,headers:Object.fromEntries(n.headers.entries()),body:d}}export{S as executeApiRoute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as m from"workerpool";import{withPathPrefix as p}from"@redocly/theme/core/utils";import{telemetry as a}from"../telemetry/index.js";import{TimeoutExceededError as E}from"./errors/timeout-exceeded.js";import{serializeRequest as f}from"./helpers/serialize-request.js";import{apiRoutesWorkers as _,API_ROUTES_WORKER_KEY as A}from"../workers/api-routes-worker-pool.js";import{API_FUNCTIONS_REQUEST_HANDLER_ID as d}from"../plugins/api-functions/index.js";const T=1e4,h=15;async function O(e,r,t){a.initialize();const s=r.get("auth"),i=await t.resolveRouteStaticData(e)||{},n=p(e.slug);try{const{status:o,headers:l,body:c}=await _.exec(A,[{serverOutDir:t.serverOutDir,slug:n,requestHandlerId:e.requestHandlerId,maxResponseSizeMB:h,ctxData:{user:{teams:s.teams,email:s.claims.email,claims:s.claims,idpAccessToken:s.idpAccessToken,idpId:s.claims.idpId,isAuthenticated:s.isAuthenticated},config:t.config},staticData:{...i,props:{...i.props,routeSlug:n,outdir:t.outdir}},req:await f(r.req.raw),sqldRemoteDatabaseUrl:process.env.SQLD_REMOTE_DATABASE_URL,sqldRemoteDatabaseAuthToken:process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN}],{timeout:T});R({requestHandlerId:e.requestHandlerId,body:c,headers:l,status:o,ctx:r});const u=c.data?Buffer.from(c.data):null;return new Response(u,{status:o,headers:l})}catch(o){throw g({requestHandlerId:e.requestHandlerId,error:o}),o instanceof m.Promise.TimeoutError?new E("Timeout exceeded"):o}}function R({requestHandlerId:e,body:r,headers:t,status:s,ctx:i}){e.startsWith(d)?a.sendApiFunctionCalledMessage([{object:"api_function",error:null,handler:e,body:r,headers:t,status:s}]):a.sendMockServerCalledMessage([{object:"mock_server",error:null,handler:e,body:r,headers:{"user-agent":i.req.header("user-agent")??""},status:s}])}function g({requestHandlerId:e,error:r}){const t={handler:e,message:r?.message??null,stack:r?.stack??null};e.startsWith(d)?a.sendApiFunctionErrorMessage([{object:"api_function",...t}]):a.sendMockServerErrorMessage([{object:"mock_server",...t}])}export{O as runApiRoutesWorker,g as sendTelemetryErrorMessage};
|
|
@@ -17,4 +17,5 @@ export declare const CATALOG_FILTERS_CACHE_TTL_IN_SECONDS: number;
|
|
|
17
17
|
export declare const CATALOG_ENTITIES_DEFAULT_CONFIG: EntitiesCatalogConfig;
|
|
18
18
|
export declare const CATALOG_ENTITIES_FILES_REGEX: RegExp;
|
|
19
19
|
export declare const ALLOWED_CATALOG_QUERY_PARAMS: readonly ["after", "before", "sort", "filter", "search", "limit", "skip"];
|
|
20
|
+
export declare const SQLD_REMOTE_DATABASE_URL_NO_DEPLOYMENT_YET_VAR = "NO_SQLD_DEPLOYMENT_YET";
|
|
20
21
|
//# sourceMappingURL=catalog-entities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=["node_modules","dist","build",".git","@l10n"],l="/catalogs",a={ALL:"all",SERVICES:"services",DOMAINS:"domains",TEAMS:"teams",USERS:"users",API_DESCRIPTIONS:"api-descriptions",DATA_SCHEMAS:"data-schemas",API_OPERATIONS:"api-operations"},s="catalog:entitySources",i="catalog-filters",o=300,t=[{title:"Domains",property:"domains"},{title:"Owner",property:"owners"},{title:"Tags",property:"tags"}],c={show:!1,catalogs:{all:{slug:a.ALL,hide:!1,includes:[],excludes:[],filters:[{title:"Type",property:"type"},...t],titleTranslationKey:"catalog.catalogs.all.title",descriptionTranslationKey:"catalog.catalogs.all.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.all.switcherLabel"},services:{slug:a.SERVICES,hide:!1,includes:[{type:"service"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.service.title",descriptionTranslationKey:"catalog.catalogs.service.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.service.switcherLabel"},domains:{slug:a.DOMAINS,hide:!1,includes:[{type:"domain"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.domain.title",descriptionTranslationKey:"catalog.catalogs.domain.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.domain.switcherLabel"},teams:{slug:a.TEAMS,hide:!1,includes:[{type:"team"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.team.title",descriptionTranslationKey:"catalog.catalogs.team.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.team.switcherLabel"},users:{slug:a.USERS,hide:!1,includes:[{type:"user"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.user.title",descriptionTranslationKey:"catalog.catalogs.user.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.user.switcherLabel"},apiDescriptions:{slug:a.API_DESCRIPTIONS,hide:!1,includes:[{type:"api-description"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.apiDescription.title",descriptionTranslationKey:"catalog.catalogs.apiDescription.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.apiDescription.switcherLabel"},dataSchemas:{slug:a.DATA_SCHEMAS,hide:!1,includes:[{type:"data-schema"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.dataSchema.title",descriptionTranslationKey:"catalog.catalogs.dataSchema.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.dataSchema.switcherLabel"},apiOperations:{slug:a.API_OPERATIONS,hide:!1,includes:[{type:"api-operation"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.apiOperation.title",descriptionTranslationKey:"catalog.catalogs.apiOperation.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.apiOperation.switcherLabel"}}},r=/\.(entity|entities)\.(yaml|yml)$/,n=["after","before","sort","filter","search","limit","skip"];export{n as ALLOWED_CATALOG_QUERY_PARAMS,l as CATALOG_BASE_SLUG,c as CATALOG_ENTITIES_DEFAULT_CONFIG,r as CATALOG_ENTITIES_FILES_REGEX,i as CATALOG_FILTERS_CACHE_NAMESPACE,o as CATALOG_FILTERS_CACHE_TTL_IN_SECONDS,a as CATALOG_SLUGS,s as ENTITIES_MAP_GLOBAL_DATA_KEY,e as ENTITY_SCHEMA_EXCLUDED_FOLDERS};
|
|
1
|
+
const e=["node_modules","dist","build",".git","@l10n"],l="/catalogs",a={ALL:"all",SERVICES:"services",DOMAINS:"domains",TEAMS:"teams",USERS:"users",API_DESCRIPTIONS:"api-descriptions",DATA_SCHEMAS:"data-schemas",API_OPERATIONS:"api-operations"},s="catalog:entitySources",i="catalog-filters",o=300,t=[{title:"Domains",property:"domains"},{title:"Owner",property:"owners"},{title:"Tags",property:"tags"}],c={show:!1,catalogs:{all:{slug:a.ALL,hide:!1,includes:[],excludes:[],filters:[{title:"Type",property:"type"},...t],titleTranslationKey:"catalog.catalogs.all.title",descriptionTranslationKey:"catalog.catalogs.all.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.all.switcherLabel"},services:{slug:a.SERVICES,hide:!1,includes:[{type:"service"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.service.title",descriptionTranslationKey:"catalog.catalogs.service.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.service.switcherLabel"},domains:{slug:a.DOMAINS,hide:!1,includes:[{type:"domain"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.domain.title",descriptionTranslationKey:"catalog.catalogs.domain.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.domain.switcherLabel"},teams:{slug:a.TEAMS,hide:!1,includes:[{type:"team"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.team.title",descriptionTranslationKey:"catalog.catalogs.team.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.team.switcherLabel"},users:{slug:a.USERS,hide:!1,includes:[{type:"user"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.user.title",descriptionTranslationKey:"catalog.catalogs.user.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.user.switcherLabel"},apiDescriptions:{slug:a.API_DESCRIPTIONS,hide:!1,includes:[{type:"api-description"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.apiDescription.title",descriptionTranslationKey:"catalog.catalogs.apiDescription.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.apiDescription.switcherLabel"},dataSchemas:{slug:a.DATA_SCHEMAS,hide:!1,includes:[{type:"data-schema"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.dataSchema.title",descriptionTranslationKey:"catalog.catalogs.dataSchema.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.dataSchema.switcherLabel"},apiOperations:{slug:a.API_OPERATIONS,hide:!1,includes:[{type:"api-operation"}],excludes:[],filters:t,titleTranslationKey:"catalog.catalogs.apiOperation.title",descriptionTranslationKey:"catalog.catalogs.apiOperation.description",catalogSwitcherLabelTranslationKey:"catalog.catalogs.apiOperation.switcherLabel"}}},r=/\.(entity|entities)\.(yaml|yml)$/,n=["after","before","sort","filter","search","limit","skip"],g="NO_SQLD_DEPLOYMENT_YET";export{n as ALLOWED_CATALOG_QUERY_PARAMS,l as CATALOG_BASE_SLUG,c as CATALOG_ENTITIES_DEFAULT_CONFIG,r as CATALOG_ENTITIES_FILES_REGEX,i as CATALOG_FILTERS_CACHE_NAMESPACE,o as CATALOG_FILTERS_CACHE_TTL_IN_SECONDS,a as CATALOG_SLUGS,s as ENTITIES_MAP_GLOBAL_DATA_KEY,e as ENTITY_SCHEMA_EXCLUDED_FOLDERS,g as SQLD_REMOTE_DATABASE_URL_NO_DEPLOYMENT_YET_VAR};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{context as
|
|
2
|
-
const require = topLevelCreateRequire(import.meta.url);`},platform:"node",define:{"process.env.NODE_ENV":`"${
|
|
3
|
-
const require = topLevelCreateRequire(import.meta.url);`},logLevel:"silent"});return p.add(s),s})}export{ce as createClientCompiler,
|
|
1
|
+
import{context as m}from"esbuild";import{mkdirSync as j,writeFileSync as b,existsSync as M}from"node:fs";import*as a from"node:path";import{RUNTIME_RESOURCES_DIR as Y,TELEMETRY_ENABLED as k}from"../constants/common.js";import{fromCurrentDir as r}from"../utils/paths.js";import{NodeBrowserPlugin as S}from"./plugins/node-browser.js";import{PortalImport as l}from"./plugins/portal-import.js";import{ThemesResolver as u}from"./plugins/themes-resolver.js";import{AssetsResolver as E}from"./plugins/assets-resolver.js";import{EsbuildErrorCollector as _}from"./plugins/esbuild-compile-resolver.js";import{OpenapiDocsModuleReplacer as f}from"./plugins/openapi-docs-module-replacer/index.js";import{ServerPropsResolver as R}from"./plugins/server-props-resolver.js";import{StyledComponentsSSR as v}from"./plugins/styled-components-ssr.js";import{DependencyResolver as d}from"./plugins/dependency-resolver.js";import{YamlLoader as L}from"./plugins/yaml-loader.js";import{ApiRequestHandlersResolver as A}from"./plugins/api-request-handlers-resolver.js";import{MiddlewareResolver as N}from"./plugins/middleware-resolver.js";import{OnRebuild as D}from"./plugins/on-rebuild.js";import{getPublicEnvVariables as V}from"../utils/envs/get-public-env-variables.js";import{PORTAL_VERSION as w}from"../version.js";import{AsyncApiPatch as O}from"./plugins/async-api-patch.js";import{telemetryTraceStep as T}from"../../cli/telemetry/helpers/trace-step.js";const C={bundle:!0,format:"esm",chunkNames:"chunks/[name]-[hash]"};function y(e){const o=a.join(e,"tsconfig.json");return M(o)?o:void 0}const p=new Set;async function ie(){await Promise.all([...p].map(e=>e.dispose())),p.clear()}async function ce(e,o,t="production",n){return await T("build.create_client_compiler",async()=>{const c=V(),i={};Object.entries(c).map(([I,h])=>i[`process.env.${I}`]=JSON.stringify(h));const s=[...n?[D(n)]:[],S({path:"path-browserify",fs:"{}",tty:"tty-browserify",os:"os-browserify",http:"stream-http",https:"stream-http",readline:"{}",crypto:"{}",stream:"{}",zlib:"{}","https-proxy-agent":"{}"}),u(e,e.contentDir),E(e,e.contentDir),_(e,e.contentDir),R(e),d(),l(),L(),O(),v(),f()],g=[r(import.meta.url,"../../client/browser-entry.js"),r(import.meta.url,"../../client/user-tags-entry.js")],P=await m({...C,entryPoints:g,outdir:a.join(o,Y),sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",plugins:s,tsconfig:y(e.contentDir),mainFields:["browser","module","main"],metafile:t!=="production",minify:t==="production",splitting:!0,external:["constants","zlib","stream","https","vm","module","worker_threads","child_process","@swc/core"],inject:[process.env.INSPECT_MODE==="true"?r(import.meta.url,"../../client/inspect-mode-hooks.js"):"",r(import.meta.url,"./web-shim.js")].filter(Boolean),define:{...i,"process.env.NODE_ENV":`"${t}"`,"process.env.REDOCLY_LOCAL_DEV":`"${process.env.REDOCLY_LOCAL_DEV}"`,"process.env.SERVER_EDITOR_APP_URL":`"${process.env.SERVER_EDITOR_APP_URL}"`,"process.env.ENABLE_COMMENTS":`"${process.env.ENABLE_COMMENTS}"`,"process.env.REDOCLY_TELEMETRY":k?'""':'"off"',"process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"process.env":`{"NODE_ENV": "${t}"}`,"process.platform":'"browser"',"process.browser":"true","module.hot":"false",global:"{}",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`},...process.env.INSPECT_MODE==="true"&&{"process.env.INSPECT_MODE":`${process.env.INSPECT_MODE}`},...process.env.MAIN_API_URL&&{"process.env.MAIN_API_URL":`"${process.env.MAIN_API_URL}"`}},logLevel:"silent"});return p.add(P),P})}async function pe(e,o,t="development",n){j(o,{recursive:!0}),b(a.join(o,"package.json"),JSON.stringify({name:"@redocly/portal/server-cache",type:"module"}));const c=[...n?[D(n)]:[],u(e,e.contentDir),E(e,e.contentDir),_(e,e.contentDir),R(e),A(e),N(e),d(),l(),L(),O(),v(),f()],i=[r(import.meta.url,"../../client/server-entry.js"),r(import.meta.url,"../../client/user-tags-entry.js"),r(import.meta.url,"../../client/server-props-entry.js"),r(import.meta.url,"../../client/api-request-handlers-entry.js"),r(import.meta.url,"../../client/middleware-entry.js")],s=await m({...C,entryPoints:i,outdir:o,plugins:c,sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",minify:t==="production",tsconfig:y(e.contentDir),mainFields:["module","main"],splitting:!0,external:["react","react-router-dom","@dr.pogodin/react-helmet","@swc/core","pnpapi","canvas"],banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
|
|
2
|
+
const require = topLevelCreateRequire(import.meta.url);`},platform:"node",define:{"process.env.NODE_ENV":`"${t}"`,"process.env.REDOCLY_LOCAL_DEV":`"${process.env.REDOCLY_LOCAL_DEV}"`,"module.hot":"false"},logLevel:"silent"});return p.add(s),s}async function me(e,o,t="production",n){return await T("build.create_server_compiler",async()=>{const c=[...n?[D(n)]:[],S({"node-fetch":"{}",webpack:"{}",swagger2openapi:"{}"}),u(e,e.contentDir),E(e,e.contentDir),_(e,e.contentDir),R(e),A(e),N(e),d(),l(),L(),O(),v(),f()],i=[{in:r(import.meta.url,"../node-bundle-entry.js"),out:"index"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../workers/api-routes-worker.js"),out:"api-routes-worker"},{in:r(import.meta.url,"../workers/scorecards-worker.js"),out:"scorecards-worker"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"}],s=await m({...C,entryPoints:i,outExtension:{".js":".mjs"},outdir:o,platform:"node",plugins:c,tsconfig:y(e.contentDir),mainFields:["module","main"],metafile:t!=="production",minify:t==="production",splitting:!1,define:{"process.env.NODE_ENV":`"${t}"`,"process.env.REDOCLY_LOCAL_DEV":`"${process.env.REDOCLY_LOCAL_DEV}"`,"process.env.REDOCLY_STATIC_BUNDLE":"true","process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"module.hot":"false",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`}},banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
|
|
3
|
+
const require = topLevelCreateRequire(import.meta.url);`},logLevel:"silent"});return p.add(s),s})}export{ce as createClientCompiler,me as createNodeBundleCompiler,pe as createServerCompiler,ie as stopAllCompilers};
|
package/dist/server/fs/cache.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{sha1 as M}from"../utils/crypto/sha1.js";import{NestedMap as F}from"./utils/nested-map.js";import{trackAccessStore as
|
|
1
|
+
import{sha1 as M}from"../utils/crypto/sha1.js";import{NestedMap as F}from"./utils/nested-map.js";import{trackAccessStore as m}from"./utils/async-storage.js";import{isLoaderCacheEnabled as L}from"./utils/is-loader-cache-enabled.js";import{LoadError as w}from"./load-error.js";import{createLifecycleContext as S}from"../plugins/lifecycle.js";function f(y,t){return y+":"+t}class q{fs;errors=new Map;#t=new F;#i=new Map;#e=new Map;#s=new Map;#a=new F;#h;#o={};#n=new Map;constructor(t){this.fs=t,this.#h=S(t,this),this.#c()}async load(t,s,i){let e,r;typeof s=="string"?(e=s,r=this.#o[s]):(e=s.name,r=s.loader);const a=f(e,t);if(this.#n.has(a))return this.#n.get(a);const n=i?.join(""),h=n!==void 0?n.length>30?M(n):n:void 0,d=m.getStore()??[],I=!this.#r(t,e,h),p=this.#t.get(e,t);if(I&&p)return d.push({type:"load",loaderId:e,resource:t,hash:p.compoundHash}),p;const c=Promise.withResolvers();this.#n.set(a,c.promise),h!==void 0&&this.#e.set(a,h);const{status:P,value:l}=await this.#l(t,e,async()=>{let g;const C=m.getStore()||[],u=[],E=o=>u.push(o);try{g=await r(t,this.#h,E),u.length>0?this.errors.set(a,u):this.errors.delete(a)}catch(o){const R=this.#t.get(e,t)?.data,H=e==="redocly-config"||e==="nearest-redocly-config"?!1:(await this.load(t,"is-ignored")).data;if(!(o instanceof w)&&!H&&this.errors.set(a,[o]),!R)return{status:"error",value:o instanceof w?o:new w(o.message,{cause:o,loaderId:e})};g=R}const v=M(t+(h??"")+C.map(o=>o.hash).join(""));return d.push({type:"load",loaderId:e,resource:t,hash:v}),{status:"success",value:{data:g,compoundHash:v}}});return P==="error"?c.reject(l):(this.#d(t),L(e)&&this.#t.set(e,t,l),this.#i.set(a,l.compoundHash),c.resolve(l)),this.#n.delete(a),c.promise}setLoaders(t){this.#o={...this.#o,...t}}delete(t,s){if(s){const i=f(s,t);this.#t.delete(s,t),this.errors.delete(i),this.#i.delete(i),this.#e.delete(i);const e=this.#s.get(t);if(e){for(const r of e)this.delete(r,s);this.#s.delete(t)}this.#a.delete(s,t)}else for(const i of this.#t.keys())this.delete(t,i)}#d(t){const[s,i]=t.split("#");if(!i)return;const e=this.#s.get(s);e?e.add(t):this.#s.set(s,new Set([t]))}#c(){this.fs.watch(async t=>{for(const s of t)s.event==="unlink"&&this.delete(s.path)})}#r(t,s,i){const e=f(s,t);return i!==void 0&&this.#e.get(e)!==i?!0:(this.#a.get(s,t)??[]).some(n=>{switch(n.type){case"load":const h=f(n.loaderId,n.resource);return this.#i.get(h)!==n.hash||this.#r(n.resource,n.loaderId,this.#e.get(h));case"read":return n.hash!==this.fs.getFileInfo(n.path)?.hash;case"exists":const d=this.fs.getFileInfo(n.path);return n.hash!==(d&&!d.isVirtual?"t":"f");case"scan":return n.hash!==this.fs.getPatternScanHash(n.pattern)}})}#l(t,s,i){const e=[];return this.#a.set(s,t,e),m.run(e,i)}}export{q as Cache};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolve as a,dirname as p}from"node:path";import{fileURLToPath as f}from"node:url";import{readFile as l}from"fs/promises";import{createReadStream as
|
|
1
|
+
import{resolve as a,dirname as p}from"node:path";import{fileURLToPath as f}from"node:url";import{readFile as l}from"fs/promises";import{createReadStream as d}from"fs";import{telemetry as u}from"./telemetry/index.js";import{createRouter as v}from"./web-server/router.js";import{installProdRoutes as S}from"./web-server/routes/index.js";import{Store as g}from"./store.js";import{loadEnvVariables as D}from"./utils/envs/load-env-variables.js";import{startHttpServer as E}from"./web-server/http.js";import{readStaticData as w}from"./utils/static-data.js";import{startIdleTimeout as P}from"./web-server/middleware/idleTimeoutMiddleware.js";import{reporter as b}from"./tools/notifiers/reporter.js";import{EntitlementsProvider as R}from"./entitlements/entitlements-provider.js";import{DatabasePreconnectService as x}from"./providers/database/database-preconnect-service.js";import{isBuildMode as I}from"./utils/envs/is-build-mode.js";import{KvService as y}from"./persistence/kv/services/kv-service.js";import{runScorecardsWorker as N}from"./plugins/scorecards/workers/run-scorecards-worker.js";import{isCatalogEntitiesEnabled as O}from"./utils/is-catalog-entities-enabled.js";import{isScorecardsEnabled as T}from"./utils/is-scorecards-enabled.js";import{renderPage as _}from"./ssr/index.js";if(!I()){let c=function(){const r=process.argv.findIndex(o=>o==="--port"||o==="-p");if(r===-1)return null;const e=process.argv[r+1];if(e.startsWith("-"))return null;const i=parseInt(e,10);return isNaN(i)?null:i};const t=p(f(import.meta.url));await D(t);const n=JSON.parse(await l(a(t,"./store.json"),"utf-8")),s=g.fromJson(n,{outdir:a(t,"../client"),serverOutDir:t,serverMode:!0,contentDir:""});if(await R.instance().init({ignoreTokenExpiration:!0}),O()){await x.init(t);const r=await y.getInstance({baseDbDir:t});setInterval(()=>r.clearExpired(),300*1e3)}m(s).catch(r=>{console.error(r)});async function m(r){u.initialize();const e=await v();S(e,r,{readStaticAsset:async o=>d(o),resolveRouteData:async o=>w(o.slug,r.outdir)}),b.printErrors();const i=c();return await E(e,i??process.env.PORT??4e3),P(),T(r.config)&&N(r.serverOutDir,r.config.scorecards),e}}export{_ as renderPage};
|
|
@@ -6,6 +6,7 @@ export declare class KvRemoteRepository extends BaseRepository {
|
|
|
6
6
|
#private;
|
|
7
7
|
constructor(dbConnection: DatabaseConnection);
|
|
8
8
|
static getInstance(options: RepositoryInstanceOptions): Promise<KvRemoteRepository | null>;
|
|
9
|
+
sync(): Promise<void>;
|
|
9
10
|
get<T extends KvValue = KvValue>(key: KvKey): Promise<T | null>;
|
|
10
11
|
getMany<T extends KvValue = KvValue>(keys: KvKey[]): Promise<(KvListEntry<T> | null)[]>;
|
|
11
12
|
list<T extends KvValue = KvValue>(selector: KvListSelector, options?: KvListOptions): Promise<KvListResponse<T>>;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{eq as E,and as g,gte as m,gt as M,lt as f,asc as
|
|
1
|
+
import{eq as E,and as g,gte as m,gt as M,lt as f,asc as D,desc as B,or as K,isNull as b,sql as c,inArray as q,count as N}from"drizzle-orm";import{logger as d}from"../../../tools/notifiers/logger.js";import{kvTable as t}from"../../../providers/database/databases/sqld-sqlite/schemas/kv-table.js";import{BaseRepository as $}from"../../../providers/database/base-repository.js";import{DatabaseConnectionFactory as I}from"../../../providers/database/database-connection-factory.js";import{createKvValue as S}from"../mappers/create-kv-value.js";import{createKvDbRecord as V,encodeKvKey as l}from"../mappers/create-kv-db-record.js";import{decodeCursor as L}from"../helpers/decode-cursor.js";import{encodeCursor as Q}from"../helpers/encode-cursor.js";import{createKvListEntry as C}from"../mappers/create-kv-list-entry.js";const U="";class u extends ${static#e;#t=!1;constructor(e){super(e)}static async getInstance(e){if(!u.#e)try{const r=await I.create("sqld-remote",e);if(!r)return u.#e=null,null;u.#e=new u(r)}catch(r){return d.error("Error creating kv remote repository",r),u.#e=null,null}return u.#e}async sync(){if(this.isNonRemoteDatabaseMode()){this.#t||(d.warn(`KV database is currently operating in local mode: not connected to the remote database.
|
|
2
|
+
All changes and data will only persist locally and will not be synced remotely.`),this.#t=!0);return}await this.databaseClient.sync()}async get(e){try{const r=l(e),n=await this.databaseClient.client.select().from(t).where(g(E(t.encodedKey,r),K(b(t.expiresAt),m(c`datetime(${t.expiresAt})`,c`datetime('now')`)))).get();return n?S(n):null}catch(r){return d.error("Error getting kv entry by key",r),null}}async getMany(e){try{if(e.length===0)return[];const r=e.map(i=>l(i)),n=K(b(t.expiresAt),m(c`datetime(${t.expiresAt})`,c`datetime('now')`)),a=await this.databaseClient.client.select().from(t).where(g(q(t.encodedKey,r),n)).all(),s=new Map(a.map(i=>[i.encodedKey,i]));return e.map((i,w)=>{const h=r[w],x=s.get(h);return x?C(x):null})}catch(r){return d.error("Error getting multiple kv entries",r),[]}}async list(e,r){try{const n=r?.limit??100,a=r?.reverse??!1,s=[],v=K(b(t.expiresAt),m(c`datetime(${t.expiresAt})`,c`datetime('now')`));if(s.push(v),"prefix"in e){const o=l(e.prefix),y="start"in e?l(e.start):o,k="end"in e?l(e.end):o+U;s.push(m(t.encodedKey,y)),s.push(f(t.encodedKey,k))}else if("start"in e&&"end"in e){const o=l(e.start),y=l(e.end);s.push(m(t.encodedKey,o)),s.push(f(t.encodedKey,y))}if(r?.cursor){const o=L(r.cursor),y=a?f(t.encodedKey,o):M(t.encodedKey,o);s.push(y)}const i=this.databaseClient.client.select().from(t),w=s.length>0?i.where(g(...s)):i,h=this.databaseClient.client.select({count:N()}).from(t),A=(await(s.length>0?h.where(g(...s)):h).get())?.count??0,p=await w.orderBy(a?B(t.encodedKey):D(t.encodedKey)).limit(n).all();return{items:p.map(o=>C(o)),total:A,cursor:A>p.length?Q(p[p.length-1]?.encodedKey):null}}catch(n){return d.error("Error listing kv entries",n),{items:[],total:0,cursor:null}}}async set(e,r,n){try{const a=V({key:e,value:r,ttlInSeconds:n?.ttlInSeconds});return await this.databaseClient.client.insert(t).values(a).onConflictDoUpdate({target:[t.encodedKey],set:{value:a.value,expiresAt:a.expiresAt,updatedAt:a.updatedAt}}),C(a)}catch(a){return d.error("Error saving kv entry",a),null}}async delete(e){try{const r=l(e);await this.databaseClient.client.delete(t).where(E(t.encodedKey,r))}catch(r){d.error("Error deleting kv entry by key",r)}}async clearExpired(){try{await this.databaseClient.client.delete(t).where(f(c`datetime(${t.expiresAt})`,c`datetime('now')`))}catch(e){d.error("Error clearing expired kv entries",e)}}async transaction(e){return this.databaseClient.transactionsManager.transaction(async()=>e({get:async n=>this.get(n),getMany:async n=>this.getMany(n),set:async(n,a,s)=>this.set(n,a,s),delete:async n=>this.delete(n)}))}}export{U as KV_KEY_END_BOUNDARY,u as KvRemoteRepository};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{KvRemoteRepository as l}from"../repositories/kv-remote-repository.js";import{kvKeyValidator as a,kvListOptionsValidator as h,kvListSelectorValidator as u,kvSetOptionsValidator as c}from"../schemas/kv-schemas.js";class i{static#s;#t;constructor(t){this.#t=t}static async#r(t){const s=await l.getInstance(t),n=new i(s);i.#s=n}static async getInstance(t){return i.#s||await i.#r(t),i.#s}async get(t){const s=a.parse(t);return await this.#t?.sync(),await this.#t?.get(s)??null}async getMany(t){if(t.length===0)return[];const s=t.map(n=>a.parse(n));return await this.#t?.sync(),await this.#t?.getMany(s)??[]}async list(t,s){const n=u.parse(t),e=h.parse(s??{});return await this.#t?.sync(),await this.#t?.list(n,e)??{items:[],total:0,cursor:null}}async set(t,s,n){const e=a.parse(t),r=c.parse(n??{});return this.#e(s),this.#n(s),await this.#t?.set(e,s,r)??null}async delete(t){const s=a.parse(t);return this.#t?.delete(s)}async clearExpired(){return await this.#t?.clearExpired()}async transaction(t){if(!this.#t)throw new Error("Remote repository not available for transactions");return await this.#t.sync(),this.#t.transaction(async s=>t({get:async e=>{const r=a.parse(e);return s.get(r)},getMany:async e=>{const r=e.map(o=>a.parse(o));return s.getMany(r)},set:async(e,r,o)=>{const y=a.parse(e),p=c.parse(o);return this.#e(r),this.#n(r),s.set(y,r,p)},delete:async e=>{const r=a.parse(e);return s.delete(r)}}))}#e(t){try{JSON.stringify(t)}catch(s){const n=s instanceof Error?s.message:"Unknown error";throw new Error(`Value is not JSON serializable: ${n}`)}}#n(t){const n=JSON.stringify(t),e=Buffer.byteLength(n,"utf8");if(e>1048576){const r=(e/1024).toFixed(2);throw new Error(`Value size (${r} KB) exceeds the maximum allowed size of 1 MB (1024 KB)`)}}}export{i as KvService};
|
|
1
|
+
import{KvRemoteRepository as l}from"../repositories/kv-remote-repository.js";import{kvKeyValidator as a,kvListOptionsValidator as h,kvListSelectorValidator as u,kvSetOptionsValidator as c}from"../schemas/kv-schemas.js";class i{static#s;#t;constructor(t){this.#t=t}static async#r(t){const s=await l.getInstance(t),n=new i(s);i.#s=n}static async getInstance(t){return i.#s||await i.#r(t),i.#s}async get(t){const s=a.parse(t);return await this.#t?.sync(),await this.#t?.get(s)??null}async getMany(t){if(t.length===0)return[];const s=t.map(n=>a.parse(n));return await this.#t?.sync(),await this.#t?.getMany(s)??[]}async list(t,s){const n=u.parse(t),e=h.parse(s??{});return await this.#t?.sync(),await this.#t?.list(n,e)??{items:[],total:0,cursor:null}}async set(t,s,n){const e=a.parse(t),r=c.parse(n??{});return this.#e(s),this.#n(s),await this.#t?.set(e,s,r)??null}async delete(t){const s=a.parse(t);return this.#t?.delete(s)}async clearExpired(){return await this.#t?.clearExpired()}async transaction(t){if(!this.#t)throw new Error("Remote repository not available for transactions");return await this.#t.sync(),this.#t.transaction(async s=>t({get:async e=>{const r=a.parse(e);return s.get(r)},getMany:async e=>{const r=e.map(o=>a.parse(o));return s.getMany(r)},set:async(e,r,o)=>{const y=a.parse(e),p=c.parse(o??{});return this.#e(r),this.#n(r),s.set(y,r,p)},delete:async e=>{const r=a.parse(e);return s.delete(r)}}))}#e(t){try{JSON.stringify(t)}catch(s){const n=s instanceof Error?s.message:"Unknown error";throw new Error(`Value is not JSON serializable: ${n}`)}}#n(t){const n=JSON.stringify(t),e=Buffer.byteLength(n,"utf8");if(e>1048576){const r=(e/1024).toFixed(2);throw new Error(`Value size (${r} KB) exceeds the maximum allowed size of 1 MB (1024 KB)`)}}}export{i as KvService};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{writeFileSync as l}from"fs";import o from"path";import{dump as d}from"js-yaml";import{PUBLIC_API_DEFINITIONS_FOLDER as u,PUBLIC_STATIC_FOLDER as m}from"../../constants/common.js";import{logger as x}from"../../tools/notifiers/logger.js";import{ensureDir as g}from"../../utils/fs.js";const c=new Map;function _(
|
|
1
|
+
import{writeFileSync as l}from"fs";import o from"path";import{dump as d}from"js-yaml";import{PUBLIC_API_DEFINITIONS_FOLDER as u,PUBLIC_STATIC_FOLDER as m}from"../../constants/common.js";import{logger as x}from"../../tools/notifiers/logger.js";import{ensureDir as g}from"../../utils/fs.js";const c=new Map;function _(e,t,i){const r=u.slice(1);try{for(const s of e){const{documentWithReferences:f,relativePath:n}=s;if(c.get(n)!==i){if(n.startsWith(m+"/")){const a=o.posix.extname(n);p({outDir:t,definitionFolder:".",relativePath:n.replace(m+"/",""),definitionString:a===".json"?JSON.stringify(f,null,2):d(f)}),c.set(n,i);continue}p({outDir:t,definitionFolder:r,relativePath:F(n,".json"),definitionString:JSON.stringify(f,null,2)}),c.set(n,i)}}}catch(s){x.error("failed to store definition bundles",s)}}function F(e,t){const i=o.posix.dirname(e),r=o.posix.basename(e,o.posix.extname(e))+t;return o.posix.join(i,r)}function p({outDir:e,definitionString:t,relativePath:i,definitionFolder:r}){l(g(o.resolve(e,`${r}/${i}`)),t,"utf8")}export{F as replaceFileExtension,_ as storeDefinitionBundles};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import l from"styled-components";import*as o from"react";import{RedoclyAsyncAPIDocs as d}from"@redocly/asyncapi-docs";import{withPathPrefix as m}from"@redocly/theme/core/utils";import{usePageSharedData as p}from"../../../../client/app/hooks";import{useCollectMarkdocOptions as f}from"./helpers";function
|
|
1
|
+
import l from"styled-components";import*as o from"react";import{RedoclyAsyncAPIDocs as d}from"@redocly/asyncapi-docs";import{withPathPrefix as m}from"@redocly/theme/core/utils";import{usePageSharedData as p}from"../../../../client/app/hooks";import{useCollectMarkdocOptions as f}from"./helpers";function h({pageProps:t}){const a=p("AsyncApiDefinition"),{document:i,apiItems:r,protocol:e,downloadUrls:n}=a,c=m(t?.settings?.baseUrlPath),s=f(t);return o.createElement(u,null,o.createElement(d,{pageProps:t,document:i,apiItems:r,routingBasePath:c,protocol:e,downloadUrls:n,markdocOptions:s}))}const u=l.div`
|
|
2
2
|
a[id],
|
|
3
3
|
a[data-section-id],
|
|
4
4
|
div[data-section-id] {
|
|
5
|
-
scroll-margin-top: calc(
|
|
5
|
+
scroll-margin-top: calc(
|
|
6
|
+
var(--navbar-height) + var(--banner-height) + var(--panel-gap-vertical)
|
|
7
|
+
);
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
--sidebar-width: 0px;
|
|
9
|
-
`;export{
|
|
11
|
+
`;export{h as default};
|
|
@@ -8,6 +8,7 @@ import type { TransactionsManager } from '../../../providers/database/transactio
|
|
|
8
8
|
import type { CreateEntityParams } from './repositories/local/catalog-entities-local-write-repository.js';
|
|
9
9
|
import type { Filter } from '../../../providers/database/pagination/types.js';
|
|
10
10
|
import type { ScorecardsStatus } from '../entities/types.js';
|
|
11
|
+
import type { GetEntityByIdParams } from '../types/params.js';
|
|
11
12
|
import { type EntityDtoSchema, type EntityRelationDtoSchema } from '../schemas/dto-schemas.js';
|
|
12
13
|
import { CatalogEntitiesLocalRepository } from './repositories/local/catalog-entities-local-repository.js';
|
|
13
14
|
import { CatalogEntitiesRemoteRepository } from './repositories/remote/catalog-entities-remote-repository.js';
|
|
@@ -25,8 +26,13 @@ export declare class CatalogEntitiesService {
|
|
|
25
26
|
constructor(localRepository: CatalogEntitiesLocalRepository, remoteRepository: CatalogEntitiesRemoteRepository | null);
|
|
26
27
|
static getInstance(options: ServiceInstanceOptions): Promise<CatalogEntitiesService>;
|
|
27
28
|
transaction<T>(...args: Parameters<TransactionsManager['transaction']>): Promise<T>;
|
|
28
|
-
getEntities(paginationParams
|
|
29
|
-
|
|
29
|
+
getEntities({ paginationParams, rbacTeams, excludedTypes, excludedEntities, }: {
|
|
30
|
+
paginationParams: PaginationParams;
|
|
31
|
+
rbacTeams?: string[];
|
|
32
|
+
excludedTypes?: string[];
|
|
33
|
+
excludedEntities?: string[];
|
|
34
|
+
}): Promise<ListResponseResult<EntityReadModelSchema>>;
|
|
35
|
+
getEntityById(id: string, params?: GetEntityByIdParams): Promise<EntityReadModelSchema | null>;
|
|
30
36
|
getEntityKeysAndVersionsBySourceFile(sourceFile: string): Promise<Set<string>>;
|
|
31
37
|
getEntitiesCountByTypes(): Promise<{
|
|
32
38
|
type: string;
|
|
@@ -56,10 +62,8 @@ export declare class CatalogEntitiesService {
|
|
|
56
62
|
* @param relations - The entity to create.
|
|
57
63
|
*/
|
|
58
64
|
createEntityRelationsInLocalDatabase(relations: EntityRelationDtoSchema[]): Promise<void>;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}>): Promise<EntityReadModelSchema | null | undefined>;
|
|
62
|
-
deleteEntityByKey(key: string): Promise<string | null | undefined>;
|
|
65
|
+
updateEntity(incomingEntity: Partial<EntityDtoSchema>, entityToBeUpdated: EntityReadModelSchema): Promise<EntityReadModelSchema | null | undefined>;
|
|
66
|
+
deleteEntity(entityToBeRemoved: EntityReadModelSchema): Promise<string | null | undefined>;
|
|
63
67
|
/**
|
|
64
68
|
* Use only internally, everything that is created via API should be created in the remote database.
|
|
65
69
|
* @param filter - The conditions used to select which entities to delete.
|
|
@@ -82,12 +86,12 @@ export declare class CatalogEntitiesService {
|
|
|
82
86
|
}>>;
|
|
83
87
|
createEntityRelation(relation: EntityRelationDtoSchema): Promise<{
|
|
84
88
|
id: string;
|
|
89
|
+
createdAt: string;
|
|
90
|
+
updatedAt: string;
|
|
85
91
|
organizationId: string;
|
|
86
92
|
projectId: string;
|
|
87
93
|
sourceFile: string | null;
|
|
88
94
|
isDeleted: boolean | null;
|
|
89
|
-
createdAt: string;
|
|
90
|
-
updatedAt: string;
|
|
91
95
|
sourceKey: string;
|
|
92
96
|
targetKey: string;
|
|
93
97
|
sourceVersion: string;
|
|
@@ -101,12 +105,12 @@ export declare class CatalogEntitiesService {
|
|
|
101
105
|
createEntitiesRelations(entities: EntityRelationDtoSchema[]): Promise<BulkSyncResult<DatabaseEntityRelation>>;
|
|
102
106
|
updateEntityRelation(id: string, relation: EntityRelationDtoSchema): Promise<{
|
|
103
107
|
id: string;
|
|
108
|
+
createdAt: string;
|
|
109
|
+
updatedAt: string;
|
|
104
110
|
organizationId: string;
|
|
105
111
|
projectId: string;
|
|
106
112
|
sourceFile: string | null;
|
|
107
113
|
isDeleted: boolean | null;
|
|
108
|
-
createdAt: string;
|
|
109
|
-
updatedAt: string;
|
|
110
114
|
sourceKey: string;
|
|
111
115
|
targetKey: string;
|
|
112
116
|
sourceVersion: string;
|
|
@@ -123,12 +127,29 @@ export declare class CatalogEntitiesService {
|
|
|
123
127
|
* @param filter - The conditions used to select which entity relations to delete.
|
|
124
128
|
*/
|
|
125
129
|
deleteEntityRelationsInLocalDatabase(filter: Filter): Promise<void>;
|
|
126
|
-
getEntitiesWithRelations(paginationParams
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
+
getEntitiesWithRelations({ paginationParams, rbacTeams, excludedTypes, excludedEntities, }: {
|
|
131
|
+
paginationParams: PaginationParams;
|
|
132
|
+
rbacTeams?: string[];
|
|
133
|
+
excludedTypes?: string[];
|
|
134
|
+
excludedEntities?: string[];
|
|
135
|
+
}): Promise<BffCatalogEntityList>;
|
|
136
|
+
getEntityWithRelationsByKey({ entityKey, filter, rbacTeams, excludedTypes, excludedEntities, }: {
|
|
137
|
+
entityKey: string;
|
|
138
|
+
filter?: {
|
|
139
|
+
revision?: string | null;
|
|
140
|
+
version?: string | null;
|
|
141
|
+
};
|
|
142
|
+
rbacTeams?: string[];
|
|
143
|
+
excludedTypes?: string[];
|
|
144
|
+
excludedEntities?: string[];
|
|
130
145
|
}): Promise<BffCatalogEntity | null>;
|
|
131
|
-
getRelatedEntities(entityKey
|
|
146
|
+
getRelatedEntities({ entityKey, paginationParams, rbacTeams, excludedTypes, excludedEntities, }: {
|
|
147
|
+
entityKey: string;
|
|
148
|
+
paginationParams: PaginationParams;
|
|
149
|
+
rbacTeams?: string[];
|
|
150
|
+
excludedTypes?: string[];
|
|
151
|
+
excludedEntities?: string[];
|
|
152
|
+
}): Promise<BffCatalogRelatedEntityList>;
|
|
132
153
|
softDeleteEntitiesInLocalDatabase({ filter, revision, fileHash, }: {
|
|
133
154
|
filter: Filter;
|
|
134
155
|
revision: string;
|
|
@@ -137,7 +158,8 @@ export declare class CatalogEntitiesService {
|
|
|
137
158
|
listEntityRevisions(entityKey: string, version?: string | null): Promise<import("../schemas/read-model-schemas.js").EntityRevisionSummary[]>;
|
|
138
159
|
updateEntityScorecardsStatus(entityId: string, status: ScorecardsStatus): Promise<boolean>;
|
|
139
160
|
updateEntityScorecardsStatusIfCalculating(entityId: string, status: Extract<ScorecardsStatus, 'UP_TO_DATE' | 'OUTDATED'>): Promise<boolean>;
|
|
140
|
-
|
|
161
|
+
getOutdatedEntities(filter?: Filter): Promise<EntityReadModelSchema[]>;
|
|
162
|
+
setEntitiesAsOutdated(filter: Filter): Promise<void>;
|
|
141
163
|
}
|
|
142
164
|
export {};
|
|
143
165
|
//# sourceMappingURL=catalog-entities-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{deepMerge as w}from"../../../../utils/object/deep-merge.js";import{promiseMapLimit as u}from"../../../utils/async/promise-map-limit.js";import{logger as c}from"../../../tools/notifiers/logger.js";import{isWebView as y}from"../../../../utils/env/is-web-view.js";import{entityRelationDtoSchema as m}from"../schemas/dto-schemas.js";import{CatalogEntitiesLocalRepository as R}from"./repositories/local/catalog-entities-local-repository.js";import{CatalogEntitiesRemoteRepository as p}from"./repositories/remote/catalog-entities-remote-repository.js";import{prepareListResponse as l}from"../../../web-server/utils/prepare-list-response.js";import{ENTITY_RELATION_FROM_DATABASE as E}from"./mappers/field-transformations.js";import{createValidator as f}from"../utils/ajv-validator.js";import{hasOptionsChanged as g}from"../utils/has-options-changed.js";const h=15,I=f(m,{errorPrefix:"Entity relation validation failed:",dataVar:"entity relation"});class s{static#a;static#i;#t;#e;constructor(t,e){this.#t=t,this.#e=e}static async#n(t){const[e,a]=await Promise.all([R.getInstance(t),t.runOnlyLocalDatabase?null:p.getInstance(t)]),i=new s(e,a);a&&(process.env.NODE_ENV==="development"&&c.info("Attaching remote database to local database"),await i.#t.attachDatabase(a.path)),s.#a=i,s.#i=t}static async getInstance(t){return t.runOnlyLocalDatabase===void 0&&(t.runOnlyLocalDatabase=process.env.REDOCLY_LOCAL_DEV==="true"||process.env.CI==="true"),t.removeExisting===void 0&&(t.removeExisting=!1),(!s.#a||g(s.#i,t))&&await s.#n(t),s.#a}async transaction(...t){return this.#t.transactionsManager.transaction(...t)}async getEntities({paginationParams:t,rbacTeams:e,excludedTypes:a,excludedEntities:i}){await this.#e?.sync();const{items:n,total:r,hasMore:o}=await this.#t.getEntities({paginationParams:t,rbacTeams:e,excludedTypes:a,excludedEntities:i});return l({data:n,params:t,totalCount:r,hasMore:o})}async getEntityById(t,e){return await this.#e?.sync(),await this.#t.getEntityById(t,e)}async getEntityKeysAndVersionsBySourceFile(t){return await this.#e?.sync(),this.#t.getEntityKeysAndVersionsBySourceFile(t)}async getEntitiesCountByTypes(){return await this.#e?.sync(),this.#t.getEntitiesCountByTypes()}async getCatalogFilters(t){return await this.#e?.sync(),this.#t.getCatalogFilters(t)}async createEntity(t){if(y())throw new Error("Entity creation is not supported in the WebView");return this.#e?this.#e.createEntity(t):(c.warn("No remote database found"),null)}async createEntities(t){if(y())throw new Error("Entity creation is not supported in the WebView");const e=this.#e;return e?await u(t,h,async a=>e.createEntity(a).then(i=>({status:"ok",resource:i})).catch(i=>({key:a.key,status:"error",error:i}))):(c.warn("No remote database found"),[])}getEntitySources(){return this.#t.getEntitySources()}async createEntityInLocalDatabase(t){return this.#t.createEntity(t)}async createEntitiesInLocalDatabase(t){await this.#t.createEntities(t)}async createEntityRelationInLocalDatabase(t){await this.#t.createEntityRelation(t)}async createEntityRelationsInLocalDatabase(t){await this.#t.createEntityRelations(t)}async updateEntity(t,e){if(y())throw new Error("Entity update is not supported in the WebView");return await this.#e?.updateEntity(t,e)}async deleteEntity(t){if(y())throw new Error("Entity deletion is not supported in the WebView");return await this.#e?.deleteEntity(t)}async deleteEntitiesInLocalDatabase(t){await this.#t.deleteEntities(t)}async getEntityRelationById(t){return await this.#e?.sync(),await this.#t.getEntityRelationById(t)}async getEntitiesRelations(t={}){await this.#e?.sync();const{items:e,total:a,hasMore:i}=await this.#t.getEntitiesRelations(t);return l({data:e,params:t,totalCount:a,nameTransformationsFromDatabase:E,hasMore:i})}async createEntityRelation(t){return this.#e?.createEntityRelation(t)}async createEntitiesRelations(t){const e=this.#e;return e?await u(t,h,async a=>e.createEntityRelation(a).then(i=>({status:"ok",resource:i})).catch(i=>({key:a.sourceKey,status:"error",error:i}))):(c.warn("No remote database found"),[])}async updateEntityRelation(t,e){const a=await this.#t.getEntityRelationById(t);if(!a)throw new Error(`Entity relation with id ${t} not found`);const i=w(a,e),n=I(i);return this.#e?.createEntityRelation(n)}async deleteEntityRelation(t){let e=await this.#e?.deleteEntityRelation(t);return e||(e=await this.#t.deleteEntityRelation(t)),e}async deleteEntityRelationsInLocalDatabase(t){await this.#t.deleteEntityRelations(t)}async getEntitiesWithRelations({paginationParams:t,rbacTeams:e,excludedTypes:a,excludedEntities:i}){await this.#e?.sync();const{items:n,total:r,hasMore:o}=await this.#t.getEntitiesWithRelations({paginationParams:t,rbacTeams:e,excludedTypes:a,excludedEntities:i});return l({data:n,params:t,totalCount:r,hasMore:o})}async getEntityWithRelationsByKey({entityKey:t,filter:e,rbacTeams:a,excludedTypes:i,excludedEntities:n}){return this.#t.getEntityWithRelationsByKey({entityKey:t,filter:e,rbacTeams:a,excludedTypes:i,excludedEntities:n})}async getRelatedEntities({entityKey:t,paginationParams:e,rbacTeams:a,excludedTypes:i,excludedEntities:n}){await this.#e?.sync();const{items:r,total:o,hasMore:d}=await this.#t.getRelatedEntities({key:t,paginationParams:e,rbacTeams:a,excludedTypes:i,excludedEntities:n});return l({data:r,params:e,totalCount:o,nameTransformationsFromDatabase:E,hasMore:d})}async softDeleteEntitiesInLocalDatabase({filter:t,revision:e,fileHash:a}){await this.#t.softDeleteEntities({filter:t,revision:e,fileHash:a})}async listEntityRevisions(t,e){return await this.#e?.sync(),this.#t.listEntityRevisions(t,e)}async updateEntityScorecardsStatus(t,e){return await this.#e?.sync(),this.#t.updateEntityScorecardsStatus(t,e)}async updateEntityScorecardsStatusIfCalculating(t,e){return await this.#e?.sync(),this.#t.updateEntityScorecardsStatusIfCalculating(t,e)}async getOutdatedEntities(t){return await this.#e?.sync(),this.#t.getOutdatedEntities(t)}async setEntitiesAsOutdated(t){await this.#e?.sync(),await this.#t.setEntitiesAsOutdated(t)}}export{s as CatalogEntitiesService};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DatabaseEntityAttributesDto } from '../../../../providers/database/databases/catalog-sqlite/schemas/entities-attributes-table';
|
|
2
|
+
export declare function createEntityAttributesDbRecord({ rbacTeams, entityKey, organizationId, projectId, }: {
|
|
3
|
+
rbacTeams: string[];
|
|
4
|
+
entityKey: string;
|
|
5
|
+
organizationId: string;
|
|
6
|
+
projectId: string;
|
|
7
|
+
}): DatabaseEntityAttributesDto;
|
|
8
|
+
//# sourceMappingURL=create-entity-attributes-db-record.d.ts.map
|
package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ulid as o}from"ulid";function c({rbacTeams:e,entityKey:r,organizationId:i,projectId:n}){const t=new Date().toISOString();return{id:`cea_${o()}`,organizationId:i,projectId:n,entityKey:r,rbacTeams:JSON.stringify(e),createdAt:t,updatedAt:t}}export{c as createEntityAttributesDbRecord};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{logger as
|
|
1
|
+
import{logger as r}from"../../../../tools/notifiers/logger.js";import{entityDatabaseSchema as l}from"../../schemas/database-schemas.js";import{validateWithResult as t}from"../../utils/ajv-validator.js";const o=e=>"project_id"in e&&"organization_id"in e&&"created_at"in e;function d(e){if(o(e)){const s=t(l,e);if(!s.success)return r.warn(`Invalid database catalog entity for entity ${e.key}, error: ${s.error}`),null;const a=s.data||{};return{id:a.id,type:a.type,key:a.key||"",title:a.title||"",summary:a.summary||null,tags:a.tags?JSON.parse(a.tags):null,metadata:a.metadata?JSON.parse(a.metadata):null,git:a.git?JSON.parse(a.git):null,contact:a.contact?JSON.parse(a.contact):null,links:a.links?JSON.parse(a.links):null,source:a.source||"file",sourceFile:a.source_file||null,version:a.version||null,revision:a.revision??"",hash:a.hash||null,isCurrent:a.is_current,isDefaultVersion:a.is_default_version??!1,createdAt:a.created_at||null,updatedAt:a.updated_at||null,isDeleted:a.is_deleted??!1,object:"catalogEntity",rbacTeams:a.rbac_teams?JSON.parse(a.rbac_teams):[]}}return{...e,tags:e.tags?JSON.parse(e.tags):null,metadata:e.metadata?JSON.parse(e.metadata):null,git:e.git?JSON.parse(e.git):null,contact:e.contact?JSON.parse(e.contact):null,links:e.links?JSON.parse(e.links):null,source:e.source||"file",version:e.version||null,revision:e.revision??"",hash:e.hash||null,isCurrent:e.isCurrent,isDefaultVersion:e.isDefaultVersion??!1,isDeleted:e.isDeleted??!1,object:"catalogEntity"}}export{d as createEntityReadModel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readString as e}from"../../utils/read-string.js";function
|
|
1
|
+
import{readString as e}from"../../utils/read-string.js";function y(t,i=0){return typeof t=="number"?t:i}function s(t){const i=e(t.target_key)??e(t.entityKey)??e(t.entity_key)??"",n=e(t.target_revision)??e(t.entityRevision)??e(t.entity_revision)??"",r=e(t.source_to_target_relation)??e(t.relationName)??e(t.relation_name)??"",o=e(t.direction)??"outgoing",a=y(t.priority,0);return{targetKey:i,targetRevision:n,sourceToTargetRelation:r,direction:o,priority:a}}export{s as mapEntityRelationRow};
|
package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DatabaseClient } from '../../../../../providers/database/client.js';
|
|
2
|
+
export declare class RevisionRepository {
|
|
3
|
+
#private;
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(db: DatabaseClient);
|
|
6
|
+
shouldSetNewCurrentRevision({ key, version, revision, }: {
|
|
7
|
+
key: string;
|
|
8
|
+
version: string | null;
|
|
9
|
+
revision: string | null;
|
|
10
|
+
}): Promise<boolean>;
|
|
11
|
+
markAllRevisionsAsNotCurrent(key: string): Promise<void>;
|
|
12
|
+
getCurrentEntityRevision(key: string): Promise<{
|
|
13
|
+
version: string;
|
|
14
|
+
revision: string;
|
|
15
|
+
} | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Ensures that the one of the revisions has current and default version.
|
|
18
|
+
*/
|
|
19
|
+
ensureDefaultAndCurrentRevisionForKey(key: string): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Determines if entity creation should be skipped.
|
|
22
|
+
* We only skip if the hash matches the MOST RECENT revision for the same key and version.
|
|
23
|
+
* This allows creating new revisions when reverting to previous content states.
|
|
24
|
+
*/
|
|
25
|
+
shouldSkipRevisionCreation(key: string, version: string | null, hash: string, isRootEntity?: boolean, isDeleted?: boolean): Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=revision-repository.d.ts.map
|
package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{and as l,desc as c,eq as s,isNull as d}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as h}from"@redocly/theme/core/constants";import{entitiesTable as e}from"../../../../../providers/database/databases/catalog-sqlite/schemas/entities-table.js";import{compareVersions as f}from"../../../utils/version-compare.js";import{VersionRepository as v}from"./version-repository.js";class V{db;#e;constructor(t){this.db=t,this.#e=new v(t)}async shouldSetNewCurrentRevision({key:t,version:i,revision:r}){const n=await this.getCurrentEntityRevision(t);if(!n)return!0;if(i){const u=await this.#e.doesVersionExist(t,i),o=f(i,n.version)>0,a=n.version===h&&i!==h;if(!u&&(o||a))return!0}return!!(i&&r&&i===n.version&&r>=n.revision)}async markAllRevisionsAsNotCurrent(t){await this.db.client.update(e).set({isCurrent:!1}).where(s(e.key,t)).run()}async getCurrentEntityRevision(t){return await this.db.client.select({version:e.version,revision:e.revision}).from(e).where(l(s(e.key,t),s(e.isCurrent,!0))).orderBy(c(e.revision)).limit(1).get()??null}async ensureDefaultAndCurrentRevisionForKey(t){const i=await this.#e.getOrderedVersionListForKey(t),r=this.#e.getLatestVersion(i);r&&await this.db.client.update(e).set({isDefaultVersion:!0,isCurrent:!0}).where(l(s(e.key,t),s(e.revision,r.revision),r.version?s(e.version,r.version):d(e.version))).run()}async shouldSkipRevisionCreation(t,i,r,n,u){if(n||u)return!1;const o=await this.db.client.select({hash:e.hash,isDeleted:e.isDeleted}).from(e).where(l(s(e.key,t),i?s(e.version,i):d(e.version))).orderBy(c(e.revision)).limit(1).run();if(o.rows.length===0)return!1;const a=o.rows[0];return a.is_deleted?!1:a.hash===r}}export{V as RevisionRepository};
|