@redocly/realm 0.129.0-next.1 → 0.129.0-next.3
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 +63 -0
- package/dist/bin.js +1 -1
- package/dist/cli/develop.d.ts +1 -1
- package/dist/cli/develop.js +1 -1
- package/dist/cli/prepare/analytics/collectors/get-file-extensions-usage.js +1 -1
- package/dist/cli/prepare/analytics/collectors/get-frontmatter-usage.js +1 -1
- package/dist/cli/prepare/analytics/collectors/get-markdoc-usage.js +1 -1
- package/dist/cli/prepare/analytics/collectors/get-nested-configs-usage.js +1 -1
- package/dist/cli/prepare/analytics/collectors/get-refs-usage.js +1 -1
- package/dist/cli/prepare/index.d.ts +1 -1
- package/dist/cli/translations/collect-config-translations.js +1 -1
- package/dist/cli/translations/update-translations.js +1 -1
- package/dist/client/TestProvider.js +1 -1
- package/dist/client/app/Sidebar/RequestAccessButton.js +2 -2
- package/dist/client/app/Sidebar/Sidebar.js +7 -2
- package/dist/client/app/Sidebar/useSidebarItems.d.ts +1 -0
- package/dist/client/app/Sidebar/useSidebarItems.js +1 -1
- package/dist/client/app/hooks/catalog/useFetchCatalogEntities.js +1 -1
- package/dist/client/app/hooks/catalog/useFetchCatalogEntitiesRelations.js +1 -1
- package/dist/client/app/hooks/catalog/useFetchCatalogEntityRevisions.d.ts +10 -0
- package/dist/client/app/hooks/catalog/useFetchCatalogEntityRevisions.js +1 -0
- package/dist/client/app/hooks/index.d.ts +1 -0
- package/dist/client/app/hooks/index.js +1 -1
- package/dist/client/app/hooks/useBanner.d.ts +4 -0
- package/dist/client/app/hooks/useBanner.js +1 -1
- package/dist/client/app/hooks/useLoginUrl.js +1 -1
- package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
- package/dist/client/app/pages/Login/Login.js +1 -1
- package/dist/client/app/utils/loadAndNavigate.js +1 -1
- package/dist/client/browser-entry.js +2 -2
- package/dist/client/providers/page-data/hooks.d.ts +2 -1
- package/dist/client/providers/page-data/hooks.js +1 -1
- package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
- package/dist/client/runtime/loader.js +1 -1
- package/dist/client/types/post-message.d.ts +2 -1
- package/dist/client/utils/catalog/inject-catalog-items.d.ts +1 -1
- package/dist/client/utils/catalog/inject-catalog-items.js +1 -1
- package/dist/constants/common.d.ts +0 -4
- package/dist/constants/common.js +1 -1
- package/dist/constants/l10n/langs/ar.js +1 -1
- package/dist/constants/l10n/langs/de.js +1 -1
- package/dist/constants/l10n/langs/en.js +1 -1
- package/dist/constants/l10n/langs/es.js +1 -1
- package/dist/constants/l10n/langs/fr.js +1 -1
- package/dist/constants/l10n/langs/hi.js +1 -1
- package/dist/constants/l10n/langs/it.js +1 -1
- package/dist/constants/l10n/langs/ja.js +1 -1
- package/dist/constants/l10n/langs/ko.js +1 -1
- package/dist/constants/l10n/langs/pl.js +1 -1
- package/dist/constants/l10n/langs/pt-BR.js +1 -1
- package/dist/constants/l10n/langs/pt.js +1 -1
- package/dist/constants/l10n/langs/ru.js +1 -1
- package/dist/constants/l10n/langs/uk.js +1 -1
- package/dist/constants/l10n/langs/zh.js +1 -1
- package/dist/server/api-routes/execute-api-route.d.ts +0 -7
- package/dist/server/api-routes/execute-api-route.js +1 -1
- package/dist/server/api-routes/helpers/setup-logger.d.ts +2 -2
- package/dist/server/api-routes/helpers/setup-logger.js +1 -1
- package/dist/server/api-routes/run-api-routes-worker.js +1 -1
- package/dist/server/fs/cache.d.ts +1 -2
- package/dist/server/fs/cache.js +1 -1
- package/dist/server/fs/content-fs.d.ts +9 -4
- package/dist/server/fs/content-fs.js +1 -1
- package/dist/server/fs/fs.d.ts +6 -6
- package/dist/server/fs/fs.js +1 -3
- package/dist/server/fs/load-error.d.ts +2 -2
- package/dist/server/fs/load-error.js +1 -1
- package/dist/server/fs/utils/async-storage.d.ts +0 -8
- package/dist/server/fs/utils/async-storage.js +1 -1
- package/dist/server/fs/utils/isVirtualFile.d.ts +1 -1
- package/dist/server/fs/utils/isVirtualFile.js +1 -1
- package/dist/server/persistence/kv/helpers/decode-cursor.d.ts +2 -0
- package/dist/server/persistence/kv/helpers/decode-cursor.js +1 -0
- package/dist/server/persistence/kv/helpers/encode-cursor.d.ts +2 -0
- package/dist/server/persistence/kv/helpers/encode-cursor.js +1 -0
- package/dist/server/persistence/kv/mappers/create-kv-list-entry.d.ts +5 -0
- package/dist/server/persistence/kv/mappers/create-kv-list-entry.js +1 -0
- package/dist/server/persistence/kv/mappers/create-kv-value.d.ts +4 -0
- package/dist/server/persistence/kv/mappers/create-kv-value.js +1 -0
- package/dist/server/persistence/kv/repositories/kv-remote-repository.d.ts +5 -5
- package/dist/server/persistence/kv/repositories/kv-remote-repository.js +1 -1
- package/dist/server/persistence/kv/schemas/kv-schemas.d.ts +10 -0
- package/dist/server/persistence/kv/schemas/kv-schemas.js +1 -0
- package/dist/server/persistence/kv/services/kv-service.d.ts +6 -6
- package/dist/server/persistence/kv/services/kv-service.js +1 -1
- package/dist/server/plugins/api-functions/index.js +1 -1
- package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.d.ts +1 -1
- package/dist/server/plugins/arazzo-docs/arazzo-doc-loader.js +2 -2
- package/dist/server/plugins/arazzo-docs/index.d.ts +1 -1
- package/dist/server/plugins/arazzo-docs/index.js +1 -1
- package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.d.ts +1 -1
- package/dist/server/plugins/asyncapi-docs/asyncapi-doc-loader.js +2 -2
- package/dist/server/plugins/asyncapi-docs/index.d.ts +1 -1
- package/dist/server/plugins/asyncapi-docs/index.js +1 -1
- package/dist/server/plugins/asyncapi-docs/is-asyncapi-doc.js +1 -1
- package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +23 -18
- package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-bff-entity.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-bff-related-entity.d.ts +9 -0
- package/dist/server/plugins/catalog-entities/database/mappers/create-bff-related-entity.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +1 -0
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-db-record-from-dto.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-db-record-from-file-schema.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation.js +1 -1
- package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.d.ts +12 -0
- package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.js +1 -0
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.d.ts +15 -4
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +67 -55
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +21 -15
- 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 +16 -3
- 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 +17 -0
- package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.js +1 -0
- package/dist/server/plugins/catalog-entities/database/repositories/utils.d.ts +4 -4
- package/dist/server/plugins/catalog-entities/database/repositories/utils.js +1 -1
- package/dist/server/plugins/catalog-entities/entities/{extract-entities-content.d.ts → extract-file-content.d.ts} +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.d.ts +2 -2
- 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.d.ts +2 -2
- 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 +2 -2
- 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.d.ts +2 -2
- 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 +2 -2
- 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.d.ts +1 -2
- package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
- package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +64 -0
- package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
- package/dist/server/plugins/catalog-entities/schemas/dto-schemas.d.ts +6 -12
- package/dist/server/plugins/catalog-entities/schemas/dto-schemas.js +1 -1
- package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.d.ts +4 -8
- package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.js +1 -1
- package/dist/server/plugins/catalog-entities/utils/catalog-data-collector.js +1 -1
- package/dist/server/plugins/catalog-entities/utils/read-string.d.ts +7 -0
- package/dist/server/plugins/catalog-entities/utils/read-string.js +1 -0
- 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/config-parser/loaders/yaml-parser.js +1 -1
- package/dist/server/plugins/default-theme/resolve-products-config.js +1 -1
- package/dist/server/plugins/ensure-frontmatter-theme-compatibility.js +1 -1
- package/dist/server/plugins/entitlements/index.js +1 -1
- package/dist/server/plugins/graphql-docs/index.js +1 -1
- package/dist/server/plugins/l10n/index.js +1 -1
- package/dist/server/plugins/lifecycle.js +2 -2
- package/dist/server/plugins/markdown/attribute-resolvers/code-walkthrough/filesets-resolver.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.d.ts +14 -0
- package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.js +1 -0
- package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.d.ts +62 -0
- package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.js +2 -0
- package/dist/server/plugins/markdown/attribute-resolvers/index.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-code-snippet-from-file.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.d.ts +4 -0
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.js +1 -0
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-schema-ref.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.d.ts +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-link.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-open-api-ref.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-parsed-yaml.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-raw-content.js +1 -1
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.d.ts +4 -0
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.js +1 -0
- package/dist/server/plugins/markdown/attribute-resolvers/resolve-svg-content.js +1 -1
- package/dist/server/plugins/markdown/compiler.js +1 -1
- package/dist/server/plugins/markdown/get-server-props.js +1 -1
- package/dist/server/plugins/markdown/index.js +1 -1
- package/dist/server/plugins/markdown/markdoc/attributes/index.d.ts +2 -0
- package/dist/server/plugins/markdown/markdoc/attributes/index.js +1 -1
- package/dist/server/plugins/markdown/markdoc/attributes/json-example-ref.d.ts +6 -0
- package/dist/server/plugins/markdown/markdoc/attributes/json-example-ref.js +1 -0
- package/dist/server/plugins/markdown/markdoc/attributes/sample-from-json-schema.d.ts +6 -0
- package/dist/server/plugins/markdown/markdoc/attributes/sample-from-json-schema.js +1 -0
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/index.d.ts +1 -0
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/index.js +1 -1
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/json-example.d.ts +8 -0
- package/dist/server/plugins/markdown/markdoc/custom-components/openapi/json-example.js +7 -0
- package/dist/server/plugins/markdown/markdoc/partials.js +1 -1
- package/dist/server/plugins/markdown/markdoc/resolve-raw-partials.js +1 -1
- package/dist/server/plugins/markdown/markdoc/tags/index.d.ts +4 -0
- package/dist/server/plugins/markdown/markdoc/tags/index.js +1 -1
- package/dist/server/plugins/markdown/markdoc/tags/json-example.d.ts +3 -0
- package/dist/server/plugins/markdown/markdoc/tags/json-example.js +1 -0
- package/dist/server/plugins/markdown/markdown-static-data-loader.js +1 -1
- package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +1 -1
- package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +7 -2
- 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 +7 -2
- 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 +7 -2
- 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 +7 -2
- 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 +4 -3
- package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +5 -2
- package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +6 -0
- package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
- package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/utils.d.ts +3 -3
- package/dist/server/plugins/mcp/docs-mcp/utils.js +1 -1
- package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
- package/dist/server/plugins/mcp/index.js +1 -1
- package/dist/server/plugins/mcp/servers/docs-server.d.ts +10 -3
- package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
- package/dist/server/plugins/mcp/types.d.ts +26 -2
- package/dist/server/plugins/mcp/utils.d.ts +9 -8
- package/dist/server/plugins/mcp/utils.js +1 -1
- package/dist/server/plugins/mcp/workers/run-api-routes-worker.js +1 -1
- package/dist/server/plugins/nav-utils.js +1 -1
- package/dist/server/plugins/openapi-docs/decorators.d.ts +3 -2
- package/dist/server/plugins/openapi-docs/decorators.js +1 -1
- package/dist/server/plugins/openapi-docs/index.d.ts +2 -2
- package/dist/server/plugins/openapi-docs/index.js +1 -1
- package/dist/server/plugins/openapi-docs/is-openapi-doc.js +1 -1
- package/dist/server/plugins/openapi-docs/load-definition.d.ts +1 -1
- package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
- package/dist/server/plugins/pages/index.js +1 -1
- package/dist/server/plugins/scorecard-classic/get-scorecard-config.d.ts +11 -0
- package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
- package/dist/server/plugins/search/llmstxt/index.js +5 -5
- package/dist/server/plugins/sidebars/index.js +3 -3
- package/dist/server/plugins/utils.js +1 -1
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/0003_catalog_versions_and_revisions_relations.sql +40 -0
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0003_snapshot.json +392 -0
- package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/_journal.json +7 -0
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.d.ts +25 -46
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.js +1 -1
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-table.d.ts +20 -3
- package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-table.js +1 -1
- package/dist/server/providers/database/databases/main-sqlite/migrations/meta/0005_snapshot.json +263 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/0006_catalog-versions-and-revisions-relations.sql +40 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0005_snapshot.json +825 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0006_snapshot.json +832 -0
- package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +7 -0
- package/dist/server/providers/database/pagination/combined-filters.d.ts +4 -1
- package/dist/server/providers/database/pagination/combined-filters.js +1 -1
- package/dist/server/providers/database/pagination/filter.d.ts +1 -0
- package/dist/server/providers/database/pagination/filter.js +1 -1
- package/dist/server/providers/database/pagination/index.d.ts +4 -1
- package/dist/server/providers/database/pagination/utils/decode-cursor.js +1 -1
- package/dist/server/ssr/index.js +1 -1
- package/dist/server/ssr/render.js +1 -1
- package/dist/server/ssr/template.d.ts +1 -1
- package/dist/server/ssr/template.js +13 -13
- package/dist/server/ssr/utils.js +27 -13
- package/dist/server/store.js +1 -1
- package/dist/server/tools/notifiers/formatter.d.ts +2 -0
- package/dist/server/tools/notifiers/formatter.js +3 -3
- package/dist/server/tools/notifiers/logger.d.ts +18 -39
- package/dist/server/tools/notifiers/logger.js +2 -6
- package/dist/server/tools/notifiers/reporter.js +9 -9
- package/dist/server/tools/notifiers/terminal-manager.d.ts +8 -0
- package/dist/server/tools/notifiers/terminal-manager.js +5 -0
- package/dist/server/types/fs.d.ts +5 -10
- package/dist/server/types/plugins/api-routes.d.ts +0 -3
- package/dist/server/types/plugins/common.d.ts +0 -1
- package/dist/server/utils/is-valid-iso-date.d.ts +5 -0
- package/dist/server/utils/is-valid-iso-date.js +1 -0
- package/dist/server/utils/lifecycle-hooks.js +1 -1
- package/dist/server/utils/queue.js +1 -1
- package/dist/server/utils/redirects/find-redirect.d.ts +4 -2
- package/dist/server/utils/redirects/find-redirect.js +1 -1
- package/dist/server/utils/resolve-asset-path.js +1 -1
- package/dist/server/utils/safe-parse.d.ts +6 -0
- package/dist/server/utils/safe-parse.js +1 -0
- package/dist/server/utils/validate-and-sanitize-string.d.ts +29 -0
- package/dist/server/utils/validate-and-sanitize-string.js +1 -0
- package/dist/server/web-server/auth.d.ts +5 -0
- package/dist/server/web-server/auth.js +3 -3
- package/dist/server/web-server/http.js +2 -2
- package/dist/server/web-server/middleware/loggerMiddleware.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/mcp-oauth.js +1 -1
- package/dist/server/web-server/routes/search.js +1 -1
- package/dist/server/web-server/utils/get-redirect-login-url.js +1 -1
- package/dist/types/ssr.d.ts +3 -1
- package/dist/utils/auth/build-login-url.d.ts +1 -3
- package/dist/utils/auth/build-login-url.js +1 -1
- package/dist/utils/env/is-local-development.d.ts +13 -0
- package/dist/utils/env/is-local-development.js +1 -0
- package/dist/utils/env/is-production.d.ts +13 -0
- package/dist/utils/env/is-production.js +1 -0
- package/dist/utils/env/is-web-view.d.ts +14 -0
- package/dist/utils/env/is-web-view.js +1 -0
- package/dist/utils/path/remove-fragment.d.ts +16 -0
- package/dist/utils/path/remove-fragment.js +1 -0
- package/package.json +12 -11
- package/dist/server/persistence/kv/mappers/create-kv-read-record.d.ts +0 -4
- package/dist/server/persistence/kv/mappers/create-kv-read-record.js +0 -1
- package/dist/server/web-server/routes/otel/types.d.ts +0 -61
- package/dist/server/web-server/routes/otel/types.js +0 -1
- /package/dist/server/plugins/catalog-entities/entities/{extract-entities-content.js → extract-file-content.js} +0 -0
|
@@ -18,12 +18,6 @@ export declare const entityRelationReadModelSchema: {
|
|
|
18
18
|
readonly targetKey: {
|
|
19
19
|
readonly type: "string";
|
|
20
20
|
};
|
|
21
|
-
readonly sourceId: {
|
|
22
|
-
readonly type: "string";
|
|
23
|
-
};
|
|
24
|
-
readonly targetId: {
|
|
25
|
-
readonly type: "string";
|
|
26
|
-
};
|
|
27
21
|
readonly sourceVersion: {
|
|
28
22
|
readonly type: readonly ["string", "null"];
|
|
29
23
|
};
|
|
@@ -46,7 +40,7 @@ export declare const entityRelationReadModelSchema: {
|
|
|
46
40
|
readonly type: readonly ["string", "null"];
|
|
47
41
|
};
|
|
48
42
|
};
|
|
49
|
-
readonly required: readonly ["id", "organizationId", "projectId", "sourceKey", "targetKey", "
|
|
43
|
+
readonly required: readonly ["id", "organizationId", "projectId", "sourceKey", "targetKey", "type"];
|
|
50
44
|
readonly additionalProperties: false;
|
|
51
45
|
};
|
|
52
46
|
export declare const entityReadModelSchema: {
|
|
@@ -173,14 +167,16 @@ export type EntityReadModelSchema = {
|
|
|
173
167
|
source: string;
|
|
174
168
|
sourceFile?: string | null;
|
|
175
169
|
version?: string | null;
|
|
176
|
-
revision
|
|
170
|
+
revision: string;
|
|
177
171
|
hash?: string | null;
|
|
178
172
|
isCurrent?: boolean | null;
|
|
179
173
|
isDefaultVersion?: boolean | null;
|
|
174
|
+
isDeleted?: boolean | null;
|
|
180
175
|
createdAt?: string | null;
|
|
181
176
|
updatedAt?: string | null;
|
|
182
177
|
object: 'catalogEntity';
|
|
183
178
|
domains?: RelatedEntitySchema[];
|
|
184
179
|
owners?: RelatedEntitySchema[];
|
|
185
180
|
};
|
|
181
|
+
export type EntityRevisionSummary = Pick<EntityReadModelSchema, 'version' | 'revision' | 'isCurrent' | 'createdAt' | 'updatedAt' | 'isDefaultVersion' | 'isDeleted'>;
|
|
186
182
|
//# sourceMappingURL=read-model-schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t={type:"object",properties:{id:{type:"string"},organizationId:{type:"string"},projectId:{type:"string"},sourceKey:{type:"string"},targetKey:{type:"string"},
|
|
1
|
+
const t={type:"object",properties:{id:{type:"string"},organizationId:{type:"string"},projectId:{type:"string"},sourceKey:{type:"string"},targetKey:{type:"string"},sourceVersion:{type:["string","null"]},sourceRevision:{type:["string","null"]},targetVersion:{type:["string","null"]},targetRevision:{type:["string","null"]},type:{type:"string"},createdAt:{type:["string","null"]},updatedAt:{type:["string","null"]}},required:["id","organizationId","projectId","sourceKey","targetKey","type"],additionalProperties:!1},e={type:"object",properties:{type:{type:"string"},key:{type:"string"},title:{type:"string"},summary:{type:["string","null"]},tags:{type:["array","null"],items:{type:"string"}},metadata:{type:["object","null"],additionalProperties:!0},git:{type:["array","null"],items:{type:"string"}},contact:{type:["object","null"]},links:{type:["array","null"],items:{type:"object"}},id:{type:"string"},source:{type:"string"},sourceFile:{type:["string","null"]},version:{type:["string","null"]},revision:{type:["string","null"]},hash:{type:["string","null"]},isCurrent:{type:["boolean","null"]},isDefaultVersion:{type:["boolean","null"]},createdAt:{type:["string","null"]},updatedAt:{type:["string","null"]}},required:["type","key","title","id","source"],additionalProperties:!1},r={type:"object",properties:{id:{type:"string"},key:{type:"string"},title:{type:"string"},type:{type:"string"},summary:{type:["string","null"]},source:{type:"string"},sourceFile:{type:["string","null"]},createdAt:{type:["string","null"]},updatedAt:{type:["string","null"]}},required:["id","key","title","type","source"],additionalProperties:!1};export{e as entityReadModelSchema,t as entityRelationReadModelSchema,r as relatedEntitySchema};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const i="error";class
|
|
1
|
+
const i="error";class n{#t=new Set;#e;#s;#i=0;#o=0;addExtractor(t){this.#t.add(t)}increaseSkippedFilesCount(){this.#i++}increaseProcessedFilesCount(){this.#o++}async getCatalogEntitiesData(t){this.#e=this.#a(t),this.#s=this.#n(t);const[s,e]=await Promise.allSettled([this.#e,this.#s]);return{totalEntitiesCount:s.status==="fulfilled"?s.value:i,countOfEntitiesByType:e.status==="fulfilled"?e.value:i,extractors:Array.from(this.#t),totalFilesSkippedByHash:this.#i,totalProcessedFiles:this.#o}}async#a(t){return(await t.getEntities({limit:1,filter:{field:"is_deleted",operator:"equal",value:!1}})).page.total}async#n(t){return(await t.getEntitiesCountByTypes()).reduce((e,{type:o,count:a})=>(e[o]=a,e),{})}}const r=new n;export{n as CatalogDataCollector,r as catalogDataCollector};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safely reads a string value from an unknown type.
|
|
3
|
+
* Returns the value if it's a string, null if nullable and value is null,
|
|
4
|
+
* or undefined otherwise.
|
|
5
|
+
*/
|
|
6
|
+
export declare function readString(value: unknown, nullable?: boolean): string | null | undefined;
|
|
7
|
+
//# sourceMappingURL=read-string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(n,r=!1){if(typeof n=="string")return n;if(r&&n===null)return null}export{t as readString};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import f from"path";import{combineUrls as p}from"@redocly/theme/core/utils";import{VERSION_SEPARATOR as S}from"../../../constants/common.js";import{removeTrailingSlash as d}from"../../../../utils/url/remove-trailing-slash.js";import{slash as b}from"../../../../utils/path/slash.js";import{logger as c}from"../../../tools/notifiers/logger.js";import{getDefaultVersionByPath as v}from"./versions-config-loader.js";import{GithubSlugger as D,slug as E}from"../../../utils/index.js";import{parseBaseName as F}from"../../utils.js";const I=new Set([".jpg",".jpeg",".png",".gif",".webp",".svg",".ico",".avif",".mp3",".wav",".ogg",".m4a",".mp4",".avi",".mov",".webm",".pdf",".doc",".docx",".zip",".rar",".gz",".ttf",".woff",".woff2"]),A=async(i,{fs:e,cache:s})=>{const g=c.startTiming(),o=(await s.load("versions-config","versions-config")).data,t=new Map,n=new Map,r=new Set,l=new D;n.set(".","/"),n.set("/","/");const u=
|
|
1
|
+
import f from"path";import{combineUrls as p}from"@redocly/theme/core/utils";import{VERSION_SEPARATOR as S}from"../../../constants/common.js";import{removeTrailingSlash as d}from"../../../../utils/url/remove-trailing-slash.js";import{slash as b}from"../../../../utils/path/slash.js";import{logger as c}from"../../../tools/notifiers/logger.js";import{getDefaultVersionByPath as v}from"./versions-config-loader.js";import{GithubSlugger as D,slug as E}from"../../../utils/index.js";import{parseBaseName as F}from"../../utils.js";const I=new Set([".jpg",".jpeg",".png",".gif",".webp",".svg",".ico",".avif",".mp3",".wav",".ogg",".m4a",".mp4",".avi",".mov",".webm",".pdf",".doc",".docx",".zip",".rar",".gz",".ttf",".woff",".woff2"]),A=async(i,{fs:e,cache:s})=>{const g=c.startTiming(),o=(await s.load("versions-config","versions-config")).data,t=new Map,n=new Map,r=new Set,l=new D;n.set(".","/"),n.set("/","/");const u=e.scan().sort((a,m)=>m.relativePath.localeCompare(a.relativePath));for(const{relativePath:a}of u){if(I.has(f.posix.extname(a)))continue;const{data:m}=await s.load(a,"is-ignored");if(m)continue;const h=b(a).replace(new RegExp("^(@i18n|@l10n)\\/"),""),w=v(a,o);N(h,{defaultVersion:w,fileSlugs:t,dirSlugs:n,allFileSlugsList:r,githubSlugger:l})}return c.verboseTime(g,"Calculated slugs. Number of file paths processed: "+u.length),{fileSlugs:t,dirSlugs:n}};function N(i,e){const s=e.fileSlugs.get(i);if(s)return s;let g=f.posix.dirname(i);const o=z(g,e)||"",{baseName:t,isIndexFile:n}=F(i),r=e.dirSlugs.has(f.posix.join(g,t));let l;if(!n&&r){const u=E(p(o,t,"/"));e.allFileSlugsList.has(u)||(l=u)}l||(l=n&&e.dirSlugs.get(g)||e.githubSlugger.slug(p(o,t))),l=d(l),e.fileSlugs.set(i,l),e.allFileSlugsList.add(l)}function z(i,e){if(e.dirSlugs.has(i))return e.dirSlugs.get(i);const s=d(f.posix.normalize(i)).split("/");let g="/",o="";for(const t of s){o=f.posix.join(o,t);const n=T(t,e.defaultVersion);let r=e.dirSlugs.get(o)||e.githubSlugger.slug(p("/",g,n));r.endsWith("/")||(r=r+"/"),e.dirSlugs.set(o,r),g=r}return e.dirSlugs.get(i)}function T(i,e){if(!i.startsWith(S))return i;const s=i.substring(S.length);return s===e?"":s}export{I as IGNORED_EXTS,A as contentSlugsLoader};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import t from"path";import{CONFIG_FILE_NAME as n}from"../../../../constants/common.js";const h=async(l,{fs:
|
|
1
|
+
import t from"path";import{CONFIG_FILE_NAME as n}from"../../../../constants/common.js";const h=async(l,{fs:i,cache:r,isPathIgnored:d})=>{let a=l,e=t.posix.join(a,n),o=i.getFileInfo(e);for(;a!=="."&&!o;)a=t.posix.dirname(a),e=t.posix.join(a,n),!await d(e)&&(o=i.getFileInfo(e));return{...(await r.load(o?.realRelativePath||e,"redocly-config",i.localeFolders)).data,configPath:o?.relativePath||e,realConfigPath:o?.realRelativePath||e}};export{h as nearestRedoclyConfigLoader};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import h from"path";import{lintConfig as C,loadConfig as P,createConfigTypes as T}from"@redocly/openapi-core";import{deepMerge as b}from"../../../../../utils/object/deep-merge.js";import{readEnvVariable as R}from"../../../../utils/envs/read-env-variable.js";import{logger as a}from"../../../../tools/notifiers/logger.js";import{safeParsePartial as A}from"../../safe-parse.js";import{formatConfigProblem as x}from"../../format-error.js";import{ExternalResolver as E}from"../../../../fs/utils/external-ref-resolver.js";import{resolveMutuallyExclusiveProps as $}from"../../resolve-mutual-exclusion.js";async function W(o,r,t,c){const u=
|
|
1
|
+
import h from"path";import{lintConfig as C,loadConfig as P,createConfigTypes as T}from"@redocly/openapi-core";import{deepMerge as b}from"../../../../../utils/object/deep-merge.js";import{readEnvVariable as R}from"../../../../utils/envs/read-env-variable.js";import{logger as a}from"../../../../tools/notifiers/logger.js";import{safeParsePartial as A}from"../../safe-parse.js";import{formatConfigProblem as x}from"../../format-error.js";import{ExternalResolver as E}from"../../../../fs/utils/external-ref-resolver.js";import{resolveMutuallyExclusiveProps as $}from"../../resolve-mutual-exclusion.js";async function W(o,r,t,c){const u=r.getFileInfo(o)?.realRelativePath||o;async function y(){const i=new E(r),l=h.join(r.cwd,u),n=await P({configPath:l,externalRefResolver:i}),f=await c(n.resolvedConfig);if(f===void 0)return n.resolvedConfig;const g=[...n.document?.source?await C({config:n,externalConfigTypes:T(f,n)}):[],...n.document?.source?$(n.resolvedConfig,n.document?.source):[]];if(g.length>0)for(const w of g)t(new Error(x(w,r.cwd)));return n.resolvedConfig}const s=await r.exists(o)?await y():{},v=j(s),p=await c(s);"residency"in s&&s.residency&&typeof s.residency=="string"&&(/^https?:\/\/.*/.test(s.residency)||t(new Error(`Invalid residency URL: "${s.residency}". Residency must start with "http://" or "https://".`)));let d=p?A(p,s):s;const{env:m}=d;if(m){const i=R("REDOCLY_ENV")||"development",l=m[i]||{};d=b(d,l)}const e=M(d,v);if(e.imports&&e.imports.length>0){a.warn("The 'imports' property is deprecated. Please use 'plugins' property instead.");const i=new Set([...e.plugins||[],...e.imports.map(l=>h.posix.join(l,"plugin.js"))]);e.plugins=Array.from(i),delete e.imports}if(e.catalog&&(a.warn("The 'catalog' property is deprecated. Please use 'catalogClassic' property instead."),e.catalogClassic={...e.catalog},delete e.catalog),e.scorecard&&(a.warn("The 'scorecard' property is deprecated. Please use 'scorecardClassic' property instead."),e.scorecardClassic=e.scorecard,delete e.scorecard),e.search?.ai){a.warn("The 'search.ai' property is deprecated. Please use 'aiAssistant' property instead.");const i={...e.search?.ai,...e.aiAssistant,suggestions:e.aiAssistant?.suggestions?.length?e.aiAssistant.suggestions:e.search?.ai.suggestions||[]};e.aiAssistant=i,delete e.search.ai}return e}function j(o){if(!o.theme)return[];a.warn("The 'theme' property in redocly.yaml is deprecated. Please move all of the properties from 'theme' to the root of the config.");const r=[];for(const t of Object.keys(o.theme))o[t]==null?r.push(t):a.warn(`Detected both '${t}' and 'theme.${t}' properties in redocly.yaml. The 'theme.${t}' property will be ignored and needs to be removed or merged into the '${t}'.`);return r}function M(o,r){if(!o.theme||r.length===0)return o;const t={...o};for(const c of r)t[c]=o.theme[c];return delete t.theme,t}export{W as readAndValidateConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{parseYaml as
|
|
1
|
+
import{parseYaml as t}from"@redocly/openapi-core";import{isVirtualFile as i}from"../../../fs/utils/isVirtualFile.js";const s=async(r,{fs:o})=>{try{const e=await o.read(r);return t(e)}catch(e){if(i(r,o))return;throw new Error(`Error parsing YAML file ${r}: ${e.message}`)}};export{s as yamlParser};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import a from"path";import{productConfigOverrideSchema as R,REDOCLY_TEAMS_RBAC as
|
|
1
|
+
import a from"path";import{productConfigOverrideSchema as R,REDOCLY_TEAMS_RBAC as w,REDOCLY_ROUTE_RBAC as O}from"@redocly/config";import{CONFIG_FILE_NAME as b}from"../../../constants/common.js";import{findDeepFirst as A}from"../../../utils/tree/find-deep-first.js";import{removeTrailingSlash as B}from"../../../utils/url/remove-trailing-slash.js";import{addTrailingSlash as D}from"../../../utils/url/add-trailing-slash.js";import{reporter as k}from"../../tools/notifiers/reporter.js";import{logger as F}from"../../tools/notifiers/logger.js";import{FileNotFoundError as E,resolveAssetPath as I}from"../../utils/index.js";import{safeParsePartial as _}from"../config-parser/safe-parse.js";import{resolveLinksFromConfig as v,resolveItems as S}from"../nav-utils.js";import{resolveLogoConfig as j}from"./resolve-logo.js";import{pickUiAccessibleConfig as z}from"./index.js";import{getExcludedFromLinkCheckerPatterns as N}from"../sidebars/utils.js";const re=async(o,e,r)=>{if(!o)return;const s={};for(const t of Object.keys(o)){let d;const m=o[t].icon;if(m)try{d=await I(m,r.fs,{fromFileRelativePath:b,contentDir:e.contentDir,outdir:e.outdir})}catch(L){L instanceof E?await k.panicOnBuildContentError(`Could not resolve icon for product "${t}": file ${m} does not exist`):await k.panicOnBuild(`Could not resolve icon for product "${t}": ${L.message}`)}const{name:C,folder:n}=o[t],l=a.posix.join(n,"redocly.yaml"),f=r.fs.exists(l)?await r.cache.load(l,"product-config"):void 0,c=f?.data&&_(R,f.data),p=await T(n,r,e);if(!p){await k.panicOnBuild(`Could not resolve first link for product "${t}"`);continue}const u=e.getRouteBySlug(p),g=a.join(e.contentDir,n),i=c&&z(c),P=Object.keys(i?.logo||{}).length>0?await j(i?.logo,l,e.outdir,r.fs):void 0,h=N(e.getConfig()),y={navFile:l,excludedFromLinkCheckerPatterns:h};s[t]={name:C,folder:n,icon:d,slug:r.slugify(a.normalize(n)),link:p,configOverride:i&&{logo:Object.keys(P||{}).length>0?P:void 0,navbar:await v(i.navbar,g,e,r,y),footer:await v(i.footer,g,e,r,y),feedback:i.feedback,sidebar:i.sidebar,search:i.search&&{...i.search,suggestedPages:await v(i.search?.suggestedPages,g,e,r,{navFile:b,excludedFromLinkCheckerPatterns:h})},codeSnippet:i.codeSnippet,breadcrumbs:i.breadcrumbs&&{...i.breadcrumbs,prefixItems:await v(i.breadcrumbs?.prefixItems||[],g,e,r,{navFile:b,excludedFromLinkCheckerPatterns:h})},analytics:i.analytics,mockServer:i.mockServer},[w]:u?.[w],[O]:u?.[O]},F.verbose(`Resolved config for product "${t}"`)}return s};async function T(o,e,r){const s=D(a.posix.normalize(o)),t=B(e.slugify(a.normalize(o))),d=r.getRouteBySlug(t);if(d&&d.fsPath.startsWith(s))return d.slug;const m=e.fs.scan(/sidebars\.yaml$/).filter(c=>c.relativePath.startsWith(s)),n=W(m)[0]?.relativePath;if(n){const c=await e.cache.load(n,"yaml"),p=await S(c.data,a.dirname(n),r,e,{navFile:n}),u=$(p);if(u)return F.verbose(`Found product first link "${u}" in sidebar "${n}"`),u}const l=await S([{directory:`${s}`}],a.dirname("sidebars.yaml"),r,e,{navFile:"sidebars.yaml"}),f=$(l);return f&&F.verbose(`Found product first link "${f}" in product folder "${s}"`),f}function $(o){return(o?A(o,r=>!!r.link):void 0)?.link}function W(o){return o.sort((e,r)=>{const s=e.relativePath.split("/").length,t=r.relativePath.split("/").length;return s!==t?s-t:e.relativePath.localeCompare(r.relativePath,void 0,{numeric:!0})})}export{T as getProductFirstLink,re as resolveProductsConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{logger as m}from"../tools/notifiers/logger.js";async function
|
|
1
|
+
import{logger as m}from"../tools/notifiers/logger.js";async function l(r,o,n){if(!r.theme)return r;m.warnForRealFile("The 'theme' property in frontmatter is deprecated. Please move all of the properties from 'theme' to the root of frontmatter: %rp",o,n);const t={...r};for(const e of Object.keys(t.theme))t[e]==null?t[e]=t.theme[e]:m.warnForRealFile(`Detected both '${e}' and 'theme.${e}' properties in frontmatter. The 'theme.${e}' property will be ignored and needs to be removed or merged into the '${e}': %rp`,o,n);return delete t.theme,t}export{l as ensureFrontmatterThemeCompatibility};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{writeFileSync as P}from"node:fs";import T from"path";import{PAGE_COUNT_OUTPUT_FILE_NAME as y}from"../../constants/common.js";import{readEnvVariable as F}from"../../utils/envs/read-env-variable.js";import{logger as o}from"../../tools/notifiers/logger.js";import{isReactPage as b}from"../../utils/content/is-react-page.js";import{EntitlementsProvider as S}from"../../entitlements/entitlements-provider.js";import{getBilledPagesCount as O,isPathIgnored as R}from"../../utils/index.js";import{isGraphqlDoc as $}from"../graphql-docs/is-graphql-doc.js";import{isMarkdownPage as E}from"../markdown/is-markdown-page.js";import{isOpenapiDoc as M}from"../openapi-docs/is-openapi-doc.js";import{PRODUCT_NAME as l}from"../../../config/product-gates.js";import{isAsyncapiDoc as k}from"../asyncapi-docs/is-asyncapi-doc.js";import{telemetryTraceStep as _}from"../../../cli/telemetry/helpers/trace-step.js";async function Y(){return{id:"entitlements",async afterRoutesCreated(w,u){await _("build.plugin.entitlements",async t=>{const i=S.instance(),r=[],n=[],s=[],a=[],p=[];for(const{relativePath:e}of
|
|
1
|
+
import{writeFileSync as P}from"node:fs";import T from"path";import{PAGE_COUNT_OUTPUT_FILE_NAME as y}from"../../constants/common.js";import{readEnvVariable as F}from"../../utils/envs/read-env-variable.js";import{logger as o}from"../../tools/notifiers/logger.js";import{isReactPage as b}from"../../utils/content/is-react-page.js";import{EntitlementsProvider as S}from"../../entitlements/entitlements-provider.js";import{getBilledPagesCount as O,isPathIgnored as R}from"../../utils/index.js";import{isGraphqlDoc as $}from"../graphql-docs/is-graphql-doc.js";import{isMarkdownPage as E}from"../markdown/is-markdown-page.js";import{isOpenapiDoc as M}from"../openapi-docs/is-openapi-doc.js";import{PRODUCT_NAME as l}from"../../../config/product-gates.js";import{isAsyncapiDoc as k}from"../asyncapi-docs/is-asyncapi-doc.js";import{telemetryTraceStep as _}from"../../../cli/telemetry/helpers/trace-step.js";async function Y(){return{id:"entitlements",async afterRoutesCreated(w,u){await _("build.plugin.entitlements",async t=>{const i=S.instance(),r=[],n=[],s=[],a=[],p=[];for(const{relativePath:e}of u.fs.scan())R(e)||(E(e)?r.push(e):$(e)?s.push(e):b(e)?a.push(e):await M(e,u)?n.push(e):await k(e,u)&&p.push(e));const g=i.canAccessFeature("markdown");t?.setAttribute("totalMarkdownFiles",r.length.toString()),t?.setAttribute("isMarkdownSupported",(!!g).toString()),r.length>0&&!g&&o.warn(`The product you are using ("${l}") does not support Markdown pages. The following Markdown files were detected but will be ignored: ${r.map(()=>"%rp").join(", ")}`,...r);const c=i.canAccessFeature("openapi");t?.setAttribute("totalOpenApiFiles",n.length.toString()),t?.setAttribute("isOpenApiSupported",(!!c).toString()),n.length>0&&!c&&o.warn(`The product you are using ("${l}") does not support OpenAPI documents. The following files are ignored: ${n.map(()=>"%rp").join(", ")}`,...n);const d=i.canAccessFeature("asyncapi");t?.setAttribute("totalAsyncApiFiles",p.length.toString()),t?.setAttribute("isAsyncApiSupported",(!!d).toString()),p.length>0&&!d&&o.warn(`The product you are using ("${l}") does not support AsyncAPI documents. The following files are ignored: ${p.map(()=>"%rp").join(", ")}`,...p);const m=i.canAccessFeature("graphql");t?.setAttribute("totalGraphqlFiles",s.length.toString()),t?.setAttribute("isGraphqlSupported",(!!m).toString()),s.length>0&&!m&&o.warn(`The product you are using ("${l}") does not support GraphQL documents. The following files are ignored: ${s.map(()=>"%rp").join(", ")}`,...s);const f=i.canAccessFeature("reactPages");t?.setAttribute("totalReactFiles",a.length.toString()),t?.setAttribute("isReactPagesSupported",(!!f).toString()),a.length>0&&!f&&o.warn(`The product you are using ("${l}") does not support React pages. The following files are ignored: ${a.map(()=>"%rp").join(", ")}`,...a);const A=O(w.getAllRoutes());t?.setAttribute("totalBilledPages",A.toString());const h=F("REDOCLY_METADATA_OUTPUT_FOLDER");h&&(o.info("Save total pages..."),P(T.join(h,y),JSON.stringify({totalPages:A},null)))})}}}export{Y as entitlementsPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{writeFileSync as C}from"node:fs";import $ from"node:path";import{REDOCLY_TEAMS_RBAC as v}from"@redocly/config";import{combineUrls as I}from"@redocly/theme/core/utils";import{PUBLIC_API_DEFINITIONS_FOLDER as w}from"../../constants/common.js";import{GRAPHQL_TEMPLATE_ID as H,GRAPHQL_SPEC_SLUG as N,PUBLIC_RBAC_SCOPE_ITEM as O}from"../../../constants/common.js";import{removeTrailingSlash as _}from"../../../utils/url/remove-trailing-slash.js";import{getTemplatePath as Q}from"./get-template-path.js";import{searchResolver as F}from"./search/search-resolver.js";import{graphqlDocLoader as M}from"./graphql-doc-loader.js";import{getAiDocumentsStore as A}from"./search/ai/get-ai-search-document.js";import{fromCurrentDir as U}from"../../utils/paths.js";import{ensureDir as k}from"../../utils/fs.js";import{telemetryTraceStep as x}from"../../../cli/telemetry/helpers/trace-step.js";const B="graphql-docs-",R="graphql-spec-download";async function nt(){return{id:"graphql",requiredEntitlements:["graphql"],loaders:{"graphql-doc":M},processContent:async(t,{fs:n,cache:l,isPathIgnored:u,withPathPrefix:p})=>{await x("build.plugin.graphql_docs",async()=>{t.createRequestHandler(R,U(import.meta.url,"./spec-download.api.js")),t.addApiRoute({slug:N+"/*",requestHandlerId:R,httpMethod:"all",[v]:O,getStaticData:async()=>({props:{}})});const m=t.createTemplate(H,Q("./template/GraphQLDocs.js"));for(const{relativePath:o}of
|
|
1
|
+
import{writeFileSync as C}from"node:fs";import $ from"node:path";import{REDOCLY_TEAMS_RBAC as v}from"@redocly/config";import{combineUrls as I}from"@redocly/theme/core/utils";import{PUBLIC_API_DEFINITIONS_FOLDER as w}from"../../constants/common.js";import{GRAPHQL_TEMPLATE_ID as H,GRAPHQL_SPEC_SLUG as N,PUBLIC_RBAC_SCOPE_ITEM as O}from"../../../constants/common.js";import{removeTrailingSlash as _}from"../../../utils/url/remove-trailing-slash.js";import{getTemplatePath as Q}from"./get-template-path.js";import{searchResolver as F}from"./search/search-resolver.js";import{graphqlDocLoader as M}from"./graphql-doc-loader.js";import{getAiDocumentsStore as A}from"./search/ai/get-ai-search-document.js";import{fromCurrentDir as U}from"../../utils/paths.js";import{ensureDir as k}from"../../utils/fs.js";import{telemetryTraceStep as x}from"../../../cli/telemetry/helpers/trace-step.js";const B="graphql-docs-",R="graphql-spec-download";async function nt(){return{id:"graphql",requiredEntitlements:["graphql"],loaders:{"graphql-doc":M},processContent:async(t,{fs:n,cache:l,isPathIgnored:u,withPathPrefix:p})=>{await x("build.plugin.graphql_docs",async()=>{t.createRequestHandler(R,U(import.meta.url,"./spec-download.api.js")),t.addApiRoute({slug:N+"/*",requestHandlerId:R,httpMethod:"all",[v]:O,getStaticData:async()=>({props:{}})});const m=t.createTemplate(H,Q("./template/GraphQLDocs.js"));for(const{relativePath:o}of n.scan(/(\.gql|\.graphql)$/)){if(await u(o))continue;const h=await l.load(o,"graphql-doc");if(!h.data)continue;j(h.data.content,t.outdir,o);const{menu:q,content:T,settings:i,metadata:y,store:c}=h.data,b=`${B}${o}`;await t.createSharedData(b,T);const d=[{key:"graphQlSettings",id:b}],E=q.getGroups(),G=q.getSidebarItems(),g={type:"graphql",title:E[0].name,...y},s=[{slugSuffix:"",fsPath:o,templateId:m,getStaticData:S(void 0,i,p),sharedData:d,getAiDocumentsStore:A({label:i.info?.title??"GraphQL Overview",groupName:"overview",metadata:g,actions:t,store:c,includeInLLMsTxt:!0})}];for(const r of E){const f=`${r.id}`;s.push({slugSuffix:f,fsPath:o,templateId:m,getStaticData:S(r,i,p),sharedData:d});for(const e of r.typeGroups){const a=`${e.id}`;s.push({slugSuffix:a,fsPath:o,templateId:m,getStaticData:S(e,i,p),sharedData:d,getAiDocumentsStore:A({label:e.name,groupName:e.name,metadata:g,actions:t,store:c,isTypeGroup:!0,items:new Set(e.items)})});for(const L of e.items){const P=`${e.id}/${L}`;s.push({slugSuffix:P,fsPath:o,templateId:m,getStaticData:S(e,i,p),sharedData:d,getAiDocumentsStore:A({label:L,groupName:e.name,metadata:g,actions:t,store:c})})}}}if(!s.length)return;const D=s[s.length-1];D.metadata=g,D.getSidebar=r=>{function f(e){return e.map(a=>({...a,slug:a.slug&&_(I(r.baseSlug,a.slug)),routeSlug:a.routeSlug&&_(I(r.baseSlug,a.routeSlug)),link:a.link&&_(I(r.baseSlug,a.link)),items:a.items&&f(a.items)}))}return f(G)},D.getSearchDocuments=F(t,c);for(const r of s)t.addRoute(r)}})}}}function S(t,n,l){return async function(u){return{props:{seo:{title:t?.name},settings:{...n,location:{section:t?.id},sidebar:{hide:!0},baseUrlPath:l(u.baseSlug)},disableAutoScroll:!0}}}}function j(t,n,l){const u=w.slice(1);C(k($.resolve(n,`${u}/${l}`)),t,"utf8")}export{nt as graphqlDocsPlugin,j as storeGqlSchema};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import g from"path";import{DEFAULT_LOCALE_PLACEHOLDER as d,TRANSLATIONS_FILE_NAME as h}from"../../../constants/common.js";import{I18N_DIR_NAME as
|
|
1
|
+
import g from"path";import{DEFAULT_LOCALE_PLACEHOLDER as d,TRANSLATIONS_FILE_NAME as h}from"../../../constants/common.js";import{I18N_DIR_NAME as y,L10N_DIR_NAME as A}from"../../constants/common.js";import{logger as m}from"../../tools/notifiers/logger.js";import{reporter as w}from"../../tools/notifiers/reporter.js";import{EntitlementsProvider as O}from"../../entitlements/entitlements-provider.js";import{isL10nPath as E}from"../../fs/utils/is-l10n-path.js";import{isOpenapiDoc as I}from"../openapi-docs/is-openapi-doc.js";import{telemetryTraceStep as N}from"../../../cli/telemetry/helpers/trace-step.js";async function $(){return{id:"l10n",async processContent(n,i){await N("build.plugin.l10n",async a=>{const{fs:t,cache:c,getConfig:r}=i,e={},p=O.instance(),l=await r();a?.setAttribute("config",JSON.stringify(l.l10n||{}));const s=l.l10n?.defaultLocale||d;if(p.canAccessFeature("l10n")){await F(i);for(const{relativePath:o}of t.scan(/(^|.*[\/\\])translations\.yaml$/)){const u=await c.load(o,"yaml"),L=P(o)||s;e[L]={translation:u.data||{}}}}e[s]={translation:{...e[s]?.translation||{}}};const f=l.l10n?.locales||[d,...t.localeFolders].map(o=>({code:o.toLowerCase(),name:o}));a?.setAttribute("locales",JSON.stringify(f)),n.setGlobalData({l10n:{translations:e,defaultLocale:s,locales:f.map(o=>({code:o.code,name:o.name||o.code}))}})})}}}function P(n){return n.indexOf("/")>0?n.split("/")[1]:void 0}async function F(n){const i=n.fs.scan();for(const{isVirtual:a,realRelativePath:t}of i){if(a)continue;if(E(t)&&t.endsWith(".page.tsx")&&await w.panicOnBuild(`The file %rp is not allowed in ${A} or ${y} folders`,t),g.posix.basename(t)===h){const r=/^(?:@(i18n|l10n)[\/\\][^\/\\]+[\/\\])?translations\.yaml$/.test(t),e=await I(t,n);!r&&!e&&m.warn("The file %rp is in the wrong location. Make sure it is located in the root directory or in the locale root directory.",t),r&&e&&m.warn("It looks like the file %rp might be an OpenAPI definition and is located in a location reserved for translation files. Please rename it or move to another directory if it is not a translations file",t)}}}export{$ as l10nPlugin};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _ from"@redocly/portal-plugin-mock-server";import B from"path";import{REDOCLY_ROUTE_RBAC as x}from"@redocly/config";import{combineUrls as v,withPathPrefix as O}from"@redocly/theme/core/utils";import{VERSION_SEPARATOR as N}from"../constants/common.js";import{removeTrailingSlash as D}from"../../utils/url/remove-trailing-slash.js";import{removeLeadingSlash as L}from"../../utils/url/remove-leading-slash.js";import{isTruthy as V}from"../../utils/guards/is-truthy.js";import{normalizeRouteSlug as F}from"../../utils/path/normalize-route-slug.js";import{slash as j}from"../../utils/path/slash.js";import{parsePathVersions as k}from"../../utils/path/parse-path-versions.js";import{reporter as E}from"../tools/notifiers/reporter.js";import{logger as P}from"../tools/notifiers/logger.js";import{isDevelopMode as $}from"../utils/envs/is-develop-mode.js";import{shaDirPathShort as z}from"../utils/crypto/sha-dir-path-short.js";import{customPagesPlugin as M}from"../../server/plugins/pages/index.js";import{openAPIDocsPlugin as q}from"../../server/plugins/openapi-docs/index.js";import{asyncAPIDocsPlugin as I}from"../../server/plugins/asyncapi-docs/index.js";import{configParserPlugin as U}from"./config-parser/index.js";import{markdownPlugin as G}from"./markdown/index.js";import{generateBrowserPluginsModule as W,generateClientRoutes as K,generateTemplatesModule as H}from"../esbuild/generate.js";import{graphqlDocsPlugin as Y}from"./graphql-docs/index.js";import{searchPlugin as J}from"./search/index.js";import{defaultThemePlugin as Q}from"./default-theme/index.js";import{apiKeyMgmtPlugin as X}from"./dev-onboarding/index.js";import{apiFunctionsPlugin as Z}from"./api-functions/index.js";import{scorecardClassicPlugin as ee}from"./scorecard-classic/index.js";import{lintPlugin as te}from"./lint/index.js";import{resolvePlugins as oe}from"../config/external-plugins.js";import{sidebarsPlugin as ie}from"./sidebars/index.js";import{l10nPlugin as ne}from"./l10n/index.js";import{analyticsPlugins as re}from"./analytics/index.js";import{sitemapPlugin as se}from"./sitemap/index.js";import{entitlementsPlugin as ae}from"./entitlements/index.js";import{getBilledPagesCount as le,slug as ce}from"../utils/index.js";import{telemetry as ue}from"../../cli/telemetry/index.js";import{telemetryTraceStep as b}from"../../cli/telemetry/helpers/trace-step.js";import{EntitlementsProvider as A}from"../entitlements/entitlements-provider.js";import{ssoPlugin as fe}from"./sso/index.js";import{Cache as me}from"../fs/cache.js";import{ContentFs as de}from"../fs/content-fs.js";import{findProductBySlug as pe}from"../utils/product.js";import{parseBaseName as ge}from"./utils.js";import{isRouteReserved as Pe}from"./get-reserved-routes.js";import{catalogClassicPlugin as he}from"./catalog-classic/index.js";import{arazzoDocsPlugin as ye}from"./arazzo-docs/index.js";const
|
|
2
|
-
`+s.stack;ue.sendCliErrorCaughtMessage({message:u}),
|
|
1
|
+
import _ from"@redocly/portal-plugin-mock-server";import B from"path";import{REDOCLY_ROUTE_RBAC as x}from"@redocly/config";import{combineUrls as v,withPathPrefix as O}from"@redocly/theme/core/utils";import{VERSION_SEPARATOR as N}from"../constants/common.js";import{removeTrailingSlash as D}from"../../utils/url/remove-trailing-slash.js";import{removeLeadingSlash as L}from"../../utils/url/remove-leading-slash.js";import{isTruthy as V}from"../../utils/guards/is-truthy.js";import{normalizeRouteSlug as F}from"../../utils/path/normalize-route-slug.js";import{slash as j}from"../../utils/path/slash.js";import{parsePathVersions as k}from"../../utils/path/parse-path-versions.js";import{reporter as E}from"../tools/notifiers/reporter.js";import{logger as P}from"../tools/notifiers/logger.js";import{isDevelopMode as $}from"../utils/envs/is-develop-mode.js";import{shaDirPathShort as z}from"../utils/crypto/sha-dir-path-short.js";import{customPagesPlugin as M}from"../../server/plugins/pages/index.js";import{openAPIDocsPlugin as q}from"../../server/plugins/openapi-docs/index.js";import{asyncAPIDocsPlugin as I}from"../../server/plugins/asyncapi-docs/index.js";import{configParserPlugin as U}from"./config-parser/index.js";import{markdownPlugin as G}from"./markdown/index.js";import{generateBrowserPluginsModule as W,generateClientRoutes as K,generateTemplatesModule as H}from"../esbuild/generate.js";import{graphqlDocsPlugin as Y}from"./graphql-docs/index.js";import{searchPlugin as J}from"./search/index.js";import{defaultThemePlugin as Q}from"./default-theme/index.js";import{apiKeyMgmtPlugin as X}from"./dev-onboarding/index.js";import{apiFunctionsPlugin as Z}from"./api-functions/index.js";import{scorecardClassicPlugin as ee}from"./scorecard-classic/index.js";import{lintPlugin as te}from"./lint/index.js";import{resolvePlugins as oe}from"../config/external-plugins.js";import{sidebarsPlugin as ie}from"./sidebars/index.js";import{l10nPlugin as ne}from"./l10n/index.js";import{analyticsPlugins as re}from"./analytics/index.js";import{sitemapPlugin as se}from"./sitemap/index.js";import{entitlementsPlugin as ae}from"./entitlements/index.js";import{getBilledPagesCount as le,slug as ce}from"../utils/index.js";import{telemetry as ue}from"../../cli/telemetry/index.js";import{telemetryTraceStep as b}from"../../cli/telemetry/helpers/trace-step.js";import{EntitlementsProvider as A}from"../entitlements/entitlements-provider.js";import{ssoPlugin as fe}from"./sso/index.js";import{Cache as me}from"../fs/cache.js";import{ContentFs as de}from"../fs/content-fs.js";import{findProductBySlug as pe}from"../utils/product.js";import{parseBaseName as ge}from"./utils.js";import{isRouteReserved as Pe}from"./get-reserved-routes.js";import{catalogClassicPlugin as he}from"./catalog-classic/index.js";import{arazzoDocsPlugin as ye}from"./arazzo-docs/index.js";const we=[U,fe,Q,ne,G,q,I,ye,ee,te,Z,M,Y,X,he,{importPath:"./catalog-entities/plugin.js",loadCondition:()=>process.env.NEW_CATALOG_ENABLED==="true"},{importPath:"./scorecards/plugin.js",loadCondition:()=>process.env.NEW_SCORECARDS_ENABLED==="true"},{importPath:"./mcp/index.js",loadCondition:()=>A.instance().canAccessFeature("mcp")},ie,se,ae,J,_,...re];async function gt(o,t=we){return await b("build.plugins_init",async()=>{const n=[],C=A.instance(),h={};for(const f of t){let a;if("loadCondition"in f){if(!f.loadCondition())continue;const e=await import(f.importPath);if(!e.default||typeof e.default!="function"){await E.panicOnBuild(`Dynamic plugin ${f.importPath} does not export a default export or it is not a function`);continue}a=e.default}else a=f;const d=await a(o);for(const[e,i]of Object.entries(d.loaders||{}))h[e]&&await E.panicOnBuild(`Duplicate loader with name ${e}`),h[e]=i;(!d.requiredEntitlements||d.requiredEntitlements?.every(e=>C.canAccessFeature(e)))&&n.push(d)}const s=new de(o.contentDir);await s.ready;const u=new me(s);return u.setLoaders(h),P.verbose("All plugins instantiated"),{pluginInstances:n,lifecycleContext:ve(s,u)}})}function T(o){P.verbose("Generating templates"),b("build.write_client_entries",()=>{H(o),W(o),K(o)})}async function Ce(o){const t=o.getAllRoutes();le(t)||await E.panicOnBuild("No routes created by plugins. Please check your project configuration.")}async function Pt(o,t,n,C={}){const h=A.instance();try{await b("build.plugins_run",async()=>{t.startPluginsRun();let s=[];await b("build.plugins_process_content",async a=>{for(const e of o){const i=P.startTiming();await e.processContent?.(t,n),P.verboseTime(i,`processContent for ${e.id}`)}s=(await oe(t.contentDir,t.config.plugins)).map(e=>e.lifecyclePlugin).filter(e=>V(e)&&(!e.requiredEntitlements||e.requiredEntitlements?.every(i=>h.canAccessFeature(i)))),n.cache.setLoaders(Object.fromEntries(s.flatMap(e=>Object.entries(e.loaders||{}))));for(const e of s){const i=P.startTiming();await e.processContent?.(t,n),P.verboseTime(i,`processContent for ${e.id}`)}a?.setAttribute("externalPluginsProcessed",s.length.toString())});const u=await Re(t,n),f=[...o,...s];T(t),$()?await t.userCodeReady:t.buildRevision++,await b("build.plugins_after_routes_created",async()=>{for(const a of f){const d=P.startTiming();await a.afterRoutesCreated?.(t,u),P.verboseTime(d,`afterRoutesCreated for ${a.id}`)}}),await t.reportUnsetEnvVars(),await Ce(t),T(t)})}catch(s){const u="Unhandled error in plugin. "+s.message+`
|
|
2
|
+
`+s.stack;ue.sendCliErrorCaughtMessage({message:u}),C.failFast?await E.panic(u):await E.panicOnBuild(u)}finally{t.finishPluginsRun()}}async function Re(o,t){const{cache:n,fs:C}=t,h=await t.getConfig(),s=Object.values(h.products||{}),u=(await n.load("versions-config","versions-config")).data,f=(await n.load("content-slugs","content-slugs")).data;for(const{duplicateInAllLocales:e,slugSuffix:i,sharedData:y=[],redirectFrom:w=[],...l}of o.newRoutes){const c=F(l.slug?l.slug:a(l.fsPath)),p=D(i?v(c,i):c),r={...l,[x]:{slug:p,fsPath:l.fsPath},slug:p,baseSlug:c,versions:d(l.fsPath,i),product:pe(s,p,a)};Pe(p,h)&&await E.panicOnBuildContentError(`Route "${p}" is reserved and cannot be used. Please choose a different slug for "${l.fsPath}".`),o.routesByFsPath.set(r.fsPath,r.slug),o.routesBySlug.set(r.slug,r);for(const{key:g,id:m}of y)o.addRouteSharedData(r.slug,g,m);for(const g of w)o.addRedirect(g.from,{type:g.type,to:r.slug});if(e)for(const g of C.localeFolders){const m={...r,slug:"/"+g.toLowerCase()+r.slug};o.routesByFsPath.set(m.fsPath,m.slug),o.routesBySlug.set(m.slug,m);for(const{key:R,id:S}of y)o.addRouteSharedData(m.slug,R,S);for(const R of w){const S=v(C.localizationFolder,g,R.from);o.addRedirect(S,{type:R.type,to:m.slug})}}}return o.newRoutes=[],{...t,slugify:a};function a(e){const i=j(e).replace(new RegExp("^(@i18n|@l10n)\\/"),""),y=f.fileSlugs.get(i)||f.dirSlugs.get(D(i));if(y)return y;const{baseName:w,isIndexFile:l}=ge(e);let c=B.dirname(e.replace(new RegExp("^(@i18n|@l10n)\\/"),""));return c=c==="."?"/":c,v("/",ce(l?c:v(c,w)),"/")}function d(e,i=""){const y=k(e);if(!y?.versionName)return;const{versionFolderPath:w,filePathInVersion:l,versionName:c}=y,p=u.get(w);if(p)return p.versions.map(r=>{const g=p.defaultVersion===r.version,m=L(v(w,N+r.version,l)),R=a(m);return{version:r.version,label:r.name||r.version,link:F(v(R,i)),default:g,active:c===r.version,folderId:z(`${w}`)}})}}function ve(o,t){return{fs:o,cache:t,getConfig:async(n=".")=>(await t.load(n,"nearest-redocly-config",o.localeFolders)).data,isPathIgnored:async n=>(await t.load(n,"is-ignored")).data,withPathPrefix:O,logger:P}}export{we as INTERNAL_PLUGINS,ve as createLifecycleContext,gt as initPlugins,Pt as runPlugins,T as writeClientEntries};
|
package/dist/server/plugins/markdown/attribute-resolvers/code-walkthrough/filesets-resolver.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import c from"node:path";import v from"is-glob";import m from"picomatch";import{parseFileChunks as h}from"./file-chunk-parser.js";import{getNodeAttribute as b}from"../../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as d}from"../../markdoc/helpers/set-node-attribute-value.js";import{readFileContent as g}from"../../read-file-content.js";import{resolvePathInMarkdown as x}from"../../resolve-path-in-markdown.js";import{removeL10nPrefix as P}from"../../../../fs/utils/remove-l10n-prefix.js";import{mapFileExtensionToLanguage as k}from"./map-file-extension-to-language.js";async function V(a,f,p,u){const{actions:{contentDir:F},context:{fs:i}}=u,n=b(a,f);if(!Array.isArray(n))d(a,"resolvedFilesets",[]);else{const w=await Promise.all(n.map(async e=>{const s=Array.isArray(e.files)?e.files:[],o=Array.isArray(e.downloadAssociatedFiles)?e.downloadAssociatedFiles:[],r=await Promise.all(s.map(l)),t=await Promise.all(o.map(l));return{...e,files:r.flat(),downloadAssociatedFiles:t.flat()}}));d(a,"resolvedFilesets",w.filter(e=>!!e));async function l(e){const s=x(e,P(p),F),o=await A(s);return(await Promise.all(o.map(y))).filter(t=>t!==null)}async function A(e){if(!v(e))return[e];const{base:s}=m.scan(e);return
|
|
1
|
+
import c from"node:path";import v from"is-glob";import m from"picomatch";import{parseFileChunks as h}from"./file-chunk-parser.js";import{getNodeAttribute as b}from"../../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as d}from"../../markdoc/helpers/set-node-attribute-value.js";import{readFileContent as g}from"../../read-file-content.js";import{resolvePathInMarkdown as x}from"../../resolve-path-in-markdown.js";import{removeL10nPrefix as P}from"../../../../fs/utils/remove-l10n-prefix.js";import{mapFileExtensionToLanguage as k}from"./map-file-extension-to-language.js";async function V(a,f,p,u){const{actions:{contentDir:F},context:{fs:i}}=u,n=b(a,f);if(!Array.isArray(n))d(a,"resolvedFilesets",[]);else{const w=await Promise.all(n.map(async e=>{const s=Array.isArray(e.files)?e.files:[],o=Array.isArray(e.downloadAssociatedFiles)?e.downloadAssociatedFiles:[],r=await Promise.all(s.map(l)),t=await Promise.all(o.map(l));return{...e,files:r.flat(),downloadAssociatedFiles:t.flat()}}));d(a,"resolvedFilesets",w.filter(e=>!!e));async function l(e){const s=x(e,P(p),F),o=await A(s);return(await Promise.all(o.map(y))).filter(t=>t!==null)}async function A(e){if(!v(e))return[e];const{base:s}=m.scan(e);return i.scan(new RegExp(s)).filter(({isVirtual:t})=>!t).map(({realRelativePath:t})=>t).filter(t=>m(e)(t))}async function y(e){const s=await g(e,i);if(s==null)return null;const{root:o,metadata:r}=await h(s,e);return{path:e,content:o,metadata:r,basename:c.basename(e),language:k(c.extname(e))}}}}export{V as resolveCodeWalkthroughFilesets};
|
package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type NormalizedProblem } from '@redocly/openapi-core';
|
|
2
|
+
import type { ContentFs } from '../../../../fs/content-fs.js';
|
|
3
|
+
type Opts = {
|
|
4
|
+
schemaOrRef: unknown;
|
|
5
|
+
fs: ContentFs;
|
|
6
|
+
filePath: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function dereferenceJsonSchemaRefs({ schemaOrRef, filePath, fs }: Opts): Promise<{
|
|
9
|
+
schema: unknown;
|
|
10
|
+
oas: unknown;
|
|
11
|
+
problems: NormalizedProblem[];
|
|
12
|
+
} | undefined>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=dereference-json-schema-refs.d.ts.map
|
package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import f from"node:path";import{bundle as m,createConfig as d,Source as l}from"@redocly/openapi-core";import{ExternalResolver as u}from"../../../../fs/utils/external-ref-resolver.js";async function h({schemaOrRef:e,filePath:n,fs:c}){if(typeof e!="object"||!e)return;const a={config:await d({}),base:f.dirname(n),doc:{source:new l(n,""),parsed:JSON.parse(JSON.stringify({openapi:"3.1.0",components:{schemas:{__root:e}}}))},externalRefResolver:new u(c)},{bundle:{parsed:p},problems:i}=await m(a),s=p,o=s?.components?.schemas,r=o?.__root?.$ref,t=typeof r=="string"?r.split("/").at(-1):void 0;return{schema:t?o?.[t]:o?.__root,problems:i,oas:s}}export{h as dereferenceJsonSchemaRefs};
|
package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
type GenerateSampleOptions = Partial<{
|
|
2
|
+
mode: 'read' | 'write';
|
|
3
|
+
spec: object;
|
|
4
|
+
}>;
|
|
5
|
+
/**
|
|
6
|
+
* Generates a sample JSON value from a JSON Schema using openapi-sampler.
|
|
7
|
+
*
|
|
8
|
+
* @param schema - A JSON Schema object to generate a sample from.
|
|
9
|
+
* Must be a plain JavaScript object (not null, array, or primitive).
|
|
10
|
+
*
|
|
11
|
+
* @param options - Optional configuration for sample generation.
|
|
12
|
+
* - `mode`: Filter properties by read/write semantics (`'read'` | `'write'`).
|
|
13
|
+
* - `spec`: Full OpenAPI specification, required if schema contains `$ref` references.
|
|
14
|
+
*
|
|
15
|
+
* @returns An object containing either the generated value or an error message.
|
|
16
|
+
* - `value`: The generated sample (object or array), or `null` if generation failed.
|
|
17
|
+
* - `error`: A descriptive error message if generation failed, or `null` on success.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* // Basic object schema
|
|
21
|
+
* generateSampleFromSchema({
|
|
22
|
+
* type: 'object',
|
|
23
|
+
* properties: { name: { type: 'string' } }
|
|
24
|
+
* });
|
|
25
|
+
* // Returns: { value: { name: 'string' }, error: null }
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Using read mode to exclude writeOnly properties
|
|
29
|
+
* generateSampleFromSchema(
|
|
30
|
+
* {
|
|
31
|
+
* type: 'object',
|
|
32
|
+
* properties: {
|
|
33
|
+
* id: { type: 'integer', readOnly: true },
|
|
34
|
+
* password: { type: 'string', writeOnly: true }
|
|
35
|
+
* }
|
|
36
|
+
* },
|
|
37
|
+
* { mode: 'read' }
|
|
38
|
+
* );
|
|
39
|
+
* // Returns: { value: { id: 0 }, error: null }
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Schema with $ref requires spec
|
|
43
|
+
* generateSampleFromSchema(
|
|
44
|
+
* { $ref: '#/components/schemas/User' },
|
|
45
|
+
* { spec: openApiDocument }
|
|
46
|
+
* );
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* // Empty schema returns error
|
|
50
|
+
* generateSampleFromSchema({ type: 'object' });
|
|
51
|
+
* // Returns: { value: null, error: 'Invalid JSON Schema: schema must include properties, items, allOf/anyOf/oneOf, or example/enum/const/default' }
|
|
52
|
+
*
|
|
53
|
+
* @remarks
|
|
54
|
+
* - Primitive schemas (`type: 'string'`, `type: 'integer'`, etc.) are not supported.
|
|
55
|
+
* - See `../__tests__/generate-sample-from-schema.test.ts` for comprehensive usage examples.
|
|
56
|
+
*/
|
|
57
|
+
export declare function generateSampleFromSchema(schema: unknown, options?: GenerateSampleOptions): {
|
|
58
|
+
value: unknown;
|
|
59
|
+
error: string | null;
|
|
60
|
+
};
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=generate-sample-from-schema.d.ts.map
|
package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import i from"@redocly/ajv";import*as s from"openapi-sampler";import{isObject as t}from"../../../../../utils/guards/is-object.js";function p(a,o){if(!t(a))return{value:null,error:"Invalid JSON Schema: schema must be a plain object."};const{mode:l,spec:u}=o??{};let e;try{e=s.sample(a,{...l==="read"?{skipWriteOnly:!0}:void 0,...l==="write"?{skipReadOnly:!0}:void 0},u)}catch(r){return{value:null,error:`Failed to generate sample from schema. Spec is required for schemas with $ref: ${r?.message||""}`}}if(e==null||t(e)&&Object.keys(e).length===0||Array.isArray(e)&&e.length===1&&e[0]===null){const r=new i({}),n=r.validateSchema(a);return typeof n!="boolean"?{value:null,error:"Invalid JSON Schema: Async schemas are not supported."}:!n&&r.errors?.length?{value:null,error:`Invalid JSON Schema: ${r.errorsText(r.errors,{separator:`
|
|
2
|
+
`})}`}:{value:e,error:null}}return{value:e,error:null}}export{p as generateSampleFromSchema};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolveOpenApiRef as e}from"./resolve-open-api-ref.js";import{resolveJsonSchemaRef as
|
|
1
|
+
import{resolveOpenApiRef as e}from"./resolve-open-api-ref.js";import{resolveJsonSchemaRef as o}from"./resolve-json-schema-ref.js";import{resolveParsedYaml as r}from"./resolve-parsed-yaml.js";import{resolveRawContent as m}from"./resolve-raw-content.js";import{resolveSvgContent as t}from"./resolve-svg-content.js";import{resolveRelativePath as i}from"./resolve-relative-path.js";import{resolveLink as l}from"./resolve-link.js";import{resolveNativeMdLink as s}from"./resolve-native-md-link.js";import{resolveCodeSnippetFromFile as a}from"./resolve-code-snippet-from-file.js";import{resolveHtmlSourceAttribute as p}from"./resolve-html-source-attribute.js";import{resolveHtmlHref as n}from"./resolve-html-href.js";import{resolveImageSrc as v}from"./resolve-image-src.js";import{resolveImageSrcSet as f}from"./resolve-image-src-set.js";import{resolveNavLinks as S}from"./resolve-nav-links.js";import{resolveRelativeOrCdnIcon as c}from"./resolve-relative-or-cdn-icon.js";import{resolveCodeWalkthroughFilesets as h}from"./code-walkthrough/filesets-resolver.js";import{resolveJsonExampleRef as d}from"./resolve-json-example-ref.js";import{resolveSampleFromJsonSchema as R}from"./resolve-sample-from-json-schema.js";const N={openapiRef:e,jsonSchemaRef:o,parsedYaml:r,rawContent:m,svgContent:t,relativePath:i,link:l,nativeMdLink:s,codeSnippetFile:a,htmlSourceAttribute:p,htmlHref:n,imageSrc:v,imageSrcSet:f,navLinks:S,relativeOrCdnIcon:c,codeWalkthroughFilesets:h,jsonExampleRef:d,sampleFromJsonSchema:R};export{N as attributeResolvers};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import c from"node:path";import{slash as L}from"../../../../utils/path/slash.js";import{reporter as F}from"../../../tools/notifiers/reporter.js";import{getNodeAttribute as n}from"../markdoc/helpers/get-node-attribute.js";import{MdResolveError as h}from"./md-resolve-error.js";async function V(i,w,b,{actions:{contentDir:m},context:u}){const o=n(i,w);if(!o)return;const r=o.startsWith("/")?o.slice(1):L(c.relative(m,c.resolve(m,c.dirname(b),o)));if(!
|
|
1
|
+
import c from"node:path";import{slash as L}from"../../../../utils/path/slash.js";import{reporter as F}from"../../../tools/notifiers/reporter.js";import{getNodeAttribute as n}from"../markdoc/helpers/get-node-attribute.js";import{MdResolveError as h}from"./md-resolve-error.js";async function V(i,w,b,{actions:{contentDir:m},context:u}){const o=n(i,w);if(!o)return;const r=o.startsWith("/")?o.slice(1):L(c.relative(m,c.resolve(m,c.dirname(b),o)));if(!u.fs.exists(r)){await F.panicOnBuildContentError(`Code snippet file ${r} does not exist`);return}let e=await u.fs.read(r);const d=n(i,"after"),p=n(i,"before"),y=n(i,"from"),C=n(i,"to"),v=n(i,"prefix")||"",s=y??d,f=C??p,g=d!==null,x=p!==null,E=(typeof s=="number"?Math.max(s||0,1):1)+(g?1:0);let a=(typeof f=="number"?f:1/0)-(x?1:0);if(typeof s=="string"){let t=e.indexOf(s);if(t===-1)throw new h(`Cannot find start text "${s}" in snippet file`,{rawLink:r});for(;e[t]!==`
|
|
2
2
|
`&&t>0;)t--;typeof a=="number"&&(a-=e.slice(0,t-1).split(`
|
|
3
3
|
`).length),e=e.slice(t+1)}if(typeof f=="string"){let t=e.indexOf(f);if(t===-1)throw new h(`Cannot find end text "${p}" in snippet file`,{rawLink:r});e[t-1]===`
|
|
4
4
|
`&&t--,e=e.slice(0,t)}const l=e.split(`
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Node } from '@markdoc/markdoc';
|
|
2
|
+
import type { MarkdocResolveContext } from '../../../types';
|
|
3
|
+
export declare function resolveJsonExampleRef(node: Node, attrName: string, relativePath: string, { context, actions }: MarkdocResolveContext): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=resolve-json-example-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{JsonPointer as w}from"@redocly/openapi-docs";import{isObject as d}from"../../../../utils/guards/is-object.js";import{getNodeAttribute as u}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as s}from"../markdoc/helpers/set-node-attribute-value.js";import{MdResolveError as p}from"./md-resolve-error.js";import{resolvePathInMarkdown as $}from"../resolve-path-in-markdown.js";async function b(e,o,m,{context:n,actions:h}){const r=u(e,o);try{if(!d(r)||typeof r.$ref!="string"){try{JSON.stringify(r)}catch(i){throw new Error(`Invalid JSON value: ${i.message}`)}s(e,o+"Resolved",r);return}const[t,f]=r.$ref.split("#");if(!t)throw new Error(`Invalid $ref. Path to file is required: ${r.$ref}`);const l=$(t,m,h.contentDir),c=await n.fs.getFileInfo(l);if(!c)throw new Error(`Invalid $ref. No such file: ${l}`);let a;try{a=(await n.cache.load(c.realRelativePath,"yaml")).data}catch(i){throw new Error(`Invalid file format. File must be valid json or yaml: ${l} ${i?.message||""}`)}if(!f){s(e,o+"Resolved",a);return}const v=w.get(a,f);s(e,o+"Resolved",v)}catch(t){throw s(e,o+"ResolvedErrors",[t.message]),new p(t.message,{rawLink:""})}}export{b as resolveJsonExampleRef};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import a from"node:path";import{
|
|
1
|
+
import a from"node:path";import{getNodeAttribute as u}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as f}from"../markdoc/helpers/set-node-attribute-value.js";import{formatBundleFromMarkdocError as b}from"../errors.js";import{MdResolveError as d}from"./md-resolve-error.js";import{dereferenceJsonSchemaRefs as h}from"./helpers/dereference-json-schema-refs.js";async function k(o,r,e,{context:c,actions:i}){const l=u(o,r),t=i.contentDir,p=a.resolve(t,e),s=await h({schemaOrRef:l,filePath:p,fs:c.fs});f(o,r+"Resolved",s?.oas);const n=s?.problems[0];if(!n)return{};const m=b(n,e,t);throw f(o,r+"ResolvedErrors",[m]),new d(m,{rawLink:""})}export{k as resolveJsonSchemaRef};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Node } from '@markdoc/markdoc';
|
|
2
2
|
import type { MarkdocResolveContext, WithOriginalAttr } from '../../../types';
|
|
3
|
-
export declare function resolveLink(node: WithOriginalAttr<Node>, attributeName: string,
|
|
3
|
+
export declare function resolveLink(node: WithOriginalAttr<Node>, attributeName: string, fromPage: string, { actions, context }: MarkdocResolveContext): Promise<{
|
|
4
4
|
sharedDataId?: string;
|
|
5
5
|
} | void>;
|
|
6
6
|
//# sourceMappingURL=resolve-link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from"node:path";import{ASYNC_API_DOCS_TEMPLATE_ID as F,GRAPHQL_SPEC_SLUG as T,GRAPHQL_TEMPLATE_ID as d,OPENAPI_DOCS_TEMPLATE_ID as v}from"../../../../constants/common.js";import{isLocalLink as U}from"../../../../utils/path/is-local-link.js";import{normalizeRouteSlug as P}from"../../../../utils/path/normalize-route-slug.js";import{removeFragment as y}from"../../../../utils/path/remove-fragment.js";import{PUBLIC_API_DEFINITIONS_FOLDER as C,DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as M}from"../../../constants/common.js";import{getInnerText as N}from"../markdoc/helpers/get-inner-text.js";import{getNodeAttribute as W}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as p}from"../markdoc/helpers/set-node-attribute-value.js";import{MdResolveError as g}from"./md-resolve-error.js";import{getLinkOriginalAttrName as B}from"./utils.js";import{isOpenApiURL as j}from"../../openapi-docs/is-openapi-doc.js";import{parseBaseName as G}from"../../utils.js";import{isMarkdownPage as $}from"../is-markdown-page.js";import{copyStaticFile as H}from"../../../utils/fs.js";const V=i=>[C,M,T].some(r=>i.startsWith(r));async function lt(i,r,k,{actions:L,context:c}){const{contentDir:w,outdir:D,getRouteByFsPath:A,slugHasRouteOrRedirect:E}=L,_=B(r),s=i[_]||W(i,r);if(i[_]=s,!U(s)||V(s))return;const[b,t="",R,h]=/^([^\?#]+)?([^#]+)?(.+)?/.exec(s)||[],f=i.type==="image"?"IMAGE":"LINK",u=String(i.attributes.title||i.attributes.alt||N([i])||""),n=y(k);if(i.type!=="image"){const{isOpenapiDetected:e,isOpenapiValid:m}=await j(t,n,L,c);if(e&&!m)throw new g(`OpenAPI route ${s} does not exist`,{rawLink:s,link:t,title:u,brokenLinkType:f})}if(o.extname(t)===""){if(t.startsWith("/")){if(!E(P(t)))throw new g(`Route ${t} does not exist`,{rawLink:s,link:t,title:u,brokenLinkType:f});p(i,r,t+(R||"")+(h||""))}if(!s.startsWith("#")&&!t.startsWith("/")&&$(n)){const e=A(n)?.slug;if(!e)return;const{isIndexFile:m}=G(n),I=m?P(o.posix.join(e,t)):P(o.posix.join(e,"../",t));if(!E(P(I)))throw new g(`Route ${t} does not exist`,{rawLink:s,link:I,title:u,brokenLinkType:f});p(i,r,I+(R||"")+(h||""))}return}const a=t.startsWith("/")?t.substring(1):o.posix.join(o.posix.dirname(n),decodeURI(t)),O=t.startsWith("/")?o.posix.join("static",t.substring(1)):"",x=c.fs.exists(a),S=c.fs.exists(O),l=A(a);if(!x&&!l&&!S)throw p(i,r,"#"),new g(`File ${a} does not exist`,{rawLink:s,link:a,title:u,brokenLinkType:f});if(l){const e=[v,d,F].includes(l.templateId);p(i,r,(e?l.baseSlug:l.slug)+(h||""))}else if(x){const e=c.fs.getFileInfo(a);if(!e||e.isVirtual)return;const m=await H(w,e.realRelativePath,D);p(i,r,m)}}export{lt as resolveLink};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import f from"node:path";import{OPENAPI_SHARED_DATA_PREFIX as p}from"../../../constants/plugins/openapi-docs.js";import{getNodeAttribute as
|
|
1
|
+
import f from"node:path";import{OPENAPI_SHARED_DATA_PREFIX as p}from"../../../constants/plugins/openapi-docs.js";import{getNodeAttribute as A}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as w}from"../markdoc/helpers/set-node-attribute-value.js";import{isOpenapiDoc as d}from"../../openapi-docs/is-openapi-doc.js";import{MdResolveError as a}from"./md-resolve-error.js";import{getLinkOriginalAttrName as g}from"./utils.js";async function O(r,t,e,{context:n}){const s=g(t);let o=r[s]||A(r,t);if(o||await d(e,n)&&(o=f.basename(e)),r[s]=o,!o)return;const i=f.posix.join(f.posix.dirname(e),o),m=p+i;if(w(r,t,m),!n.fs.exists(i))throw new a(`Definition file ${i} does not exist`,{rawLink:i});if(await n.isPathIgnored(i))throw new a(`Definition file ${i} is ignored in config`,{rawLink:i});return{sharedDataId:m}}export{O as resolveOpenApiRef};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getNodeAttribute as m}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as c}from"../markdoc/helpers/set-node-attribute-value.js";import{MdResolveError as f}from"./md-resolve-error.js";import{resolvePathInMarkdown as l}from"../resolve-path-in-markdown.js";async function p(t,a,
|
|
1
|
+
import{getNodeAttribute as m}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as c}from"../markdoc/helpers/set-node-attribute-value.js";import{MdResolveError as f}from"./md-resolve-error.js";import{resolvePathInMarkdown as l}from"../resolve-path-in-markdown.js";async function p(t,r,a,{context:o}){const s=m(t,r);if(s){const e=l(s,a,o.fs.cwd);if(!o.fs.exists(e))throw new f(`Schema file ${e} does not exist`,{rawLink:e});const i=(await o.cache.load(e,"yaml")).data;c(t,r+"Resolved",i)}}export{p as resolveParsedYaml};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getNodeAttribute as m}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as c}from"../markdoc/helpers/set-node-attribute-value.js";import{readFileContent as l}from"../read-file-content.js";import{resolvePathInMarkdown as w}from"../resolve-path-in-markdown.js";import{MdResolveError as p}from"./md-resolve-error.js";async function R(o,e,i,{context:r,actions:s}){const n=m(o,e),a=s.contentDir;if(n){const t=w(n,i,a);if(!
|
|
1
|
+
import{getNodeAttribute as m}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as c}from"../markdoc/helpers/set-node-attribute-value.js";import{readFileContent as l}from"../read-file-content.js";import{resolvePathInMarkdown as w}from"../resolve-path-in-markdown.js";import{MdResolveError as p}from"./md-resolve-error.js";async function R(o,e,i,{context:r,actions:s}){const n=m(o,e),a=s.contentDir;if(n){const t=w(n,i,a);if(!r.fs.exists(t))throw new p(`File ${t} does not exist`,{rawLink:t});const f=await l(t,r.fs);c(o,e+"RawContent",f)}}export{R as resolveRawContent};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Node } from '@markdoc/markdoc';
|
|
2
|
+
import type { MarkdocResolveContext } from '../../../types';
|
|
3
|
+
export declare function resolveSampleFromJsonSchema(node: Node, attrName: string, relativePath: string, { context, actions }: MarkdocResolveContext): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=resolve-sample-from-json-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import S from"node:path";import{getNodeAttribute as f}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as i}from"../markdoc/helpers/set-node-attribute-value.js";import{MdResolveError as a}from"./md-resolve-error.js";import{generateSampleFromSchema as g}from"./helpers/generate-sample-from-schema.js";import{formatBundleFromMarkdocError as k}from"../errors.js";import{dereferenceJsonSchemaRefs as E}from"./helpers/dereference-json-schema-refs.js";async function y(o,e,r,{context:p,actions:l}){const h=f(o,e),t=l.contentDir,d=S.resolve(t,r),s=await E({schemaOrRef:h,filePath:d,fs:p.fs});if(!s)return;const{schema:u,problems:w,oas:b}=s,m=w[0];if(m){const c=k(m,r,t);throw i(o,e+"ResolvedErrors",[c]),new a(c,{rawLink:""})}const R=f(o,"mode"),{value:v,error:n}=g(u,{mode:R,spec:b});if(i(o,e+"Resolved",v),n)throw new a(n,{rawLink:""})}export{y as resolveSampleFromJsonSchema};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getNodeAttribute as m}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as l}from"../markdoc/helpers/set-node-attribute-value.js";import{optimize as p}from"../../../../compiled/svgo/svgo-node.js";import{slug as c}from"../../../utils/index.js";import{MdResolveError as d}from"./md-resolve-error.js";import{resolvePathInMarkdown as u}from"../resolve-path-in-markdown.js";async function b(o,r,n,{context:i,actions:
|
|
1
|
+
import{getNodeAttribute as m}from"../markdoc/helpers/get-node-attribute.js";import{setNodeAttributeValue as l}from"../markdoc/helpers/set-node-attribute-value.js";import{optimize as p}from"../../../../compiled/svgo/svgo-node.js";import{slug as c}from"../../../utils/index.js";import{MdResolveError as d}from"./md-resolve-error.js";import{resolvePathInMarkdown as u}from"../resolve-path-in-markdown.js";async function b(o,r,n,{context:i,actions:s}){const e=m(o,r),a=s.contentDir;if(e){const t=u(e,n,a);if(!i.fs.exists(t))throw new d(`File ${t} does not exist`,{rawLink:e});let f=p(await i.fs.read(t),{plugins:[{name:"prefixIds",params:{prefix:c(t).replaceAll(/[\/\.]/g,"-")}}]}).data;l(o,r+"RawContent",f)}}export{b as resolveSvgContent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import L from"@markdoc/markdoc";import*as M from"path";import{GATED_MARKDOC_TAGS as
|
|
1
|
+
import L from"@markdoc/markdoc";import*as M from"path";import{GATED_MARKDOC_TAGS as A}from"../../constants/entitlements.js";import{logger as O}from"../../tools/notifiers/logger.js";import{reporter as F}from"../../tools/notifiers/reporter.js";import{sha1 as G}from"../../utils/crypto/sha1.js";import{formatMarkdocError as N}from"./errors.js";import{extractFirstHeading as j,visit as x}from"./markdoc/plugins/utils.js";import{attributeResolvers as y}from"./attribute-resolvers/index.js";import{MdResolveError as K}from"./attribute-resolvers/md-resolve-error.js";import{processHtmlTokens as $}from"./html/process-html-tokens.js";import{resolveRawPartials as W}from"./markdoc/resolve-raw-partials.js";import{EntitlementsProvider as Y}from"../../entitlements/entitlements-provider.js";import{MARKDOC_PARTIALS_DEPS_KEY as B}from"../../store.js";import{getLinkOriginalAttrName as U}from"./attribute-resolvers/utils.js";const V="EMPTY";async function q(a,o,e){const n=Y.instance(),{actions:g}=e,{relativePath:s,resolveErrors:_}=a,m=new Set,p=new Set,c=new Set,v={},f=new Set,w={},k={};function E(t,P){const D=P||V;t[D]=(t[D]||0)+1}const S=[];return a.resolveErrors.length=0,x(a.ast,t=>{const P=D();S.push(P.then(r=>{r?.sharedDataIds&&r.sharedDataIds.forEach(d=>m.add(d))}).catch(z));async function D(){const r=[];switch(t.type){case"fence":E(w,t.attributes.language);break;case"link":case"image":await y.nativeMdLink(t,t.type==="link"?"href":"src",s,e);break;case"tag":if(!t.tag)break;const d=o?.tags?.[t.tag];if(!d){A[t.tag]&&!n.canAccessFeature(A[t.tag])&&(t.errors.push({level:"warning",id:"invalid-tag",message:`Undefined tag: ${t.tag}`}),t.tag="",t.type="error",t.attributes={});break}const h=t.tag==="html"?t.attributes.name:t.tag;if((t.tag==="html"?f:c).add(h),v[h]=(v[h]||0)+1,h==="code-snippet"&&E(w,t.attributes.language),d.attributes?.__idx&&(t.attributes.__idx=v[t.tag]),d.dynamicComponentLib&&p.add(d.dynamicComponentLib),!d.attributes)break;if(h==="partial"&&t.attributes?.file){const i=U("file"),l=t[i]||t.attributes.file,b=l.startsWith("/")?l.slice(1):M.posix.normalize(M.posix.join(M.posix.dirname(s),l)),u=(g.getGlobalConfig(B)||{})[b];if(u?.dynamicComponents)for(const R of u.dynamicComponents)p.add(R);if(u?.sharedDataDeps)for(const R of u.sharedDataDeps)m.add(R)}for(const[i,l]of Object.entries(d.attributes)){const b=l.type;if(b&&(b.resolver||l.resolver)){const T=y[b.resolver||l.resolver],u=await T?.(t,i,s,e);u?.sharedDataId&&r.push(u.sharedDataId)}}if(h==="code-walkthrough")for(const i of t.attributes.resolvedFilesets||[])for(const l of i.files||[])E(k,l.language);const I=t.attributes?.attrs;if(I&&t.tag==="html")for(const i of Object.keys(I))i==="src"||i==="srcSet"?await y.htmlSourceAttribute(t,i,s,e):i==="href"&&await y.htmlHref(t,i,s,e);break}return{sharedDataIds:r}}async function z(r){if(!(r instanceof K)){await F.panicOnBuild(r.message);return}_.push(N({type:"resolve_link",meta:{...r.meta,link:r.meta.link??r.meta.rawLink},lines:t.lines,location:t.location,error:{id:"",level:"error",message:r.message,location:t.location}},a.relativePath,a.rawContent))}}),await Promise.all(S),a.sharedDataDeps=m,a.dynamicMarkdocComponents=p,a.validatedAtRevision<g.buildRevision&&(a.markdocErrors=L.validate(a.ast,o).map(t=>N(t,s,a.rawContent)),a.validatedAtRevision=g.buildRevision),{sharedDataDeps:a.sharedDataDeps,dynamicMarkdocComponents:Array.from(a.dynamicMarkdocComponents?.values()??[]),tagList:Array.from(c),htmlTagsList:Array.from(f),tagOccurrence:v,codeSnippetLanguages:w,codeWalkthroughLanguages:k}}const H=new L.Tokenizer({html:!0,allowIndentation:!0,allowComments:!0});H.parser.block.ruler.getRules("reference").length=0;function C(a,o){const e=H.tokenize(o),n=$(e);return{ast:L.parse(n,{file:a,slots:!0}),rawContent:o,resolveErrors:[],markdocErrors:[],relativePath:a,sharedDataDeps:void 0,validatedAtRevision:-1}}async function ft(a,o){const{data:e}=await o.cache.load(a,"markdown-ast");return j(e.ast)}async function dt(a,o){F.clearMarkdocProblems();const e=a.getAllRoutes();let n=0;const g=O.isInteractive();for(const s of e)await a.resolveRouteStaticData(s,o,!0),n++,g&&n%100===0&&O.logInFooter("validate",` \u{1F50D} Status: validating markdoc (${n}/${e.length})`)}async function gt(a,o,e){const n=a.content?G(a.content):"";return await e.context.cache.load(a.relativePath,{loader:s,name:"markdown-inline-parser"},[n,String(e.actions.buildRevision)]);async function s(_,m,p){let c;if(a.content){const f=a.content?a.content:await m.fs.read(a.relativePath),w=await m.getConfig(),k=await W(f,a.relativePath,w.markdown?.partialsFolders,m);c=C(a.relativePath,k)}else c=(await m.cache.load(a.relativePath,"markdown-ast")).data;let v={};if(e.actions.buildRevision!==0&&(v=await q(c,o,e)),!a.isVirtual){for(const f of c.markdocErrors)p(f);for(const f of c.resolveErrors)p(f)}return{ast:c.ast,info:v}}}export{ft as extractMdFirstHeading,C as getAst,gt as parseAndResolveMarkdoc,q as resolveAndValidateMarkdoc,dt as validateAllMarkdowns};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import f from"@markdoc/markdoc";import{getPublicEnvVariables as m}from"../../utils/envs/get-public-env-variables.js";import{transformMdAst as p}from"./runtime-transform";const c=async(v,a,r,e)=>{const{ast:s,frontmatter:t,props:o,editPage:i,lastModified:l}=a,{headings:n,renderableAst:d}=await p(f.Ast.fromJSON(s),{partials:r.partials,variables:{frontmatter:t,...r.variables,env:m()}},e.serverOutDir);return{...o,ast:d,headings:n,frontmatter:t,editPage:i,lastModified:l}};var A=c;export{A as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import u from"path";import{REDOCLY_TEAMS_RBAC as F}from"@redocly/config";import{MARKDOC_PARTIALS_DATA_KEY as D}from"../../store.js";import{reporter as R}from"../../tools/notifiers/reporter.js";import{extractMdFirstHeading as b,getAst as A}from"./compiler.js";import{getTemplatePath as w}from"./get-template-path.js";import{prepareMarkdocPartials as C}from"./markdoc/partials.js";import{searchResolver as M}from"./search/search-resolver.js";import{markdownStaticDataLoader as T}from"./markdown-static-data-loader.js";import{makeErrorRoute as E}from"../error-route.js";import{validateRbacConfig as I}from"../validate-rbac-config.js";import{findFrontmatterSlugs as O,getSidebarSharedDataId as _,resolveFrontmatterSlugs as G}from"../utils.js";import{isPartial as L}from"./is-partial.js";import{markdownFrontmatterLoader as j}from"./markdown-frontmatter-loader.js";import{resolveRawPartials as z}from"./markdoc/resolve-raw-partials.js";import{getAiDocumentsStore as B}from"./search/get-ai-search-documents.js";import{registerPageProps as K}from"../register-page-props.js";import{sanitizeMalformedMdContent as N}from"./utils/sanitize-malformed-md-content.js";import{telemetryTraceStep as W}from"../../../cli/telemetry/helpers/trace-step.js";async function nt(h){return{id:"markdoc",requiredEntitlements:["markdown"],loaders:{"markdown-frontmatter":j,"markdown-ast":async(e,r)=>{const i=await r.fs.read(e),n=await r.getConfig(),d=await z(i,e,n?.markdown?.partialsFolders,r),l=N(d);return A(e,l)}},processContent:async(e,r)=>{await W("build.plugin.markdown",async i=>{const{markdown:n}=await r.getConfig();i?.setAttribute("config",JSON.stringify(n||{}));const d=n?.partialsFolders??[],l=e.createTemplate("markdown","@redocly/theme/core/templates/Markdown"),S=e.registerServerPropsGetter("markdown",w("./get-server-props.js"));e.createTemplate("error",w("../../../client/app/Error/ErrorDetails.js"));for(const o of
|
|
1
|
+
import u from"path";import{REDOCLY_TEAMS_RBAC as F}from"@redocly/config";import{MARKDOC_PARTIALS_DATA_KEY as D}from"../../store.js";import{reporter as R}from"../../tools/notifiers/reporter.js";import{extractMdFirstHeading as b,getAst as A}from"./compiler.js";import{getTemplatePath as w}from"./get-template-path.js";import{prepareMarkdocPartials as C}from"./markdoc/partials.js";import{searchResolver as M}from"./search/search-resolver.js";import{markdownStaticDataLoader as T}from"./markdown-static-data-loader.js";import{makeErrorRoute as E}from"../error-route.js";import{validateRbacConfig as I}from"../validate-rbac-config.js";import{findFrontmatterSlugs as O,getSidebarSharedDataId as _,resolveFrontmatterSlugs as G}from"../utils.js";import{isPartial as L}from"./is-partial.js";import{markdownFrontmatterLoader as j}from"./markdown-frontmatter-loader.js";import{resolveRawPartials as z}from"./markdoc/resolve-raw-partials.js";import{getAiDocumentsStore as B}from"./search/get-ai-search-documents.js";import{registerPageProps as K}from"../register-page-props.js";import{sanitizeMalformedMdContent as N}from"./utils/sanitize-malformed-md-content.js";import{telemetryTraceStep as W}from"../../../cli/telemetry/helpers/trace-step.js";async function nt(h){return{id:"markdoc",requiredEntitlements:["markdown"],loaders:{"markdown-frontmatter":j,"markdown-ast":async(e,r)=>{const i=await r.fs.read(e),n=await r.getConfig(),d=await z(i,e,n?.markdown?.partialsFolders,r),l=N(d);return A(e,l)}},processContent:async(e,r)=>{await W("build.plugin.markdown",async i=>{const{markdown:n}=await r.getConfig();i?.setAttribute("config",JSON.stringify(n||{}));const d=n?.partialsFolders??[],l=e.createTemplate("markdown","@redocly/theme/core/templates/Markdown"),S=e.registerServerPropsGetter("markdown",w("./get-server-props.js"));e.createTemplate("error",w("../../../client/app/Error/ErrorDetails.js"));for(const o of r.fs.scan(/\.md$/))if(!await r.isPathIgnored(o.relativePath)&&!L(o.relativePath,d))try{await k(o)}catch(a){e.addRoute(E(o.relativePath,a)),i?.error(a),await R.panicOnBuild("Failed to create route for markdown file: %s",a.message)}async function k(o){const{relativePath:a,realRelativePath:P}=o,{data:{frontmatter:t}}=await r.cache.load(a,"markdown-frontmatter"),v=t?.metadata||{},y=await O(a,"markdown-frontmatter",t,r),c=G(y,a);let f=null;t?.sidebar&&(f=await _(t.sidebar,a,r.fs));let g=l;if(t?.template){const p=t.template.startsWith("./")||t.template.startsWith("../");let m=t.template;if(p){const s=u.posix.dirname(P);m=u.resolve(h.contentDir,s,t.template)}g=e.createTemplate(t.template,m)}t?.rbac&&I({content:{[a]:t.rbac}}),await K(o,r.fs,e),(c.length?c.reverse():[void 0]).forEach(p=>{e.addRoute({excludeFromSearch:t?.excludeFromSearch||!1,slug:p,fsPath:a,templateId:g,sharedData:f?[{id:f,key:"sidebar"}]:void 0,redirectFrom:Object.entries(t.redirects||{}).map(([m,{type:s}])=>({type:s||301,from:m})),[F]:t?.rbac,getNavText:async()=>(t?.seo?.title||await b(a,r)||"").toString(),metadata:{type:"markdown",...v},async getStaticData(m,s){return T(o,m,r,t,s)},getSearchDocuments:M(t,a,e.getSearchFacets,e.setSearchFacets),getAiDocumentsStore:B(e.getSearchFacets,t),serverPropsGetterIds:[S]})})}})},afterRoutesCreated:async(e,r)=>{const i=await C(r,e);e.setGlobalConfig({[D]:i})}}}export{nt as markdownPlugin};
|
|
@@ -2,4 +2,6 @@ export * from './definition-path.js';
|
|
|
2
2
|
export * from './parsed-yaml.js';
|
|
3
3
|
export * from './raw-content.js';
|
|
4
4
|
export * from './json-schema-ref.js';
|
|
5
|
+
export * from './json-example-ref.js';
|
|
6
|
+
export * from './sample-from-json-schema.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./definition-path.js";export*from"./parsed-yaml.js";export*from"./raw-content.js";export*from"./json-schema-ref.js";
|
|
1
|
+
export*from"./definition-path.js";export*from"./parsed-yaml.js";export*from"./raw-content.js";export*from"./json-schema-ref.js";export*from"./json-example-ref.js";export*from"./sample-from-json-schema.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CustomAttributeTypeInterface, ValidationError } from '@markdoc/markdoc';
|
|
2
|
+
export declare class JsonExampleRef implements CustomAttributeTypeInterface {
|
|
3
|
+
validate(_value: string): ValidationError[];
|
|
4
|
+
static resolver: string;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=json-example-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
class l{validate(a){return[]}static resolver="jsonExampleRef"}export{l as JsonExampleRef};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CustomAttributeTypeInterface, ValidationError } from '@markdoc/markdoc';
|
|
2
|
+
export declare class SampleFromJsonSchema implements CustomAttributeTypeInterface {
|
|
3
|
+
validate(_value: string): ValidationError[];
|
|
4
|
+
static resolver: string;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=sample-from-json-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
class r{validate(a){return[]}static resolver="sampleFromJsonSchema"}export{r as SampleFromJsonSchema};
|