@harmony-js/core
Version:
harmony core package
226 lines • 10.2 kB
JavaScript
"use strict";
/**
* @packageDocumentation
* @module harmony-core
* @hidden
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TruffleProvider = void 0;
var tslib_1 = require("tslib");
var utils_1 = require("@harmony-js/utils");
var account_1 = require("@harmony-js/account");
var crypto_1 = require("@harmony-js/crypto");
var packageInfo = { version: '1.0.0' };
var TruffleProvider = /** @class */ (function (_super) {
tslib_1.__extends(TruffleProvider, _super);
function TruffleProvider(provider, hdOptions, chainOptions, transactionOptions) {
if (provider === void 0) { provider = 'http://localhost:9500'; }
if (hdOptions === void 0) { hdOptions = {
menmonic: undefined,
index: 0,
addressCount: 1,
}; }
if (chainOptions === void 0) { chainOptions = {
shardID: 0,
chainType: utils_1.ChainType.Harmony,
chainId: utils_1.ChainID.HmyLocal,
}; }
if (transactionOptions === void 0) { transactionOptions = {
gasLimit: '10000000',
gasPrice: '20000000000',
}; }
var _this = _super.call(this, provider, hdOptions.menmonic, hdOptions.index, hdOptions.addressCount, chainOptions.shardID, chainOptions.chainType, chainOptions.chainId, transactionOptions.gasLimit, transactionOptions.gasPrice) || this;
_this.resolveResult = function (response) {
var final = response.getRaw || response;
delete final.req;
delete final.responseType;
return final;
};
_this.resolveCallback = function (err, res, callback) {
try {
if (err) {
callback(err);
}
var response = _this.resolveResult(res);
callback(null, response);
}
catch (error) {
throw error;
}
};
return _this;
}
TruffleProvider.prototype.send = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, newArgs, id, params, newMethod, callback, _b, accounts, txObj, rawTxn, result, result, result, result;
var _this = this;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
_a = this.resolveArgs.apply(this, tslib_1.__spread(args)), newArgs = _a.newArgs, id = _a.id, params = _a.params, newMethod = _a.newMethod, callback = _a.callback;
_b = newMethod;
switch (_b) {
case 'hmy_accounts': return [3 /*break*/, 1];
case 'hmy_sendTransaction': return [3 /*break*/, 2];
case 'hmy_getTransactionReceipt': return [3 /*break*/, 5];
case 'net_version': return [3 /*break*/, 7];
case 'web3_clientVersion': return [3 /*break*/, 8];
case 'hmy_getBlockByNumber': return [3 /*break*/, 9];
}
return [3 /*break*/, 11];
case 1:
{
accounts = this.getAccounts();
callback(null, {
result: accounts,
id: id,
jsonrpc: '2.0',
});
return [2 /*return*/, {
result: accounts,
id: id,
jsonrpc: '2.0',
}];
// break;
}
_c.label = 2;
case 2:
txObj = params[0];
return [4 /*yield*/, this.signTransaction(txObj)];
case 3:
rawTxn = _c.sent();
return [4 /*yield*/, this.provider.send({
id: id,
method: 'hmy_sendRawTransaction',
params: [rawTxn],
jsonrpc: '2.0',
}, function (err, res) { return _this.resolveCallback(err, res, callback); })];
case 4:
result = _c.sent();
return [2 /*return*/, this.resolveResult(result)];
case 5: return [4 /*yield*/, this.provider.send({
id: id,
method: 'hmy_getTransactionReceipt',
params: [params[0]],
jsonrpc: '2.0',
}, function (err, res) {
try {
if (err) {
callback(err);
}
var response = _this.resolveResult(res);
if (response.result !== null) {
response.result.status = '0x1';
}
callback(null, response);
}
catch (error) {
throw error;
}
})];
case 6:
result = _c.sent();
return [2 /*return*/, this.resolveResult(result)];
case 7:
{
callback(null, {
result: String(this.messenger.chainId),
id: id,
jsonrpc: '2.0',
});
return [2 /*return*/, {
result: String(this.messenger.chainId),
id: id,
jsonrpc: '2.0',
}];
}
_c.label = 8;
case 8:
{
callback(null, {
result: "Harmony/" + packageInfo.version + "/@harmony-js",
id: id,
jsonrpc: '2.0',
});
return [2 /*return*/, {
result: "Harmony/" + packageInfo.version + "/@harmony-js",
id: id,
jsonrpc: '2.0',
}];
}
_c.label = 9;
case 9: return [4 /*yield*/, this.provider.send(newArgs, function (err, res) {
try {
if (err) {
callback(err);
}
var response = _this.resolveResult(res);
if (response.error) {
callback(response.error);
return;
}
if (new utils_1.Unit(response.result.gasLimit)
.asWei()
.toWei()
.gt(new utils_1.Unit(_this.gasLimit).asWei().toWei())) {
response.result.gasLimit = "0x" + new utils_1.Unit(_this.gasLimit)
.asWei()
.toWei()
.toString('hex');
}
if (utils_1.isBech32Address(response.result.miner)) {
response.result.miner = crypto_1.fromBech32(response.result.miner, crypto_1.HRP);
}
callback(null, response);
}
catch (error) {
throw error;
}
})];
case 10:
result = _c.sent();
return [2 /*return*/, this.resolveResult(result)];
case 11: return [4 /*yield*/, this.provider.send(newArgs, function (err, res) { return _this.resolveCallback(err, res, callback); })];
case 12:
result = _c.sent();
return [2 /*return*/, this.resolveResult(result)];
}
});
});
};
TruffleProvider.prototype.sendAsync = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return this.send.apply(this, tslib_1.__spread(args));
};
TruffleProvider.prototype.resolveArgs = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var method = args[0].method;
var params = args[0].params;
var newMethod = method;
if (method.startsWith('eth')) {
newMethod = method.replace('eth', 'hmy');
}
args[0].method = newMethod;
var id = args[0].id;
return {
newArgs: args[0],
id: id,
params: params,
newMethod: newMethod,
callback: args[1],
};
};
return TruffleProvider;
}(account_1.HDNode));
exports.TruffleProvider = TruffleProvider;
//# sourceMappingURL=truffleProvider.js.map