recker 1.0.19 → 1.0.20-next.595cc59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/cli/index.d.ts +0 -1
  2. package/dist/cli/index.js +495 -2
  3. package/dist/cli/tui/shell.js +1 -1
  4. package/dist/core/client.d.ts +2 -0
  5. package/dist/core/client.d.ts.map +1 -1
  6. package/dist/core/client.js +6 -7
  7. package/dist/plugins/cache.js +1 -1
  8. package/dist/plugins/hls.d.ts +90 -17
  9. package/dist/plugins/hls.d.ts.map +1 -1
  10. package/dist/plugins/hls.js +343 -173
  11. package/dist/plugins/retry.js +2 -2
  12. package/dist/testing/index.d.ts +16 -0
  13. package/dist/testing/index.d.ts.map +1 -1
  14. package/dist/testing/index.js +8 -0
  15. package/dist/testing/mock-dns-server.d.ts +70 -0
  16. package/dist/testing/mock-dns-server.d.ts.map +1 -0
  17. package/dist/testing/mock-dns-server.js +269 -0
  18. package/dist/testing/mock-ftp-server.d.ts +90 -0
  19. package/dist/testing/mock-ftp-server.d.ts.map +1 -0
  20. package/dist/testing/mock-ftp-server.js +562 -0
  21. package/dist/testing/mock-hls-server.d.ts +81 -0
  22. package/dist/testing/mock-hls-server.d.ts.map +1 -0
  23. package/dist/testing/mock-hls-server.js +381 -0
  24. package/dist/testing/mock-http-server.d.ts +100 -0
  25. package/dist/testing/mock-http-server.d.ts.map +1 -0
  26. package/dist/testing/mock-http-server.js +298 -0
  27. package/dist/testing/mock-sse-server.d.ts +77 -0
  28. package/dist/testing/mock-sse-server.d.ts.map +1 -0
  29. package/dist/testing/mock-sse-server.js +291 -0
  30. package/dist/testing/mock-telnet-server.d.ts +60 -0
  31. package/dist/testing/mock-telnet-server.d.ts.map +1 -0
  32. package/dist/testing/mock-telnet-server.js +273 -0
  33. package/dist/testing/mock-websocket-server.d.ts +78 -0
  34. package/dist/testing/mock-websocket-server.d.ts.map +1 -0
  35. package/dist/testing/mock-websocket-server.js +316 -0
  36. package/dist/testing/mock-whois-server.d.ts +57 -0
  37. package/dist/testing/mock-whois-server.d.ts.map +1 -0
  38. package/dist/testing/mock-whois-server.js +234 -0
  39. package/dist/transport/undici.d.ts +1 -1
  40. package/dist/transport/undici.d.ts.map +1 -1
  41. package/dist/transport/undici.js +11 -5
  42. package/dist/utils/dns-toolkit.js +1 -1
  43. package/dist/utils/dns.js +2 -2
  44. package/dist/utils/optional-require.js +1 -1
  45. package/dist/webrtc/index.js +1 -1
  46. package/package.json +3 -1
@@ -1,33 +1,106 @@
1
- import { Client } from '../core/client.js';
2
- export interface Variant {
1
+ import type { Client } from '../core/client.js';
2
+ import { type WriteStream } from 'node:fs';
3
+ import { Writable } from 'node:stream';
4
+ export interface HlsVariant {
3
5
  url: string;
4
6
  bandwidth?: number;
5
7
  resolution?: string;
8
+ codecs?: string;
9
+ name?: string;
6
10
  }
7
- export interface Segment {
11
+ export interface HlsSegment {
8
12
  url: string;
9
13
  duration: number;
10
14
  sequence: number;
11
- key?: KeyInfo;
15
+ key?: HlsKeyInfo;
16
+ discontinuity?: boolean;
17
+ programDateTime?: Date;
12
18
  }
13
- export interface KeyInfo {
14
- method: string;
19
+ export interface HlsKeyInfo {
20
+ method: 'NONE' | 'AES-128' | 'SAMPLE-AES';
15
21
  uri?: string;
16
22
  iv?: string;
17
23
  }
18
- export interface HlsHooks {
19
- onManifest?: (manifest: string, url: string) => string | void;
20
- onVariantSelected?: (variants: Variant[], defaultSelected: Variant) => Variant | void;
21
- onSegment?: (segment: Segment) => Segment | void | null;
22
- onKey?: (key: KeyInfo) => KeyInfo | void;
24
+ export interface HlsPlaylist {
25
+ segments: HlsSegment[];
26
+ targetDuration: number;
27
+ mediaSequence: number;
28
+ endList: boolean;
29
+ playlistType?: 'VOD' | 'EVENT';
30
+ discontinuitySequence: number;
23
31
  }
24
- export interface HlsOptions extends HlsHooks {
32
+ export interface HlsMasterPlaylist {
33
+ variants: HlsVariant[];
34
+ isMaster: true;
35
+ }
36
+ export interface SegmentData {
37
+ sequence: number;
38
+ duration: number;
39
+ data: Uint8Array;
40
+ url: string;
41
+ downloadedAt: Date;
42
+ }
43
+ export interface HlsProgress {
44
+ downloadedSegments: number;
45
+ totalSegments?: number;
46
+ downloadedBytes: number;
47
+ currentSegment: number;
48
+ isLive: boolean;
49
+ elapsed: number;
50
+ }
51
+ export interface HlsOptions {
52
+ mode?: 'merge' | 'chunks';
53
+ format?: 'ts' | 'mp4' | 'mkv';
54
+ live?: boolean | {
55
+ duration: number;
56
+ };
57
+ quality?: 'highest' | 'lowest' | {
58
+ bandwidth?: number;
59
+ resolution?: string;
60
+ };
25
61
  concurrency?: number;
26
- merge?: boolean;
27
- live?: boolean;
28
- duration?: number;
29
- onInfo?: (message: string) => void;
62
+ onSegment?: (segment: SegmentData) => void | Promise<void>;
63
+ onProgress?: (progress: HlsProgress) => void;
30
64
  onError?: (error: Error) => void;
65
+ headers?: Record<string, string>;
66
+ }
67
+ type DownloadDest = string | ((segment: HlsSegment) => string);
68
+ export declare class HlsPromise implements Promise<void> {
69
+ private client;
70
+ private manifestUrl;
71
+ private options;
72
+ private seenSequences;
73
+ private downloadedBytes;
74
+ private downloadedSegments;
75
+ private startTime;
76
+ private aborted;
77
+ private abortController;
78
+ constructor(client: Client, manifestUrl: string, options?: HlsOptions);
79
+ get [Symbol.toStringTag](): string;
80
+ then<TResult1 = void, TResult2 = never>(onfulfilled?: ((value: void) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
81
+ catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<void | TResult>;
82
+ finally(onfinally?: (() => void) | null): Promise<void>;
83
+ cancel(): void;
84
+ download(dest: DownloadDest): Promise<void>;
85
+ stream(): AsyncGenerator<SegmentData>;
86
+ pipe(writable: Writable | WriteStream): Promise<void>;
87
+ info(): Promise<{
88
+ master?: HlsMasterPlaylist;
89
+ playlist?: HlsPlaylist;
90
+ selectedVariant?: HlsVariant;
91
+ isLive: boolean;
92
+ totalDuration?: number;
93
+ }>;
94
+ private resolveMediaPlaylist;
95
+ private fetchMediaPlaylist;
96
+ private downloadSegment;
97
+ private downloadMerged;
98
+ private downloadChunks;
99
+ private isLiveMode;
100
+ private getMaxDuration;
101
+ private emitProgress;
102
+ private sleep;
31
103
  }
32
- export declare function downloadHls(client: Client, manifestUrl: string, outputPath: string, options?: HlsOptions): Promise<void>;
104
+ export declare function hls(client: Client, manifestUrl: string, options?: HlsOptions): HlsPromise;
105
+ export type { HlsVariant as Variant, HlsSegment as Segment, HlsKeyInfo as KeyInfo, };
33
106
  //# sourceMappingURL=hls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hls.d.ts","sourceRoot":"","sources":["../../src/plugins/hls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAK3C,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IAEvB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAE9D,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,CAAC;IAEtF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;IAExD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAmHD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,UAAe,iBA+JzB"}
1
+ {"version":3,"file":"hls.d.ts","sourceRoot":"","sources":["../../src/plugins/hls.ts"],"names":[],"mappings":"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"}