UNPKG

m3u8parse

Version:

Structural parsing of Apple HTTP Live Streaming .m3u8 format

26 lines (25 loc) 1.52 kB
import { Attr, Byterange, Resolution } from './attr-types.js'; export { Attr as AttrType }; export type { Byterange, Resolution }; type Enum<T extends string> = T | `${T}`; type StringKeys<T> = Extract<keyof T, string>; type TypeMapping<T extends Attr> = T extends Enum<Attr.BigInt | Attr.HexInt> ? bigint : T extends Enum<Attr.Int | Attr.HexNo | Attr.Float | Attr.SignedFloat> ? number : T extends Enum<Attr.Enum | Attr.String> ? string : T extends Enum<Attr.Resolution> ? Resolution : T extends Enum<Attr.Byterange> ? Byterange : T extends Enum<Attr.List> ? string[] : never; export type TAnyAttr = { [key: string]: Attr; }; export declare class AttrList<E extends TAnyAttr = TAnyAttr> extends Map<StringKeys<E>, string> { static readonly Types: typeof Attr; constructor(attrs?: ImmutableAttrList<E> | string | { readonly [key in StringKeys<E>]?: string; } | Map<string, unknown> | ReadonlyArray<ReadonlyArray<string>>); get(attr: StringKeys<E>): string | undefined; get<K extends StringKeys<E>, T extends E[K]>(attr: K, type: Enum<T>): TypeMapping<T> | undefined; set(attr: StringKeys<E>, value: undefined | null): this; set<K extends StringKeys<E>, T extends Attr>(attr: K, value: TypeMapping<T>, type?: Enum<E[K]>): this; has(attr: StringKeys<E>): boolean; delete(attr: StringKeys<E>): boolean; toString(): string; toJSON(): object; } export interface ImmutableAttrList<T extends TAnyAttr = TAnyAttr> extends Pick<AttrList<T>, keyof ReadonlyMap<any, any>> { }