export function validateValueAsUnion()

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()));
            }
        }
    }
}