fumadocs-openapi 10.6.3 → 10.6.5
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 +8 -17
- package/dist/_openapi/types.d.ts +1 -2
- package/dist/generate-file.d.ts +3 -4
- package/dist/generate-file.js +0 -2
- package/dist/i18n.d.ts +1 -2
- package/dist/i18n.js +0 -2
- package/dist/playground/client.d.ts +12 -22
- package/dist/playground/client.js +37 -18
- package/dist/playground/components/inputs.js +0 -2
- package/dist/playground/components/oauth-dialog.js +0 -2
- package/dist/playground/components/server-select.js +0 -2
- package/dist/playground/fetcher.d.ts +1 -2
- package/dist/playground/fetcher.js +0 -2
- package/dist/playground/schema.d.ts +1 -2
- package/dist/playground/schema.js +25 -37
- package/dist/playground/status-info.js +0 -2
- package/dist/requests/generators/all.d.ts +1 -2
- package/dist/requests/generators/all.js +0 -2
- package/dist/requests/generators/csharp.d.ts +1 -2
- package/dist/requests/generators/csharp.js +0 -2
- package/dist/requests/generators/curl.d.ts +1 -2
- package/dist/requests/generators/curl.js +0 -2
- package/dist/requests/generators/go.d.ts +1 -2
- package/dist/requests/generators/go.js +0 -2
- package/dist/requests/generators/index.d.ts +1 -2
- package/dist/requests/generators/index.js +0 -2
- package/dist/requests/generators/java.d.ts +1 -2
- package/dist/requests/generators/java.js +0 -2
- package/dist/requests/generators/javascript.d.ts +1 -2
- package/dist/requests/generators/javascript.js +0 -2
- package/dist/requests/generators/python.d.ts +1 -2
- package/dist/requests/generators/python.js +0 -2
- package/dist/requests/media/adapter.d.ts +1 -2
- package/dist/requests/media/adapter.js +0 -2
- package/dist/requests/media/encode.d.ts +1 -2
- package/dist/requests/media/encode.js +0 -2
- package/dist/requests/media/resolve-adapter.js +0 -2
- package/dist/requests/string-utils.js +0 -2
- package/dist/requests/types.d.ts +1 -2
- package/dist/scalar/client.js +0 -2
- package/dist/scalar/index.d.ts +1 -2
- package/dist/scalar/index.js +0 -2
- package/dist/server/create.d.ts +2 -3
- package/dist/server/create.js +1 -3
- package/dist/server/proxy.d.ts +1 -2
- package/dist/server/proxy.js +0 -2
- package/dist/server/source-api.d.ts +3 -4
- package/dist/server/source-api.js +0 -2
- package/dist/types.d.ts +5 -6
- package/dist/ui/api-page.d.ts +1 -2
- package/dist/ui/api-page.js +0 -2
- package/dist/ui/base.d.ts +10 -10
- package/dist/ui/base.js +22 -2
- package/dist/ui/client/boundary.d.ts +1 -2
- package/dist/ui/client/boundary.js +0 -2
- package/dist/ui/client/boundary.lazy.js +0 -2
- package/dist/ui/client/full.js +0 -2
- package/dist/ui/client/i18n.js +0 -2
- package/dist/ui/client/index.d.ts +1 -2
- package/dist/ui/client/index.js +0 -2
- package/dist/ui/client/storage-key.js +0 -2
- package/dist/ui/components/accordion.js +0 -2
- package/dist/ui/components/codeblock.d.ts +1 -2
- package/dist/ui/components/codeblock.js +0 -2
- package/dist/ui/components/dialog.js +0 -2
- package/dist/ui/components/input.js +0 -2
- package/dist/ui/components/method-label.js +0 -2
- package/dist/ui/components/select-tab.js +0 -2
- package/dist/ui/components/select.js +0 -2
- package/dist/ui/contexts/api.d.ts +1 -2
- package/dist/ui/contexts/api.js +0 -2
- package/dist/ui/create-client.d.ts +1 -2
- package/dist/ui/create-client.js +18 -15
- package/dist/ui/index.d.ts +1 -2
- package/dist/ui/index.js +0 -2
- package/dist/ui/operation/client.js +0 -2
- package/dist/ui/operation/get-example-requests.d.ts +1 -2
- package/dist/ui/operation/get-example-requests.js +2 -4
- package/dist/ui/operation/index.js +5 -8
- package/dist/ui/operation/request-tabs.js +0 -2
- package/dist/ui/operation/response-tabs.d.ts +2 -3
- package/dist/ui/operation/response-tabs.js +0 -2
- package/dist/ui/operation/usage-tabs/client.d.ts +1 -2
- package/dist/ui/operation/usage-tabs/client.js +0 -2
- package/dist/ui/operation/usage-tabs/index.js +0 -2
- package/dist/ui/schema/client.d.ts +1 -2
- package/dist/ui/schema/client.js +0 -2
- package/dist/ui/schema/index.d.ts +3 -4
- package/dist/ui/schema/index.js +1 -3
- package/dist/utils/deep-equal.js +8 -6
- package/dist/utils/document/dereference.d.ts +17 -0
- package/dist/utils/document/dereference.js +19 -0
- package/dist/utils/document/process.d.ts +6 -0
- package/dist/utils/{process-document.js → document/process.js} +4 -19
- package/dist/utils/id-to-title.js +0 -2
- package/dist/utils/is-plain-object.js +8 -0
- package/dist/utils/pages/builder.d.ts +5 -6
- package/dist/utils/pages/builder.js +0 -2
- package/dist/utils/pages/preset-auto.d.ts +3 -4
- package/dist/utils/pages/preset-auto.js +0 -2
- package/dist/utils/pages/to-static-data.js +0 -2
- package/dist/utils/pages/to-text.d.ts +1 -2
- package/dist/utils/pages/to-text.js +0 -2
- package/dist/utils/remove-undefined.js +10 -10
- package/dist/utils/schema/dereference.js +22 -14
- package/dist/utils/schema/index.d.ts +7 -7
- package/dist/utils/schema/index.js +21 -4
- package/dist/utils/{merge-schema.js → schema/merge.js} +2 -4
- package/dist/utils/schema/pick.js +44 -0
- package/dist/utils/schema/ref.js +35 -0
- package/dist/utils/schema/resolve-ref.js +4 -14
- package/dist/utils/schema/to-string.js +4 -7
- package/dist/utils/url.js +0 -2
- package/dist/utils/use-query.js +0 -2
- package/package.json +3 -4
- package/dist/_openapi/types.d.ts.map +0 -1
- package/dist/generate-file.d.ts.map +0 -1
- package/dist/generate-file.js.map +0 -1
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js.map +0 -1
- package/dist/playground/client.d.ts.map +0 -1
- package/dist/playground/client.js.map +0 -1
- package/dist/playground/components/inputs.js.map +0 -1
- package/dist/playground/components/oauth-dialog.js.map +0 -1
- package/dist/playground/components/server-select.js.map +0 -1
- package/dist/playground/fetcher.d.ts.map +0 -1
- package/dist/playground/fetcher.js.map +0 -1
- package/dist/playground/index.d.ts +0 -22
- package/dist/playground/index.d.ts.map +0 -1
- package/dist/playground/index.js +0 -118
- package/dist/playground/index.js.map +0 -1
- package/dist/playground/schema.d.ts.map +0 -1
- package/dist/playground/schema.js.map +0 -1
- package/dist/playground/status-info.js.map +0 -1
- package/dist/requests/generators/all.d.ts.map +0 -1
- package/dist/requests/generators/all.js.map +0 -1
- package/dist/requests/generators/csharp.d.ts.map +0 -1
- package/dist/requests/generators/csharp.js.map +0 -1
- package/dist/requests/generators/curl.d.ts.map +0 -1
- package/dist/requests/generators/curl.js.map +0 -1
- package/dist/requests/generators/go.d.ts.map +0 -1
- package/dist/requests/generators/go.js.map +0 -1
- package/dist/requests/generators/index.d.ts.map +0 -1
- package/dist/requests/generators/index.js.map +0 -1
- package/dist/requests/generators/java.d.ts.map +0 -1
- package/dist/requests/generators/java.js.map +0 -1
- package/dist/requests/generators/javascript.d.ts.map +0 -1
- package/dist/requests/generators/javascript.js.map +0 -1
- package/dist/requests/generators/python.d.ts.map +0 -1
- package/dist/requests/generators/python.js.map +0 -1
- package/dist/requests/media/adapter.d.ts.map +0 -1
- package/dist/requests/media/adapter.js.map +0 -1
- package/dist/requests/media/encode.d.ts.map +0 -1
- package/dist/requests/media/encode.js.map +0 -1
- package/dist/requests/media/resolve-adapter.js.map +0 -1
- package/dist/requests/string-utils.js.map +0 -1
- package/dist/requests/types.d.ts.map +0 -1
- package/dist/scalar/client.js.map +0 -1
- package/dist/scalar/index.d.ts.map +0 -1
- package/dist/scalar/index.js.map +0 -1
- package/dist/server/create.d.ts.map +0 -1
- package/dist/server/create.js.map +0 -1
- package/dist/server/proxy.d.ts.map +0 -1
- package/dist/server/proxy.js.map +0 -1
- package/dist/server/source-api.d.ts.map +0 -1
- package/dist/server/source-api.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/ui/api-page.d.ts.map +0 -1
- package/dist/ui/api-page.js.map +0 -1
- package/dist/ui/base.d.ts.map +0 -1
- package/dist/ui/base.js.map +0 -1
- package/dist/ui/client/boundary.d.ts.map +0 -1
- package/dist/ui/client/boundary.js.map +0 -1
- package/dist/ui/client/boundary.lazy.js.map +0 -1
- package/dist/ui/client/full.js.map +0 -1
- package/dist/ui/client/i18n.js.map +0 -1
- package/dist/ui/client/index.d.ts.map +0 -1
- package/dist/ui/client/index.js.map +0 -1
- package/dist/ui/client/storage-key.js.map +0 -1
- package/dist/ui/components/accordion.js.map +0 -1
- package/dist/ui/components/codeblock.d.ts.map +0 -1
- package/dist/ui/components/codeblock.js.map +0 -1
- package/dist/ui/components/dialog.js.map +0 -1
- package/dist/ui/components/input.js.map +0 -1
- package/dist/ui/components/method-label.js.map +0 -1
- package/dist/ui/components/select-tab.js.map +0 -1
- package/dist/ui/components/select.js.map +0 -1
- package/dist/ui/contexts/api.d.ts.map +0 -1
- package/dist/ui/contexts/api.js.map +0 -1
- package/dist/ui/create-client.d.ts.map +0 -1
- package/dist/ui/create-client.js.map +0 -1
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/operation/client.js.map +0 -1
- package/dist/ui/operation/get-example-requests.d.ts.map +0 -1
- package/dist/ui/operation/get-example-requests.js.map +0 -1
- package/dist/ui/operation/index.js.map +0 -1
- package/dist/ui/operation/request-tabs.js.map +0 -1
- package/dist/ui/operation/response-tabs.d.ts.map +0 -1
- package/dist/ui/operation/response-tabs.js.map +0 -1
- package/dist/ui/operation/usage-tabs/client.d.ts.map +0 -1
- package/dist/ui/operation/usage-tabs/client.js.map +0 -1
- package/dist/ui/operation/usage-tabs/index.js.map +0 -1
- package/dist/ui/schema/client.d.ts.map +0 -1
- package/dist/ui/schema/client.js.map +0 -1
- package/dist/ui/schema/index.d.ts.map +0 -1
- package/dist/ui/schema/index.js.map +0 -1
- package/dist/utils/deep-equal.js.map +0 -1
- package/dist/utils/id-to-title.js.map +0 -1
- package/dist/utils/merge-schema.js.map +0 -1
- package/dist/utils/pages/builder.d.ts.map +0 -1
- package/dist/utils/pages/builder.js.map +0 -1
- package/dist/utils/pages/preset-auto.d.ts.map +0 -1
- package/dist/utils/pages/preset-auto.js.map +0 -1
- package/dist/utils/pages/to-static-data.js.map +0 -1
- package/dist/utils/pages/to-text.d.ts.map +0 -1
- package/dist/utils/pages/to-text.js.map +0 -1
- package/dist/utils/process-document.d.ts +0 -18
- package/dist/utils/process-document.d.ts.map +0 -1
- package/dist/utils/process-document.js.map +0 -1
- package/dist/utils/remove-undefined.js.map +0 -1
- package/dist/utils/schema/dereference.js.map +0 -1
- package/dist/utils/schema/index.d.ts.map +0 -1
- package/dist/utils/schema/index.js.map +0 -1
- package/dist/utils/schema/resolve-ref.js.map +0 -1
- package/dist/utils/schema/to-string.js.map +0 -1
- package/dist/utils/url.js.map +0 -1
- package/dist/utils/use-query.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NoReference } from "../../utils/schema/index.js";
|
|
2
1
|
import { ResponseObject } from "../../types.js";
|
|
2
|
+
import { NoReference } from "../../utils/schema/index.js";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/ui/operation/response-tabs.d.ts
|
|
@@ -27,5 +27,4 @@ interface ResponseExample {
|
|
|
27
27
|
description?: string;
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
|
-
export { ResponseTab };
|
|
31
|
-
//# sourceMappingURL=response-tabs.d.ts.map
|
|
30
|
+
export { ResponseTab };
|
package/dist/ui/schema/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ResolvedSchema } from "../../utils/schema/index.js";
|
|
2
1
|
import { SchemaUIProps } from "./client.js";
|
|
2
|
+
import { ParsedSchema } from "../../utils/schema/index.js";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
4
|
//#region src/ui/schema/index.d.ts
|
|
5
5
|
interface FieldBase {
|
|
@@ -42,7 +42,7 @@ type SchemaData = FieldBase & ({
|
|
|
42
42
|
}[];
|
|
43
43
|
});
|
|
44
44
|
interface SchemaUIOptions {
|
|
45
|
-
root:
|
|
45
|
+
root: ParsedSchema;
|
|
46
46
|
client: Omit<SchemaUIProps, 'generated'>;
|
|
47
47
|
/**
|
|
48
48
|
* include read only props
|
|
@@ -58,5 +58,4 @@ interface SchemaUIGeneratedData {
|
|
|
58
58
|
refs: Record<string, SchemaData>;
|
|
59
59
|
}
|
|
60
60
|
//#endregion
|
|
61
|
-
export { SchemaUIGeneratedData, SchemaUIOptions };
|
|
62
|
-
//# sourceMappingURL=index.d.ts.map
|
|
61
|
+
export { SchemaUIGeneratedData, SchemaUIOptions };
|
package/dist/ui/schema/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mergeAllOf } from "../../utils/merge
|
|
1
|
+
import { mergeAllOf } from "../../utils/schema/merge.js";
|
|
2
2
|
import { FormatFlags, schemaToString } from "../../utils/schema/to-string.js";
|
|
3
3
|
import { I18nLabel } from "../client/i18n.js";
|
|
4
4
|
import { useMemo } from "react";
|
|
@@ -254,5 +254,3 @@ function formatRange(value, min, exclusiveMin, max, exclusiveMax) {
|
|
|
254
254
|
}
|
|
255
255
|
//#endregion
|
|
256
256
|
export { Schema };
|
|
257
|
-
|
|
258
|
-
//# sourceMappingURL=index.js.map
|
package/dist/utils/deep-equal.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isPlainObject } from "./is-plain-object.js";
|
|
1
2
|
//#region src/utils/deep-equal.ts
|
|
2
3
|
function deepEqual(a, b) {
|
|
3
4
|
if (a === b) return true;
|
|
@@ -8,12 +9,13 @@ function deepEqual(a, b) {
|
|
|
8
9
|
return a.every((item, index) => deepEqual(item, b[index]));
|
|
9
10
|
}
|
|
10
11
|
if (Array.isArray(a) || Array.isArray(b)) return false;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if (isPlainObject(a) && isPlainObject(b)) {
|
|
13
|
+
const keysA = Object.keys(a);
|
|
14
|
+
const keysB = Object.keys(b);
|
|
15
|
+
if (keysA.length !== keysB.length) return false;
|
|
16
|
+
return keysA.every((key) => key in b && deepEqual(a[key], b[key]));
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
15
19
|
}
|
|
16
20
|
//#endregion
|
|
17
21
|
export { deepEqual };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=deep-equal.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Document } from "../../types.js";
|
|
2
|
+
import { NoReference } from "../schema/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/document/dereference.d.ts
|
|
5
|
+
interface DereferencedDocument {
|
|
6
|
+
/**
|
|
7
|
+
* dereferenced document
|
|
8
|
+
*/
|
|
9
|
+
dereferenced: NoReference<Document>;
|
|
10
|
+
/**
|
|
11
|
+
* Get raw $ref from dereferenced object
|
|
12
|
+
*/
|
|
13
|
+
getRawRef: (obj: object) => string | undefined;
|
|
14
|
+
bundled: Document;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { DereferencedDocument };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { dereferenceSync } from "../schema/dereference.js";
|
|
2
|
+
//#region src/utils/document/dereference.ts
|
|
3
|
+
function dereferenceDocument(bundled) {
|
|
4
|
+
/**
|
|
5
|
+
* Dereferenced value and its original `$ref` value
|
|
6
|
+
*/
|
|
7
|
+
const dereferenceMap = /* @__PURE__ */ new Map();
|
|
8
|
+
return {
|
|
9
|
+
bundled,
|
|
10
|
+
dereferenced: dereferenceSync(bundled, (schema, ref) => {
|
|
11
|
+
dereferenceMap.set(schema, ref);
|
|
12
|
+
}),
|
|
13
|
+
getRawRef(obj) {
|
|
14
|
+
return dereferenceMap.get(obj);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { dereferenceDocument };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dereferenceDocument } from "./dereference.js";
|
|
2
2
|
import { bundle } from "@scalar/json-magic/bundle";
|
|
3
3
|
import { upgrade } from "@scalar/openapi-upgrader";
|
|
4
4
|
import { fetchUrls, readFiles } from "@scalar/json-magic/bundle/plugins/node";
|
|
5
|
-
//#region src/utils/process
|
|
5
|
+
//#region src/utils/document/process.ts
|
|
6
6
|
/**
|
|
7
7
|
* process & reference input document to a Fumadocs OpenAPI compatible format
|
|
8
8
|
*/
|
|
9
9
|
async function processDocument(input) {
|
|
10
|
-
|
|
10
|
+
return dereferenceDocument(await bundle(input, {
|
|
11
11
|
plugins: [fetchUrls(), readFiles()],
|
|
12
12
|
treeShake: true,
|
|
13
13
|
hooks: { onResolveError(node) {
|
|
@@ -15,22 +15,7 @@ async function processDocument(input) {
|
|
|
15
15
|
} }
|
|
16
16
|
}).then((v) => upgrade(v, "3.2")).catch((e) => {
|
|
17
17
|
throw new Error(`[OpenAPI] Failed to resolve input: ${input}`, { cause: e });
|
|
18
|
-
});
|
|
19
|
-
/**
|
|
20
|
-
* Dereferenced value and its original `$ref` value
|
|
21
|
-
*/
|
|
22
|
-
const dereferenceMap = /* @__PURE__ */ new Map();
|
|
23
|
-
return {
|
|
24
|
-
dereferenced: dereferenceSync(bundled, (schema, ref) => {
|
|
25
|
-
dereferenceMap.set(schema, ref);
|
|
26
|
-
}),
|
|
27
|
-
getRawRef(obj) {
|
|
28
|
-
return dereferenceMap.get(obj);
|
|
29
|
-
},
|
|
30
|
-
bundled
|
|
31
|
-
};
|
|
18
|
+
}));
|
|
32
19
|
}
|
|
33
20
|
//#endregion
|
|
34
21
|
export { processDocument };
|
|
35
|
-
|
|
36
|
-
//# sourceMappingURL=process-document.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/is-plain-object.ts
|
|
2
|
+
function isPlainObject(value) {
|
|
3
|
+
if (typeof value !== "object" || value === null) return false;
|
|
4
|
+
const prototype = Object.getPrototypeOf(value);
|
|
5
|
+
return prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null;
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { isPlainObject };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { NoReference } from "../schema/index.js";
|
|
2
1
|
import { OpenAPIServer } from "../../server/create.js";
|
|
3
2
|
import { OperationItem, WebhookItem } from "../../ui/api-page.js";
|
|
4
3
|
import { OperationObject, PathItemObject, TagObject } from "../../types.js";
|
|
5
|
-
import {
|
|
4
|
+
import { NoReference } from "../schema/index.js";
|
|
5
|
+
import { DereferencedDocument } from "../document/dereference.js";
|
|
6
6
|
|
|
7
7
|
//#region src/utils/pages/builder.d.ts
|
|
8
8
|
interface BaseEntry {
|
|
@@ -43,7 +43,7 @@ interface PagesBuilder {
|
|
|
43
43
|
* the input ID in OpenAPI server
|
|
44
44
|
*/
|
|
45
45
|
id: string;
|
|
46
|
-
document:
|
|
46
|
+
document: DereferencedDocument;
|
|
47
47
|
/**
|
|
48
48
|
* add output entry.
|
|
49
49
|
*/
|
|
@@ -83,7 +83,6 @@ interface ExtractedInfo {
|
|
|
83
83
|
})[];
|
|
84
84
|
}
|
|
85
85
|
declare function fromServer(server: OpenAPIServer, config: PagesBuilderConfig): Promise<Record<string, OutputEntry[]>>;
|
|
86
|
-
declare function fromSchema(schemaId: string, processed:
|
|
86
|
+
declare function fromSchema(schemaId: string, processed: DereferencedDocument, config: PagesBuilderConfig): OutputEntry[];
|
|
87
87
|
//#endregion
|
|
88
|
-
export { OperationOutput, OutputEntry, OutputGroup, PageOutput, PagesBuilder, PagesBuilderConfig, WebhookOutput, fromSchema, fromServer };
|
|
89
|
-
//# sourceMappingURL=builder.d.ts.map
|
|
88
|
+
export { OperationOutput, OutputEntry, OutputGroup, PageOutput, PagesBuilder, PagesBuilderConfig, WebhookOutput, fromSchema, fromServer };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OperationOutput, PageOutput, PagesBuilder, PagesBuilderConfig, WebhookOutput } from "./builder.js";
|
|
2
2
|
import { DistributiveOmit } from "../../types.js";
|
|
3
|
-
import {
|
|
3
|
+
import { DereferencedDocument } from "../document/dereference.js";
|
|
4
4
|
|
|
5
5
|
//#region src/utils/pages/preset-auto.d.ts
|
|
6
6
|
interface OperationConfig extends BaseConfig {
|
|
@@ -46,7 +46,7 @@ interface SchemaConfig extends BaseConfig {
|
|
|
46
46
|
type SchemaToPagesOptions = SchemaConfig | TagConfig | OperationConfig | ({
|
|
47
47
|
per: 'custom';
|
|
48
48
|
} & PagesBuilderConfig);
|
|
49
|
-
type NameFn<Entry extends OperationOutput | WebhookOutput | PageOutput = OperationOutput | WebhookOutput | PageOutput> = (this: PagesBuilder, output: DistributiveOmit<Entry, 'path'>, document:
|
|
49
|
+
type NameFn<Entry extends OperationOutput | WebhookOutput | PageOutput = OperationOutput | WebhookOutput | PageOutput> = (this: PagesBuilder, output: DistributiveOmit<Entry, 'path'>, document: DereferencedDocument['dereferenced']) => string;
|
|
50
50
|
interface NameFnOptions {
|
|
51
51
|
/**
|
|
52
52
|
* The version of algorithm used to generate file paths.
|
|
@@ -68,5 +68,4 @@ interface BaseConfig {
|
|
|
68
68
|
}
|
|
69
69
|
declare function createAutoPreset(options: SchemaToPagesOptions): PagesBuilderConfig;
|
|
70
70
|
//#endregion
|
|
71
|
-
export { SchemaToPagesOptions, createAutoPreset };
|
|
72
|
-
//# sourceMappingURL=preset-auto.d.ts.map
|
|
71
|
+
export { SchemaToPagesOptions, createAutoPreset };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
+
import { isPlainObject } from "./is-plain-object.js";
|
|
1
2
|
//#region src/utils/remove-undefined.ts
|
|
2
3
|
function removeUndefined(value, deep = false) {
|
|
3
|
-
|
|
4
|
-
for (const key in
|
|
5
|
-
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
if (typeof entry === "object" && entry !== null) {
|
|
9
|
-
removeUndefined(entry, deep);
|
|
4
|
+
if (!isPlainObject(value)) return value;
|
|
5
|
+
for (const key in value) {
|
|
6
|
+
const prop = value[key];
|
|
7
|
+
if (prop === void 0) {
|
|
8
|
+
delete value[key];
|
|
10
9
|
continue;
|
|
11
10
|
}
|
|
12
|
-
if (
|
|
11
|
+
if (deep) {
|
|
12
|
+
if (Array.isArray(prop)) for (const item of prop) removeUndefined(item, deep);
|
|
13
|
+
if (isPlainObject(prop)) removeUndefined(prop, deep);
|
|
14
|
+
}
|
|
13
15
|
}
|
|
14
16
|
return value;
|
|
15
17
|
}
|
|
16
18
|
//#endregion
|
|
17
19
|
export { removeUndefined };
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=remove-undefined.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isPlainObject } from "../is-plain-object.js";
|
|
1
2
|
import { resolveRefSync } from "./resolve-ref.js";
|
|
2
3
|
//#region src/utils/schema/dereference.ts
|
|
3
4
|
/**
|
|
@@ -8,30 +9,37 @@ function dereferenceSync(schema, setOriginalRef) {
|
|
|
8
9
|
const visitedNodes = /* @__PURE__ */ new Set();
|
|
9
10
|
const cloned = structuredClone(schema);
|
|
10
11
|
function resolve(current) {
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return current;
|
|
17
|
-
}
|
|
18
|
-
const obj = current;
|
|
19
|
-
if ("$ref" in current && typeof current["$ref"] === "string") {
|
|
12
|
+
if (visitedNodes.has(current)) return current;
|
|
13
|
+
visitedNodes.add(current);
|
|
14
|
+
if (Array.isArray(current)) for (let index = 0; index < current.length; index++) current[index] = resolve(current[index]);
|
|
15
|
+
else if (isPlainObject(current)) {
|
|
16
|
+
if (typeof current.$ref === "string") {
|
|
20
17
|
const ref = current["$ref"];
|
|
21
18
|
delete current["$ref"];
|
|
22
19
|
const resolved = resolve(resolveRefSync(ref, cloned));
|
|
23
20
|
setOriginalRef(resolved, ref);
|
|
24
21
|
setOriginalRef(current, ref);
|
|
25
22
|
if (typeof resolved === "boolean") throw new Error("invalid schema");
|
|
26
|
-
for (const k in resolved) if (!(k in current))
|
|
23
|
+
for (const k in resolved) if (!(k in current)) current[k] = resolved[k];
|
|
27
24
|
}
|
|
28
|
-
for (const key in current)
|
|
25
|
+
for (const key in current) current[key] = resolve(current[key]);
|
|
29
26
|
}
|
|
30
27
|
return current;
|
|
31
28
|
}
|
|
32
29
|
return resolve(cloned);
|
|
33
30
|
}
|
|
31
|
+
function dereferenceSwallow(schema, full) {
|
|
32
|
+
if (isPlainObject(schema)) {
|
|
33
|
+
if (typeof schema.$ref !== "string") return schema;
|
|
34
|
+
const { $ref, ...rest } = schema;
|
|
35
|
+
const resolved = dereferenceSwallow(resolveRefSync($ref, full), full);
|
|
36
|
+
if (typeof resolved !== "object") throw new Error(`invalid schema referenced via "${$ref}"`);
|
|
37
|
+
return {
|
|
38
|
+
...resolved,
|
|
39
|
+
...rest
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return schema;
|
|
43
|
+
}
|
|
34
44
|
//#endregion
|
|
35
|
-
export { dereferenceSync };
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=dereference.js.map
|
|
45
|
+
export { dereferenceSwallow, dereferenceSync };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { ReferenceObject } from "../../types.js";
|
|
1
|
+
import { ReferenceObject, SecuritySchemeObject } from "../../types.js";
|
|
2
2
|
import { JSONSchema } from "json-schema-typed/draft-2020-12";
|
|
3
3
|
|
|
4
4
|
//#region src/utils/schema/index.d.ts
|
|
5
5
|
type NoReference<T> = T extends (infer I)[] ? NoReference<I>[] : T extends ReferenceObject ? Exclude<T, ReferenceObject> : T extends object ? { [K in keyof T]: NoReference<T[K]> } : T;
|
|
6
|
-
type NoReferenceJSONSchema<T> = T extends (infer I)[] ? NoReference<I>[] : T extends {
|
|
7
|
-
$ref?: string;
|
|
8
|
-
} ? Omit<T, '$ref'> : T;
|
|
9
6
|
type ParsedSchema = (JSONSchema & {
|
|
10
7
|
'x-playground-lazy'?: boolean;
|
|
11
8
|
}) | boolean;
|
|
12
|
-
|
|
9
|
+
/** parsed security scheme objects */
|
|
10
|
+
type SecurityEntry = SecuritySchemeObject & {
|
|
11
|
+
scopes: string[];
|
|
12
|
+
id: string;
|
|
13
|
+
};
|
|
13
14
|
//#endregion
|
|
14
|
-
export { NoReference, ParsedSchema,
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
15
|
+
export { NoReference, ParsedSchema, SecurityEntry };
|
|
@@ -27,7 +27,7 @@ function createMethod(method, path, operation) {
|
|
|
27
27
|
...operation,
|
|
28
28
|
servers: operation.servers ?? path.servers,
|
|
29
29
|
parameters: [...operation.parameters ?? [], ...path.parameters ?? []],
|
|
30
|
-
method
|
|
30
|
+
method
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
function pickExample(value) {
|
|
@@ -45,7 +45,24 @@ function pickExample(value) {
|
|
|
45
45
|
if (examples.length > 0) return examples[0].value;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
function parseSecurities(method, dereferenced) {
|
|
49
|
+
const result = [];
|
|
50
|
+
const security = method.security ?? dereferenced.security ?? [];
|
|
51
|
+
if (security.length === 0) return result;
|
|
52
|
+
for (const map of security) {
|
|
53
|
+
const list = [];
|
|
54
|
+
for (const [key, scopes] of Object.entries(map)) {
|
|
55
|
+
const scheme = dereferenced.components?.securitySchemes?.[key];
|
|
56
|
+
if (!scheme) continue;
|
|
57
|
+
list.push({
|
|
58
|
+
...scheme,
|
|
59
|
+
scopes,
|
|
60
|
+
id: key
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (list.length > 0) result.push(list);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
48
67
|
//#endregion
|
|
49
|
-
export { createMethod, getPreferredType, getTagDisplayName, methodKeys, pickExample };
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=index.js.map
|
|
68
|
+
export { createMethod, getPreferredType, getTagDisplayName, methodKeys, parseSecurities, pickExample };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { deepEqual } from "
|
|
2
|
-
//#region src/utils/merge
|
|
1
|
+
import { deepEqual } from "../deep-equal.js";
|
|
2
|
+
//#region src/utils/schema/merge.ts
|
|
3
3
|
/**
|
|
4
4
|
* Merge `allOf` object schema
|
|
5
5
|
*/
|
|
@@ -154,5 +154,3 @@ function intersectArray(a, b) {
|
|
|
154
154
|
}
|
|
155
155
|
//#endregion
|
|
156
156
|
export { mergeAllOf };
|
|
157
|
-
|
|
158
|
-
//# sourceMappingURL=merge-schema.js.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { isPlainObject } from "../is-plain-object.js";
|
|
2
|
+
import { decodeInternalRef } from "./ref.js";
|
|
3
|
+
import { resolveRefSync } from "./resolve-ref.js";
|
|
4
|
+
//#region src/utils/schema/pick.ts
|
|
5
|
+
/**
|
|
6
|
+
* return a filtered object that only contains the given `$ref` & its referenced fields.
|
|
7
|
+
*/
|
|
8
|
+
function pickSchema(root, $ref) {
|
|
9
|
+
const out = {};
|
|
10
|
+
const scanned = /* @__PURE__ */ new Set();
|
|
11
|
+
function scan(next) {
|
|
12
|
+
if (isPlainObject(next)) {
|
|
13
|
+
if (typeof next.$ref === "string") {
|
|
14
|
+
if (scanned.has(next.$ref)) return;
|
|
15
|
+
const resolved = resolveRefSync(next.$ref, root);
|
|
16
|
+
scanned.add(next.$ref);
|
|
17
|
+
scan(resolved);
|
|
18
|
+
setField(out, decodeInternalRef(next.$ref), resolved);
|
|
19
|
+
}
|
|
20
|
+
for (const k in next) scan(next[k]);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(next)) for (const item of next) scan(item);
|
|
24
|
+
}
|
|
25
|
+
scan({ $ref });
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
function setField(obj, field, value) {
|
|
29
|
+
if (field.length === 0) return value;
|
|
30
|
+
const out = isPlainObject(obj) ? obj : {};
|
|
31
|
+
let current = out;
|
|
32
|
+
for (let i = 0; i < field.length; i++) {
|
|
33
|
+
const k = field[i];
|
|
34
|
+
if (i === field.length - 1) current[k] = value;
|
|
35
|
+
else {
|
|
36
|
+
const v = current[k];
|
|
37
|
+
if (isPlainObject(v)) current = v;
|
|
38
|
+
else current = current[k] = {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { pickSchema };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/utils/schema/ref.ts
|
|
2
|
+
/**
|
|
3
|
+
* RFC 6901 reference-token encoding for JSON Pointer fragments used in in-document `$ref` (`#/…`).
|
|
4
|
+
*
|
|
5
|
+
* @see https://datatracker.ietf.org/doc/html/rfc6901
|
|
6
|
+
*/
|
|
7
|
+
function encodeSegment(segment) {
|
|
8
|
+
return segment.replace(/~/g, "~0").replace(/\//g, "~1");
|
|
9
|
+
}
|
|
10
|
+
function decodeSegment(segment) {
|
|
11
|
+
return segment.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build an in-document `$ref` string from logical path segments (e.g. `['components','schemas','Pet']` → `#/components/schemas/Pet`).
|
|
15
|
+
*/
|
|
16
|
+
function encodeInternalRef(segments) {
|
|
17
|
+
if (segments.length === 0) return "#/";
|
|
18
|
+
return `#/${segments.map(encodeSegment).join("/")}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Parse an in-document `$ref` (`#/…`) into decoded path segments for walking the root document.
|
|
22
|
+
*/
|
|
23
|
+
function decodeInternalRef(ref) {
|
|
24
|
+
if (!ref.startsWith("#")) throw new Error("expected in-document $ref starting with `#`");
|
|
25
|
+
const raw = ref.slice(1);
|
|
26
|
+
const out = [];
|
|
27
|
+
if (raw.length === 0) return out;
|
|
28
|
+
for (const token of raw.split("/")) {
|
|
29
|
+
if (token.length === 0) continue;
|
|
30
|
+
out.push(decodeSegment(token));
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { decodeInternalRef, encodeInternalRef };
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
+
import { isPlainObject } from "../is-plain-object.js";
|
|
2
|
+
import { decodeInternalRef } from "./ref.js";
|
|
1
3
|
//#region src/utils/schema/resolve-ref.ts
|
|
2
4
|
function resolveRefSync(ref, schema) {
|
|
3
|
-
if (!ref.startsWith("#")) return;
|
|
4
|
-
const segments = ref.slice(1).split("/");
|
|
5
5
|
let current = schema;
|
|
6
|
-
for (const seg of
|
|
7
|
-
|
|
8
|
-
if (isPlainObject(current)) current = current[seg];
|
|
9
|
-
else return;
|
|
10
|
-
}
|
|
6
|
+
for (const seg of decodeInternalRef(ref)) if (isPlainObject(current)) current = current[seg];
|
|
7
|
+
else return;
|
|
11
8
|
return current;
|
|
12
9
|
}
|
|
13
|
-
function isPlainObject(value) {
|
|
14
|
-
if (typeof value !== "object" || value === null) return false;
|
|
15
|
-
const prototype = Object.getPrototypeOf(value);
|
|
16
|
-
return prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null;
|
|
17
|
-
}
|
|
18
10
|
//#endregion
|
|
19
11
|
export { resolveRefSync };
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=resolve-ref.js.map
|
|
@@ -23,15 +23,14 @@ function schemaToString(value, _resolver, flags = FormatFlags.None) {
|
|
|
23
23
|
const result = Array.from(members).join(sep);
|
|
24
24
|
return nullable ? `${result} | null` : result;
|
|
25
25
|
}
|
|
26
|
-
function run(
|
|
27
|
-
const
|
|
28
|
-
schema = resolved.dereferenced;
|
|
26
|
+
function run(input, flags) {
|
|
27
|
+
const { dereferenced: schema, raw } = resolver(input);
|
|
29
28
|
if (schema === true) return "any";
|
|
30
29
|
else if (schema === false) return "never";
|
|
31
30
|
if ((flags & FormatFlags.UseAlias) === FormatFlags.UseAlias) {
|
|
32
31
|
if (schema.title) return schema.title;
|
|
33
|
-
if (typeof
|
|
34
|
-
const ref =
|
|
32
|
+
if (typeof raw === "object" && raw.$ref) {
|
|
33
|
+
const ref = raw.$ref.split("/");
|
|
35
34
|
if (ref.length > 0) return ref[ref.length - 1];
|
|
36
35
|
}
|
|
37
36
|
}
|
|
@@ -54,5 +53,3 @@ function schemaToString(value, _resolver, flags = FormatFlags.None) {
|
|
|
54
53
|
}
|
|
55
54
|
//#endregion
|
|
56
55
|
export { FormatFlags, schemaToString };
|
|
57
|
-
|
|
58
|
-
//# sourceMappingURL=to-string.js.map
|
package/dist/utils/url.js
CHANGED
package/dist/utils/use-query.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fumadocs-openapi",
|
|
3
|
-
"version": "10.6.
|
|
3
|
+
"version": "10.6.5",
|
|
4
4
|
"description": "Generate MDX docs for your OpenAPI spec",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Docs",
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
"exports": {
|
|
22
22
|
".": "./dist/index.js",
|
|
23
23
|
"./i18n": "./dist/i18n.js",
|
|
24
|
-
"./playground": "./dist/playground/index.js",
|
|
25
24
|
"./playground/client": "./dist/playground/client.js",
|
|
26
25
|
"./requests/generators": "./dist/requests/generators/index.js",
|
|
27
26
|
"./requests/generators/all": "./dist/requests/generators/all.js",
|
|
@@ -79,8 +78,8 @@
|
|
|
79
78
|
"tailwindcss": "^4.2.2",
|
|
80
79
|
"tsdown": "0.21.6",
|
|
81
80
|
"@fumadocs/tailwind": "0.0.3",
|
|
82
|
-
"fumadocs-core": "16.7.
|
|
83
|
-
"fumadocs-ui": "16.7.
|
|
81
|
+
"fumadocs-core": "16.7.10",
|
|
82
|
+
"fumadocs-ui": "16.7.10",
|
|
84
83
|
"tsconfig": "0.0.0"
|
|
85
84
|
},
|
|
86
85
|
"peerDependencies": {
|