ts-mls
Version:
[](https://github.com/LukaJCB/ts-mls/actions/workflows/ci.yml) [](https://badge.fury.io/js/ts-mls) [ => typeof t === "number" ? encodeUint16(t) : encodeDefaultExtensionType(t);
export const decodeExtensionType = orDecoder(decodeDefaultExtensionType, decodeUint16);
export const encodeExtension = contramapEncoders([encodeExtensionType, encodeVarLenData], (e) => [e.extensionType, e.extensionData]);
export const decodeExtension = mapDecoders([decodeExtensionType, decodeVarLenData], (extensionType, extensionData) => ({ extensionType, extensionData }));
export function extensionEqual(a, b) {
return a.extensionType === b.extensionType && constantTimeEqual(a.extensionData, b.extensionData);
}
export function extensionsEqual(a, b) {
if (a.length !== b.length)
return false;
return a.every((val, i) => extensionEqual(val, b[i]));
}
export function extensionsSupportedByCapabilities(requiredExtensions, capabilities) {
return requiredExtensions
.filter((ex) => !isDefaultExtension(ex.extensionType))
.every((ex) => capabilities.extensions.includes(extensionTypeToNumber(ex.extensionType)));
}
function isDefaultExtension(t) {
return typeof t !== "number";
}
export function extensionTypeToNumber(t) {
return typeof t === "number" ? t : defaultExtensionTypes[t];
}
//# sourceMappingURL=extension.js.map