metaapi.cloud-metastats-sdk
Version:
Javascript SDK for MetaStats forex trading statistics API. Can calculate metrics for MetaTrader accounts added to MetaApi. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). (https://metaapi.cloud)
147 lines (146 loc) • 12.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
ApiError: function() {
return ApiError;
},
ForbiddenError: function() {
return ForbiddenError;
},
InternalError: function() {
return InternalError;
},
NotFoundError: function() {
return NotFoundError;
},
TooManyRequestsError: function() {
return TooManyRequestsError;
},
UnauthorizedError: function() {
return UnauthorizedError;
},
ValidationError: function() {
return ValidationError;
}
});
/**
* Base class for API errors. Contains indication of HTTP status.
*/ const isNode = typeof process !== "undefined" && process.release && process.release.name === "node";
let ApiError = class ApiError extends Error {
/**
* ApiError constructor
* @param {Function} clazz error name
* @param {Object} message error message
* @param {number} status HTTP status
* @param {string} url API request URL
*/ constructor(clazz, message, status, url){
super(url ? message + ". Request URL: " + url : message);
/**
* Error name
* @type {string}
*/ this.name = clazz.name;
/**
* HTTP status code
* @type {number}
*/ this.status = status;
/**
* API request URL
*/ this.url = url;
if (isNode && Error.captureStackTrace) {
Error.captureStackTrace(this, clazz);
}
}
/**
* Sets error code, used for i18n
* @param {string} code error code for i18n
*/ set code(code) {
this._code = code;
}
/**
* Returns error code used for i18n
* @return {string} error code
*/ get code() {
return this._code;
}
/**
* Set message arguments for i18n
* @param {Array<Object>} args arguments for i18n
*/ set arguments(args) {
this._args = args;
}
/**
* Returns message arguments for i18n
* @return {Array<Object>} message arguments for i18n
*/ get arguments() {
return this._args;
}
};
let NotFoundError = class NotFoundError extends ApiError {
/**
* Represents NotFoundError.
* @param {string} message error message
* @param {string} url API request URL
*/ constructor(message, url){
super(NotFoundError, message, 404, url);
}
};
let ForbiddenError = class ForbiddenError extends ApiError {
/**
* Constructs forbidden error.
* @param {string} message error message
* @param {string} url API request URL
*/ constructor(message, url){
super(ForbiddenError, message, 403, url);
}
};
let UnauthorizedError = class UnauthorizedError extends ApiError {
/**
* Constructs unauthorized error.
* @param {string} message error message
* @param {string} url API request URL
*/ constructor(message, url){
super(UnauthorizedError, message, 401, url);
}
};
let ValidationError = class ValidationError extends ApiError {
/**
* Constructs validation error.
* @param {string} message error message
* @param {Object} details error data
* @param {string} url API request URL
*/ constructor(message, details, url){
super(ValidationError, message, 400, url);
/**
* Validation error details
* @type {Object}
*/ this.details = details;
}
};
let InternalError = class InternalError extends ApiError {
/**
* Constructs unexpected error.
* @param {string} message error message
* @param {string} url API request URL
*/ constructor(message, url){
super(InternalError, message, 500, url);
}
};
let TooManyRequestsError = class TooManyRequestsError extends ApiError {
/**
* Constructs too many requests error.
* @param {string} message error message
* @param {TooManyRequestsErrorMetadata} metadata error metadata
*/ constructor(message, metadata, url){
super(TooManyRequestsError, message, 429, url);
this.metadata = metadata;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxhbm9uPiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgQVBJIGVycm9ycy4gQ29udGFpbnMgaW5kaWNhdGlvbiBvZiBIVFRQIHN0YXR1cy5cbiAqL1xuXG5jb25zdCBpc05vZGUgPSB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5yZWxlYXNlICYmIHByb2Nlc3MucmVsZWFzZS5uYW1lID09PSAnbm9kZSc7XG5cblxuZXhwb3J0IGNsYXNzIEFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBBcGlFcnJvciBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjbGF6eiBlcnJvciBuYW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtZXNzYWdlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXR1cyBIVFRQIHN0YXR1c1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEFQSSByZXF1ZXN0IFVSTFxuICAgKi9cbiAgY29uc3RydWN0b3IoY2xhenosIG1lc3NhZ2UsIHN0YXR1cywgdXJsKSB7XG4gICAgc3VwZXIodXJsPyBtZXNzYWdlICsgJy4gUmVxdWVzdCBVUkw6ICcgKyB1cmwgOiBtZXNzYWdlKTtcbiAgICAvKipcbiAgICAgKiBFcnJvciBuYW1lXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSBjbGF6ei5uYW1lO1xuICAgIC8qKlxuICAgICAqIEhUVFAgc3RhdHVzIGNvZGVcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIC8qKlxuICAgICAqIEFQSSByZXF1ZXN0IFVSTFxuICAgICAqL1xuICAgIHRoaXMudXJsID0gdXJsO1xuXG4gICAgaWYgKGlzTm9kZSAmJiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgY2xhenopO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGVycm9yIGNvZGUsIHVzZWQgZm9yIGkxOG5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvZGUgZXJyb3IgY29kZSBmb3IgaTE4blxuICAgKi9cbiAgc2V0IGNvZGUoY29kZSkge1xuICAgIHRoaXMuX2NvZGUgPSBjb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZXJyb3IgY29kZSB1c2VkIGZvciBpMThuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gZXJyb3IgY29kZVxuICAgKi9cbiAgZ2V0IGNvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvZGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG1lc3NhZ2UgYXJndW1lbnRzIGZvciBpMThuXG4gICAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gYXJncyBhcmd1bWVudHMgZm9yIGkxOG5cbiAgICovXG4gIHNldCBhcmd1bWVudHMoYXJncykge1xuICAgIHRoaXMuX2FyZ3MgPSBhcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbWVzc2FnZSBhcmd1bWVudHMgZm9yIGkxOG5cbiAgICogQHJldHVybiB7QXJyYXk8T2JqZWN0Pn0gbWVzc2FnZSBhcmd1bWVudHMgZm9yIGkxOG5cbiAgICovXG4gIGdldCBhcmd1bWVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FyZ3M7XG4gIH1cblxufVxuXG4vKipcbiAqIFRocm93aW5nIHRoaXMgZXJyb3IgcmVzdWx0cyBpbiA0MDQgKE5vdCBGb3VuZCkgSFRUUCByZXNwb25zZSBjb2RlLlxuICovXG5leHBvcnQgY2xhc3MgTm90Rm91bmRFcnJvciBleHRlbmRzIEFwaUVycm9yIHtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBOb3RGb3VuZEVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBlcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgQVBJIHJlcXVlc3QgVVJMXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCB1cmwpIHtcbiAgICBzdXBlcihOb3RGb3VuZEVycm9yLCBtZXNzYWdlLCA0MDQsIHVybCk7XG4gIH1cblxufVxuXG4vKipcbiAqIFRocm93aW5nIHRoaXMgZXJyb3IgcmVzdWx0cyBpbiA0MDMgKEZvcmJpZGRlbikgSFRUUCByZXNwb25zZSBjb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuRXJyb3IgZXh0ZW5kcyBBcGlFcnJvciB7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgZm9yYmlkZGVuIGVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBlcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgQVBJIHJlcXVlc3QgVVJMXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCB1cmwpIHtcbiAgICBzdXBlcihGb3JiaWRkZW5FcnJvciwgbWVzc2FnZSwgNDAzLCB1cmwpO1xuICB9XG5cbn1cblxuLyoqXG4gKiBUaHJvd2luZyB0aGlzIGVycm9yIHJlc3VsdHMgaW4gNDAxIChVbmF1dGhvcml6ZWQpIEhUVFAgcmVzcG9uc2UgY29kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFVuYXV0aG9yaXplZEVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHVuYXV0aG9yaXplZCBlcnJvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgZXJyb3IgbWVzc2FnZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEFQSSByZXF1ZXN0IFVSTFxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZSwgdXJsKSB7XG4gICAgc3VwZXIoVW5hdXRob3JpemVkRXJyb3IsIG1lc3NhZ2UsIDQwMSwgdXJsKTtcbiAgfVxuXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB2YWxpZGF0aW9uIGVycm9yLiBUaHJvd2luZyB0aGlzIGVycm9yIHJlc3VsdHMgaW4gNDAwIChCYWQgUmVxdWVzdCkgSFRUUCByZXNwb25zZSBjb2RlLlxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHZhbGlkYXRpb24gZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtPYmplY3R9IGRldGFpbHMgZXJyb3IgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIEFQSSByZXF1ZXN0IFVSTFxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZSwgZGV0YWlscywgdXJsKSB7XG4gICAgc3VwZXIoVmFsaWRhdGlvbkVycm9yLCBtZXNzYWdlLCA0MDAsIHVybCk7XG4gICAgLyoqXG4gICAgICogVmFsaWRhdGlvbiBlcnJvciBkZXRhaWxzXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICB0aGlzLmRldGFpbHMgPSBkZXRhaWxzO1xuICB9XG5cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHVuZXhwZWN0ZWQgZXJyb3IuIFRocm93aW5nIHRoaXMgZXJyb3IgcmVzdWx0cyBpbiA1MDAgKEludGVybmFsIEVycm9yKSBIVFRQIHJlc3BvbnNlIGNvZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbEVycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHVuZXhwZWN0ZWQgZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBBUEkgcmVxdWVzdCBVUkxcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIHVybCkge1xuICAgIHN1cGVyKEludGVybmFsRXJyb3IsIG1lc3NhZ2UsIDUwMCwgdXJsKTtcbiAgfVxuXG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVG9vTWFueVJlcXVlc3RzRXJyb3JNZXRhZGF0YVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHBlcmlvZEluTWludXRlcyB0aHJvdHRsaW5nIHBlcmlvZCBpbiBtaW51dGVzXG4gKiBAcHJvcGVydHkge051bWJlcn0gcmVxdWVzdHNQZXJQZXJpb2RBbGxvd2VkIGF2YWlsYWJsZSByZXF1ZXN0cyBmb3IgcGVyaW9kSW5NaW51dGVzXG4gKiBAcHJvcGVydHkge0RhdGV9IHJlY29tbWVuZGVkUmV0cnlUaW1lIHJlY29tbWVuZGVkIGRhdGUgdG8gcmV0cnkgcmVxdWVzdFxuICogQHByb3BlcnR5IHtTdHJpbmd9IHR5cGUgZXJyb3IgdHlwZVxuICovXG5cbi8qKlxuICogUmVwcmVzZW50cyB0b28gbWFueSByZXF1ZXN0cyBlcnJvci4gVGhyb3dpbmcgdGhpcyBlcnJvciByZXN1bHRzIGluIDQyOSAoVG9vIE1hbnkgUmVxdWVzdHMpIEhUVFAgcmVzcG9uc2UgY29kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvb01hbnlSZXF1ZXN0c0Vycm9yIGV4dGVuZHMgQXBpRXJyb3Ige1xuICAvKipcbiAgICogQ29uc3RydWN0cyB0b28gbWFueSByZXF1ZXN0cyBlcnJvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgZXJyb3IgbWVzc2FnZVxuICAgKiBAcGFyYW0ge1Rvb01hbnlSZXF1ZXN0c0Vycm9yTWV0YWRhdGF9IG1ldGFkYXRhIGVycm9yIG1ldGFkYXRhXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBtZXRhZGF0YSwgdXJsKSB7XG4gICAgc3VwZXIoVG9vTWFueVJlcXVlc3RzRXJyb3IsIG1lc3NhZ2UsIDQyOSwgdXJsKTtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJBcGlFcnJvciIsIkZvcmJpZGRlbkVycm9yIiwiSW50ZXJuYWxFcnJvciIsIk5vdEZvdW5kRXJyb3IiLCJUb29NYW55UmVxdWVzdHNFcnJvciIsIlVuYXV0aG9yaXplZEVycm9yIiwiVmFsaWRhdGlvbkVycm9yIiwiaXNOb2RlIiwicHJvY2VzcyIsInJlbGVhc2UiLCJuYW1lIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsImNsYXp6IiwibWVzc2FnZSIsInN0YXR1cyIsInVybCIsImNhcHR1cmVTdGFja1RyYWNlIiwiY29kZSIsIl9jb2RlIiwiYXJndW1lbnRzIiwiYXJncyIsIl9hcmdzIiwiZGV0YWlscyIsIm1ldGFkYXRhIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFTYUEsUUFBUTtlQUFSQTs7SUFvRkFDLGNBQWM7ZUFBZEE7O0lBc0RBQyxhQUFhO2VBQWJBOztJQXRFQUMsYUFBYTtlQUFiQTs7SUE4RkFDLG9CQUFvQjtlQUFwQkE7O0lBOURBQyxpQkFBaUI7ZUFBakJBOztJQWdCQUMsZUFBZTtlQUFmQTs7O0FBM0hiOztDQUVDLEdBRUQsTUFBTUMsU0FBUyxPQUFPQyxZQUFZLGVBQWVBLFFBQVFDLE9BQU8sSUFBSUQsUUFBUUMsT0FBTyxDQUFDQyxJQUFJLEtBQUs7QUFHdEYsSUFBQSxBQUFNVixXQUFOLE1BQU1BLGlCQUFpQlc7SUFFNUI7Ozs7OztHQU1DLEdBQ0RDLFlBQVlDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsQ0FBRTtRQUN2QyxLQUFLLENBQUNBLE1BQUtGLFVBQVUsb0JBQW9CRSxNQUFNRjtRQUMvQzs7O0tBR0MsR0FDRCxJQUFJLENBQUNKLElBQUksR0FBR0csTUFBTUgsSUFBSTtRQUN0Qjs7O0tBR0MsR0FDRCxJQUFJLENBQUNLLE1BQU0sR0FBR0E7UUFDZDs7S0FFQyxHQUNELElBQUksQ0FBQ0MsR0FBRyxHQUFHQTtRQUVYLElBQUlULFVBQVVJLE1BQU1NLGlCQUFpQixFQUFFO1lBQ3JDTixNQUFNTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUVKO1FBQ2hDO0lBQ0Y7SUFFQTs7O0dBR0MsR0FDRCxJQUFJSyxLQUFLQSxJQUFJLEVBQUU7UUFDYixJQUFJLENBQUNDLEtBQUssR0FBR0Q7SUFDZjtJQUVBOzs7R0FHQyxHQUNELElBQUlBLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQ0MsS0FBSztJQUNuQjtJQUVBOzs7R0FHQyxHQUNELElBQUlDLFVBQVVDLElBQUksRUFBRTtRQUNsQixJQUFJLENBQUNDLEtBQUssR0FBR0Q7SUFDZjtJQUVBOzs7R0FHQyxHQUNELElBQUlELFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQ0UsS0FBSztJQUNuQjtBQUVGO0FBS08sSUFBQSxBQUFNbkIsZ0JBQU4sTUFBTUEsc0JBQXNCSDtJQUVqQzs7OztHQUlDLEdBQ0RZLFlBQVlFLE9BQU8sRUFBRUUsR0FBRyxDQUFFO1FBQ3hCLEtBQUssQ0FBQ2IsZUFBZVcsU0FBUyxLQUFLRTtJQUNyQztBQUVGO0FBS08sSUFBQSxBQUFNZixpQkFBTixNQUFNQSx1QkFBdUJEO0lBRWxDOzs7O0dBSUMsR0FDRFksWUFBWUUsT0FBTyxFQUFFRSxHQUFHLENBQUU7UUFDeEIsS0FBSyxDQUFDZixnQkFBZ0JhLFNBQVMsS0FBS0U7SUFDdEM7QUFFRjtBQUtPLElBQUEsQUFBTVgsb0JBQU4sTUFBTUEsMEJBQTBCTDtJQUVyQzs7OztHQUlDLEdBQ0RZLFlBQVlFLE9BQU8sRUFBRUUsR0FBRyxDQUFFO1FBQ3hCLEtBQUssQ0FBQ1gsbUJBQW1CUyxTQUFTLEtBQUtFO0lBQ3pDO0FBRUY7QUFLTyxJQUFBLEFBQU1WLGtCQUFOLE1BQU1BLHdCQUF3Qk47SUFFbkM7Ozs7O0dBS0MsR0FDRFksWUFBWUUsT0FBTyxFQUFFUyxPQUFPLEVBQUVQLEdBQUcsQ0FBRTtRQUNqQyxLQUFLLENBQUNWLGlCQUFpQlEsU0FBUyxLQUFLRTtRQUNyQzs7O0tBR0MsR0FDRCxJQUFJLENBQUNPLE9BQU8sR0FBR0E7SUFDakI7QUFFRjtBQUtPLElBQUEsQUFBTXJCLGdCQUFOLE1BQU1BLHNCQUFzQkY7SUFFakM7Ozs7R0FJQyxHQUNEWSxZQUFZRSxPQUFPLEVBQUVFLEdBQUcsQ0FBRTtRQUN4QixLQUFLLENBQUNkLGVBQWVZLFNBQVMsS0FBS0U7SUFDckM7QUFFRjtBQWFPLElBQUEsQUFBTVosdUJBQU4sTUFBTUEsNkJBQTZCSjtJQUN4Qzs7OztHQUlDLEdBQ0RZLFlBQVlFLE9BQU8sRUFBRVUsUUFBUSxFQUFFUixHQUFHLENBQUU7UUFDbEMsS0FBSyxDQUFDWixzQkFBc0JVLFNBQVMsS0FBS0U7UUFDMUMsSUFBSSxDQUFDUSxRQUFRLEdBQUdBO0lBQ2xCO0FBQ0YifQ==