m3u8parse
Version:
Structural parsing of Apple HTTP Live Streaming .m3u8 format
45 lines (44 loc) • 1.26 kB
JavaScript
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;