m3u8parse
Version:
Structural parsing of Apple HTTP Live Streaming .m3u8 format
32 lines (31 loc) • 1.83 kB
TypeScript
import type * as AttrT from './attr-types.js';
import { AttrList } from './attrlist.js';
import { BasePlaylist, ImmutableUriMapFunction, Immutify, IRewritableUris, UriMapFunction } from './playlist-base.js';
import { MediaPlaylist } from './playlist-media.js';
import type { Proto } from './types.js';
interface Variant {
uri: string;
info?: AttrList<AttrT.StreamInf>;
}
export type EntryType = 'variant' | 'iframe' | 'group' | 'data' | 'session-key';
export declare class MainPlaylist extends BasePlaylist implements IRewritableUris {
static cast(index: MediaPlaylist | MainPlaylist): MainPlaylist | never;
readonly master: true;
/** @see {@link https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-16#section-4.4.6.1 `EXT-X-MEDIA`} */
groups: Map<string, AttrList<AttrT.Media>[]>;
/** @see {@link https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-16#section-4.4.6.2 `EXT-X-STREAM-INF`} */
variants: Variant[];
/** @see {@link https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-16#section-4.4.6.3 `EXT-X-I-FRAME-STREAM-INF`} */
iframes: AttrList<AttrT.IFrameStreamInf>[];
/** @see {@link https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-16#section-4.4.6.4 `EXT-X-SESSION-DATA`} */
data: Map<string, AttrList<AttrT.SessionData>[]>;
/** @see {@link https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-16#section-4.4.6.5 `EXT-X-SESSION-KEY`} */
session_keys: AttrList<AttrT.SessionKey>[];
constructor(obj?: Proto<MainPlaylist | ImmutableMainPlaylist>);
rewriteUris(mapFn: UriMapFunction<EntryType>): this;
}
interface _ImmutableMain extends MainPlaylist {
rewriteUris(mapFn: ImmutableUriMapFunction<EntryType>): this;
}
export type ImmutableMainPlaylist = Immutify<_ImmutableMain>;
export {};