in lib/eventstream_rpc_utils.ts [598:616]
export function validateValueAsUnion(value : any, validators : UnionValidator) {
let propertyCount : number = getPropertyCount(value, validators.keys());
if (propertyCount != 1) {
throw eventstream_rpc.createRpcError(eventstream_rpc.RpcErrorType.ValidationError, `Union has ${propertyCount} properties set`);
}
for (const [propertyName, validator] of validators.entries()) {
let propertyValue = value[propertyName];
if (propertyValue && validator) {
try {
validator(propertyValue);
} catch (err) {
let rpcError : eventstream_rpc.RpcError = err as eventstream_rpc.RpcError;
throw eventstream_rpc.createRpcError(eventstream_rpc.RpcErrorType.ValidationError, `Union property '${propertyName}' contains an invalid value`, new CrtError(rpcError.toString()));
}
}
}
}