UNPKG

@siglesiasg/node-red-hyperledger-fabric-gateway

Version:

Hyperledger Fabric 2.x nodes for node-red with latest fabric-gateway library

73 lines 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildBlockEventModel = exports.RWSetModel = exports.TransactionModel = exports.BlockModel = void 0; const common_1 = require("@hyperledger/fabric-protos/lib/common"); const fabric_parse_block_1 = require("../libs/fabric-parse-block"); const utf8Decoder = new TextDecoder(); class BlockModel { } exports.BlockModel = BlockModel; class TransactionModel { } exports.TransactionModel = TransactionModel; class RWSetModel { } exports.RWSetModel = RWSetModel; function buildBlockEventModel(blockData, channelId) { let blockProtos; if (blockData instanceof common_1.Block) { blockProtos = (0, fabric_parse_block_1.parseBlock)(blockData); } else if (blockData instanceof Uint8Array) { blockProtos = (0, fabric_parse_block_1.parseBlock)(common_1.Block.deserializeBinary(blockData)); } return { blockNumber: Number(blockProtos.getNumber()), blockHash: blockProtos.getHash(), channelId, transactions: getTransactions(blockProtos.getTransactions()), }; } exports.buildBlockEventModel = buildBlockEventModel; function getTransactions(transactions) { const tx = []; let transactionIndex = 0; for (const txProtos of transactions) { tx.push({ transactionIndex, transactionId: txProtos.getChannelHeader().getTxId(), isValid: txProtos.isValid(), rawData: getRWSet(txProtos.getNamespaceReadWriteSets()) }); transactionIndex++; } return tx; } function getRWSet(rwsetProtos) { const rw = []; let rwIndex = 0; for (const rwProtos of rwsetProtos) { for (const writeProtos of rwProtos.getReadWriteSet().getWritesList()) { const key = writeProtos.getKey(); let data; let isChaincodeOperation; if (key.startsWith('namespaces/fields/') || key.startsWith('namespaces/metadata/')) { data = undefined; isChaincodeOperation = true; } else { data = JSON.parse(utf8Decoder.decode(writeProtos.getValue_asU8())); } rw.push({ rwIndex, key, data, isChaincodeOperation, isDelete: writeProtos.getIsDelete() ? true : undefined, }); rwIndex++; } } return rw; } //# sourceMappingURL=block.model.js.map