UNPKG

m3u8parse

Version:

Structural parsing of Apple HTTP Live Streaming .m3u8 format

158 lines (157 loc) 4.29 kB
export interface Resolution { width: number; height: number; } export interface Byterange { offset?: number | undefined; length: number; } export declare enum Attr { BigInt = "bigint", Int = "int", HexInt = "hexint", HexNo = "hexno", Enum = "enum", List = "list", String = "string", Float = "float", SignedFloat = "signed-float", Resolution = "resolution", Byterange = "byterange" } export type Start = { 'time-offset': Attr.SignedFloat; precise?: Attr.Enum; }; export type Define = { name?: Attr.String; value?: Attr.String; import?: Attr.String; queryparam?: Attr.String; }; export type PartInf = { 'part-target': Attr.Float; }; export type ServerControl = { 'can-skip-until'?: Attr.Float; 'can-skip-dateranges'?: Attr.Float; 'hold-back'?: Attr.Float; 'part-hold-back'?: Attr.Float; 'can-block-reload'?: Attr.Enum; }; export type Key = { method: Attr.Enum; uri?: Attr.String; iv?: Attr.HexInt; keyformat?: Attr.String; keyformatversions?: Attr.String; }; export type Map = { uri: Attr.String; byterange?: Attr.Byterange | Attr.Enum; }; export type Part = { uri: Attr.String; duration: Attr.Float; independent?: Attr.Enum; byterange?: Attr.Byterange | Attr.Enum; gap?: Attr.Enum; }; type SchemaValidate<T extends { [key: string]: Attr; }> = { [Prop in keyof T]: Prop extends `x-${string}` ? T[Prop] : never; }; export type Daterange<Schema extends SchemaValidate<{}> = {}> = { id: Attr.String; class?: Attr.String; 'start-date': Attr.String; cue?: Attr.List; 'end-date'?: Attr.String; duration?: Attr.Float; 'planned-duration'?: Attr.Float; 'scte35-cmd'?: Attr.HexInt | Attr.HexNo; 'scte-in'?: Attr.HexInt | Attr.HexNo; 'scte-out'?: Attr.HexInt | Attr.HexNo; 'end-on-next'?: Attr.Enum; } & Schema; export declare namespace Daterange { type Interstitial = { 'x-asset-uri'?: Attr.String; 'x-asset-list'?: Attr.String; 'x-resume-offset'?: Attr.SignedFloat; 'x-playout-limit'?: Attr.Float; 'x-snap'?: Attr.List; 'x-restrict'?: Attr.List; 'x-content-may-vary'?: Attr.String; 'x-timeline-occupies'?: Attr.String; 'x-timeline-style'?: Attr.String; }; } export type Skip = { 'skipped-segments': Attr.BigInt | Attr.Int; 'recently-removed-dateranges'?: Attr.String; }; export type PreloadHint = { type: Attr.Enum; uri: Attr.String; 'byterange-start'?: Attr.BigInt | Attr.Int; 'byterange-length'?: Attr.BigInt | Attr.Int; }; export type RenditionReport = { uri: Attr.String; 'last-msn': Attr.BigInt | Attr.Int; 'last-part': Attr.BigInt | Attr.Int; }; export type Media = { type: Attr.Enum; uri?: Attr.String; 'group-id': Attr.String; language?: Attr.String; 'assoc-language'?: Attr.String; name: Attr.String; 'stable-rendition-id'?: Attr.String; default?: Attr.Enum; autoselect?: Attr.Enum; forced?: Attr.Enum; 'instream-id'?: Attr.String; 'bit-depth'?: Attr.BigInt | Attr.Int; 'sample-rate'?: Attr.BigInt | Attr.Int; characteristics?: Attr.String; channels?: Attr.String; }; export type StreamInf = { bandwidth: Attr.Int | Attr.BigInt; 'average-bandwidth'?: Attr.Int | Attr.BigInt; score?: Attr.Float; codecs?: Attr.String; 'supplemental-codecs'?: Attr.String; resolution?: Attr.Resolution; 'frame-rate'?: Attr.Float; 'hdcp-level'?: Attr.Enum; 'alloved-cpc'?: Attr.String; 'video-range'?: Attr.Enum; 'req-video-layout'?: Attr.String; 'stable-variant-id'?: Attr.String; audio?: Attr.String; video?: Attr.String; subtitles?: Attr.String; 'closed-captions'?: Attr.String | Attr.Enum; 'pathway-id'?: Attr.String; }; export type IFrameStreamInf = Omit<StreamInf, 'frame-rate' | 'audio' | 'subtitles' | 'closed-captions'> & { uri: Attr.String; }; export type SessionData = { 'data-id': Attr.String; value?: Attr.String; uri?: Attr.String; format?: Attr.Enum; language?: Attr.String; }; export type SessionKey = Key; export type ContentSteering = { 'server-uri': Attr.String; 'pathway-id'?: Attr.String; }; export {};