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

45 lines 2.86 kB
import { flatMapDecoder, mapDecoder, mapDecoders } from "./codec/tlsDecoder.js"; import { contramapEncoders } from "./codec/tlsEncoder.js"; import { decodeGroupInfo, encodeGroupInfo } from "./groupInfo.js"; import { decodeKeyPackage, encodeKeyPackage } from "./keyPackage.js"; import { decodePrivateMessage, encodePrivateMessage } from "./privateMessage.js"; import { decodeProtocolVersion, encodeProtocolVersion } from "./protocolVersion.js"; import { decodePublicMessage, encodePublicMessage } from "./publicMessage.js"; import { decodeWelcome, encodeWelcome } from "./welcome.js"; import { decodeWireformat, encodeWireformat } from "./wireformat.js"; export const encodeMlsMessageContent = (mc) => { switch (mc.wireformat) { case "mls_public_message": return encodeMlsPublicMessage(mc); case "mls_welcome": return encodeMlsWelcome(mc); case "mls_private_message": return encodeMlsPrivateMessage(mc); case "mls_group_info": return encodeMlsGroupInfo(mc); case "mls_key_package": return encodeMlsKeyPackage(mc); } }; export const encodeMlsPublicMessage = contramapEncoders([encodeWireformat, encodePublicMessage], (msg) => [msg.wireformat, msg.publicMessage]); export const encodeMlsWelcome = contramapEncoders([encodeWireformat, encodeWelcome], (wm) => [wm.wireformat, wm.welcome]); export const encodeMlsPrivateMessage = contramapEncoders([encodeWireformat, encodePrivateMessage], (pm) => [pm.wireformat, pm.privateMessage]); export const encodeMlsGroupInfo = contramapEncoders([encodeWireformat, encodeGroupInfo], (gi) => [gi.wireformat, gi.groupInfo]); export const encodeMlsKeyPackage = contramapEncoders([encodeWireformat, encodeKeyPackage], (kp) => [kp.wireformat, kp.keyPackage]); export const decodeMlsMessageContent = flatMapDecoder(decodeWireformat, (wireformat) => { switch (wireformat) { case "mls_public_message": return mapDecoder(decodePublicMessage, (publicMessage) => ({ wireformat, publicMessage })); case "mls_welcome": return mapDecoder(decodeWelcome, (welcome) => ({ wireformat, welcome })); case "mls_private_message": return mapDecoder(decodePrivateMessage, (privateMessage) => ({ wireformat, privateMessage })); case "mls_group_info": return mapDecoder(decodeGroupInfo, (groupInfo) => ({ wireformat, groupInfo })); case "mls_key_package": return mapDecoder(decodeKeyPackage, (keyPackage) => ({ wireformat, keyPackage })); } }); export const encodeMlsMessage = contramapEncoders([encodeProtocolVersion, encodeMlsMessageContent], (w) => [w.version, w]); export const decodeMlsMessage = mapDecoders([decodeProtocolVersion, decodeMlsMessageContent], (version, mc) => ({ ...mc, version })); //# sourceMappingURL=message.js.map