UNPKG

stellar-plus

Version:

beta version of stellar-plus, an all-in-one sdk for the Stellar blockchain

71 lines (70 loc) 3.33 kB
"use strict"; 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;