eosplayer
Version:
eosplayer is the glue layer of eosjs, which is packaged based on eosjs and provides better usability for the application layer. It can be used on browsers already installed scatter or in Dapp wallets.
170 lines • 8.54 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var multiSourcePlayer_1 = require("../../multiSourcePlayer");
var libs_1 = require("../../types/libs");
var log_1 = require("../../utils/log");
var wait_1 = require("../../utils/wait");
var nodeStat_1 = require("./nodeStat");
var log = log_1.createLogger('signPlayer');
var defaultConfig = {
account: {
name: 'eosio',
authority: 'active',
},
options: {
maxFailureRate: 0.499,
failureRateThreshold: 0.1,
maxContinuousFailure: 3,
cleaningTimeInterval: 120000,
revivalTimeInterval: 600000,
responseIntervalThreshold: 1000,
responseIntervalDecline: 100,
maxCallPromiseExceedTime: 180000,
},
};
var SignPlayer = /** @class */ (function (_super) {
__extends(SignPlayer, _super);
function SignPlayer(conf) {
var _this = _super.call(this, conf) || this;
_this._concurrentCount = 0;
var account = conf.account, options = conf.options;
_this._identity = __assign({}, defaultConfig.account, account);
_this._options = __assign({}, defaultConfig.options, options);
_this._nodeStates = new nodeStat_1.NodeStatMgr(_this._nodeConfigs, _this._options);
return _this;
}
Object.defineProperty(SignPlayer.prototype, "eosClient", {
get: function () {
this._nodeStates.setTheBestNodeToCurrent();
var conf = this._nodeStates.getCurNodeConf();
// log.verbose("currentNode", this._nodeStates._currentNodeIndex, conf, this._nodeStates.getCurNodeStat());
return new libs_1.Eos(conf);
},
enumerable: true,
configurable: true
});
SignPlayer.prototype.getIdentity = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!this._identity) {
throw new Error('identity has not been set');
}
return [2 /*return*/, this._identity];
});
});
};
SignPlayer.prototype.setIdentity = function (account) {
this._identity = account;
};
SignPlayer.prototype.lockChain = function () {
var chain = this.chain; // using eosClient here
return chain;
};
SignPlayer.prototype.dynamicCall = function (code, func, jsonData, authorization) {
return __awaiter(this, void 0, void 0, function () {
var chain, startTimeStamp, _endpointUrl, auth, ret, node, e_1, node;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this._concurrentCount += 1;
chain = this.lockChain();
startTimeStamp = (new Date()).getTime();
_endpointUrl = this._nodeStates.getCurNodeConf().httpEndpoint || '';
auth = authorization || {
actor: this._identity.name,
permission: this._identity.authority,
};
this.log('START', _endpointUrl, code, func, jsonData, auth, this._nodeStates.getCurNodeStat(), "Concurrent count => " + this._concurrentCount + " ");
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, wait_1.timeoutPromise(this._options.maxCallPromiseExceedTime || 50000, chain.call(code, func, jsonData, auth)).catch(function (ex) {
throw ex;
})];
case 2:
ret = _a.sent();
node = this._nodeStates.markSendSuccess(startTimeStamp);
this.log('SUCCESS', _endpointUrl, code, func, jsonData, auth, node);
this._concurrentCount -= 1;
return [2 /*return*/, ret];
case 3:
e_1 = _a.sent();
node = this._nodeStates.markSendFailed(startTimeStamp);
this.log('FAILED', _endpointUrl, code, func, jsonData, auth, node, "ERROR => " + ((e_1 && e_1.message) ? e_1.message : e_1));
this._concurrentCount -= 1;
throw e_1;
case 4: return [2 /*return*/];
}
});
});
};
SignPlayer.prototype.log = function (mark, endPointUrl, code, func, jsonData, auth, node) {
var args = [];
for (var _i = 7; _i < arguments.length; _i++) {
args[_i - 7] = arguments[_i];
}
log.info.apply(log, ["[signPlayer] Call chain [[ " + endPointUrl + " ]] " + code + "." + func + "(" + JSON.stringify(jsonData) + ") by " + auth.actor + "@" + auth.permission + " [[[" + mark + "]]] :\nNode status => " + JSON.stringify(node) + "\n"].concat(args));
};
return SignPlayer;
}(multiSourcePlayer_1.MultiSourcePlayer));
exports.SignPlayer = SignPlayer;
//# sourceMappingURL=signPlayer.js.map