'use strict'; var errors = require('../errors'); var _ = require('lodash'); module.exports = { checkState: function(condition, message) { if (!condition) { throw new errors.InvalidState(message); } }, checkArgument: function(condition, argumentName, message) { if (!condition) { throw new errors.InvalidArgument(argumentName, message); } }, checkArgumentType: function(argument, type, argumentName) { argumentName = argumentName || '(unknown name)'; if (_.isString(type)) { if (typeof argument !== type) { throw new errors.InvalidArgumentType(argument, type, argumentName); } } else { if (!(argument instanceof type)) { throw new errors.InvalidArgumentType(argument, type.name, argumentName); } } } };