import { AnyPrimitiveType, AnyResolvableType, Resolver, TypeResolver } from './TypeResolver'; type TypeResolverFunction
= Resolver<
R['__shape__'],
P['__shape__']
>;
export class TypeResolverBuilder {
private primitives = new Set (primitive: P) {
this.primitives.add(primitive);
return this;
}
addResolver (
primitive: P,
resolvable: R,
resolver: TypeResolverFunction ,
) {
this.primitives.add(primitive);
this.resolvables.add(resolvable);
this.resolverMap[primitive.title] ??= {};
this.resolverMap[primitive.title][resolvable.title] = resolver as TypeResolverFunction<
AnyPrimitiveType,
AnyResolvableType
>;
return this;
}
build() {
return new TypeResolver(
Array.from(this.primitives.values()),
Array.from(this.resolvables.values()),
this.resolverMap,
);
}
}