fumadocs-openapi 10.6.5 → 10.6.7
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/css/generated/shared.css +59 -6
- package/dist/generate-file.js +3 -2
- package/dist/i18n.d.ts +3 -1
- package/dist/i18n.js +3 -1
- package/dist/playground/auth.js +92 -0
- package/dist/playground/client.d.ts +5 -12
- package/dist/playground/client.js +257 -217
- package/dist/playground/components/inputs.js +2 -2
- package/dist/playground/components/oauth-dialog.js +126 -163
- package/dist/playground/components/result-display.d.ts +16 -0
- package/dist/playground/components/result-display.js +141 -0
- package/dist/playground/components/server-select.js +1 -1
- package/dist/playground/components/spinner.js +14 -0
- package/dist/playground/fetcher.d.ts +9 -3
- package/dist/playground/fetcher.js +7 -18
- package/dist/playground/status-info.js +27 -23
- package/dist/requests/generators/csharp.js +2 -1
- package/dist/requests/generators/curl.js +5 -5
- package/dist/requests/generators/go.js +5 -5
- package/dist/requests/generators/java.js +4 -4
- package/dist/requests/generators/javascript.js +3 -3
- package/dist/requests/generators/python.js +5 -4
- package/dist/requests/media/adapter.js +7 -7
- package/dist/requests/string-utils.js +25 -4
- package/dist/requests/types.d.ts +3 -2
- package/dist/ui/api-page.js +3 -1
- package/dist/ui/base.d.ts +8 -4
- package/dist/ui/base.js +6 -1
- package/dist/ui/client/boundary.lazy.js +2 -1
- package/dist/ui/client/i18n.js +6 -4
- package/dist/ui/client/storage-key.js +1 -1
- package/dist/ui/components/dialog.js +1 -1
- package/dist/ui/contexts/api.d.ts +6 -3
- package/dist/ui/contexts/api.js +7 -2
- package/dist/ui/create-client.js +5 -0
- package/dist/ui/operation/client.js +1 -1
- package/dist/ui/operation/index.js +1 -1
- package/dist/ui/operation/request-tabs.d.ts +10 -0
- package/dist/ui/operation/request-tabs.js +44 -38
- package/dist/ui/operation/usage-tabs/client.js +1 -1
- package/dist/ui/schema/client.js +2 -2
- package/dist/ui/schema/index.js +1 -1
- package/dist/utils/pages/to-text.js +5 -4
- package/dist/utils/schema/index.d.ts +3 -4
- package/dist/utils/schema/index.js +4 -9
- package/dist/utils/use-query.js +2 -1
- package/package.json +11 -10
package/css/generated/shared.css
CHANGED
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
@source inline("allFlows");
|
|
46
46
|
@source inline("allOf");
|
|
47
47
|
@source inline("already");
|
|
48
|
+
@source inline("alt");
|
|
48
49
|
@source inline("and");
|
|
49
50
|
@source inline("animate-spin");
|
|
50
51
|
@source inline("another");
|
|
@@ -54,8 +55,11 @@
|
|
|
54
55
|
@source inline("apiExample");
|
|
55
56
|
@source inline("apiKey");
|
|
56
57
|
@source inline("apiPlayground");
|
|
58
|
+
@source inline("application/javascript");
|
|
57
59
|
@source inline("application/json");
|
|
60
|
+
@source inline("application/x-javascript");
|
|
58
61
|
@source inline("application/x-www-form-urlencoded");
|
|
62
|
+
@source inline("application/xml");
|
|
59
63
|
@source inline("apply");
|
|
60
64
|
@source inline("aria-label");
|
|
61
65
|
@source inline("array");
|
|
@@ -65,7 +69,8 @@
|
|
|
65
69
|
@source inline("auth-specific");
|
|
66
70
|
@source inline("authBasicTokenExample");
|
|
67
71
|
@source inline("authBearerTokenExample");
|
|
68
|
-
@source inline("
|
|
72
|
+
@source inline("authCodeQuery");
|
|
73
|
+
@source inline("authCtx");
|
|
69
74
|
@source inline("authNode");
|
|
70
75
|
@source inline("authSchemes");
|
|
71
76
|
@source inline("authScope");
|
|
@@ -95,6 +100,7 @@
|
|
|
95
100
|
@source inline("bg-fd-primary/10");
|
|
96
101
|
@source inline("bg-fd-secondary");
|
|
97
102
|
@source inline("binary");
|
|
103
|
+
@source inline("blob");
|
|
98
104
|
@source inline("blue");
|
|
99
105
|
@source inline("body");
|
|
100
106
|
@source inline("bodyMediaType");
|
|
@@ -104,17 +110,21 @@
|
|
|
104
110
|
@source inline("border");
|
|
105
111
|
@source inline("border-b");
|
|
106
112
|
@source inline("border-current");
|
|
113
|
+
@source inline("border-fd-border");
|
|
107
114
|
@source inline("border-fd-primary/20");
|
|
115
|
+
@source inline("border-s");
|
|
108
116
|
@source inline("border-t");
|
|
109
117
|
@source inline("border-x");
|
|
110
118
|
@source inline("border-y");
|
|
111
119
|
@source inline("both");
|
|
112
120
|
@source inline("boundary");
|
|
121
|
+
@source inline("buffer");
|
|
113
122
|
@source inline("bundled");
|
|
114
123
|
@source inline("but");
|
|
115
124
|
@source inline("button");
|
|
116
125
|
@source inline("buttonVariants");
|
|
117
126
|
@source inline("by");
|
|
127
|
+
@source inline("byteLength");
|
|
118
128
|
@source inline("cache");
|
|
119
129
|
@source inline("cached");
|
|
120
130
|
@source inline("call");
|
|
@@ -127,6 +137,7 @@
|
|
|
127
137
|
@source inline("causes");
|
|
128
138
|
@source inline("change");
|
|
129
139
|
@source inline("changes");
|
|
140
|
+
@source inline("charset");
|
|
130
141
|
@source inline("check");
|
|
131
142
|
@source inline("child");
|
|
132
143
|
@source inline("children");
|
|
@@ -140,6 +151,7 @@
|
|
|
140
151
|
@source inline("clientId");
|
|
141
152
|
@source inline("clientSecret");
|
|
142
153
|
@source inline("client_credentials");
|
|
154
|
+
@source inline("client_error");
|
|
143
155
|
@source inline("client_id");
|
|
144
156
|
@source inline("client_secret");
|
|
145
157
|
@source inline("cloned");
|
|
@@ -176,6 +188,7 @@
|
|
|
176
188
|
@source inline("createRehypeCode");
|
|
177
189
|
@source inline("credentials");
|
|
178
190
|
@source inline("css");
|
|
191
|
+
@source inline("csv");
|
|
179
192
|
@source inline("ctx");
|
|
180
193
|
@source inline("current");
|
|
181
194
|
@source inline("currentRef");
|
|
@@ -211,6 +224,7 @@
|
|
|
211
224
|
@source inline("defaultExampleId");
|
|
212
225
|
@source inline("defaultItem");
|
|
213
226
|
@source inline("defaultMdxComponents");
|
|
227
|
+
@source inline("defaultOpen");
|
|
214
228
|
@source inline("defaultShikiFactory");
|
|
215
229
|
@source inline("defaultValue");
|
|
216
230
|
@source inline("defaultValues");
|
|
@@ -275,12 +289,13 @@
|
|
|
275
289
|
@source inline("export");
|
|
276
290
|
@source inline("extends");
|
|
277
291
|
@source inline("factory");
|
|
292
|
+
@source inline("fall");
|
|
278
293
|
@source inline("fallback");
|
|
279
294
|
@source inline("false");
|
|
295
|
+
@source inline("fast-content-type-parse");
|
|
280
296
|
@source inline("fetch");
|
|
281
297
|
@source inline("fetchOptions");
|
|
282
298
|
@source inline("fetcher");
|
|
283
|
-
@source inline("fetchingToken");
|
|
284
299
|
@source inline("field");
|
|
285
300
|
@source inline("fieldData");
|
|
286
301
|
@source inline("fieldLabelVariants");
|
|
@@ -303,6 +318,7 @@
|
|
|
303
318
|
@source inline("flex-col-reverse");
|
|
304
319
|
@source inline("flex-row");
|
|
305
320
|
@source inline("flex-wrap");
|
|
321
|
+
@source inline("flow");
|
|
306
322
|
@source inline("flows");
|
|
307
323
|
@source inline("focus-visible:outline-none");
|
|
308
324
|
@source inline("focus-visible:ring-1");
|
|
@@ -361,7 +377,6 @@
|
|
|
361
377
|
@source inline("getExampleRequests");
|
|
362
378
|
@source inline("getSchema");
|
|
363
379
|
@source inline("getSchemaId");
|
|
364
|
-
@source inline("getStatusInfo");
|
|
365
380
|
@source inline("ghost");
|
|
366
381
|
@source inline("github-dark");
|
|
367
382
|
@source inline("github-light");
|
|
@@ -382,7 +397,9 @@
|
|
|
382
397
|
@source inline("h-[240px]");
|
|
383
398
|
@source inline("h-px");
|
|
384
399
|
@source inline("h1");
|
|
400
|
+
@source inline("handling");
|
|
385
401
|
@source inline("hasHead");
|
|
402
|
+
@source inline("hash");
|
|
386
403
|
@source inline("hast");
|
|
387
404
|
@source inline("hast-util-to-jsx-runtime");
|
|
388
405
|
@source inline("headNode");
|
|
@@ -418,7 +435,7 @@
|
|
|
418
435
|
@source inline("infer");
|
|
419
436
|
@source inline("info");
|
|
420
437
|
@source inline("infoTags");
|
|
421
|
-
@source inline("
|
|
438
|
+
@source inline("initAuthInputs");
|
|
422
439
|
@source inline("initial");
|
|
423
440
|
@source inline("initialPath");
|
|
424
441
|
@source inline("inline-flex");
|
|
@@ -449,6 +466,7 @@
|
|
|
449
466
|
@source inline("items-end");
|
|
450
467
|
@source inline("items-start");
|
|
451
468
|
@source inline("j");
|
|
469
|
+
@source inline("js");
|
|
452
470
|
@source inline("json");
|
|
453
471
|
@source inline("json-schema-typed");
|
|
454
472
|
@source inline("justify-between");
|
|
@@ -482,7 +500,6 @@
|
|
|
482
500
|
@source inline("localStorage");
|
|
483
501
|
@source inline("lucide-react");
|
|
484
502
|
@source inline("map");
|
|
485
|
-
@source inline("mapInputs");
|
|
486
503
|
@source inline("max");
|
|
487
504
|
@source inline("max-age");
|
|
488
505
|
@source inline("max-h-[460px]");
|
|
@@ -490,6 +507,7 @@
|
|
|
490
507
|
@source inline("max-w-full");
|
|
491
508
|
@source inline("max-w-lg");
|
|
492
509
|
@source inline("may");
|
|
510
|
+
@source inline("mb-1");
|
|
493
511
|
@source inline("mb-2");
|
|
494
512
|
@source inline("mb-4");
|
|
495
513
|
@source inline("md");
|
|
@@ -505,6 +523,7 @@
|
|
|
505
523
|
@source inline("metaData");
|
|
506
524
|
@source inline("method");
|
|
507
525
|
@source inline("migrated");
|
|
526
|
+
@source inline("mime");
|
|
508
527
|
@source inline("min");
|
|
509
528
|
@source inline("min-h-(--initial-height,0)");
|
|
510
529
|
@source inline("min-w-0");
|
|
@@ -574,6 +593,7 @@
|
|
|
574
593
|
@source inline("openapi");
|
|
575
594
|
@source inline("openapi-sampler");
|
|
576
595
|
@source inline("openapi-types");
|
|
596
|
+
@source inline("openid");
|
|
577
597
|
@source inline("operation");
|
|
578
598
|
@source inline("operationId");
|
|
579
599
|
@source inline("operations");
|
|
@@ -582,7 +602,6 @@
|
|
|
582
602
|
@source inline("orange");
|
|
583
603
|
@source inline("order-last");
|
|
584
604
|
@source inline("origin");
|
|
585
|
-
@source inline("original");
|
|
586
605
|
@source inline("other");
|
|
587
606
|
@source inline("out");
|
|
588
607
|
@source inline("outline");
|
|
@@ -598,8 +617,10 @@
|
|
|
598
617
|
@source inline("p-4");
|
|
599
618
|
@source inline("packages");
|
|
600
619
|
@source inline("page");
|
|
620
|
+
@source inline("page-level");
|
|
601
621
|
@source inline("pageData");
|
|
602
622
|
@source inline("pages");
|
|
623
|
+
@source inline("panelVariants");
|
|
603
624
|
@source inline("param");
|
|
604
625
|
@source inline("paramTypeKeys");
|
|
605
626
|
@source inline("parameter");
|
|
@@ -629,6 +650,7 @@
|
|
|
629
650
|
@source inline("peer-disabled:opacity-70");
|
|
630
651
|
@source inline("perhaps");
|
|
631
652
|
@source inline("persist");
|
|
653
|
+
@source inline("persisted");
|
|
632
654
|
@source inline("persistent");
|
|
633
655
|
@source inline("pickExample");
|
|
634
656
|
@source inline("pickSchema");
|
|
@@ -657,6 +679,7 @@
|
|
|
657
679
|
@source inline("property");
|
|
658
680
|
@source inline("props");
|
|
659
681
|
@source inline("prose-no-margin");
|
|
682
|
+
@source inline("provider");
|
|
660
683
|
@source inline("proxy");
|
|
661
684
|
@source inline("proxyForwardCookie");
|
|
662
685
|
@source inline("proxyUrl");
|
|
@@ -736,6 +759,9 @@
|
|
|
736
759
|
@source inline("requestUrl");
|
|
737
760
|
@source inline("requests");
|
|
738
761
|
@source inline("required");
|
|
762
|
+
@source inline("requirement");
|
|
763
|
+
@source inline("requirementId");
|
|
764
|
+
@source inline("requirements");
|
|
739
765
|
@source inline("res");
|
|
740
766
|
@source inline("reset");
|
|
741
767
|
@source inline("resize-none");
|
|
@@ -756,6 +782,7 @@
|
|
|
756
782
|
@source inline("result");
|
|
757
783
|
@source inline("return");
|
|
758
784
|
@source inline("returned");
|
|
785
|
+
@source inline("role");
|
|
759
786
|
@source inline("root");
|
|
760
787
|
@source inline("rotate-90");
|
|
761
788
|
@source inline("rounded-lg");
|
|
@@ -764,6 +791,7 @@
|
|
|
764
791
|
@source inline("rounded-xl");
|
|
765
792
|
@source inline("route");
|
|
766
793
|
@source inline("s");
|
|
794
|
+
@source inline("safeParse");
|
|
767
795
|
@source inline("same");
|
|
768
796
|
@source inline("sample");
|
|
769
797
|
@source inline("sampleKey");
|
|
@@ -773,6 +801,7 @@
|
|
|
773
801
|
@source inline("schemaExample");
|
|
774
802
|
@source inline("schemaFormat");
|
|
775
803
|
@source inline("schemaHideArray");
|
|
804
|
+
@source inline("schemaId");
|
|
776
805
|
@source inline("schemaItems");
|
|
777
806
|
@source inline("schemaLength");
|
|
778
807
|
@source inline("schemaMatch");
|
|
@@ -785,6 +814,8 @@
|
|
|
785
814
|
@source inline("schemaValueIn");
|
|
786
815
|
@source inline("schemas");
|
|
787
816
|
@source inline("scheme");
|
|
817
|
+
@source inline("schemeId");
|
|
818
|
+
@source inline("schemes");
|
|
788
819
|
@source inline("scope");
|
|
789
820
|
@source inline("scopes");
|
|
790
821
|
@source inline("scroll");
|
|
@@ -822,13 +853,16 @@
|
|
|
822
853
|
@source inline("setIsMounted");
|
|
823
854
|
@source inline("setMounted");
|
|
824
855
|
@source inline("setNextName");
|
|
856
|
+
@source inline("setObjectUrl");
|
|
825
857
|
@source inline("setOpen");
|
|
826
858
|
@source inline("setPath");
|
|
859
|
+
@source inline("setRequirementId");
|
|
827
860
|
@source inline("setSearch");
|
|
828
861
|
@source inline("setSecurityId");
|
|
829
862
|
@source inline("setServer");
|
|
830
863
|
@source inline("setServerVariables");
|
|
831
864
|
@source inline("setShow");
|
|
865
|
+
@source inline("setStore");
|
|
832
866
|
@source inline("setToken");
|
|
833
867
|
@source inline("setTruncated");
|
|
834
868
|
@source inline("setType");
|
|
@@ -866,8 +900,10 @@
|
|
|
866
900
|
@source inline("sm:justify-end");
|
|
867
901
|
@source inline("sm:text-start");
|
|
868
902
|
@source inline("so");
|
|
903
|
+
@source inline("source");
|
|
869
904
|
@source inline("spec");
|
|
870
905
|
@source inline("specify");
|
|
906
|
+
@source inline("src");
|
|
871
907
|
@source inline("state");
|
|
872
908
|
@source inline("status");
|
|
873
909
|
@source inline("statusBadRequest");
|
|
@@ -881,6 +917,7 @@
|
|
|
881
917
|
@source inline("statuses");
|
|
882
918
|
@source inline("step");
|
|
883
919
|
@source inline("stf");
|
|
920
|
+
@source inline("stfSync");
|
|
884
921
|
@source inline("sticky");
|
|
885
922
|
@source inline("storageKey");
|
|
886
923
|
@source inline("storageKeyPrefix");
|
|
@@ -897,6 +934,7 @@
|
|
|
897
934
|
@source inline("summary");
|
|
898
935
|
@source inline("support");
|
|
899
936
|
@source inline("supported");
|
|
937
|
+
@source inline("svg");
|
|
900
938
|
@source inline("switch");
|
|
901
939
|
@source inline("t");
|
|
902
940
|
@source inline("tab");
|
|
@@ -929,13 +967,17 @@
|
|
|
929
967
|
@source inline("text-start");
|
|
930
968
|
@source inline("text-xs");
|
|
931
969
|
@source inline("text-yellow-600");
|
|
970
|
+
@source inline("text/css");
|
|
971
|
+
@source inline("text/csv");
|
|
932
972
|
@source inline("text/html");
|
|
973
|
+
@source inline("text/plain");
|
|
933
974
|
@source inline("that");
|
|
934
975
|
@source inline("the");
|
|
935
976
|
@source inline("their");
|
|
936
977
|
@source inline("theme");
|
|
937
978
|
@source inline("themes");
|
|
938
979
|
@source inline("this");
|
|
980
|
+
@source inline("through");
|
|
939
981
|
@source inline("throw");
|
|
940
982
|
@source inline("timeout");
|
|
941
983
|
@source inline("timerRef");
|
|
@@ -950,6 +992,7 @@
|
|
|
950
992
|
@source inline("toStaticData");
|
|
951
993
|
@source inline("toc");
|
|
952
994
|
@source inline("token");
|
|
995
|
+
@source inline("tokenInfo");
|
|
953
996
|
@source inline("token_type");
|
|
954
997
|
@source inline("toolbar");
|
|
955
998
|
@source inline("top-0");
|
|
@@ -958,6 +1001,7 @@
|
|
|
958
1001
|
@source inline("top-2");
|
|
959
1002
|
@source inline("tracking-tight");
|
|
960
1003
|
@source inline("transform");
|
|
1004
|
+
@source inline("transformAuthInputs");
|
|
961
1005
|
@source inline("transformPageTree");
|
|
962
1006
|
@source inline("transition-colors");
|
|
963
1007
|
@source inline("transition-transform");
|
|
@@ -979,11 +1023,14 @@
|
|
|
979
1023
|
@source inline("undefined");
|
|
980
1024
|
@source inline("under");
|
|
981
1025
|
@source inline("underline");
|
|
1026
|
+
@source inline("unexpected");
|
|
982
1027
|
@source inline("union");
|
|
983
1028
|
@source inline("unionField");
|
|
984
1029
|
@source inline("unknown");
|
|
1030
|
+
@source inline("update");
|
|
985
1031
|
@source inline("updateInfo");
|
|
986
1032
|
@source inline("updated");
|
|
1033
|
+
@source inline("updatedSchemeId");
|
|
987
1034
|
@source inline("updating");
|
|
988
1035
|
@source inline("url");
|
|
989
1036
|
@source inline("usage");
|
|
@@ -992,6 +1039,7 @@
|
|
|
992
1039
|
@source inline("use");
|
|
993
1040
|
@source inline("useApiClientModal");
|
|
994
1041
|
@source inline("useApiContext");
|
|
1042
|
+
@source inline("useAuth");
|
|
995
1043
|
@source inline("useCopyButton");
|
|
996
1044
|
@source inline("useFieldValue");
|
|
997
1045
|
@source inline("useForm");
|
|
@@ -999,12 +1047,14 @@
|
|
|
999
1047
|
@source inline("useMemo");
|
|
1000
1048
|
@source inline("useNamespace");
|
|
1001
1049
|
@source inline("useObject");
|
|
1050
|
+
@source inline("useOnChange");
|
|
1002
1051
|
@source inline("useOperationContext");
|
|
1003
1052
|
@source inline("useQuery");
|
|
1004
1053
|
@source inline("useRef");
|
|
1005
1054
|
@source inline("useResolvedSchema");
|
|
1006
1055
|
@source inline("useServerContext");
|
|
1007
1056
|
@source inline("useState");
|
|
1057
|
+
@source inline("useStatusInfo");
|
|
1008
1058
|
@source inline("useStf");
|
|
1009
1059
|
@source inline("useStorageKey");
|
|
1010
1060
|
@source inline("useTheme");
|
|
@@ -1013,6 +1063,7 @@
|
|
|
1013
1063
|
@source inline("used");
|
|
1014
1064
|
@source inline("username");
|
|
1015
1065
|
@source inline("using");
|
|
1066
|
+
@source inline("utf-8");
|
|
1016
1067
|
@source inline("valid");
|
|
1017
1068
|
@source inline("validateFormats");
|
|
1018
1069
|
@source inline("validateSchema");
|
|
@@ -1042,6 +1093,7 @@
|
|
|
1042
1093
|
@source inline("window");
|
|
1043
1094
|
@source inline("with");
|
|
1044
1095
|
@source inline("withBase");
|
|
1096
|
+
@source inline("withReplacements");
|
|
1045
1097
|
@source inline("without");
|
|
1046
1098
|
@source inline("wrap");
|
|
1047
1099
|
@source inline("wrap-break-word");
|
|
@@ -1055,6 +1107,7 @@
|
|
|
1055
1107
|
@source inline("x-exclusiveCodeSample");
|
|
1056
1108
|
@source inline("x-playground-lazy");
|
|
1057
1109
|
@source inline("x-selectedCodeSample");
|
|
1110
|
+
@source inline("xml");
|
|
1058
1111
|
@source inline("yellow");
|
|
1059
1112
|
@source inline("you");
|
|
1060
1113
|
@source inline("your");
|
package/dist/generate-file.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { doubleQuote } from "./requests/string-utils.js";
|
|
1
2
|
import { generateDocument, toText } from "./utils/pages/to-text.js";
|
|
2
3
|
import { createAutoPreset } from "./utils/pages/preset-auto.js";
|
|
3
4
|
import { fromSchema } from "./utils/pages/builder.js";
|
|
@@ -115,8 +116,8 @@ function writeIndexFiles(context, options) {
|
|
|
115
116
|
}
|
|
116
117
|
for (const entry of outputEntries) {
|
|
117
118
|
if (entry.type === "group") continue;
|
|
118
|
-
const descriptionAttr = entry.info.description ? `description=${
|
|
119
|
-
content.push(`<Card href="${urlFn(entry.path)}" title=${
|
|
119
|
+
const descriptionAttr = entry.info.description ? `description=${doubleQuote(entry.info.description)} ` : "";
|
|
120
|
+
content.push(`<Card href="${urlFn(entry.path)}" title=${doubleQuote(entry.info.title)} ${descriptionAttr}/>`);
|
|
120
121
|
}
|
|
121
122
|
content.push("</Cards>");
|
|
122
123
|
return generateDocument({
|
package/dist/i18n.d.ts
CHANGED
|
@@ -57,7 +57,8 @@ declare const defaultTranslations: {
|
|
|
57
57
|
statusInternalServerError: string;
|
|
58
58
|
statusSuccessful: string;
|
|
59
59
|
statusError: string;
|
|
60
|
-
|
|
60
|
+
statusClientError: string;
|
|
61
|
+
statusBinaryBody: string;
|
|
61
62
|
obtainAccessToken: string;
|
|
62
63
|
resourceOwnerPassword: string;
|
|
63
64
|
resourceOwnerPasswordDesc: string;
|
|
@@ -76,6 +77,7 @@ declare const defaultTranslations: {
|
|
|
76
77
|
usernameField: string;
|
|
77
78
|
passwordField: string;
|
|
78
79
|
fetchingToken: string;
|
|
80
|
+
fetchTokenError: string;
|
|
79
81
|
serverUrl: string;
|
|
80
82
|
serverUrlDescription: string;
|
|
81
83
|
serverUrlFieldPlaceholder: string;
|
package/dist/i18n.js
CHANGED
|
@@ -56,7 +56,8 @@ const defaultTranslations = {
|
|
|
56
56
|
statusInternalServerError: "Internal Server Error",
|
|
57
57
|
statusSuccessful: "Successful",
|
|
58
58
|
statusError: "Error",
|
|
59
|
-
|
|
59
|
+
statusClientError: "Client Error",
|
|
60
|
+
statusBinaryBody: "Binary response body, {length} bytes",
|
|
60
61
|
obtainAccessToken: "Obtain the access token for API.",
|
|
61
62
|
resourceOwnerPassword: "Resource Owner Password Flow",
|
|
62
63
|
resourceOwnerPasswordDesc: "Authenticate using username and password.",
|
|
@@ -75,6 +76,7 @@ const defaultTranslations = {
|
|
|
75
76
|
usernameField: "Username",
|
|
76
77
|
passwordField: "Password",
|
|
77
78
|
fetchingToken: "Fetching token...",
|
|
79
|
+
fetchTokenError: "Failed to fetch token",
|
|
78
80
|
serverUrl: "Server URL",
|
|
79
81
|
serverUrlDescription: "The base URL of your API endpoint.",
|
|
80
82
|
serverUrlFieldPlaceholder: "Enter Value",
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useApiContext } from "../ui/contexts/api.js";
|
|
3
|
+
import { useQuery } from "../utils/use-query.js";
|
|
4
|
+
import { createContext, use, useEffect, useMemo, useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/playground/auth.tsx
|
|
7
|
+
const AuthContext = createContext(null);
|
|
8
|
+
function useAuth() {
|
|
9
|
+
const ctx = use(AuthContext);
|
|
10
|
+
if (!ctx) throw new Error("must use this component under <AuthProvider />");
|
|
11
|
+
return ctx;
|
|
12
|
+
}
|
|
13
|
+
function AuthProvider({ children }) {
|
|
14
|
+
const { schemes } = useApiContext();
|
|
15
|
+
const [store, setStore] = useState({});
|
|
16
|
+
const authCodeQuery = useQuery(async (code, state) => {
|
|
17
|
+
const scheme = schemes[state.scheme];
|
|
18
|
+
if (!scheme || scheme.type !== "oauth2") return;
|
|
19
|
+
const value = scheme.flows?.authorizationCode;
|
|
20
|
+
if (!value) return;
|
|
21
|
+
const res = await fetch(value.tokenUrl, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
24
|
+
body: new URLSearchParams({
|
|
25
|
+
grant_type: "authorization_code",
|
|
26
|
+
code,
|
|
27
|
+
redirect_uri: state.redirect_uri,
|
|
28
|
+
client_id: state.client_id,
|
|
29
|
+
client_secret: state.client_secret
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
if (!res.ok) throw new Error(await res.text());
|
|
33
|
+
const { access_token, token_type = "Bearer" } = await res.json();
|
|
34
|
+
const info = {
|
|
35
|
+
type: "authorization_code",
|
|
36
|
+
...state,
|
|
37
|
+
token: `${token_type} ${access_token}`
|
|
38
|
+
};
|
|
39
|
+
setStore((s) => ({
|
|
40
|
+
...s,
|
|
41
|
+
[state.scheme]: info
|
|
42
|
+
}));
|
|
43
|
+
});
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
function onQuery() {
|
|
46
|
+
const query = new URLSearchParams(window.location.search);
|
|
47
|
+
const state = query.get("state");
|
|
48
|
+
const code = query.get("code");
|
|
49
|
+
if (!state || !code) return;
|
|
50
|
+
const parsedState = JSON.parse(state);
|
|
51
|
+
authCodeQuery.start(code, parsedState);
|
|
52
|
+
window.history.replaceState(null, "", window.location.pathname);
|
|
53
|
+
}
|
|
54
|
+
function onHash() {
|
|
55
|
+
const hash = new URLSearchParams(window.location.hash.slice(1));
|
|
56
|
+
const state = hash.get("state");
|
|
57
|
+
const token = hash.get("access_token");
|
|
58
|
+
const type = hash.get("token_type") ?? "Bearer";
|
|
59
|
+
if (!state || !token) return;
|
|
60
|
+
const parsedState = JSON.parse(state);
|
|
61
|
+
const scheme = schemes[parsedState.scheme];
|
|
62
|
+
if (!scheme || scheme.type !== "oauth2" || !scheme.flows?.implicit) return;
|
|
63
|
+
const info = {
|
|
64
|
+
type: "implicit",
|
|
65
|
+
client_id: parsedState.client_id,
|
|
66
|
+
token: `${type} ${token}`
|
|
67
|
+
};
|
|
68
|
+
setStore((s) => ({
|
|
69
|
+
...s,
|
|
70
|
+
[parsedState.scheme]: info
|
|
71
|
+
}));
|
|
72
|
+
window.history.replaceState(null, "", window.location.pathname);
|
|
73
|
+
}
|
|
74
|
+
if (window.location.search.length > 0) onQuery();
|
|
75
|
+
if (window.location.hash.length > 1) onHash();
|
|
76
|
+
}, []);
|
|
77
|
+
return /* @__PURE__ */ jsx(AuthContext, {
|
|
78
|
+
value: useMemo(() => ({
|
|
79
|
+
store,
|
|
80
|
+
updatedSchemeId: Object.keys(store)[0] ?? null,
|
|
81
|
+
isLoading: authCodeQuery.isLoading,
|
|
82
|
+
error: authCodeQuery.error
|
|
83
|
+
}), [
|
|
84
|
+
store,
|
|
85
|
+
authCodeQuery.isLoading,
|
|
86
|
+
authCodeQuery.error
|
|
87
|
+
]),
|
|
88
|
+
children
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
export { AuthProvider, useAuth };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BrowserFetcherOptions
|
|
1
|
+
import { BrowserFetcherOptions } from "./fetcher.js";
|
|
2
|
+
import { DefaultResultDisplay, ResultDisplayProps } from "./components/result-display.js";
|
|
2
3
|
import { SchemaScope } from "./schema.js";
|
|
3
4
|
import { Document, HttpMethods, ParameterObject } from "../types.js";
|
|
4
5
|
import { ParsedSchema, SecurityEntry } from "../utils/schema/index.js";
|
|
@@ -23,10 +24,6 @@ interface PlaygroundClientProps extends ComponentProps<'form'>, SchemaScope {
|
|
|
23
24
|
doc: Document;
|
|
24
25
|
proxyUrl?: string;
|
|
25
26
|
}
|
|
26
|
-
interface ResultDisplayProps extends ComponentProps<'div'> {
|
|
27
|
-
data: FetchResult;
|
|
28
|
-
reset: () => void;
|
|
29
|
-
}
|
|
30
27
|
interface CollapsiblePanelProps extends Omit<ComponentProps<typeof Collapsible>, 'title'> {
|
|
31
28
|
'data-type': 'authorization' | 'body' | ParamType;
|
|
32
29
|
title: ReactNode;
|
|
@@ -80,16 +77,12 @@ declare const ParamTypes: readonly ["path", "header", "cookie", "query"];
|
|
|
80
77
|
type ParamType = (typeof ParamTypes)[number];
|
|
81
78
|
interface AuthField {
|
|
82
79
|
fieldName: FieldKey;
|
|
80
|
+
schemeId: string;
|
|
81
|
+
storageKey: string;
|
|
83
82
|
defaultValue: unknown;
|
|
84
|
-
original?: SecurityEntry;
|
|
85
83
|
children: ReactNode;
|
|
86
84
|
mapOutput?: (values: unknown) => unknown;
|
|
87
85
|
}
|
|
88
|
-
declare function DefaultResultDisplay({
|
|
89
|
-
data,
|
|
90
|
-
reset,
|
|
91
|
-
...rest
|
|
92
|
-
}: ResultDisplayProps): _$react_jsx_runtime0.JSX.Element;
|
|
93
86
|
declare function DefaultCollapsiblePanel({
|
|
94
87
|
title,
|
|
95
88
|
children,
|
|
@@ -104,4 +97,4 @@ declare const Custom: {
|
|
|
104
97
|
};
|
|
105
98
|
};
|
|
106
99
|
//#endregion
|
|
107
|
-
export { AuthField, CollapsiblePanelProps, Custom, DefaultCollapsiblePanel, DefaultResultDisplay, FormValues, PlaygroundClientOptions, PlaygroundClientProps, ResultDisplayProps, PlaygroundClient as default };
|
|
100
|
+
export { AuthField, CollapsiblePanelProps, Custom, DefaultCollapsiblePanel, DefaultResultDisplay, FormValues, PlaygroundClientOptions, PlaygroundClientProps, type ResultDisplayProps, PlaygroundClient as default };
|