PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/stellar-sdk/lib
Просмотр файла: call_builder.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CallBuilder = void 0;
var tslib_1 = require("tslib");
var detect_node_1 = tslib_1.__importDefault(require("detect-node"));
var urijs_1 = tslib_1.__importDefault(require("urijs"));
var URITemplate_1 = tslib_1.__importDefault(require("urijs/src/URITemplate"));
var errors_1 = require("./errors");
var horizon_axios_client_1 = tslib_1.__importDefault(require("./horizon_axios_client"));
var version = require("../package.json").version;
var JOINABLE = ["transaction"];
var EventSource;
var anyGlobal = global;
if (anyGlobal.EventSource) {
EventSource = anyGlobal.EventSource;
}
else if (detect_node_1.default) {
EventSource = require("eventsource");
}
else if (anyGlobal.window.EventSource) {
EventSource = anyGlobal.window.EventSource;
}
else {
EventSource = require("eventsource");
}
var CallBuilder = (function () {
function CallBuilder(serverUrl, neighborRoot) {
if (neighborRoot === void 0) { neighborRoot = ""; }
this.url = serverUrl.clone();
this.filter = [];
this.originalSegments = this.url.segment() || [];
this.neighborRoot = neighborRoot;
}
CallBuilder.prototype.call = function () {
var _this = this;
this.checkFilter();
return this._sendNormalRequest(this.url).then(function (r) {
return _this._parseResponse(r);
});
};
CallBuilder.prototype.stream = function (options) {
var _this = this;
if (options === void 0) { options = {}; }
this.checkFilter();
this.url.setQuery("X-Client-Name", "js-stellar-sdk");
this.url.setQuery("X-Client-Version", version);
var es;
var timeout;
var createTimeout = function () {
timeout = setTimeout(function () {
if (es) {
es.close();
}
es = createEventSource();
}, options.reconnectTimeout || 15 * 1000);
};
var createEventSource = function () {
try {
es = new EventSource(_this.url.toString());
}
catch (err) {
if (options.onerror) {
options.onerror(err);
}
}
createTimeout();
if (es) {
var closed_1 = false;
var onClose_1 = function () {
if (closed_1) {
return;
}
clearTimeout(timeout);
es.close();
createEventSource();
closed_1 = true;
};
var onMessage = function (message) {
if (message.type === "close") {
onClose_1();
return;
}
var result = message.data
? _this._parseRecord(JSON.parse(message.data))
: message;
if (result.paging_token) {
_this.url.setQuery("cursor", result.paging_token);
}
clearTimeout(timeout);
createTimeout();
if (typeof options.onmessage !== "undefined") {
options.onmessage(result);
}
};
var onError = function (error) {
if (options.onerror) {
options.onerror(error);
}
};
if (es.addEventListener) {
es.addEventListener("message", onMessage.bind(_this));
es.addEventListener("error", onError.bind(_this));
es.addEventListener("close", onClose_1.bind(_this));
}
else {
es.onmessage = onMessage.bind(_this);
es.onerror = onError.bind(_this);
}
}
return es;
};
createEventSource();
return function close() {
clearTimeout(timeout);
if (es) {
es.close();
}
};
};
CallBuilder.prototype.cursor = function (cursor) {
this.url.setQuery("cursor", cursor);
return this;
};
CallBuilder.prototype.limit = function (recordsNumber) {
this.url.setQuery("limit", recordsNumber.toString());
return this;
};
CallBuilder.prototype.order = function (direction) {
this.url.setQuery("order", direction);
return this;
};
CallBuilder.prototype.join = function (include) {
this.url.setQuery("join", include);
return this;
};
CallBuilder.prototype.forEndpoint = function (endpoint, param) {
if (this.neighborRoot === "") {
throw new Error("Invalid usage: neighborRoot not set in constructor");
}
this.filter.push([endpoint, param, this.neighborRoot]);
return this;
};
CallBuilder.prototype.checkFilter = function () {
if (this.filter.length >= 2) {
throw new errors_1.BadRequestError("Too many filters specified", this.filter);
}
if (this.filter.length === 1) {
var newSegment = this.originalSegments.concat(this.filter[0]);
this.url.segment(newSegment);
}
};
CallBuilder.prototype._requestFnForLink = function (link) {
var _this = this;
return function (opts) {
if (opts === void 0) { opts = {}; }
return tslib_1.__awaiter(_this, void 0, void 0, function () {
var uri, template, r;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (link.templated) {
template = URITemplate_1.default(link.href);
uri = urijs_1.default(template.expand(opts));
}
else {
uri = urijs_1.default(link.href);
}
return [4, this._sendNormalRequest(uri)];
case 1:
r = _a.sent();
return [2, this._parseResponse(r)];
}
});
});
};
};
CallBuilder.prototype._parseRecord = function (json) {
var _this = this;
if (!json._links) {
return json;
}
var _loop_1 = function (key) {
var n = json._links[key];
var included = false;
if (typeof json[key] !== "undefined") {
json[key + "_attr"] = json[key];
included = true;
}
if (included && JOINABLE.indexOf(key) >= 0) {
var record_1 = this_1._parseRecord(json[key]);
json[key] = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
return [2, record_1];
}); }); };
}
else {
json[key] = this_1._requestFnForLink(n);
}
};
var this_1 = this;
for (var _i = 0, _a = Object.keys(json._links); _i < _a.length; _i++) {
var key = _a[_i];
_loop_1(key);
}
return json;
};
CallBuilder.prototype._sendNormalRequest = function (initialUrl) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var url;
return tslib_1.__generator(this, function (_a) {
url = initialUrl;
if (url.authority() === "") {
url = url.authority(this.url.authority());
}
if (url.protocol() === "") {
url = url.protocol(this.url.protocol());
}
return [2, horizon_axios_client_1.default.get(url.toString())
.then(function (response) { return response.data; })
.catch(this._handleNetworkError)];
});
});
};
CallBuilder.prototype._parseResponse = function (json) {
if (json._embedded && json._embedded.records) {
return this._toCollectionPage(json);
}
return this._parseRecord(json);
};
CallBuilder.prototype._toCollectionPage = function (json) {
var _this = this;
for (var i = 0; i < json._embedded.records.length; i += 1) {
json._embedded.records[i] = this._parseRecord(json._embedded.records[i]);
}
return {
records: json._embedded.records,
next: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var r;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this._sendNormalRequest(urijs_1.default(json._links.next.href))];
case 1:
r = _a.sent();
return [2, this._toCollectionPage(r)];
}
});
}); },
prev: function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var r;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, this._sendNormalRequest(urijs_1.default(json._links.prev.href))];
case 1:
r = _a.sent();
return [2, this._toCollectionPage(r)];
}
});
}); },
};
};
CallBuilder.prototype._handleNetworkError = function (error) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
if (error.response && error.response.status && error.response.statusText) {
switch (error.response.status) {
case 404:
return [2, Promise.reject(new errors_1.NotFoundError(error.response.statusText, error.response.data))];
default:
return [2, Promise.reject(new errors_1.NetworkError(error.response.statusText, error.response.data))];
}
}
else {
return [2, Promise.reject(new Error(error.message))];
}
return [2];
});
});
};
return CallBuilder;
}());
exports.CallBuilder = CallBuilder;
//# sourceMappingURL=call_builder.js.mapВыполнить команду
Для локальной разработки. Не используйте в интернете!