@redocly/realm 0.129.2 → 0.130.0-custom.2
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 +392 -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/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/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/usePageTimeTracker.js +1 -1
- package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
- package/dist/client/app/hooks/useTelemetry.d.ts +2 -2
- package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
- package/dist/client/app/search/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 +5 -5
- package/dist/client/constants/ai-search.d.ts +30 -0
- package/dist/client/constants/ai-search.js +1 -0
- package/dist/client/constants/index.d.ts +2 -0
- package/dist/client/constants/index.js +1 -0
- package/dist/client/providers/hooks.js +1 -1
- package/dist/client/runtime/loader.js +1 -1
- 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/config/env-config.d.ts +17 -0
- package/dist/config/env-config.js +1 -0
- package/dist/config/env-schema.d.ts +242 -0
- package/dist/config/env-schema.js +3 -0
- package/dist/config/env-schemas/api-urls.d.ts +24 -0
- package/dist/config/env-schemas/api-urls.js +1 -0
- package/dist/config/env-schemas/auth.d.ts +42 -0
- package/dist/config/env-schemas/auth.js +1 -0
- package/dist/config/env-schemas/catalog.d.ts +12 -0
- package/dist/config/env-schemas/catalog.js +1 -0
- package/dist/config/env-schemas/database.d.ts +15 -0
- package/dist/config/env-schemas/database.js +1 -0
- package/dist/config/env-schemas/environment-detection.d.ts +24 -0
- package/dist/config/env-schemas/environment-detection.js +1 -0
- package/dist/config/env-schemas/feature-flags.d.ts +24 -0
- package/dist/config/env-schemas/feature-flags.js +1 -0
- package/dist/config/env-schemas/organization-project.d.ts +27 -0
- package/dist/config/env-schemas/organization-project.js +1 -0
- package/dist/config/env-schemas/scorecards.d.ts +12 -0
- package/dist/config/env-schemas/scorecards.js +1 -0
- package/dist/config/env-schemas/search.d.ts +21 -0
- package/dist/config/env-schemas/search.js +1 -0
- package/dist/config/env-schemas/server-config.d.ts +51 -0
- package/dist/config/env-schemas/server-config.js +1 -0
- package/dist/config/env-schemas/site.d.ts +12 -0
- package/dist/config/env-schemas/site.js +1 -0
- package/dist/config/env-schemas/ssr.d.ts +18 -0
- package/dist/config/env-schemas/ssr.js +1 -0
- package/dist/config/env-schemas/telemetry.d.ts +15 -0
- package/dist/config/env-schemas/telemetry.js +1 -0
- package/dist/config/env-schemas/test.d.ts +22 -0
- package/dist/config/env-schemas/test.js +1 -0
- package/dist/constants/common.d.ts +4 -2
- package/dist/constants/common.js +1 -1
- package/dist/constants/l10n/langs/ar.js +1 -1
- package/dist/constants/l10n/langs/de.js +1 -1
- package/dist/constants/l10n/langs/en.js +1 -1
- package/dist/constants/l10n/langs/es.js +1 -1
- package/dist/constants/l10n/langs/fr.js +1 -1
- package/dist/constants/l10n/langs/hi.js +1 -1
- package/dist/constants/l10n/langs/it.js +1 -1
- package/dist/constants/l10n/langs/ja.js +1 -1
- package/dist/constants/l10n/langs/ko.js +1 -1
- package/dist/constants/l10n/langs/pl.js +1 -1
- package/dist/constants/l10n/langs/pt-BR.js +1 -1
- package/dist/constants/l10n/langs/pt.js +1 -1
- package/dist/constants/l10n/langs/ru.js +1 -1
- package/dist/constants/l10n/langs/uk.js +1 -1
- package/dist/constants/l10n/langs/zh.js +1 -1
- package/dist/server/api-routes/execute-api-route.js +1 -1
- package/dist/server/api-routes/import-api-routes-handlers.js +1 -1
- package/dist/server/api-routes/run-api-routes-worker.js +1 -1
- package/dist/server/constants/common.js +1 -1
- package/dist/server/constants/plugins/catalog-entities.d.ts +1 -0
- package/dist/server/constants/plugins/catalog-entities.js +1 -1
- package/dist/server/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/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/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/asyncapi-docs/template/AsyncApiDocs.d.ts +2 -1
- package/dist/server/plugins/asyncapi-docs/template/AsyncApiDocs.js +9 -3
- 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/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/resolve-link.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/plugins/render-mermaid.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/mcp/auth/auth-handlers.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.d.ts +54 -0
- package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.js +1 -0
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.d.ts +9 -8
- package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +7 -13
- package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +9 -6
- package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/search.d.ts +9 -2
- package/dist/server/plugins/mcp/docs-mcp/tools/search.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +2 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
- package/dist/server/plugins/mcp/docs-mcp/tools/whoami.d.ts +9 -2
- package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
- package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
- package/dist/server/plugins/mcp/handlers/errors.js +1 -1
- package/dist/server/plugins/mcp/handlers/handle-mcp-request.d.ts +5 -0
- package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -0
- package/dist/server/plugins/mcp/handlers/mcp-request-handler.d.ts +0 -1
- package/dist/server/plugins/mcp/handlers/mcp-request-handler.js +1 -1
- package/dist/server/plugins/mcp/servers/base-server.js +1 -1
- package/dist/server/plugins/mcp/types.d.ts +40 -0
- package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +3 -0
- package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -0
- package/dist/server/plugins/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/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/template/OpenAPIDocs.js +8 -4
- package/dist/server/plugins/openapi-docs/template/helpers.d.ts +2 -2
- package/dist/server/plugins/openapi-docs/template/helpers.js +3 -3
- 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 +2 -1
- package/dist/server/plugins/scorecard-classic/template/Grid/Grid.js +3 -3
- 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 +93 -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-ai-search-documents.js +1 -1
- 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.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 +14 -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 +7 -1
- package/dist/server/types/plugins/markdown.d.ts +2 -0
- package/dist/server/types/plugins/scorecards.d.ts +30 -0
- package/dist/server/types/plugins/scorecards.js +0 -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/globs.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.js +3 -3
- package/dist/server/web-server/dev-server.js +1 -1
- package/dist/server/web-server/handle-api-route-request.js +1 -1
- package/dist/server/web-server/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/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/dynamic-route.js +1 -1
- package/dist/server/web-server/routes/error.js +1 -1
- package/dist/server/web-server/routes/helpers/get-current-rbac-teams.d.ts +3 -0
- package/dist/server/web-server/routes/helpers/get-current-rbac-teams.js +1 -0
- package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.d.ts +11 -0
- package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.js +1 -0
- package/dist/server/web-server/routes/index.js +1 -1
- package/dist/server/web-server/routes/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/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/package.json +21 -23
- 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/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/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/cli/develop.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{logger as
|
|
1
|
+
import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as u}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{envConfig as m}from"../config/env-config.js";import{resolveCache as w}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as p}from"../server/utils/index.js";import{createClientCompiler as C,createServerCompiler as h}from"../server/esbuild/esbuild.js";import{initPlugins as S,runPlugins as f,writeClientEntries as E}from"../server/plugins/lifecycle.js";import{startDevServer as R}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as b}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as g}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as y}from"../server/providers/database/copy-migrations.js";async function F(i,e){t.info("Starting project preview mode."),E(e),t.startTiming("initial-js"),await L(e),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:a,lifecycleContext:n}=await S({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:i["dev-login"]!==!1,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=n,y(e),await f(a,e,n,{failFast:!0});const d=async()=>{const r=performance.now();u.clearErrors(),await f(a,e,n),m.REDOCLY_EXP_DISABLE_MD_VALIDATION!=="true"?await b(e,n):t.info("Skipping markdown validation step"),D().then(async()=>{await g(n);const l=p(e.getAllRoutes()),o=u.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,l);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,l),e.runListeners("routes-updated")})};m.REDOCLY_EXP_DISABLE_MD_VALIDATION!=="true"?await b(e,n):t.info("Skipping markdown validation step"),await g(n);const s=p(e.getAllRoutes());u.summary(" \u{1F440} Watching for changes...",s),e.runListeners("pages-updated",void 0,s),n.fs.watch(async()=>{w.clear(),await d()}),t.verbose("Starting development server."),await R(e,n,{port:Number(i.port||4e3)}),u.listenStdin()}async function L(i){let e=!0,a=!0;const n=r=>{r==="client"?e=!0:a=!0,i.runListeners("build-started"),e!=a&&(i.startEsbuildRun(),t.startTiming("rebuild"))},d=async r=>{r==="client"?e=!1:a=!1,!(e||a)&&(i.finishEsbuildRun(),i.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,l)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>d("client")};C(i,i.outdir,"development",o).then(c=>c.watch()).catch(l)}),new Promise((r,l)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>d("server")};h(i,i.serverOutDir,"development",o).then(c=>c.watch()).catch(l)})];await Promise.all(s),await i.reloadMarkdocOptions()}function D(){return new Promise(i=>{setTimeout(i,0)})}export{F as develop};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as c from"path";import{DEFAULT_THEME_NAME as i,USER_THEME_ALIAS as k}from"../../constants/common.js";import{logger as y}from"../../server/tools/notifiers/logger.js";import{reporter as T}from"../../server/tools/notifiers/reporter.js";import{resolveTheme as F}from"./resolveTheme.js";import{EntitlementsProvider as A}from"../../server/entitlements/entitlements-provider.js";const L=["markdoc/attributes/code-walkthrough-filesets.ts","markdoc/attributes/code-walkthrough-filters.ts","markdoc/components/CodeWalkthrough/**","markdoc/tags/code-step.ts","markdoc/tags/code-toggle.ts","markdoc/tags/code-walkthrough.ts"],m=["./core/**","./markdoc/**/default.*","**/__mocks__/**","**/index.*","**/utils/**/*","**/__tests__/**/*","**/__snapshots__/**/*","**/*.stories.*","**/variables.*",...L],v=["./components/CatalogClassic/CatalogClassicCard.*","./components/ColorModeSwitcher/**","./components/Feedback/**","./components/Filter/**","./components/Footer/**","./components/LanguagePicker/**","./components/Menu/**","./components/Navbar/**","./components/PageNavigation/**","./components/Product/**","./components/Search/**","./components/UserMenu/**","./layouts/RootLayout.*","./layouts/NotFound.*","./layouts/Forbidden.*","./layouts/DocumentationLayoutTop.*","./layouts/DocumentationLayoutBottom.*","./icons/**","./markdoc/**","./ext/**"];async function C(t){const[p,n]=t._,{theme:l,force:d,onSuccess:u,onError:g,onOverride:h,config:E}=t,_=A.instance(),s=c.resolve(t["project-dir"]);let o=l;o||(o=i);const r=await F(s,E.plugins||[],o,n);r||await T.panicOnContentError(`Theme ${o} not found. Skipping eject.`);const e=r?.config.ejectIgnore;e&&!Array.isArray(e)&&y.warn("'ejectIgnore' must be of type Array. Skipping.");const a=await _.getPackageEjectIgnore(),f={force:d,onSuccess:u,onError:g,onOverride:h,onlyFiles:o===i?v:void 0,ignoreFiles:Array.isArray(e)?[...e,...a,...m]:[...a,...m]};return{objectType:p,pathToThemeFolder:r?.pluginDirAbsolutePath,pathToPortalCustomThemeFolder:c.resolve(s,k),componentToEject:n,theme:o,options:f}}export{m as DEFAULT_IGNORED_FILES,v as EJECTABLE_FILES,C as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"node:path";import{copyFileSync as v,existsSync as s,mkdirSync as u}from"node:fs";import{envConfig as c}from"../../config/env-config.js";import{logger as l}from"../../server/tools/notifiers/logger.js";import{sanitizeBranchName as a}from"../../server/utils/envs/sanitize-branch-name.js";const F=n=>{const i=f();s(n.serverOutDir)||u(n.serverOutDir,{recursive:!0});const e=[];for(const o of i){const r=t.join(n.contentDir,o);if(!s(r))continue;const p=t.join(n.serverOutDir,o);v(r,p),e.push(o)}e.length>0&&l.info(`Env files included in bundle: ${e.map(()=>"%rp").join(", ")}`,...e)},f=()=>{const n=c.redoclyEnv,i=c.PUBLIC_REDOCLY_BRANCH_NAME,e=[".env"];switch(i&&e.push(`.env.branch.${a(i)}`),n){case"production":e.push(".env.production");break;case"preview":e.push(".env.preview");break;default:e.push(".env.development");break}return e};export{F as copyEnvFiles};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import T from"node:path";import{unlink as h}from"node:fs/promises";import{writeFileSync as y}from"node:fs";import{
|
|
1
|
+
import T from"node:path";import{unlink as h}from"node:fs/promises";import{writeFileSync as y}from"node:fs";import{envConfig as S}from"../../config/env-config.js";import{PORTAL_VERSION as A}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as b}from"../../server/tools/notifiers/reporter.js";import{shutdowner as O}from"../../server/tools/shutdowner.js";import{promiseMapLimit as D}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as E}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as v}from"../../server/utils/index.js";import{initPlugins as M,runPlugins as _,writeClientEntries as x}from"../../server/plugins/lifecycle.js";import{createClientCompiler as L,createNodeBundleCompiler as J}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as j}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as k}from"./copy-env-files.js";import{EsbuildError as l,esbuildLogger as p}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as F}from"../../server/utils/report-all-errors.js";import{collectAnalytics as U}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as z}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as m}from"../telemetry/helpers/trace-step.js";async function si(C,i){c.initialize(A),e.info("Starting project build.");const P=e.startTiming();await m("build.start",async R=>{x(i);const d=await L(i,i.outdir,"production"),u=await J(i,i.serverOutDir,"production");let n,f;try{await m("build.client_compilation",async()=>{const s=e.startTiming(),o=await d.rebuild().catch(a=>{throw new l(a)});Array.isArray(o.warnings)&&p(new l({warnings:o.warnings}));const r=e.infoTime(s,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage(r)}),await m("build.server_compilation",async()=>{const s=e.startTiming(),o=await u.rebuild().catch(a=>{throw new l(a)});Array.isArray(o.warnings)&&p(new l({warnings:o.warnings}));const r=e.infoTime(s,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage({message:r.message,timeMs:r.timeMs})}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:n}=await M({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:C.devLogin,setGlobalConfig:i.setGlobalConfig})),n.fs.dispose(),i.lifecycleContext=n,z(i),await _(t,i,n),f=U(i,n),await m("build.client_server_recompile",async()=>{const s=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([d.rebuild(),u.rebuild()]).catch(a=>{throw new l(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&p(new l({warnings:a}))});const r=e.infoTime(s,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage(r)}),await m("build.pages_validation",async()=>{await E(i,n),await j(i,n)}),await F(n),i.markUserCodeReady()}catch(t){R?.error(t),t instanceof l&&p(t)}finally{f&&await f.catch(()=>{}),await d.dispose(),await u.dispose()}b.printErrors(),e.info("Rendering pages..."),await m("build.prepare_static_data",async t=>{const s=e.startTiming(),o=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",o.length.toString()),await D(o,15,a=>i.writeRouteStaticData(a,n));const r=e.successTime(s,"Page static data prepared.");r&&c.sendTimingPerformedMessage(r)}),await m("build.store_serialization",async()=>{const t=e.startTiming();v(i.serverOutDir),y(T.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),k(i)});const g=S.REDOCLY_PROBLEMS_OUTPUT_FILE;if(g){const t=e.startTiming();y(v(g),JSON.stringify(b.getProblems()),"utf-8"),e.successTime(t,"Broken links written.")}await h(T.join(i.serverOutDir,"index.css"));const w=e.successTime(P,"All done");w&&c.sendTimingPerformedMessage(w)}),await O.exitWithCode(0)}export{si as prepare};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{detectSpec as m,getTypes as f,normalizeTypes as d,normalizeVisitors as u,resolveDocument as w,BaseResolver as h,Stats as S,walkDocument as y}from"@redocly/openapi-core";import{logger as l}from"../../../server/tools/notifiers/logger.js";import{telemetryTraceStep as g}from"../../telemetry/helpers/trace-step.js";import{telemetry as D}from"../../telemetry/index.js";const t={refs:{metric:"References",total:0,color:"red",items:new Set},externalDocs:{metric:"External Documents",total:0,color:"magenta"},schemas:{metric:"Schemas",total:0,color:"white"},parameters:{metric:"Parameters",total:0,color:"yellow",items:new Set},links:{metric:"Links",total:0,color:"cyan",items:new Set},pathItems:{metric:"Path Items",total:0,color:"green"},webhooks:{metric:"Webhooks",total:0,color:"green"},operations:{metric:"Operations",total:0,color:"yellow"},tags:{metric:"Tags",total:0,color:"white",items:new Set}};async function x(a,r){await g("stats.openapi",async()=>{l.info("OpenAPI collector: start processing documents...");const s=(await a.cache.load(".","load-oas-docs")).data,e=[];for(const o of s)if(!o.isVirtual){const n=await b(o);e.push(n)}D.sendStatsOpenapiCollectedMessage([{object:"openapi_stats",openapiStats:e.map(o=>JSON.stringify(o))}]),r||console.table(e),l.info("OpenAPI collector: openapi docments processing completed.")})}async function b(a){const r=a.definition,s=m(r),e=d(f(s)),o=u([{severity:"warn",ruleId:"openapi_stats",visitor:S(t)}],e),n={problems:[],specVersion:s,visitorsData:{}},c={source:{absoluteRef:""},parsed:r},i=e.Root;if(!i)throw new Error("Root type not found in OpenAPI spec types");const p=await w({rootDocument:c,rootType:i,externalRefResolver:new h});return y({rootType:i,normalizedVisitors:o,resolvedRefMap:p,document:c,ctx:n}),{path:a.relativePath,refs:t.refs.total,externalDocs:t.externalDocs.total,schemas:t.schemas.total,parameters:t.parameters.total,links:t.links.total,pathItems:t.pathItems.total,webhooks:t.webhooks.total,operations:t.operations.total,tags:t.tags.total,version:s}}export{x as collectOpenapiDocumentsStatistics};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{initPlugins as n}from"../../server/plugins/lifecycle.js";import{configParserPlugin as a}from"../../server/plugins/config-parser/index.js";import{openAPIDocsPlugin as c}from"../../server/plugins/openapi-docs/index.js";import{shutdowner as s}from"../../server/tools/shutdowner.js";import{PORTAL_VERSION as p}from"../../server/version.js";import{collectOpenapiDocumentsStatistics as l}from"./collectors/openapi.js";import{telemetry as f}from"../telemetry/index.js";import{telemetryTraceStep as y}from"../telemetry/helpers/trace-step.js";async function I(e){const{"project-dir":o,telemetry:t,verbose:i}=e;f.initialize(p,t,i),await y("stats",async()=>{const r=[a,c],{lifecycleContext:m}=await n({contentDir:o},r);await l(m,t)}),await s.exitWithCode(0)}export{I as stats};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={alias:{d:"project-dir",t:"telemetry"},default:{"project-dir":process.cwd(),telemetry:!1,verbose:!1}};export{e as statsCliOpts};
|
|
@@ -6,13 +6,13 @@ type TraceStepCallbacks = {
|
|
|
6
6
|
declare class CLITelemetryWrapper extends AsyncApiRealmCLI.Telemetry {
|
|
7
7
|
#private;
|
|
8
8
|
constructor();
|
|
9
|
-
initialize(portalVersion: string): void;
|
|
9
|
+
initialize(portalVersion: string, telemetryEnabled?: boolean, verbose?: boolean): void;
|
|
10
10
|
addTraceStepCallbacks(event: string, { error, end }: TraceStepCallbacks): void;
|
|
11
11
|
removeTraceStepCallbacks(event: string): void;
|
|
12
12
|
}
|
|
13
13
|
export declare const telemetry: CLITelemetryWrapper;
|
|
14
14
|
export declare const telemetryTracer: {
|
|
15
|
-
traceStep: <T extends AsyncApiRealmCLI.EventType>(event: T, data?: AsyncApiRealmCLI.EventPayload<T>) => AsyncApiRealmCLI.TraceStep<T> | undefined;
|
|
15
|
+
traceStep: <T extends AsyncApiRealmCLI.cloudEvents.EventType>(event: T, data?: AsyncApiRealmCLI.cloudEvents.EventPayload<T>) => AsyncApiRealmCLI.TraceStep<T> | undefined;
|
|
16
16
|
};
|
|
17
17
|
export {};
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AsyncApiRealmCLI as
|
|
1
|
+
import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{TELEMETRY_ENABLED as i}from"../../server/constants/common.js";import{shutdowner as a}from"../../server/tools/shutdowner.js";import{envConfig as o}from"../../config/env-config.js";import{PACKAGE_NAME as l}from"../../config/product-gates.js";class n extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organization:{id:o.ORGANIZATION_ID||"",slug:o.ORGANIZATION_SLUG||""},project:{id:o.PROJECT_ID||"",slug:""},productType:"cli",sourceDetails:{user:"Anonymous",object:"user",uri:""},request:{source:"cli"}}))}initialize(e,r,t){const s=r!==void 0?!(r&&i):!i;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${l}@${e}`,collectorTraceUrl:o.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:o.isProductionEnv,version:"1.0",tracerName:"cli-telemetry"},disabled:s,verbose:t}),a.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:r,end:t}){this.#e.set(e,{error:r,end:t})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:r,end:t}]of this.#e)e&&r(e),t();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const d=new n,f=d.tracer;export{d as telemetry,f as telemetryTracer};
|
package/dist/client/App.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as o from"react";import{useEffect as
|
|
1
|
+
import*as o from"react";import{useEffect as i}from"react";import{Outlet as g,useLocation as d,useNavigate as P}from"react-router-dom";import{components as h}from"@redocly-markdoc/components";import T from"@markdoc/markdoc/dist/react";import{withoutPathPrefix as D}from"@redocly/theme/core/utils";import{InternalServerErrorLayout as S}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as L}from"@redocly/theme/layouts/RootLayout";import{PageLayout as _}from"@redocly/theme/layouts/PageLayout";import{components as c}from"@redocly/theme/markdoc/default";import{Sidebar as C}from"./app/Sidebar/Sidebar";import{loadAndNavigate as v}from"./app/utils/loadAndNavigate";import{useActions as A}from"./app/Sidebar/useActions";import{useScrollTracker as N}from"./app/hooks/useScrollTracker";import{useAutoScroll as O}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as y,ASYNC_API_DOCS_TEMPLATE_ID as R,GRAPHQL_TEMPLATE_ID as I}from"../constants/common";import{removeTrailingSlash as b}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as k}from"../utils/url/remove-leading-slash";import{envConfig as s}from"../config/env-config";import*as x from"../server/plugins/markdown/markdoc/custom-components/index";import{ErrorBubble as M}from"./app/ErrorBubble";import{DefaultStyles as V}from"./styling/default-styles";import{ThemeDataProvider as B}from"./providers/theme/ThemeDataProvider";import{PageDataContext as G}from"./providers/page-data/PageDataContext";import{SeoTags as $}from"./app/seo/SeoTags";import{useRouterForLocalLinks as w,useRunningEnvironmentCheck as F}from"./providers/hooks";import{usePageData as H,usePageDataLoader as Q}from"./providers/page-data/hooks";import{ErrorBoundary as U}from"./ErrorBoundary";import{ErrorDetails as u,Loader as Y}from"./server-entry";import"@styles";import{useRouteChangeTracker as j}from"./app/hooks/useRouteChangeTracker";import{isInIframe as q}from"./utils";import{useL10n as z}from"./app/l10n";import{PostMessageProvider as J}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as K}from"./ScriptLoader";import{clientRoutes as W}from"./runtime/generated/routes.js";import{PageCounter as X}from"./app/PageCounter";import{usePageTimeTracker as Z}from"./app/hooks/usePageTimeTracker";globalThis.__LOADER.markdocComponents={...x,...c};function Be(){const e=Q(),[t,a]=o.useState(e),r=d(),m=P();z(),i(()=>{e?a(e):v({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>a(Y.loadSync(r.pathname)))},[r,m]),w();const n=F();return n?(console.log(n),o.createElement(u,{error:{message:n,name:""}})):t?o.createElement(U,null,o.createElement(V,null),o.createElement(G.Provider,{value:e||t},o.createElement(B,null,o.createElement(J,{enabled:s.NODE_ENV==="development"||q()},o.createElement(g,null))))):null}function f(){j(),Z(),N(),O();const e=H(),t=A(),{layout:a}=t,r={layout:a},m=s.NODE_ENV!=="production",n=globalThis.SSR_OMIT_SUSPENSE,p=e?.props.ast&&e.props.ast.$$mdtype==="Tag"?T(e.props.ast,o,{components:{...globalThis.__LOADER.markdocComponents,...c,...h}}):null,E=b(e?.slug||"");if(i(()=>{document.documentElement.classList.add("ready")},[]),e?.props.pagePropGetterError?.message)return m?o.createElement(u,{error:{...e?.props?.pagePropGetterError}}):o.createElement(S,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:p}):null;const l=()=>o.createElement(L,null,o.createElement(_,{sidebar:o.createElement(C,{layoutControls:t})},o.createElement($,{seo:e?.props.seo,slug:E}),e?.Template?o.createElement(e.Template,{pageProps:[y,R,I].includes(e.templateId)?{...e.props,apiOptions:r}:e?.props,children:p}):null),s.NODE_ENV!=="production"&&o.createElement(M,null),s.NODE_ENV!=="production"&&o.createElement(X,null),o.createElement(K,null));return n?l():o.createElement(o.Suspense,null,l())}const Ge=[...W.map(e=>({Component:f,path:k(D(e).substring(1)+"/*")})),{Component:f,path:"*"}];export{Be as App,f as Page,Ge as routes};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as n from"react";import{envConfig as s}from"../config/env-config.js";import{ErrorDetails as a}from"./app/Error/ErrorDetails";import{telemetry as i}from"./app/telemetry/index.js";class u extends n.Component{constructor(r){super(r),this.state={error:void 0}}componentDidCatch(r,c){const{name:e,message:t}=r,o={name:e,message:t,stack:c.componentStack??void 0};this.setState({error:o}),i.sendClientErrorMessage([{object:"client",message:`${e}: ${t}`,url:location.href}]),i.sendError(o,"ReactErrorBoundary"),s.NODE_ENV!=="production"&&console.log(r)}render(){return this.state.error&&s.NODE_ENV!=="production"?n.createElement(a,{error:this.state.error}):this.props.children}}export{u as ErrorBoundary};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o,{useEffect as D,useState as a}from"react";import I from"styled-components";import{useLocation as N}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{Admonition as k}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{withPathPrefix as w}from"@redocly/theme/core/utils";import{usePageData as b}from"../hooks/usePageData";import{usePreloadHistory as q}from"../usePreloadHistory";import{telemetry as x}from"../telemetry/index.js";import{useLoginUrl as R}from"../hooks";const U=e=>{const{apiId:s,status:t,setStatus:r}=e,u=q(),{userData:n}=b("userData")||{},h=N(),i=R(),[l,p]=a(),[g,A]=a(),[m,E]=a(!0);D(()=>{n?.isAuthenticated&&fetch(`/api/api-keys/api-products/${s}/access`).then(d=>d.json().then(c=>{d.ok?(r(c.status),A(c.appId)):p(c.message)}).catch(()=>p("Something went wrong")).finally(()=>E(!1)))},[n?.isAuthenticated,s,r]);const P=()=>{!n?.isAuthenticated&&i?window.location.href=`${w(i)}${i.includes("?")?"&":"?"}redirectTo=${h.pathname}`:t==="ACCEPTED"?u.push("/apps/"+g||""):t==="NONE"&&u.push("/apps/?createApp&apiId="+s),x.sendRequestApiAccessButtonClickedMessage([{object:"button",action:"click"}])},C=(t==="PENDING"||m||l!=null)&&n?.isAuthenticated;return o.createElement(o.Fragment,null,o.createElement(y,{disabled:C,onClick:P,fullWidth:!0,size:"small"},T(t,m,l,!!n?.isAuthenticated)))},T=(e,s,t,r)=>{if(!r)return"Request access";if(s)return"Loading...";if(t)return"Failed to check access";switch(e){case"NONE":return"Request access";case"ACCEPTED":return"Credentials";case"PENDING":return"Pending access..."}return null},Y=e=>e==="ACCEPTED"?o.createElement(f,{type:"success",name:"You have access to this API"}):e==="PENDING"?o.createElement(f,{type:"info",name:"You have requested access to this API"}):null,f=I(k)`
|
|
2
2
|
margin-top: 0px;
|
|
3
3
|
margin-bottom: var(--spacing-sm);
|
|
4
|
-
`;export{
|
|
4
|
+
`;export{U as RequestAccessButton,Y as renderAdmonition};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import e,{useEffect as y,useState as p}from"react";import b from"styled-components";import{Menu as I}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as L}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as w}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as A}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as B}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as P}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as x}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as D}from"@redocly/theme/core/utils";import{telemetry as h}from"../telemetry/index.js";import{usePreloadHistory as T}from"../usePreloadHistory";import{useTranslate as C}from"../hooks";import{usePageSharedData as M,usePageVersions as V}from"../../providers/page-data/hooks";import{useSidebarItems as
|
|
1
|
+
import e,{useEffect as y,useState as p}from"react";import b from"styled-components";import{Menu as I}from"@redocly/theme/components/Menu/Menu";import{SidebarActions as L}from"@redocly/theme/components/SidebarActions/SidebarActions";import{Sidebar as w}from"@redocly/theme/components/Sidebar/Sidebar";import{VersionPicker as A}from"@redocly/theme/components/VersionPicker/VersionPicker";import{Button as B}from"@redocly/theme/components/Button/Button";import{CatalogEntityHistoryButton as P}from"@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton";import{ArrowLeftIcon as x}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{withPathPrefix as D}from"@redocly/theme/core/utils";import{telemetry as h}from"../telemetry/index.js";import{usePreloadHistory as T}from"../usePreloadHistory";import{useTranslate as C}from"../hooks";import{usePageSharedData as M,usePageVersions as V}from"../../providers/page-data/hooks";import{useSidebarItems as j}from"./useSidebarItems";import{renderAdmonition as H,RequestAccessButton as R}from"./RequestAccessButton";function ie({layoutControls:s}){const{versions:l=[]}=V()||{},k=l.find(t=>t?.active),{translate:o}=C(),{currentItems:m,backLink:n,versionLabel:a,pushDrilldownState:g,popDrilldownState:v}=j(k),[c,S]=p(),{collapsedSidebar:i}=s,d=M("openAPIDocsStore")?.definition.info?.["x-metadata"]?.apiId,E=T(),[u,r]=p(void 0);return y(()=>{const t=setTimeout(()=>r(void 0),350);return()=>clearTimeout(t)},[u]),m.length?e.createElement(e.Fragment,null,e.createElement(w,{collapsed:i,menuItemsAnimation:u,versions:e.createElement(A,{versions:l,onChange:t=>{h.sendVersionPickerSelectionChangeMessage([{object:"version_picker",action:"change"}]);const f=location.hash?t?.link+location.hash:t?.link;f&&E.push(D(f))}}),menu:e.createElement(I,{items:m,onDrilldownOpen:t=>{r("slideInRight"),g(t)}}),footer:e.createElement("div",{style:{width:"100%"}},!i&&H(c),e.createElement(L,{...s,requestAccessButton:d?e.createElement(R,{apiId:d,status:c,setStatus:S}):null})),header:(n||a)&&e.createElement(q,null,n&&e.createElement(J,{icon:e.createElement(x,null),iconPosition:"left",variant:"ghost",size:"medium","data-component-name":"Sidebar/BackButton",to:n.slug,onClick:()=>{r("slideInLeft"),v(),h.sendSidebarDrilldownBackButtonClickedMessage([{object:"button",action:"click"}])}},i?"":n.label?e.createElement("div",{"data-translation-key":"sidebar.menu.backToLabel"},o("sidebar.menu.backToLabel",{value:o(n.labelTranslationKey,n.label)})):e.createElement("div",{"data-translation-key":"sidebar.menu.backLabel"},o("sidebar.menu.backLabel"))),a&&!i&&e.createElement(P,{version:a}))})):null}const q=b.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
gap: var(--menu-header-container-gap);
|
|
5
5
|
width: 100%;
|
|
6
|
-
`,
|
|
6
|
+
`,J=b(B)`
|
|
7
7
|
padding: var(--menu-item-padding-vertical) 0;
|
|
8
8
|
height: calc(var(--line-height-base) + var(--menu-item-padding-vertical) * 2);
|
|
9
9
|
justify-content: flex-start;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ResolvedNavItem, Version } from '@redocly/config';
|
|
2
|
+
/**
|
|
3
|
+
* Filters the sidebar items based on the active version.
|
|
4
|
+
*
|
|
5
|
+
* The input is a list of all items with versioned items mixed in.
|
|
6
|
+
*
|
|
7
|
+
* We can't just filter out all items that don't match the active version because there might be items from folders that have different versions.
|
|
8
|
+
*
|
|
9
|
+
* For example:
|
|
10
|
+
*
|
|
11
|
+
* /foo
|
|
12
|
+
* /@v1
|
|
13
|
+
* /@v2
|
|
14
|
+
* /bar
|
|
15
|
+
* /@v1
|
|
16
|
+
* /@latest
|
|
17
|
+
*
|
|
18
|
+
* So we foolow these rules:
|
|
19
|
+
* - we prefer the items with the same version name as the active version
|
|
20
|
+
* - if there are no items with the same version name, we pick the default version for folder
|
|
21
|
+
*/
|
|
22
|
+
export declare function filterOutVersionedItems(items: ResolvedNavItem[], activeVersion?: Version | null, versionNamesByFolderId?: Record<string, Set<string>>): ResolvedNavItem[];
|
|
23
|
+
//# sourceMappingURL=filter-out-versioned-items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function l(f,e,n={}){for(const r of f)r.versionFolderId&&r.version&&(n[r.versionFolderId]=n[r.versionFolderId]??new Set).add(r.version);return f.filter(r=>r.version==null?r:e?r.version===e.version?!0:r.versionFolderId&&n[r.versionFolderId]?.has(e.version)?!1:r.isDefault:r.isDefault).map(r=>{if(Array.isArray(r.items)&&r.items.length){const s=l(r.items,e,n);return s.length===0?null:{...r,items:s}}return r}).filter(r=>r!==null)}export{l as filterOutVersionedItems};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Version } from '@redocly/config';
|
|
2
2
|
import type { ItemState, DrilldownMenuItemDetails } from '@redocly/theme/core/types';
|
|
3
|
-
export declare function useRawSidebarItems(activeVersion?: Version | null): ResolvedNavItem[];
|
|
3
|
+
export declare function useRawSidebarItems(activeVersion?: Version | null): import("@redocly/config").ResolvedNavItem[];
|
|
4
4
|
export declare function useSidebarItems(activeVersion?: Version | null): {
|
|
5
5
|
currentItems: ItemState[];
|
|
6
6
|
allSidebarItems: ItemState[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLocation as
|
|
1
|
+
import{useLocation as _}from"react-router-dom";import{useEffect as k,useMemo as S,useState as b}from"react";import{useActiveSectionId as D}from"@redocly/theme/core/hooks";import{getMenuItemType as v}from"@redocly/theme/core/utils";import{MenuItemType as C}from"@redocly/theme/core/constants";import{usePageSharedData as T,useSidebarItemsData as h,useSidebarConnectedCatalogConfig as y,useSidebarConnectedCatalogEntity as G}from"../../providers/page-data/hooks";import{mapItemsPropsToState as g}from"./utils";import{injectCatalogItems as E}from"../../utils/catalog/inject-catalog-items";import{CATALOG_BASE_SLUG as O,CATALOG_SLUGS as K}from"../../../server/constants/plugins/catalog-entities";import{filterOutVersionedItems as B}from"./helpers/filter-out-versioned-items";const M="catalog.backToAllLabel",P=`${O}/${K.ALL}`;function U(n){const e=h();return S(()=>B(e,n),[e,n])}function J(n){const e=_(),t=D(e,!0),a=G(),p=y(),s=U(n),c=a?E(s,a.key,p?.slug,e.search):s,[u,I]=b(null),r=S(()=>g(c,e,t),[t,e,c]),l=T("current-catalog-info"),L=S(()=>f(r),[c]),[o,m]=b(L),i=o.length>0?o[o.length-1]:void 0,A=i&&g([...i.item.link?[{...i.item,items:[],menuStyle:void 0,separatorLine:!1}]:[],...i.item.items],e,t);k(()=>{if(!u||u!==t){const d=f(r);m(d),I(t)}},[s,e,t,u]);const w=i?{slug:i.previousLink,event:"sidebar_drilldown_back_button.clicked"}:a?{label:"Back to Catalog",labelTranslationKey:M,slug:P,event:"back_to_catalog_button.clicked"}:l?{label:l.catalog.label,labelTranslationKey:l.catalog.labelTranslationKey,slug:l.catalog.link,event:"back_to_catalog_button.clicked"}:void 0;return{currentItems:A||r,allSidebarItems:r,popDrilldownState:()=>{o.length>0&&m(o.slice(0,o.length-1))},pushDrilldownState:d=>{m([...o,d])},backLink:w,versionLabel:a?.version??null}}function f(n,e=[]){for(const t of n){if(!t.active&&!t.hasActiveSubItem)continue;if(v(t)===C.DrillDown&&e.push({item:t}),t.active)return e;if(t.hasActiveSubItem)return f(t.items,e)}return e}export{U as useRawSidebarItems,J as useSidebarItems};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ResolvedNavItem } from '@redocly/config';
|
|
2
2
|
import type { FilteredCatalog } from '@redocly/theme/core/types';
|
|
3
3
|
import type { CatalogConfig } from '@redocly/theme/config';
|
|
4
|
-
export declare function useCatalogClassic(config: CatalogConfig, items?: ResolvedNavItem[]): FilteredCatalog;
|
|
4
|
+
export declare function useCatalogClassic(config: CatalogConfig, items?: ResolvedNavItem[], withScorecardOnly?: boolean): FilteredCatalog;
|
|
5
5
|
export declare function fillSearchParams(filterProperty: string, filterValues: Set<string>, searchParams: URLSearchParams): void;
|
|
6
6
|
export declare function getFilterValues(filterValues: any): Set<string>;
|
|
7
7
|
//# sourceMappingURL=useCatalogClassic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as y from"react";import{useLocation as $,useNavigate as R}from"react-router-dom";import{usePageData as V,usePageSharedData as K}from"../../hooks";import{useProcessScorecard as q}from"@redocly/theme/ext/process-scorecard";import{withoutHash as j}from"@redocly/theme/core/utils";import{telemetry as L}from"../../telemetry/index.js";import{toStringIfDefined as A}from"../../../../utils/string/to-string-if-defined.js";import{findDeepFirst as G}from"../../../../utils/tree/find-deep-first.js";function ne(e,o,t){const c=$(),a=R(),n=V(),l=J(c),s=K("catalog"),[r,f]=y.useState(()=>(e.filters??[]).map(u=>{if(u.type==="date-range"){const[d,p]=l.get(u.property)?.split("--")??[];return!d&&!p?{}:{from:d,to:p}}return new Set(l.getAll(u.property))})),[i,v]=y.useState(()=>l.get("filter")||"");o||(o=[...s]);const g=y.useMemo(()=>D(o??[],e.filters),[o,e.filters]),{processScorecard:O}=q(),C=n?.props?.customFields,I=y.useMemo(()=>Z(o??[],e,C||{},O,t),[o,e,C,O,t]),b=y.useCallback((u,d)=>{f(p=>{const S=p[u]?p[u]:new Set;return S instanceof Set?(S.has(d)?p.forEach((m,h)=>{m instanceof Set&&m.has(d)&&m.delete(d)}):S.add(d),[...p.slice(0,u),S,...p.slice(u+1)]):p}),L.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"toggle"}]),window.scrollTo(0,0)},[]),P=y.useCallback((u,d)=>{f(p=>{const S=p[u]instanceof Set?new Set(d?[d]:[]):{from:d?.from,to:d?.to},m=g[u];return p.map((h,F)=>F===u?S:g[F].parentFilter===m.property?new Set:h)}),L.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"select"}]),window.scrollTo(0,0)},[g]),N=()=>{const u=new URLSearchParams(Array.from(l.entries()));i?l.set("filter",i):l.delete("filter"),r.forEach((p,S)=>{const m=e.filters?.[S];if(!m)return;const h=Y(p);X(m.property,h,u)});const d=u.toString();d!==c.search.substring(1)&&a({search:d})};y.useEffect(()=>{N()},[e.filters,r,i,a,c]);const k=y.useMemo(()=>Q(e.filters),[e.filters]);return y.useMemo(()=>{const u=g.map((m,h)=>({...m,toggleOption:F=>b(h,F),selectOption:F=>P(h,F),selectedOptions:r[h]??new Set,isFilterUsed:(r[h]?.size??0)>0||!!r[h]?.from})),d=T(I,u,i),p=u.map((m,h)=>{const F=u.findIndex(w=>w.property===m.parentFilter),z=m.parentFilter?(r[F]?.size??0)>0||!!r[F].from:!0,U=u.filter((w,M)=>M!==h&&!k[h]?.has(M)),_=T(I,U,i),B=D(_.map(w=>({metadata:w})),e.filters);return{...m,parentUsed:z,filteredOptions:B[h].options}});return{groups:e.groupByFirstFilter&&p.length>0?H(p,d):[{title:"APIs",items:d}],filters:p,setFilterTerm:m=>{v(m),L.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"term"}])},filterTerm:i}},[g,I,i,e.groupByFirstFilter,e.filters,r,b,P,k])}function H(e,o){return e[0].options.map(t=>({title:t.value,items:o.filter(c=>{const a=c?.[e[0].property]||e[0].missingCategoryName||"Others";return Array.isArray(a)?a.includes(t.value):a===t.value})})).filter(t=>t.items.length>0)}function J(e){return y.useMemo(()=>new URLSearchParams(e.search),[e.search])}function Z(e,o,t,c,a){let n;if(o.separateVersions)n=e.map(l);else{const s={};for(const r of e){if(!r.versionFolderId){const i=r.link||r.fsPath||JSON.stringify(r);s[i]=[r];continue}let f=r.versionFolderId;if(s[f]?.find(i=>i.version===r.version)){const i=r.fsPath?.replace(/\/@.*?\//,"/@version/")??"";f=`${f}-${i}`}s[f]||(s[f]=[]),s[f].push(r)}n=Object.values(s).map(r=>{r.sort((v,g)=>(v.version||"").localeCompare(g.version||""));const f=r.map(l);return{...l(r.find(v=>v.isDefault)||r[r.length-1]),versions:f}})}return a&&(n=n.filter(s=>!!s.scorecardLevel)),n.sort((s,r)=>s.title.localeCompare(r.title)),n;function l(s){const r=s.metadata||{},f=t[s.fsPath||""]||{},i=s.link||G(s.items||[],C=>"link"in C&&!!C.link)?.link,v=s.sidebar?.[0],g={...r,...f,publishedAt:r.publishedAt||r.createdAt,title:A(r?.title)||s.label||"Untitled",description:A(r?.description),link:j(i)??"#",docsLink:j(v?.link),image:A(r?.image),version:s.version,versionFolderId:s.versionFolderId},O=c({levels:g.scorecardLevels,status:g.scorecardStatus,scorecardLevel:g.scorecardLevel,scorecardLevelIdx:g.scorecardLevelIdx},g);return{...g,scorecardLevels:O?.levels,scorecardStatus:O?.status,scorecardLevel:O?.scorecardLevel,scorecardLevelIdx:O?.scorecardLevelIdx}}}function Q(e){if(!e)return[];const o=[];for(let t=0;t<e.length;t++){const c=e[t];if(c.parentFilter){const a=e.findIndex(n=>n.property===c.parentFilter);o[a]=o[a]||new Set,o[a].add(t)}}return o}function D(e,o){return(o??[]).map(t=>{const c=t.options?Object.fromEntries(t.options.map(s=>[s,0])):void 0,a=c??{};let n=0;for(const s of e){const r=Array.isArray(s.metadata?.[t.property])?s.metadata?.[t.property]:[s.metadata?.[t.property]];for(const f of r){const i=E(String(f),t.valuesMapping);if(c){i in c&&(a[i]=a[i]+1);continue}f?a[i]=(a[i]??0)+1:n++}}const l=Object.entries(a).map(([s,r])=>({value:s,count:r}));return c||l.sort((s,r)=>s.value.localeCompare(r.value)),n&&l.push({value:t.missingCategoryNameTranslationKey||t.missingCategoryName||"Others",count:n}),{...t,options:l}})}function T(e,o,t){const c=e.filter(a=>o.every(n=>{if(n.selectedOptions&&!(n.selectedOptions instanceof Set))try{const s=new Date(a[n.property]).toISOString().split("T")[0];return s>=(n.selectedOptions.from??"")&&s<=(n.selectedOptions.to??"Z")}catch{return!0}if(n.selectedOptions.size===0)return!0;const l=E(a?.[n.property]||n.missingCategoryName||"Others",n.valuesMapping);return Array.isArray(l)?l.some(s=>n.selectedOptions.has(s)):n.selectedOptions.has(l)}));return t?(t=t.toLowerCase(),c.filter(a=>Object.values(a).some(n=>Array.isArray(n)?n.some(l=>String(l).toLowerCase().includes(t)):String(n).toLowerCase().includes(t)))):c}function E(e,o){return o?Array.isArray(e)?e.map(t=>o[String(t)]||o["*"]||t):o[String(e)]||o["*"]||e:e}function X(e,o,t){t.delete(e),o.forEach(c=>{t.append(e,c)})}function Y(e){const o=new Set;return e instanceof Set?e.forEach(t=>o.add(t)):(e.from||e.to)&&o.add(`${e.from||""}--${e.to||""}`),o}export{X as fillSearchParams,Y as getFilterValues,ne as useCatalogClassic};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as h,useEffect as w,useMemo as y,useState as P}from"react";import{useSearchParams as Q}from"react-router-dom";import{telemetry as
|
|
1
|
+
import{useCallback as h,useEffect as w,useMemo as y,useState as P}from"react";import{useSearchParams as Q}from"react-router-dom";import{telemetry as b}from"../../telemetry/index.js";import{parseFilterQuery as g,formatFilterQuery as C,collectFilterOptions as U}from"../../../utils";function O(r){return r instanceof Set?r.size>0:!!(r?.from||r?.to)}function k(r,d){const[u,m]=Q(),i=u.get("filter")||"",[o,f]=P(()=>g(i,r?.filters||[])),p=y(()=>U(r?.filters,d),[r?.filters,d]);w(()=>{const t=r?.filters||[];if(t.length>0&&o.length!==t.length){const e=g(i,t);f(e)}},[r?.filters,o.length,i]);const F=h((t,e)=>{f(l=>l.map((s,c)=>{if(c!==t||!(s instanceof Set))return s;const n=new Set(s);return n.has(e)?n.delete(e):n.add(e),n})),window.scrollTo(0,0)},[]),S=h((t,e)=>{f(l=>l.map((a,s)=>s!==t?a:a instanceof Set?e&&typeof e=="string"?new Set([e]):new Set:{from:typeof e=="object"?e?.from:void 0,to:typeof e=="object"?e?.to:void 0})),b.sendCatalogFilterChangedMessage([{object:"catalog_filter",type:"select"}]),window.scrollTo(0,0)},[]);return w(()=>{const t=new URLSearchParams(u),e=C(o,r?.filters||[]);e?t.set("filter",e):t.delete("filter"),m(t,{replace:!0})},[r?.filters,o,u,m]),y(()=>{const t=p.map((l,a)=>{const s=o[a],c=O(s);return{...l,toggleOption:n=>F(a,n),selectOption:n=>S(a,n),selectedOptions:s??new Set,isFilterUsed:c}});return{filters:t.map(l=>{const a=t.findIndex(n=>n.property===l.parentFilter),s=o[a],c=l.parentFilter?O(s):!0;return{...l,parentUsed:c}}),filterQuery:i}},[p,o,F,S,i])}export{k as useCatalogFilter};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useState as i}from"react";import{telemetry as n}from"../../telemetry/index.js";const s="catalog-view-mode",w="table";function u(o){const[r,a]=i(o??w);return{viewMode:r,setViewMode:t=>{if(a(t),!(typeof window>"u")){try{localStorage.setItem(s,t)}catch(e){console.warn("Failed to save view mode preference to localStorage",e)}try{const e=new URL(window.location.href);e.searchParams.set("viewMode",t),window.history.replaceState({},"",e.toString()),n.sendCatalogEntitiesViewModeChangedMessage({mode:t,id:t,object:"view_mode",uri:window.location.href})}catch(e){console.warn("Failed to update viewMode query parameter",e)}}}}}export{u as useCatalogViewMode};
|
|
1
|
+
import{useState as i}from"react";import{telemetry as n}from"../../telemetry/index.js";const s="catalog-view-mode",w="table";function u(o){const[r,a]=i(o??w);return{viewMode:r,setViewMode:t=>{if(a(t),!(typeof window>"u")){try{localStorage.setItem(s,t)}catch(e){console.warn("Failed to save view mode preference to localStorage",e)}try{const e=new URL(window.location.href);e.searchParams.set("viewMode",t),window.history.replaceState({},"",e.toString()),n.sendCatalogEntitiesViewModeChangedMessage([{mode:t,id:t,object:"view_mode",uri:window.location.href}])}catch(e){console.warn("Failed to update viewMode query parameter",e)}}}}}export{u as useCatalogViewMode};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as g,useEffect as m,useRef as f}from"react";import{useCatalogEntityDetails as d}from"@redocly/theme/core/hooks";import{usePageProps as p}from"../../../providers/hooks.js";import{telemetry as c}from"../../telemetry/index.js";const l={id:"redocly-unknown",object:"catalog_entity",uri:"redocly-unknown"},C={entities:"catalog_entity",related_entities:"catalog_entity"},E={entities:({items:e,searchQuery:n})=>{const t=e[0]??l;c.sendCatalogEntitiesListSearchQueryMessage({query:n,...t})},related_entities:({items:e,searchQuery:n})=>{const t=e[0]??l;c.sendCatalogEntitiesRelatedEntitiesListSearchQueryMessage({query:n,...t})}};function j({isLoading:e,items:n,apiResource:t,searchQuery:i}){const{catalogConfig:u,entitiesCatalogConfig:y}=p(),o=f(i),{getEntityDetailsLink:s}=d({catalogConfig:u,entitiesCatalogConfig:y}),a=g(r=>({id:r.id,object:C[t],uri:s(r)}),[s,t]);m(()=>{if(e)return;const r=i?.trim();!r||r===o.current||(o.current=i,E[t]({items:n.map(a),searchQuery:i}))},[n,e,i,t,a])}export{j as useSearchTracker};
|
|
1
|
+
import{useCallback as g,useEffect as m,useRef as f}from"react";import{useCatalogEntityDetails as d}from"@redocly/theme/core/hooks";import{usePageProps as p}from"../../../providers/hooks.js";import{telemetry as c}from"../../telemetry/index.js";const l={id:"redocly-unknown",object:"catalog_entity",uri:"redocly-unknown"},C={entities:"catalog_entity",related_entities:"catalog_entity"},E={entities:({items:e,searchQuery:n})=>{const t=e[0]??l;c.sendCatalogEntitiesListSearchQueryMessage([{query:n,...t}])},related_entities:({items:e,searchQuery:n})=>{const t=e[0]??l;c.sendCatalogEntitiesRelatedEntitiesListSearchQueryMessage([{query:n,...t}])}};function j({isLoading:e,items:n,apiResource:t,searchQuery:i}){const{catalogConfig:u,entitiesCatalogConfig:y}=p(),o=f(i),{getEntityDetailsLink:s}=d({catalogConfig:u,entitiesCatalogConfig:y}),a=g(r=>({id:r.id,object:C[t],uri:s(r)}),[s,t]);m(()=>{if(e)return;const r=i?.trim();!r||r===o.current||(o.current=i,E[t]({items:n.map(a),searchQuery:i}))},[n,e,i,t,a])}export{j as useSearchTracker};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import h from"shiki/langs/bash.mjs";import l from"shiki/langs/c.mjs";import g from"shiki/langs/coffee.mjs";import d from"shiki/langs/csharp.mjs";import k from"shiki/langs/css.mjs";import u from"shiki/langs/go.mjs";import w from"shiki/langs/graphql.mjs";import N from"shiki/langs/html.mjs";import b from"shiki/langs/http.mjs";import y from"shiki/langs/java.mjs";import v from"shiki/langs/javascript.mjs";import x from"shiki/langs/kotlin.mjs";import H from"shiki/langs/lua.mjs";import r from"shiki/langs/markdown.mjs";import L from"shiki/langs/objective-c.mjs";import _ from"shiki/langs/perl.mjs";import j from"shiki/langs/php.mjs";import T from"shiki/langs/python.mjs";import E from"shiki/langs/scala.mjs";import M from"shiki/langs/sql.mjs";import q from"shiki/langs/swift.mjs";import S from"shiki/langs/tsx.mjs";import A from"shiki/langs/typescript.mjs";import C from"shiki/langs/vim.mjs";import D from"shiki/langs/xml.mjs";import F from"shiki/langs/yaml.mjs";import R from"shiki/langs/jsx.mjs";import W from"shiki/langs/jsonl.mjs";import{transformerNotationDiff as G,transformerNotationHighlight as J,transformerNotationWordHighlight as U,transformerNotationFocus as V,transformerNotationErrorLevel as $,transformerMetaHighlight as z,transformerMetaWordHighlight as B,transformerRemoveNotationEscape as I}from"@shikijs/transformers";import{createHighlighterCoreSync as K}from"shiki/core";import{createJavaScriptRegexEngine as O}from"shiki/engine/javascript";import P from"./ruby";import Q from"./multipart-mixed";import X from"./json-seq";import Y from"./theme";import Z from"./treeview-transformer";import rr from"./node-transformer";import or from"./line-numbers-transformer";import{mapLang as tr}from"./map-lang";const mr=[{...r[0],displayName:"Markdoc",name:"markdoc",scopeName:"source.markdoc",aliases:[],repository:{...r[0].repository,fenced_code_block:{patterns:[...r[0].repository.fenced_code_block.patterns||[],{name:"markdoc",begin:".*{%",end:"%}",patterns:[{match:"(?<={%)\\s*(/\\w+(-\\w+)?|\\w+(-\\w+)?)",name:"markdoc.tag"},{match:"\\$\\w+",name:"markdoc.variable"},{match:'".*?"',name:"markdoc.string"},{match:"\\b\\w+(?=\\()",name:"markdoc.function"},{match:"\\s+\\w+(?==|\\s)",name:"markdoc.keyword"},{match:"(?<==)false|true(?=\\s)",name:"markdoc.boolean"}]}]}}}],i="text",a=K({themes:[Y],langs:[h,l,g,d,k,u,w,N,b,y,v,x,H,r,L,_,j,T,P,E,M,q,S,A,D,C,F,mr,R,W,Q,X],engine:O()}),er=[G(),J(),U(),V(),$(),z(),B(),I(),rr()],ir=(o,n,s)=>{const{withLineNumbers:p,startLineNumber:f,highlight:c,customTransformer:t}=s||{},m=tr(n?.toLowerCase()||i),e={lang:m,theme:"theme",meta:{__raw:c},transformers:[...m==="treeview"?[Z()]:[],...er,...p?[or(f)]:[],...t?[t]:[]]};try{return a.codeToHtml(o,e)}catch{return a.codeToHtml(o,{...e,lang:i})}};function Ir(){return{highlight:ir}}export{ir as highlight,Ir as useCodeHighlight};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as r}from"react";import{useLocation as d}from"react-router-dom";import{telemetry as s}from"../telemetry";const g=()=>{const t=d();r(()=>{const i=()=>{if(!e)return;const a=new Date().getTime()-e;s.sendPageTimeMessage({id:`${window.origin}${t.pathname}`,object:"page",uri:`${window.origin}${t.pathname}`,durationMs:a}),e=void 0},n=()=>{if(document.visibilityState==="visible"){e=e||new Date().getTime();return}i()},o=()=>{i()};let e=new Date().getTime();return document.addEventListener("visibilitychange",n),window.addEventListener("beforeunload",o),()=>{i(),window.removeEventListener("beforeunload",o),document.removeEventListener("visibilitychange",n)}},[t.pathname])};export{g as usePageTimeTracker};
|
|
1
|
+
import{useEffect as r}from"react";import{useLocation as d}from"react-router-dom";import{telemetry as s}from"../telemetry";const g=()=>{const t=d();r(()=>{const i=()=>{if(!e)return;const a=new Date().getTime()-e;s.sendPageTimeMessage([{id:`${window.origin}${t.pathname}`,object:"page",uri:`${window.origin}${t.pathname}`,durationMs:a}]),e=void 0},n=()=>{if(document.visibilityState==="visible"){e=e||new Date().getTime();return}i()},o=()=>{i()};let e=new Date().getTime();return document.addEventListener("visibilitychange",n),window.addEventListener("beforeunload",o),()=>{i(),window.removeEventListener("beforeunload",o),document.removeEventListener("visibilitychange",n)}},[t.pathname])};export{g as usePageTimeTracker};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLocation as u,useNavigate as d,useNavigationType as l}from"react-router-dom";import{useEffect as v,useState as P}from"react";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{removeTrailingSlash as E}from"../../../utils/url/remove-trailing-slash";import{
|
|
1
|
+
import{useLocation as u,useNavigate as d,useNavigationType as l}from"react-router-dom";import{useEffect as v,useState as P}from"react";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{removeTrailingSlash as E}from"../../../utils/url/remove-trailing-slash";import{envConfig as M}from"../../../config/env-config.js";import{onRouteChange as y}from"../../runtime/generated/browser-plugins.js";import{resolveRouteBySlug as C}from"../utils/resolveRouteBySlug.js";import{usePageData as b}from"./usePageData.js";import{usePostMessage as T}from"../../providers/post-message/use-post-message.js";import{isInIframe as I}from"../../utils/utils.js";import{waitForContentScripts as N}from"../../ScriptLoader.js";import{telemetry as R}from"../telemetry/index.js";const W=()=>{const e=u(),n=d(),a=l(),r=b(),[t,i]=P(),m=w(),{sendMessage:h}=T();v(()=>{N().then(()=>{if(e.pathname!==t?.pathname||e.search!==t.search){y({location:e,prevLocation:t},m);const o=`${window.origin}${e.pathname+e.search+e.hash}`,s=t?`${window.origin}${t.pathname+t.search+t.hash}`:void 0;R.sendPageViewedMessage([{object:"view_stats",uri:o,referrer:s||document.referrer||void 0}])}});const c=!!t;i(e);const{pathname:p,hash:g,state:f}=e;if(e?.pathname.endsWith("/")&&e?.pathname!=="/"){const o=E(e.pathname);n({pathname:o,search:e.search,hash:e.hash},{replace:!0})}(M.NODE_ENV==="development"||I())&&c&&C(p+g,r?.templateId).then(o=>{const s=a==="POP"?"browser":f?.origin;s&&h({type:"route-updated",origin:s,...o})}).catch(o=>console.log("Resolve route by slug failed with error: ",o.message))},[e,a])};export{W as useRouteChangeTracker};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const useTelemetry: () =>
|
|
1
|
+
import { telemetry } from '../telemetry/index.js';
|
|
2
|
+
export declare const useTelemetry: () => typeof telemetry;
|
|
3
3
|
//# sourceMappingURL=useTelemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import t,{useEffect as g,useState as s}from"react";import{useNavigate as h}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{H3 as S}from"@redocly/theme/components/Typography/H3";import{H4 as v}from"@redocly/theme/components/Typography/H4";import{Admonition as w}from"@redocly/theme/components/Admonition/Admonition";import{getPathnameForLocale as E,withPathPrefix as P}from"@redocly/theme/core/utils";import{ServerRoutes as L}from"../../../../constants/common";import{telemetry as
|
|
1
|
+
import t,{useEffect as g,useState as s}from"react";import{useNavigate as h}from"react-router-dom";import{Button as y}from"@redocly/theme/components/Button/Button";import{H3 as S}from"@redocly/theme/components/Typography/H3";import{H4 as v}from"@redocly/theme/components/Typography/H4";import{Admonition as w}from"@redocly/theme/components/Admonition/Admonition";import{getPathnameForLocale as E,withPathPrefix as P}from"@redocly/theme/core/utils";import{ServerRoutes as L}from"../../../../constants/common";import{telemetry as b}from"../../telemetry/index.js";import{buildLoginUrl as k}from"../../../../utils/auth/build-login-url";import{usePageProps as O}from"../../../providers/page-data/hooks";import{Wrapper as T,HeadingSection as C}from"./styled";import{DevLoginForm as R}from"./DevLoginForm";import{useL10nConfig as F}from"../../hooks";async function x(r){try{const{status:o}=await fetch(P(L.AUTHORIZATION),{method:"POST",body:JSON.stringify(r)});return o}catch(o){console.error(o)}}function G(){const{defaultLocale:r,locales:o,currentLocale:c}=F(),l=h(),[a,d]=s({values:{teams:[],email:"example@example.com"}}),[n,u]=s();g(()=>{const e=new URLSearchParams(window.location.search);u(e.get("redirectTo")||void 0)},[]);const i=O(),m=i?.authIdps,p=(i.rbac?.teams||[]).filter(e=>e!=="*"),f=async()=>{await x(a.values)===200&&(l(n||"/"),window.location.reload())};return t.createElement(T,null,t.createElement(C,null,t.createElement(S,{"data-cy":"login-title"},"Dev-mode login"),t.createElement(w,{type:"warning",name:"This is dev mode login simulator."},"Any email works and password is not checked.")),t.createElement(t.Fragment,null,t.createElement(R,{teams:p,formState:a,setFormState:d,onSubmit:f}),Object.keys(m||{}).length>0&&t.createElement(v,null,"Use SSO:"),Object.values(m||{}).map(e=>t.createElement("div",{key:e.idpId},t.createElement(y,{fullWidth:!0,size:"large","data-cy":"idp-login",to:k(e.idpId,E("",r,c,o),n),onClick:()=>b.sendLoginProviderButtonClickedMessage([{object:"button",provider:e.type}])},e.title||e.type)))))}export{G as default};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Dispatch, SetStateAction } from 'react';
|
|
2
|
+
import type { SSEMessage, SearchResource, ToolCallState, AiSearchState } from '../../types';
|
|
3
|
+
import type { AiSearchConversationItem } from '@redocly/theme/core/types';
|
|
4
|
+
/**
|
|
5
|
+
* Context object passed to message handlers
|
|
6
|
+
* Contains current values and state setters
|
|
7
|
+
*/
|
|
8
|
+
export type MessageHandlerContext = {
|
|
9
|
+
messageId: string;
|
|
10
|
+
resources: SearchResource[];
|
|
11
|
+
accumulatedResponse: string;
|
|
12
|
+
setConversation: Dispatch<SetStateAction<AiSearchConversationItem[]>>;
|
|
13
|
+
setState: Dispatch<SetStateAction<AiSearchState>>;
|
|
14
|
+
setToolCalls: Dispatch<SetStateAction<ToolCallState[]>>;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Updates returned by message handlers
|
|
18
|
+
*/
|
|
19
|
+
export type MessageHandlerResult = {
|
|
20
|
+
messageId?: string;
|
|
21
|
+
resources?: SearchResource[];
|
|
22
|
+
accumulatedResponse?: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Main message dispatcher that routes messages to appropriate handlers
|
|
26
|
+
* Returns updates to be applied to refs
|
|
27
|
+
*/
|
|
28
|
+
export declare function handleSSEMessage(message: SSEMessage, ctx: MessageHandlerContext): MessageHandlerResult;
|
|
29
|
+
//# sourceMappingURL=message-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AiSearchConversationRole as o,AiSearchError as l}from"@redocly/theme/core/constants";import{SSE_EVENTS as n,MAX_DISPLAYED_RESOURCES as a}from"../../constants";function i(e,r){if(e.length===0)return e;const t=e[e.length-1];return t.role===o.ASSISTANT&&!t.messageId?[...e.slice(0,-1),{...t,messageId:r}]:e}function S(e,r){if(e.length===0)return e;const t=[...e];return t[t.length-1]={...t[t.length-1],result:r},t}function E(e,r){return e.type!==n.MESSAGE_ID?{}:(r.setConversation(t=>i(t,e.messageId)),{messageId:e.messageId})}function c(e,r){if(e.type!==n.SOURCES)return{};const t=e.sources.slice(0,a).map(({url:s,title:u})=>({url:s,title:u}));return r.setState(s=>s.status==="loading"?{...s,resources:t}:s),{resources:t}}function f(e,r){if(e.type!==n.ANSWER)return{};const t=r.accumulatedResponse+e.answer;return r.setState(s=>s.status==="loading"?{...s,response:t}:s),{accumulatedResponse:t}}function d(e,r){return e.type!==n.TOOL_CALL?{}:(r.setToolCalls(t=>[...t,{...e.toolCall,position:r.accumulatedResponse.length}]),{})}function R(e,r){return e.type!==n.TOOL_RESULT?{}:(r.setToolCalls(t=>S(t,e.result)),{})}function h(e,r){return e.type!==n.ERROR?{}:(r.setState(t=>t.status==="loading"?{status:"error",question:t.question,error:l.ErrorProcessingResponse}:t),{})}const A={[n.MESSAGE_ID]:E,[n.SOURCES]:c,[n.ANSWER]:f,[n.TOOL_CALL]:d,[n.TOOL_RESULT]:R,[n.ERROR]:h};function O(e,r){const t=A[e.type];return t?t(e,r):{}}export{O as handleSSEMessage};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SSEMessage } from '../../types/ai-search';
|
|
2
|
+
/**
|
|
3
|
+
* Parses SSE data lines from a chunk string
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseSSEChunk(chunk: string): SSEMessage[];
|
|
6
|
+
/**
|
|
7
|
+
* Creates an async generator that reads SSE messages from a ReadableStream
|
|
8
|
+
*/
|
|
9
|
+
export declare function streamSSEMessages(stream: ReadableStream<Uint8Array>, signal?: AbortSignal): AsyncGenerator<SSEMessage>;
|
|
10
|
+
//# sourceMappingURL=sse-parser.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{SSE_EVENTS as i,SSE_DATA_PREFIX as a}from"../../constants";function d(e){return Object.values(i).includes(e)}function p(e){const s=[],t=e.split(`
|
|
2
|
+
`);for(const n of t){if(!n.startsWith(a))continue;const r=n.slice(a.length);if(r)try{const c=JSON.parse(r),o=S(c);o&&s.push(o)}catch{}}return s}function S(e){return e.type&&typeof e.type=="string"&&d(e.type)?e:"messageId"in e&&typeof e.messageId=="string"?{type:i.MESSAGE_ID,messageId:e.messageId}:"sources"in e&&Array.isArray(e.sources)?{type:i.SOURCES,sources:e.sources}:"answer"in e&&typeof e.answer=="string"?{type:i.ANSWER,answer:e.answer}:null}async function*y(e,s){const t=e.getReader(),n=new TextDecoder;try{for(;!s?.aborted;){const{value:r,done:c}=await t.read();if(c)break;const o=n.decode(r),u=p(o);for(const f of u)yield f}}finally{t.releaseLock()}}export{p as parseSSEChunk,y as streamSSEMessages};
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import type { AiSearchConversationItem,
|
|
1
|
+
import type { AiSearchConversationItem, ContentSegment } from '@redocly/theme/core/types';
|
|
2
|
+
import type { AiSearchOptions, SearchResource, ToolCallState } from '../../types/ai-search';
|
|
2
3
|
import { AiSearchError } from '@redocly/theme/core/constants';
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
export declare function useAiSearch(options?: AiSearchOptions): {
|
|
7
|
-
askQuestion: (question: string, history?: AiSearchConversationItem[]) => Promise<void>;
|
|
4
|
+
type UseAiSearchReturn = {
|
|
5
|
+
askQuestion: (question: string, history?: AiSearchConversationItem[]) => void;
|
|
8
6
|
isGeneratingResponse: boolean;
|
|
9
7
|
response: string | undefined;
|
|
10
|
-
resources:
|
|
11
|
-
url: string;
|
|
12
|
-
title: string;
|
|
13
|
-
}[];
|
|
8
|
+
resources: SearchResource[];
|
|
14
9
|
question: string;
|
|
15
10
|
error: AiSearchError | null;
|
|
16
11
|
clearConversation: () => void;
|
|
17
12
|
conversation: AiSearchConversationItem[];
|
|
18
|
-
setConversation:
|
|
13
|
+
setConversation: React.Dispatch<React.SetStateAction<AiSearchConversationItem[]>>;
|
|
14
|
+
toolCalls: ToolCallState[];
|
|
15
|
+
contentSegments: ContentSegment[];
|
|
19
16
|
};
|
|
17
|
+
export declare function useAiSearch(options?: AiSearchOptions): UseAiSearchReturn;
|
|
20
18
|
export {};
|
|
21
19
|
//# sourceMappingURL=useAiSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as
|
|
1
|
+
import{useCallback as h,useEffect as J,useMemo as N,useRef as f,useState as E}from"react";import{AiSearchError as m}from"@redocly/theme/core/constants";import{withPathPrefix as V,splitContentByToolCalls as j}from"@redocly/theme/core/utils";import{ServerRoutes as B}from"../../../constants/common";import{useSearchSession as D}from"@redocly/theme/core/contexts";import{AI_SEARCH_REQUEST_HEADERS as G,HTTP_ERROR_MAP as K}from"../../constants";import{useI18nConfig as L,useCurrentProduct as U,usePageVersions as z}from"../hooks";import{telemetry as W}from"../telemetry/index.js";import{streamSSEMessages as X}from"./sse-parser";import{handleSSEMessage as Y}from"./message-handlers";function ur(C){const{searchSessionId:d}=D(),[r,s]=E({status:"idle"}),[w,p]=E([]),[g,b]=E([]),t=f(null),u=f(""),o=f(""),a=f([]),{currentLocale:y}=L(),A=U(),{versions:M=[]}=z()||{},i=M.find(e=>e?.active),l=h(()=>{s({status:"idle",response:""}),b([]),u.current="",o.current="",a.current=[]},[]),O=h(()=>{t.current?.abort(),t.current=null,l(),p([])},[l]);J(()=>()=>{t.current?.abort()},[]);const k=h(async(e,F)=>{if(!e)return;t.current?.abort();const R=new AbortController;t.current=R,l(),s({status:"loading",question:e,response:"",resources:[]});try{const n=await fetch(V(B.ASK_AI),{method:"POST",headers:G,body:JSON.stringify({text:e,history:F||[],locale:y,product:A?.name,filter:C?.filter,version:i&&{folder:i.folderId,label:i.label},searchSessionId:d}),signal:R.signal});if(!n.ok){s({status:"error",question:e,error:K[n.status]??m.HttpRequestFailed});return}const I=n.body;if(!I){s({status:"error",question:e,error:m.HttpRequestFailed});return}let v=!1;for await(const c of X(I,R.signal)){const Q={messageId:u.current,resources:a.current,accumulatedResponse:o.current,setConversation:p,setState:s,setToolCalls:b},{messageId:H,resources:P,accumulatedResponse:_}=Y(c,Q);H&&(u.current=H),P&&(a.current=P),_&&(o.current=_),c.type==="error"&&(v=!0)}t.current=null,s(c=>c.status==="error"?c:o.current?{status:"success",question:e,response:o.current,resources:a.current}:{status:"error",question:e,error:m.EmptyResponse}),!v&&o.current&&e.trim()&&u.current&&W.sendSearchAIQueryMessage([{object:"search",question:e,answer:o.current,resources:JSON.stringify(a.current),searchSessionId:d,messageId:u.current}])}catch(n){if(n instanceof Error&&n.name==="AbortError")return;t.current=null,s({status:"error",question:e,error:m.HttpRequestFailed})}},[l,y,A?.name,C?.filter,i,d]),S=r.status==="loading"||r.status==="success"||r.status==="idle"?r.response:void 0,q=N(()=>j(S,g),[S,g]);return{askQuestion:k,isGeneratingResponse:r.status==="loading",response:S,resources:r.status==="loading"||r.status==="success"?r.resources:[],question:r.status!=="idle"?r.question:"",error:r.status==="error"?r.error:null,clearConversation:O,conversation:w,setConversation:p,toolCalls:g,contentSegments:q}}export{ur as useAiSearch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as I,useEffect as y,useState as F,useRef as T}from"react";import{SEARCH_DEBOUNCE_TIME_MS as G}from"@redocly/theme/core/constants";import{withPathPrefix as
|
|
1
|
+
import{useCallback as I,useEffect as y,useState as F,useRef as T}from"react";import{SEARCH_DEBOUNCE_TIME_MS as G}from"@redocly/theme/core/constants";import{withPathPrefix as b}from"@redocly/theme/core/utils";import{SEARCH_GROUP_FACET_FIELD as _,SEARCH_PRODUCT_FIELD as N,SEARCH_VERSION_FIELD as k,ServerRoutes as O}from"../../../constants/common";import{debounce as M}from"../../../utils/time/debounce.js";import{useSearchSession as Q}from"@redocly/theme/core/contexts";import{useGlobalData as U,useI18nConfig as P}from"../hooks";import{usePageVersions as x}from"../../providers/page-data/hooks";import{useFacets as J}from"./useFacets";import{telemetry as B}from"../telemetry/index.js";const K=(s,r,e,n,a,c,i,f)=>{const{searchSessionId:d}=Q(),{currentLocale:m}=P(),l=T(""),p=I(M(async(t,h,u,S)=>{if(!t.trim().length&&!h.length){e({}),n({}),a(!1);return}const R={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:t,filter:A(h,S,c),locale:u})};try{const o=await fetch(b(O.SEARCH),R);if(l.current===t){const E=await o.json();n(E.facets),e(E.documents),t.trim().length>1&&B.sendSearchQueryMessage([{object:"search",query:t,resultCount:Object.keys(E.documents).length.toString(),searchSessionId:d}])}a(!1)}catch(o){e({}),console.log(o)}},G),[c?.version,c?.folderId,i]);return y(()=>{f||(a(!0),p(s,r,m,i),l.current=s)},[f,r,m,i,s,p,a]),{}},z=(s,r,e,n,a,c,i,f)=>{const{currentLocale:d}=P();y(()=>{m(e,s,r,d,n,a,f)},[n,f]);const m=I(async(l,p,t,h,u,S,R)=>{if(u){const{groupKey:o}=u;i(!0);const j={method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:p,filter:(()=>{const g=S.find(C=>C.field===_);return g&&!t.find(L=>L.field===g?.field)?[...t,{field:g.field,values:[o]}]:A(t,R)})(),loadMore:u,locale:h})},v=await(await fetch(b(O.SEARCH),j)).json(),D=l[o]||[],H=v.documents[o],w={...l,[o]:[...D,...H]};c(w),i(!1)}},[]);return{}};function re(s,r){const{searchFeatures:e}=U(),[n,a]=F(""),[c,i]=F([]),[f,d]=F({}),[m,l]=F({}),[p,t]=F(),[h,u]=F(!1),{facets:S}=J(m),{versions:R=[]}=x()||{},o=R.find(E=>E?.active);return K(n,c,d,l,u,o,s,r),z(n,c,f,p,S,d,u,s),{query:n,setQuery:a,filter:c,setFilter:i,items:f,isSearchLoading:h,facets:S,groupField:_,setLoadMore:t,advancedSearch:e?.advanced?.enabled,askAi:e?.ai?.enabled}}function A(s,r,e){return[...s,...r?[{field:N,values:[r]}]:[],...e?[{field:k,values:[...e.default?["default"]:[e.folderId,e.version]]}]:[]]}export{re as useSearch};
|