All files / src/common_serdes clazz.ts

100% Statements 4/4
100% Branches 0/0
100% Functions 2/2
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17                      19x     2x    
import { Serdes } from "../types";
 
export interface ClazzSerdes<T> extends Serdes<T> {
  readonly clazz: { new (): T };
}
 
export type ClazzFactory = <T, C extends T>(
  clazz: { new (): C },
  sd: Serdes<T>
) => ClazzSerdes<C>;
 
export const clazz: ClazzFactory = (clazz, sd) => ({
  clazz,
  ser: sd.ser,
  des: (ctx) => Object.assign(new clazz(), sd.des(ctx))
});