metaapi.cloud-sdk
Version:
SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)
64 lines (63 loc) • 6.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return OptionsValidator;
}
});
const _errorHandler = require("./errorHandler");
let OptionsValidator = class OptionsValidator {
/**
* Validates a number parameter
* @param {Number} value value to validate
* @param {Number} defaultValue default value for an option
* @param {String} name option name
* @returns {Number} validated value
* @throws {ValidationError} if value is invalid
*/ validateNumber(value, defaultValue, name) {
if (value === undefined) {
return defaultValue;
}
if (typeof value !== "number") {
throw new _errorHandler.ValidationError(`Parameter ${name} must be a number`);
}
if (value < 0) {
throw new _errorHandler.ValidationError(`Parameter ${name} cannot be lower than 0`);
}
return value;
}
/**
* Validates a number parameter to be above zero
* @param {Number} value value to validate
* @param {Number} defaultValue default value for an option
* @param {String} name option name
* @returns {Number} validated value
* @throws {ValidationError} if value is invalid
*/ validateNonZero(value, defaultValue, name) {
value = this.validateNumber(value, defaultValue, name);
if (value === 0) {
throw new _errorHandler.ValidationError(`Parameter ${name} must be bigger than 0`);
}
return value;
}
/**
* Validates a parameter to be boolean
* @param {Boolean} value value to validate
* @param {Boolean} defaultValue default value for an option
* @param {String} name option name
* @returns {Boolean} validated value
* @throws {ValidationError} if value is invalid
*/ validateBoolean(value, defaultValue, name) {
if (value === undefined) {
return defaultValue;
}
if (typeof value !== "boolean") {
throw new _errorHandler.ValidationError(`Parameter ${name} must be a boolean`);
}
return value;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxhbm9uPiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7VmFsaWRhdGlvbkVycm9yfSBmcm9tICcuL2Vycm9ySGFuZGxlcic7XG5cbi8qKlxuICogQ2xhc3MgZm9yIHZhbGlkYXRpbmcgQVBJIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wdGlvbnNWYWxpZGF0b3Ige1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBudW1iZXIgcGFyYW1ldGVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVmYXVsdFZhbHVlIGRlZmF1bHQgdmFsdWUgZm9yIGFuIG9wdGlvblxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvcHRpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7TnVtYmVyfSB2YWxpZGF0ZWQgdmFsdWVcbiAgICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfSBpZiB2YWx1ZSBpcyBpbnZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZU51bWJlcih2YWx1ZSwgZGVmYXVsdFZhbHVlLCBuYW1lKSB7XG4gICAgaWYodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgaWYodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgUGFyYW1ldGVyICR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmApO1xuICAgIH1cbiAgICBpZih2YWx1ZSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYFBhcmFtZXRlciAke25hbWV9IGNhbm5vdCBiZSBsb3dlciB0aGFuIDBgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIFxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgbnVtYmVyIHBhcmFtZXRlciB0byBiZSBhYm92ZSB6ZXJvXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVmYXVsdFZhbHVlIGRlZmF1bHQgdmFsdWUgZm9yIGFuIG9wdGlvblxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvcHRpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7TnVtYmVyfSB2YWxpZGF0ZWQgdmFsdWVcbiAgICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfSBpZiB2YWx1ZSBpcyBpbnZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZU5vblplcm8odmFsdWUsIGRlZmF1bHRWYWx1ZSwgbmFtZSkge1xuICAgIHZhbHVlID0gdGhpcy52YWxpZGF0ZU51bWJlcih2YWx1ZSwgZGVmYXVsdFZhbHVlLCBuYW1lKTtcbiAgXG4gICAgaWYodmFsdWUgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYFBhcmFtZXRlciAke25hbWV9IG11c3QgYmUgYmlnZ2VyIHRoYW4gMGApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBwYXJhbWV0ZXIgdG8gYmUgYm9vbGVhblxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHZhbHVlIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gZGVmYXVsdFZhbHVlIGRlZmF1bHQgdmFsdWUgZm9yIGFuIG9wdGlvblxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvcHRpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdmFsaWRhdGVkIHZhbHVlXG4gICAqIEB0aHJvd3Mge1ZhbGlkYXRpb25FcnJvcn0gaWYgdmFsdWUgaXMgaW52YWxpZFxuICAgKi9cbiAgdmFsaWRhdGVCb29sZWFuKHZhbHVlLCBkZWZhdWx0VmFsdWUsIG5hbWUpIHtcbiAgICBpZih2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgXG4gICAgaWYodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYFBhcmFtZXRlciAke25hbWV9IG11c3QgYmUgYSBib29sZWFuYCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk9wdGlvbnNWYWxpZGF0b3IiLCJ2YWxpZGF0ZU51bWJlciIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwibmFtZSIsInVuZGVmaW5lZCIsIlZhbGlkYXRpb25FcnJvciIsInZhbGlkYXRlTm9uWmVybyIsInZhbGlkYXRlQm9vbGVhbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFPcUJBOzs7OEJBTFM7QUFLZixJQUFBLEFBQU1BLG1CQUFOLE1BQU1BO0lBRW5COzs7Ozs7O0dBT0MsR0FDREMsZUFBZUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRTtRQUN4QyxJQUFHRixVQUFVRyxXQUFXO1lBQ3RCLE9BQU9GO1FBQ1Q7UUFDQSxJQUFHLE9BQU9ELFVBQVUsVUFBVTtZQUM1QixNQUFNLElBQUlJLDZCQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUVGLEtBQUssaUJBQWlCLENBQUM7UUFDaEU7UUFDQSxJQUFHRixRQUFRLEdBQUc7WUFDWixNQUFNLElBQUlJLDZCQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUVGLEtBQUssdUJBQXVCLENBQUM7UUFDdEU7UUFDQSxPQUFPRjtJQUNUO0lBRUE7Ozs7Ozs7R0FPQyxHQUNESyxnQkFBZ0JMLEtBQUssRUFBRUMsWUFBWSxFQUFFQyxJQUFJLEVBQUU7UUFDekNGLFFBQVEsSUFBSSxDQUFDRCxjQUFjLENBQUNDLE9BQU9DLGNBQWNDO1FBRWpELElBQUdGLFVBQVUsR0FBRztZQUNkLE1BQU0sSUFBSUksNkJBQWUsQ0FBQyxDQUFDLFVBQVUsRUFBRUYsS0FBSyxzQkFBc0IsQ0FBQztRQUNyRTtRQUNBLE9BQU9GO0lBQ1Q7SUFFQTs7Ozs7OztHQU9DLEdBQ0RNLGdCQUFnQk4sS0FBSyxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRTtRQUN6QyxJQUFHRixVQUFVRyxXQUFXO1lBQ3RCLE9BQU9GO1FBQ1Q7UUFFQSxJQUFHLE9BQU9ELFVBQVUsV0FBVztZQUM3QixNQUFNLElBQUlJLDZCQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUVGLEtBQUssa0JBQWtCLENBQUM7UUFDakU7UUFDQSxPQUFPRjtJQUNUO0FBQ0YifQ==