@redocly/realm 0.129.2 → 0.130.0-custom.10
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 +508 -83
- package/dist/bin.d.ts +1 -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/eject/resolveTheme.d.ts +1 -1
- package/dist/cli/eject/resolveTheme.js +1 -1
- package/dist/cli/prepare/copy-env-files.js +1 -1
- package/dist/cli/prepare/index.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/App.js +1 -1
- package/dist/client/ErrorBoundary.js +1 -1
- package/dist/client/app/DevModeFloatingBar/index.d.ts +3 -0
- package/dist/client/app/DevModeFloatingBar/index.js +43 -0
- package/dist/client/app/Feedback/useSubmitFeedback.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/Sidebar/helpers/filter-out-versioned-items.d.ts +23 -0
- package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.js +1 -0
- package/dist/client/app/Sidebar/useSidebarItems.d.ts +2 -2
- package/dist/client/app/Sidebar/useSidebarItems.js +1 -1
- package/dist/client/app/hooks/catalog/useCatalogClassic.d.ts +1 -1
- 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/codeHighlight/useCodeHighlight.js +1 -1
- package/dist/client/app/hooks/useAutoScroll.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/hooks/utils/pathname-matches-active-section.d.ts +6 -0
- package/dist/client/app/hooks/utils/pathname-matches-active-section.js +1 -0
- package/dist/client/app/markdoc/custom-components/html-script.js +1 -0
- package/dist/client/app/markdoc/custom-components/openapi/openapi-code-sample.js +1 -0
- package/dist/client/app/markdoc/custom-components/openapi/openapi-response-sample.js +1 -0
- package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -0
- package/dist/client/app/markdoc/hooks/use-store.js +1 -0
- package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
- package/dist/client/app/search/message-handlers.d.ts +29 -0
- package/dist/client/app/search/message-handlers.js +1 -0
- package/dist/client/app/search/sse-parser.d.ts +10 -0
- package/dist/client/app/search/sse-parser.js +2 -0
- package/dist/client/app/search/useAiSearch.d.ts +9 -11
- 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/client/constants/ai-search.d.ts +30 -0
- package/dist/client/constants/ai-search.js +1 -0
- package/dist/client/constants/common.d.ts +2 -0
- package/dist/client/constants/common.js +1 -0
- package/dist/client/constants/index.d.ts +2 -0
- package/dist/client/constants/index.js +1 -0
- package/dist/client/runtime/useSocketMessages.js +1 -1
- package/dist/{server/plugins/asyncapi-docs/template → client/templates/asyncapi-docs}/helpers.d.ts +3 -3
- package/dist/client/templates/asyncapi-docs/helpers.js +1 -0
- package/dist/{server/plugins/asyncapi-docs/template/AsyncApiDocs.d.ts → client/templates/asyncapi-docs/template.d.ts} +3 -2
- package/dist/client/templates/asyncapi-docs/template.js +15 -0
- package/dist/{server/plugins/openapi-docs/template → client/templates/openapi-docs}/helpers.d.ts +2 -2
- package/dist/client/templates/openapi-docs/helpers.js +5 -0
- package/dist/{server/plugins/openapi-docs/template/OpenAPIDocs.d.ts → client/templates/openapi-docs/template.d.ts} +1 -1
- package/dist/client/templates/openapi-docs/template.js +18 -0
- package/dist/client/types/ai-search.d.ts +73 -0
- package/dist/client/types/ai-search.js +0 -0
- package/dist/client/types/index.d.ts +1 -0
- package/dist/client/utils/catalog/inject-catalog-items.d.ts +1 -1
- package/dist/client/utils/catalog/inject-catalog-items.js +1 -1
- package/dist/constants/catalog-entities.d.ts +12 -0
- package/dist/constants/catalog-entities.js +1 -0
- package/dist/constants/common.d.ts +6 -4
- 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/plugins/markdown/markdoc → markdoc}/helpers/get-inner-text.d.ts +1 -1
- package/dist/markdoc/helpers/get-inner-text.js +2 -0
- package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/get-variable.d.ts +2 -2
- package/dist/markdoc/helpers/get-variable.js +1 -0
- package/dist/markdoc/nodes/fence/index.js +1 -0
- package/dist/markdoc/nodes/heading.js +1 -0
- package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/index.d.ts +6 -6
- package/dist/markdoc/tags/json-example.d.ts +3 -0
- package/dist/markdoc/tags/json-schema.d.ts +3 -0
- package/dist/markdoc/tags/openapi-code-sample.d.ts +3 -0
- package/dist/markdoc/tags/openapi-example.d.ts +3 -0
- package/dist/markdoc/tags/openapi-response-sample.d.ts +3 -0
- package/dist/markdoc/tags/replay-openapi.d.ts +3 -0
- package/dist/markdoc/types.d.ts +8 -0
- package/dist/markdoc/types.js +0 -0
- package/dist/server/api-routes/execute-api-route.js +1 -1
- package/dist/server/api-routes/import-api-routes-handlers.js +1 -1
- package/dist/server/api-routes/run-api-routes-worker.js +1 -1
- package/dist/server/config/env-config.d.ts +17 -0
- package/dist/server/config/env-config.js +1 -0
- package/dist/server/config/env-schema.d.ts +245 -0
- package/dist/server/config/env-schema.js +3 -0
- package/dist/server/config/env-schemas/api-urls.d.ts +24 -0
- package/dist/server/config/env-schemas/api-urls.js +1 -0
- package/dist/server/config/env-schemas/auth.d.ts +42 -0
- package/dist/server/config/env-schemas/auth.js +1 -0
- package/dist/server/config/env-schemas/catalog.d.ts +12 -0
- package/dist/server/config/env-schemas/catalog.js +1 -0
- package/dist/server/config/env-schemas/database.d.ts +15 -0
- package/dist/server/config/env-schemas/database.js +1 -0
- package/dist/server/config/env-schemas/environment-detection.d.ts +24 -0
- package/dist/server/config/env-schemas/environment-detection.js +1 -0
- package/dist/server/config/env-schemas/feature-flags.d.ts +24 -0
- package/dist/server/config/env-schemas/feature-flags.js +1 -0
- package/dist/server/config/env-schemas/organization-project.d.ts +30 -0
- package/dist/server/config/env-schemas/organization-project.js +1 -0
- package/dist/server/config/env-schemas/scorecards.d.ts +12 -0
- package/dist/server/config/env-schemas/scorecards.js +1 -0
- package/dist/server/config/env-schemas/search.d.ts +21 -0
- package/dist/server/config/env-schemas/search.js +1 -0
- package/dist/server/config/env-schemas/server-config.d.ts +51 -0
- package/dist/server/config/env-schemas/server-config.js +1 -0
- package/dist/server/config/env-schemas/site.d.ts +12 -0
- package/dist/server/config/env-schemas/site.js +1 -0
- package/dist/server/config/env-schemas/ssr.d.ts +18 -0
- package/dist/server/config/env-schemas/ssr.js +1 -0
- package/dist/server/config/env-schemas/telemetry.d.ts +15 -0
- package/dist/server/config/env-schemas/telemetry.js +1 -0
- package/dist/server/config/env-schemas/test.d.ts +22 -0
- package/dist/server/config/env-schemas/test.js +1 -0
- package/dist/server/constants/common.d.ts +3 -0
- package/dist/server/constants/common.js +1 -1
- package/dist/server/constants/feedback.d.ts +6 -0
- package/dist/server/constants/feedback.js +1 -0
- package/dist/server/constants/plugins/catalog-entities.d.ts +1 -11
- package/dist/server/constants/plugins/catalog-entities.js +1 -1
- package/dist/server/entitlements/entitlements-provider.js +1 -1
- package/dist/server/esbuild/esbuild-logger.js +2 -2
- package/dist/server/esbuild/esbuild.js +3 -3
- package/dist/server/esbuild/plugins/assets-resolver.js +1 -1
- package/dist/server/esbuild/plugins/esbuild-compile-resolver.js +1 -1
- package/dist/server/esbuild/plugins/styled-components-ssr.js +1 -1
- package/dist/server/esbuild/plugins/themes-resolver.js +2 -2
- package/dist/server/{config/external-plugins.d.ts → external-plugins/resolve-external-plugins.d.ts} +2 -2
- package/dist/server/{config/external-plugins.js → external-plugins/resolve-external-plugins.js} +1 -1
- package/dist/server/fs/cache.js +1 -1
- package/dist/server/fs/content-fs.d.ts +1 -0
- package/dist/server/fs/content-fs.js +1 -1
- package/dist/server/fs/last-modified-tracker.js +1 -1
- package/dist/server/fs/utils/is-loader-cache-enabled.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/analytics/adobe/index.js +1 -1
- package/dist/server/plugins/analytics/amplitude/index.js +1 -1
- package/dist/server/plugins/analytics/fullstory/index.js +1 -1
- package/dist/server/plugins/analytics/ga/index.js +1 -1
- package/dist/server/plugins/analytics/gtm/browser-hooks.js +1 -1
- package/dist/server/plugins/analytics/gtm/index.js +1 -1
- package/dist/server/plugins/analytics/heap/index.js +1 -1
- package/dist/server/plugins/analytics/rudderstack/index.js +1 -1
- package/dist/server/plugins/analytics/segment/index.js +1 -1
- package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.js +3 -3
- package/dist/server/plugins/asyncapi-docs/get-server-props.js +1 -1
- package/dist/server/plugins/asyncapi-docs/index.js +1 -1
- package/dist/server/plugins/asyncapi-docs/search/get-ai-search-documents.js +27 -27
- package/dist/server/plugins/asyncapi-docs/search/schema-processor.js +1 -1
- package/dist/server/plugins/asyncapi-docs/search/search-resolver.js +1 -1
- package/dist/server/plugins/asyncapi-docs/store-definition-bundles.js +1 -1
- package/dist/server/plugins/catalog-classic/get-server-props.d.ts +8 -3
- package/dist/server/plugins/catalog-classic/get-server-props.js +1 -1
- package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +38 -64
- 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 +2 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/{create-entity-relation.d.ts → create-entity-relation-read-model.d.ts} +2 -2
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-read-model.js +1 -0
- 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 +41 -42
- 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 +5 -9
- 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/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 +6 -4
- 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 +26 -164
- package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.js +0 -1
- 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/index.js +1 -1
- package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
- package/dist/server/plugins/config-parser/loaders/nearest-redocly-config-loader.js +1 -1
- package/dist/server/plugins/config-parser/loaders/redocly-config-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/entitlements/index.js +1 -1
- package/dist/server/plugins/graphql-docs/graphql-doc-loader.js +1 -1
- package/dist/server/plugins/graphql-docs/index.js +1 -1
- package/dist/server/plugins/graphql-docs/search/search-resolver.js +1 -1
- package/dist/server/plugins/graphql-docs/template/GraphQLDocs.js +6 -2
- package/dist/server/plugins/lifecycle.js +2 -2
- package/dist/server/plugins/markdown/attribute-resolvers/code-walkthrough/filesets-resolver.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-code-snippet-from-file.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-html-href.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-html-source-attribute.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-image-src-set.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-image-src.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-schema-ref.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-native-md-link.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-nav-links.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-open-api-ref.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-parsed-yaml.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-raw-content.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-relative-or-cdn-icon.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-relative-path.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-svg-content.js +1 -1
- package/dist/server/plugins/markdown/compiler.d.ts +1 -0
- package/dist/server/plugins/markdown/compiler.js +1 -1
- package/dist/server/plugins/markdown/index.js +1 -1
- package/dist/server/plugins/markdown/is-partial.d.ts +1 -1
- package/dist/server/plugins/markdown/is-partial.js +1 -1
- package/dist/server/plugins/markdown/markdoc/import-user-tags.js +1 -1
- package/dist/server/plugins/markdown/markdoc/markdoc-options.js +1 -1
- package/dist/server/plugins/markdown/markdoc/partials.js +1 -1
- package/dist/server/plugins/markdown/markdoc/plugins/headings.js +1 -1
- package/dist/server/plugins/markdown/markdoc/plugins/render-mermaid.js +1 -1
- package/dist/server/plugins/markdown/markdoc/plugins/utils.js +1 -1
- package/dist/server/plugins/markdown/markdoc/resolve-raw-partials.d.ts +1 -1
- package/dist/server/plugins/markdown/markdoc/resolve-raw-partials.js +2 -2
- package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
- package/dist/server/plugins/markdown/runtime-transform.js +1 -1
- package/dist/server/plugins/markdown/search/get-ai-search-documents.js +1 -1
- package/dist/server/plugins/markdown/search/get-search-documents.js +2 -2
- package/dist/server/plugins/markdown/search/nodes/section-node.js +1 -1
- package/dist/server/plugins/markdown/search/search-resolver.js +1 -1
- package/dist/server/plugins/markdown/search/to-markdown.js +17 -13
- package/dist/server/plugins/markdown/search/walk-sections.js +1 -1
- package/dist/server/plugins/markdown/utils/stringify-tag-children-objects.js +1 -1
- package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.d.ts +58 -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 +10 -2
- package/dist/server/plugins/mcp/docs-mcp/tools/search.js +6 -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/servers/docs-server.d.ts +9 -2
- package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
- package/dist/server/plugins/mcp/types.d.ts +59 -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/nav-utils.d.ts +1 -1
- package/dist/server/plugins/nav-utils.js +1 -1
- package/dist/server/plugins/openapi-docs/decorators.d.ts +3 -0
- package/dist/server/plugins/openapi-docs/decorators.js +1 -1
- package/dist/server/plugins/openapi-docs/get-server-props-custom-fields.d.ts +2 -4
- package/dist/server/plugins/openapi-docs/get-server-props-custom-fields.js +1 -1
- package/dist/server/plugins/openapi-docs/get-server-props.js +1 -1
- package/dist/server/plugins/openapi-docs/index.js +1 -1
- package/dist/server/plugins/openapi-docs/load-definition.d.ts +1 -0
- package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
- package/dist/server/plugins/openapi-docs/openrpc-converter.d.ts +2 -0
- package/dist/server/plugins/openapi-docs/openrpc-converter.js +1 -0
- package/dist/server/plugins/openapi-docs/search/get-ai-search-documents.js +20 -20
- package/dist/server/plugins/openapi-docs/search/search-resolver.js +1 -1
- package/dist/server/plugins/openapi-docs/search-indexer.js +1 -1
- package/dist/server/plugins/openapi-docs/store-definition-bundles.js +1 -1
- package/dist/server/plugins/openapi-docs/utils.d.ts +1 -0
- package/dist/server/plugins/scorecard-classic/compute-scorecard.d.ts +2 -1
- package/dist/server/plugins/scorecard-classic/compute-scorecard.js +4 -4
- package/dist/server/plugins/scorecard-classic/get-scorecard-config.d.ts +2 -1
- package/dist/server/plugins/scorecard-classic/index.js +1 -1
- package/dist/server/plugins/scorecard-classic/lint.d.ts +1 -1
- package/dist/server/plugins/scorecard-classic/lint.js +1 -1
- package/dist/server/plugins/scorecard-classic/loaders/scorecard-config.js +1 -1
- package/dist/server/plugins/scorecard-classic/loaders/scorecard.d.ts +6 -4
- package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
- package/dist/server/plugins/scorecard-classic/shared-utils.d.ts +1 -1
- package/dist/server/plugins/scorecard-classic/shared-utils.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/Grid/Grid.d.ts +3 -1
- package/dist/server/plugins/scorecard-classic/template/Grid/Grid.js +3 -3
- package/dist/server/plugins/scorecard-classic/template/Grid/GridHeader.js +15 -9
- package/dist/server/plugins/scorecard-classic/template/Grid/GridRow.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/LevelIndicator.d.ts +1 -0
- package/dist/server/plugins/scorecard-classic/template/LevelIndicator.js +4 -4
- package/dist/server/plugins/scorecard-classic/template/components.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/index.styles.d.ts +1 -0
- package/dist/server/plugins/scorecard-classic/template/index.styles.js +92 -19
- package/dist/server/plugins/scorecard-classic/template/index.types.d.ts +5 -1
- package/dist/server/plugins/scorecard-classic/template/useData.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/views.js +1 -1
- package/dist/server/plugins/scorecard-classic/types.d.ts +5 -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/plugin.js +1 -1
- 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-semantic-documents.d.ts +11 -0
- package/dist/server/plugins/search/ai-indexer/prepare-semantic-documents.js +1 -0
- package/dist/server/plugins/search/documents/search-documents.js +1 -1
- package/dist/server/plugins/search/engines/flexsearch/index.js +1 -1
- package/dist/server/plugins/search/engines/typesense/index.js +1 -1
- package/dist/server/plugins/search/index.js +1 -1
- package/dist/server/plugins/search/llmstxt/index.js +5 -5
- package/dist/server/plugins/search/utils.d.ts +2 -0
- package/dist/server/plugins/search/utils.js +2 -2
- package/dist/server/plugins/sidebars/index.d.ts +0 -2
- package/dist/server/plugins/sidebars/index.js +3 -3
- 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/database-initialization-strategy.js +1 -1
- package/dist/server/providers/database/database-preconnect-service.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/drizzle.config.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/providers/database/sqld-not-running-error.d.ts +5 -0
- package/dist/server/providers/database/sqld-not-running-error.js +1 -0
- package/dist/server/ssr/render.js +1 -1
- package/dist/server/ssr/server-side-props/get-server-props-from-user-handler.js +1 -1
- package/dist/server/ssr/utils.js +8 -8
- package/dist/server/store.d.ts +16 -6
- package/dist/server/store.js +1 -1
- package/dist/server/telemetry/index.js +1 -1
- package/dist/server/tools/notifiers/formatter.js +3 -3
- package/dist/server/tools/notifiers/helpers/colors.js +1 -1
- package/dist/server/tools/notifiers/logger.js +2 -2
- package/dist/server/tools/notifiers/reporter.js +9 -9
- package/dist/server/tools/notifiers/terminal-manager.js +4 -4
- package/dist/server/types/plugins/common.d.ts +8 -1
- package/dist/server/types/plugins/markdown.d.ts +2 -7
- package/dist/server/types/plugins/scorecards.d.ts +30 -0
- package/dist/server/types/plugins/scorecards.js +0 -0
- package/dist/server/utils/ai-agent-detection.d.ts +16 -0
- package/dist/server/utils/ai-agent-detection.js +1 -0
- package/dist/server/utils/envs/get-api-route-allowed-env-variables.js +1 -1
- 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/fs.js +1 -1
- package/dist/server/utils/globs.js +1 -1
- package/dist/server/utils/index.d.ts +2 -2
- package/dist/server/utils/index.js +1 -1
- package/dist/server/utils/is-catalog-entities-enabled.js +1 -1
- package/dist/server/utils/is-scorecards-enabled.js +1 -1
- 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/report-all-errors.js +1 -1
- package/dist/server/utils/set-execution-mode.d.ts +5 -0
- package/dist/server/utils/set-execution-mode.js +1 -0
- package/dist/server/utils/time/with-timestamp.d.ts +42 -10
- package/dist/server/utils/time/with-timestamp.js +1 -1
- package/dist/server/version.js +1 -1
- package/dist/server/web-server/auth.d.ts +2 -0
- package/dist/server/web-server/auth.js +4 -4
- 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/http.js +2 -2
- package/dist/server/web-server/middleware/apiKeyMiddleware.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/middleware/corsMiddleware.js +1 -1
- package/dist/server/web-server/middleware/dynamic-middleware/dynamic-middleware.js +1 -1
- package/dist/server/web-server/middleware/idleTimeoutMiddleware.js +1 -1
- package/dist/server/web-server/middleware/responseHeadersMiddleware.js +1 -1
- package/dist/server/web-server/mime-types.js +1 -1
- package/dist/server/web-server/routes/ask-ai.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-relations.js +1 -1
- package/dist/server/web-server/routes/catalog/catalog.js +1 -1
- package/dist/server/web-server/routes/catalog/dto/read-entity-dto.d.ts +3 -0
- package/dist/server/web-server/routes/catalog/dto/read-entity-dto.js +0 -0
- package/dist/server/web-server/routes/catalog/helpers/create-entity-relation-update-schema.d.ts +43 -0
- package/dist/server/web-server/routes/catalog/helpers/create-entity-relation-update-schema.js +1 -0
- package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.d.ts +6823 -0
- package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.js +1 -0
- package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.d.ts +1102 -0
- package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.js +1 -0
- 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/catalog/mappers/map-entity-read-model-schema-to-entity-read-dto.d.ts +4 -0
- package/dist/server/web-server/routes/catalog/mappers/map-entity-read-model-schema-to-entity-read-dto.js +1 -0
- package/dist/server/web-server/routes/catalog/parsers/entities/parse-entities.d.ts +4 -0
- package/dist/server/web-server/routes/catalog/parsers/entities/parse-entities.js +1 -0
- package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity-update-data.d.ts +4 -0
- package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity-update-data.js +1 -0
- package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity.d.ts +4 -0
- package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity.js +1 -0
- package/dist/server/web-server/routes/catalog/parsers/relations/parse-entities-relations.d.ts +13 -0
- package/dist/server/web-server/routes/catalog/parsers/relations/parse-entities-relations.js +1 -0
- package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation-update-data.d.ts +13 -0
- package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation-update-data.js +1 -0
- package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation.d.ts +13 -0
- package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation.js +1 -0
- package/dist/server/web-server/routes/cors-proxy.d.ts +5 -0
- package/dist/server/web-server/routes/cors-proxy.js +2 -0
- package/dist/server/web-server/routes/dynamic-route.js +1 -1
- package/dist/server/web-server/routes/error.js +1 -1
- package/dist/server/web-server/routes/feedback.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-md-asset-pathname.d.ts +2 -0
- package/dist/server/web-server/routes/helpers/get-md-asset-pathname.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/info.js +1 -1
- package/dist/server/web-server/routes/mcp-oauth.js +1 -1
- package/dist/server/web-server/routes/otel/otel.js +1 -1
- package/dist/server/web-server/routes/page-data.js +1 -1
- package/dist/server/web-server/routes/path-prefix-redirect.js +1 -1
- package/dist/server/web-server/routes/resolve-route.js +1 -1
- package/dist/server/web-server/routes/semantic-search.d.ts +4 -0
- package/dist/server/web-server/routes/semantic-search.js +1 -0
- package/dist/server/web-server/utils.d.ts +2 -2
- 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/server/workers/worker-pool.js +1 -1
- package/dist/{server/utils → utils}/slugger.d.ts +13 -0
- package/package.json +21 -23
- package/dist/client/app/ErrorBubble/index.d.ts +0 -3
- package/dist/client/app/ErrorBubble/index.js +0 -59
- package/dist/client/app/PageCounter/index.d.ts +0 -3
- package/dist/client/app/PageCounter/index.js +0 -64
- package/dist/server/plugins/asyncapi-docs/template/AsyncApiDocs.js +0 -9
- package/dist/server/plugins/asyncapi-docs/template/helpers.js +0 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation.js +0 -1
- package/dist/server/plugins/catalog-entities/entities/validate-entity.d.ts +0 -6
- package/dist/server/plugins/catalog-entities/entities/validate-entity.js +0 -1
- package/dist/server/plugins/markdown/markdoc/custom-components/html-script.js +0 -1
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/openapi-code-sample.js +0 -1
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/openapi-response-sample.js +0 -1
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/replay-openapi.js +0 -1
- package/dist/server/plugins/markdown/markdoc/helpers/get-inner-text.js +0 -2
- package/dist/server/plugins/markdown/markdoc/helpers/get-variable.js +0 -1
- package/dist/server/plugins/markdown/markdoc/hooks/use-store.js +0 -1
- package/dist/server/plugins/markdown/markdoc/nodes/fence/index.js +0 -1
- package/dist/server/plugins/markdown/markdoc/nodes/heading.js +0 -1
- package/dist/server/plugins/markdown/markdoc/tags/json-example.d.ts +0 -3
- package/dist/server/plugins/markdown/markdoc/tags/json-schema.d.ts +0 -3
- package/dist/server/plugins/markdown/markdoc/tags/openapi-code-sample.d.ts +0 -3
- package/dist/server/plugins/markdown/markdoc/tags/openapi-example.d.ts +0 -3
- package/dist/server/plugins/markdown/markdoc/tags/openapi-response-sample.d.ts +0 -3
- package/dist/server/plugins/markdown/markdoc/tags/replay-openapi.d.ts +0 -3
- 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/plugins/openapi-docs/template/OpenAPIDocs.js +0 -14
- package/dist/server/plugins/openapi-docs/template/helpers.js +0 -5
- package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.d.ts +0 -6
- package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.js +0 -1
- package/dist/server/utils/envs/is-build-mode.d.ts +0 -2
- package/dist/server/utils/envs/is-build-mode.js +0 -1
- package/dist/server/utils/envs/is-develop-mode.d.ts +0 -7
- package/dist/server/utils/envs/is-develop-mode.js +0 -1
- package/dist/server/utils/envs/is-production-mode.d.ts +0 -10
- package/dist/server/utils/envs/is-production-mode.js +0 -1
- package/dist/server/workers/mcp-worker-pool.d.ts +0 -4
- package/dist/server/workers/mcp-worker-pool.js +0 -1
- package/dist/utils/env/is-local-development.d.ts +0 -13
- package/dist/utils/env/is-local-development.js +0 -1
- package/dist/utils/env/is-production.d.ts +0 -13
- package/dist/utils/env/is-production.js +0 -1
- package/dist/utils/env/is-web-view.d.ts +0 -14
- package/dist/utils/env/is-web-view.js +0 -1
- /package/dist/client/app/{ErrorBubble → DevModeFloatingBar}/DetailedErrors.d.ts +0 -0
- /package/dist/client/app/{ErrorBubble → DevModeFloatingBar}/DetailedErrors.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/html-script.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/index.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/explain-step.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/explain-step.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/get-operation-info-by-id.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/get-operation-info-by-id.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/get-operation-info-by-pointer.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/get-operation-info-by-pointer.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/get-operation.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/get-operation.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/index.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/index.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/operation-identifier.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/operation-identifier.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/operation-info.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/operation-info.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/operation-parameters.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/get-operation/types/operation-parameters.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/index.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/json-example.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/json-example.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/json-schema.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/json-schema.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/openapi-code-sample.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/openapi-example.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/openapi-example.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/openapi-response-sample.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/replay-openapi.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/step-by-step-wrapper.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/openapi/step-by-step-wrapper.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/styled.elements.d.ts +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/custom-components/styled.elements.js +0 -0
- /package/dist/{server/plugins/markdown → client/app}/markdoc/hooks/use-store.d.ts +0 -0
- /package/dist/{server/plugins/openapi-docs/template → client/templates/openapi-docs}/mock-server-config.d.ts +0 -0
- /package/dist/{server/plugins/openapi-docs/template → client/templates/openapi-docs}/mock-server-config.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/definition-path.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/definition-path.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/index.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/json-example-ref.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/json-example-ref.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/json-schema-ref.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/json-schema-ref.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/parsed-yaml.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/parsed-yaml.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/raw-content.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/raw-content.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/sample-from-json-schema.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/attributes/sample-from-json-schema.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/extract-rbac-from-condition-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/extract-rbac-from-condition-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/get-node-attribute.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/get-node-attribute.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-code-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-code-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-conditional-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-conditional-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-content-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-content-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-example-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-example-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-fence-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-fence-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-function.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-function.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-list-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-list-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-string-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-string-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-tag.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-tag.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-text-node.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-text-node.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-variable.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/guards/is-variable.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/remove-markdoc-tags.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/remove-markdoc-tags.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/set-node-attribute-value.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/helpers/set-node-attribute-value.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/fence/escape-html.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/fence/escape-html.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/fence/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/gfm-list-item.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/gfm-list-item.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/heading.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/index.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/index.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/table.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/table.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/text.d.ts +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/nodes/text.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/index.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/json-example.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/json-schema.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/openapi-code-sample.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/openapi-example.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/openapi-response-sample.js +0 -0
- /package/dist/{server/plugins/markdown/markdoc → markdoc}/tags/replay-openapi.js +0 -0
- /package/dist/server/{config → external-plugins}/resolve-module.d.ts +0 -0
- /package/dist/server/{config → external-plugins}/resolve-module.js +0 -0
- /package/dist/{server/utils → utils}/conflict-resolvers.d.ts +0 -0
- /package/dist/{server/utils → utils}/conflict-resolvers.js +0 -0
- /package/dist/{server/utils → utils}/slugger.js +0 -0
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { OpenAPIPath } from '@redocly/openapi-docs/src/types';
|
|
2
|
+
import type { JSONSchemaType } from '@redocly/ajv';
|
|
3
|
+
import type { ApiFunctionsContext } from '@redocly/config';
|
|
2
4
|
import type { McpServer } from '@redocly/mcp-typescript-sdk/server/mcp.js';
|
|
3
5
|
import type { StreamableHTTPServerTransport } from '@redocly/mcp-typescript-sdk/server/streamableHttp.js';
|
|
6
|
+
import type { RequestHandlerExtra } from '@redocly/mcp-typescript-sdk/shared/protocol.js';
|
|
7
|
+
import type { CallToolResult, ServerNotification, ServerRequest } from '@redocly/mcp-typescript-sdk/types.js';
|
|
4
8
|
import type { OpenAPIServer } from '@redocly/openapi-docs/lib/types/open-api.js';
|
|
5
9
|
import type { McpErrorCodes, McpServerType } from './constants';
|
|
6
10
|
import type { RbacConfig, PageStaticData } from '@redocly/config';
|
|
@@ -70,5 +74,60 @@ export type McpUserInfo = {
|
|
|
70
74
|
exp?: number;
|
|
71
75
|
[key: string]: any;
|
|
72
76
|
};
|
|
77
|
+
export type RealmMcpToolContext = ApiFunctionsContext;
|
|
78
|
+
export type RealmMcpToolHandler<TArgs extends Record<string, unknown>> = (args: TArgs, context: RealmMcpToolContext, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => Promise<CallToolResult> | CallToolResult;
|
|
79
|
+
export type RealmMcpTool<TArgs extends Record<string, unknown> = Record<string, unknown>> = {
|
|
80
|
+
name: string;
|
|
81
|
+
description: string;
|
|
82
|
+
inputSchema: JSONSchemaType<TArgs>;
|
|
83
|
+
handler: RealmMcpToolHandler<TArgs>;
|
|
84
|
+
};
|
|
85
|
+
export type RealmMcpToolsModule = RealmMcpTool | RealmMcpTool[];
|
|
86
|
+
export type ToolArgsMap = {
|
|
87
|
+
'list-apis': {
|
|
88
|
+
filter?: string;
|
|
89
|
+
page?: number;
|
|
90
|
+
limit?: number;
|
|
91
|
+
};
|
|
92
|
+
'get-endpoints': {
|
|
93
|
+
name: string;
|
|
94
|
+
};
|
|
95
|
+
'get-endpoint-info': {
|
|
96
|
+
name: string;
|
|
97
|
+
path: string;
|
|
98
|
+
method: string;
|
|
99
|
+
};
|
|
100
|
+
'get-security-schemes': {
|
|
101
|
+
name: string;
|
|
102
|
+
};
|
|
103
|
+
'get-full-api-description': {
|
|
104
|
+
name: string;
|
|
105
|
+
};
|
|
106
|
+
search: {
|
|
107
|
+
query: string;
|
|
108
|
+
product?: string;
|
|
109
|
+
};
|
|
110
|
+
whoami: Record<string, never>;
|
|
111
|
+
};
|
|
112
|
+
export type McpToolWorkerParams = {
|
|
113
|
+
[K in keyof ToolArgsMap]: {
|
|
114
|
+
toolName: K;
|
|
115
|
+
args: ToolArgsMap[K];
|
|
116
|
+
context: {
|
|
117
|
+
apiDescriptionsMap: Record<string, ApiDescriptionInfo>;
|
|
118
|
+
outdir?: string;
|
|
119
|
+
accessInfo?: AccessInfo;
|
|
120
|
+
baseUrl?: string;
|
|
121
|
+
headers?: Record<string, string | string[] | undefined>;
|
|
122
|
+
products?: string[];
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
}[keyof ToolArgsMap];
|
|
126
|
+
export type SemanticSearchResult = {
|
|
127
|
+
title: string;
|
|
128
|
+
url: string;
|
|
129
|
+
content: string;
|
|
130
|
+
};
|
|
131
|
+
export type McpToolWorkerResponse = CallToolResult;
|
|
73
132
|
export {};
|
|
74
133
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getDocsTool as c}from"../docs-mcp/tools/index.js";async function l(e){const{toolName:o,args:n,context:r}=e,t=c(o);if(!t)throw new Error(`Unknown tool: ${o}`);return await t.execute(n,r)}export{l as executeMcpTool};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RedoclyConfig, ResolvedConfigLinks, ResolvedNavItem, RawNavConfig, NavItem } from '@redocly/config';
|
|
2
2
|
import type { AfterRoutesCreatedActions, LifecycleContext, ResolveItemsOptions } from '../types';
|
|
3
|
-
export type ResolveLinkContext = Pick<AfterRoutesCreatedActions, 'outdir' | 'getRouteByFsPath' | 'contentDir' | 'getAllRoutesForLocale' | 'getRouteBySlug'>;
|
|
3
|
+
export type ResolveLinkContext = Pick<AfterRoutesCreatedActions, 'outdir' | 'getRouteByFsPath' | 'contentDir' | 'getAllRoutesForLocale' | 'getAllRoutes' | 'getRouteBySlug' | 'getRoutesByDir'>;
|
|
4
4
|
export declare function resolveLinksFromConfig(rawConfig: RawNavConfig, contentDir: string, actions: ResolveLinkContext, context: LifecycleContext, options: ResolveItemsOptions): Promise<ResolvedConfigLinks>;
|
|
5
5
|
export declare function normalizeItems(items: NavItem[]): NavItem[];
|
|
6
6
|
export declare function resolveItems(items: NavItem[] | undefined, fromDir: string, actions: ResolveLinkContext, context: LifecycleContext, options: ResolveItemsOptions): Promise<ResolvedNavItem[] | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as v from"path";import{REDOCLY_ROUTE_RBAC as P,REDOCLY_TEAMS_RBAC as p}from"@redocly/config";import{VERSION_SEPARATOR as M}from"../constants/common.js";import{DEFAULT_LOCALE_PLACEHOLDER as _}from"../../constants/common.js";import{removeTrailingSlash as j}from"../../utils/url/remove-trailing-slash.js";import{isPrimitive as W}from"../../utils/guards/is-primitive.js";import{slash as w}from"../../utils/path/slash.js";import{isAbsoluteUrl as z}from"../../utils/url/is-absolute-url.js";import{normalizeRouteSlug as U}from"../../utils/path/normalize-route-slug.js";import{parsePathVersions as R}from"../../utils/path/parse-path-versions.js";import{logger as A}from"../tools/notifiers/logger.js";import{reporter as S}from"../tools/notifiers/reporter.js";import{shaDirPathShort as C}from"../utils/crypto/sha-dir-path-short.js";import{copyStaticFile as H,FileNotFoundError as E}from"../utils/fs.js";import{isIconPath as J,resolveAssetPath as Y}from"../utils/index.js";import{resolveSrcSet as G}from"../utils/resolve-src-set.js";import{isL10nPath as B}from"../fs/utils/is-l10n-path.js";import{getLocaleFromRelativePath as q}from"../fs/utils/get-locale-from-relative-path.js";async function D(e,s,n,t,a){if(!e)return;const f={...a,ignoreCustomSidebar:!0};if(W(e)){if(typeof e=="string"){const r=F(n.contentDir,s,a,e,t.fs);if(t.fs.exists(r)){if(n.getRouteByFsPath(r))return K({page:e},s,n,t,f);{const g=t.fs.getFileInfo(r);return g?H(n.contentDir,g.realRelativePath,n.outdir):void 0}}}return e}return Array.isArray(e)?I(N(e),s,n,t,f):Object.fromEntries(await Promise.all(Object.entries(e).map(async([r,l])=>[r,await D(l,s,n,t,a)])))}function N(e){return e.map(s=>({...s,items:s.items?N(s.items):void 0}))}async function I(e,s,n,t,a){if(Array.isArray(e))return(await Promise.all(e.map(f=>K(f,s,n,t,a)))).flatMap(f=>f)}async function y(e,s,n,t){let a,f;if(typeof e.icon=="object"){if("srcSet"in e.icon)try{a=await G(e.icon.srcSet,n.fs,{fromFileRelativePath:t.navFile,contentDir:s.contentDir,outdir:s.outdir})}catch(d){d instanceof E?await S.panicOnBuildContentError(`Cannot resolve "item.icon.srcSet" from ${t.navFile}: ${d.message}`):await S.panicOnBuild(`Cannot resolve "item.icon.srcSet" from ${t.navFile}: ${d.message}`)}}else if(typeof e.icon=="string")if(z(e.icon)||J(e.icon))try{f=await Y(e.icon,n.fs,{fromFileRelativePath:t.navFile,contentDir:s.contentDir,outdir:s.outdir})}catch(d){d instanceof E?await S.panicOnBuildContentError(`Cannot resolve "item.icon" from ${t.navFile}: file ${f} does not exist`):await S.panicOnBuild(`Cannot resolve "item.icon" from ${t.navFile}: ${d.message}`)}else f=e.icon;return{icon:f,srcSet:a}}function Q(e){return s=>{if(s.type==="link"||s.type==="group"){const n=s.metadata;return n?Object.entries(e).every(([t,a])=>Array.isArray(a)?a.some(f=>n[t]===f):n[t]===a):!1}return!0}}async function K(e,s,n,t,a){if(e?.directory&&e.items?.length)return{type:"error",label:`Can't have both "directory" and "items" in the nav item: ${JSON.stringify(e)}`};e?.directory&&e?.group&&(e={...e,directory:void 0,items:[{directory:e.directory}]});const f=e?.directory?F(n.contentDir,s,a,e.directory,t.fs):void 0;if(f!==void 0){const i=f===""?"":f+"/",{locale:u,ignoredRoutes:o}=a;let h=n.getAllRoutesForLocale(u).filter(c=>!o?.has(c.baseSlug||"")&&c.fsPath.startsWith(i)&&!c.excludeFromSidebar).sort((c,b)=>c.fsPath===b.fsPath?0:c.baseSlug.localeCompare(b.baseSlug,void 0,{numeric:!0}));const k=e.includeByMetadata?Q(e.includeByMetadata):Boolean;if(!h.length)return[];const $=(await Promise.all(h.map(async c=>{const b=c.versions?.find(x=>x.active),L=b&&{version:b.version,isDefault:b.default,versionFolderId:b.folderId},V=ee(v.posix.relative(f,c.fsPath)),O=c.getSidebar?.(c);return!a.ignoreCustomSidebar&&O?.length?{type:"group",fsPath:c.fsPath,metadata:c.metadata,link:c.slug,routeSlug:c.slug,label:await c.getNavText?.()||c.slug,[p]:c[p],[P]:c[P],sidebarItems:m(O,L,c[p],c[P]),...L,relativePathFromDirectory:v.relative(f,c.fsPath).replace(/@[^\/]+\//,"")}:{type:"link",fsPath:c.fsPath,metadata:c.metadata,[p]:c[p],[P]:c[P],label:await c.getNavText?.()||c.slug,link:c.slug,routeSlug:c.slug,...L,relativePathFromDirectory:V}}))).filter(k);return e.flatten?T($,a):Z($,a)}let d=typeof e=="string"?e:e?.page,r,l;if(d){if(d.includes("#")){const[i,u]=d.split("#");u?l=u:A.warn(`Invalid heading anchor format in sidebar: "${u}". Heading anchors should contain only alphanumeric characters, hyphens, and underscores.`),d=i}if(d=j(d),a.locale&&a.locale!==_){const i=U(v.join(a.locale.toLowerCase(),d));r=n.getRouteBySlug(i)}r||(r=n.getRouteBySlug(d)),r||(r=n.getRouteByFsPath(F(n.contentDir,s,a,d,t.fs)))}const g=r?.metadata;if(e?.$ref){let i=F(n.contentDir,s,a,e.$ref,t.fs);if(a.ref!==void 0&&(i=v.posix.join(a.ref,e.$ref)),!t.fs.exists(i))return await S.panicOnBuildContentError(`Failed to load ${i} file. Make sure sidebar $ref path is correct.`),[];const u=await t.cache.load(i,"yaml"),o=v.dirname(i);return await I(u.data,s,n,t,{...a,navFile:i,ref:o})||[]}if(!r){const i=a.excludedFromLinkCheckerPatterns?.catalog.some(o=>o.test(d||"")),u=a.excludedFromLinkCheckerPatterns?.apiFunctions.some(o=>o.test(d||e.href||""));(u||i)&&(e={...e,href:d||e.href,page:void 0,target:e.target??(u?"_blank":void 0)}),await X(e,a,t,s)}if(r&&!e.disconnect&&!a.ignoreCustomSidebar&&(l||r?.getSidebar)){const i=r.versions?.find(o=>o.active),u=i&&{version:i.version,isDefault:i.default,versionFolderId:i.folderId};if(l){let o=[];if(r.getSidebar&&(o=r.getSidebar(r,{...e,...await y(e,n,t,a)}),o&&o.length>0)){const h=o[0];h&&h.link&&(h.link=`${h.link}#${l}`)}if(!o||o.length===0){let h=e.group||e.label||l;o=[{type:"link",fsPath:r.fsPath,metadata:r.metadata,link:`${r.slug}#${l}`,routeSlug:r.slug,label:h,labelTranslationKey:e.labelTranslationKey,...await y(e,n,t,a),[p]:r[p],[P]:{slug:r.slug,fsPath:r.fsPath},...u}]}return m(o,u,r[p],r[P])}if(r?.getSidebar){const o=r.getSidebar(r,{...e,...await y(e,n,t,a)}),h=e.group&&o?.[0]?.routeSlug===r.slug?o.slice(1):o;return m(a.groupCustomSidebars||e.group?[{type:"group",fsPath:r.fsPath,link:r.slug,routeSlug:r.slug,label:e.group||e.label||await r.getNavText?.()||r.slug,items:h,labelTranslationKey:e.labelTranslationKey,metadata:g,...await y(e,n,t,a)}]:o,u,r[p],r[P])}}if(r&&!e.group){const i=l?`${r.slug}#${l}`:r.slug;let u=e.label||l||"";u||(u=await r.getNavText?.()||r.slug);const o=r.versions?.find(k=>k.active),h=o&&{version:o.version,isDefault:o.default,versionFolderId:o.folderId};return{type:"link",fsPath:r.fsPath,linkedSidebars:e.linkedSidebars,metadata:g,[p]:e?.rbac||r[p],[P]:{slug:r.slug,fsPath:r.fsPath},label:u,labelTranslationKey:e.labelTranslationKey,link:i,items:await I(e.items,s,n,t,a),separatorLine:e.separatorLine,linePosition:e.linePosition,routeSlug:e.disconnect?void 0:i,external:e.external,target:e.target,...await y(e,n,t,a),...h,additionalProps:e.additionalProps}}else if(e?.group){const i=r?.versions?.find(o=>o.active),u=R(a?.navFile);return{type:"group",fsPath:r?.fsPath,linkedSidebars:e.linkedSidebars,metadata:g,version:i?.version||u?.versionName,versionFolderId:i?.folderId||(u?.versionFolderPath?C(u.versionFolderPath):void 0),label:e.group,link:r?.slug,routeSlug:r?.slug,labelTranslationKey:e.groupTranslationKey,items:await I(e.items,s,n,t,a),expanded:e.expanded?e.expanded.toString():void 0,selectFirstItemOnExpand:e.selectFirstItemOnExpand,menuStyle:e.menuStyle,separatorLine:e.separatorLine,linePosition:e.linePosition,...await y(e,n,t,a),[p]:e?.rbac,[P]:{slug:r?.slug||"",fsPath:r?.fsPath||""},additionalProps:e.additionalProps}}else{if(e?.href||e?.label)return{type:"link",metadata:g,link:e.href||"",label:e?.label||e?.href||"",labelTranslationKey:e.labelTranslationKey,external:e.external,target:e.target,separatorLine:e.separatorLine,linePosition:e.linePosition,...await y(e,n,t,a),[p]:e?.rbac,additionalProps:e.additionalProps};if(e?.separator!=null||e?.separatorLine!=null){const i=R(a?.navFile);return{type:"separator",metadata:g,version:i?.versionName,versionFolderId:i?.versionFolderPath?C(i.versionFolderPath):void 0,label:e.separator,labelTranslationKey:e.separatorTranslationKey,separatorLine:e.separatorLine,linePosition:e.linePosition,...await y(e,n,t,a),[p]:e?.rbac,additionalProps:e.additionalProps}}else{const i=R(a?.navFile);return{type:"error",label:`Can't resolve page: ${JSON.stringify(e)}`,version:i?.versionName,versionFolderId:i?.versionFolderPath?C(i.versionFolderPath):void 0}}}}async function X(e,s,n,t){const{href:a,page:f}=e;if(a||!f)return;const d=F(n.fs.cwd,t,s,f,n.fs),r=n.fs.exists(d),l=await n.isPathIgnored(d),g=(r?"The page is ignored: ":"Can't resolve page: ")+f;(!r||l)&&S.reportBrokenLink({type:"BROKEN_LINK",brokenLinkType:"LINK",title:e.label||e.group||"",link:d,rawLink:f,message:g,sourceFileRelativePath:s.navFile,sourceFileLocation:{line:0}})}function F(e,s,n,t="",a){if(n.ref!==void 0)return w(v.relative(e,v.resolve(e,v.join(n.ref,t))));if(t.startsWith("/")){const f=B(s)?q(s):void 0,d=f?`${a.localizationFolder}/${f}/`:"",r=t.slice(1);return B(r)?r:d+w(r)}return w(v.relative(e,v.resolve(e,s,t)))}function Z(e,s){const n={};for(const r of e){const l=v.dirname(r.relativePathFromDirectory),g=r.version?M+r.version:"",i=v.basename(r.relativePathFromDirectory)+g;d(l,r,i)}const t=f(a(n));return T(t,s);function a(r){const l=[];for(const g of Object.keys(r)){const i=r[g];l.push({...i,items:i.items?a(i.items):void 0})}return l}function f(r){return r.sort((l,g)=>{const i=typeof l=="string"?l.toLowerCase():l.relativePathFromDirectory||l.label||"",u=typeof g=="string"?g.toLowerCase():g.relativePathFromDirectory||g.label||"";return i.startsWith("index.")?-1:u.startsWith("index.")?1:i.localeCompare(u,void 0,{numeric:!0})})}function d(r,l,g){r==="."&&(r="");const i=r.split("/").filter(Boolean);let u=n;for(const o of i){const h=o+(l?.version||"");u[h]||(u[h]={type:"group",version:l?.version,label:o,isDefault:l?.isDefault,versionFolderId:l.versionFolderId,items:{}}),u=u[h].items}u[g]=l}}function T(e,s){return e.flatMap(n=>n?.sidebarItems?s.groupCustomSidebars?{...n,items:n.sidebarItems,sidebarItems:void 0,relativePathFromDirectory:void 0}:n.sidebarItems:{...n,items:n.items?T(n.items,s):void 0})}function m(e,s,n,t){return e.map(a=>({...a,...s,[p]:a[p]||n,[P]:a[P]||t,items:a.type==="group"&&a.items?m(a.items,s,n):a.items}))}function ee(e){return e.replace(/@[^\/]+\//,"")}async function ye(e,s,n,t){const a=(e?.items||[]).filter(r=>r.linkedSidebars?.length).map(r=>({...r,items:void 0})),f=await D(a,s.contentDir,s,n,t),d=new Map;for(const r of f)if(r.linkedSidebars?.length)for(const l of r.linkedSidebars){if(d.has(l)){A.warn(`Only one navbar item can belong to sidebar. "${l}" on 'linkedSidebars' property on "${r.label}" will be ignored.`);continue}d.set(l,{label:r.label,link:r.link})}return d}export{ye as collectItemsLinkedToSidebars,N as normalizeItems,K as resolveItem,I as resolveItems,D as resolveLinksFromConfig};
|
|
1
|
+
import*as v from"path";import{REDOCLY_ROUTE_RBAC as y,REDOCLY_TEAMS_RBAC as h}from"@redocly/config";import{VERSION_SEPARATOR as x}from"../constants/common.js";import{DEFAULT_LOCALE_PLACEHOLDER as M}from"../../constants/common.js";import{removeTrailingSlash as _}from"../../utils/url/remove-trailing-slash.js";import{isPrimitive as j}from"../../utils/guards/is-primitive.js";import{slash as w}from"../../utils/path/slash.js";import{isAbsoluteUrl as W}from"../../utils/url/is-absolute-url.js";import{normalizeRouteSlug as z}from"../../utils/path/normalize-route-slug.js";import{parsePathVersions as R}from"../../utils/path/parse-path-versions.js";import{logger as A}from"../tools/notifiers/logger.js";import{reporter as S}from"../tools/notifiers/reporter.js";import{shaDirPathShort as C}from"../utils/crypto/sha-dir-path-short.js";import{copyStaticFile as U,FileNotFoundError as O}from"../utils/fs.js";import{isIconPath as H,resolveAssetPath as J}from"../utils/index.js";import{resolveSrcSet as Y}from"../utils/resolve-src-set.js";import{isL10nPath as B}from"../fs/utils/is-l10n-path.js";import{getLocaleFromRelativePath as G}from"../fs/utils/get-locale-from-relative-path.js";async function E(e,s,a,t,n){if(!e)return;const f={...n,ignoreCustomSidebar:!0};if(j(e)){if(typeof e=="string"){const r=F(a.contentDir,s,n,e,t.fs);if(t.fs.exists(r)){if(a.getRouteByFsPath(r))return N({page:e},s,a,t,f);{const g=t.fs.getFileInfo(r);return g?U(a.contentDir,g.realRelativePath,a.outdir):void 0}}}return e}return Array.isArray(e)?k(D(e),s,a,t,f):Object.fromEntries(await Promise.all(Object.entries(e).map(async([r,o])=>[r,await E(o,s,a,t,n)])))}function D(e){return e.map(s=>({...s,items:s.items?D(s.items):void 0}))}async function k(e,s,a,t,n){if(Array.isArray(e))return(await Promise.all(e.map(f=>N(f,s,a,t,n)))).flatMap(f=>f)}async function b(e,s,a,t){let n,f;if(typeof e.icon=="object"){if("srcSet"in e.icon)try{n=await Y(e.icon.srcSet,a.fs,{fromFileRelativePath:t.navFile,contentDir:s.contentDir,outdir:s.outdir})}catch(l){l instanceof O?await S.panicOnBuildContentError(`Cannot resolve "item.icon.srcSet" from ${t.navFile}: ${l.message}`):await S.panicOnBuild(`Cannot resolve "item.icon.srcSet" from ${t.navFile}: ${l.message}`)}}else if(typeof e.icon=="string")if(W(e.icon)||H(e.icon))try{f=await J(e.icon,a.fs,{fromFileRelativePath:t.navFile,contentDir:s.contentDir,outdir:s.outdir})}catch(l){l instanceof O?await S.panicOnBuildContentError(`Cannot resolve "item.icon" from ${t.navFile}: file ${f} does not exist`):await S.panicOnBuild(`Cannot resolve "item.icon" from ${t.navFile}: ${l.message}`)}else f=e.icon;return{icon:f,srcSet:n}}function q(e){return s=>{if(s.type==="link"||s.type==="group"){const a=s.metadata;return a?(Array.isArray(e)?e:[e]).some(n=>Object.entries(n).every(([f,l])=>Array.isArray(l)?l.some(r=>a[f]===r):a[f]===l)):!1}return!0}}async function N(e,s,a,t,n){if(e?.directory&&e.items?.length)return{type:"error",label:`Can't have both "directory" and "items" in the nav item: ${JSON.stringify(e)}`};e?.directory&&e?.group&&(e={...e,directory:void 0,items:[{directory:e.directory}]});const f=e?.directory?F(a.contentDir,s,n,e.directory,t.fs):void 0;if(f!==void 0){const i=f===""?"":f,{ignoredRoutes:u}=n;let d=a.getRoutesByDir(i).filter(c=>!u?.has(c.baseSlug||"")&&!c.excludeFromSidebar).sort((c,P)=>c.fsPath===P.fsPath?0:c.baseSlug.localeCompare(P.baseSlug,void 0,{numeric:!0}));const p=e.includeByMetadata?q(e.includeByMetadata):Boolean;if(!d.length)return[];const I=(await Promise.all(d.map(async c=>{const P=c.versions?.find(V=>V.active),L=P&&{version:P.version,isDefault:P.default,versionFolderId:P.folderId},K=Z(v.posix.relative(f,c.fsPath)),$=c.getSidebar?.(c);return!n.ignoreCustomSidebar&&$?.length?{type:"group",fsPath:c.fsPath,metadata:c.metadata,link:c.slug,routeSlug:c.slug,label:await c.getNavText?.()||c.slug,[h]:c[h],[y]:c[y],sidebarItems:m($,L,c[h],c[y]),...L,relativePathFromDirectory:v.relative(f,c.fsPath).replace(/@[^\/]+\//,"")}:{type:"link",fsPath:c.fsPath,metadata:c.metadata,[h]:c[h],[y]:c[y],label:await c.getNavText?.()||c.slug,link:c.slug,routeSlug:c.slug,...L,relativePathFromDirectory:K}}))).filter(p);return e.flatten?T(I,n):X(I,n)}let l=typeof e=="string"?e:e?.page,r,o;if(l){if(l.includes("#")){const[i,u]=l.split("#");u?o=u:A.warn(`Invalid heading anchor format in sidebar: "${u}". Heading anchors should contain only alphanumeric characters, hyphens, and underscores.`),l=i}if(l=_(l),n.locale&&n.locale!==M){const i=z(v.join(n.locale.toLowerCase(),l));r=a.getRouteBySlug(i)}r||(r=a.getRouteBySlug(l)),r||(r=a.getRouteByFsPath(F(a.contentDir,s,n,l,t.fs)))}const g=r?.metadata;if(e?.$ref){let i=F(a.contentDir,s,n,e.$ref,t.fs);if(n.ref!==void 0&&(i=v.posix.join(n.ref,e.$ref)),!t.fs.exists(i))return await S.panicOnBuildContentError(`Failed to load ${i} file. Make sure sidebar $ref path is correct.`),[];const u=await t.cache.load(i,"yaml"),d=v.dirname(i);return await k(u.data,s,a,t,{...n,navFile:i,ref:d})||[]}if(!r){const i=n.excludedFromLinkCheckerPatterns?.catalog.some(d=>d.test(l||"")),u=n.excludedFromLinkCheckerPatterns?.apiFunctions.some(d=>d.test(l||e.href||""));(u||i)&&(e={...e,href:l||e.href,page:void 0,target:e.target??(u?"_blank":void 0)}),await Q(e,n,t,s)}if(r&&!e.disconnect&&!n.ignoreCustomSidebar&&(o||r?.getSidebar)){const i=r.versions?.find(d=>d.active),u=i&&{version:i.version,isDefault:i.default,versionFolderId:i.folderId};if(o){let d=[];if(r.getSidebar&&(d=r.getSidebar(r,{...e,...await b(e,a,t,n)}),d&&d.length>0)){const p=d[0];p&&p.link&&(p.link=`${p.link}#${o}`)}if(!d||d.length===0){let p=e.group||e.label||o;d=[{type:"link",fsPath:r.fsPath,metadata:r.metadata,link:`${r.slug}#${o}`,routeSlug:r.slug,label:p,labelTranslationKey:e.labelTranslationKey,...await b(e,a,t,n),[h]:r[h],[y]:{slug:r.slug,fsPath:r.fsPath},...u}]}return m(d,u,r[h],r[y])}if(r?.getSidebar){const d=r.getSidebar(r,{...e,...await b(e,a,t,n)}),p=e.group&&d?.[0]?.routeSlug===r.slug?d.slice(1):d;return m(n.groupCustomSidebars||e.group?[{type:"group",fsPath:r.fsPath,link:r.slug,routeSlug:r.slug,label:e.group||e.label||await r.getNavText?.()||r.slug,items:p,labelTranslationKey:e.labelTranslationKey,metadata:g,...await b(e,a,t,n)}]:d,u,r[h],r[y])}}if(r&&!e.group){const i=o?`${r.slug}#${o}`:r.slug;let u=e.label||o||"";u||(u=await r.getNavText?.()||r.slug);const d=r.versions?.find(I=>I.active),p=d&&{version:d.version,isDefault:d.default,versionFolderId:d.folderId};return{type:"link",fsPath:r.fsPath,linkedSidebars:e.linkedSidebars,metadata:g,[h]:e?.rbac||r[h],[y]:{slug:r.slug,fsPath:r.fsPath},label:u,labelTranslationKey:e.labelTranslationKey,link:i,items:await k(e.items,s,a,t,n),separatorLine:e.separatorLine,linePosition:e.linePosition,routeSlug:e.disconnect?void 0:i,external:e.external,target:e.target,badges:e.badges,...await b(e,a,t,n),...p,additionalProps:e.additionalProps}}else if(e?.group){const i=r?.versions?.find(d=>d.active),u=R(n?.navFile);return{type:"group",fsPath:r?.fsPath,linkedSidebars:e.linkedSidebars,metadata:g,version:i?.version||u?.versionName,versionFolderId:i?.folderId||(u?.versionFolderPath?C(u.versionFolderPath):void 0),label:e.group,link:r?.slug,routeSlug:r?.slug,badges:e.badges,labelTranslationKey:e.groupTranslationKey,items:await k(e.items,s,a,t,n),expanded:e.expanded?e.expanded.toString():void 0,selectFirstItemOnExpand:e.selectFirstItemOnExpand,menuStyle:e.menuStyle,separatorLine:e.separatorLine,linePosition:e.linePosition,...await b(e,a,t,n),[h]:e?.rbac,[y]:{slug:r?.slug||"",fsPath:r?.fsPath||""},additionalProps:e.additionalProps}}else{if(e?.href||e?.label)return{type:"link",metadata:g,link:e.href||"",label:e?.label||e?.href||"",labelTranslationKey:e.labelTranslationKey,external:e.external,target:e.target,separatorLine:e.separatorLine,linePosition:e.linePosition,badges:e.badges,...await b(e,a,t,n),[h]:e?.rbac,additionalProps:e.additionalProps};if(e?.separator!=null||e?.separatorLine!=null){const i=R(n?.navFile);return{type:"separator",metadata:g,version:i?.versionName,versionFolderId:i?.versionFolderPath?C(i.versionFolderPath):void 0,label:e.separator,labelTranslationKey:e.separatorTranslationKey,separatorLine:e.separatorLine,linePosition:e.linePosition,...await b(e,a,t,n),[h]:e?.rbac,additionalProps:e.additionalProps}}else{const i=R(n?.navFile);return{type:"error",label:`Can't resolve page: ${JSON.stringify(e)}`,version:i?.versionName,versionFolderId:i?.versionFolderPath?C(i.versionFolderPath):void 0}}}}async function Q(e,s,a,t){const{href:n,page:f}=e;if(n||!f)return;const l=F(a.fs.cwd,t,s,f,a.fs),r=a.fs.exists(l),o=await a.isPathIgnored(l),g=(r?"The page is ignored: ":"Can't resolve page: ")+f;(!r||o)&&S.reportBrokenLink({type:"BROKEN_LINK",brokenLinkType:"LINK",title:e.label||e.group||"",link:l,rawLink:f,message:g,sourceFileRelativePath:s.navFile,sourceFileLocation:{line:0}})}function F(e,s,a,t="",n){if(a.ref!==void 0)return w(v.relative(e,v.resolve(e,v.join(a.ref,t))));if(t.startsWith("/")){const f=B(s)?G(s):void 0,l=f?`${n.localizationFolder}/${f}/`:"",r=t.slice(1);return B(r)?r:l+w(r)}return w(v.relative(e,v.resolve(e,s,t)))}function X(e,s){const a={};for(const r of e){const o=v.dirname(r.relativePathFromDirectory),g=r.version?x+r.version:"",i=v.basename(r.relativePathFromDirectory)+g;l(o,r,i)}const t=f(n(a));return T(t,s);function n(r){const o=[];for(const g of Object.keys(r)){const i=r[g];o.push({...i,items:i.items?n(i.items):void 0})}return o}function f(r){return r.sort((o,g)=>{const i=typeof o=="string"?o.toLowerCase():o.relativePathFromDirectory||o.label||"",u=typeof g=="string"?g.toLowerCase():g.relativePathFromDirectory||g.label||"";return i.startsWith("index.")?-1:u.startsWith("index.")?1:i.localeCompare(u,void 0,{numeric:!0})})}function l(r,o,g){r==="."&&(r="");const i=r.split("/").filter(Boolean);let u=a;for(const d of i){const p=d+(o?.version||"");u[p]||(u[p]={type:"group",version:o?.version,label:d,isDefault:o?.isDefault,versionFolderId:o.versionFolderId,items:{}}),u=u[p].items}u[g]=o}}function T(e,s){return e.flatMap(a=>a?.sidebarItems?s.groupCustomSidebars?{...a,items:a.sidebarItems,sidebarItems:void 0,relativePathFromDirectory:void 0}:a.sidebarItems:{...a,items:a.items?T(a.items,s):void 0})}function m(e,s,a,t){return e.map(n=>({...n,...s,[h]:n[h]||a,[y]:n[y]||t,items:n.type==="group"&&n.items?m(n.items,s,a):n.items}))}function Z(e){return e.replace(/@[^\/]+\//,"")}async function ye(e,s,a,t){const n=(e?.items||[]).filter(r=>r.linkedSidebars?.length).map(r=>({...r,items:void 0})),f=await E(n,s.contentDir,s,a,t),l=new Map;for(const r of f)if(r.linkedSidebars?.length)for(const o of r.linkedSidebars){if(l.has(o)){A.warn(`Only one navbar item can belong to sidebar. "${o}" on 'linkedSidebars' property on "${r.label}" will be ignored.`);continue}l.set(o,{label:r.label,link:r.link})}return l}export{ye as collectItemsLinkedToSidebars,D as normalizeItems,N as resolveItem,k as resolveItems,E as resolveLinksFromConfig};
|
|
@@ -17,6 +17,9 @@ export declare const RbacDecorator: () => {
|
|
|
17
17
|
any: {
|
|
18
18
|
leave(node: Record<string, unknown>, ctx: any): void;
|
|
19
19
|
};
|
|
20
|
+
ref: {
|
|
21
|
+
leave(node: Record<string, unknown>): void;
|
|
22
|
+
};
|
|
20
23
|
};
|
|
21
24
|
export declare function injectDecoratorIntoConfig(config: RawUniversalConfig, outputRelativePath: string, cwd: string): RawUniversalConfig;
|
|
22
25
|
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import b from"node:path";import{REDOCLY_TEAMS_RBAC as m}from"@redocly/config";import{slash as k}from"../../../utils/path/slash.js";function p(a,r,t){if(!r)throw new Error("Visitor required");if(a){a.description&&r(a,"description",t.location.absolutePointer+"/description",t);for(const o in a["x-enumDescriptions"])r(a["x-enumDescriptions"],o,t.location.absolutePointer+"/x-enumDescriptions/"+o,t)}}const g=/^[\w\s\-,.!\?:;'"()/]+$/,u=({outputRelativePath:a,cwd:r})=>{const t=function(e,s,l,c){const{node:n}=c.resolve(e[s]);if(!n||typeof n!="string"||n.match(g))return;const i=c.getVisitorData();i.markdocChunks=i.markdocChunks||[],i.markdocChunks.push({node:e,pointer:k(b.relative(r,l)),markdown:n,relativePath:a,key:s})};return{any:{leave(o,e){p(o,t,e)}},ref:{leave(o,e){p(o,t,e)}}}},f=()=>{const a={};return{Tag:{enter(r){r?.["x-rbac"]&&(a[String(r.name)]=r["x-rbac"])}},any:{leave(r,t){if((t.type.name==="Operation"||t.type.name==="Webhook")&&"tags"in r&&Array.isArray(r.tags))for(const o of r.tags)a[o]&&(r["x-rbac"]=r["x-rbac"]||a[o]);r?.["x-rbac"]&&(r[m]=r["x-rbac"],delete r["x-rbac"])}},ref:{leave(r){r?.["x-rbac"]&&(r[m]=r["x-rbac"],delete r["x-rbac"])}}}};function h(a,r,t){const o={id:"markdown",decorators:{oas3:{markdown:u,rbac:f},async3:{markdown:u,rbac:f}}};return{...a,decorators:{"markdown/rbac":"on","markdown/markdown":{outputRelativePath:r,cwd:t},...a.decorators||{}},plugins:[...a.plugins||[],o]}}export{u as MarkdownParserDecorator,f as RbacDecorator,h as injectDecoratorIntoConfig};
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import type { PageRouteDetails } from '../../types';
|
|
2
2
|
import type { MdOptions } from '@redocly/config';
|
|
3
3
|
/** Load API catalog entry custom fields from the API registry */
|
|
4
|
-
export default function getServerProps(props: PageRouteDetails,
|
|
4
|
+
export default function getServerProps(props: PageRouteDetails, data: any, { variables }: MdOptions & {
|
|
5
5
|
variables: {
|
|
6
6
|
idpAccessToken?: string;
|
|
7
7
|
};
|
|
8
|
-
}): Promise<
|
|
9
|
-
customFields: Record<string, unknown>;
|
|
10
|
-
}>;
|
|
8
|
+
}): Promise<any>;
|
|
11
9
|
//# sourceMappingURL=get-server-props-custom-fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import f from"path";import{REGISTRY_APIS_PATHS_API_URL as n}from"../../constants/common.js";import{logger as c}from"../../tools/notifiers/logger.js";async function l(i,p,{variables:d}){const m=f.posix.dirname(i.fsPath);let t={},o={};const a=process.env.REDOCLY_LOCAL_DEV_TOKEN||d.idpAccessToken;if(a&&n)try{const e=n+"/"+encodeURIComponent(m),s=await fetch(e,{headers:{Cookie:`accessToken=${a}`}});if(s.status!==200)c.warnProd(`Failed to fetch custom fields. API response status: ${s.status}. Request URL: ${e}`);else{const r=await s.json();t=r.customFields||{},o=r.metadata||{}}}catch(e){c.warnProd("Failed to fetch custom fields: "+e.message)}return{customFields:t,metadata:o,...p.props}}export{l as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getPublicEnvVariables as
|
|
1
|
+
import{getPublicEnvVariables as n}from"../../utils/envs/get-public-env-variables.js";const l=async({fsPath:r,slug:e},t,{variables:a,partials:i},o)=>{const s=o.getPartialsForRoute?.(e)||i;return{definitionId:r,...t.props,markdown:{partials:s,variables:{...a,env:n()}}}};var d=l;export{d as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as D}from"@redocly/config";import{OPENAPI_DOCS_TEMPLATE_ID as j,PUBLIC_RBAC_SCOPE_ITEM as U}from"../../../constants/common.js";import{DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as te,PUBLIC_API_DEFINITIONS_FOLDER as oe}from"../../constants/common.js";import{OPENAPI_CUSTOM_FIELDS_SERVER_PROPS_GETTER_ID as ae,OPENAPI_SHARED_DATA_PREFIX as V}from"../../constants/plugins/openapi-docs.js";import{envConfig as q}from"../../config/env-config.js";import{logger as _}from"../../tools/notifiers/logger.js";import{searchResolver as re}from"./search/search-resolver.js";import{convertOpenAPIDocs2Sidebar as se,shouldAddRoute as ne}from"./utils.js";import{getTemplatePath as L}from"./get-template-path.js";import{storeDefinitionBundles as ie}from"./store-definition-bundles.js";import{definitionLoader as pe,definitionsLoader as de}from"./load-definition.js";import{getAiDocumentsStore as ce}from"./search/get-ai-search-documents.js";import{fromCurrentDir as le}from"../../utils/paths.js";import{telemetryTraceStep as me}from"../../../cli/telemetry/helpers/trace-step.js";const k="openapi-spec-download";async function Ce(){let w=[],E={},M=new Set;return{id:"openapi",requiredEntitlements:["openapi"],loaders:{"load-oas-docs":de,"load-oas":pe},processContent:async(e,i)=>{await me("build.plugin.openapi_docs",async R=>{e.createRequestHandler(k,le(import.meta.url,"./spec-download.api.js")),e.addApiRoute({slug:oe+"/*",requestHandlerId:k,httpMethod:"all",[D]:U,getStaticData:async()=>({props:{}})}),e.addApiRoute({slug:te+"/*",requestHandlerId:k,httpMethod:"all",[D]:U,getStaticData:async()=>({props:{}})});const d=e.createTemplate(j,L("../../../client/templates/openapi-docs/template.js")),h=e.registerServerPropsGetter(j,L("./get-server-props.js")),s=e.registerServerPropsGetter(ae,L("./get-server-props-custom-fields.js")),a=await i.getConfig();R?.setAttribute("config",JSON.stringify(a.openapi||{}));const A=a.rules?.["custom-fields-schema"];E={};const T=_.startTiming("Loading openapi definitions..."),c=await e.loadOpenApiDefinitions(i);_.infoTime(T,"Loading openapi definitions..."),w=c.map(({markdocChunks:m,relativePath:u,customOutputRelativeFile:n,isVirtual:r,realRelativePath:f})=>({chunks:m,relativePath:u,realRelativePath:f,isVirtual:n!=null||r})),ie(c,e.outdir);const l={};for(const m of c||[]){const{definition:u,config:n,relativePath:r,customOutputRelativeFile:f,contentItems:J,flatItems:B,parser:v,options:N,rawOptions:Q,hash:W}=m,x=f||r,o=[],G={},{definition:X}=v||{},{info:p}=X||{},C=p?.["x-metadata"],O=!!n.openapi?.excludeFromSearch||!!n.theme?.openapi?.excludeFromSearch||!!a.openapi?.excludeFromSearch||!!a.theme?.openapi?.excludeFromSearch,H={title:p?.title,description:p?.description,summary:p?.summary,...n.metadata,...C},g={untagged:[],tagged:new Map};for(const t of B){const{id:y,href:S,operationDefinition:I}=t;if(I){const{tags:P}=I;if(P)for(const b of P)g.tagged.has(b)||g.tagged.set(b,[]),g.tagged.get(b)?.push(t);else g.untagged.push(t);q.isDevelopMode&&(G[`#${I.pointer}`]=t.href)}if(!ne({item:t}))continue;const F=t,K=F.type==="section"&&!!F.infoDefinition,Z=S.split("#")[0]+"/",ee=I?.[D];o.push({excludeFromSearch:O,slugSuffix:Z,fsPath:x,metadata:{subType:"openapi-operation"},httpVerb:t?.httpVerb||"",path:r,templateId:d,[D]:ee||n.rbac,getAiDocumentsStore:ce({parser:v,options:N,info:p,tagOperations:g,openapiContentItem:F,metadata:H,relativePath:r,getSearchFacets:e.getSearchFacets,includeInLLMsTxt:K,excludeFromSearch:O}),getStaticData:async P=>({props:{dynamicMarkdocComponents:["openapi"],baseSlug:P.baseSlug,seo:t["x-metadata"]?.seo||{title:t.name,description:t.description},itemId:y,disableAutoScroll:!0}})})}o[0]={...o[0],metadata:{type:"openapi",...H},hasClientRoutes:!0,getSidebar:(t,y)=>{const S=[];return se({contentItems:J,sidebarItems:S,routeSlug:t.slug,navItem:y}),S},getNavText:()=>p?.title,getSearchDocuments:re(v,N,B,e.getSearchFacets,e.setSearchFacets,O)},C?.apiId&&(l[C.apiId]={slug:o[0]?.slug||""});const Y=o[0];o[0]=o[o.length-1],o[o.length-1]=Y;const z=q.isDevelopMode?r:void 0,$=`${V}${r}`;E[$]={fsPath:x,definition:u,options:Q,sourcePath:z,routesMapping:G,hash:W};for(const t of o)e.addRoute({...t,sharedData:[{id:$,key:"openAPIDocsStore"}],serverPropsGetterIds:A?[h,s]:[h]})}e.setGlobalData({apiProducts:l})})},afterRoutesCreated:async(e,i)=>{const R=_.startTiming("Parsing openapi markdoc chunks..."),d=new Set;for(const{chunks:s,relativePath:a,isVirtual:A,realRelativePath:T}of w){const c=(await i.cache.load(T,"load-oas")).compoundHash;await i.cache.load(a,{loader:async function(){for(const{node:m,markdown:u,key:n,relativePath:r}of s){const{ast:f}=await e.parseMarkdoc({content:u,relativePath:r,isVirtual:A},i,{sharedDataIds:[`${V}${r}`]});m[`x-parsed-md-${n}`]={result:f}}},name:"openapi-markdoc-inline-parser"},[c]);for(const{pointer:l}of s)d.add(l)}_.infoTime(R,"Parsing openapi markdoc chunks...");const h=M.difference(d);for(const s of h)i.cache.delete(s);M=d;for(const[s,a]of Object.entries(E))await e.createSharedData(s,{...a,baseSlug:e.getRouteByFsPath(a.fsPath)?.baseSlug},a.hash)}}}export{Ce as openAPIDocsPlugin};
|
|
@@ -4,6 +4,7 @@ import type { ContentItemModel, IMenuItem, OpenAPIDefinition, Options } from '@r
|
|
|
4
4
|
import type { LifecycleContext } from '../../types';
|
|
5
5
|
export type BundledDefinition = {
|
|
6
6
|
definition: OpenAPIDefinition;
|
|
7
|
+
originalDefinition?: Record<string, unknown>;
|
|
7
8
|
config: Partial<RedoclyConfig & NonNullable<RedoclyConfig['apis']>[string]>;
|
|
8
9
|
relativePath: string;
|
|
9
10
|
realRelativePath: string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import*as l from"path";import{convertSwagger2OpenAPI as
|
|
2
|
-
`;const
|
|
3
|
-
`}if(
|
|
1
|
+
import*as l from"path";import{convertSwagger2OpenAPI as ao}from"@redocly/openapi-docs/lib/utils/convertSwagger2OpenAPI.js";import{Source as so,bundle as co,createConfig as fo,getTotals as lo,resolvePlugins as po}from"@redocly/openapi-core";import{normalizeOptions as uo,OpenAPIParser as go,buildContentItems as mo}from"@redocly/openapi-docs";import{combineUrls as P}from"@redocly/theme/core/utils";import{CONFIG_FILE_NAME as U}from"../../../constants/common.js";import{PUBLIC_API_DEFINITIONS_FOLDER as k}from"../../constants/common.js";import{MAX_BUNDLING_ERRORS_TO_PRINT as wo}from"../../constants/plugins/openapi-docs.js";import{deepMerge as z}from"../../../utils/object/deep-merge.js";import{pluralize as j}from"../../../utils/string/pluralize.js";import{replaceEnvVariablesDeep as ho}from"../../utils/envs/replace-env-variables-deep.js";import{logger as J}from"../../tools/notifiers/logger.js";import{reporter as $}from"../../tools/notifiers/reporter.js";import{convertOpenRPC2OpenAPI as bo}from"./openrpc-converter.js";import{injectDecoratorIntoConfig as Oo}from"./decorators.js";import{getAllApiConfigsByPath as Co}from"../get-api-config.js";import{normalizeFeedbackOptions as yo}from"./utils.js";import{replaceFileExtension as A}from"./store-definition-bundles.js";import{ExternalResolver as Io}from"../../fs/utils/external-ref-resolver.js";import{formatBundleError as Ro}from"./format-bundle-error.js";const N=new Map;async function Jo(o,p){const{fs:n,cache:w,getConfig:h,isPathIgnored:m}=p;if(l.posix.basename(o)===U)return[];let t,x;try{t=(await w.load(o,"yaml")).data,x=(await w.load(o,"yaml")).data}catch{return[]}if(!t?.openapi&&!t?.swagger&&!t?.openrpc)return J.verbose(`${o} file is not definition. Skipping`),[];const s=!!t?.openrpc;s&&(t=bo(t));const d=await h("."),b=n.getFileInfo(o),c=await h(l.posix.dirname(o)),G=Co(c?.apis,o,c.configPath),F=[],H=await m(o);for(const r of G){if(!r.output&&H)continue;const O=z({decorators:d.decorators},c,{rbac:void 0},r),{resolvedObj:i}=ho(O);if(i.decorators&&typeof i.decorators!="object"){await $.panicOnBuildContentError(`'decorators' must be an object at redocly.yaml, got '${typeof i.decorators}'`);continue}if(i.plugins&&!Array.isArray(i.plugins)){await $.panicOnBuildContentError(`'plugins' must be an array at redocly.yaml, got '${typeof i.plugins}'`);continue}const E=c.configPath?l.posix.dirname(c.configPath):".",e=r.output?l.posix.join(E,r.output):o;if(await m(e))continue;b&&r.output&&!n.exists(e)&&n.addVirtualFile(e,b);const u=l.resolve(n.cwd,c.realConfigPath||U),y=new Io(n),X=await K({config:i,outputRelativePath:e,configPath:u,externalRefResolver:y,plugins:d.plugins}),M=l.resolve(n.cwd,o),q=await n.read(o),Q={config:X,base:l.dirname(M),doc:{source:new so(M,q),parsed:JSON.parse(JSON.stringify(t))},externalRefResolver:y},{bundle:{parsed:v},problems:L,visitorsData:W}=await co(Q),Y=W["markdown/markdown"]?.markdocChunks??[],a=lo(L);let V=[a.errors&&`${a.errors} ${j(a.errors,"error","errors")}`,a.warnings&&`${a.warnings} ${j(a.warnings,"warning","warnings")}`,a.ignored&&`${a.ignored} ignored`].filter(Boolean).join(", ");if(a.errors){const g=L.filter(f=>f.severity==="error");let B=`${V} while bundling ${e} definition:
|
|
2
|
+
`;const _=Math.min(g.length,wo);for(let f=0;f<_;f++){const ro=g[f],io=await Ro(ro,n.cwd);B+=`${io}
|
|
3
|
+
`}if(g.length>_){const f=g.length-_;B+=`... and ${f} more ${j(f,"error","errors")}`}await $.panicOnBuild(B)}a.warnings&&J.warn(`${V} while bundling %rp definition`,e);const I=Po(v.swagger!==void 0?await ao(v):v,c.metadata),R=z(d.openapi||{},c.openapi||{},r.openapi||r?.theme?.openapi||{});R.showSchemaCatalogLinks&&(I["x-schema-catalog-link"]=P(k,e));const Z=I["x-feedback"]||R.feedback||c.feedback,oo=s?[{url:P(k,`${A(e,".json")}?download`),label:"Download OpenRPC"}]:[{url:P(k,`${A(e,".json")}?download`)},{url:P(k,`${A(e,".yaml")}?download`)}],T={...R,feedback:yo(Z),hideSidebar:!0,disableRouter:!0,mockServer:s?{off:!0}:i?.mockServer||d?.mockServer,downloadUrls:R.downloadUrls||oo},S=uo(T);let D;try{D=new go(I,void 0,S)}catch(g){await $.panicOnBuild(g);continue}const{contentItems:no,flatItems:eo}=mo(D,S),to={definition:I,originalDefinition:s?x:void 0,config:i,relativePath:e,realRelativePath:b?.realRelativePath||e,customOutputRelativeFile:r.output&&e,markdocChunks:Y,contentItems:no,flatItems:eo,options:S,rawOptions:T,parser:D,isVirtual:b?.isVirtual??!1};F.push(to)}return F;async function K(r){const{config:O,outputRelativePath:i,configPath:E,externalRefResolver:e}=r,C=JSON.stringify(O.decorators);if(N.has(C))return N.get(C);const u=await fo(Oo(O,i,n.cwd),{configPath:E,externalRefResolver:e}),y=u.plugins[0];return r.plugins&&(u.plugins=[y,...await po(r.plugins,n.cwd)]),N.set(C,u),u}}async function Go(o,p){const{fs:n,cache:w,getConfig:h}=p,m=[];for(const t of n.scan(/(\.ya?ml|\.json)$/)){if(!await h(l.posix.dirname(t.relativePath)))continue;const s=await w.load(t.relativePath,"load-oas");s.data&&s.data.length&&m.push(...s.data.map(d=>({...d,isVirtual:t.isVirtual||d.isVirtual,hash:s.compoundHash})))}return m}function Po(o,p){if(!p)return o;const n={...o,info:{...o.info,"x-metadata":{...o.info?.["x-metadata"],...p}}};return delete n.info["x-metadata"]._customMessages,n}export{Jo as definitionLoader,Go as definitionsLoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as f from"openapi-sampler";function v(e){const a={openapi:"3.1.0",info:e.info,servers:e.servers,paths:{},components:{schemas:e.components?.schemas||{},securitySchemes:e.components?.["x-securitySchemes"]||{}},"x-redocly-openrpc":!0};if(e.externalDocs&&(a.externalDocs=e.externalDocs),e.methods)for(const n of e.methods){let t=n.params;t&&t.$ref&&(t=p(t,e));const r=Array.isArray(t)?t.map(i=>p(i,e)):[],d=p(n.result,e),c=n.errors?n.errors.map(i=>p(i,e)):[],s={security:n["x-security"],operationId:n.name,summary:n.summary,description:n.description,tags:n.tags?.map(i=>{const m=p(i,e);return m?.name||m}),deprecated:n.deprecated,externalDocs:n.externalDocs,servers:n.servers,requestBody:x(r,n.paramStructure,n.name,e),responses:j(d,c,e)};if(n.examples){const i={},m={};for(const o of n.examples){if(o.params&&o.params.length>0){const h=n.paramStructure==="by-position"?o.params.map(u=>u.value):Object.fromEntries(o.params?.map((u,l)=>[(r.find(y=>y?.name===u.name)||r[l])?.name||u.name,u.value]));i[o.name]={summary:o.name,description:o.description,value:{jsonrpc:"2.0",method:n.name,params:h,id:1}}}o.result&&(m[o.name]={summary:o.name,description:o.description,value:{jsonrpc:"2.0",method:n.name,result:o.result?.value||o.result,id:1}})}Object.keys(i).length>0&&s.requestBody?.content?.["application/json"]&&(s.requestBody.content["application/json"].examples=i),Object.keys(m).length>0&&s.responses?.["200"]?.content?.["application/json"]&&(s.responses[200].content["application/json"].examples=m)}a.paths[`${n.name}`]={post:s}}return a}function x(e,a="either",n,t){if(!e||e.length===0)return{content:{"application/json":{example:{jsonrpc:"2.0",method:n,id:1}}}};const r={},d=[];for(const s of e)s&&(r[s.name]=s.schema||{},s.description&&(r[s.name].description=s.description),s.required&&d.push(s.name));let c;return a==="by-position"?c={type:"array",items:e.map(s=>s?.schema||{}),minItems:e.filter(s=>s?.required).length}:c={type:"object",properties:r,required:d.length>0?d:void 0},{content:{"application/json":{schema:c,example:{jsonrpc:"2.0",method:n,params:e&&e.length>0?f.sample(c,{quiet:!0,format:"json"},t):void 0,id:1}}}}}function j(e,a=[],n){const t={};if(e&&e.schema&&(t[200]={description:e.description||"",content:{"application/json":{schema:e.schema||{},example:{jsonrpc:"2.0",result:f.sample(e.schema,{quiet:!0,format:"json"},n),id:1}}}}),a&&a.length>0)for(const r of a)r&&(t[r.code]={description:r.message,content:{"application/json":{example:{jsonrpc:"2.0",error:{code:r.code,message:r.message,data:r.data?{...r.data}:void 0},id:1}}}});return t}function p(e,a){if(e&&e.$ref&&typeof e.$ref=="string"&&e.$ref.startsWith("#/")){const n=e.$ref.substring(2).split("/");let t=a;for(const r of n){if(t===void 0)break;t=t[r]}return p(t,a)}return e}export{v as convertOpenRPC2OpenAPI};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{REDOCLY_TEAMS_RBAC as k}from"@redocly/config";import{basename as R,join as _}from"node:path";import{toMarkdown as L}from"../../../plugins/markdown/search/to-markdown.js";import{canDownloadApiDefinition as G,isResourcePubliclyAccessible as E}from"../../../utils/rbac.js";import{PUBLIC_API_DEFINITIONS_FOLDER as J}from"../../../constants/common.js";import{DEFAULT_ANONYMOUS_VISITOR_TEAM as z}from"../../../../constants/common.js";import{SearchIndexer as V}from"../search-indexer.js";import{getLocaleFromRelativePath as q}from"../../../fs/utils/get-locale-from-relative-path.js";import{extractDocumentSearchFacets as B}from"./search-facets.js";import{formatDocumentMetadata as C}from"../../search/utils.js";import{getLLMsTxtMdSlug as Y,llmsTxtLink as M}from"../../search/llmstxt/index.js";import{replaceFileExtension as H}from"../store-definition-bundles.js";const x=new Map,me=({parser:
|
|
2
|
-
`;for(const[T,w]of $?.publiclyAccessibleTaggedSearchDocuments?.entries()||[]){if(!w.length)return;const U=
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as k}from"@redocly/config";import{basename as R,join as _}from"node:path";import{toMarkdown as L}from"../../../plugins/markdown/search/to-markdown.js";import{canDownloadApiDefinition as G,isResourcePubliclyAccessible as E}from"../../../utils/rbac.js";import{PUBLIC_API_DEFINITIONS_FOLDER as J}from"../../../constants/common.js";import{DEFAULT_ANONYMOUS_VISITOR_TEAM as z}from"../../../../constants/common.js";import{SearchIndexer as V}from"../search-indexer.js";import{getLocaleFromRelativePath as q}from"../../../fs/utils/get-locale-from-relative-path.js";import{extractDocumentSearchFacets as B}from"./search-facets.js";import{formatDocumentMetadata as C}from"../../search/utils.js";import{getLLMsTxtMdSlug as Y,llmsTxtLink as M}from"../../search/llmstxt/index.js";import{replaceFileExtension as H}from"../store-definition-bundles.js";const x=new Map,me=({parser:i,options:c,info:t,tagOperations:s,relativePath:n,openapiContentItem:e,metadata:r,getSearchFacets:o,includeInLLMsTxt:a,excludeFromSearch:m})=>async(u,f,l)=>{if(m)return;const D=await u.getNavText?.()||R(u.fsPath),A=new V(i,c,u.baseSlug||u.slug),p=A.addItem(e);if(!p)return;const O=await l.getConfig(),S=Array.isArray(p.title)?p.title.join(" "):p.title;let g,d,$=x.get(n);if((e.type==="tag"||e.type==="section"&&e.infoDefinition)&&!$){const{all:b,publiclyAccessible:y}=ee(s.tagged,A,O),{all:T,publiclyAccessible:w}=ne(s.untagged,A,O);x.set(n,{taggedSearchDocuments:new Map(b),untaggedSearchDocuments:T,publiclyAccessibleTaggedSearchDocuments:new Map(y),publiclyAccessibleUntaggedSearchDocuments:w})}$=x.get(n);const h="#";switch(e.type){case"operation":const b=A.getOperation(e);g=d=X({title:S,security:i.definition.security,document:p,version:p.version||t.version,headingLevel:h,operation:b});break;case"section":if(e.infoDefinition){$=x.get(n),d=await P({parser:i,info:t,staticData:f,relativePath:n,headingLevel:h,pageName:D,config:O}),d+=`
|
|
2
|
+
`;for(const[T,w]of $?.publiclyAccessibleTaggedSearchDocuments?.entries()||[]){if(!w.length)return;const U=i.definition.tags?.find(F=>F.name===T);d+=j({title:U?.["x-displayName"]||T,description:U?.description,operationSearchDocuments:w,headingLevel:`${h}#`})}const y=$?.publiclyAccessibleUntaggedSearchDocuments||[];y.length&&(d+=j({title:"Other",description:void 0,operationSearchDocuments:y,headingLevel:`${h}#`})),g=await P({parser:i,info:t,staticData:f,relativePath:n,headingLevel:h,pageName:D,config:O})}else e.ast&&(d=g=L(e.ast));break;case"tag":d=j({title:S,description:e.description,operationSearchDocuments:$?.publiclyAccessibleTaggedSearchDocuments.get(e.name)||[],headingLevel:h}),g=j({title:S,description:e.description,operationSearchDocuments:[],headingLevel:h});break;case"rsrc":case"prompt":case"tool":d=Z({title:S,description:e.description,name:e.name,xMcpConfig:i.definition["x-mcp"],headingLevel:h}),g=d;break}return{async getLLMsTxts(){return[{title:e.name,description:e.type==="tag"?e.description:void 0,content:d||"",slug:u.slug,fsPath:u.fsPath,includeInLLMsTxt:a}]},async getSearchDocuments(){if(e.type==="operation"||e.type==="section"&&(e.infoDefinition||e.ast)||e.type==="tag"){const b=q(u.fsPath),y=B({...p,...r},t,o);return[{title:S,description:Array.isArray(p.text)?p.text.join(" "):p.text,content:g||"",url:p.url??u.slug,fsPath:u.fsPath,locale:b,product:u.product?.name,rbacTeams:p.rbacTeams,facets:y}]}return[]}}};async function P({parser:i,info:c,staticData:t,relativePath:s,pageName:n,headingLevel:e,config:r}){const o=C(c["x-metadata"]);let a=c.title?`${e} ${c.title}
|
|
3
3
|
|
|
4
4
|
`:`${e} ${n}
|
|
5
5
|
|
|
@@ -12,14 +12,14 @@ import{REDOCLY_TEAMS_RBAC as k}from"@redocly/config";import{basename as R,join a
|
|
|
12
12
|
`:"",e=`${e}#`,a+=o.length?`Metadata:
|
|
13
13
|
${o}
|
|
14
14
|
`:"",a+=`
|
|
15
|
-
`,a+=K({parser:
|
|
15
|
+
`,a+=K({parser:i,headingLevel:e}),a+=W({parser:i,headingLevel:e}),a+=await Q({info:c,staticData:t,relativePath:s,pageName:n,headingLevel:e,config:r}),a}function j({title:i="",description:c,operationSearchDocuments:t,headingLevel:s}){let n=`${s} ${i}
|
|
16
16
|
|
|
17
17
|
`;return c&&(n+=`${c}
|
|
18
18
|
|
|
19
|
-
`),t.length&&t.forEach(e=>{const
|
|
19
|
+
`),t.length&&t.forEach(e=>{const r=Array.isArray(e.title)?e.title.join(" "):e.title;n+=`${s}# ${r}${e.deprecated?" (deprecated)":""}
|
|
20
20
|
|
|
21
21
|
`,n+=` - ${M({title:`${e.httpMethod?.toUpperCase()} ${e.httpPath}`,description:Array.isArray(e.text)?e.text.join(" "):e.text,slug:Y(e.url)})}`,n+=`
|
|
22
|
-
`}),n}function K({parser:
|
|
22
|
+
`}),n}function K({parser:i,headingLevel:c}){const{servers:t}=i.definition;if(t&&t.length){let s=`${c} Servers
|
|
23
23
|
|
|
24
24
|
`;return t.forEach(n=>{s+=n.description?`${n.description}
|
|
25
25
|
`:"",s+=`\`\`\`
|
|
@@ -27,15 +27,15 @@ ${n.url}
|
|
|
27
27
|
\`\`\`
|
|
28
28
|
|
|
29
29
|
`,n.variables&&(s+=`Variables:
|
|
30
|
-
`,Object.entries(n.variables).forEach(([e,
|
|
31
|
-
`,s+=
|
|
32
|
-
`:"",s+=
|
|
30
|
+
`,Object.entries(n.variables).forEach(([e,r])=>{s+=`- \`${e}\`${r.description?`: ${r.description}`:""}
|
|
31
|
+
`,s+=r.default?`Default: ${JSON.stringify(r.default)}
|
|
32
|
+
`:"",s+=r.enum?`Enum: ${r.enum.map(o=>JSON.stringify(o)).join(", ")}
|
|
33
33
|
`:""}),s+=`
|
|
34
|
-
`)}),s}return""}async function Q({info:
|
|
34
|
+
`)}),s}return""}async function Q({info:i,staticData:c,relativePath:t,pageName:s,headingLevel:n,config:e}){const r=_(c.props?.outdir||"",J,H(t,".yaml"));if(G(r,e.rbac||{},e.requiresLogin||!1,{isAuthenticated:!1,teams:[z]})){let o=`${n} Download OpenAPI description
|
|
35
35
|
|
|
36
|
-
`;return o+=M({title:
|
|
36
|
+
`;return o+=M({title:i.title||s||"OpenAPI definition",description:void 0,slug:r}),o}return""}function W({parser:i,headingLevel:c}){if(!i.definition.components?.securitySchemes)return"";let t=`${c} Security
|
|
37
37
|
|
|
38
|
-
`;const{securitySchemes:s}=
|
|
38
|
+
`;const{securitySchemes:s}=i.definition.components;return Object.keys(s).forEach(n=>{const e=s[n];e&&(t+=`${c}# ${n}
|
|
39
39
|
|
|
40
40
|
`,t+=e.description?`${e.description}
|
|
41
41
|
|
|
@@ -47,14 +47,14 @@ ${n.url}
|
|
|
47
47
|
`),e.bearerFormat&&(t+=`Bearer Format: ${e.bearerFormat}
|
|
48
48
|
`),e.flows?.implicit?.authorizationUrl&&(t+=`Authorization URL: ${e.flows.implicit?.authorizationUrl}
|
|
49
49
|
`),e.flows?.implicit?.scopes&&(t+=`Scopes:
|
|
50
|
-
`,Object.entries(e.flows?.implicit?.scopes||{}).forEach(([
|
|
50
|
+
`,Object.entries(e.flows?.implicit?.scopes||{}).forEach(([r,o])=>{t+=`- \`${r}\`: ${o}
|
|
51
51
|
`})),e.flows?.password?.tokenUrl&&(t+=`Token URL: ${e.flows.password?.tokenUrl}
|
|
52
52
|
`),e.flows?.password?.scopes&&(t+=`Scopes:
|
|
53
|
-
`,Object.entries(e.flows?.password?.scopes||{}).forEach(([
|
|
53
|
+
`,Object.entries(e.flows?.password?.scopes||{}).forEach(([r,o])=>{t+=`- \`${r}\`: ${o}
|
|
54
54
|
`})),t+=`
|
|
55
|
-
`)}),t}function X({title:
|
|
55
|
+
`)}),t}function X({title:i,security:c,document:t,version:s,headingLevel:n,operation:e}){const{text:r,httpMethod:o,httpPath:a,deprecated:m}=t,u=v(t.parameters||[],`${n}#`),f=I(`${n}#`,t.parameters,e);let l=i?`${n} ${i}${m?" (deprecated)":""}
|
|
56
56
|
|
|
57
|
-
`:"";return l+=
|
|
57
|
+
`:"";return l+=r?`${r}
|
|
58
58
|
|
|
59
59
|
`:"",l+=`Endpoint: ${o?.toUpperCase()} ${a}
|
|
60
60
|
`,l+=s?`Version: ${s}
|
|
@@ -64,7 +64,7 @@ ${n.url}
|
|
|
64
64
|
`,l+=u?`${u}
|
|
65
65
|
`:"",l+=`
|
|
66
66
|
`,l+=`${f.join(`
|
|
67
|
-
`)}`,l}function Z({title:
|
|
67
|
+
`)}`,l}function Z({title:i,name:c,xMcpConfig:t,headingLevel:s}){const n=t?.tools.find(r=>r.name===c);if(!n)return"";let e=`${s} ${i}
|
|
68
68
|
|
|
69
69
|
`;return e+=n.description?`${n.description}
|
|
70
70
|
|
|
@@ -80,13 +80,13 @@ ${JSON.stringify(n.inputSchema,null,2)}
|
|
|
80
80
|
${JSON.stringify(n.outputSchema,null,2)}
|
|
81
81
|
\`\`\`
|
|
82
82
|
|
|
83
|
-
`),e}function I(
|
|
84
|
-
`)}function v(
|
|
83
|
+
`),e}function I(i,c,t){return!c&&!t||!t?.responses?[]:t?.responses.filter(n=>!n.content?.mediaTypes[0]?.schema).map(n=>`${i} ${N(`response ${n.code} fields`)}
|
|
84
|
+
`)}function v(i,c){const t={};for(const n of i){const e=`${n.place}${n.mediaType?` (${n.mediaType})`:""}`;t[e]=[...t[e]||[],n]}return Object.entries(t).map(([n,e])=>{const r=e.map(o=>{const a=" ",m=[...o.path||[],o.name],u=Array.isArray(o.description)?o.description.join(" "):o.description;let f=` - \`${m.join(".")}\` (${o.type}${o.required?", required":""})
|
|
85
85
|
`;return f+=u?`${a}${u.trim()}
|
|
86
86
|
`:"",o.enum?f+=`${a}Enum: ${o.enum.map(l=>JSON.stringify(l)).join(", ")}
|
|
87
87
|
`:o.example&&(f+=`${a}Example: ${o.example}
|
|
88
88
|
`),f});return`${c} ${N(n)}:
|
|
89
89
|
|
|
90
|
-
${
|
|
90
|
+
${r.join(`
|
|
91
91
|
`)}`}).join(`
|
|
92
|
-
`)}function ee(
|
|
92
|
+
`)}function ee(i,c,t){const s=[],n=[];return i.forEach((e,r)=>{const o=[],a=[];e.forEach(m=>{const u=c.addItem(m);u&&(o.push(u),E({[k]:m[k],slug:u.url},t)&&a.push(u))}),s.push([r,o]),n.push([r,a])}),{all:s,publiclyAccessible:n}}function ne(i,c,t){const s=[],n=[];return i.forEach(e=>{const r=c.addItem(e);r&&(s.push(r),E({[k]:e[k],slug:r.url},t)&&n.push(r))}),{all:s,publiclyAccessible:n}}function N(i){return i.charAt(0).toUpperCase()+i.slice(1)}export{me as getAiDocumentsStore};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{REDOCLY_ROUTE_RBAC as f,REDOCLY_TEAMS_RBAC as
|
|
1
|
+
import{REDOCLY_ROUTE_RBAC as f,REDOCLY_TEAMS_RBAC as a}from"@redocly/config";import{logger as R}from"../../../tools/notifiers/logger.js";import{SearchIndexer as x}from"../search-indexer.js";import{extractDocumentSearchFacets as S,setDocumentSearchFacets as p}from"./search-facets.js";function _(r,m,d,o,l,h){return async t=>{if(h)return[];const c=t.metadata||{},n=new x(r,m,t.baseSlug||t.slug);n.addInfo(r.definition.info,c);for(const e of d)try{n.addItem(e)}catch(i){console.error(i),R.warn(`Failed to add item to search indexer: ${i}`)}const g={},s=S(c,r.definition.info,o),u=n.getResult().map(e=>({...e,[a]:e[a]||t[a],[f]:t[f]||{slug:t.slug,fsPath:t.fsPath},facets:s}));return p({...s,...g},o,l),u}}export{_ as searchResolver};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as g from"@redocly/openapi-docs";import{REDOCLY_TEAMS_RBAC as d}from"@redocly/config";import{combineUrls as
|
|
1
|
+
import*as g from"@redocly/openapi-docs";import{REDOCLY_TEAMS_RBAC as d}from"@redocly/config";import{combineUrls as u}from"@redocly/theme/core/utils";import{SEARCH_DOCUMENT_METADATA_KEY as y}from"../../constants/plugins/search.js";import{removeMarkdownLinks as c,stripFormatting as a}from"./utils.js";import{normalizeFrontmatterKeywords as x}from"../helpers/normalize-frontmatter-keywords.js";const l=g.default||g;class T{#n=[];#r;#s;#e;#i;constructor(e,t,n){this.#r=e,this.#s=t,this.#e=n}addItem(e){const{result:t}=x(e.keywords||e.operationDefinition?.keywords);t?.excludes&&e.type==="section"&&e.id===""&&(this.#i=t.excludes);try{let n;switch(e.type){case"tag":n=this.#c(e);break;case"operation":const o=this.getOperation(e);n=this.#d(o,e[d]);break;case"section":n=this.#p(e);break;case"rsrc":case"prompt":case"tool":n=this.#o(e);break}if(!n)return;const s=[...new Set([...t?.excludes?t.excludes:[],...this.#i?this.#i:[]])];return(t||s.length)&&(n[y]={curated:!0,...t,excludes:s}),this.#n.push(n),n}catch(n){console.error("Cannot add item to search indexer",n.message)}}addInfo(e,t){const n=this.#e,s={id:n,url:n,text:a(c(e.description||"")),title:a(`${e.title} (${e.version})`),metadata:t};return this.#n.push(s),s}#o(e){const t=u(this.#e,e.href);return{id:t,url:t,text:a(c(e.description||"")),title:e.name}}getResult(){return this.#n}getOperation(e){return l.getOperation(this.#r,e.operationDefinition,e.parent,{...this.#s,unstable_skipSamples:!0},e.href)}#a(e){return[...e.path||[],e.name.toString()].join(".")+e.description+e.place}#d(e,t){if(e.type!=="operation")return;let n={};for(let i of e.parameters){if(i[d]||!i.name)continue;const r=i.schema?.example||i.example,p={name:i.name,description:a(c(i.description)),place:i.in+" parameters",mediaType:void 0,type:i.schema?.type.toString()||"unknown",deepLink:l.generateDeepLink(i),[d]:i[d],required:i.required,example:r?JSON.stringify(r):void 0,enum:i.schema?.enum?.length?i.schema.enum:void 0};n[this.#a(p)]=p}this.#t(n,e.requestBody?.content?.mediaTypes[0]?.schema,e.requestBody?.content?.mediaTypes[0]?.name,"request fields",!1);for(let i of e.responses){const r=`response ${i.code} fields`;this.#t(n,i.content?.mediaTypes[0]?.schema,i.content?.mediaTypes[0]?.name,r,!0)}let s=u(this.#e,e.href);return{id:s,url:s,title:a(e.name),text:a(c(e.description||"")),httpMethod:e.httpVerb,httpPath:e.path,deprecated:e.deprecated,isAdditionalOperation:e.isAdditionalOperation,security:e.security.map(i=>i.schemes.map(r=>r.id)).flat().filter(Boolean),parameters:Object.values(n),badges:e.badges.length?e.badges:void 0,[d]:t}}#t(e,t,n,s,o,i=[]){if(!(i.length>3)&&!(!t||t.isCircular)){if(t?.fields)for(let r of t.fields){if(t[d]||r.kind==="additionalProperties"||r.schema?.readOnly&&!o||r.schema?.writeOnly&&o)continue;const p=r.schema?.example||r.example,h=r.schema?.enum,m={name:r.name,description:a(r.description),place:s,mediaType:n,path:i,deepLink:l.generateDeepLink(r),type:r.schema?.type.toString()||"unknown",required:r.required||t.schema.required?.includes(r.name)||!1,example:p?JSON.stringify(p):void 0,enum:h?.length?h:void 0},f=this.#a(m);e[f]==null&&(e[f]=m,this.#t(e,r.schema,n,s,o,i.concat([r.name])))}t?.items&&this.#t(e,t.items,n,s,o,i)}}#c(e){const t=u(this.#e,e.href);return{id:t,url:t,text:a(c(e.description||"")),title:a(e.name)}}#p(e){const t=u(this.#e,e.href);return{id:t,url:t,text:a(c(e.description||"")),title:a(e.name)}}}export{T as SearchIndexer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{writeFileSync as
|
|
1
|
+
import{writeFileSync as u}from"fs";import o from"path";import{dump as x}from"js-yaml";import{PUBLIC_API_DEFINITIONS_FOLDER as g,PUBLIC_STATIC_FOLDER as c}from"../../constants/common.js";import{logger as h}from"../../tools/notifiers/logger.js";import{ensureDir as D}from"../../utils/fs.js";const a=new Map;function j(i,t){const r=g.slice(1);try{for(const n of i){const{definition:m,originalDefinition:p,relativePath:e,hash:s}=n,f=p||m;if(a.get(e)!==s){if(e.startsWith(c+"/")){const d=o.posix.extname(e);l({outDir:t,definitionFolder:".",relativePath:e.replace(c+"/",""),definitionString:d===".json"?JSON.stringify(f,null,2):x(f)}),a.set(e,s);continue}l({outDir:t,definitionFolder:r,relativePath:F(e,".json"),definitionString:JSON.stringify(f,null,2)}),a.set(e,s)}}}catch(n){h.error("failed to store definition bundles",n)}}function F(i,t){const r=o.posix.dirname(i),n=o.posix.basename(i,o.posix.extname(i))+t;return o.posix.join(r,n)}function l({outDir:i,definitionString:t,relativePath:r,definitionFolder:n}){u(D(o.resolve(i,`${n}/${r}`)),t,"utf8")}export{F as replaceFileExtension,j as storeDefinitionBundles};
|
|
@@ -3,6 +3,7 @@ import type { ItemBadge, NavItem, ResolvedNavItem } from '@redocly/config';
|
|
|
3
3
|
export type IMenuItemExtended = {
|
|
4
4
|
httpVerb?: string;
|
|
5
5
|
isWebhook?: boolean;
|
|
6
|
+
isRpc?: boolean;
|
|
6
7
|
badges?: ItemBadge[];
|
|
7
8
|
} & IMenuItem;
|
|
8
9
|
export declare function convertOpenAPIDocs2Sidebar(data: {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { LifecycleContext, ProcessContentActions } from '../../types';
|
|
2
2
|
import type { DetailedScorecardData } from './types.js';
|
|
3
3
|
import { type ScorecardConfig, type RedoclyConfig } from '@redocly/theme/config';
|
|
4
|
-
export declare function computeScorecard({ actions, context, scorecardConfig, reuniteConfig, }: {
|
|
4
|
+
export declare function computeScorecard({ actions, context, scorecardConfig, reuniteConfig, configHash, }: {
|
|
5
5
|
actions: ProcessContentActions;
|
|
6
6
|
context: LifecycleContext;
|
|
7
7
|
scorecardConfig: ScorecardConfig;
|
|
8
8
|
reuniteConfig: RedoclyConfig['reunite'];
|
|
9
|
+
configHash: string;
|
|
9
10
|
}): Promise<Record<string, DetailedScorecardData>>;
|
|
10
11
|
//# sourceMappingURL=compute-scorecard.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
- ${
|
|
3
|
-
- `)}`;
|
|
4
|
-
... and ${
|
|
1
|
+
import u from"node:path";import{existsSync as V,readFileSync as L}from"node:fs";import $ from"picomatch";import{removeLeadingSlash as b}from"@redocly/theme/core/utils";import{parsePathVersions as E}from"../../../utils/path/parse-path-versions.js";import{logger as a}from"../../tools/notifiers/logger.js";import{envConfig as M}from"../../config/env-config.js";import{ScorecardStatus as m}from"./types.js";import{getTarget as k}from"./loaders/scorecard.js";import{sha1 as z}from"../../utils/crypto/sha1.js";const h=15;async function ie({actions:n,context:s,scorecardConfig:r,reuniteConfig:l,configHash:i}){a.info("Computing scorecard...");const o=r.levels||[],p=o[0];let t=await n.loadOpenApiDefinitions(s);const N=r.ignore||[],_=$(N),D=new Set,x=a.startTiming(),c={};let g={};V(u.resolve(n.outdir,"_scorecard","meta.json"))&&(g=JSON.parse(L(u.resolve(n.outdir,"_scorecard","meta.json"),"utf-8")));let v=0;M.isDevelopMode&&!M.DEV_FULL_SCORECARD&&(t=t.slice(0,50));for(const e of t){if(e.definition?.["x-redocly-openrpc"]||e.isVirtual||!e.definition)continue;const P=e.definition.info?.["x-metadata"]||{},y=b(e.realRelativePath);if(c[e.realRelativePath])continue;const T=e.customOutputRelativeFile||e.realRelativePath;D.add(T);const A=k(r.targets,P),{minimumLevel:S=p.name,ignore:B}=A||{};if(B||_(y)){a.info(`Skipping scorecard calculation for ignored file: ${e.realRelativePath}`);continue}let d;const f=g[e.realRelativePath],O=z(e.hash+i+JSON.stringify(P));f&&f.hash===O?(v++,d=JSON.parse(L(u.resolve(n.outdir,f.filename),"utf-8"))):{data:d}=await s.cache.load(e.realRelativePath,"scorecard");const{levels:C,scorecardLevelIdx:R,scorecardLevel:I}=d,w=o.findIndex(J=>J.name===S),j=R-1<w?m.BelowMinimum:w<o.length-1?m.Minimum:m.Highest,F=E(e.realRelativePath)?.versionName,H={levels:C,status:j,targetLevel:S,scorecardLevel:I,scorecardLevelIdx:R,relativePath:e.realRelativePath,title:e.definition.info?.title,version:F,hash:O};c[e.realRelativePath]=H}return a.infoTime(x,"Scorecard processed, reused: %s/%s",v,t.length),U(c,l,r),c}function U(n,s,r){const l=Object.values(n).filter(t=>t.status===m.BelowMinimum);if(l.length===0)return;const i=l.map(t=>t.relativePath);let o=`Detected OpenAPI definitions with score below minimum level:
|
|
2
|
+
- ${i.slice(0,h).map(()=>"%rp").join(`
|
|
3
|
+
- `)}`;i.length>h&&(o+=`
|
|
4
|
+
... and ${i.length-h} more`),s?.ignoreLint??r.ignoreNonCompliant?a.warn(o,...i):a.error(o,...i)}export{ie as computeScorecard};
|
|
@@ -124,13 +124,14 @@ export declare const getScorecardConfig: (config: Partial<RedoclyConfig>) => {
|
|
|
124
124
|
property?: string | undefined;
|
|
125
125
|
} | undefined;
|
|
126
126
|
targets?: {
|
|
127
|
+
ignore?: boolean | undefined;
|
|
127
128
|
rules?: {
|
|
128
129
|
[x: string]: unknown;
|
|
129
130
|
} | undefined;
|
|
130
131
|
minimumLevel?: string | undefined;
|
|
131
132
|
where: {
|
|
132
133
|
metadata: {
|
|
133
|
-
[x: string]:
|
|
134
|
+
[x: string]: unknown;
|
|
134
135
|
};
|
|
135
136
|
};
|
|
136
137
|
}[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{writeFileSync as
|
|
1
|
+
import{writeFileSync as I}from"node:fs";import v from"path";import{SCORECARD_OUTPUT_FILE_NAME as N}from"../../constants/common.js";import{mapObject as P}from"../../../utils/object/map-object.js";import{envConfig as F}from"../../config/env-config.js";import{removeLeadingSlash as U}from"../../../utils/url/remove-leading-slash.js";import{combineUrls as D}from"@redocly/theme/core/utils";import{logger as O}from"../../tools/notifiers/logger.js";import{getRouteSlugToCatalogSlugMap as k}from"../../utils/catalog-classic/get-route-slug-to-catalog-slug-map.js";import{deepEqual as j}from"../../../utils/object/deep-equal.js";import{ensureDir as q}from"../../utils/index.js";import{getTemplatePath as M}from"./get-template-path.js";import{getAllRuleNames as J}from"./lint.js";import{getScorecardConfig as b}from"./get-scorecard-config.js";import{CUSTOM_FIELDS_SERVER_PROPS_GETTER_ID as W}from"../catalog-classic/index.js";import{getScorecardSlug as $}from"./shared-utils.js";import{scorecardConfigLoader as G}from"./loaders/scorecard-config.js";import{scorecardLoader as H}from"./loaders/scorecard.js";import{computeScorecard as x}from"./compute-scorecard.js";import{telemetryTraceStep as B}from"../../../cli/telemetry/helpers/trace-step.js";const V="scorecardClassic";let n={},L={};async function fe({id:w,requiredEntitlements:A,loadersPrefix:y=""}){let g=null,E=null,R=!1;return{id:w??"scorecardClassic",requiredEntitlements:A??["scorecard"],loaders:{[`${y}scorecard-config`]:G,[`${y}scorecard`]:H},async processContent(t,c){await B("build.plugin.scorecard_classic",async m=>{const a=t.createTemplate(V,M("./template/index.js")),s=await c.getConfig(),l=b(s),f=s?.reunite??{},d=[()=>g===null,()=>!j(n,l),()=>!j(L,f)].some(e=>e());n=l,m?.setAttribute("config",JSON.stringify(n||{})),L=f;const p=s.catalogClassic??{},u=n.levels||[];if(u.length<1)throw Error("Invalid configuration of levels config");d&&(g=await x({actions:t,context:c,scorecardConfig:n,reuniteConfig:L,configHash:s.hash||""}));const{data:{configs:S}}=await c.cache.load("",`${y}scorecard-config`),{perLevel:r,all:i}=J(S);E={levelNames:u.map(e=>e.name),rules:i,rulesPerLevel:r};for(const[e,o]of Object.entries(p)){const T=D(o.slug,"scorecard/");t.addRoute({duplicateInAllLocales:!0,slug:T,fsPath:D(o.slug,"scorecard/"),templateId:a,hasClientRoutes:!0,excludeFromSidebar:!0,serverPropsGetterIds:[W],sharedData:[{id:"scorecard",key:"scorecard"},{key:"catalog",id:"catalog-"+e}],getNavText:()=>Promise.resolve(o.title||"API design scorecard"),getStaticData:async()=>({props:{catalogId:e,catalogConfig:{...o,items:void 0},scorecardConfig:n,scorecardInfo:E}})})}})},afterRoutesCreated:async(t,c)=>{const m=await c.getConfig(),a=m.catalogClassic??{},s=b(m),l={},f=O.startTiming("Injecting scorecard data into routes..."),d={};if(Object.keys(a).length){const u=Object.keys(a).length>1?await k(t,c,a):null;for(const[S,r]of Object.entries(g||{})){const i=t.getRouteByFsPath(S),e=i?.slug;if(!e)continue;if(i&&!s.ignoreMetadata){const C=u?u.get(e)??Object.values(a)[0].slug:Object.values(a)[0].slug,h=D(C,"scorecard/");i.metadata={...i.metadata,scorecardStatus:r.status,scorecardLevel:r.scorecardLevel,scorecardLevelIdx:r.scorecardLevelIdx,scorecardLevels:P(r.levels,_=>({uniqueErrors:_.uniqueErrors,uniqueWarnings:_.uniqueWarnings})),scoreCardSlug:h+"apis/"+encodeURIComponent(U(e))}}const o=v.join("_scorecard",$(e)),T=v.resolve(t.outdir,o);d[e]={detailsChunkPath:o,...r,levels:P(r.levels,C=>({...C,problems:C.problems.map(h=>({ruleId:h.ruleId,severity:h.severity}))}))},R||(I(q(T),JSON.stringify(r)),l[S]={hash:r.hash,filename:o})}I(v.resolve(t.outdir,"_scorecard","meta.json"),JSON.stringify(l)),await t.createSharedData("scorecard",d)}O.infoTime(f,"Injecting scorecard data into routes...");const p=F.REDOCLY_METADATA_OUTPUT_FOLDER;!R&&p&&(O.info("Writing scorecard data..."),I(v.join(p,N),JSON.stringify({scorecardData:d,...E})),g=null,O.info("Scorecard data written...")),R=!0}}}export{fe as scorecardClassicPlugin};
|
|
@@ -5,7 +5,7 @@ export declare function lintDefinition(content: {
|
|
|
5
5
|
relativePath: string;
|
|
6
6
|
content: string;
|
|
7
7
|
parsed: any;
|
|
8
|
-
}, config: Config, context: LifecycleContext, externalRefResolver: ExternalResolver): Promise<{
|
|
8
|
+
}, config: Config, context: LifecycleContext, externalRefResolver: ExternalResolver, ignoreStructRule?: boolean): Promise<{
|
|
9
9
|
uniqueErrors: number;
|
|
10
10
|
uniqueWarnings: number;
|
|
11
11
|
problems: ProblemWithCodeframe[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as f from"path";import{lintDocument as g,getTotals as h,getLineColLocation as v,Source as C,getCodeframe as P}from"@redocly/openapi-core";import{slash as p}from"../../../utils/path/slash.js";import{getUniqueProblemsCount as O}from"./shared-utils.js";const b=10;async function j(a,s,t,e,r=!1){const o=f.resolve(t.fs.cwd,a.relativePath),l=s.resolvedConfig.apis??{},d=Object.keys(l).find(c=>f.resolve(s.configPath?f.dirname(s.configPath):t.fs.cwd,l[c].root)===o),u={config:s.forAlias(d),base:f.dirname(o),document:{source:new C(o,a.content),parsed:a.parsed},externalRefResolver:e},n=await g(u),i=O(n);return{...h(n),uniqueErrors:i.errors,uniqueWarnings:i.warnings,problems:A(n,t.fs.cwd).filter(c=>!c.ignored||r&&c.ruleId!=="struct")}}function E(a){const s=new Set,t={};for(const[e,r]of Object.entries(a)){const o=t[e]=t[e]||new Set,l=[r],d=r.resolvedConfig?.apis??{};for(const u of Object.keys(d)){const n=r.forAlias(u);n&&n!==r&&l.push(n)}for(const u of l){const n=Object.values(u.rules).flatMap(i=>Object.entries(i));for(const[i,c]of n)if(i==="assertions"){if(!Array.isArray(c))continue;for(const m of c)m&&(o.add(m.assertionId),s.add(m.assertionId))}else s.add(i),o.add(i)}}return{perLevel:Object.fromEntries(Object.entries(t).map(([e,r])=>[e,Array.from(r)])),all:Array.from(s)}}function A(a,s){const t={};return a.map(e=>{const r=t[e.ruleId]||0;t[e.ruleId]=r+1;const o=e.location[0];if(r>b)return{...e,codeframe:`Only first ${b} code frames are shown.`,location:{...o,source:{absoluteRef:p(f.relative(s,o.source.absoluteRef))}},from:void 0};const l=v(o);return{...e,codeframe:P(l,!1),location:{...o,source:{absoluteRef:p(f.relative(s,o.source.absoluteRef))}},from:void 0}})}export{E as getAllRuleNames,j as lintDefinition};
|