export function isConditionExpression()

in packages/dynamodb-expressions/src/ConditionExpression.ts [365:394]


export function isConditionExpression(arg: any): arg is ConditionExpression {
    if (FunctionExpression.isFunctionExpression(arg)) {
        return true;
    }

    if (Boolean(arg) && typeof arg === 'object') {
        switch (arg.type) {
            case 'Not':
                return isConditionExpression(arg.condition);
            case 'And':
            case 'Or':
                if (Array.isArray(arg.conditions)) {
                    for (const condition of arg.conditions) {
                        if (!isConditionExpression(condition)) {
                            return false;
                        }
                    }

                    return true;
                }

                return false;
            default:
                return isConditionExpressionSubject(arg)
                    && isConditionExpressionPredicate(arg);
        }
    }

    return false;
}