UNPKG

ts-mls

Version:

[![CI](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml/badge.svg)](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml) [![npm version](https://badge.fury.io/js/ts-mls.svg)](https://badge.fury.io/js/ts-mls) [![Coverage Status](https://co

31 lines 1.7 kB
import { decodeUint8, encodeUint8 } from "./codec/number.js"; import { flatMapDecoder, mapDecoder, mapDecoderOption } from "./codec/tlsDecoder.js"; import { contramapEncoder, contramapEncoders } from "./codec/tlsEncoder.js"; import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js"; import { decodeProposal, encodeProposal } from "./proposal.js"; import { enumNumberToKey } from "./util/enumHelpers.js"; const proposalOrRefTypes = { proposal: 1, reference: 2, }; export const encodeProposalOrRefType = contramapEncoder(encodeUint8, (t) => proposalOrRefTypes[t]); export const decodeProposalOrRefType = mapDecoderOption(decodeUint8, enumNumberToKey(proposalOrRefTypes)); export const encodeProposalOrRefProposal = contramapEncoders([encodeProposalOrRefType, encodeProposal], (p) => [p.proposalOrRefType, p.proposal]); export const encodeProposalOrRefProposalRef = contramapEncoders([encodeProposalOrRefType, encodeVarLenData], (r) => [r.proposalOrRefType, r.reference]); export const encodeProposalOrRef = (input) => { switch (input.proposalOrRefType) { case "proposal": return encodeProposalOrRefProposal(input); case "reference": return encodeProposalOrRefProposalRef(input); } }; export const decodeProposalOrRef = flatMapDecoder(decodeProposalOrRefType, (proposalOrRefType) => { switch (proposalOrRefType) { case "proposal": return mapDecoder(decodeProposal, (proposal) => ({ proposalOrRefType, proposal })); case "reference": return mapDecoder(decodeVarLenData, (reference) => ({ proposalOrRefType, reference })); } }); //# sourceMappingURL=proposalOrRefType.js.map