stellar-plus
Version:
beta version of stellar-plus, an all-in-one sdk for the Stellar blockchain
64 lines (63 loc) • 2.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BuildTransactionPipeline = void 0;
const tslib_1 = require("tslib");
const stellar_sdk_1 = require("@stellar/stellar-sdk");
const errors_1 = require("../../../../stellar-plus/core/pipelines/build-transaction/errors");
const types_1 = require("../../../../stellar-plus/core/pipelines/build-transaction/types");
const conveyor_belt_1 = require("../../../../stellar-plus/error/helpers/conveyor-belt");
const conveyor_belts_1 = require("../../../../stellar-plus/utils/pipeline/conveyor-belts");
class BuildTransactionPipeline extends conveyor_belts_1.ConveyorBelt {
constructor(plugins) {
super({
type: types_1.BuildTransactionPipelineType.id,
plugins: plugins || [],
});
}
process(item, itemId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const { header, horizonHandler, operations, networkPassphrase, sorobanData } = item;
let sourceAccount;
try {
sourceAccount = (yield horizonHandler.loadAccount(header.source));
}
catch (e) {
throw errors_1.PBTError.couldntLoadAccount(e, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)));
}
let txEnvelope;
try {
txEnvelope = new stellar_sdk_1.TransactionBuilder(sourceAccount, {
fee: header.fee,
networkPassphrase: networkPassphrase,
});
}
catch (e) {
throw errors_1.PBTError.couldntCreateTransactionBuilder(e, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)));
}
if (sorobanData) {
try {
txEnvelope.setSorobanData(sorobanData);
}
catch (e) {
throw errors_1.PBTError.couldntSetSorobanData(e, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)));
}
}
try {
for (const operation of operations) {
txEnvelope.addOperation(operation);
}
txEnvelope.setTimeout(header.timeout);
}
catch (e) {
throw errors_1.PBTError.couldntAddOperations(e, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)));
}
try {
return txEnvelope.build();
}
catch (e) {
throw errors_1.PBTError.couldntBuildTransaction(e, (0, conveyor_belt_1.extractConveyorBeltErrorMeta)(item, this.getMeta(itemId)));
}
});
}
}
exports.BuildTransactionPipeline = BuildTransactionPipeline;