fumadocs-openapi 10.3.14 → 10.3.15
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 +3 -4
- package/dist/_openapi/types.d.ts +2 -1
- package/dist/_openapi/types.d.ts.map +1 -0
- package/dist/generate-file.d.ts +2 -1
- package/dist/generate-file.d.ts.map +1 -0
- package/dist/generate-file.js +2 -1
- package/dist/generate-file.js.map +1 -0
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/dereference.js +2 -1
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/dereference.js.map +1 -0
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/index.js +2 -1
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/index.js.map +1 -0
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/klona.js +2 -1
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/klona.js.map +1 -0
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/resolveRef.js +2 -1
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/resolveRef.js.map +1 -0
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/types.js +2 -1
- package/dist/node_modules/.pnpm/dereference-json-schema@0.2.1/node_modules/dereference-json-schema/types.js.map +1 -0
- package/dist/playground/client.d.ts +2 -1
- package/dist/playground/client.d.ts.map +1 -0
- package/dist/playground/client.js +4 -3
- package/dist/playground/client.js.map +1 -0
- package/dist/playground/components/inputs.js +25 -27
- package/dist/playground/components/inputs.js.map +1 -0
- package/dist/playground/components/oauth-dialog.js +2 -1
- package/dist/playground/components/oauth-dialog.js.map +1 -0
- package/dist/playground/components/server-select.js +2 -1
- package/dist/playground/components/server-select.js.map +1 -0
- package/dist/playground/fetcher.d.ts +2 -1
- package/dist/playground/fetcher.d.ts.map +1 -0
- package/dist/playground/fetcher.js +2 -1
- package/dist/playground/fetcher.js.map +1 -0
- package/dist/playground/index.d.ts +2 -1
- package/dist/playground/index.d.ts.map +1 -0
- package/dist/playground/index.js +2 -1
- package/dist/playground/index.js.map +1 -0
- package/dist/playground/lazy.js +2 -1
- package/dist/playground/lazy.js.map +1 -0
- package/dist/playground/schema.d.ts +2 -1
- package/dist/playground/schema.d.ts.map +1 -0
- package/dist/playground/schema.js +18 -11
- package/dist/playground/schema.js.map +1 -0
- package/dist/playground/status-info.js +2 -1
- package/dist/playground/status-info.js.map +1 -0
- package/dist/requests/generators/all.d.ts +2 -1
- package/dist/requests/generators/all.d.ts.map +1 -0
- package/dist/requests/generators/all.js +2 -1
- package/dist/requests/generators/all.js.map +1 -0
- package/dist/requests/generators/csharp.d.ts +2 -1
- package/dist/requests/generators/csharp.d.ts.map +1 -0
- package/dist/requests/generators/csharp.js +2 -1
- package/dist/requests/generators/csharp.js.map +1 -0
- package/dist/requests/generators/curl.d.ts +2 -1
- package/dist/requests/generators/curl.d.ts.map +1 -0
- package/dist/requests/generators/curl.js +2 -1
- package/dist/requests/generators/curl.js.map +1 -0
- package/dist/requests/generators/go.d.ts +2 -1
- package/dist/requests/generators/go.d.ts.map +1 -0
- package/dist/requests/generators/go.js +2 -1
- package/dist/requests/generators/go.js.map +1 -0
- package/dist/requests/generators/index.d.ts +2 -1
- package/dist/requests/generators/index.d.ts.map +1 -0
- package/dist/requests/generators/index.js +2 -1
- package/dist/requests/generators/index.js.map +1 -0
- package/dist/requests/generators/java.d.ts +2 -1
- package/dist/requests/generators/java.d.ts.map +1 -0
- package/dist/requests/generators/java.js +2 -1
- package/dist/requests/generators/java.js.map +1 -0
- package/dist/requests/generators/javascript.d.ts +2 -1
- package/dist/requests/generators/javascript.d.ts.map +1 -0
- package/dist/requests/generators/javascript.js +2 -1
- package/dist/requests/generators/javascript.js.map +1 -0
- package/dist/requests/generators/python.d.ts +2 -1
- package/dist/requests/generators/python.d.ts.map +1 -0
- package/dist/requests/generators/python.js +2 -1
- package/dist/requests/generators/python.js.map +1 -0
- package/dist/requests/media/adapter.d.ts +2 -1
- package/dist/requests/media/adapter.d.ts.map +1 -0
- package/dist/requests/media/adapter.js +2 -1
- package/dist/requests/media/adapter.js.map +1 -0
- package/dist/requests/media/encode.d.ts +2 -1
- package/dist/requests/media/encode.d.ts.map +1 -0
- package/dist/requests/media/encode.js +4 -2
- package/dist/requests/media/encode.js.map +1 -0
- package/dist/requests/media/resolve-adapter.js +2 -1
- package/dist/requests/media/resolve-adapter.js.map +1 -0
- package/dist/requests/string-utils.js +2 -1
- package/dist/requests/string-utils.js.map +1 -0
- package/dist/requests/to-python-object.js +2 -1
- package/dist/requests/to-python-object.js.map +1 -0
- package/dist/requests/types.d.ts +2 -1
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/scalar/client.js +2 -1
- package/dist/scalar/client.js.map +1 -0
- package/dist/scalar/index.d.ts +2 -1
- package/dist/scalar/index.d.ts.map +1 -0
- package/dist/scalar/index.js +2 -1
- package/dist/scalar/index.js.map +1 -0
- package/dist/server/create.d.ts +2 -1
- package/dist/server/create.d.ts.map +1 -0
- package/dist/server/create.js +2 -1
- package/dist/server/create.js.map +1 -0
- package/dist/server/proxy.d.ts +2 -1
- package/dist/server/proxy.d.ts.map +1 -0
- package/dist/server/proxy.js +2 -1
- package/dist/server/proxy.js.map +1 -0
- package/dist/server/source-api.d.ts +2 -1
- package/dist/server/source-api.d.ts.map +1 -0
- package/dist/server/source-api.js +2 -1
- package/dist/server/source-api.js.map +1 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -0
- package/dist/ui/api-page.d.ts +2 -1
- package/dist/ui/api-page.d.ts.map +1 -0
- package/dist/ui/api-page.js +2 -1
- package/dist/ui/api-page.js.map +1 -0
- package/dist/ui/base.d.ts +2 -1
- package/dist/ui/base.d.ts.map +1 -0
- package/dist/ui/base.js +2 -1
- package/dist/ui/base.js.map +1 -0
- package/dist/ui/client/index.d.ts +2 -1
- package/dist/ui/client/index.d.ts.map +1 -0
- package/dist/ui/client/index.js +2 -1
- package/dist/ui/client/index.js.map +1 -0
- package/dist/ui/client/storage-key.js +2 -1
- package/dist/ui/client/storage-key.js.map +1 -0
- package/dist/ui/components/accordion.js +2 -1
- package/dist/ui/components/accordion.js.map +1 -0
- package/dist/ui/components/dialog.js +2 -1
- package/dist/ui/components/dialog.js.map +1 -0
- package/dist/ui/components/input.js +2 -1
- package/dist/ui/components/input.js.map +1 -0
- package/dist/ui/components/method-label.js +2 -1
- package/dist/ui/components/method-label.js.map +1 -0
- package/dist/ui/components/select.js +2 -1
- package/dist/ui/components/select.js.map +1 -0
- package/dist/ui/contexts/api.js +2 -1
- package/dist/ui/contexts/api.js.map +1 -0
- package/dist/ui/contexts/api.lazy.js +2 -1
- package/dist/ui/contexts/api.lazy.js.map +1 -0
- package/dist/ui/full.client.js +2 -1
- package/dist/ui/full.client.js.map +1 -0
- package/dist/ui/full.d.ts +2 -1
- package/dist/ui/full.d.ts.map +1 -0
- package/dist/ui/full.js +2 -1
- package/dist/ui/full.js.map +1 -0
- package/dist/ui/operation/client.js +2 -1
- package/dist/ui/operation/client.js.map +1 -0
- package/dist/ui/operation/index.js +2 -1
- package/dist/ui/operation/index.js.map +1 -0
- package/dist/ui/operation/request-tabs.d.ts +2 -1
- package/dist/ui/operation/request-tabs.d.ts.map +1 -0
- package/dist/ui/operation/request-tabs.js +2 -1
- package/dist/ui/operation/request-tabs.js.map +1 -0
- package/dist/ui/operation/response-tabs.d.ts +2 -1
- package/dist/ui/operation/response-tabs.d.ts.map +1 -0
- package/dist/ui/operation/response-tabs.js +2 -1
- package/dist/ui/operation/response-tabs.js.map +1 -0
- package/dist/ui/operation/usage-tabs/client.js +2 -1
- package/dist/ui/operation/usage-tabs/client.js.map +1 -0
- package/dist/ui/operation/usage-tabs/index.js +2 -1
- package/dist/ui/operation/usage-tabs/index.js.map +1 -0
- package/dist/ui/operation/usage-tabs/lazy.js +2 -1
- package/dist/ui/operation/usage-tabs/lazy.js.map +1 -0
- package/dist/ui/schema/client.d.ts +2 -1
- package/dist/ui/schema/client.d.ts.map +1 -0
- package/dist/ui/schema/client.js +2 -1
- package/dist/ui/schema/client.js.map +1 -0
- package/dist/ui/schema/index.d.ts +2 -1
- package/dist/ui/schema/index.d.ts.map +1 -0
- package/dist/ui/schema/index.js +2 -1
- package/dist/ui/schema/index.js.map +1 -0
- package/dist/ui/schema/lazy.js +2 -1
- package/dist/ui/schema/lazy.js.map +1 -0
- package/dist/utils/deep-equal.js +2 -1
- package/dist/utils/deep-equal.js.map +1 -0
- package/dist/utils/id-to-title.js +2 -1
- package/dist/utils/id-to-title.js.map +1 -0
- package/dist/utils/lazy.js +2 -1
- package/dist/utils/lazy.js.map +1 -0
- package/dist/utils/merge-schema.js +20 -5
- package/dist/utils/merge-schema.js.map +1 -0
- package/dist/utils/pages/builder.d.ts +2 -1
- package/dist/utils/pages/builder.d.ts.map +1 -0
- package/dist/utils/pages/builder.js +2 -1
- package/dist/utils/pages/builder.js.map +1 -0
- package/dist/utils/pages/preset-auto.d.ts +2 -1
- package/dist/utils/pages/preset-auto.d.ts.map +1 -0
- package/dist/utils/pages/preset-auto.js +2 -1
- package/dist/utils/pages/preset-auto.js.map +1 -0
- package/dist/utils/pages/to-body.js +2 -1
- package/dist/utils/pages/to-body.js.map +1 -0
- package/dist/utils/pages/to-static-data.js +2 -1
- package/dist/utils/pages/to-static-data.js.map +1 -0
- package/dist/utils/pages/to-text.d.ts +2 -1
- package/dist/utils/pages/to-text.d.ts.map +1 -0
- package/dist/utils/pages/to-text.js +2 -1
- package/dist/utils/pages/to-text.js.map +1 -0
- package/dist/utils/process-document.d.ts +2 -1
- package/dist/utils/process-document.d.ts.map +1 -0
- package/dist/utils/process-document.js +2 -1
- package/dist/utils/process-document.js.map +1 -0
- package/dist/utils/remove-undefined.js +2 -1
- package/dist/utils/remove-undefined.js.map +1 -0
- package/dist/utils/schema-to-string.js +2 -1
- package/dist/utils/schema-to-string.js.map +1 -0
- package/dist/utils/schema.d.ts +2 -1
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +2 -1
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/url.js +3 -2
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/use-query.js +2 -1
- package/dist/utils/use-query.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-document.js","names":[],"sources":["../../src/utils/process-document.ts"],"sourcesContent":["import type { Document } from '@/types';\nimport type { NoReference } from '@/utils/schema';\nimport { bundle } from '@scalar/json-magic/bundle';\nimport { upgrade } from '@scalar/openapi-upgrader';\nimport { fetchUrls, readFiles } from '@scalar/json-magic/bundle/plugins/node';\nimport type { JSONSchema } from 'json-schema-typed/draft-2020-12';\nimport { resolveRefSync } from 'dereference-json-schema';\n\nexport interface ProcessedDocument {\n /**\n * dereferenced document\n */\n dereferenced: NoReference<Document>;\n\n /**\n * Get raw object from dereferenced object\n */\n getRawRef: (obj: object) => string | undefined;\n\n bundled: Document;\n}\n\n/**\n * process & reference input document to a Fumadocs OpenAPI compatible format\n */\nexport async function processDocument(input: string | Document): Promise<ProcessedDocument> {\n const bundled: Document = await bundle(input, {\n plugins: [fetchUrls(), readFiles()],\n treeShake: true,\n hooks: {\n onResolveError(node) {\n throw new Error(`Failed to resolve ${node.$ref}`);\n },\n },\n })\n .then((v) => upgrade(v as never, '3.2') as Document)\n .catch((e) => {\n throw new Error(`[OpenAPI] Failed to resolve input: ${input}`, {\n cause: e,\n });\n });\n\n /**\n * Dereferenced value and its original `$ref` value\n */\n const dereferenceMap = new WeakMap<object, string>();\n\n return {\n dereferenced: dereferenceSync(bundled as JSONSchema, (ref, schema) => {\n dereferenceMap.set(schema as object, ref);\n }) as NoReference<Document>,\n getRawRef(obj) {\n return dereferenceMap.get(obj);\n },\n bundled,\n };\n}\n\n/**\n * Resolves all $ref pointers in a schema and returns a new schema without any $ref pointers.\n */\nfunction dereferenceSync(\n schema: JSONSchema,\n onDereference: (ref: string, schema: JSONSchema) => void,\n): JSONSchema {\n if (typeof schema === 'boolean') return schema;\n const visitedNodes = new Set<unknown>();\n const cloned = structuredClone(schema);\n\n function resolve(current: unknown, path: string): JSONSchema {\n if (typeof current === 'object' && current !== null) {\n // make sure we don't visit the same node twice\n if (visitedNodes.has(current)) {\n return current;\n }\n visitedNodes.add(current);\n\n if (Array.isArray(current)) {\n // array\n for (let index = 0; index < current.length; index++) {\n current[index] = resolve(current[index], `${path}/${index}`);\n }\n } else {\n // object\n if ('$ref' in current && typeof current['$ref'] === 'string') {\n const ref = current['$ref'];\n const out = resolveRefSync(cloned as never, ref) as JSONSchema;\n onDereference(ref, out);\n return out;\n }\n\n const obj = current as Record<string, unknown>;\n for (const key in current) {\n obj[key] = resolve(obj[key], `${path}/${key}`);\n }\n }\n }\n\n return current as JSONSchema;\n }\n\n return resolve(cloned, '#');\n}\n"],"mappings":";;;;;;;;;;AAyBA,eAAsB,gBAAgB,OAAsD;CAC1F,MAAM,UAAoB,MAAM,OAAO,OAAO;EAC5C,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;EACnC,WAAW;EACX,OAAO,EACL,eAAe,MAAM;AACnB,SAAM,IAAI,MAAM,qBAAqB,KAAK,OAAO;KAEpD;EACF,CAAC,CACC,MAAM,MAAM,QAAQ,GAAY,MAAM,CAAa,CACnD,OAAO,MAAM;AACZ,QAAM,IAAI,MAAM,sCAAsC,SAAS,EAC7D,OAAO,GACR,CAAC;GACF;;;;CAKJ,MAAM,iCAAiB,IAAI,SAAyB;AAEpD,QAAO;EACL,cAAc,gBAAgB,UAAwB,KAAK,WAAW;AACpE,kBAAe,IAAI,QAAkB,IAAI;IACzC;EACF,UAAU,KAAK;AACb,UAAO,eAAe,IAAI,IAAI;;EAEhC;EACD;;;;;AAMH,SAAS,gBACP,QACA,eACY;AACZ,KAAI,OAAO,WAAW,UAAW,QAAO;CACxC,MAAM,+BAAe,IAAI,KAAc;CACvC,MAAM,SAAS,gBAAgB,OAAO;CAEtC,SAAS,QAAQ,SAAkB,MAA0B;AAC3D,MAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AAEnD,OAAI,aAAa,IAAI,QAAQ,CAC3B,QAAO;AAET,gBAAa,IAAI,QAAQ;AAEzB,OAAI,MAAM,QAAQ,QAAQ,CAExB,MAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,QAC1C,SAAQ,SAAS,QAAQ,QAAQ,QAAQ,GAAG,KAAK,GAAG,QAAQ;QAEzD;AAEL,QAAI,UAAU,WAAW,OAAO,QAAQ,YAAY,UAAU;KAC5D,MAAM,MAAM,QAAQ;KACpB,MAAM,yDAAqB,QAAiB,IAAI;AAChD,mBAAc,KAAK,IAAI;AACvB,YAAO;;IAGT,MAAM,MAAM;AACZ,SAAK,MAAM,OAAO,QAChB,KAAI,OAAO,QAAQ,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM;;;AAKpD,SAAO;;AAGT,QAAO,QAAQ,QAAQ,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-undefined.js","names":[],"sources":["../../src/utils/remove-undefined.ts"],"sourcesContent":["export function removeUndefined<T extends object>(value: T, deep = false): T {\n const obj = value as Record<string, unknown>;\n\n for (const key in obj) {\n if (obj[key] === undefined) delete obj[key];\n if (!deep) continue;\n\n const entry = obj[key];\n\n if (typeof entry === 'object' && entry !== null) {\n removeUndefined(entry, deep);\n continue;\n }\n\n if (Array.isArray(entry)) {\n for (const item of entry) removeUndefined(item, deep);\n }\n }\n\n return value;\n}\n"],"mappings":";AAAA,SAAgB,gBAAkC,OAAU,OAAO,OAAU;CAC3E,MAAM,MAAM;AAEZ,MAAK,MAAM,OAAO,KAAK;AACrB,MAAI,IAAI,SAAS,OAAW,QAAO,IAAI;AACvC,MAAI,CAAC,KAAM;EAEX,MAAM,QAAQ,IAAI;AAElB,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,mBAAgB,OAAO,KAAK;AAC5B;;AAGF,MAAI,MAAM,QAAQ,MAAM,CACtB,MAAK,MAAM,QAAQ,MAAO,iBAAgB,MAAM,KAAK;;AAIzD,QAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-to-string.js","names":[],"sources":["../../src/utils/schema-to-string.ts"],"sourcesContent":["import type { ParsedSchema, ResolvedSchema } from '@/utils/schema';\nimport type { ProcessedDocument } from '@/utils/process-document';\n\nexport enum FormatFlags {\n None = 0,\n UseAlias = 1 << 0,\n}\n\ntype Resolver = (schema: ResolvedSchema) => {\n dereferenced: ResolvedSchema;\n raw?: ParsedSchema;\n};\n\nexport function schemaToString(\n value: ResolvedSchema,\n _resolver?: ProcessedDocument | Resolver,\n flags: FormatFlags = FormatFlags.None,\n): string {\n const resolver: Resolver =\n typeof _resolver === 'function'\n ? _resolver\n : (schema) => {\n const ref =\n _resolver && typeof schema === 'object' ? _resolver.getRawRef(schema) : undefined;\n\n return {\n dereferenced: schema,\n raw: ref ? { $ref: ref } : undefined,\n };\n };\n function union(union: readonly ResolvedSchema[], sep: string, flags: FormatFlags) {\n const members = new Set();\n let nullable = false;\n\n for (const item of union) {\n const result = run(item, flags | FormatFlags.UseAlias);\n\n if (result === 'null') {\n nullable = true;\n } else if (result !== 'unknown') {\n members.add(result);\n }\n }\n\n const result = Array.from(members).join(sep);\n return nullable ? `${result} | null` : result;\n }\n\n function run(schema: ResolvedSchema, flags: FormatFlags): string {\n const resolved = resolver(schema);\n schema = resolved.dereferenced;\n\n if (schema === true) return 'any';\n else if (schema === false) return 'never';\n\n if ((flags & FormatFlags.UseAlias) === FormatFlags.UseAlias) {\n if (schema.title) return schema.title;\n\n if (typeof resolved.raw === 'object' && resolved.raw.$ref) {\n const ref = resolved.raw.$ref.split('/');\n if (ref.length > 0) return ref[ref.length - 1];\n }\n }\n\n if (Array.isArray(schema.type)) {\n return union(\n schema.type.map((type) => ({\n ...schema,\n type,\n })),\n ' | ',\n flags,\n );\n }\n\n if (schema.type === 'array')\n return `array<${schema.items ? run(schema.items, flags | FormatFlags.UseAlias) : 'unknown'}>`;\n\n const or = schema.oneOf ?? schema.anyOf;\n if (schema.oneOf && schema.anyOf) {\n return `(${union(schema.oneOf, ' | ', flags)}) & (${union(schema.anyOf, ' | ', flags)})`;\n } else if (or) {\n return union(or, ' | ', flags);\n }\n\n if (schema.allOf) {\n return union(schema.allOf, ' & ', flags);\n }\n\n if (schema.not) return `not ${run(schema.not, flags)}`;\n if (schema.type === 'string' && schema.format === 'binary') return 'file';\n\n if (schema.type && Array.isArray(schema.type)) {\n return schema.type.filter((v) => v !== 'null').join(' | ');\n }\n\n if (schema.type) {\n return schema.type as string;\n }\n\n return 'unknown';\n }\n\n return run(value, flags);\n}\n"],"mappings":";AAGA,IAAY,oDAAL;AACL;AACA;;;AAQF,SAAgB,eACd,OACA,WACA,QAAqB,YAAY,MACzB;CACR,MAAM,WACJ,OAAO,cAAc,aACjB,aACC,WAAW;EACV,MAAM,MACJ,aAAa,OAAO,WAAW,WAAW,UAAU,UAAU,OAAO,GAAG;AAE1E,SAAO;GACL,cAAc;GACd,KAAK,MAAM,EAAE,MAAM,KAAK,GAAG;GAC5B;;CAET,SAAS,MAAM,OAAkC,KAAa,OAAoB;EAChF,MAAM,0BAAU,IAAI,KAAK;EACzB,IAAI,WAAW;AAEf,OAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,SAAS,IAAI,MAAM,QAAQ,YAAY,SAAS;AAEtD,OAAI,WAAW,OACb,YAAW;YACF,WAAW,UACpB,SAAQ,IAAI,OAAO;;EAIvB,MAAM,SAAS,MAAM,KAAK,QAAQ,CAAC,KAAK,IAAI;AAC5C,SAAO,WAAW,GAAG,OAAO,WAAW;;CAGzC,SAAS,IAAI,QAAwB,OAA4B;EAC/D,MAAM,WAAW,SAAS,OAAO;AACjC,WAAS,SAAS;AAElB,MAAI,WAAW,KAAM,QAAO;WACnB,WAAW,MAAO,QAAO;AAElC,OAAK,QAAQ,YAAY,cAAc,YAAY,UAAU;AAC3D,OAAI,OAAO,MAAO,QAAO,OAAO;AAEhC,OAAI,OAAO,SAAS,QAAQ,YAAY,SAAS,IAAI,MAAM;IACzD,MAAM,MAAM,SAAS,IAAI,KAAK,MAAM,IAAI;AACxC,QAAI,IAAI,SAAS,EAAG,QAAO,IAAI,IAAI,SAAS;;;AAIhD,MAAI,MAAM,QAAQ,OAAO,KAAK,CAC5B,QAAO,MACL,OAAO,KAAK,KAAK,UAAU;GACzB,GAAG;GACH;GACD,EAAE,EACH,OACA,MACD;AAGH,MAAI,OAAO,SAAS,QAClB,QAAO,SAAS,OAAO,QAAQ,IAAI,OAAO,OAAO,QAAQ,YAAY,SAAS,GAAG,UAAU;EAE7F,MAAM,KAAK,OAAO,SAAS,OAAO;AAClC,MAAI,OAAO,SAAS,OAAO,MACzB,QAAO,IAAI,MAAM,OAAO,OAAO,OAAO,MAAM,CAAC,OAAO,MAAM,OAAO,OAAO,OAAO,MAAM,CAAC;WAC7E,GACT,QAAO,MAAM,IAAI,OAAO,MAAM;AAGhC,MAAI,OAAO,MACT,QAAO,MAAM,OAAO,OAAO,OAAO,MAAM;AAG1C,MAAI,OAAO,IAAK,QAAO,OAAO,IAAI,OAAO,KAAK,MAAM;AACpD,MAAI,OAAO,SAAS,YAAY,OAAO,WAAW,SAAU,QAAO;AAEnE,MAAI,OAAO,QAAQ,MAAM,QAAQ,OAAO,KAAK,CAC3C,QAAO,OAAO,KAAK,QAAQ,MAAM,MAAM,OAAO,CAAC,KAAK,MAAM;AAG5D,MAAI,OAAO,KACT,QAAO,OAAO;AAGhB,SAAO;;AAGT,QAAO,IAAI,OAAO,MAAM"}
|
package/dist/utils/schema.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ type ParsedSchema = (JSONSchema & {
|
|
|
11
11
|
}) | boolean;
|
|
12
12
|
type ResolvedSchema = NoReferenceJSONSchema<ParsedSchema>;
|
|
13
13
|
//#endregion
|
|
14
|
-
export { NoReference, ParsedSchema, ResolvedSchema };
|
|
14
|
+
export { NoReference, ParsedSchema, ResolvedSchema };
|
|
15
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","names":[],"sources":["../../src/utils/schema.ts"],"mappings":";;;;KAcY,WAAA,MAAiB,CAAA,uBACzB,WAAA,CAAY,CAAA,MACZ,CAAA,SAAU,eAAA,GACR,OAAA,CAAQ,CAAA,EAAG,eAAA,IACX,CAAA,gCAEgB,CAAA,GAAI,WAAA,CAAY,CAAA,CAAE,CAAA,OAEhC,CAAA;AAAA,KAEH,qBAAA,MAA2B,CAAA,uBAC5B,WAAA,CAAY,CAAA,MACZ,CAAA;EAAY,IAAA;AAAA,IACV,IAAA,CAAK,CAAA,YACL,CAAA;AAAA,KAEM,YAAA,IACP,UAAA;EACC,mBAAA;AAAA;AAAA,KAGM,cAAA,GAAiB,qBAAA,CAAsB,YAAA"}
|
package/dist/utils/schema.js
CHANGED
|
@@ -48,4 +48,5 @@ function pickExample(value) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
//#endregion
|
|
51
|
-
export { createMethod, getPreferredType, getTagDisplayName, methodKeys, pickExample };
|
|
51
|
+
export { createMethod, getPreferredType, getTagDisplayName, methodKeys, pickExample };
|
|
52
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../src/utils/schema.ts"],"sourcesContent":["import type { JSONSchema } from 'json-schema-typed/draft-2020-12';\nimport type {\n ExampleObject,\n MediaTypeObject,\n MethodInformation,\n OperationObject,\n PathItemObject,\n ReferenceObject,\n TagObject,\n} from '@/types';\nimport { idToTitle } from '@/utils/id-to-title';\n\nexport const methodKeys = ['get', 'post', 'patch', 'delete', 'head', 'put'] as const;\n\nexport type NoReference<T> = T extends (infer I)[]\n ? NoReference<I>[]\n : T extends ReferenceObject\n ? Exclude<T, ReferenceObject>\n : T extends object\n ? {\n [K in keyof T]: NoReference<T[K]>;\n }\n : T;\n\ntype NoReferenceJSONSchema<T> = T extends (infer I)[]\n ? NoReference<I>[]\n : T extends { $ref?: string }\n ? Omit<T, '$ref'>\n : T;\n\nexport type ParsedSchema =\n | (JSONSchema & {\n 'x-playground-lazy'?: boolean;\n })\n | boolean;\nexport type ResolvedSchema = NoReferenceJSONSchema<ParsedSchema>;\n\nexport function getPreferredType(body: Record<string, unknown>): string | undefined {\n if ('application/json' in body) return 'application/json';\n\n return Object.keys(body)[0];\n}\n\nexport function getTagDisplayName(tag: TagObject): string {\n if ('x-displayName' in tag && typeof tag['x-displayName'] === 'string')\n return tag['x-displayName'];\n\n if (tag.summary) return tag.summary;\n return idToTitle(tag.name!);\n}\n\n/**\n * Summarize method endpoint information\n */\nexport function createMethod(\n method: string,\n path: NoReference<PathItemObject>,\n operation: NoReference<OperationObject>,\n): MethodInformation {\n return {\n description: path.description,\n summary: path.summary,\n ...operation,\n servers: operation.servers ?? path.servers,\n parameters: [...(operation.parameters ?? []), ...(path.parameters ?? [])],\n method: method.toUpperCase(),\n };\n}\n\ninterface ExampleLike {\n example?: unknown;\n examples?: {\n [media: string]: ExampleObject;\n };\n content?: {\n [media: string]: MediaTypeObject;\n };\n}\n\nexport function pickExample(value: ExampleLike): unknown | undefined {\n if (value.example !== undefined) {\n return value.example;\n }\n\n if (value.content) {\n const type = getPreferredType(value.content);\n const content = type ? value.content[type] : undefined;\n\n if (type && content) {\n const out = value.examples?.[type].value ?? pickExample(content);\n if (out !== undefined) return out;\n }\n }\n\n if (value.examples) {\n const examples = Object.values(value.examples);\n if (examples.length > 0) return examples[0].value;\n }\n}\n"],"mappings":";;;AAYA,MAAa,aAAa;CAAC;CAAO;CAAQ;CAAS;CAAU;CAAQ;CAAM;AAyB3E,SAAgB,iBAAiB,MAAmD;AAClF,KAAI,sBAAsB,KAAM,QAAO;AAEvC,QAAO,OAAO,KAAK,KAAK,CAAC;;AAG3B,SAAgB,kBAAkB,KAAwB;AACxD,KAAI,mBAAmB,OAAO,OAAO,IAAI,qBAAqB,SAC5D,QAAO,IAAI;AAEb,KAAI,IAAI,QAAS,QAAO,IAAI;AAC5B,QAAO,UAAU,IAAI,KAAM;;;;;AAM7B,SAAgB,aACd,QACA,MACA,WACmB;AACnB,QAAO;EACL,aAAa,KAAK;EAClB,SAAS,KAAK;EACd,GAAG;EACH,SAAS,UAAU,WAAW,KAAK;EACnC,YAAY,CAAC,GAAI,UAAU,cAAc,EAAE,EAAG,GAAI,KAAK,cAAc,EAAE,CAAE;EACzE,QAAQ,OAAO,aAAa;EAC7B;;AAaH,SAAgB,YAAY,OAAyC;AACnE,KAAI,MAAM,YAAY,OACpB,QAAO,MAAM;AAGf,KAAI,MAAM,SAAS;EACjB,MAAM,OAAO,iBAAiB,MAAM,QAAQ;EAC5C,MAAM,UAAU,OAAO,MAAM,QAAQ,QAAQ;AAE7C,MAAI,QAAQ,SAAS;GACnB,MAAM,MAAM,MAAM,WAAW,MAAM,SAAS,YAAY,QAAQ;AAChE,OAAI,QAAQ,OAAW,QAAO;;;AAIlC,KAAI,MAAM,UAAU;EAClB,MAAM,WAAW,OAAO,OAAO,MAAM,SAAS;AAC9C,MAAI,SAAS,SAAS,EAAG,QAAO,SAAS,GAAG"}
|
package/dist/utils/url.js
CHANGED
|
@@ -29,7 +29,7 @@ function resolveRequestData(pathname, { path, query }) {
|
|
|
29
29
|
const searchParams = new URLSearchParams(existingQueryString || "");
|
|
30
30
|
for (const key in query) {
|
|
31
31
|
const param = query[key];
|
|
32
|
-
if (param.values.length === 0) continue;
|
|
32
|
+
if (!param || param.values.length === 0) continue;
|
|
33
33
|
searchParams.delete(key);
|
|
34
34
|
for (const item of param.values) searchParams.append(key, item);
|
|
35
35
|
}
|
|
@@ -37,4 +37,5 @@ function resolveRequestData(pathname, { path, query }) {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
//#endregion
|
|
40
|
-
export { isUrl, joinURL, resolveRequestData, resolveServerUrl, withBase };
|
|
40
|
+
export { isUrl, joinURL, resolveRequestData, resolveServerUrl, withBase };
|
|
41
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import type { RequestData } from '@/requests/types';\n\nexport function isUrl(schemaId: string): boolean {\n return schemaId.startsWith('https://') || schemaId.startsWith('http://');\n}\n\nexport function joinURL(base: string, pathname: string): string {\n if (pathname.startsWith('/')) pathname = pathname.slice(1);\n if (base.endsWith('/')) base = base.slice(0, -1);\n\n if (pathname.length > 0) return base + '/' + pathname;\n else return base;\n}\n\n/**\n * @param url - URL (can be relative)\n * @param base - the base URL (must be absolute)\n */\nexport function withBase(url: string, base: string): string {\n if (!url.startsWith('https://') && !url.startsWith('http://')) {\n return joinURL(base, url);\n }\n\n return url;\n}\n\nexport function resolveServerUrl(template: string, variables: Record<string, string>): string {\n for (const [key, value] of Object.entries(variables)) {\n template = template.replaceAll(`{${key}}`, value);\n }\n\n return template;\n}\n\nexport function resolveRequestData(pathname: string, { path, query }: RequestData): string {\n // First, resolve path parameters in the pathname\n for (const key in path) {\n const param = path[key];\n\n pathname = pathname.replace(`{${key}}`, param.value);\n }\n\n // Check if pathname already contains query parameters (legacy API support)\n const [pathPart, existingQueryString] = pathname.split('?', 2);\n\n // Parse existing query parameters from the pathname if they exist\n const searchParams = new URLSearchParams(existingQueryString || '');\n\n // Add new query parameters from the RequestData\n for (const key in query) {\n const param = query[key];\n if (!param || param.values.length === 0) continue;\n\n // Remove existing parameter first to avoid duplicates\n searchParams.delete(key);\n for (const item of param.values) {\n searchParams.append(key, item);\n }\n }\n\n // Return the reconstructed URL\n return searchParams.size > 0 ? `${pathPart}?${searchParams}` : pathPart;\n}\n"],"mappings":";AAEA,SAAgB,MAAM,UAA2B;AAC/C,QAAO,SAAS,WAAW,WAAW,IAAI,SAAS,WAAW,UAAU;;AAG1E,SAAgB,QAAQ,MAAc,UAA0B;AAC9D,KAAI,SAAS,WAAW,IAAI,CAAE,YAAW,SAAS,MAAM,EAAE;AAC1D,KAAI,KAAK,SAAS,IAAI,CAAE,QAAO,KAAK,MAAM,GAAG,GAAG;AAEhD,KAAI,SAAS,SAAS,EAAG,QAAO,OAAO,MAAM;KACxC,QAAO;;;;;;AAOd,SAAgB,SAAS,KAAa,MAAsB;AAC1D,KAAI,CAAC,IAAI,WAAW,WAAW,IAAI,CAAC,IAAI,WAAW,UAAU,CAC3D,QAAO,QAAQ,MAAM,IAAI;AAG3B,QAAO;;AAGT,SAAgB,iBAAiB,UAAkB,WAA2C;AAC5F,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,CAClD,YAAW,SAAS,WAAW,IAAI,IAAI,IAAI,MAAM;AAGnD,QAAO;;AAGT,SAAgB,mBAAmB,UAAkB,EAAE,MAAM,SAA8B;AAEzF,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,KAAK;AAEnB,aAAW,SAAS,QAAQ,IAAI,IAAI,IAAI,MAAM,MAAM;;CAItD,MAAM,CAAC,UAAU,uBAAuB,SAAS,MAAM,KAAK,EAAE;CAG9D,MAAM,eAAe,IAAI,gBAAgB,uBAAuB,GAAG;AAGnE,MAAK,MAAM,OAAO,OAAO;EACvB,MAAM,QAAQ,MAAM;AACpB,MAAI,CAAC,SAAS,MAAM,OAAO,WAAW,EAAG;AAGzC,eAAa,OAAO,IAAI;AACxB,OAAK,MAAM,QAAQ,MAAM,OACvB,cAAa,OAAO,KAAK,KAAK;;AAKlC,QAAO,aAAa,OAAO,IAAI,GAAG,SAAS,GAAG,iBAAiB"}
|
package/dist/utils/use-query.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-query.js","names":[],"sources":["../../src/utils/use-query.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nexport function useQuery<I extends unknown[], T>(\n fn: (...input: I) => Promise<T>,\n): {\n start: (...input: I) => void;\n reset: () => void;\n data?: T;\n error?: unknown;\n isLoading: boolean;\n} {\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState<T>();\n const [error, setError] = useState<T>();\n const fnRef = useRef(fn);\n fnRef.current = fn;\n\n return useMemo(\n () => ({\n isLoading: loading,\n data,\n error,\n start(...input) {\n setLoading(true);\n\n void fnRef\n .current(...input)\n .then((res) => {\n setData(res);\n setError(undefined);\n })\n .catch((err) => {\n setData(undefined);\n setError(err);\n })\n .finally(() => {\n setLoading(false);\n });\n },\n reset() {\n setData(undefined);\n setError(undefined);\n setLoading(false);\n },\n }),\n [error, data, loading],\n );\n}\n"],"mappings":";;;AAEA,SAAgB,SACd,IAOA;CACA,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,CAAC,MAAM,WAAW,UAAa;CACrC,MAAM,CAAC,OAAO,YAAY,UAAa;CACvC,MAAM,QAAQ,OAAO,GAAG;AACxB,OAAM,UAAU;AAEhB,QAAO,eACE;EACL,WAAW;EACX;EACA;EACA,MAAM,GAAG,OAAO;AACd,cAAW,KAAK;AAEhB,GAAK,MACF,QAAQ,GAAG,MAAM,CACjB,MAAM,QAAQ;AACb,YAAQ,IAAI;AACZ,aAAS,OAAU;KACnB,CACD,OAAO,QAAQ;AACd,YAAQ,OAAU;AAClB,aAAS,IAAI;KACb,CACD,cAAc;AACb,eAAW,MAAM;KACjB;;EAEN,QAAQ;AACN,WAAQ,OAAU;AAClB,YAAS,OAAU;AACnB,cAAW,MAAM;;EAEpB,GACD;EAAC;EAAO;EAAM;EAAQ,CACvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fumadocs-openapi",
|
|
3
|
-
"version": "10.3.
|
|
3
|
+
"version": "10.3.15",
|
|
4
4
|
"description": "Generate MDX docs for your OpenAPI spec",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Docs",
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
"json-schema-typed": "^8.0.2",
|
|
75
75
|
"tailwindcss": "^4.2.1",
|
|
76
76
|
"tsdown": "0.20.3",
|
|
77
|
-
"@fumadocs/tailwind": "0.0.3",
|
|
78
77
|
"eslint-config-custom": "0.0.0",
|
|
79
|
-
"fumadocs-core": "16.6.
|
|
80
|
-
"fumadocs-ui": "16.6.
|
|
81
|
-
"tsconfig": "0.0.0"
|
|
78
|
+
"fumadocs-core": "16.6.9",
|
|
79
|
+
"fumadocs-ui": "16.6.9",
|
|
80
|
+
"tsconfig": "0.0.0",
|
|
81
|
+
"@fumadocs/tailwind": "0.0.3"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
84
|
"@scalar/api-client-react": "*",
|