@nervosnetwork/ckb-sdk-utils
Version:
Utils module of @nervosnetwork/ckb-sdk-core
136 lines • 6.39 kB
JavaScript
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
;