UNPKG

stellar-plus

Version:

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

76 lines (75 loc) 5.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClassicTransactionPipeline = void 0; const tslib_1 = require("tslib"); const build_transaction_1 = require("../../../../stellar-plus/core/pipelines/build-transaction"); const classic_sign_requirements_1 = require("../../../../stellar-plus/core/pipelines/classic-sign-requirements"); const types_1 = require("../../../../stellar-plus/core/pipelines/classic-transaction/types"); const sign_transaction_1 = require("../../../../stellar-plus/core/pipelines/sign-transaction"); const submit_transaction_1 = require("../../../../stellar-plus/core/pipelines/submit-transaction"); const horizon_1 = require("../../../../stellar-plus/horizon"); const multi_belt_pipeline_1 = require("../../../../stellar-plus/utils/pipeline/multi-belt-pipeline"); class ClassicTransactionPipeline extends multi_belt_pipeline_1.MultiBeltPipeline { constructor(networkConfig, options) { const internalConstructorArgs = { beltType: types_1.ClassicTransactionPipelineType.id, plugins: (options === null || options === void 0 ? void 0 : options.plugins) || [], }; super(Object.assign(Object.assign({}, internalConstructorArgs), { type: types_1.ClassicTransactionPipelineType.id })); this.networkConfig = networkConfig; this.horizonHandler = new horizon_1.HorizonHandlerClient(this.networkConfig); } process(item, itemId) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const { txInvocation, operations, options } = item; const executionPlugins = []; if (options === null || options === void 0 ? void 0 : options.executionPlugins) executionPlugins.push(...options.executionPlugins); // ======================= Build Transaction ========================== const buildTransactionPipelinePlugins = this.getInnerPluginsByType(executionPlugins, 'BuildTransactionPipeline'); const builTransactionPipeline = new build_transaction_1.BuildTransactionPipeline(buildTransactionPipelinePlugins); const builtTx = yield builTransactionPipeline.execute({ header: txInvocation.header, horizonHandler: this.horizonHandler, operations, networkPassphrase: this.networkConfig.networkPassphrase, }, itemId); // ======================= Calculate classic requirements ========================== const classicSignRequirementsPipelinePlugins = this.getInnerPluginsByType(executionPlugins, 'ClassicSignRequirementsPipeline'); const classicSignRequirementsPipeline = new classic_sign_requirements_1.ClassicSignRequirementsPipeline(classicSignRequirementsPipelinePlugins); const classicSignatureRequirements = yield classicSignRequirementsPipeline.execute(builtTx, itemId); // ======================= Sign Transaction ========================== const signTransactionPipelinePlugins = this.getInnerPluginsByType(executionPlugins, 'SignTransactionPipeline'); const signTransactionPipeline = new sign_transaction_1.SignTransactionPipeline(signTransactionPipelinePlugins); const signedTransaction = yield signTransactionPipeline.execute({ transaction: builtTx, signatureRequirements: classicSignatureRequirements, signers: txInvocation.signers, }, itemId); // ======================= Submit Transaction ========================== const submitTransactionPipelinePlugins = this.getInnerPluginsByType(executionPlugins, 'SubmitTransactionPipeline'); const submitTransactionPipeline = new submit_transaction_1.SubmitTransactionPipeline(submitTransactionPipelinePlugins); const submissionResult = yield submitTransactionPipeline.execute({ transaction: signedTransaction, networkHandler: this.horizonHandler, }, itemId); if (this.isSimpleOutput(options)) { return submissionResult; } const verboseOutput = (options === null || options === void 0 ? void 0 : options.verboseOutput) ? { buildTransactionPipelineOutput: builtTx, classicSignRequirementsPipelineOutput: classicSignatureRequirements, signTransactionPipelineOutput: signedTransaction, submitTransactionPipelineOutput: submissionResult, } : {}; return Object.assign(Object.assign({}, verboseOutput), { classicTransactionOutput: submissionResult, hash: (options === null || options === void 0 ? void 0 : options.includeHashOutput) ? submissionResult.response.hash : undefined }); }); } // expand with other options in the future that might require verbose output isSimpleOutput(options) { return !(options === null || options === void 0 ? void 0 : options.includeHashOutput) && !(options === null || options === void 0 ? void 0 : options.verboseOutput); } } exports.ClassicTransactionPipeline = ClassicTransactionPipeline;