@redocly/reef 0.139.2 → 0.140.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +221 -199
- package/dist/api-schemas/search-facets.js +1 -1
- package/dist/api-schemas/search.d.ts +1 -0
- package/dist/api-schemas/search.js +1 -1
- package/dist/server/constants/common.d.ts +2 -0
- package/dist/server/constants/common.js +1 -1
- package/dist/server/plugins/api-docs/spec-download.api.js +1 -1
- package/dist/server/plugins/dev-onboarding/api/middlewares/auth.d.ts +2 -4
- package/dist/server/plugins/dev-onboarding/api/middlewares/integrations.d.ts +2 -4
- package/dist/server/plugins/scorecard-classic/index.js +1 -1
- package/dist/server/plugins/scorecard-classic/shared-utils.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/views.js +1 -1
- package/dist/server/plugins/search/engines/typesense/index.js +1 -1
- package/dist/server/utils/decode-request-path.d.ts +2 -0
- package/dist/server/utils/decode-request-path.js +1 -0
- package/dist/server/utils/llmstxt/resolve-llms-txt-md.js +1 -1
- package/dist/server/utils/rbac.js +1 -1
- package/dist/server/web-server/routes/dynamic-route.js +1 -1
- package/dist/server/web-server/routes/feedback.d.ts +2 -8
- package/dist/server/web-server/routes/helpers/process-redirects.js +1 -1
- package/dist/server/web-server/utils.d.ts +1 -3
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @redocly/reef
|
|
2
2
|
|
|
3
|
+
## 0.140.0-next.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c2de4371f03: Fixed an issue where search with the Typesense engine failed or took several seconds on projects with large API operations.
|
|
8
|
+
|
|
9
|
+
## 0.140.0-next.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [0a1aff21460]
|
|
14
|
+
- @redocly/theme@0.72.0-next.0
|
|
15
|
+
- @redocly/api-docs@0.5.0-next.1
|
|
16
|
+
|
|
17
|
+
## 0.140.0-next.0
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- b16218c06df: Fixed security vulnerability `CVE-2026-111757` by upgrading `hono` to version `4.13.13`.
|
|
22
|
+
- Updated dependencies [cc40376e265]
|
|
23
|
+
- @redocly/api-docs@0.5.0-next.0
|
|
24
|
+
|
|
3
25
|
## 0.139.2
|
|
4
26
|
|
|
5
27
|
## 0.139.1
|
|
@@ -2650,29 +2672,6 @@
|
|
|
2650
2672
|
- @redocly/realm-asyncapi-sdk@0.9.0-next.2
|
|
2651
2673
|
- @redocly/theme@0.63.0-next.3
|
|
2652
2674
|
|
|
2653
|
-
## 0.130.4
|
|
2654
|
-
|
|
2655
|
-
### Patch Changes
|
|
2656
|
-
|
|
2657
|
-
- 5b1e533559: Fixed security vulnerability CVE-2026-25128 in fast-xml-parser by upgrading openapi-sampler to version 1.7.0.
|
|
2658
|
-
- Updated dependencies [5b1e533559]
|
|
2659
|
-
- @redocly/portal-plugin-mock-server@0.15.2
|
|
2660
|
-
- @redocly/asyncapi-docs@1.7.2
|
|
2661
|
-
- @redocly/openapi-docs@3.18.2
|
|
2662
|
-
- @redocly/theme@0.62.1
|
|
2663
|
-
- @redocly/graphql-docs@1.7.1
|
|
2664
|
-
|
|
2665
|
-
## 0.130.3
|
|
2666
|
-
|
|
2667
|
-
### Patch Changes
|
|
2668
|
-
|
|
2669
|
-
- 0beb1adad0: Fixed a bug where AI search events were not tracked for project analytics.
|
|
2670
|
-
- Updated dependencies [e7708a15f1]
|
|
2671
|
-
- Updated dependencies [e7708a15f1]
|
|
2672
|
-
- @redocly/portal-plugin-mock-server@0.15.1
|
|
2673
|
-
- @redocly/asyncapi-docs@1.7.1
|
|
2674
|
-
- @redocly/openapi-docs@3.18.1
|
|
2675
|
-
|
|
2676
2675
|
## 0.131.0-next.6
|
|
2677
2676
|
|
|
2678
2677
|
### Patch Changes
|
|
@@ -2725,15 +2724,6 @@
|
|
|
2725
2724
|
- @redocly/graphql-docs@1.8.0-next.2
|
|
2726
2725
|
- @redocly/portal-plugin-mock-server@0.16.0-next.2
|
|
2727
2726
|
|
|
2728
|
-
## 0.130.2
|
|
2729
|
-
|
|
2730
|
-
### Patch Changes
|
|
2731
|
-
|
|
2732
|
-
- 4dfbc3b570: Fixed an issue where Project Analytics would not display any data for specific versions of Realm.
|
|
2733
|
-
- Updated dependencies [4dfbc3b570]
|
|
2734
|
-
- @redocly/realm-asyncapi-sdk@0.8.1
|
|
2735
|
-
- @redocly/theme@0.62.0
|
|
2736
|
-
|
|
2737
2727
|
## 0.131.0-next.3
|
|
2738
2728
|
|
|
2739
2729
|
### Patch Changes
|
|
@@ -2768,12 +2758,6 @@
|
|
|
2768
2758
|
- 713994c780: Fixed an issue where the execution environment wasn't recognized correctly causing build failures.
|
|
2769
2759
|
- 1fa1e85405: Fixed an issue where the login button was not displayed when a default identity provider was configured.
|
|
2770
2760
|
|
|
2771
|
-
## 0.130.1
|
|
2772
|
-
|
|
2773
|
-
### Patch Changes
|
|
2774
|
-
|
|
2775
|
-
- 69f13ea40c: Fixed an issue where the login button was not displayed when a default identity provider was configured.
|
|
2776
|
-
|
|
2777
2761
|
## 0.131.0-next.0
|
|
2778
2762
|
|
|
2779
2763
|
### Minor Changes
|
|
@@ -2800,6 +2784,44 @@
|
|
|
2800
2784
|
- @redocly/graphql-docs@1.8.0-next.0
|
|
2801
2785
|
- @redocly/openapi-docs@3.19.0-next.0
|
|
2802
2786
|
|
|
2787
|
+
## 0.130.4
|
|
2788
|
+
|
|
2789
|
+
### Patch Changes
|
|
2790
|
+
|
|
2791
|
+
- 5b1e533559: Fixed security vulnerability CVE-2026-25128 in fast-xml-parser by upgrading openapi-sampler to version 1.7.0.
|
|
2792
|
+
- Updated dependencies [5b1e533559]
|
|
2793
|
+
- @redocly/portal-plugin-mock-server@0.15.2
|
|
2794
|
+
- @redocly/asyncapi-docs@1.7.2
|
|
2795
|
+
- @redocly/openapi-docs@3.18.2
|
|
2796
|
+
- @redocly/theme@0.62.1
|
|
2797
|
+
- @redocly/graphql-docs@1.7.1
|
|
2798
|
+
|
|
2799
|
+
## 0.130.3
|
|
2800
|
+
|
|
2801
|
+
### Patch Changes
|
|
2802
|
+
|
|
2803
|
+
- 0beb1adad0: Fixed a bug where AI search events were not tracked for project analytics.
|
|
2804
|
+
- Updated dependencies [e7708a15f1]
|
|
2805
|
+
- Updated dependencies [e7708a15f1]
|
|
2806
|
+
- @redocly/portal-plugin-mock-server@0.15.1
|
|
2807
|
+
- @redocly/asyncapi-docs@1.7.1
|
|
2808
|
+
- @redocly/openapi-docs@3.18.1
|
|
2809
|
+
|
|
2810
|
+
## 0.130.2
|
|
2811
|
+
|
|
2812
|
+
### Patch Changes
|
|
2813
|
+
|
|
2814
|
+
- 4dfbc3b570: Fixed an issue where Project Analytics would not display any data for specific versions of Realm.
|
|
2815
|
+
- Updated dependencies [4dfbc3b570]
|
|
2816
|
+
- @redocly/realm-asyncapi-sdk@0.8.1
|
|
2817
|
+
- @redocly/theme@0.62.0
|
|
2818
|
+
|
|
2819
|
+
## 0.130.1
|
|
2820
|
+
|
|
2821
|
+
### Patch Changes
|
|
2822
|
+
|
|
2823
|
+
- 69f13ea40c: Fixed an issue where the login button was not displayed when a default identity provider was configured.
|
|
2824
|
+
|
|
2803
2825
|
## 0.130.0
|
|
2804
2826
|
|
|
2805
2827
|
### Minor Changes
|
|
@@ -3031,12 +3053,6 @@
|
|
|
3031
3053
|
- @redocly/portal-plugin-mock-server@0.15.0-next.2
|
|
3032
3054
|
- @redocly/graphql-docs@1.7.0-next.0
|
|
3033
3055
|
|
|
3034
|
-
## 0.129.2
|
|
3035
|
-
|
|
3036
|
-
### Patch Changes
|
|
3037
|
-
|
|
3038
|
-
- 237e61721c: Fixed an issue where project processing could halt indefinitely due to incorrect cache handling.
|
|
3039
|
-
|
|
3040
3056
|
## 0.130.0-next.2
|
|
3041
3057
|
|
|
3042
3058
|
### Patch Changes
|
|
@@ -3074,6 +3090,12 @@
|
|
|
3074
3090
|
- @redocly/openapi-docs@3.18.0-next.0
|
|
3075
3091
|
- @redocly/theme@0.62.0-next.0
|
|
3076
3092
|
|
|
3093
|
+
## 0.129.2
|
|
3094
|
+
|
|
3095
|
+
### Patch Changes
|
|
3096
|
+
|
|
3097
|
+
- 237e61721c: Fixed an issue where project processing could halt indefinitely due to incorrect cache handling.
|
|
3098
|
+
|
|
3077
3099
|
## 0.129.1
|
|
3078
3100
|
|
|
3079
3101
|
### Patch Changes
|
|
@@ -3181,18 +3203,6 @@
|
|
|
3181
3203
|
- @redocly/portal-plugin-mock-server@0.14.0-next.3
|
|
3182
3204
|
- @redocly/graphql-docs@1.6.0-next.0
|
|
3183
3205
|
|
|
3184
|
-
## 0.128.1
|
|
3185
|
-
|
|
3186
|
-
### Patch Changes
|
|
3187
|
-
|
|
3188
|
-
- 7a73a9957a: Fixed a bug where scorecard custom targets did not match.
|
|
3189
|
-
- Updated dependencies [fe3253dabb]
|
|
3190
|
-
- @redocly/theme@0.60.1
|
|
3191
|
-
- @redocly/asyncapi-docs@1.5.1
|
|
3192
|
-
- @redocly/graphql-docs@1.5.0
|
|
3193
|
-
- @redocly/openapi-docs@3.16.1
|
|
3194
|
-
- @redocly/portal-plugin-mock-server@0.13.1
|
|
3195
|
-
|
|
3196
3206
|
## 0.129.0-next.2
|
|
3197
3207
|
|
|
3198
3208
|
### Minor Changes
|
|
@@ -3249,6 +3259,18 @@
|
|
|
3249
3259
|
- @redocly/graphql-docs@1.6.0-next.0
|
|
3250
3260
|
- @redocly/theme@0.61.0-next.0
|
|
3251
3261
|
|
|
3262
|
+
## 0.128.1
|
|
3263
|
+
|
|
3264
|
+
### Patch Changes
|
|
3265
|
+
|
|
3266
|
+
- 7a73a9957a: Fixed a bug where scorecard custom targets did not match.
|
|
3267
|
+
- Updated dependencies [fe3253dabb]
|
|
3268
|
+
- @redocly/theme@0.60.1
|
|
3269
|
+
- @redocly/asyncapi-docs@1.5.1
|
|
3270
|
+
- @redocly/graphql-docs@1.5.0
|
|
3271
|
+
- @redocly/openapi-docs@3.16.1
|
|
3272
|
+
- @redocly/portal-plugin-mock-server@0.13.1
|
|
3273
|
+
|
|
3252
3274
|
## 0.128.0
|
|
3253
3275
|
|
|
3254
3276
|
### Minor Changes
|
|
@@ -3727,12 +3749,6 @@
|
|
|
3727
3749
|
- @redocly/portal-plugin-mock-server@0.12.0-next.4
|
|
3728
3750
|
- @redocly/graphql-docs@1.4.0-next.0
|
|
3729
3751
|
|
|
3730
|
-
## 0.126.2
|
|
3731
|
-
|
|
3732
|
-
### Patch Changes
|
|
3733
|
-
|
|
3734
|
-
- 80be5200e3: Fixed an issue where successive sidebar items were not activated when users were scrolling API document pages.
|
|
3735
|
-
|
|
3736
3752
|
## 0.127.0-next.3
|
|
3737
3753
|
|
|
3738
3754
|
### Patch Changes
|
|
@@ -3781,20 +3797,6 @@
|
|
|
3781
3797
|
- @redocly/openapi-docs@3.15.0-next.1
|
|
3782
3798
|
- @redocly/portal-plugin-mock-server@0.12.0-next.1
|
|
3783
3799
|
|
|
3784
|
-
## 0.126.1
|
|
3785
|
-
|
|
3786
|
-
### Patch Changes
|
|
3787
|
-
|
|
3788
|
-
- 7a4401ae3f: Renamed the `get-full-definition` MCP tool to `get-full-spec-document`.
|
|
3789
|
-
- Updated dependencies [952ce6e27b]
|
|
3790
|
-
- Updated dependencies [77852d4f5c]
|
|
3791
|
-
- @redocly/realm-asyncapi-sdk@0.4.1
|
|
3792
|
-
- @redocly/theme@0.58.1
|
|
3793
|
-
- @redocly/openapi-docs@3.14.1
|
|
3794
|
-
- @redocly/asyncapi-docs@1.3.1
|
|
3795
|
-
- @redocly/graphql-docs@1.3.0
|
|
3796
|
-
- @redocly/portal-plugin-mock-server@0.11.1
|
|
3797
|
-
|
|
3798
3800
|
## 0.127.0-next.0
|
|
3799
3801
|
|
|
3800
3802
|
### Minor Changes
|
|
@@ -3820,6 +3822,26 @@
|
|
|
3820
3822
|
- @redocly/openapi-docs@3.15.0-next.0
|
|
3821
3823
|
- @redocly/theme@0.59.0-next.0
|
|
3822
3824
|
|
|
3825
|
+
## 0.126.2
|
|
3826
|
+
|
|
3827
|
+
### Patch Changes
|
|
3828
|
+
|
|
3829
|
+
- 80be5200e3: Fixed an issue where successive sidebar items were not activated when users were scrolling API document pages.
|
|
3830
|
+
|
|
3831
|
+
## 0.126.1
|
|
3832
|
+
|
|
3833
|
+
### Patch Changes
|
|
3834
|
+
|
|
3835
|
+
- 7a4401ae3f: Renamed the `get-full-definition` MCP tool to `get-full-spec-document`.
|
|
3836
|
+
- Updated dependencies [952ce6e27b]
|
|
3837
|
+
- Updated dependencies [77852d4f5c]
|
|
3838
|
+
- @redocly/realm-asyncapi-sdk@0.4.1
|
|
3839
|
+
- @redocly/theme@0.58.1
|
|
3840
|
+
- @redocly/openapi-docs@3.14.1
|
|
3841
|
+
- @redocly/asyncapi-docs@1.3.1
|
|
3842
|
+
- @redocly/graphql-docs@1.3.0
|
|
3843
|
+
- @redocly/portal-plugin-mock-server@0.11.1
|
|
3844
|
+
|
|
3823
3845
|
## 0.126.0
|
|
3824
3846
|
|
|
3825
3847
|
### Minor Changes
|
|
@@ -4016,12 +4038,6 @@
|
|
|
4016
4038
|
- @redocly/portal-plugin-mock-server@0.11.0-next.7
|
|
4017
4039
|
- @redocly/graphql-docs@1.3.0-next.0
|
|
4018
4040
|
|
|
4019
|
-
## 0.125.3
|
|
4020
|
-
|
|
4021
|
-
### Patch Changes
|
|
4022
|
-
|
|
4023
|
-
- Fixed project analytics collection.
|
|
4024
|
-
|
|
4025
4041
|
## 0.126.0-next.10
|
|
4026
4042
|
|
|
4027
4043
|
### Minor Changes
|
|
@@ -4080,19 +4096,6 @@
|
|
|
4080
4096
|
- @redocly/graphql-docs@1.3.0-next.0
|
|
4081
4097
|
- @redocly/portal-plugin-mock-server@0.11.0-next.4
|
|
4082
4098
|
|
|
4083
|
-
## 0.125.2
|
|
4084
|
-
|
|
4085
|
-
### Patch Changes
|
|
4086
|
-
|
|
4087
|
-
- 9578323801: Improved JavaScript compilation time on Windows.
|
|
4088
|
-
- Updated dependencies [1405d52ab2]
|
|
4089
|
-
- @redocly/realm-asyncapi-sdk@0.4.0
|
|
4090
|
-
- @redocly/theme@0.57.1
|
|
4091
|
-
- @redocly/asyncapi-docs@1.2.1
|
|
4092
|
-
- @redocly/graphql-docs@1.2.0
|
|
4093
|
-
- @redocly/openapi-docs@3.13.1
|
|
4094
|
-
- @redocly/portal-plugin-mock-server@0.10.1
|
|
4095
|
-
|
|
4096
4099
|
## 0.126.0-next.6
|
|
4097
4100
|
|
|
4098
4101
|
### Patch Changes
|
|
@@ -4128,12 +4131,6 @@
|
|
|
4128
4131
|
- @redocly/asyncapi-docs@1.3.0-next.1
|
|
4129
4132
|
- @redocly/portal-plugin-mock-server@0.11.0-next.1
|
|
4130
4133
|
|
|
4131
|
-
## 0.125.1
|
|
4132
|
-
|
|
4133
|
-
### Patch Changes
|
|
4134
|
-
|
|
4135
|
-
- 28860eaf79: Fixed an issue where Markdoc tags did not render in preview mode.
|
|
4136
|
-
|
|
4137
4134
|
## 0.126.0-next.3
|
|
4138
4135
|
|
|
4139
4136
|
### Patch Changes
|
|
@@ -4174,6 +4171,31 @@
|
|
|
4174
4171
|
- @redocly/graphql-docs@1.3.0-next.0
|
|
4175
4172
|
- @redocly/openapi-docs@3.14.0-next.0
|
|
4176
4173
|
|
|
4174
|
+
## 0.125.3
|
|
4175
|
+
|
|
4176
|
+
### Patch Changes
|
|
4177
|
+
|
|
4178
|
+
- Fixed project analytics collection.
|
|
4179
|
+
|
|
4180
|
+
## 0.125.2
|
|
4181
|
+
|
|
4182
|
+
### Patch Changes
|
|
4183
|
+
|
|
4184
|
+
- 9578323801: Improved JavaScript compilation time on Windows.
|
|
4185
|
+
- Updated dependencies [1405d52ab2]
|
|
4186
|
+
- @redocly/realm-asyncapi-sdk@0.4.0
|
|
4187
|
+
- @redocly/theme@0.57.1
|
|
4188
|
+
- @redocly/asyncapi-docs@1.2.1
|
|
4189
|
+
- @redocly/graphql-docs@1.2.0
|
|
4190
|
+
- @redocly/openapi-docs@3.13.1
|
|
4191
|
+
- @redocly/portal-plugin-mock-server@0.10.1
|
|
4192
|
+
|
|
4193
|
+
## 0.125.1
|
|
4194
|
+
|
|
4195
|
+
### Patch Changes
|
|
4196
|
+
|
|
4197
|
+
- 28860eaf79: Fixed an issue where Markdoc tags did not render in preview mode.
|
|
4198
|
+
|
|
4177
4199
|
## 0.125.0
|
|
4178
4200
|
|
|
4179
4201
|
### Minor Changes
|
|
@@ -4309,44 +4331,6 @@
|
|
|
4309
4331
|
- @redocly/openapi-docs@3.13.0-next.3
|
|
4310
4332
|
- @redocly/portal-plugin-mock-server@0.10.0-next.3
|
|
4311
4333
|
|
|
4312
|
-
## 0.124.3
|
|
4313
|
-
|
|
4314
|
-
### Patch Changes
|
|
4315
|
-
|
|
4316
|
-
- Fixed an issue causing crashed during a build.
|
|
4317
|
-
- Updated dependencies
|
|
4318
|
-
- @redocly/theme@0.56.3
|
|
4319
|
-
- @redocly/asyncapi-docs@1.1.3
|
|
4320
|
-
- @redocly/graphql-docs@1.1.0
|
|
4321
|
-
- @redocly/openapi-docs@3.12.3
|
|
4322
|
-
- @redocly/portal-plugin-mock-server@0.9.3
|
|
4323
|
-
|
|
4324
|
-
## 0.124.2
|
|
4325
|
-
|
|
4326
|
-
### Patch Changes
|
|
4327
|
-
|
|
4328
|
-
- Fixed invalid dependency version causing dependency install to fail.
|
|
4329
|
-
- Updated dependencies
|
|
4330
|
-
- @redocly/theme@0.56.2
|
|
4331
|
-
- @redocly/asyncapi-docs@1.1.2
|
|
4332
|
-
- @redocly/graphql-docs@1.1.0
|
|
4333
|
-
- @redocly/openapi-docs@3.12.2
|
|
4334
|
-
- @redocly/portal-plugin-mock-server@0.9.2
|
|
4335
|
-
|
|
4336
|
-
## 0.124.1
|
|
4337
|
-
|
|
4338
|
-
### Patch Changes
|
|
4339
|
-
|
|
4340
|
-
- 76e2ff5afd: Fixed broken feedback submission.
|
|
4341
|
-
- 92a9326dd1: Fixed an issue where LLM page actions appeared on pages excluded from search.
|
|
4342
|
-
- Updated dependencies [a3e76e3587]
|
|
4343
|
-
- Updated dependencies [92a9326dd1]
|
|
4344
|
-
- @redocly/theme@0.56.1
|
|
4345
|
-
- @redocly/asyncapi-docs@1.1.1
|
|
4346
|
-
- @redocly/graphql-docs@1.1.0
|
|
4347
|
-
- @redocly/openapi-docs@3.12.1
|
|
4348
|
-
- @redocly/portal-plugin-mock-server@0.9.1
|
|
4349
|
-
|
|
4350
4334
|
## 0.125.0-next.2
|
|
4351
4335
|
|
|
4352
4336
|
### Patch Changes
|
|
@@ -4396,6 +4380,44 @@
|
|
|
4396
4380
|
- @redocly/asyncapi-docs@1.2.0-next.0
|
|
4397
4381
|
- @redocly/graphql-docs@1.2.0-next.0
|
|
4398
4382
|
|
|
4383
|
+
## 0.124.3
|
|
4384
|
+
|
|
4385
|
+
### Patch Changes
|
|
4386
|
+
|
|
4387
|
+
- Fixed an issue causing crashed during a build.
|
|
4388
|
+
- Updated dependencies
|
|
4389
|
+
- @redocly/theme@0.56.3
|
|
4390
|
+
- @redocly/asyncapi-docs@1.1.3
|
|
4391
|
+
- @redocly/graphql-docs@1.1.0
|
|
4392
|
+
- @redocly/openapi-docs@3.12.3
|
|
4393
|
+
- @redocly/portal-plugin-mock-server@0.9.3
|
|
4394
|
+
|
|
4395
|
+
## 0.124.2
|
|
4396
|
+
|
|
4397
|
+
### Patch Changes
|
|
4398
|
+
|
|
4399
|
+
- Fixed invalid dependency version causing dependency install to fail.
|
|
4400
|
+
- Updated dependencies
|
|
4401
|
+
- @redocly/theme@0.56.2
|
|
4402
|
+
- @redocly/asyncapi-docs@1.1.2
|
|
4403
|
+
- @redocly/graphql-docs@1.1.0
|
|
4404
|
+
- @redocly/openapi-docs@3.12.2
|
|
4405
|
+
- @redocly/portal-plugin-mock-server@0.9.2
|
|
4406
|
+
|
|
4407
|
+
## 0.124.1
|
|
4408
|
+
|
|
4409
|
+
### Patch Changes
|
|
4410
|
+
|
|
4411
|
+
- 76e2ff5afd: Fixed broken feedback submission.
|
|
4412
|
+
- 92a9326dd1: Fixed an issue where LLM page actions appeared on pages excluded from search.
|
|
4413
|
+
- Updated dependencies [a3e76e3587]
|
|
4414
|
+
- Updated dependencies [92a9326dd1]
|
|
4415
|
+
- @redocly/theme@0.56.1
|
|
4416
|
+
- @redocly/asyncapi-docs@1.1.1
|
|
4417
|
+
- @redocly/graphql-docs@1.1.0
|
|
4418
|
+
- @redocly/openapi-docs@3.12.1
|
|
4419
|
+
- @redocly/portal-plugin-mock-server@0.9.1
|
|
4420
|
+
|
|
4399
4421
|
## 0.124.0
|
|
4400
4422
|
|
|
4401
4423
|
### Minor Changes
|
|
@@ -4634,12 +4656,6 @@
|
|
|
4634
4656
|
- @redocly/portal-plugin-mock-server@0.9.0-next.12
|
|
4635
4657
|
- @redocly/graphql-docs@0.13.0-next.1
|
|
4636
4658
|
|
|
4637
|
-
## 0.123.1
|
|
4638
|
-
|
|
4639
|
-
### Patch Changes
|
|
4640
|
-
|
|
4641
|
-
- bdd218eb53: Fixed an issue where an RBAC match pattern starting with `**` did not override the global match pattern `**`.
|
|
4642
|
-
|
|
4643
4659
|
## 0.124.0-next.17
|
|
4644
4660
|
|
|
4645
4661
|
### Patch Changes
|
|
@@ -4810,6 +4826,12 @@
|
|
|
4810
4826
|
- @redocly/graphql-docs@0.13.0-next.0
|
|
4811
4827
|
- @redocly/theme@0.56.0-next.0
|
|
4812
4828
|
|
|
4829
|
+
## 0.123.1
|
|
4830
|
+
|
|
4831
|
+
### Patch Changes
|
|
4832
|
+
|
|
4833
|
+
- bdd218eb53: Fixed an issue where an RBAC match pattern starting with `**` did not override the global match pattern `**`.
|
|
4834
|
+
|
|
4813
4835
|
## 0.123.0
|
|
4814
4836
|
|
|
4815
4837
|
### Minor Changes
|
|
@@ -4893,18 +4915,6 @@
|
|
|
4893
4915
|
- @redocly/openapi-docs@3.11.0-next.9
|
|
4894
4916
|
- @redocly/portal-plugin-mock-server@0.8.0-next.9
|
|
4895
4917
|
|
|
4896
|
-
## 0.122.3
|
|
4897
|
-
|
|
4898
|
-
### Patch Changes
|
|
4899
|
-
|
|
4900
|
-
- d33ccaad3f: Fixed an issue where the Markdoc `tabs` tag incorrectly set the active state for the selected tab.
|
|
4901
|
-
- Updated dependencies [d33ccaad3f]
|
|
4902
|
-
- @redocly/theme@0.54.3
|
|
4903
|
-
- @redocly/asyncapi-docs@0.3.3
|
|
4904
|
-
- @redocly/graphql-docs@0.11.0
|
|
4905
|
-
- @redocly/openapi-docs@3.10.3
|
|
4906
|
-
- @redocly/portal-plugin-mock-server@0.7.3
|
|
4907
|
-
|
|
4908
4918
|
## 0.123.0-next.9
|
|
4909
4919
|
|
|
4910
4920
|
### Patch Changes
|
|
@@ -4929,18 +4939,6 @@
|
|
|
4929
4939
|
- @redocly/openapi-docs@3.11.0-next.7
|
|
4930
4940
|
- @redocly/portal-plugin-mock-server@0.8.0-next.7
|
|
4931
4941
|
|
|
4932
|
-
## 0.122.2
|
|
4933
|
-
|
|
4934
|
-
### Patch Changes
|
|
4935
|
-
|
|
4936
|
-
- 0cc1594c74: Fixed an issue where the tabs drop-down disappeared immediately after touch was released, preventing users from switching between tabs on mobile devices.
|
|
4937
|
-
- Updated dependencies [0cc1594c74]
|
|
4938
|
-
- @redocly/theme@0.54.2
|
|
4939
|
-
- @redocly/asyncapi-docs@0.3.2
|
|
4940
|
-
- @redocly/graphql-docs@0.11.0
|
|
4941
|
-
- @redocly/openapi-docs@3.10.2
|
|
4942
|
-
- @redocly/portal-plugin-mock-server@0.7.2
|
|
4943
|
-
|
|
4944
4942
|
## 0.123.0-next.7
|
|
4945
4943
|
|
|
4946
4944
|
### Patch Changes
|
|
@@ -5039,19 +5037,6 @@
|
|
|
5039
5037
|
- @redocly/openapi-docs@3.11.0-next.1
|
|
5040
5038
|
- @redocly/portal-plugin-mock-server@0.8.0-next.1
|
|
5041
5039
|
|
|
5042
|
-
## 0.122.1
|
|
5043
|
-
|
|
5044
|
-
### Patch Changes
|
|
5045
|
-
|
|
5046
|
-
- 534408676f: Fixed performance issue in the `Tabs` component.
|
|
5047
|
-
- 4f1e7786c4: Fixed false positive errors for unclosed quotes in `markdoc` attributes.
|
|
5048
|
-
- Updated dependencies [534408676f]
|
|
5049
|
-
- @redocly/theme@0.54.1
|
|
5050
|
-
- @redocly/asyncapi-docs@0.3.1
|
|
5051
|
-
- @redocly/graphql-docs@0.11.0
|
|
5052
|
-
- @redocly/openapi-docs@3.10.1
|
|
5053
|
-
- @redocly/portal-plugin-mock-server@0.7.1
|
|
5054
|
-
|
|
5055
5040
|
## 0.123.0-next.0
|
|
5056
5041
|
|
|
5057
5042
|
### Patch Changes
|
|
@@ -5070,6 +5055,43 @@
|
|
|
5070
5055
|
- @redocly/theme@0.55.0-next.0
|
|
5071
5056
|
- @redocly/realm-asyncapi-sdk@0.1.0-next.0
|
|
5072
5057
|
|
|
5058
|
+
## 0.122.3
|
|
5059
|
+
|
|
5060
|
+
### Patch Changes
|
|
5061
|
+
|
|
5062
|
+
- d33ccaad3f: Fixed an issue where the Markdoc `tabs` tag incorrectly set the active state for the selected tab.
|
|
5063
|
+
- Updated dependencies [d33ccaad3f]
|
|
5064
|
+
- @redocly/theme@0.54.3
|
|
5065
|
+
- @redocly/asyncapi-docs@0.3.3
|
|
5066
|
+
- @redocly/graphql-docs@0.11.0
|
|
5067
|
+
- @redocly/openapi-docs@3.10.3
|
|
5068
|
+
- @redocly/portal-plugin-mock-server@0.7.3
|
|
5069
|
+
|
|
5070
|
+
## 0.122.2
|
|
5071
|
+
|
|
5072
|
+
### Patch Changes
|
|
5073
|
+
|
|
5074
|
+
- 0cc1594c74: Fixed an issue where the tabs drop-down disappeared immediately after touch was released, preventing users from switching between tabs on mobile devices.
|
|
5075
|
+
- Updated dependencies [0cc1594c74]
|
|
5076
|
+
- @redocly/theme@0.54.2
|
|
5077
|
+
- @redocly/asyncapi-docs@0.3.2
|
|
5078
|
+
- @redocly/graphql-docs@0.11.0
|
|
5079
|
+
- @redocly/openapi-docs@3.10.2
|
|
5080
|
+
- @redocly/portal-plugin-mock-server@0.7.2
|
|
5081
|
+
|
|
5082
|
+
## 0.122.1
|
|
5083
|
+
|
|
5084
|
+
### Patch Changes
|
|
5085
|
+
|
|
5086
|
+
- 534408676f: Fixed performance issue in the `Tabs` component.
|
|
5087
|
+
- 4f1e7786c4: Fixed false positive errors for unclosed quotes in `markdoc` attributes.
|
|
5088
|
+
- Updated dependencies [534408676f]
|
|
5089
|
+
- @redocly/theme@0.54.1
|
|
5090
|
+
- @redocly/asyncapi-docs@0.3.1
|
|
5091
|
+
- @redocly/graphql-docs@0.11.0
|
|
5092
|
+
- @redocly/openapi-docs@3.10.1
|
|
5093
|
+
- @redocly/portal-plugin-mock-server@0.7.1
|
|
5094
|
+
|
|
5073
5095
|
## 0.122.0
|
|
5074
5096
|
|
|
5075
5097
|
### Minor Changes
|
|
@@ -5300,15 +5322,6 @@
|
|
|
5300
5322
|
- @redocly/graphql-docs@0.11.0-next.0
|
|
5301
5323
|
- @redocly/portal-plugin-mock-server@0.7.0-next.2
|
|
5302
5324
|
|
|
5303
|
-
## 0.121.1
|
|
5304
|
-
|
|
5305
|
-
### Patch Changes
|
|
5306
|
-
|
|
5307
|
-
- Updated dependencies [6b9d845619]
|
|
5308
|
-
- @redocly/portal-plugin-mock-server@0.6.1
|
|
5309
|
-
- @redocly/openapi-docs@3.9.1
|
|
5310
|
-
- @redocly/asyncapi-docs@0.2.1
|
|
5311
|
-
|
|
5312
5325
|
## 0.122.0-next.1
|
|
5313
5326
|
|
|
5314
5327
|
### Patch Changes
|
|
@@ -5338,6 +5351,15 @@
|
|
|
5338
5351
|
- @redocly/graphql-docs@0.11.0-next.0
|
|
5339
5352
|
- @redocly/openapi-docs@3.10.0-next.0
|
|
5340
5353
|
|
|
5354
|
+
## 0.121.1
|
|
5355
|
+
|
|
5356
|
+
### Patch Changes
|
|
5357
|
+
|
|
5358
|
+
- Updated dependencies [6b9d845619]
|
|
5359
|
+
- @redocly/portal-plugin-mock-server@0.6.1
|
|
5360
|
+
- @redocly/openapi-docs@3.9.1
|
|
5361
|
+
- @redocly/asyncapi-docs@0.2.1
|
|
5362
|
+
|
|
5341
5363
|
## 0.121.0
|
|
5342
5364
|
|
|
5343
5365
|
### Minor Changes
|
|
@@ -5452,8 +5474,6 @@
|
|
|
5452
5474
|
- @redocly/openapi-docs@3.9.0-next.1
|
|
5453
5475
|
- @redocly/portal-plugin-mock-server@0.6.0-next.1
|
|
5454
5476
|
|
|
5455
|
-
## 0.120.2
|
|
5456
|
-
|
|
5457
5477
|
## 0.121.0-next.0
|
|
5458
5478
|
|
|
5459
5479
|
### Patch Changes
|
|
@@ -5467,6 +5487,8 @@
|
|
|
5467
5487
|
- @redocly/openapi-docs@3.9.0-next.0
|
|
5468
5488
|
- @redocly/theme@0.53.0-next.0
|
|
5469
5489
|
|
|
5490
|
+
## 0.120.2
|
|
5491
|
+
|
|
5470
5492
|
## 0.120.1
|
|
5471
5493
|
|
|
5472
5494
|
### Patch Changes
|
|
@@ -5559,12 +5581,6 @@
|
|
|
5559
5581
|
- @redocly/theme@0.52.0-next.3
|
|
5560
5582
|
- @redocly/graphql-docs@0.9.0-next.0
|
|
5561
5583
|
|
|
5562
|
-
## 0.119.1
|
|
5563
|
-
|
|
5564
|
-
### Patch Changes
|
|
5565
|
-
|
|
5566
|
-
- e2afa2d1f7: Resolved vulnerabilities `CVE-2025-29774` and `CVE-2025-29775` by updating the `xml-crypto` library to a version `6.0.1` with a security patch.
|
|
5567
|
-
|
|
5568
5584
|
## 0.120.0-next.3
|
|
5569
5585
|
|
|
5570
5586
|
### Patch Changes
|
|
@@ -5609,6 +5625,12 @@
|
|
|
5609
5625
|
- @redocly/portal-plugin-mock-server@0.5.0-next.0
|
|
5610
5626
|
- @redocly/theme@0.52.0-next.0
|
|
5611
5627
|
|
|
5628
|
+
## 0.119.1
|
|
5629
|
+
|
|
5630
|
+
### Patch Changes
|
|
5631
|
+
|
|
5632
|
+
- e2afa2d1f7: Resolved vulnerabilities `CVE-2025-29774` and `CVE-2025-29775` by updating the `xml-crypto` library to a version `6.0.1` with a security patch.
|
|
5633
|
+
|
|
5612
5634
|
## 0.119.0
|
|
5613
5635
|
|
|
5614
5636
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as
|
|
1
|
+
import{z as e}from"zod";import{searchFieldNameSchema as a,searchFilterItemSchema as t}from"./search.js";const i=e.object({locale:e.string().max(100),field:a.optional(),query:e.string().max(500).optional(),filter:e.array(t).max(50).optional(),facetQuery:e.string().max(500).optional()});export{i as searchFacetsRequestSchema};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"zod";const
|
|
1
|
+
import{z as e}from"zod";const a=e.string().max(100).regex(/^[^:&|()[\]`,=!<>$]+$/),t=e.object({field:a,values:e.array(e.string().max(200)).max(100),isQuickFilter:e.boolean().optional()}),r=e.object({query:e.string().max(500),locale:e.string().max(100),filter:e.array(t).max(50).optional(),loadMore:e.object({groupKey:e.string().max(200),offset:e.number().int().nonnegative()}).optional()});export{a as searchFieldNameSchema,t as searchFilterItemSchema,r as searchRequestSchema};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export declare const RUNTIME_RESOURCES_DIR = "runtime";
|
|
2
|
+
export declare const SCORECARD_CLASSIC_FOLDER = "_scorecard";
|
|
3
|
+
export declare const PAGE_DATA_FOLDER = "page-data";
|
|
2
4
|
export declare const PUBLIC_ASSETS_FOLDER = "/assets";
|
|
3
5
|
export declare const DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER = "/_spec";
|
|
4
6
|
export declare const PUBLIC_API_DEFINITIONS_FOLDER = "/_bundle";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ServerRoutes as n}from"../../constants/api.js";import{USER_THEME_ALIAS as A}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const N="runtime",x="/assets",
|
|
1
|
+
import{ServerRoutes as n}from"../../constants/api.js";import{USER_THEME_ALIAS as A}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const N="runtime",x="_scorecard",a="page-data",U="/assets",M="/_spec",P="/_bundle",l="static",i="static-data",m="redocly:::linkOriginal",F="@",K="default",H=new RegExp("((?!@i18n\\/|@l10n\\/)\\/?@.*?(?=\\/))","g"),Y="@redocly/theme/plugin.js",d="styles.css",B=["@theme/plugin.js","@theme/plugin.cjs","@theme/plugin.mjs"],I="test_secret_key",G=_.JWT_SECRET_KEY||I,S=4096,c=196,u=S-c,g=3600,W=1440*60,L="@i18n",r="@l10n",h=[A,L,r,"@api","@mcp"],k="https://redocly.com/auth/aud",J="catalog.json",f="scorecard.json",w="page-count.json",X="sitemap.xml",j="llms.txt",o=_.PROJECT_ID,V=_.PROJECT_SLUG,R=_.ORGANIZATION_ID,$=_.ORG_SLUG,t=_.BH_API_URL,E=t&&R&&o?`${t}/orgs/${R}/projects/${o}`:void 0,p=t?`${t}/entitlements/.well-known/jwks`:"https://app.cloud.redocly.com/api/entitlements/.well-known/jwks",v=_.ENTITLEMENTS_JWKS_CDN_URL||p,y=E?`${E}/feedback`:"",b=E?`${E}/ai-agentic-conversations`:"",Z=E?`${E}/ai-assistant-escalations`:"",q=E?`${E}/ai-assistant-feedback`:"",z=E?`${E}/semantic-search`:"",Q="no-store",__=365*24*60*60,E_="X-Redocly-Cache-Control",t_="no-cache",o_="public, s-maxage=86400, max-age=10, must-revalidate",R_=_.AUTH_URL,e_="Developer Documentation",e=_.REDOCLY_SSR_RENDER_MODE==="worker"?"worker":"main",s_=e==="main"?0:_.REDOCLY_SSR_WORKERS_MIN!=null?Number(_.REDOCLY_SSR_WORKERS_MIN):2,T_=e==="main"?1:_.REDOCLY_SSR_WORKERS_MAX!=null?Number(_.REDOCLY_SSR_WORKERS_MAX):5,n_="-----BEGIN CERTIFICATE-----",A_="-----END CERTIFICATE-----",I_=!_.isDevelopMode&&_.REDOCLY_TELEMETRY!=="off"||_.REDOCLY_TELEMETRY==="on",S_="http://localhost:4318/v1/traces",c_=[n.HEALTH],s=_.SERVER_EDITOR_APP_URL||"http://127.0.0.1:3000",L_=_.REDOCLY_CORS_ORIGINS?_.REDOCLY_CORS_ORIGINS.split(",").map(T=>T.trim()).filter(Boolean).concat(s):[s],r_="markdown/partials",p_="markdown/partials-deps";export{Z as AI_ASSISTANT_ESCALATIONS_API_URL,q as AI_ASSISTANT_FEEDBACK_API_URL,L_ as ALLOWED_CORS_ORIGINS,k as ALTERNATIVE_AUD_CLAIM_NAME,b as ASK_AI_API_URL,R_ as AUTH_URL,n_ as BEGIN_CERTIFICATE_DELIMITER,E as BH_API_PROJECTS_URL,Q as CACHE_CONTROL_NO_STORE_HEADER_VALUE,t_ as CACHE_CONTROL_PUBLIC_HTML,J as CATALOG_OUTPUT_FILE_NAME,__ as DEFAULT_IMMUTABLE_CACHE_MAX_AGE,B as DEFAULT_PROJECT_PLUGIN_PATHS,Y as DEFAULT_THEME_PLUGIN_PATH,e_ as DEFAULT_TITLE,K as DEFAULT_VERSION_NAME,M as DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER,A_ as END_CERTIFICATE_DELIMITER,v as ENTITLEMENTS_JWKS_URL,I as FALLBACK_JWT_SECRET_KEY,y as FEEDBACK_API_URL,L as I18N_DIR_NAME,G as JWT_SECRET_KEY,r as L10N_DIR_NAME,m as LINK_ORIGINAL_ATTR_NAME,j as LLMS_TXT_FILE_NAME,r_ as MARKDOC_PARTIALS_DATA_KEY,p_ as MARKDOC_PARTIALS_DEPS_KEY,u as MAX_AUTH_TOKEN_COOKIE_BYTES,g as MCP_ACCESS_TOKEN_TTL_SEC,W as MCP_REFRESH_SESSION_LIFETIME_SEC,R as ORG_ID,$ as ORG_SLUG,c_ as OTEL_EXCLUDED_ROUTES,S_ as OTEL_TRACES_DEV_URL,w as PAGE_COUNT_OUTPUT_FILE_NAME,a as PAGE_DATA_FOLDER,o as PROJECT_ID,V as PROJECT_SLUG,P as PUBLIC_API_DEFINITIONS_FOLDER,U as PUBLIC_ASSETS_FOLDER,l as PUBLIC_STATIC_FOLDER,h as RESERVED_DIR_NAMES,N as RUNTIME_RESOURCES_DIR,x as SCORECARD_CLASSIC_FOLDER,f as SCORECARD_OUTPUT_FILE_NAME,z as SEMANTIC_SEARCH_API_URL,s as SERVER_EDITOR_APP_URL,X as SITEMAP_FILE_NAME,e as SSR_RENDER_MODE,T_ as SSR_WORKERS_MAX,s_ as SSR_WORKERS_MIN,i as STATIC_DATA_FOLDER,d as STYLES_FILE,I_ as TELEMETRY_ENABLED,H as VERSIONED_FOLDER_REGEXP_MATCH,F as VERSION_SEPARATOR,E_ as X_REDOCLY_CACHE_CONTROL_HEADER,o_ as X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"node:path";import{existsSync as u}from"node:fs";import{readFile as w}from"node:fs/promises";import q from"js-yaml";import{withoutPathPrefix as j}from"@redocly/theme/core/utils";import{DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as x,PUBLIC_API_DEFINITIONS_FOLDER as A}from"../../constants/common.js";import{GRAPHQL_SPEC_SLUG as g}from"../../../constants/common.js";import{canDownloadApiDefinition as T,filterDataByAccessDeep as C}from"../../utils/rbac.js";import{API_DOWNLOAD_PREFIXES as U}from"../../utils/is-api-download-link.js";import{decodeRequestPath as B}from"../../utils/decode-request-path.js";const G=[".json",".yaml",".yml"],W=[".graphql",".gql"];function S(i,n){const s=t.parse(i);return t.join(s.dir,s.name+n)}const X=async(i,n,s)=>{const{isAuthenticated:r,teams:f,claims:{email:m}}=n.user,D=new URL(i.url),e=B(j(D.pathname));if(e===void 0||e.endsWith("/"))return new Response("Bad Request",{status:400});const c=U.find(a=>e.startsWith(`${a}/`));if(c===void 0)return new Response("Not found",{status:404});const d=c===g,o=e.slice(c.length),p=t.extname(o);if(!(d?W:G).includes(p))return new Response("Not found",{status:404});const{rbac:h={},requiresLogin:P=!1}=n.config.access||{};if(!T(e,h,P,{isAuthenticated:r,email:m,teams:f}))return new Response("Unauthorized",{status:r?403:401});const l=s.props?.outdir||"";if(d){const a=t.join(l,A,o);if(!u(a))return new Response("Not found",{status:404});const L=await w(a,"utf-8");return new Response(L,{headers:{"Content-Type":"application/graphql"}})}const R=t.join(l,A,S(o,".json")),E=t.join(l,x,S(o,".json")),N=u(R),_=u(E);if(!N&&!_)return new Response("Not found",{status:404});const y=await w(N?R:E,"utf-8"),F=JSON.parse(y),I=C(F,{isAuthenticated:r,email:m,teams:f},h,P),O=p===".yaml"?q.dump(I):JSON.stringify(I,null,2);return new Response(O,{headers:{"Content-Type":p===".yaml"?"application/yaml":"application/json"}})};var Z=X;export{Z as default};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function requireAuthMiddleware():
|
|
3
|
-
error: string;
|
|
4
|
-
}, 401, "json">) | undefined>;
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
export declare function requireAuthMiddleware(): MiddlewareHandler;
|
|
5
3
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
2
|
import type { DevOnboardingAdapterConfig, RbacConfig } from '@redocly/config';
|
|
3
3
|
import type { CatalogApiProduct } from '../types.js';
|
|
4
|
-
export declare function integrationsMiddleware(integrations: DevOnboardingAdapterConfig[], catalogApiProducts: Record<string, CatalogApiProduct>, rbacConfig: RbacConfig):
|
|
5
|
-
error: string;
|
|
6
|
-
}, 401, "json">) | undefined>;
|
|
4
|
+
export declare function integrationsMiddleware(integrations: DevOnboardingAdapterConfig[], catalogApiProducts: Record<string, CatalogApiProduct>, rbacConfig: RbacConfig): MiddlewareHandler;
|
|
7
5
|
//# sourceMappingURL=integrations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{writeFileSync as
|
|
1
|
+
import{writeFileSync as D}from"node:fs";import L from"path";import{SCORECARD_CLASSIC_FOLDER as P,SCORECARD_OUTPUT_FILE_NAME as w}from"../../constants/common.js";import{mapObject as E}from"../../../utils/object/map-object.js";import{envConfig as j}from"../../config/env-config.js";import{removeLeadingSlash as _}from"../../../utils/url/remove-leading-slash.js";import{combineUrls as O}from"@redocly/theme/core/utils";import{logger as F}from"../../tools/notifiers/logger.js";import{getRouteSlugToCatalogSlugMap as N}from"../../utils/catalog-classic/get-route-slug-to-catalog-slug-map.js";import{getCatalogSharedDataId as q}from"../../utils/catalog-classic/get-catalog-shared-data-id.js";import{deepEqual as I}from"../../../utils/object/deep-equal.js";import{ensureDir as U}from"../../utils/index.js";import{getTemplatePath as k}from"./get-template-path.js";import{getAllRuleNames as M}from"./lint.js";import{getScorecardConfig as T}from"./get-scorecard-config.js";import{getScorecardSlug as W}from"./shared-utils.js";import{scorecardConfigLoader as B}from"./loaders/scorecard-config.js";import{scorecardLoader as J}from"./loaders/scorecard.js";import{computeScorecard as $}from"./compute-scorecard.js";import{telemetryTraceStep as x}from"../../../cli/telemetry/helpers/trace-step.js";const G="scorecardClassic";let u={},R={};async function ge({id:b,requiredEntitlements:A,loadersPrefix:v=""}){let p=null,y=null,h=!1;return{id:b??"scorecardClassic",requiredEntitlements:A??["scorecard"],loaders:{[`${v}scorecard-config`]:B,[`${v}scorecard`]:J},async processContent(r,l){await x("com.redocly.build.plugin.scorecardClassic",async C=>{const a=r.createTemplate(G,k("./template/index.js")),g=await l.getConfig(),m=T(g),f=g?.reunite??{},i=[()=>p===null,()=>!I(u,m),()=>!I(R,f)].some(e=>e());u=m,C?.setAttribute("config",JSON.stringify(u||{})),R=f;const n=g.catalogClassic??{},c=u.levels||[];if(c.length<1)throw Error("Invalid configuration of levels config");i&&(p=await $({actions:r,context:l,scorecardConfig:u,reuniteConfig:R}));const{data:{configs:t}}=await l.cache.load("",`${v}scorecard-config`),{perLevel:d,all:s}=M(t);y={levelNames:c.map(e=>e.name),rules:s,rulesPerLevel:d};for(const[e,o]of Object.entries(n)){const S=O(o.slug,"scorecard/");r.addRoute({duplicateInAllLocales:!0,slug:S,fsPath:O(o.slug,"scorecard/"),templateId:a,hasClientRoutes:!0,excludeFromSidebar:!0,serverPropsGetterIds:[],sharedData:[{id:"scorecard",key:"scorecard"},{key:"catalog",id:q(e)}],getNavText:()=>Promise.resolve(o.title||"API design scorecard"),getStaticData:async()=>({props:{catalogId:e,catalogConfig:{...o,items:void 0},scorecardConfig:u,scorecardInfo:y}})})}})},afterRoutesCreated:async(r,l)=>{const C=await l.getConfig(),a=C.catalogClassic??{},g=T(C);if(Object.keys(a).length){const i=Object.keys(a).length>1?await N(r,l,a):null,n={};for(const[c,t]of Object.entries(p||{})){const d=r.getRouteByFsPath(c),s=d?.slug;if(s){if(d&&!g.ignoreMetadata){const e=i?i.get(s)??Object.values(a)[0].slug:Object.values(a)[0].slug,o=O(e,"scorecard/");d.metadata={...d.metadata,scorecardStatus:t.status,scorecardLevel:t.scorecardLevel,scorecardLevelIdx:t.scorecardLevelIdx,scorecardLevels:E(t.levels,S=>({uniqueErrors:S.uniqueErrors,uniqueWarnings:S.uniqueWarnings})),scoreCardSlug:o+"apis/"+encodeURIComponent(_(s))}}if(n[s]={...t,levels:E(t.levels,e=>({...e,problems:e.problems.map(o=>({ruleId:o.ruleId,severity:o.severity}))}))},!h){const e=L.resolve(r.outdir,P,W(s));D(U(e),JSON.stringify(t))}}}await r.createSharedData("scorecard",n)}const m={};for(const[i,n]of Object.entries(p||{})){const c=r.getRouteByFsPath(i)?.slug;c&&(m[c]=n)}const f=j.REDOCLY_METADATA_OUTPUT_FOLDER;!h&&f&&(F.info("Writing scorecard data..."),D(L.join(f,w),JSON.stringify({scorecardData:m,...y}))),h=!0}}}export{ge as scorecardClassicPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
import{removeTrailingSlash as o}from"../../../utils/url/remove-trailing-slash.js";function s(r){const e={error:new Set,warn:new Set};for(const n of r)e[n.severity]?.add(n.ruleId);return{errors:e.error.size,warnings:e.warn.size}}function i(r){return r==="/"?"index.json":o(r).substring(1)+".json"}export{i as getScorecardSlug,s as getUniqueProblemsCount};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useCallback as H,useMemo as b,useState as G,useEffect as _}from"react";import{useLocation as T}from"react-router";import{Flex as U}from"@redocly/portal-legacy-ui";import{Button as x}from"@redocly/theme/components/Button/Button";import{AddIcon as I}from"@redocly/theme/icons/AddIcon/AddIcon";import{SubtractIcon as K}from"@redocly/theme/icons/SubtractIcon/SubtractIcon";import{ArrowLeftIcon as D}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{getScorecardColorVariable as z,withoutPathPrefix as O}from"@redocly/theme/core/utils";import{Link as w}from"../../../../client/app/Link";import J from"../../../../client/app/CircularProgress";import{isDefined as R}from"../../../../utils/guards/is-defined.js";import{removeLeadingSlash as N}from"../../../../utils/url/remove-leading-slash.js";import{StatusByLevelWidget as Q}from"./StatusByLevelWidget";import{OTHER_TEAMS_LABEL as X,NON_CONFORMANT as Y}from"./utils";import{LevelIndicator as Z}from"./LevelIndicator";import{AppPageWrapper as V,CardValue as v,CardsWrapper as j,CatalogDescription as ee,ModeSwitcherTab as te,ModeSwitcherTabs as re,CardRow as B,ProblemsByStatusCardBody as W,ScoreCardStatusCardBody as F,TableWrap as ne,LevelComplianceCardTitle as le,ContentWithDotWrap as C,ScorecardCard as A,ScorecardCardTitle as L,LinkButton as ae}from"./index.styles";import{ApiLevel as M,InstanceStatus as k,LevelStatus as
|
|
1
|
+
import*as e from"react";import{useCallback as H,useMemo as b,useState as G,useEffect as _}from"react";import{useLocation as T}from"react-router";import{Flex as U}from"@redocly/portal-legacy-ui";import{Button as x}from"@redocly/theme/components/Button/Button";import{AddIcon as I}from"@redocly/theme/icons/AddIcon/AddIcon";import{SubtractIcon as K}from"@redocly/theme/icons/SubtractIcon/SubtractIcon";import{ArrowLeftIcon as D}from"@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon";import{getScorecardColorVariable as z,withoutPathPrefix as O}from"@redocly/theme/core/utils";import{Link as w}from"../../../../client/app/Link";import J from"../../../../client/app/CircularProgress";import{isDefined as R}from"../../../../utils/guards/is-defined.js";import{removeLeadingSlash as N}from"../../../../utils/url/remove-leading-slash.js";import{StatusByLevelWidget as Q}from"./StatusByLevelWidget";import{OTHER_TEAMS_LABEL as X,NON_CONFORMANT as Y}from"./utils";import{LevelIndicator as Z}from"./LevelIndicator";import{AppPageWrapper as V,CardValue as v,CardsWrapper as j,CatalogDescription as ee,ModeSwitcherTab as te,ModeSwitcherTabs as re,CardRow as B,ProblemsByStatusCardBody as W,ScoreCardStatusCardBody as F,TableWrap as ne,LevelComplianceCardTitle as le,ContentWithDotWrap as C,ScorecardCard as A,ScorecardCardTitle as L,LinkButton as ae}from"./index.styles";import{ApiLevel as M,InstanceStatus as k,LevelStatus as q,RuleStatus as $}from"./components";import{Grid as S}from"./Grid/Grid";import{useDetailedScorecard as se}from"./useDetailedScorecard";import{Gauge as ce,GaugeValue as oe}from"./Gauge";function Ie(p){const u=T(),{data:d,levelNames:i,hasPublishedAt:n,hasTeam:s,teamLabel:l}=p,f=H((a,o,E)=>{const g=a.getValue(E)?new Date(a.getValue(E)).getTime():0,t=o.getValue(E)?new Date(o.getValue(E)).getTime():0;return g>t?1:-1},[]),m=b(()=>[{id:"title",header:"API",accessorKey:"api.title",size:200,cell:({getValue:a,row:o})=>e.createElement(w,{to:O(u.pathname)+"/apis/"+encodeURIComponent(N(o.original.api.link))},a())},n?{header:"Published at",accessorKey:"api.publishedAt",sortingFn:f,cell:({getValue:a})=>{const o=a();return o?new Date(o).toLocaleDateString():"-"}}:void 0,s?{header:l,accessorKey:"api.team"}:void 0,{id:"level",header:"Level",accessorKey:"scorecard.scorecardLevel",cell:({getValue:a,row:o})=>e.createElement(M,{level:a(),colorVariable:z(o.original?.scorecard.scorecardLevelIdx,i.length+1)})},...i.map(a=>({id:a,header:`${a}`,accessorKey:"scorecard.levels",cell:({getValue:o,row:E})=>{const g=o(),t=E.original.api.link;return g?.[a]?e.createElement(Z,{key:t,uniqueErrors:g[a].uniqueErrors,uniqueWarnings:g[a].uniqueWarnings,id:t}):null}}))].filter(R),[f,i,u.pathname,n,s,l]);return e.createElement(S,{columns:m,data:d,sortBy:[{id:"title",desc:!1}]})}function Ke(p){const u=T(),{data:d}=p,i=b(()=>[{header:"Rules",accessorKey:"ruleId",cell:({getValue:n})=>e.createElement(w,{to:O(u.pathname)+"/rules/"+encodeURIComponent(n())},n())},{id:"status",header:"Status",accessorKey:"status",size:200,cell:({row:n})=>e.createElement($,{errors:n.original.errorApisCount,warnings:n.original.warningApisCount})},{header:"Problem APIs",size:200,accessorKey:"apis",cell:({getValue:n})=>n().length,sortDescFirst:!0},{header:"Problem count",size:200,accessorKey:"count",sortDescFirst:!0}],[u.pathname]);return e.createElement(S,{columns:i,data:d,sortBy:[{id:"status",desc:!0}]})}function De(p){const{data:u,levelNames:d,filters:i,setActiveTab:n,teamLabel:s,teamProperty:l}=p,f=b(()=>[{id:"team",header:`API ${s}`,accessorKey:"team",size:200,cell:({getValue:m})=>e.createElement(ae,{onClick:()=>{n("apis"),i.find(a=>a.property===l)?.selectOption(m())}},m())},...[Y,...d].map(m=>({id:m,header:`${m}`,accessorFn:a=>a.levels[m]?.apis}))],[i,d,n,s,l]);return e.createElement(S,{columns:f,data:u,sortBy:[{id:"team",desc:!1}],groupHeaderTitle:"APIs by level"})}function ie(p){const{data:u,title:d}=p,i=b(()=>[{id:"expand",maxSize:40,size:40,header:()=>null,enableSorting:!1,cell:({row:n})=>n.getCanExpand()?e.createElement(x,{onClick:n.getToggleExpandedHandler(),variant:"text",size:"medium",icon:n.getIsExpanded()?e.createElement(K,null):e.createElement(I,null)}):null},{header:"Rules",accessorKey:"ruleId",cell:({getValue:n,row:s})=>s.getCanExpand()?e.createElement("span",{onClick:s.getToggleExpandedHandler()},n()):null},{header:"Status",accessorKey:"status",size:200,cell:({getValue:n})=>{const s=n();return e.createElement($,{errors:s?.errorsCount,warnings:s?.warningsCount})},enableSorting:!1},{header:"Problem count",accessorKey:"problemsCount",size:200,sortDescFirst:!0}],[]);return e.createElement(S,{columns:i,data:u,sortBy:[{id:"ruleId",desc:!1}],empty:e.createElement(e.Fragment,null,"\u2705 This API is compliant with ",e.createElement("strong",null,d)," level rules"),subRowKey:"problems"})}function ze(p){const{catalogSlug:u,slug:d,data:i,hasTeam:n,hasPublishedAt:s,teamLabel:l}=p,{apis:f,apisCount:m,warningApisCount:a,errorApisCount:o,levels:E,count:g}=i,t=f.length===0,h=t?void 0:{id:"expand",maxSize:40,size:40,header:()=>null,enableSorting:!1,cell:({row:r})=>r.getCanExpand()?e.createElement(x,{onClick:r.getToggleExpandedHandler(),variant:"text",size:"medium",icon:r.getIsExpanded()?e.createElement(K,null):e.createElement(I,null)}):null},P=b(()=>[h,{header:"API",accessorKey:"title"},s?{header:"Published at",accessorKey:"publishedAt",cell:({getValue:r})=>{const c=r();return c?new Date(c).toLocaleDateString():"-"}}:void 0,n?{header:l,accessorKey:"team",cell:({getValue:r})=>r()||X}:void 0,{header:"Problem count",size:200,accessorKey:"count",cell:({getValue:r})=>r()||0,sortDescFirst:!0}].filter(R),[n,s,l,t]),y=b(()=>Object.entries(i.teams).sort((r,c)=>c[1]-r[1]),[i.teams]);return e.createElement(V,null,e.createElement(x,{icon:e.createElement(D,null),iconPosition:"left",variant:"ghost",size:"large",to:`${u}scorecard`},"Back to dashboard"),e.createElement("h1",null,"Rule ",d),e.createElement(j,null,e.createElement(A,null,e.createElement(L,null,"Rule status"),e.createElement(F,null,e.createElement("div",null,e.createElement(v,null,m),e.createElement("br",null),"APIs"),e.createElement("div",null,e.createElement(C,null,e.createElement(v,{style:{textAlign:"right"}},m-a-o),e.createElement(k,{severity:"Pass"})),e.createElement(C,null,e.createElement(v,{style:{textAlign:"right"}},a),e.createElement(k,{severity:"Warn"})),e.createElement(C,null,e.createElement(v,{style:{textAlign:"right"}},o),e.createElement(k,{severity:"Error"}))))),e.createElement(A,null,e.createElement(L,null,"Problems by level"),e.createElement(W,null,Object.entries(E).map(([r,c])=>e.createElement(B,{key:r},e.createElement("span",null,r),e.createElement(ce,{chunks:[{share:c.errors/g*100,colorVariable:"--scorecard-color-error"},{share:c.warnings/g*100,colorVariable:"--scorecard-color-warning"}]}),e.createElement(oe,null,c.errors+c.warnings))))),e.createElement(A,null,e.createElement(L,null,`Problems by ${l}`),e.createElement(W,null,y.slice(0,4).map(([r,c])=>e.createElement(B,{key:r},e.createElement("span",{style:{flex:1,textAlign:"left"}},r),e.createElement(v,null,c)))))),e.createElement(S,{columns:P,data:f,sortBy:[{id:"title",desc:!1}],subRowKey:"problems",slug:d}))}function Oe(p){const{slug:u,api:d,teamLabel:i,catalogSlug:n}=p,{api:s}=d||{},{scorecard:l,isLoading:f}=se(u),m=l?.levels||{},[a,o]=G(Object.keys(m)[0]),E=b(()=>s?.publishedAt instanceof Date?s?.publishedAt.toLocaleDateString():s?.publishedAt,[s]);_(()=>{if(l){const t=l.levels||{};o(Object.keys(t)[0])}},[l]);const g=b(()=>{if(!l?.levels)return{};const t={};for(const h of Object.keys(l.levels)){const P=l.levels[h].problems.reduce((y,r)=>(y[r.ruleId]||(y[r.ruleId]=[]),y[r.ruleId].push(r),y),{});t[h]=Object.entries(P).map(([y,r])=>({ruleId:y,problems:[...r.filter(c=>c.severity==="error"),...r.filter(c=>c.severity==="warn")],problemsCount:r.length,status:{errorsCount:r.filter(c=>c.severity==="error").length,warningsCount:r.filter(c=>c.severity==="warn").length}}))}return t},[l?.levels]);return f?e.createElement(U,{justifyContent:"center",mt:"2em"},e.createElement(J,null)):l?e.createElement(V,null,e.createElement(x,{icon:e.createElement(D,null),iconPosition:"left",variant:"ghost",size:"large",to:`${n}scorecard`},"Back to dashboard"),e.createElement("h1",null,s?.title||u),e.createElement(ee,null,E&&e.createElement(e.Fragment,null,"Published at: ",E,e.createElement("br",null)),e.createElement(w,{to:u,external:!0},"Documentation")),e.createElement(j,null,e.createElement(A,null,e.createElement(le,null,e.createElement("span",null,"Scorecard level"),e.createElement(M,{level:l.scorecardLevel,colorVariable:z(l.scorecardLevelIdx,Object.keys(m).length)})),e.createElement(F,null,e.createElement("div",null,"Compliance by level"),e.createElement("div",null,Object.entries(l.levels).map(([t,h])=>e.createElement(C,{key:t},e.createElement(v,{style:{width:"100px",textAlign:"right"}},t),e.createElement(q,{errors:h.errors,warnings:h.warnings})))))),e.createElement(Q,{title:"Rules compliance",levels:Object.entries(l.levels).map(([t,h])=>({errors:h.uniqueErrors,warnings:h.uniqueWarnings,total:p.rulesPerLevel[t].length,name:t}))}),e.createElement(A,null,e.createElement(L,null,i),e.createElement(v,{style:{fontWeight:"normal"}},s?.team))),e.createElement(re,{style:{justifyContent:"flex-start"},"data-component-name":"Scorecard/ModeSwitcherTabs"},Object.keys(l.levels).map(t=>e.createElement(te,{"data-component-name":"Scorecard/ModeSwitcherTab",key:t,isActive:a===t,onClick:()=>o(t)},e.createElement(C,null,e.createElement("span",null,t)," ",e.createElement(q,{errors:l.levels[t].errors,warnings:l.levels[t].warnings}))))),Object.keys(m).map(t=>e.createElement(ne,{key:t,isActive:a===t},e.createElement(ie,{title:t,data:g[t]})))):e.createElement("div",null,"Scorecard not found")}export{Ie as ApiListView,Oe as ApiPage,ie as ApiView,ze as RuleView,Ke as RulesView,De as TeamsView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{appendFile as
|
|
1
|
+
import{appendFile as T}from"node:fs/promises";import{existsSync as P}from"node:fs";import b from"node:path";import{Client as q}from"typesense";import{SEARCH_GROUP_FACET_FIELD as F,SEARCH_PRODUCT_FIELD as L,SEARCH_RBAC_FIELD as d,SEARCH_VERSION_FIELD as h}from"../../../../../constants/common.js";import{DISABLE_DEEP_LINK_IF_FIELDS_EXIST as v,HIGHLIGHTED_TEXT_MAX_LENGTH as C,SEARCH_DATA_EXPORT_FOLDER as R,SEARCH_DOCUMENT_METADATA_KEY as j,SEARCH_GROUP_LIMIT as O,SEARCH_MAX_FACET_VALUES as y,SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT as k}from"../../../../constants/plugins/search.js";import{telemetryTraceStep as N}from"../../../../telemetry/helpers/trace-step.js";import{envConfig as _}from"../../../../config/env-config.js";import{logger as I}from"../../../../tools/notifiers/logger.js";import{ensureDir as E}from"../../../../utils/index.js";class X{#e=null;#i="";#t=[{name:"title",type:"string",facet:!1,optional:!0},{name:"text",type:"string",facet:!1,optional:!0},{name:"path",type:"string[]",facet:!1,optional:!0},{name:"isAdditionalOperation",type:"bool",facet:!1,optional:!0,queryable:!1},{name:"deprecated",type:"bool",facet:!1,optional:!0,queryable:!1},{name:"parameters",type:"object[]",facet:!1,optional:!0},{name:"parameters.name",type:"string[]",facet:!1,optional:!0,queryable:!1},{name:"parameters.description",type:"string[]",facet:!1,optional:!0,queryable:!1},{name:"parameters.place",type:"string[]",facet:!1,optional:!0,queryable:!1},{name:"parameters.path",type:"string[]",facet:!1,optional:!0,queryable:!1},{name:L,type:"string",facet:!0,optional:!0},{name:h,type:"object",facet:!0,optional:!0},{name:d,type:"string[]",facet:!0},{name:"metadata_curated",type:"bool",facet:!1,optional:!0,queryable:!1},{name:"metadata_keywords_excludes",type:"string[]",facet:!1,optional:!0,queryable:!1},{name:"metadata_keywords_includes",type:"string[]",facet:!1,optional:!0,queryable:!1}];#s=new Map;#r={ORGANIZATION_ID:_.ORGANIZATION_ID??"",PROJECT_ID:_.PROJECT_ID??"",TYPESENSE_API_URL:_.TYPESENSE_API_URL??"",TYPESENSE_API_KEY:_.TYPESENSE_API_KEY??""};constructor(){if(!_.isBuildMode){for(const[e,t]of Object.entries(this.#r))if(!t)throw new Error(`Cannot initialize search index. ${e} is not set`);this.#i=`${this.#r.ORGANIZATION_ID}_${this.#r.PROJECT_ID}_`,this.#e=new q({nodes:[{url:this.#r.TYPESENSE_API_URL}],apiKey:this.#r.TYPESENSE_API_KEY,connectionTimeoutSeconds:5})}}async initIndexSchema(e){this.#b(e)}async addDocuments(e,t){const{locale:s,outDir:a}=t,n=e.map(r=>{const i={...r},c=r[j];return c&&(c.curated&&(i.metadata_curated=c.curated),c.excludes&&(i.metadata_keywords_excludes=c.excludes),c.includes&&(i.metadata_keywords_includes=c.includes)),i}),o=this.#s.get(s)??[];this.#s.set(s,o.concat(n)),o.length+e.length>=k&&await this.exportDocuments(a)}async search(e,t){return await N("com.redocly.search.performed",async s=>{s?.setAttribute("id","searchQueryId"),s?.setAttribute("object","searchQuery"),s?.setAttribute("uri","urn:redocly:realm:api:searchQuery:searchQueryId");const{query:a,locale:n,filter:o,loadMore:r}=e,i=this.#f(n),c={collection:i,q:a||"*",query_by:this.#h(),max_facet_values:y};if(s?.setAttribute("collectionName",i),s?.setAttribute("locale",n),this.#e)if(r){const{groupKey:l,offset:u}=r,f={offset:u,filter_by:this.#n(t,o),facet_by:"*",per_page:O};return s?.setAttribute("isLoadMore",!0),s?.setAttribute("filter",f.filter_by),this.#d(await this.#e.collections(i).documents().search({...c,...f}),l)}else{const l=this.#n(t,o);s?.setAttribute("filter",l);const u=await this.#e.multiSearch.perform({searches:this.#F(t,o)},c),f=this.#c(u,this.#o());f&&I.warn("Search facet requests failed: %s",f);const p=this.#y(u),m=(p[F]??[]).map(A=>A.value);s?.setAttribute("groups",m.join(",")),m.length===y&&I.warn("Search category facet list reached the limit of %s; results for some categories may be missing",y);const D=[...new Set(this.#m(o))].slice(0,y),g=D.length?D:m;if(!g.length)return{facets:p,documents:{},groupCounts:{}};const S=await this.#e.multiSearch.perform({searches:g.map(A=>({filter_by:`${l} && (${F}:=${this.#a(A)})`,per_page:O}))},c),$=this.#c(S,g);return $&&I.warn("Search category requests failed: %s",$),this.#_(S,g,p,o)}else return{facets:{},documents:{}}})}#d(e,t){const s={facets:{},documents:{[t]:[]},groupCounts:typeof e.found=="number"?{[t]:e.found}:{}};if(e.hits&&e.hits.length)for(const a of e.hits)s.documents[t].push({document:this.#l(a),highlight:this.#u(a)});return s}#y(e){const t={};if("results"in e){for(const s of e.results)if(s.facet_counts&&s.facet_counts.length)for(const a of s.facet_counts)t[a.field_name]=a.counts.map(n=>({value:n.value,count:n.count}))}return t}#c(e,t){return"results"in e?e.results.map((s,a)=>({result:s,label:t[a]})).filter(({result:s})=>"error"in s).map(({result:s,label:a})=>`${a}: ${s.error}`).join("; "):""}#_(e,t,s,a){const n={},o={facets:s,documents:{},groupCounts:n};for(const r of this.#m(a))o.documents[r]=[];return"results"in e&&e.results.forEach((r,i)=>{const c=t[i];typeof r.found=="number"&&(n[c]=r.found);const l=r.hits??[];l.length&&(o.documents[c]=l.map(u=>({document:this.#l(u),highlight:this.#u(u)})))}),o}#l(e){return this.#g(e)}#u(e){const t={},s=[];for(const[a,n]of Object.entries(e.highlight??{}))if(Array.isArray(n)){if(a==="path"){const o=n,r=[];for(const i of o)r.push(i.snippet);t.path=r}else if(a==="parameters"){const o=n;for(const r of o){let i=!1;for(const[c,l]of Object.entries(r))if(c!=="deepLink")if(Array.isArray(l))for(const u of l)u.matched_tokens?.length&&(i=!0);else l.matched_tokens?.length&&(i=!0);if(i){const c={name:r.name?.snippet||"",description:r.description?.snippet||"",place:r.place?.snippet||"",path:r.path?.map(l=>l?.snippet)||[]};t.parameters=[c];break}}}}else t[a]=n.snippet,s.push(a);for(const[a,n]of Object.entries(e.document))!s.includes(a)&&typeof n=="string"&&(t[a]=n.length>C?`${n.substring(0,C)}...`:n);return t.parameters||(t.parameters=[]),t}#g(e){let t;const s=Object.keys(e.highlight??{});for(const n of v)if(s.some(o=>o===n))return e.document;const a=e.highlight?.parameters;if(a){for(const n of a)for(const[o,r]of Object.entries(n))if(o!=="deepLink"){if(Array.isArray(r)){for(const i of r)if(i.matched_tokens?.length){t=n.deepLink?.snippet??t;break}}else if(r.matched_tokens?.length){t=n.deepLink?.snippet??t;break}}}if(t){const n=t.split("#")[1];return{...e.document,url:`${e.document.url}#${n}`}}return e.document}async exportDocuments(e){const t='{"documents":[',s=E(b.join(e,R));for(const[a,n]of this.#s){if(n.length===0)continue;const o=E(b.join(s,`${a}.json`)),r=!P(o),i=JSON.stringify(n).substring(1).slice(0,-1),c=r?t+i:","+i;await T(o,c,{encoding:"utf8"}),this.#s.set(a,[])}}async exportIndexes(e){const t=E(b.join(e,R));for(const s of this.#s.keys()){const a=E(b.join(t,`${s}.json`)),n=`],"schemaFields":${JSON.stringify(this.#t)}}`;await T(a,n,{encoding:"utf8"})}}async import(e){}async countFacets(e,t){return await N("com.redocly.search.facets",async s=>{s?.setAttribute("id","searchFacetsId"),s?.setAttribute("object","searchFacets"),s?.setAttribute("uri","urn:redocly:realm:api:searchFacets:searchFacetsId");const{locale:a,query:n,facetQuery:o,filter:r,field:i}=e,c=this.#f(a),l={q:n||"*",query_by:this.#h(),facet_by:"*",facet_query:this.#A(o,i),filter_by:this.#n(t,r,i),max_facet_values:y,per_page:0};if(s?.setAttribute("collectionName",c),s?.setAttribute("query",l.q),s?.setAttribute("facetQuery",l.facet_query),s?.setAttribute("filter",l.filter_by),this.#e){const u={},f=await this.#e.collections(c).documents().search(l);if(f.facet_counts&&f.facet_counts.length)for(const p of f.facet_counts)u[p.field_name]=p.counts.map(m=>({value:m.value,count:m.count,isCounterVisible:!!n||(r?.length||0)>0}));return u}else return{}})}#f(e){return`${this.#i}${e}`}#b(e){for(const[t,{queryable:s}]of e)this.#t.find(a=>a.name===t)||this.#t.push({queryable:s,name:t,type:"string",facet:!0,optional:!0})}#h(){return this.#t.filter(e=>e.facet?e.queryable:e.queryable!==!1).map(e=>e.name).join(",")}#a(e){return`\`${e.replaceAll("`","")}\``}#n(e,t,s){const a=e.teams.filter(r=>!r.includes("`")&&!r.includes("*")).map(r=>this.#a(r)),n=a.length?`${d}:=[${a.join(", ")}]`:`${d}:=[\`anonymous\`] && ${d}:!=[\`anonymous\`]`,o=(t??[]).filter(r=>r.field!==s&&r.field!==h&&r.values.length&&this.#p(r.field)).map(r=>{const i=r.values.map(c=>this.#a(c));return`${r.field}:=[${i.join(", ")}]`});return[n,...o,this.#E(t)].map(r=>`(${r})`).join(" && ")}#p(e){return this.#o().includes(e)}#o(){return this.#t.filter(e=>e.facet&&e.name!==d&&e.name===e.name.trim()).map(e=>e.name)}#E(e){const t=e?.find(r=>r.field===h);if(t?.values.length!==2)return`${h}.isDefault:true`;const[s,a]=t.values.map(r=>this.#a(r)),n=`(${h}.folderId:! ${s} && ${h}.isDefault:true)`,o=`(${h}.folderId: ${s} && ${h}.version:=${a})`;return`${n} || ${o}`}#A(e,t){return e&&t&&this.#p(t)?`${t}:${e}`:""}#m(e){const t=[];if(e&&e.length)for(const s of e)s.field===F&&t.push(...s.values);return t}#F(e,t){const s=[];for(const a of this.#o()){const n={facet_by:a,filter_by:this.#n(e,t,a),per_page:0};s.push(n)}return s}cleanupFacetValues(e){const t=e.getSearchFacets();t.forEach(s=>{s.values=[]}),e.setSearchFacets(t)}}export{X as Typesense};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function c(d){let e;try{e=decodeURIComponent(d)}catch{return}return/[\\\0]/.test(e)||e.replace(/\/$/,"").split("/").slice(1).some(t=>t===""||t==="."||t==="..")?void 0:e}export{c as decodeRequestPath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import n from"path";import{removeLeadingSlash as s}from"../../../utils/url/remove-leading-slash.js";import{fileExistsAsync as l}from"../index.js";async function f(e,o,r){if(r){const t=await r.getPageMarkdown(e);return{exists:t!==void 0,content:t?.content,route:t?.route}}const i=e==="/index.html.md"?"/":e.replace(/\.md$/i,"");return{exists:await l(n.resolve(o.outdir,s(e))),content:void 0,route:o.getRouteBySlug(i,{followRedirect:!1})}}export{f as resolveLlmsTxtMd};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import R from"path";import
|
|
1
|
+
import R from"path";import T from"picomatch";import"../node-crypto-polyfill.js";import{REDOCLY_TEAMS_RBAC as L,REDOCLY_ROUTE_RBAC as A}from"@redocly/config";import{MCP_ROUTE as U,PUBLIC_MCP_ROUTE as k}from"@redocly/theme/core/constants/mcp";import{ServerRoutes as w}from"../../constants/api.js";import{DEFAULT_ANONYMOUS_VISITOR_TEAM as D,PUBLIC_RBAC_SCOPE_ITEM as y,RBAC_ALL_OTHER_TEAMS as l,DEFAULT_RBAC_SCOPE as x,GRAPHQL_SPEC_SLUG as B}from"../../constants/common.js";import{DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as g,PUBLIC_API_DEFINITIONS_FOLDER as C,PUBLIC_ASSETS_FOLDER as b,RUNTIME_RESOURCES_DIR as $,SCORECARD_CLASSIC_FOLDER as W,SITEMAP_FILE_NAME as v,LLMS_TXT_FILE_NAME as Y}from"../constants/common.js";import{MCP_CREDENTIALS_ROUTE as G}from"../constants/mcp.js";import{ANONYMOUS_AUTH_DETAILS as H}from"../constants/rbac.js";import{removeTrailingSlash as P}from"../../utils/url/remove-trailing-slash.js";import{removeLeadingSlash as z}from"../../utils/url/remove-leading-slash.js";import{parsePathVersions as K}from"../../utils/path/parse-path-versions.js";import{reporter as V}from"../tools/notifiers/reporter.js";import{bold as J}from"../tools/notifiers/helpers/colors.js";import{shaDirPathShort as Q}from"../utils/crypto/sha-dir-path-short.js";import{isTruthy as X}from"../../utils/guards/is-truthy.js";import{isPathInFolder as I}from"../../utils/path/is-path-in-folder.js";import{canExpandConfig as Z,expandRbacConfig as q,getTeamFolderDefaults as tt,parseTeamFoldersTemplate as et,parseTeamNameTemplate as rt}from"./rbac-expand.js";import{getUserParamsFromCookies as nt}from"../web-server/auth.js";import{getDeeperGlobPattern as ot}from"./globs.js";import{EntitlementsProvider as st}from"../entitlements/entitlements-provider.js";const j=["NONE","READ","TRIAGE","WRITE","MAINTAIN","ADMIN"],ct=new Set(["x-parsed-md-description","x-parsed-md-summary"]),it=new Set(Object.values(w).map(t=>P(t.split(":")[0])));function wt(t,e){const r=j.indexOf(t.toUpperCase()),n=j.indexOf(e.toUpperCase());return r>n?t:e}const _={};function F(t,e){if(!t?.content)return y;const r=t.content,{slug:n,fsPath:o}=e;if(!n&&!o)return y;const s=a=>{const d=`slug:${a}`,p=_[d]??T(a);_[d]=p;const E=`fsPath:${a}`,S=_[E]??T(z(a));return _[E]=S,!!(n&&p(n))||!!(o&&S(o))};if(ut(n||o||"")&&Object.keys(r).filter(p=>s(p)).length===0)return r[x]||y;const f=Object.keys(r).filter(a=>s(a));if(f.length==0)return y;const u=f.map(a=>T.scan(a,{tokens:!0,parts:!0}));let h=u[0];for(let a=1;a<u.length;a++)h=ot(h,u[a]);return r[h.input]}function N(t,e,r){const n=r?[...e,r]:e,o=[];for(const s of n)t[s]?o.push(t[s]):t[l]&&s!==r&&o.push(t[l]);return o.some(s=>s.toLowerCase()!=="none")}function Bt(t,e,r={},n=!1){if(n&&Object.keys(r).length===0)return e.isAuthenticated;const o=r.features?.[t];return o?N(o,e.teams):!0}function bt(t,e){return O(t,H,e.access?.rbac||{},e.access?.requiresLogin||!1)}function O(t,e={},r={},n=!1){if(t.slug&&typeof t.slug=="string"&&it.has(P(t.slug))||(t.slug===U||t.slug===k||t.slug===G)&&st.instance().canAccessFeature("mcp"))return!0;if(n&&Object.keys(r).length===0)return!!e.isAuthenticated;const o=q(r,e.teams||[]),s=t[L]||F(o,t[A]||{});return Object.keys(s||{}).length===0?!1:Object.keys(s).length===1&&s[l]&&s[l].toLowerCase()!=="none"?!0:N(s,e?.teams||[],e?.email)}function $t(t,e,r,n){if(!t.startsWith(C)&&!t.startsWith(g))return!0;const o=t.replace(new RegExp(`^${C}/`),"").replace(new RegExp(`^${g}/`),"").replace(new RegExp(`^${B}/`),""),c=o==="."?"":o,i={[A]:{slug:t,fsPath:c},slug:t};return O(i,n,e,r)}function Wt(t,e,r,n,o){if(!I(t,b))return[`/${v}`,`/${Y}`].includes(t)||[$,W].some(E=>I(t,E));const s=t.match(/\..{64}\.([A-Fa-f0-9]{8})\.[^.]+$/)?.[1];if(!s)return!0;const c=n[s];if(!c)return!0;const{base:i,ext:f}=R.parse(t),u=i.split(".")[0],h=f.split(".").join(""),d=c==="."?"":c,p={[A]:{slug:t,fsPath:R.posix.join(d,`${u}.${h}`)},slug:t};return O(p,o,e,r)}async function vt(t,e){const{isAuthenticated:r=!1,idpAccessToken:n,federatedAccessToken:o,federatedIdToken:s,...c}=await nt(t,e),{teams:i=[]}=c;let f;return r?f=i.filter(u=>u!==D):f=[D],{isAuthenticated:r,idpAccessToken:n,teams:f,claims:c}}function M(t,e,r={},n=!1){if(!t)return t;if(Array.isArray(t)){const o=[];for(const s of t){const c=M(s,e,r,n);c!==void 0&&o.push(c)}return o}if(typeof t=="object"){if(!O(t,e,r,n))return;let o=!1;const s={};for(const c in t){if(c===L||c===A)continue;if(ct.has(c)){s[c]=t[c];continue}const i=M(t[c],e,r,n);if(!t.link&&(c==="items"||c==="menu"&&t.type==="tab")&&Array.isArray(i)&&i.length===0&&t[c].length!==0){o=!0;continue}i!==void 0&&(s[c]=i),c==="paths"&&at(i)&&ft(i)}return o?void 0:s}return t}function Yt(t){return typeof t=="string"?t.split(" ").filter(Boolean):Array.isArray(t)?t.map(e=>e.toString()):[]}function Gt(t,e){if(!e)return;const r=e.content;if(!r)return e;const n=Object.entries(r).flatMap(([s,c])=>s===x?[[s,c]]:[[s,c]].concat(t.localeFolders.map(i=>[s.startsWith("/")?`/${i.toLocaleLowerCase()}${s}`:R.posix.join(t.localizationFolder,i,s),c]))),o=Object.fromEntries(n);return{...e,content:o}}async function Ht(t,e){if(!e)return{};const r={},n=new Set(t.scan().flatMap(({relativePath:o})=>{const{versionFolderPath:s}=K(o)||{},c=R.dirname(o);return s?[s,c]:c}));for(const o of n)r[Q(o)]=o;return r}const m=t=>typeof t=="object"&&t!==null&&!Array.isArray(t);function at(t){return m(t)&&Object.keys(t).length>0}function ft(t){for(const e of Object.keys(t)){const r=t[e];m(r)&&Object.keys(r).length===0&&delete t[e]}}function ut(t){return t?t.split("/").filter(Boolean).some(r=>r.startsWith(".")):!1}const lt=t=>{if(t&&m(t)&&("content"in t&&m(t.content)||"reunite"in t&&m(t.reunite)||"features"in t&&m(t.features)||t.teamFolders&&t.teamNamePatterns)){const e=Object.values(t.content||{});if(e.length===0)return!0;if(e.every(m))return e.every(r=>Object.values(r).every(n=>typeof n=="string"))}return!1},zt=async t=>{if(t){if(Object.keys(t).length===0)return{};if(lt(t))return mt(t);await V.panicOnContentError(`You are using an incorrect format of ${J("rbac:")} configuration. See: https://redocly.com/docs/realm/access`)}},mt=t=>{const e={...t};if(e.content){const r={};for(const n in e.content)if(e.content[n]!==void 0){const o=P(n);r[o]=e.content[n]}e.content=r}return e};function Kt(t,e){const r=t.fsPath,n=t.slug,o=[],s=Z(e)&&(r||n)?et(e,[r,n].filter(X)):null;if(s){const i=e?.teamNamePatterns?.map(f=>f.replace("{teamPathSegment}",s.teamPathSegment).replace("{projectRole}","read"))??[];o.push(...i)}const c=F(s?{content:{...tt(e),...e.content}}:e,t);return o.push(...pt(c)),ht(e,o)}function pt(t){if(!t)return[];const e=[],r=l in t?{authenticated:t[l],anonymous:t[l]}:{};for(const[n,o]of Object.entries({...r,...t}))o.toLowerCase()!=="none"&&n!==l&&e.push(n);return e}function ht(t,e){return e.map(n=>rt(t,n)??{teamName:n}).map(n=>n.projectRole&&n.projectRole!=="READ"?n.teamName?.toLowerCase().replace(n.projectRole?.toLowerCase?.()??"","read")??"":n.teamName?.toLowerCase()??"")}export{j as PROJECT_ROLES_ORDERED_BY_ACCESS_LEVEL,Gt as applyL10nToRbacConfig,Wt as canAccessAsset,Bt as canAccessFeature,O as canAccessResource,$t as canDownloadApiDefinition,ht as expandTeamsForRead,pt as extractTeamsFromScopeItems,M as filterDataByAccessDeep,vt as getAuthDetailsFromCookies,wt as getHigherRole,Kt as getRbacTeamsListForResource,F as getScopeItemsForResource,N as hasScopeAccess,lt as isRbacConfigValid,bt as isResourcePubliclyAccessible,mt as normalizeRbacConfig,zt as parseRbacConfig,Yt as parseTeamClaimToArray,Ht as resolveDirectoryHashes};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import m from"path";import{realpath as
|
|
1
|
+
import m from"path";import{realpath as G}from"fs/promises";import{REDOCLY_ROUTE_RBAC as z,REDOCLY_TEAMS_RBAC as j}from"@redocly/config";import{combineUrls as V,withoutPathPrefix as ie,withPathPrefix as R}from"@redocly/theme/core/utils";import{CACHE_CONTROL_NO_STORE_HEADER_VALUE as W,CACHE_CONTROL_PUBLIC_HTML as ae,DEFAULT_IMMUTABLE_CACHE_MAX_AGE as se,DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER as ce,PAGE_DATA_FOLDER as le,PUBLIC_API_DEFINITIONS_FOLDER as me,PUBLIC_ASSETS_FOLDER as ue,STATIC_DATA_FOLDER as de,X_REDOCLY_CACHE_CONTROL_HEADER as fe,X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML as ge}from"../../constants/common.js";import{removeTrailingSlash as Z}from"../../../utils/url/remove-trailing-slash.js";import{findInIterable as pe}from"../../../utils/collection/find-in-iterable.js";import{sanitizeRedirectPathname as he}from"../../../utils/url/sanitize-redirect-pathname.js";import{envConfig as Re}from"../../config/env-config.js";import{addLeadingSlash as Ae}from"../../../utils/url/add-leading-slash.js";import{isPathInFolder as D}from"../../../utils/path/is-path-in-folder.js";import{getLlmsTxtMdPathBySlug as Ee}from"../../utils/llmstxt/get-llms-txt-md-path-by-slug.js";import{resolveLlmsTxtMd as J}from"../../utils/llmstxt/resolve-llms-txt-md.js";import{removeLeadingSlash as I}from"../../../utils/url/remove-leading-slash.js";import{decodeRequestPath as Ce}from"../../utils/decode-request-path.js";import{AI_INDEX_EXPORT_FOLDER as _e,SEARCH_DATA_EXPORT_FOLDER as Le}from"../../constants/plugins/search.js";import{processRedirects as Te}from"./helpers/process-redirects.js";import{renderPage as Pe,getServerProps as Oe}from"../../ssr/index.js";import{canAccessAsset as we,canAccessResource as K}from"../../utils/rbac.js";import{handleErrorPageRender as A,handleUnauthorized as Q,handleUnauthorizedAsset as x}from"../utils.js";import{DEFAULT_MAX_AGE_FOR_MIME_TYPE as De,MIME_TYPES as Ie}from"../mime-types.js";import{fileExistsAsync as Se}from"../../utils/index.js";import{isAiAgentRequest as ye}from"../../utils/ai-agent-detection.js";import{getRedirectRoute as Ue}from"../utils/legacy-openapi-redirects.js";import{getContentTypeHeaderValue as ee}from"../utils/content-type.js";import{telemetry as be}from"../../../cli/telemetry/index.js";import{telemetry as Me}from"../../telemetry/index.js";const Fe=[Le,_e,de,I(me),I(ce),le];async function qe(e,E){try{const[C,u]=await Promise.all([G(e),G(E)]);return Fe.some(t=>D(C,m.join(u,t)))}catch{return!1}}function mt(e,E,C,u){return async t=>{const S=t.get("logger"),i=t.req,c=new URL(i.url),_=c.pathname.replace(/\/{2,}/g,"/"),y=Ce(_);if(y===void 0)return t.text("Bad Request",400);const d=Re.isProductionEnv?301:302;if(_!==c.pathname)return t.newResponse(null,d,{Location:_+c.search});const r=ie(y),U=m.parse(r).ext.toLowerCase()===".md",b=ye({accept:i.header("accept"),signatureAgent:i.header("signature-agent"),signature:i.header("signature"),signatureInput:i.header("signature-input"),userAgent:i.header("user-agent")}),a=Ae(Z(r)),o=(i.method==="GET"||i.method==="HEAD")&&!U?e.getRouteBySlug(a,{followRedirect:!1})||pe(e.routesBySlug?.values(),n=>n.hasClientRoutes&&(r===n.slug||r.startsWith(n.slug+"/"))):void 0,M=e.getRedirect(a);if(M){const n=Te({redirect:M,reqUrlSearch:c.search});return Me.sendRedirectMessage([{id:a,object:"redirect",uri:`urn:redocly:realm:api:redirect:${a}`,from:a,templateId:n.type.toString()}]),t.newResponse(null,n.type,{Location:n.location})}if(o?.metadata?.type==="openapi"){const n=Ue(c.pathname);if(n)return S.info("Legacy OpenAPI docs redirect from "+c.pathname),t.newResponse(null,d,{Location:encodeURI(n)});if(r.match(/[A-Z]/))return S.warn("Redirect to lowercase route to avoid 404 error"),t.newResponse(null,d,{Location:encodeURI(R(r.toLowerCase()))})}if(r.endsWith("/")&&r!=="/"){const n=he(new URL(a||"/",t.req.url).pathname);return t.newResponse(null,d,{Location:R((n==="/"?"/":Z(n))+c.search)})}const{isAuthenticated:f,teams:L,claims:{email:T}}=t.get("auth");if(o&&!K(o,{isAuthenticated:f,email:T,teams:L},e.config.access?.rbac,e.config.access?.requiresLogin))return f?A(t,e,{slug:o.slug,[j]:o[j],[z]:o[z]},403):Q(t,e,o.slug);const g=o&&b?Ee(o.slug):void 0,F=g?await J(g,e,u):void 0,P=F?.exists??!1;if(o&&(!b||!P)){const n=await E(o),N=await Oe(o,t,n,e),{html:ne,statusCode:X,error:oe}=await Pe(o,N,t,e,be),Y=e.config.access?.rbac,$=!e.config.access?.requiresLogin&&(!Y||!Object.keys(Y).length),k=X>=400||!!oe||!!e.compilationErrors?.length,re=$&&!k;let h;return k?h=W:$?h=ae:h="private",t.html(ne,X,{"Cache-Control":h,...re&&{[fe]:ge}})}const p=g&&P?g:r,te=I(p),s=m.resolve(e.outdir,te);if(!D(s,e.outdir))return x(t);const q=U?await J(r,e,u):void 0,l=q?.route;if(l&&!K(l,{isAuthenticated:f,email:T,teams:L},e.config.access?.rbac,e.config.access?.requiresLogin))return Q(t,e,r);if(!P&&!l){if(await qe(s,e.outdir))return A(t,e,{slug:a},404);const n=e.getGlobalConfig("access");if(!we(p,n?.rbac||{},n?.requiresLogin||!1,e.getGlobalConfig("directoryPaths"),{isAuthenticated:f,email:T,teams:L}))return D(p,ue)?x(t):A(t,e,{slug:a},404)}const O=Ie[m.extname(s)]||"text/plain",w=s.match(/assets\/.*\.[a-f0-9]{8,}\..+/)||s.match(/runtime\/chunks\/.*/)?se:De[O],H=w?{"Cache-Control":`public, max-age=${w}, immutable`,Expires:new Date(Date.now()+w*1e3).toUTCString()}:{"Cache-Control":W},B=i.query("download")!=null,v=F?.content??q?.content;if(v!==void 0)return t.newResponse(v,200,{"Content-Type":ee(O),"Access-Control-Allow-Origin":"*",...H,...l&&{"X-Robots-Tag":"noindex, follow",...e.config.seo?.siteUrl&&{Link:`<${V(e.config.seo.siteUrl,R(l.slug))}>; rel="canonical"`}},...B&&{"Content-Disposition":`attachment; filename="${m.basename(p)}"`}});if(await Se(s)){const n=await C(s);return t.newResponse(n,200,{"Content-Type":ee(O),"Access-Control-Allow-Origin":"*",...H,...l&&{"X-Robots-Tag":"noindex, follow",...e.config.seo?.siteUrl&&{Link:`<${V(e.config.seo.siteUrl,R(l.slug))}>; rel="canonical"`}},...B&&{"Content-Disposition":`attachment; filename="${m.basename(s)}"`}})}else return A(t,e,{slug:a},404)}}export{mt as dynamicRouteHandler};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Handler } from 'hono';
|
|
2
2
|
import type { Store } from '../../store.js';
|
|
3
3
|
import type { FEEDBACK_TYPES } from '../../../constants/common.js';
|
|
4
4
|
type FeedbackData = {
|
|
@@ -32,12 +32,6 @@ export declare function normalizeFeedbackData({ component, path, location, lang,
|
|
|
32
32
|
origin: string | undefined;
|
|
33
33
|
metadata: Record<string, any> | undefined;
|
|
34
34
|
};
|
|
35
|
-
export declare function feedbackHandler(store: Store):
|
|
36
|
-
errors: string[];
|
|
37
|
-
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
38
|
-
errors: string[];
|
|
39
|
-
}, 404, "json">) | (Response & import("hono").TypedResponse<{
|
|
40
|
-
errors: string[];
|
|
41
|
-
}, 403, "json">) | (Response & import("hono").TypedResponse<never, 500, "json">)>;
|
|
35
|
+
export declare function feedbackHandler(store: Store): Handler;
|
|
42
36
|
export {};
|
|
43
37
|
//# sourceMappingURL=feedback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{removeTrailingSlash as
|
|
1
|
+
import{removeTrailingSlash as i}from"../../../../utils/url/remove-trailing-slash.js";import{isLocalLink as e}from"../../../../utils/path/is-local-link.js";import{withPathPrefix as r}from"@redocly/theme/core/utils";function m({redirect:o,reqUrlSearch:t=""}){const n=e(o.to)?r(o.to):o.to;return{location:a(i(n))+t,type:o?.type||301}}function a(o){return encodeURI(o).replace(/%25([0-9A-Fa-f]{2})/g,"%$1")}export{m as processRedirects};
|
|
@@ -13,9 +13,7 @@ export declare function handleErrorPageRender(ctx: Context, store: Store, option
|
|
|
13
13
|
}, statusCode: ClientErrorStatusCode, templateId?: string): Promise<Response>;
|
|
14
14
|
export declare function getLoginUrlWithRedirect(redirectTo: string): string;
|
|
15
15
|
export declare function handleUnauthorizedAsset(ctx: Context): Promise<Response & import("hono").TypedResponse<string, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "text">>;
|
|
16
|
-
export declare function handleUnauthorizedApiRequest(ctx: Context): Response
|
|
17
|
-
message: string;
|
|
18
|
-
}, -1 | 100 | 102 | 103 | 200 | 201 | 202 | 203 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511, "json">;
|
|
16
|
+
export declare function handleUnauthorizedApiRequest(ctx: Context): Response;
|
|
19
17
|
/**
|
|
20
18
|
* Normalize the IP address to an IPv4 address.
|
|
21
19
|
* @param address - The IP address to normalize.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/reef",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.140.0-next.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"@opentelemetry/sdk-trace-web": "2.8.0",
|
|
34
34
|
"@opentelemetry/semantic-conventions": "1.40.0",
|
|
35
35
|
"@redocly/ajv": "8.18.0",
|
|
36
|
-
"@redocly/api-docs": "0.
|
|
36
|
+
"@redocly/api-docs": "0.5.0-next.1",
|
|
37
37
|
"@redocly/config": "0.67.0",
|
|
38
38
|
"@redocly/openapi-core": "2.66.0",
|
|
39
39
|
"@redocly/portal-legacy-ui": "0.19.0",
|
|
40
40
|
"@redocly/portal-plugin-mock-server": "0.24.0",
|
|
41
41
|
"@redocly/realm-asyncapi-sdk": "0.17.0",
|
|
42
|
-
"@redocly/theme": "0.
|
|
42
|
+
"@redocly/theme": "0.72.0-next.0",
|
|
43
43
|
"@shikijs/transformers": "3.21.0",
|
|
44
44
|
"@tanstack/react-query": "5.62.3",
|
|
45
45
|
"@tanstack/react-table": "8.21.3",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"fflate": "0.7.5",
|
|
62
62
|
"flexsearch": "0.7.43",
|
|
63
63
|
"graphql": "16.14.2",
|
|
64
|
-
"hono": "4.13.
|
|
64
|
+
"hono": "4.13.13",
|
|
65
65
|
"htmlparser2": "8.0.2",
|
|
66
66
|
"i18next": "22.4.15",
|
|
67
67
|
"is-glob": "4.0.3",
|