@tsed/schema
Version:
JsonSchema module for Ts.ED Framework
34 lines (33 loc) • 968 B
JavaScript
import { cleanObject } from "@tsed/core";
export class Discriminator {
constructor({ base, propertyName, types, values } = {}) {
this.values = new Map();
this.types = new Map();
Object.assign(this, cleanObject({
base,
propertyName,
types: types ? new Map(types) : undefined,
values: values ? new Map(values) : undefined
}));
}
add(type, values) {
values.forEach((value) => {
this.values.set(value, type);
});
this.types.set(type, values);
return this;
}
getType(discriminatorValue) {
return this.values.get(discriminatorValue) || this.base;
}
getValues(type) {
return this.types.get(type);
}
getDefaultValue(type) {
const values = this.types.get(type);
return values ? values[0] : undefined;
}
children() {
return [...new Set([...this.types.keys()])];
}
}