Core: Expose Zod schema for page & meta data

This commit is contained in:
Fuma Nama
2025-12-04 16:16:08 +08:00
parent 31fd9d7058
commit ef8eb6c361
5 changed files with 49 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'fumadocs-core': patch
---
Expose Zod schema for page & meta data
+11 -2
View File
@@ -52,6 +52,10 @@
"import": "./dist/source/client/index.js",
"types": "./dist/source/client/index.d.ts"
},
"./source/schema": {
"import": "./dist/source/schema.js",
"types": "./dist/source/schema.d.ts"
},
"./source/*": {
"import": "./dist/source/plugins/*.js",
"types": "./dist/source/plugins/*.d.ts"
@@ -157,7 +161,8 @@
"typescript": "^5.9.3",
"unified": "^11.0.5",
"vfile": "^6.0.3",
"waku": "^0.27.2"
"waku": "^0.27.2",
"zod": "^4.1.13"
},
"peerDependencies": {
"@mixedbread/sdk": "^0.19.0",
@@ -170,7 +175,8 @@
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-router": "7.x.x",
"waku": "^0.26.0 || ^0.27.0"
"waku": "^0.26.0 || ^0.27.0",
"zod": "*"
},
"peerDependenciesMeta": {
"@mixedbread/sdk": {
@@ -205,6 +211,9 @@
},
"lucide-react": {
"optional": true
},
"zod": {
"optional": true
}
},
"publishConfig": {
+27
View File
@@ -0,0 +1,27 @@
import { z } from 'zod';
/**
* Zod 4 schema
*/
export const metaSchema = z.object({
title: z.string().optional(),
pages: z.array(z.string()).optional(),
description: z.string().optional(),
root: z.boolean().optional(),
defaultOpen: z.boolean().optional(),
collapsible: z.boolean().optional(),
icon: z.string().optional(),
});
/**
* Zod 4 schema
*/
export const pageSchema = z.object({
title: z.string(),
description: z.string().optional(),
icon: z.string().optional(),
full: z.boolean().optional(),
// Fumadocs OpenAPI generated
_openapi: z.looseObject({}).optional(),
});
+2 -6
View File
@@ -1,18 +1,14 @@
import { defineConfig } from 'tsup';
export default defineConfig({
external: [
// https://github.com/fuma-nama/fumadocs/issues/2144
'@tanstack/react-router',
'waku',
],
dts: true,
target: 'es2022',
format: 'esm',
entry: [
'src/{toc,link,breadcrumb,dynamic-link}.tsx',
'src/{source,page-tree}/index.ts',
'src/page-tree/index.ts',
'src/{negotiation,content}/*',
'src/source/{index,schema}.ts',
'src/source/client/*.{ts,tsx}',
'src/source/plugins/lucide-icons.ts',
'src/search/{index,client,server,algolia,orama-cloud}.ts',
+4
View File
@@ -1591,6 +1591,9 @@ importers:
waku:
specifier: ^0.27.2
version: 0.27.2(@swc/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]([email protected]))([email protected]([email protected]([email protected]))([email protected])([email protected](@swc/[email protected])([email protected])))([email protected])([email protected])([email protected])([email protected])
zod:
specifier: ^4.1.13
version: 4.1.13
packages/create-app:
dependencies:
@@ -6656,6 +6659,7 @@ packages:
[email protected]:
resolution: {integrity: sha512-2hJ4ocTZ634/Ptph4lysvO+LbbRZq8fzRvMwX0/CqaLBxrF2UB5D1LdMB8qGcdtCer4/VR9Bx5ORub0yn+yzmw==}
cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true