UNPKG

openchain-sdk-yxl-ts

Version:

OpenChain SDK for browser

41 lines (35 loc) 936 B
import protobuf from 'protobufjs'; import toUint8Array from '../buffer-utils.js'; import bundleJson from '../../crypto/protobuf/bundle.js'; /** * log operation: Create Log * @param {string} args * @returns {string} */ export default function (args) { try { const { sourceAddress, topic, data, metadata } = args; const root = protobuf.Root.fromJSON(bundleJson); const log = root.lookupType('protocol.OperationLog'); const logMsg = log.create({ topic, datas: [data], }); const operation = root.lookupType('protocol.Operation'); const payload = { log: logMsg, type: operation.Type.LOG, sourceAddress, }; if (metadata) { payload.metadata = toUint8Array(Buffer.from(metadata, 'utf8')); } const err = operation.verify(payload); if (err) { throw Error(err); } return operation.create(payload); } catch (err) { throw err; } };