UNPKG

@nervosnetwork/ckb-sdk-utils

Version:

Utils module of @nervosnetwork/ckb-sdk-core

136 lines 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeTransaction = exports.serializeRawTransaction = exports.serializeWitnesses = exports.serializeWitnessArgs = exports.serializeOutputsData = exports.serializeOutputs = exports.serializeOutput = exports.serializeInputs = exports.serializeInput = exports.serializeHeaderDeps = exports.serializeCellDeps = exports.serializeCellDep = exports.serializeDepType = exports.serializeOutPoint = exports.serializeVersion = void 0; const script_js_1 = require("./script.js"); const index_js_1 = require("../convertors/index.js"); const basic_js_1 = require("./basic.js"); const serializeVersion = (version) => (0, index_js_1.toUint32Le)(version); exports.serializeVersion = serializeVersion; const serializeOutPoint = (outPoint) => { if (!outPoint) return ''; const struct = new Map([ ['txHash', outPoint.txHash], ['index', (0, index_js_1.toUint32Le)(outPoint.index)], ]); return (0, basic_js_1.serializeStruct)(struct); }; exports.serializeOutPoint = serializeOutPoint; const serializeDepType = (type) => { if (type === 'code') return '0x00'; if (type === 'depGroup') return '0x01'; throw new TypeError("Dep type must be either of 'code' or 'depGroup'"); }; exports.serializeDepType = serializeDepType; const serializeCellDep = (dep) => { const serializedOutPoint = (0, exports.serializeOutPoint)(dep.outPoint); const serializedDepType = (0, exports.serializeDepType)(dep.depType); const struct = new Map([ ['outPoint', serializedOutPoint], ['depType', serializedDepType], ]); return (0, basic_js_1.serializeStruct)(struct); }; exports.serializeCellDep = serializeCellDep; const serializeCellDeps = (cellDeps) => { const serializedCellDepList = cellDeps.map(dep => (0, exports.serializeCellDep)(dep)); return (0, basic_js_1.serializeFixVec)(serializedCellDepList); }; exports.serializeCellDeps = serializeCellDeps; const serializeHeaderDeps = (deps) => { const serializedHeaderDepList = deps.map(dep => (0, basic_js_1.serializeArray)(dep)); return (0, basic_js_1.serializeFixVec)(serializedHeaderDepList); }; exports.serializeHeaderDeps = serializeHeaderDeps; const serializeInput = (input) => { const serializedOutPoint = (0, exports.serializeOutPoint)(input.previousOutput); const serializedSince = (0, index_js_1.toUint64Le)(input.since); const struct = new Map([ ['since', serializedSince], ['previousOutput', serializedOutPoint], ]); return (0, basic_js_1.serializeStruct)(struct); }; exports.serializeInput = serializeInput; const serializeInputs = (inputs) => { const serializedInputList = inputs.map(input => (0, exports.serializeInput)(input)); return (0, basic_js_1.serializeFixVec)(serializedInputList); }; exports.serializeInputs = serializeInputs; const serializeOutput = (output) => { const serializedCapacity = (0, index_js_1.toUint64Le)(output.capacity); const serializedLockScript = (0, script_js_1.serializeScript)(output.lock); const serialiedTypeScript = output.type ? (0, script_js_1.serializeScript)(output.type) : ''; const table = new Map([ ['capacity', serializedCapacity], ['lock', serializedLockScript], ['type', serialiedTypeScript], ]); return (0, basic_js_1.serializeTable)(table); }; exports.serializeOutput = serializeOutput; const serializeOutputs = (outputs) => { const serializedOutputList = outputs.map(output => (0, exports.serializeOutput)(output)); return (0, basic_js_1.serializeDynVec)(serializedOutputList); }; exports.serializeOutputs = serializeOutputs; const serializeOutputsData = (outputsData) => { const serializedOutputsDatumList = outputsData.map(datum => (0, basic_js_1.serializeFixVec)(datum)); return (0, basic_js_1.serializeDynVec)(serializedOutputsDatumList); }; exports.serializeOutputsData = serializeOutputsData; const serializeWitnessArgs = (witnessArgs) => { const [serializedLock, serializedInputType, serializedOutputType] = [ witnessArgs.lock, witnessArgs.inputType, witnessArgs.outputType, ].map(args => { if ((0, basic_js_1.serializeOption)(args) === '0x') { return '0x'; } return (0, basic_js_1.serializeFixVec)(args); }); const table = new Map([ ['lock', serializedLock], ['inputType', serializedInputType], ['outputType', serializedOutputType], ]); return (0, basic_js_1.serializeTable)(table); }; exports.serializeWitnessArgs = serializeWitnessArgs; const serializeWitnesses = (witnesses) => { const serializedWitnessList = witnesses.map(witness => (0, basic_js_1.serializeFixVec)(witness)); return (0, basic_js_1.serializeDynVec)(serializedWitnessList); }; exports.serializeWitnesses = serializeWitnesses; const serializeRawTransaction = (rawTransaction) => { const serializedVersion = (0, exports.serializeVersion)(rawTransaction.version); const serializedCellDeps = (0, exports.serializeCellDeps)(rawTransaction.cellDeps); const serializedHeaderDeps = (0, exports.serializeHeaderDeps)(rawTransaction.headerDeps); const serializedInputs = (0, exports.serializeInputs)(rawTransaction.inputs); const serializedOutputs = (0, exports.serializeOutputs)(rawTransaction.outputs); const serializedOutputsData = (0, exports.serializeOutputsData)(rawTransaction.outputsData); const table = new Map([ ['version', serializedVersion], ['cellDeps', serializedCellDeps], ['headerDeps', serializedHeaderDeps], ['inputs', serializedInputs], ['outputs', serializedOutputs], ['outputsData', serializedOutputsData], ]); return (0, basic_js_1.serializeTable)(table); }; exports.serializeRawTransaction = serializeRawTransaction; const serializeTransaction = (rawTransaction) => { const serializedRawTransaction = (0, exports.serializeRawTransaction)(rawTransaction); const serializedWitnesses = (0, exports.serializeWitnesses)(rawTransaction.witnesses || []); const table = new Map([ ['raw', serializedRawTransaction], ['witnesses', serializedWitnesses], ]); return (0, basic_js_1.serializeTable)(table); }; exports.serializeTransaction = serializeTransaction; //# sourceMappingURL=transaction.js.map