stellar-plus
Version:
beta version of stellar-plus, an all-in-one sdk for the Stellar blockchain
71 lines (70 loc) • 3.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SubmitTransactionPipeline = void 0;
const tslib_1 = require("tslib");
const types_1 = require("../../../../stellar-plus/core/pipelines/submit-transaction/types");
const conveyor_belt_1 = require("../../../../stellar-plus/error/helpers/conveyor-belt");
const horizon_1 = require("../../../../stellar-plus/horizon");
const conveyor_belts_1 = require("../../../../stellar-plus/utils/pipeline/conveyor-belts");
const errors_1 = require("./errors");
class SubmitTransactionPipeline extends conveyor_belts_1.ConveyorBelt {
constructor(plugins) {
super({
type: types_1.SubmitTransactionPipelineType.id,
plugins: plugins || [],
});
}
process(item, itemId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const { transaction, networkHandler } = item;
//
// ===================
// Horizon Submission
// ===================
//
if (networkHandler instanceof horizon_1.HorizonHandlerClient) {
let response;
try {
response = yield this.submitTransactionThroughHorizon(transaction, networkHandler);
}
catch (error) {
throw errors_1.PSUError.horizonSubmissionFailed(error, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)), transaction);
}
if (!response.successful) {
throw errors_1.PSUError.transactionSubmittedThroughHorizonFailed(response, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)), transaction);
}
return { response };
}
//
// ===================
// RPC Submission
// ===================
//
if (networkHandler.type && networkHandler.type === 'RpcHandler') {
let response;
try {
response = yield this.submitTransactionThroughRpc(transaction, networkHandler);
}
catch (error) {
throw errors_1.PSUError.rpcSubmissionFailed(error, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)), transaction);
}
return { response };
}
throw errors_1.PSUError.invalidNetworkHandler((0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)));
});
}
submitTransactionThroughHorizon(transaction, horizonHandler) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = (yield horizonHandler.server.submitTransaction(transaction, {
skipMemoRequiredCheck: true, // Not skipping memo required check causes an error when submitting fee bump transactions
}));
return response;
});
}
submitTransactionThroughRpc(transaction, rpcHandler) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return yield rpcHandler.submitTransaction(transaction);
});
}
}
exports.SubmitTransactionPipeline = SubmitTransactionPipeline;