Skip to content

Commit ae38ed0

Browse files
committed
OpenAPI: Fix Scalar upgrade() is somehow ignored
1 parent d0859ae commit ae38ed0

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

.changeset/fine-loops-yawn.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'fumadocs-openapi': patch
3+
---
4+
5+
Fix Scalar `upgrade()` is somehow ignored

packages/openapi/src/utils/process-document.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import type { DereferenceMap, Document } from '@/types';
22
import type { NoReference } from '@/utils/schema';
33
import type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
4-
import { dereference, load, upgrade } from '@scalar/openapi-parser';
5-
import { fetchUrls } from '@scalar/openapi-parser/plugins/fetch-urls';
6-
import { readFiles } from '@scalar/openapi-parser/plugins/read-files';
4+
import { bundle, dereference, upgrade } from '@scalar/openapi-parser';
5+
import { fetchUrls, readFiles } from '@scalar/openapi-parser/plugins';
76

87
export type DocumentInput = string | OpenAPIV3_1.Document | OpenAPIV3.Document;
98

@@ -28,19 +27,14 @@ export async function processDocument(
2827
if (cached) return cached;
2928

3029
const dereferenceMap: DereferenceMap = new Map();
31-
const loaded = await load(input, {
32-
plugins: [readFiles(), fetchUrls()],
30+
let document = await bundle(input as string, {
31+
plugins: [fetchUrls(), readFiles()],
32+
treeShake: false,
3333
});
3434

35-
if (loaded.errors && loaded.errors.length > 0) {
36-
throw new Error(
37-
loaded.errors.map((err) => `${err.code}: ${err.message}`).join('\n'),
38-
);
39-
}
40-
4135
// upgrade
42-
loaded.specification = upgrade(loaded.specification).specification;
43-
const { schema: dereferenced } = await dereference(loaded.filesystem, {
36+
document = upgrade(document).specification;
37+
const { schema: dereferenced } = await dereference(document, {
4438
onDereference({ ref, schema }) {
4539
dereferenceMap.set(schema, ref);
4640
},
@@ -49,7 +43,7 @@ export async function processDocument(
4943
const processed: ProcessedDocument = {
5044
document: dereferenced as NoReference<Document>,
5145
dereferenceMap,
52-
downloaded: loaded.specification as Document,
46+
downloaded: document as Document,
5347
};
5448

5549
if (!disableCache && typeof input === 'string') {

0 commit comments

Comments
 (0)