UNPKG

@fabric-es/operator

Version:
84 lines 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.submitOrEvaluateTx = void 0; const util_1 = __importDefault(require("util")); const fabric_network_1 = require("fabric-network"); const js_yaml_1 = __importDefault(require("js-yaml")); const types_1 = require("../types"); const utils_1 = require("../utils"); const submitOrEvaluateTx = (option) => async ({ identity, chaincodeId, fcn, args = [], eventHandlerStrategies = fabric_network_1.DefaultEventHandlerStrategies.MSPID_SCOPE_ALLFORTX, queryHandlerStrategies = fabric_network_1.DefaultQueryHandlerStrategies.MSPID_SCOPE_SINGLE, asLocalhost = true, }) => { const logger = utils_1.getLogger({ name: '[operator] submitOrEvaluateTx.js' }); const { channelName, connectionProfile, wallet } = option; const gateway = new fabric_network_1.Gateway(); let network; if (!identity) throw new Error(types_1.MISSING_WALLET_LABEL); if (!chaincodeId) throw new Error(types_1.MISSING_CHAINCODE_ID); if (!fcn) throw new Error(types_1.MISSING_FCN); try { const cp = await utils_1.promiseToReadFile(connectionProfile); await gateway.connect(js_yaml_1.default.safeLoad(cp), { identity, wallet, eventHandlerOptions: { strategy: eventHandlerStrategies }, queryHandlerOptions: { strategy: queryHandlerStrategies }, discovery: { asLocalhost, enabled: true }, }); } catch (e) { logger.error(util_1.default.format('fail to connect gateway, %j', e)); throw new Error(e); } try { network = await gateway.getNetwork(channelName); } catch (e) { logger.error(util_1.default.format('fail to getNetwork, %j', e)); throw new Error(e); } logger.info('gateway connected'); return { disconnect: () => gateway.disconnect(), evaluate: () => network .getContract(chaincodeId) .createTransaction(fcn) .evaluate(...args) .then((res) => { logger.debug(util_1.default.format('successfully evaluate tx: %s', fcn)); return JSON.parse(Buffer.from(JSON.parse(res)).toString()); }) .catch((error) => { logger.error(util_1.default.format('evaluate tx error in %s: %j', fcn, error)); return { error }; }), submit: () => { let input_args = args; if (fcn === 'eventstore:createCommit') { input_args = [...args.slice(0, 4), utils_1.createCommitId()]; if (args[4]) input_args.push(args[4]); else input_args.push(''); } return network .getContract(chaincodeId) .createTransaction(fcn) .submit(...input_args) .then((res) => { logger.debug(util_1.default.format('successfully submit tx: %s', fcn)); return JSON.parse(Buffer.from(JSON.parse(res)).toString()); }) .catch((error) => { logger.error(util_1.default.format('submit tx error in %s: %j', fcn, error)); return { error }; }); }, }; }; exports.submitOrEvaluateTx = submitOrEvaluateTx; //# sourceMappingURL=submitOrEvaluateTx.js.map