@redocly/realm 0.133.0-next.6 → 0.134.0-next.0

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +129 -28
  2. package/dist/client/app/hooks/useBanner.js +1 -1
  3. package/dist/client/app/hooks/utils/match-banner-target.d.ts +7 -1
  4. package/dist/client/app/hooks/utils/match-banner-target.js +1 -1
  5. package/dist/client/app/markdoc/custom-components/openapi/json-schema.js +1 -1
  6. package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
  7. package/dist/constants/l10n/langs/ar.js +1 -1
  8. package/dist/constants/l10n/langs/de.js +1 -1
  9. package/dist/constants/l10n/langs/en.js +1 -1
  10. package/dist/constants/l10n/langs/es.js +1 -1
  11. package/dist/constants/l10n/langs/fr.js +1 -1
  12. package/dist/constants/l10n/langs/hi.js +1 -1
  13. package/dist/constants/l10n/langs/it.js +1 -1
  14. package/dist/constants/l10n/langs/ja.js +1 -1
  15. package/dist/constants/l10n/langs/ko.js +1 -1
  16. package/dist/constants/l10n/langs/pl.js +1 -1
  17. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  18. package/dist/constants/l10n/langs/pt.js +1 -1
  19. package/dist/constants/l10n/langs/ru.js +1 -1
  20. package/dist/constants/l10n/langs/uk.js +1 -1
  21. package/dist/constants/l10n/langs/zh.js +1 -1
  22. package/dist/server/api-routes/execute-api-route.js +1 -1
  23. package/dist/server/plugins/api-functions/index.js +1 -1
  24. package/dist/server/plugins/asyncapi-docs/get-server-props.js +1 -1
  25. package/dist/server/plugins/catalog-entities/database/catalog-entities-publisher.d.ts +2 -2
  26. package/dist/server/plugins/catalog-entities/database/catalog-entities-publisher.js +6 -6
  27. package/dist/server/plugins/catalog-entities/database/remote-publish-lock-service.d.ts +22 -0
  28. package/dist/server/plugins/catalog-entities/database/remote-publish-lock-service.js +1 -0
  29. package/dist/server/plugins/catalog-entities/database/types.d.ts +1 -0
  30. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  31. package/dist/server/plugins/markdown/markdown-frontmatter-loader.js +1 -1
  32. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  33. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  34. package/dist/server/plugins/mcp/types.d.ts +1 -0
  35. package/dist/server/plugins/openapi-docs/get-server-props.js +1 -1
  36. package/dist/server/utils/rbac.js +1 -1
  37. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,106 @@
1
1
  # @redocly/realm
2
2
 
3
+ ## 0.134.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - e718f5e7020: Updated styles for the `cards` Markdoc tag.
8
+ - 5d34ebf32e7: Added `Implemented by` section to interface types in `graphql-docs` to display implementing types.
9
+
10
+ ### Patch Changes
11
+
12
+ - 9128ceb60a4: Fixed an issue where links inside schema descriptions rendered by the `json-schema` Markdoc tag did not include the project path prefix.
13
+ - 3745b0efc61: Fixed an issue where the search dialog closed on window resize.
14
+ - a71b13d4a7b: Added configuration options to control time-specific banner visibility.
15
+ - feff7549f14: Fixed an issue where front matter errors would falsely appear resolved after any edits to the file.
16
+ - 1aef2da3a89: Enter prerelease mode.
17
+ - be0e05cb14e: Fixed an issue where webhooks remained visible when all endpoints were hidden by `x-rbac` access control.
18
+ - d8df7b3ca37: Improved OpenAPI and AsyncAPI page rendering performance for projects with many Markdoc partials.
19
+ - ee9b6a26d8f: Improved error handling for API function files that do not export a default function.
20
+ - 4d8d5cd53db: Fixed an issue where embedded Replay (`replay-openapi` Markdoc tag) could crash when using the mock server.
21
+ - Updated dependencies [3745b0efc61]
22
+ - Updated dependencies [1aef2da3a89]
23
+ - Updated dependencies [106eaf2baa5]
24
+ - Updated dependencies [e718f5e7020]
25
+ - Updated dependencies [5d34ebf32e7]
26
+ - Updated dependencies [d8df7b3ca37]
27
+ - Updated dependencies [4d8d5cd53db]
28
+ - @redocly/theme@0.66.0-next.0
29
+ - @redocly/portal-plugin-mock-server@0.19.0-next.0
30
+ - @redocly/realm-asyncapi-sdk@0.12.0-next.0
31
+ - @redocly/portal-legacy-ui@0.17.0-next.0
32
+ - @redocly/asyncapi-docs@1.11.0-next.0
33
+ - @redocly/graphql-docs@1.11.0-next.0
34
+ - @redocly/openapi-docs@3.22.0-next.0
35
+
36
+ ## 0.133.0
37
+
38
+ ### Minor Changes
39
+
40
+ - 0f097a8536: Added multi-version API support for Docs MCP tools.
41
+ - e2b2f2e27f: Improved visibility and accessibility of Markdown links by adding an underline.
42
+ - 76cad3a2f3: Updated styles for page navigation buttons.
43
+ - b5906fb936: Updated the icon displayed alongside hyperlinks in the project.
44
+ - 0858f54ae5: Added Client ID Metadata Document (CIMD) support to the MCP OAuth flow.
45
+ - f2f525c850: Added support for callback URLs in `developerOnboarding`.
46
+ - 7e407eeb7c: Added `hreflang` alternate links for translated pages.
47
+ - 7e407eeb7c: Improved language picker accessibility by converting menu options to links.
48
+
49
+ ### Patch Changes
50
+
51
+ - e271a42c40: Prevented search engines from indexing Markdown pages generated by the `llms.txt` feature.
52
+ - ba76c06785: Fixed unauthenticated callback execution in the MCP docs server.
53
+ - 3367a23fae: Fixed an issue in OpenAPI docs route resolution where lines not tied to an operation generated incorrect URLs by duplicating the base slug.
54
+ - e13c79eb30: Fixed an issue where searching in projects without searchable content caused a server error.
55
+ - 36c67eafc2: Fixed rendering of non-Latin characters by enforcing UTF-8 encoding.
56
+ - f7725b9cc7: Fixed an issue where login and logout redirects caused 404 and URI mismatch errors in projects with path prefix.
57
+ - eeb767e9b4: Fixed an issue where preview login redirects failed when the branch hostname contained double hyphens.
58
+ - 49d39a0486: Fixed 404 error when opening login from locale-prefixed URLs.
59
+ - fac8607a7b: Fixed an issue where closing the search dialog modal locked page scrolling.
60
+ - 7cd2d9f19e: Fixed an issue in Realm Markdown image handling where inline `data:` image URLs were incorrectly treated as broken local routes.
61
+ - 84838a59f0: Excluded buttons and links from heading content to improve accessibility.
62
+ - 4d93e20695: Fixed an issue where MCP connect actions were hidden for OpenAPI pages excluded from search (`openapi.excludeFromSearch`).
63
+ - 86ded9afea: Fixed API function responses with status `204` to prevent errors when calling JSON or text helpers.
64
+ - c9c36d6ac3: Fixed curation in Typesense search.
65
+ - 7447d30745: Fixed security vulnerabilities `CVE-2026-44455`, `CVE-2026-44456`, `CVE-2026-44457`, `CVE-2026-44458` and `CVE-2026-44459` by upgrading `hono` to version `4.12.18`.
66
+ - a1bb760b29: Fixed an issue where the tooltips in API docs and Replay might partially render outside the viewport.
67
+ - c768a98d39: Fixed an issue where operation-level `x-rbac` rules removed the OpenAPI definition link from `llms.txt`.
68
+ - d3c1f3870c: Fixed an issue where API functions failed to hot-reload after files were added in Reunite's Webview or local preview.
69
+ - ba76c06785: Fixed an issue where MCP auth URLs were displayed after MCP docs had been disabled.
70
+ - 46f103f0c4: Updated `@redocly/openapi-core` to version `2.30.5`.
71
+ - 9f60402b86: Fixed an issue where navigating on a code walkthrough page prevented automatic scrolling to the active step.
72
+ - 49d39a0486: Fixed an issue where the login page didn't respect language preferences selected by the user.
73
+ - Updated dependencies [e2b2f2e27f]
74
+ - Updated dependencies [76cad3a2f3]
75
+ - Updated dependencies [3367a23fae]
76
+ - Updated dependencies [b5906fb936]
77
+ - Updated dependencies [36c67eafc2]
78
+ - Updated dependencies [f2f525c850]
79
+ - Updated dependencies [49d39a0486]
80
+ - Updated dependencies [f2a18386e5]
81
+ - Updated dependencies [7e407eeb7c]
82
+ - Updated dependencies [fac8607a7b]
83
+ - Updated dependencies [5e5d990eac]
84
+ - Updated dependencies [84838a59f0]
85
+ - Updated dependencies [4d93e20695]
86
+ - Updated dependencies [7e407eeb7c]
87
+ - Updated dependencies [a1bb760b29]
88
+ - Updated dependencies [ab8c509bb9]
89
+ - Updated dependencies [e5a4a33708]
90
+ - Updated dependencies [4a857b489d]
91
+ - Updated dependencies [46f103f0c4]
92
+ - Updated dependencies [59198fb803]
93
+ - Updated dependencies [9f60402b86]
94
+ - Updated dependencies [4002f20f63]
95
+ - Updated dependencies [62ea0748ec]
96
+ - @redocly/theme@0.65.0
97
+ - @redocly/openapi-docs@3.21.0
98
+ - @redocly/asyncapi-docs@1.10.0
99
+ - @redocly/graphql-docs@1.10.0
100
+ - @redocly/realm-asyncapi-sdk@0.11.0
101
+ - @redocly/portal-plugin-mock-server@0.18.0
102
+ - @redocly/portal-legacy-ui@0.16.0
103
+
3
104
  ## 0.133.0-next.6
4
105
 
5
106
  ### Patch Changes
@@ -201,7 +302,7 @@
201
302
  - e88064ce2d: Added support for Excalidraw and PlantUML diagrams.
202
303
  Improved dark mode for Mermaid diagrams.
203
304
  - ae3272861b: Added support for `x-badges` in OpenAPI and AsyncAPI parameters and schema properties.
204
- Badges can now be rendered before and after field names.
305
+ Badges can be rendered before and after field names.
205
306
  - ce5a165177: Added support for `or` functions in RBAC conditions within Markdoc content.
206
307
 
207
308
  ### Patch Changes
@@ -423,7 +524,7 @@
423
524
  - 60b9b77bc39: Fixed a bug that caused search result highlighting to break in Flexsearch when the query contained duplicate words.
424
525
  - f1edba375c0: Updated translate memoization to depend on the active language, ensuring hooks recompute and translations update on language switch.
425
526
  - ae3272861b4: Added support for `x-badges` in OpenAPI and AsyncAPI parameters and schema properties.
426
- Badges can now be rendered before and after field names.
527
+ Badges can be rendered before and after field names.
427
528
  - 87a97521127: Fixed an issue where `partial` Markdoc tags in OpenAPI and AsyncAPI `description` fields did not resolve when path separators differed.
428
529
  - Updated dependencies [4003b73d9ca]
429
530
  - Updated dependencies [ae3272861b4]
@@ -518,14 +619,14 @@
518
619
  - f7b6c52055: Improved appearance and deep linking for the `tabs` Markdoc tag.
519
620
  - d0b99c0768: Fixed URL fragment duplication when opening docs for endpoints with path parameters (e.g. `/foo/{id}/bar`).
520
621
  - 2d305eec36: Fixed the built-in CORS proxy failing with "fetch failed" for certain URLs.
521
- Now the browser's `accept-encoding` header isn't forwarded and the error message surfaces the underlying cause.
622
+ The browser's `accept-encoding` header isn't forwarded and the error message surfaces the underlying cause.
522
623
  - 1eb287db9f: Fixed code sample generation when path parameter examples contain integer values.
523
624
  - 807547ecbd: Improved build memory usage for large projects.
524
625
  - 7276b4e5d6: Fixed an issue in AI Search where clearing the product tag would still include the product in the search request.
525
626
  - a9a1ee0fe1: Fixed an issue where page actions remained visible even though `search` was disabled.
526
627
  - 9b9b43a1b4: Improved the accessibility of AsyncAPI docs.
527
628
  - 1cc1909566: Fixed an issue where optional properties of API operations were inconsistently displayed between API docs and Replay.
528
- The optional properties are now respect the configuration in `redocly.yaml`.
629
+ The optional properties respect the configuration in `redocly.yaml`.
529
630
  - 130c111688: Fixed security vulnerability `CVE-2026-26996` by upgrading `minimatch` to version `10.2.1`.
530
631
  - 7e3400d4a8: Fixed page actions overlapping the navbar.
531
632
  - d264713872: Fixed an issue where `rbac` configuration ignored versioned content folder paths with leading slashes.
@@ -589,7 +690,7 @@
589
690
  ### Patch Changes
590
691
 
591
692
  - 2d305eec36a: Fixed the built-in CORS proxy failing with "fetch failed" for certain URLs.
592
- Now the browser's `accept-encoding` header isn't forwarded and the error message surfaces the underlying cause.
693
+ The browser's `accept-encoding` header isn't forwarded and the error message surfaces the underlying cause.
593
694
 
594
695
  ## 0.131.0-next.13
595
696
 
@@ -619,7 +720,7 @@
619
720
  - 43955ab32fd: Improved the accessibility of OpenAPI and GraphQL docs.
620
721
  - 7276b4e5d63: Fixed an issue in AI Search where clearing the product tag would still include the product in the search request.
621
722
  - 1cc1909566f: Fixed an issue where optional properties of API operations were inconsistently displayed between API docs and Replay.
622
- The optional properties are now displayed or hidden according to configuration in `redocly.yaml`.
723
+ The optional properties are displayed or hidden according to configuration in `redocly.yaml`.
623
724
  - d59b5669cea: Updated `@redocly/openapi-core` to version `2.20.4`.
624
725
  - Updated dependencies [43955ab32fd]
625
726
  - Updated dependencies [7276b4e5d63]
@@ -876,7 +977,7 @@
876
977
  - ac12b3523a: Added an interactive lightbox viewer for Mermaid diagrams with zoom, pan, and keyboard navigation.
877
978
  - 85818157d8: Added bundling support for OpenAPI 3.2 `components/mediaTypes` references used in request and response content.
878
979
  - 1ff6da217d: Added support for branch-specific configuration in `redocly.yaml`.
879
- - 12fd642835: Transitioned AI Search to agent mode, now featuring expanded search capabilities and direct integration with the Docs MCP.
980
+ - 12fd642835: Transitioned AI Search to agent mode, featuring expanded search capabilities and direct integration with the Docs MCP.
880
981
  - ec292cdaaa: Made the **403 Forbidden** error page layout ejectable and improved its styling.
881
982
  - f117f86b3b: Added `login-button` Markdoc tag to render a login button on project pages.
882
983
  - 053051e82f: Added `rbac` support for banners to allow conditional visibility based on user team membership.
@@ -944,7 +1045,7 @@
944
1045
 
945
1046
  ### Minor Changes
946
1047
 
947
- - 12fd642835: Transitioned AI Search to agent mode, now featuring expanded search capabilities and direct integration with the Docs MCP.
1048
+ - 12fd642835: Transitioned AI Search to agent mode, featuring expanded search capabilities and direct integration with the Docs MCP.
948
1049
  - 053051e82f: Added `rbac` support for banners to allow conditional visibility based on user team membership.
949
1050
 
950
1051
  ### Patch Changes
@@ -3921,25 +4022,25 @@
3921
4022
  - 86f7780631: Added AI conversations UI with follow up questions.
3922
4023
  Added configurable suggestions to AI search.
3923
4024
  - ec9eff8ad9: Added support for partial loading of items included in large OpenAPI descriptions to improve performance.
3924
- Now, if a `tag` has more than 15 operations, the items are loaded quicker.
4025
+ If a `tag` has more than 15 operations, the items are loaded quicker.
3925
4026
 
3926
4027
  ### Patch Changes
3927
4028
 
3928
4029
  - 470c8696d4: Fixed an issue with links inside Markdown files, where links to OpenAPI documents were not resolved properly.
3929
4030
  - 27ac3236e5: Fixed an issue that caused launching with the `redocly preview` command to fail if you installed dependencies using `yarn`.
3930
4031
  - 99358a34e5: Resolved an issue where switching to a product opened a non-priority page instead of an index page.
3931
- Now, if a product has an index page, it is displayed first.
4032
+ If a product has an index page, it is displayed first.
3932
4033
  - 0cbb078d72: Updated version of the `@redocly/openapi-core` dependency to `1.31.1`.
3933
4034
  - 9e76b1f148: Updated version of the `@markdoc/markdoc` from `0.4.0` to `0.5.1`
3934
4035
  - 34a049d3d0: Fixed an issue where Markdown pages with `frontmatter.slug` directed users to a 404 error page when selected in a different language locale.
3935
4036
  - 03608f2a01: Fixed AI search error handling for Unauthorized and Forbidden errors.
3936
4037
  - a85ddf0b86: Resolved an issue with AI search resource styles being overridden by custom styles for `<Tag>` component.
3937
- - 6b9933d961: Fixed script handling in single page application (SPA) mode. Inline scripts are now executed on navigation.
4038
+ - 6b9933d961: Fixed script handling in single page application (SPA) mode. Inline scripts are executed on navigation.
3938
4039
  - c34c0da390: Fixed an issue where in development mode updates to `redocly.yaml` config were processed much longer than updates to other files.
3939
4040
  - 463b9fb93e: Fixed an issue where the `navigation.nextButton.text` and `navigation.previousButton.text` config properties did not change the text of the navigation buttons.
3940
4041
  - 7e80929731: Fixed an issue where the SEO `meta` tags were not updated during navigation between pages.
3941
4042
  - b74163612d: Resolved an issue where active operation items were incorrectly rendered on the server side.
3942
- - 074dc10262: Improved the check for the `Complex` badge in `openapi-docs`. The badge now appears only when the nesting of `allOf` exceeds 5 levels.
4043
+ - 074dc10262: Improved the check for the `Complex` badge in `openapi-docs`. The badge appears only when the nesting of `allOf` exceeds 5 levels.
3943
4044
  - bcb712fe03: Resolved an issue where the discriminator did not update the property type.
3944
4045
  - 328b992074: Resolved an issue where an additional slash was incorrectly added to the URL in code samples when using server variables.
3945
4046
 
@@ -4010,9 +4111,9 @@
4010
4111
  ### Patch Changes
4011
4112
 
4012
4113
  - 99358a34e5: Resolved an issue where switching to a product opened a non-priority page instead of an index page.
4013
- Now, if a product has an index page, it is displayed first.
4114
+ If a product has an index page, it is displayed first.
4014
4115
  - 34a049d3d0: Fixed an issue where Markdown pages with `frontmatter.slug` directed users to a 404 error page when selected in a different language locale.
4015
- - 6b9933d961: Fixed script handling in single page application (SPA) mode. Inline scripts are now executed on navigation.
4116
+ - 6b9933d961: Fixed script handling in single page application (SPA) mode. Inline scripts are executed on navigation.
4016
4117
  - Updated dependencies [bcb712fe03]
4017
4118
  - Updated dependencies [ec9eff8ad9]
4018
4119
  - @redocly/openapi-docs@3.7.0-next.2
@@ -4116,7 +4217,7 @@
4116
4217
  ### Minor Changes
4117
4218
 
4118
4219
  - bc13399880: Enhanced development mode error handling showing compilation errors instead of `Internal Server Error` page.
4119
- CSS errors now display in an a toast message.
4220
+ CSS errors display in an a toast message.
4120
4221
  Pages automatically rebuild after fixing errors without server restart.
4121
4222
 
4122
4223
  ## 0.115.1
@@ -4215,8 +4316,8 @@
4215
4316
  ### Patch Changes
4216
4317
 
4217
4318
  - a058d3103e: Improved the OpenAPI definition bundling error message by including the path to the file, making it easier to identify the location of the error.
4218
- - f08b1cfdd2: Headers are now excluded from page data for anonymous users to prevent potential cache deception attacks.
4219
- - 7a285f0828: Improved AI search dialog: now links opening in new tabs, the search button is always enabled, and the search field label is updated.
4319
+ - f08b1cfdd2: Headers are excluded from page data for anonymous users to prevent potential cache deception attacks.
4320
+ - 7a285f0828: Improved AI search dialog: links opening in new tabs, the search button is always enabled, and the search field label is updated.
4220
4321
  - 44110c4c7c: Changed the text color in the total page counter to improve readability in light mode.
4221
4322
  - 698f536b5c: Updated version of the `@redocly/openapi-core` dependency to `1.26.1`.
4222
4323
  - Updated dependencies [44110c4c7c]
@@ -4289,7 +4390,7 @@
4289
4390
  ### Patch Changes
4290
4391
 
4291
4392
  - 5ffc1db4e8: Updated version of the `@redocly/openapi-core` dependency to `1.26.0`.
4292
- - 001406d157: Improved error handling in the project: project pages that display an error message are now automatically refreshed after the user resolves the error in the editor.
4393
+ - 001406d157: Improved error handling in the project: project pages that display an error message are automatically refreshed after the user resolves the error in the editor.
4293
4394
  This occurs both for Reunite and local projects.
4294
4395
  - Updated dependencies [5ffc1db4e8]
4295
4396
  - Updated dependencies [b6b91308d6]
@@ -4483,7 +4584,7 @@
4483
4584
 
4484
4585
  ### Patch Changes
4485
4586
 
4486
- - ae03d1fc71: Improved the `output` property for `apis` configuration. The property now works as a reference from `openapi` Markdoc tags.
4587
+ - ae03d1fc71: Improved the `output` property for `apis` configuration. The property works as a reference from `openapi` Markdoc tags.
4487
4588
  - be7d2e6286: Fixed an issue where if you set `REDOCLY_PREFIX_PATHS` in the environment variables for a project, the Reunite Webview would stop updating based on the page selected in the editor.
4488
4589
  - Updated dependencies [9574a87b33]
4489
4590
  - Updated dependencies [47065856c6]
@@ -4676,7 +4777,7 @@
4676
4777
 
4677
4778
  ### Patch Changes
4678
4779
 
4679
- - 5e5916b415: Resolved an issue that caused the page to crash when using the OpenAPI Code Sample Markdoc tags if the `descriptionFile` value was an incorrect path. Now if the path is invalid, users are presented with an error directing them to correct it.
4780
+ - 5e5916b415: Resolved an issue that caused the page to crash when using the OpenAPI Code Sample Markdoc tags if the `descriptionFile` value was an incorrect path. If the path is invalid, users are presented with an error directing them to correct it.
4680
4781
 
4681
4782
  ## 0.104.3
4682
4783
 
@@ -5010,8 +5111,8 @@
5010
5111
 
5011
5112
  ### Minor Changes
5012
5113
 
5013
- - 176b280257: Deprecated the `theme.imports` property. Themes and plugins must now be enabled through the `plugins` configuration property. Using the `theme.imports` does not fail the build for now, but produces warnings in the build log.
5014
- - 7e71bf855b: Deprecated the `theme` property of `redocly.yaml` config. All of the configuration properties under `theme` now reside in the root of the config.
5114
+ - 176b280257: Deprecated the `theme.imports` property. Themes and plugins must be enabled through the `plugins` configuration property. Using the `theme.imports` does not fail the build, but produces warnings in the build log.
5115
+ - 7e71bf855b: Deprecated the `theme` property of `redocly.yaml` config. All of the configuration properties under `theme` reside in the root of the config.
5015
5116
 
5016
5117
  ### Patch Changes
5017
5118
 
@@ -5109,13 +5210,13 @@
5109
5210
 
5110
5211
  ### Patch Changes
5111
5212
 
5112
- - ed391e8607: Resolved an issue with audience verification. Users without access permissions to the project are now redirected to the sign up page.
5213
+ - ed391e8607: Resolved an issue with audience verification. Users without access permissions to the project are redirected to the sign up page.
5113
5214
 
5114
5215
  ## 0.92.2
5115
5216
 
5116
5217
  ### Patch Changes
5117
5218
 
5118
- - 8b3aa69af2: Each error in the `redocly.yaml` file is now reported separately. Previously, all validation errors from `redocly.yaml` were bundled and reported as one error.
5219
+ - 8b3aa69af2: Each error in the `redocly.yaml` file is reported separately. Previously, all validation errors from `redocly.yaml` were bundled and reported as one error.
5119
5220
  - Updated dependencies [ac665b40f7]
5120
5221
  - Updated dependencies [a0e2645687]
5121
5222
  - Updated dependencies [c848158ee4]
@@ -5133,7 +5234,7 @@
5133
5234
 
5134
5235
  ### Minor Changes
5135
5236
 
5136
- - 2ad34ae141: **IMPORTANT**: Markdoc errors will now fail a production build.\
5237
+ - 2ad34ae141: **IMPORTANT**: Markdoc errors fail production builds.\
5137
5238
  To make Realm ignore Markdoc errors during production builds, set the `reunite.ignoreMarkdocErrors` property in `redocly.yaml` to `true`.
5138
5239
 
5139
5240
  ### Patch Changes
@@ -5201,7 +5302,7 @@
5201
5302
 
5202
5303
  ### Patch Changes
5203
5304
 
5204
- - 9f25cc7efb: References to partials `@i18n` folder using absolute links must now start with `/@i18n`. Previously, this part was omitted and the path would start from the locale directory name.
5305
+ - 9f25cc7efb: References to partials `@i18n` folder using absolute links must start with `/@i18n`. Previously, this part was omitted and the path would start from the locale directory name.
5205
5306
 
5206
5307
  ## 0.90.0
5207
5308
 
@@ -5256,7 +5357,7 @@
5256
5357
 
5257
5358
  - 0fdd7f22f9: Changed the order of moods in the mood feedback type to "from negative to positive".
5258
5359
  - 67100a3e83: fix(project): Adjusted cache headers to prevent browser caching to ensure users always receive the latest version of the content.
5259
- - fde6bd8184: Improved the default behavior for versioned items in sidebars. When items from different versioned folders are available, the sidebar now prefers and displays items with the same version as the currently active page.
5360
+ - fde6bd8184: Improved the default behavior for versioned items in sidebars. When items from different versioned folders are available, the sidebar prefers and displays items with the same version as the currently active page.
5260
5361
  - Updated dependencies [0fdd7f22f9]
5261
5362
  - Updated dependencies [1b6abdc7af]
5262
5363
  - @redocly/theme@0.38.2
@@ -5316,7 +5417,7 @@
5316
5417
  ### Patch Changes
5317
5418
 
5318
5419
  - e50e90b554: Fixed an issue when versioned content had a separate sidebars.yaml defined for each version, the navbar groups and separators were displayed for all versions of the content.
5319
- Now the navbar groups and separators are displayed only for the corresponding version chosen in the version picker.
5420
+ The navbar groups and separators are displayed only for the corresponding version chosen in the version picker.
5320
5421
 
5321
5422
  ## 0.88.2
5322
5423
 
@@ -1 +1 @@
1
- import{useMemo as f,useState as u}from"react";import{useLocation as d}from"react-router-dom";import{useThemeConfig as p}from"@redocly/theme/core/hooks";import{usePageData as g}from"../../providers/page-data/hooks";import{getBannerForSlug as S}from"./utils/match-banner-target.js";const i="redocly-dismissed-banners";function y(){if(typeof window>"u")return new Set;const r=localStorage.getItem(i);if(r){const s=JSON.parse(r);if(Array.isArray(s))return new Set(s)}return new Set}function x(){const{banner:r}=p()||{},o=g()?.props?.frontmatter?.banner,m=d(),[n,c]=u(y()),a=m.pathname;return{banner:f(()=>{const t=(Array.isArray(o)?o:[]).find(e=>!n.has(e.hash));if(t)return t;if(!(!r||!Array.isArray(r)||r.length===0))return S(r,a,n)},[r,o,a,n]),dismissBanner:t=>{const e=new Set(n);e.add(t),c(e),localStorage.setItem(i,JSON.stringify(Array.from(e)))}}}export{i as STORAGE_KEY,y as getDismissedBannersFromStorage,x as useBanner};
1
+ import{useEffect as S,useMemo as c,useState as f}from"react";import{useLocation as A}from"react-router-dom";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{usePageData as B}from"../../providers/page-data/hooks";import{getBannerForSlug as D,getNextBannerTransition as T,isBannerWithinTimeRange as h}from"./utils/match-banner-target.js";const u="redocly-dismissed-banners",x=2**31-1;function E(){if(typeof window>"u")return new Set;const n=localStorage.getItem(u);if(n){const a=JSON.parse(n);if(Array.isArray(a))return new Set(a)}return new Set}function C(){const{banner:n}=w()||{},t=B()?.props?.frontmatter?.banner,d=A(),[o,g]=f(E()),[s,p]=f(()=>Date.now()),i=d.pathname,m=c(()=>{const r=Array.isArray(n)?n:[],e=Array.isArray(t)?t:[];return[...r,...e]},[n,t]);return S(()=>{const r=T(m,s);if(r===void 0)return;const e=r-Date.now(),y=Math.min(Math.max(0,e),x),l=setTimeout(()=>p(Date.now()),y);return()=>clearTimeout(l)},[m,s]),{banner:c(()=>{const r=(Array.isArray(t)?t:[]).find(e=>!o.has(e.hash)&&h(e,s));if(r)return r;if(!(!n||!Array.isArray(n)||n.length===0))return D(n,i,o,s)},[n,t,i,o,s]),dismissBanner:r=>{const e=new Set(o);e.add(r),g(e),localStorage.setItem(u,JSON.stringify(Array.from(e)))}}}export{u as STORAGE_KEY,E as getDismissedBannersFromStorage,C as useBanner};
@@ -21,6 +21,12 @@ export declare function getTargetSpecificity(target: string | undefined): Specif
21
21
  * specific, negative if `right` is, and 0 when equal.
22
22
  */
23
23
  export declare function compareSpecificity(left: Specificity, right: Specificity): number;
24
+ export declare function isBannerWithinTimeRange(banner: Pick<ResolvedBannerConfig, 'startAt' | 'endAt'>, now?: number): boolean;
25
+ /**
26
+ * Returns the soonest banner visibility transition strictly after `now`,
27
+ * considering every `startAt` and `endAt` across `banners`.
28
+ */
29
+ export declare function getNextBannerTransition(banners: Pick<ResolvedBannerConfig, 'startAt' | 'endAt'>[], now?: number): number | undefined;
24
30
  /**
25
31
  * Checks if a slug matches a target pattern
26
32
  */
@@ -28,5 +34,5 @@ export declare function matchesBannerTarget(slug: string, target: string | undef
28
34
  /**
29
35
  * Returns the most specific matching banner for a slug.
30
36
  */
31
- export declare function getBannerForSlug(banners: ResolvedBannerConfig[], slug: string, dismissedBanners?: Set<string>): ResolvedBannerConfig | undefined;
37
+ export declare function getBannerForSlug(banners: ResolvedBannerConfig[], slug: string, dismissedBanners?: Set<string>, now?: number): ResolvedBannerConfig | undefined;
32
38
  //# sourceMappingURL=match-banner-target.d.ts.map
@@ -1 +1 @@
1
- import f from"picomatch";import{removeTrailingSlash as l}from"../../../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as m}from"../../../../utils/path/normalize-route-slug";const s={};function u(t){const e=t.trim();return e===""||e==="**"||e==="/**"}function h(t){const e=t.trim();if(u(e))return"**";let i=e.toLowerCase();return i.startsWith("/")&&(i=i.slice(1)),i.endsWith("/")&&!i.endsWith("*/")&&(i=i.slice(0,-1)),i}function d(t){return s[t]||(s[t]=f(t,{nocase:!0})),s[t]}const o={CatchAll:0,DoubleWildcard:1,SingleWildcard:2,ExactMatch:3};function S(t){if(!t||u(t))return{tier:o.CatchAll,literalSegments:0};const e=t.trim().split("/").filter(i=>!i.includes("*")&&i.trim()!=="").length;return t.includes("*")?t.includes("**")?{tier:o.DoubleWildcard,literalSegments:e}:{tier:o.SingleWildcard,literalSegments:e}:{tier:o.ExactMatch,literalSegments:e}}function g(t,e){return t.tier!==e.tier?t.tier-e.tier:t.literalSegments-e.literalSegments}function p(t,e){if(!e||u(e))return!0;const i=l(m(t)).toLowerCase(),c=i.startsWith("/")?i.slice(1):i,r=h(e);if(!r.includes("*")){const n=r.startsWith("/")?r.slice(1):r;return c===l(n)}if(r.endsWith("**")){const n=l(r.slice(0,-2));if(c===n)return!0}return d(r)(c)}function C(t,e,i=new Set){if(!t||t.length===0)return;let c,r;for(const n of t){if(i.has(n.hash)||!p(e,n.target))continue;const a=S(n.target);(!r||g(a,r)>0)&&(r=a,c=n)}return c}export{o as SpecificityTier,g as compareSpecificity,C as getBannerForSlug,S as getTargetSpecificity,p as matchesBannerTarget};
1
+ import m from"picomatch";import{removeTrailingSlash as a}from"../../../../utils/url/remove-trailing-slash";import{normalizeRouteSlug as h}from"../../../../utils/path/normalize-route-slug";const l={};function f(t){const e=t.trim();return e===""||e==="**"||e==="/**"}function p(t){const e=t.trim();if(f(e))return"**";let i=e.toLowerCase();return i.startsWith("/")&&(i=i.slice(1)),i.endsWith("/")&&!i.endsWith("*/")&&(i=i.slice(0,-1)),i}function g(t){return l[t]||(l[t]=m(t,{nocase:!0})),l[t]}const s={CatchAll:0,DoubleWildcard:1,SingleWildcard:2,ExactMatch:3};function S(t){if(!t||f(t))return{tier:s.CatchAll,literalSegments:0};const e=t.trim().split("/").filter(i=>!i.includes("*")&&i.trim()!=="").length;return t.includes("*")?t.includes("**")?{tier:s.DoubleWildcard,literalSegments:e}:{tier:s.SingleWildcard,literalSegments:e}:{tier:s.ExactMatch,literalSegments:e}}function W(t,e){return t.tier!==e.tier?t.tier-e.tier:t.literalSegments-e.literalSegments}function u(t){if(!t)return;const e=Date.parse(t);return Number.isNaN(e)?void 0:e}function x(t,e=Date.now()){const i=u(t.startAt);if(i!==void 0&&e<i)return!1;const r=u(t.endAt);return!(r!==void 0&&e>=r)}function w(t,e=Date.now()){return t.flatMap(i=>[u(i.startAt),u(i.endAt)]).filter(i=>i!==void 0&&i>e).sort((i,r)=>i-r)[0]}function T(t,e){if(!e||f(e))return!0;const i=a(h(t)).toLowerCase(),r=i.startsWith("/")?i.slice(1):i,n=p(e);if(!n.includes("*")){const c=n.startsWith("/")?n.slice(1):n;return r===a(c)}if(n.endsWith("**")){const c=a(n.slice(0,-2));if(r===c)return!0}return g(n)(r)}function y(t,e,i=new Set,r=Date.now()){if(!t||t.length===0)return;let n,c;for(const o of t){if(i.has(o.hash)||!x(o,r)||!T(e,o.target))continue;const d=S(o.target);(!c||W(d,c)>0)&&(c=d,n=o)}return n}export{s as SpecificityTier,W as compareSpecificity,y as getBannerForSlug,w as getNextBannerTransition,S as getTargetSpecificity,x as isBannerWithinTimeRange,T as matchesBannerTarget};
@@ -1 +1 @@
1
- import{RedocSchema as c,StoreProvider as p}from"@redocly/openapi-docs";import*as e from"react";import{Admonition as d}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{OpenApiComponentWrap as l}from"../styled.elements";function v(s){const{options:r,schemaResolved:o,schemaResolvedErrors:t,schema:n}=s;if(n||o){const m={openapi:"3.0.0",info:{version:"1",description:"test",title:"test"},paths:{},"x-root":o?.components?.schemas?.__root||n,components:{schemas:{...o?.components?.schemas}}};return e.createElement(l,{"data-testid":"json-schema"},e.createElement(p,{options:r,definition:m},t?.length?e.createElement(d,{name:"Problem in json-schema tag",type:"danger"},t.map((i,a)=>e.createElement("div",{key:a},i))):null,e.createElement(c,{pointer:"#/x-root",disableDeepLinks:!0})))}}export{v as JsonSchema};
1
+ import{RedocSchema as c,StoreProvider as p}from"@redocly/openapi-docs";import*as e from"react";import{Admonition as d}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{MarkdownLink as l}from"@redocly/theme/markdoc/components/MarkdownLink/MarkdownLink";import{link as h}from"../../../../../markdoc/nodes/index.js";import{OpenApiComponentWrap as f}from"../styled.elements";const k={nodes:{link:h},components:{MarkdownLink:l}};function x(r){const{options:m,schemaResolved:o,schemaResolvedErrors:t,schema:n}=r;if(n||o){const s={openapi:"3.0.0",info:{version:"1",description:"test",title:"test"},paths:{},"x-root":o?.components?.schemas?.__root||n,components:{schemas:{...o?.components?.schemas}}};return e.createElement(f,{"data-testid":"json-schema"},e.createElement(p,{options:{...m,markdocOptions:k},definition:s},t?.length?e.createElement(d,{name:"Problem in json-schema tag",type:"danger"},t.map((i,a)=>e.createElement("div",{key:a},i))):null,e.createElement(c,{pointer:"#/x-root",disableDeepLinks:!0})))}}export{x as JsonSchema};
@@ -1 +1 @@
1
- import o from"react";import{EmbeddedReplay as E,StoreProvider as M}from"@redocly/openapi-docs";import{useLocation as b}from"react-router-dom";import{Admonition as k}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{ErrorMessage as A,OpenApiComponentWrap as I}from"../styled.elements.js";import{useStore as P}from"../../hooks/use-store.js";import{getOperation as x}from"./get-operation/index.js";import{getMockServerDocsConfig as R}from"../../../../templates/openapi-docs/mock-server-config.js";const L=y=>{const{descriptionFile:n,operationId:i,pointer:p,exampleKey:d,mimeType:l,requestBody:a,parameters:S,options:m,environment:t,environments:s,hideOtherSecuritySchemes:O}=y,h=b(),{store:e,error:v,baseSlug:u}=P(n),c=o.useMemo(()=>({...e?.options,...m}),[m,e?.options]),f=o.useMemo(()=>{const{mockServer:C,...g}=c;return g},[c]),r=o.useMemo(()=>{if(e)return x(e,{operationId:i,pointer:p},f,{exampleKey:d,mimeType:l,environments:s,environment:t,requestBody:a})},[d,f,l,i,p,e,s,t,a]);return e?r?o.createElement(I,{"data-testid":"replay-openapi"},o.createElement(M,{key:`${h.pathname}-${n}-${i||p}`,options:{...m,disableRouter:!0,routingBasePath:u,mockServer:R(c.mockServer,u)},definition:e.definition,withState:{environments:s,allowedEnvironments:t?[t]:void 0,operation:{pointer:r.pointer,state:{requestValues:{body:a,...S}}}}},o.createElement(E,{activeOperationId:r.operationId||"",fullOpenApi:e.definition,corsProxyUrl:e.options.corsProxyUrl,pointer:r.pointer,hideOtherSecuritySchemes:O}))):o.createElement(k,{type:"danger"},"Cannot find OpenAPI operation by operationId or pointer in ",n):o.createElement(A,null,v)};export{L as ReplayOpenApi};
1
+ import o from"react";import{EmbeddedReplay as M,StoreProvider as b}from"@redocly/openapi-docs";import{useLocation as A}from"react-router-dom";import{Admonition as I}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{ErrorMessage as P,OpenApiComponentWrap as x}from"../styled.elements.js";import{useStore as R}from"../../hooks/use-store.js";import{getOperation as C}from"./get-operation/index.js";import{getMockServerDocsConfig as y}from"../../../../templates/openapi-docs/mock-server-config.js";const L=S=>{const{descriptionFile:i,operationId:p,pointer:m,exampleKey:l,mimeType:u,requestBody:a,parameters:v,options:s,environment:r,environments:c,hideOtherSecuritySchemes:O}=S,h=A(),{store:e,error:g,baseSlug:t}=R(i),d=o.useMemo(()=>({...e?.options,...s}),[s,e?.options]),f=o.useMemo(()=>{const{mockServer:E,...k}=d;return{...k,mockServer:y(E,t??"")}},[d,t]),n=o.useMemo(()=>{if(e)return C(e,{operationId:p,pointer:m},f,{exampleKey:l,mimeType:u,environments:c,environment:r,requestBody:a})},[l,f,u,p,m,e,c,r,a]);return e?n?o.createElement(x,{"data-testid":"replay-openapi"},o.createElement(b,{key:`${h.pathname}-${i}-${p||m}`,options:{...s,disableRouter:!0,routingBasePath:t,mockServer:y(d.mockServer,t)},definition:e.definition,withState:{environments:c,allowedEnvironments:r?[r]:void 0,operation:{pointer:n.pointer,state:{requestValues:{body:a,...v}}}}},o.createElement(M,{activeOperationId:n.operationId||"",fullOpenApi:e.definition,corsProxyUrl:e.options.corsProxyUrl,pointer:n.pointer,hideOtherSecuritySchemes:O}))):o.createElement(I,{type:"danger"},"Cannot find OpenAPI operation by operationId or pointer in ",i):o.createElement(P,null,g)};export{L as ReplayOpenApi};