@@ -72,27 +72,16 @@ export function fetchMeilisearchResults<TRecord = Record<string, any>>({
72
72
| [ keyof TRecord , Array < { value : string } > ] // if the field is an array
73
73
>
74
74
) . reduce ( ( acc , [ field , highlightResult ] ) => {
75
- // if the field is an array, highlightResult is an array of objects
76
- if ( Array . isArray ( highlightResult ) ) {
77
- return {
78
- ...acc ,
79
- [ field ] : highlightResult . map ( ( highlight ) =>
80
- calculateHighlightMetadata (
81
- query . query || '' ,
82
- query . params ?. highlightPreTag || HIGHLIGHT_PRE_TAG ,
83
- query . params ?. highlightPostTag || HIGHLIGHT_POST_TAG ,
84
- highlight . value
85
- )
86
- ) ,
87
- }
88
- }
89
75
return {
90
76
...acc ,
91
- [ field ] : calculateHighlightMetadata (
92
- query . query || '' ,
93
- query . params ?. highlightPreTag || HIGHLIGHT_PRE_TAG ,
94
- query . params ?. highlightPostTag || HIGHLIGHT_POST_TAG ,
95
- highlightResult . value
77
+ // if the field is an array, highlightResult is an array of objects
78
+ [ field ] : mapOneOrMany ( highlightResult , ( highlightResult ) =>
79
+ calculateHighlightMetadata (
80
+ query . query || '' ,
81
+ query . params ?. highlightPreTag || HIGHLIGHT_PRE_TAG ,
82
+ query . params ?. highlightPostTag || HIGHLIGHT_POST_TAG ,
83
+ highlightResult . value
84
+ )
96
85
) ,
97
86
}
98
87
} , { } as HighlightResult < TRecord > ) ,
@@ -153,3 +142,8 @@ function calculateHighlightMetadata(
153
142
matchedWords : matches ,
154
143
}
155
144
}
145
+
146
+ // Helper to apply a function to a single value or an array of values
147
+ function mapOneOrMany < T , U > ( value : T | T [ ] , mapFn : ( value : T ) => U ) : U | U [ ] {
148
+ return Array . isArray ( value ) ? value . map ( mapFn ) : mapFn ( value )
149
+ }
0 commit comments