@@ -54,7 +54,13 @@ export const ConfigSchema = v.optional(
54
54
* [View on NPM](https://npmjs.com/package/vfile-matter).
55
55
* Can be disabled by disabling the `remarkFrontmatter` plugin.
56
56
*/
57
- vfileMatter : v . optional ( v . object ( { } ) , { } ) ,
57
+ vfileMatter : v . optional (
58
+ v . object ( {
59
+ options : v . optional (
60
+ v . special < VfileMatterYamlOptions > ( ( ) => true )
61
+ ) ,
62
+ } )
63
+ ) ,
58
64
59
65
/**
60
66
* [View on NPM](https://npmjs.com/package/remark-frontmatter).
@@ -63,19 +69,15 @@ export const ConfigSchema = v.optional(
63
69
v . object ( {
64
70
/** @default true */
65
71
enable : v . optional ( v . boolean ( ) , true ) ,
72
+ // TODO: Add `"toml"`, `"json"`, `"jsonc"` and `"json5"` support.
73
+ /** Only `"yaml"` is supported for now. */
74
+ lang : v . optional ( v . union ( [ v . literal ( "yaml" ) ] ) , "yaml" ) ,
66
75
options : v . optional (
67
- v . object ( {
68
- // TODO: Add `"toml"`, `"json"`, `"jsonc"` and `"json5"` support.
69
- /** Only `"yaml"` is supported for now. */
70
- lang : v . optional (
71
- v . union ( [ v . literal ( "yaml" ) ] ) ,
72
- "yaml"
73
- ) ,
74
- } ) ,
75
- { }
76
+ v . special < RemarkFrontmatterCustomOptions > (
77
+ ( ) => true
78
+ )
76
79
) ,
77
- } ) ,
78
- { }
80
+ } )
79
81
) ,
80
82
81
83
/**
@@ -85,8 +87,10 @@ export const ConfigSchema = v.optional(
85
87
v . object ( {
86
88
/** @default true */
87
89
enable : v . optional ( v . boolean ( ) , true ) ,
88
- } ) ,
89
- { }
90
+ options : v . optional (
91
+ v . special < RemarkGfmOptions > ( ( ) => true )
92
+ ) ,
93
+ } )
90
94
) ,
91
95
92
96
/**
@@ -96,15 +100,20 @@ export const ConfigSchema = v.optional(
96
100
v . object ( {
97
101
/** @default true */
98
102
enable : v . optional ( v . boolean ( ) , true ) ,
99
- } ) ,
100
- { }
103
+ } )
101
104
) ,
102
105
103
106
/**
104
107
* [View on NPM](https://npmjs.com/package/remark-rehype).
105
108
* Can't be disabled.
106
109
*/
107
- remarkRehype : v . optional ( v . object ( { } ) , { } ) ,
110
+ remarkRehype : v . optional (
111
+ v . object ( {
112
+ options : v . optional (
113
+ v . special < OmittedRemarkRehypeOptions > ( ( ) => true )
114
+ ) ,
115
+ } )
116
+ ) ,
108
117
109
118
/**
110
119
* [View on NPM](https://npmjs.com/package/rehype-slug).
@@ -113,8 +122,10 @@ export const ConfigSchema = v.optional(
113
122
v . object ( {
114
123
/** @default false */
115
124
enable : v . optional ( v . boolean ( ) , false ) ,
116
- } ) ,
117
- { }
125
+ options : v . optional (
126
+ v . special < RehypeSlugOptions > ( ( ) => true )
127
+ ) ,
128
+ } )
118
129
) ,
119
130
120
131
/**
@@ -124,8 +135,10 @@ export const ConfigSchema = v.optional(
124
135
v . object ( {
125
136
/** @default false */
126
137
enable : v . optional ( v . boolean ( ) , false ) ,
127
- } ) ,
128
- { }
138
+ options : v . optional (
139
+ v . special < RehypeAutolinkHeadingsOptions > ( ( ) => true )
140
+ ) ,
141
+ } )
129
142
) ,
130
143
131
144
/**
@@ -135,8 +148,11 @@ export const ConfigSchema = v.optional(
135
148
v . object ( {
136
149
/** @default true */
137
150
enable : v . optional ( v . boolean ( ) , true ) ,
138
- } ) ,
139
- { }
151
+ options : v . optional (
152
+ v . special < RehypeShikiOptions > ( ( ) => true ) ,
153
+ undefined
154
+ ) ,
155
+ } )
140
156
) ,
141
157
142
158
/**
@@ -147,20 +163,26 @@ export const ConfigSchema = v.optional(
147
163
v . object ( {
148
164
/** @default true */
149
165
enable : v . optional ( v . boolean ( ) , true ) ,
150
- } ) ,
151
- { }
166
+ options : v . optional (
167
+ v . special < RehypeExternalLinksOptions > ( ( ) => true )
168
+ ) ,
169
+ } )
152
170
) ,
153
171
154
172
/**
155
173
* [View on NPM](https://npmjs.com/package/rehype-stringify).
156
174
* Can't be disabled.
157
175
*/
158
- rehypeStringify : v . optional ( v . object ( { } ) , { } ) ,
159
- } ) ,
160
- { }
176
+ rehypeStringify : v . optional (
177
+ v . object ( {
178
+ options : v . optional (
179
+ v . special < OmittedRehypeStringifyOptions > ( ( ) => true )
180
+ ) ,
181
+ } )
182
+ ) ,
183
+ } )
161
184
) ,
162
- } ) ,
163
- { }
185
+ } )
164
186
)
165
187
166
188
// The original types for options suck, this way users will have easier type configuring their custom options.
@@ -191,67 +213,5 @@ type OmittedRehypeStringifyOptions = Omit<
191
213
"allowDangerousCharacters" | "allowDangerousHtml"
192
214
>
193
215
194
- // NOTE: Generating Valibot schema with TypeScript types is impossible. https://github.com/fabian-hiller/valibot/discussions/477
195
- export type ConfigInput = v . Input < typeof ConfigSchema > & {
196
- builtInPlugins ?: {
197
- vfileMatter ?: {
198
- options ?: VfileMatterYamlOptions
199
- }
200
- remarkFrontmatter ?: {
201
- options ?: RemarkFrontmatterCustomOptions
202
- }
203
- remarkGfm ?: {
204
- options ?: RemarkGfmOptions
205
- }
206
- remarkRehype ?: {
207
- options ?: OmittedRemarkRehypeOptions
208
- }
209
- rehypeSlug ?: {
210
- options ?: RehypeSlugOptions
211
- }
212
- rehypeAutolinkHeadings ?: {
213
- options ?: RehypeAutolinkHeadingsOptions
214
- }
215
- rehypeShiki ?: {
216
- options ?: RehypeShikiOptions
217
- }
218
- rehypeExternalLinks ?: {
219
- options ?: RehypeExternalLinksOptions
220
- }
221
- rehypeStringify ?: {
222
- options ?: OmittedRehypeStringifyOptions
223
- }
224
- }
225
- }
226
- // NOTE: Generating Valibot schema with TypeScript types is impossible. https://github.com/fabian-hiller/valibot/discussions/477
227
- export type ConfigOutput = v . Output < typeof ConfigSchema > & {
228
- builtInPlugins : {
229
- vfileMatter : {
230
- options ?: VfileMatterYamlOptions
231
- }
232
- remarkFrontmatter : {
233
- options ?: RemarkFrontmatterCustomOptions
234
- }
235
- remarkGfm : {
236
- options ?: RemarkGfmOptions
237
- }
238
- remarkRehype : {
239
- options ?: OmittedRemarkRehypeOptions
240
- }
241
- rehypeSlug : {
242
- options ?: RehypeSlugOptions
243
- }
244
- rehypeAutolinkHeadings : {
245
- options ?: RehypeAutolinkHeadingsOptions
246
- }
247
- rehypeShiki : {
248
- options ?: RehypeShikiOptions
249
- }
250
- rehypeExternalLinks : {
251
- options ?: RehypeExternalLinksOptions
252
- }
253
- rehypeStringify : {
254
- options ?: OmittedRehypeStringifyOptions
255
- }
256
- }
257
- }
216
+ export type ConfigInput = v . Input < typeof ConfigSchema >
217
+ export type ConfigOutput = v . Output < typeof ConfigSchema >
0 commit comments