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)
44 lines (43 loc) • 3.79 kB
JavaScript
/**
* Return an array with the numbers from 0 to n-1, in a random order
*/ function getRandomArray(n) {
let res, next;
if (n === 0) {
return [];
}
if (n === 1) {
return [
0
];
}
res = getRandomArray(n - 1);
next = Math.floor(Math.random() * n);
res.splice(next, 0, n - 1); // Add n-1 at a random position in the array
return res;
}
module.exports.getRandomArray = getRandomArray;
/*
* Default compareKeys function will work for numbers, strings and dates
*/ function defaultCompareKeysFunction(a, b) {
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
if (a === b) {
return 0;
}
let err = new Error('Couldn\'t compare elements');
err.a = a;
err.b = b;
throw err;
}
module.exports.defaultCompareKeysFunction = defaultCompareKeysFunction;
/**
* Check whether two values are equal (used in non-unique deletion)
*/ function defaultCheckValueEquality(a, b) {
return a === b;
}
module.exports.defaultCheckValueEquality = defaultCheckValueEquality;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxhbm9uPiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBudW1iZXJzIGZyb20gMCB0byBuLTEsIGluIGEgcmFuZG9tIG9yZGVyXG4gKi9cbmZ1bmN0aW9uIGdldFJhbmRvbUFycmF5IChuKSB7XG4gIGxldCByZXMsIG5leHQ7XG5cbiAgaWYgKG4gPT09IDApIHsgcmV0dXJuIFtdOyB9XG4gIGlmIChuID09PSAxKSB7IHJldHVybiBbMF07IH1cblxuICByZXMgPSBnZXRSYW5kb21BcnJheShuIC0gMSk7XG4gIG5leHQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuKTtcbiAgcmVzLnNwbGljZShuZXh0LCAwLCBuIC0gMSk7ICAgLy8gQWRkIG4tMSBhdCBhIHJhbmRvbSBwb3NpdGlvbiBpbiB0aGUgYXJyYXlcblxuICByZXR1cm4gcmVzO1xufVxubW9kdWxlLmV4cG9ydHMuZ2V0UmFuZG9tQXJyYXkgPSBnZXRSYW5kb21BcnJheTtcblxuXG4vKlxuICogRGVmYXVsdCBjb21wYXJlS2V5cyBmdW5jdGlvbiB3aWxsIHdvcmsgZm9yIG51bWJlcnMsIHN0cmluZ3MgYW5kIGRhdGVzXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRDb21wYXJlS2V5c0Z1bmN0aW9uIChhLCBiKSB7XG4gIGlmIChhIDwgYikgeyByZXR1cm4gLTE7IH1cbiAgaWYgKGEgPiBiKSB7IHJldHVybiAxOyB9XG4gIGlmIChhID09PSBiKSB7IHJldHVybiAwOyB9XG5cbiAgbGV0IGVyciA9IG5ldyBFcnJvcignQ291bGRuXFwndCBjb21wYXJlIGVsZW1lbnRzJyk7XG4gIGVyci5hID0gYTtcbiAgZXJyLmIgPSBiO1xuICB0aHJvdyBlcnI7XG59XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0Q29tcGFyZUtleXNGdW5jdGlvbiA9IGRlZmF1bHRDb21wYXJlS2V5c0Z1bmN0aW9uO1xuXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0d28gdmFsdWVzIGFyZSBlcXVhbCAodXNlZCBpbiBub24tdW5pcXVlIGRlbGV0aW9uKVxuICovXG5mdW5jdGlvbiBkZWZhdWx0Q2hlY2tWYWx1ZUVxdWFsaXR5IChhLCBiKSB7XG4gIHJldHVybiBhID09PSBiO1xufVxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdENoZWNrVmFsdWVFcXVhbGl0eSA9IGRlZmF1bHRDaGVja1ZhbHVlRXF1YWxpdHk7XG4iXSwibmFtZXMiOlsiZ2V0UmFuZG9tQXJyYXkiLCJuIiwicmVzIiwibmV4dCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsInNwbGljZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0Q29tcGFyZUtleXNGdW5jdGlvbiIsImEiLCJiIiwiZXJyIiwiRXJyb3IiLCJkZWZhdWx0Q2hlY2tWYWx1ZUVxdWFsaXR5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxHQUNELFNBQVNBLGVBQWdCQyxDQUFDO0lBQ3hCLElBQUlDLEtBQUtDO0lBRVQsSUFBSUYsTUFBTSxHQUFHO1FBQUUsT0FBTyxFQUFFO0lBQUU7SUFDMUIsSUFBSUEsTUFBTSxHQUFHO1FBQUUsT0FBTztZQUFDO1NBQUU7SUFBRTtJQUUzQkMsTUFBTUYsZUFBZUMsSUFBSTtJQUN6QkUsT0FBT0MsS0FBS0MsS0FBSyxDQUFDRCxLQUFLRSxNQUFNLEtBQUtMO0lBQ2xDQyxJQUFJSyxNQUFNLENBQUNKLE1BQU0sR0FBR0YsSUFBSSxJQUFNLDRDQUE0QztJQUUxRSxPQUFPQztBQUNUO0FBQ0FNLE9BQU9DLE9BQU8sQ0FBQ1QsY0FBYyxHQUFHQTtBQUdoQzs7Q0FFQyxHQUNELFNBQVNVLDJCQUE0QkMsQ0FBQyxFQUFFQyxDQUFDO0lBQ3ZDLElBQUlELElBQUlDLEdBQUc7UUFBRSxPQUFPLENBQUM7SUFBRztJQUN4QixJQUFJRCxJQUFJQyxHQUFHO1FBQUUsT0FBTztJQUFHO0lBQ3ZCLElBQUlELE1BQU1DLEdBQUc7UUFBRSxPQUFPO0lBQUc7SUFFekIsSUFBSUMsTUFBTSxJQUFJQyxNQUFNO0lBQ3BCRCxJQUFJRixDQUFDLEdBQUdBO0lBQ1JFLElBQUlELENBQUMsR0FBR0E7SUFDUixNQUFNQztBQUNSO0FBQ0FMLE9BQU9DLE9BQU8sQ0FBQ0MsMEJBQTBCLEdBQUdBO0FBRzVDOztDQUVDLEdBQ0QsU0FBU0ssMEJBQTJCSixDQUFDLEVBQUVDLENBQUM7SUFDdEMsT0FBT0QsTUFBTUM7QUFDZjtBQUNBSixPQUFPQyxPQUFPLENBQUNNLHlCQUF5QixHQUFHQSJ9