Skip to content

Commit

Permalink
feat: allow undefined serializer in composeSerializers
Browse files Browse the repository at this point in the history
  • Loading branch information
angeloashmore committed Dec 16, 2021
1 parent e14dc3d commit a646491
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
18 changes: 11 additions & 7 deletions src/composeSerializers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,21 @@ import { RichTextFunctionSerializer } from "./types";
* @returns Composed serializer
*/
export const composeSerializers = <SerializerReturnType>(
...serializers: [
RichTextFunctionSerializer<SerializerReturnType>,
...RichTextFunctionSerializer<SerializerReturnType>[]
]
...serializers: (
| RichTextFunctionSerializer<SerializerReturnType>
| undefined
)[]
): RichTextFunctionSerializer<SerializerReturnType> => {
return (...args) => {
for (let i = 0; i < serializers.length; i++) {
const res = serializers[i](...args);
const serializer = serializers[i];

if (res != null) {
return res;
if (serializer) {
const res = serializer(...args);

if (res != null) {
return res;
}
}
}
};
Expand Down
11 changes: 11 additions & 0 deletions test/composeSerializers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,14 @@ test("composes multiple serializers", (t) => {

t.snapshot(composedSerialization);
});

test("undefined serializers are ignored", (t) => {
const richTextFixtures = createRichTextFixtures();

const serializer = wrapMapSerializer(htmlMapSerializer);

t.deepEqual(
serialize(richTextFixtures.en, composeSerializers(undefined, serializer)),
serialize(richTextFixtures.en, serializer),
);
});

0 comments on commit a646491

Please sign in to comment.