UNPKG

m3u8parse

Version:

Structural parsing of Apple HTTP Live Streaming .m3u8 format

45 lines (44 loc) 1.26 kB
import { Attr } from './attr-types.js'; const serialize = { [Attr.BigInt](value) { return BigInt(value).toString(10); }, [Attr.HexInt](value) { return '0x' + BigInt(value).toString(16); }, [Attr.Int](value) { return serialize[Attr.BigInt](value); }, [Attr.HexNo](value) { return serialize[Attr.HexInt](value); }, [Attr.Float](value) { return value.toString(); }, [Attr.SignedFloat](value) { return value.toString(); }, [Attr.String](value) { return `"${value}"`; }, [Attr.Enum](value) { return value.toString(); }, [Attr.List](value) { try { return serialize[Attr.String]([...value].join(',')); } catch (err) { return '"<INVALID INPUT>"'; } }, [Attr.Resolution](value) { // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain return '' + Math.floor(value?.width) + 'x' + Math.floor(value?.height); }, [Attr.Byterange](value) { const base = `"${Math.floor(value?.length ?? 0)}`; return base + (value?.offset === undefined ? '"' : `@${Math.floor(value.offset)}"`); } }; export default serialize;