"use strict";

const either = require("@validatem/either");
const wrapError = require("@validatem/wrap-error");

module.exports = function (operations) {
	const isObjectType = require("./is-object-type")(operations);
	const isConditionValue = require("./is-condition-value")(operations);
	const wrapWithOperation = require("./wrap-with-operation")(operations);

	return wrapError("Must be a type of condition or value", either([
		[ isObjectType("condition") ], // equals, lessThan, moreThan
		[ isObjectType("notCondition") ], // not(condition)
		[ isObjectType("anyOfConditions") ], // anyOf(...)
		[ isObjectType("allOfConditions") ], // allOf(...)
		[ isConditionValue, wrapWithOperation("equals") ]
	]));	
};
