constraints/abstractoperator.js

'use strict';

/**
 * @author schukai GmbH
 */

import {Monster, AbstractConstraint} from "./abstract.js";

/**
 * Operators allow you to link constraints together. for example, you can check whether a value is an object or an array. each operator has two operands that are linked together.
 * 
 * @since 1.3.0
 * @copyright schukai GmbH
 * @memberOf Monster/Constraints
 */
class AbstractOperator extends AbstractConstraint {

    /**
     *
     * @param {AbstractConstraint} operantA
     * @param {AbstractConstraint} operantB
     * @throws {TypeError} "parameters must be from type AbstractConstraint"
     */
    constructor(operantA, operantB) {
        super();

        if (!(operantA instanceof AbstractConstraint) || !(operantB instanceof AbstractConstraint)) {
            throw new TypeError("parameters must be from type AbstractConstraint")
        }

        this.operantA = operantA;
        this.operantB = operantB;

    }


}

Monster.assignToNamespace('Monster.Constraints', AbstractOperator);
export {Monster, AbstractOperator}