@ckb-lumos/codec
Version:
Make your own molecule binding in JavaScript(TypeScript)
64 lines (60 loc) • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WitnessArgs = exports.BytesVec = exports.BytesOpt = exports.Bytes = exports.Byte32Vec = exports.Byte32 = void 0;
exports.WitnessArgsOf = WitnessArgsOf;
exports.createFixedHexBytesCodec = createFixedHexBytesCodec;
var _base = require("./base");
var _bytes = require("./bytes");
var _molecule = require("./molecule");
function createFixedHexBytesCodec(byteLength) {
return (0, _base.createFixedBytesCodec)({
byteLength,
pack: hex => (0, _bytes.bytify)(hex),
unpack: buf => (0, _bytes.hexify)(buf)
});
}
/**
* placeholder codec, generally used as a placeholder
* ```
* // for example, when some BytesOpt is not used, it will be filled with this codec
* // option BytesOpt (Bytes);
* const UnusedBytesOpt = UnknownOpt
* ```
*/
// export const UnusedOpt = option(Unknown);
// vector Bytes <byte>
const Bytes = exports.Bytes = (0, _molecule.byteVecOf)({
pack: _bytes.bytify,
unpack: _bytes.hexify
});
const BytesOpt = exports.BytesOpt = (0, _molecule.option)(Bytes);
const BytesVec = exports.BytesVec = (0, _molecule.vector)(Bytes);
const Byte32 = exports.Byte32 = createFixedHexBytesCodec(32);
const Byte32Vec = exports.Byte32Vec = (0, _molecule.vector)(Byte32);
function WitnessArgsOf(payload) {
return (0, _molecule.table)({
lock: (0, _molecule.option)((0, _molecule.byteVecOf)(payload.lock)),
input_type: (0, _molecule.option)((0, _molecule.byteVecOf)(payload.input_type)),
output_type: (0, _molecule.option)((0, _molecule.byteVecOf)(payload.output_type))
}, ["lock", "input_type", "output_type"]);
}
const HexifyCodec = (0, _base.createBytesCodec)({
pack: _bytes.bytify,
unpack: _bytes.hexify
});
/**
*
* @example
* ```ts
* // secp256k1 lock witness
* WitnessArgs.pack({ lock: '0x' + '00'.repeat(65) })
* ```
*/
const WitnessArgs = exports.WitnessArgs = WitnessArgsOf({
lock: HexifyCodec,
input_type: HexifyCodec,
output_type: HexifyCodec
});
//# sourceMappingURL=blockchain.js.map