@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
31 lines (27 loc) • 922 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
}
}
}
}
}