@@ -167,43 +167,28 @@ export function scorableSchema<T extends ReturnType<typeof weightedRefSchema>>(
167167 duplicateCheckFn : ( metrics : z . infer < T > [ ] ) => false | string [ ] ,
168168 duplicateMessageFn : ( metrics : z . infer < T > [ ] ) => string ,
169169) {
170- return (
171- z
172- . object (
173- {
174- slug : slugSchema . describe (
175- 'Human-readable unique ID, e.g. "performance"' ,
176- ) ,
177- refs : z
178- . array ( refSchema )
179- . min ( 1 )
180- // refs are unique
181- . refine (
182- refs => ! duplicateCheckFn ( refs ) ,
183- refs => ( {
184- message : duplicateMessageFn ( refs ) ,
185- } ) ,
186- ) ,
187- } ,
188- { description } ,
189- )
190- // category weights are correct
191- . superRefine ( ( { slug, refs } , ctx ) => {
192- if ( refs . length === 0 ) {
193- ctx . addIssue ( {
194- code : z . ZodIssueCode . custom ,
195- message : `In category ${ slug } , there has to be at least one ref` ,
196- path : [ 'refs' ] ,
197- } ) ;
198- } else if ( ! hasNonZeroWeightedRef ( refs ) ) {
199- const affectedRefs = refs . map ( ref => ref . slug ) . join ( ', ' ) ;
200- ctx . addIssue ( {
201- code : z . ZodIssueCode . custom ,
202- message : `In category ${ slug } , there has to be at least one ref with weight > 0. Affected refs: ${ affectedRefs } ` ,
203- path : [ 'refs' ] ,
204- } ) ;
205- }
206- } )
170+ return z . object (
171+ {
172+ slug : slugSchema . describe ( 'Human-readable unique ID, e.g. "performance"' ) ,
173+ refs : z
174+ . array ( refSchema )
175+ . min ( 1 , { message : 'In a category, there has to be at least one ref' } )
176+ // refs are unique
177+ . refine (
178+ refs => ! duplicateCheckFn ( refs ) ,
179+ refs => ( {
180+ message : duplicateMessageFn ( refs ) ,
181+ } ) ,
182+ )
183+ // category weights are correct
184+ . refine ( hasNonZeroWeightedRef , refs => {
185+ const affectedRefs = refs . map ( ref => `"${ ref . slug } "` ) . join ( ', ' ) ;
186+ return {
187+ message : `In a category, there has to be at least one ref with weight > 0. Affected refs: ${ affectedRefs } ` ,
188+ } ;
189+ } ) ,
190+ } ,
191+ { description } ,
207192 ) ;
208193}
209194
0 commit comments