Skip to content

Commit ecaba94

Browse files
authored
🤖 Merge PR DefinitelyTyped#74296 feat(m3u8-parser): make Stream's methods public by @hkleungai
1 parent 747fb65 commit ecaba94

2 files changed

Lines changed: 51 additions & 7 deletions

File tree

‎types/m3u8-parser/index.d.ts‎

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1+
export type PreservedStreamEventType = "info" | "warn" | "error";
2+
13
export abstract class Stream {
2-
private listeners: Record<string, unknown>;
3-
private on(type: string, listener: () => void): void;
4-
private off(type: string, listener: () => void): void;
5-
private trigger(type: string, ...args: unknown[]): void;
6-
private dispose(): void;
7-
private pipe(destination: Stream): void;
4+
listeners: Record<string, unknown>;
5+
on(type: PreservedStreamEventType, listener: (data: { message: string }) => void): void;
6+
on(type: string, listener: (...data: unknown[]) => void): void;
7+
off(type: PreservedStreamEventType, listener: (data: { message: string }) => void): boolean;
8+
off(type: string, listener: (...data: unknown[]) => void): boolean;
9+
trigger(type: PreservedStreamEventType, listener: (data: { message: string }) => void): void;
10+
trigger(type: string, listener: (...data: unknown[]) => void): void;
11+
dispose(): void;
12+
pipe(destination: Stream): void;
813
}
914

1015
export interface RawAttributes {

‎types/m3u8-parser/m3u8-parser-tests.ts‎

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,50 @@ import { Manifest, Parser } from "m3u8-parser";
22

33
const manifest = "#EXTM3U\n#EXT-X-VERSION:3";
44

5-
var parser = new Parser();
5+
const parser = new Parser();
6+
7+
// $ExpectType void
8+
parser.on("info", (args) => {
9+
args.message; // $ExpectType string
10+
});
11+
// $ExpectType void
12+
parser.on("info", (args) => {
13+
args.message; // $ExpectType string
14+
});
15+
// $ExpectType void
16+
parser.on("info", (args) => {
17+
args.message; // $ExpectType string
18+
});
19+
// $ExpectType boolean
20+
parser.off("info", (args) => {
21+
args.message; // $ExpectType string
22+
});
23+
// $ExpectType boolean
24+
parser.off("info", (args) => {
25+
args.message; // $ExpectType string
26+
});
27+
// $ExpectType boolean
28+
parser.off("info", (args) => {
29+
args.message; // $ExpectType string
30+
});
31+
// $ExpectType void
32+
parser.trigger("info", (args) => {
33+
args.message; // $ExpectType string
34+
});
35+
// $ExpectType void
36+
parser.trigger("info", (args) => {
37+
args.message; // $ExpectType string
38+
});
39+
// $ExpectType void
40+
parser.trigger("info", (args) => {
41+
args.message; // $ExpectType string
42+
});
643

744
parser.push(manifest);
845
parser.end();
946

47+
parser.dispose();
48+
1049
const parsedManifest = parser.manifest.playlists?.[0].contentProtection?.["com.apple.fps.1_0"]?.attributes.resolution;
1150

1251
const parser2 = new Parser({

0 commit comments

Comments
 (0)