m3u8parse
Version:
Structural parsing of Apple HTTP Live Streaming .m3u8 format
26 lines (25 loc) • 1.52 kB
TypeScript
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>> {
}