@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
37 lines (33 loc) • 936 B
text/typescript
import type { RichTextFunctionSerializer } from "./types"
/**
* Takes an array of serializers and returns a serializer applying provided
* serializers sequentially until a result is returned
*
* @remarks
* This is a low level helper mainly intended to be used by higher level
* packages Most users aren't expected to this function directly
*
* @typeParam SerializerReturnType - Return type of serializers
*
* @param serializers - Serializers to compose
*
* @returns Composed serializer
*/
export const composeSerializers = <SerializerReturnType>(
...serializers: (
| RichTextFunctionSerializer<SerializerReturnType>
| undefined
)[]
): RichTextFunctionSerializer<SerializerReturnType> => {
return (...args) => {
for (let i = 0; i < serializers.length; i++) {
const serializer = serializers[i]
if (serializer) {
const res = serializer(...args)
if (res != null) {
return res
}
}
}
}
}