UNPKG

@ckb-lumos/codec

Version:

Make your own molecule binding in JavaScript(TypeScript)

56 lines (53 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.byteArrayOf = byteArrayOf; exports.byteOf = byteOf; exports.byteVecOf = byteVecOf; var _utils = require("../utils"); var _bytes = require("../bytes"); var _base = require("../base"); var _number = require("../number"); /** * a helper function to create custom codec of `array SomeType [byte; n]` * @param codec */ function byteArrayOf(codec) { const byteLength = codec.byteLength; return (0, _base.createFixedBytesCodec)({ byteLength, pack: packable => codec.pack(packable), unpack: buf => codec.unpack(buf) }); } /** * a helper function to create custom codec of `byte` * @param codec */ function byteOf(codec) { return byteArrayOf({ ...codec, byteLength: 1 }); } /** * a helper function to create custom codec of `vector Bytes <byte>` * @param codec */ function byteVecOf(codec) { return (0, _base.createBytesCodec)({ pack(unpacked) { const payload = codec.pack(unpacked); const header = _number.Uint32LE.pack(payload.byteLength); return (0, _bytes.concat)(header, payload); }, unpack(packed) { (0, _utils.assertMinBufferLength)(packed, 4); const header = _number.Uint32LE.unpack(packed.slice(0, 4)); (0, _utils.assertBufferLength)(packed.slice(4), header); return codec.unpack(packed.slice(4)); } }); } //# sourceMappingURL=helper.js.map