mirror of
https://github.com/hanzo-docs/docs.git
synced 2026-10-26 06:31:49 +00:00
OpenAPI: Remove undefined values in generated frontmatter
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'fumadocs-openapi': patch
|
||||
---
|
||||
|
||||
Remove undefined values in generated frontmatter
|
||||
@@ -1,13 +1,19 @@
|
||||
export function removeUndefined<T extends object>(value: T, deep = false): T {
|
||||
const obj = value as Record<string, unknown>;
|
||||
|
||||
for (const key of Object.keys(obj)) {
|
||||
for (const key in obj) {
|
||||
if (obj[key] === undefined) delete obj[key];
|
||||
if (!deep) continue;
|
||||
|
||||
if (deep && typeof obj[key] === 'object' && obj[key] !== null) {
|
||||
removeUndefined(obj[key], deep);
|
||||
} else if (deep && Array.isArray(obj[key])) {
|
||||
obj[key].forEach((v) => removeUndefined(v, deep));
|
||||
const entry = obj[key];
|
||||
|
||||
if (typeof entry === 'object' && entry !== null) {
|
||||
removeUndefined(entry, deep);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Array.isArray(entry)) {
|
||||
for (const item of entry) removeUndefined(item, deep);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import type { Document, TagObject } from '@/types';
|
||||
import { dump } from 'js-yaml';
|
||||
import type { NoReference } from '@/utils/schema';
|
||||
import Slugger from 'github-slugger';
|
||||
import { removeUndefined } from '@/utils/remove-undefined';
|
||||
|
||||
export interface GenerateOptions {
|
||||
/**
|
||||
@@ -231,7 +232,7 @@ export function generateDocument(
|
||||
): string {
|
||||
const { addGeneratedComment = true, imports } = options;
|
||||
const out: string[] = [];
|
||||
const banner = dump(frontmatter).trim();
|
||||
const banner = dump(removeUndefined(frontmatter as object)).trimEnd();
|
||||
if (banner.length > 0) out.push(`---\n${banner}\n---`);
|
||||
|
||||
if (addGeneratedComment) {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
export function removeUndefined<T extends object>(value: T, deep = false): T {
|
||||
const obj = value as Record<string, unknown>;
|
||||
|
||||
for (const key in obj) {
|
||||
if (obj[key] === undefined) delete obj[key];
|
||||
if (!deep) continue;
|
||||
|
||||
const entry = obj[key];
|
||||
|
||||
if (typeof entry === 'object' && entry !== null) {
|
||||
removeUndefined(entry, deep);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Array.isArray(entry)) {
|
||||
for (const item of entry) removeUndefined(item, deep);
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
Reference in New Issue
Block a user