@mks2508/bundlp 0.1.0

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 (83) hide show
  1. package/README.md +495 -0
  2. package/dist/core/extractor.d.ts +30 -0
  3. package/dist/core/extractor.d.ts.map +1 -0
  4. package/dist/http/client.d.ts +50 -0
  5. package/dist/http/client.d.ts.map +1 -0
  6. package/dist/http/retry.d.ts +22 -0
  7. package/dist/http/retry.d.ts.map +1 -0
  8. package/dist/index.d.ts +20 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +19021 -0
  11. package/dist/innertube/client.d.ts +62 -0
  12. package/dist/innertube/client.d.ts.map +1 -0
  13. package/dist/player/ast/analyzer.d.ts +16 -0
  14. package/dist/player/ast/analyzer.d.ts.map +1 -0
  15. package/dist/player/ast/extractor.d.ts +35 -0
  16. package/dist/player/ast/extractor.d.ts.map +1 -0
  17. package/dist/player/ast/matchers.d.ts +40 -0
  18. package/dist/player/ast/matchers.d.ts.map +1 -0
  19. package/dist/player/cache.d.ts +60 -0
  20. package/dist/player/cache.d.ts.map +1 -0
  21. package/dist/player/player.d.ts +49 -0
  22. package/dist/player/player.d.ts.map +1 -0
  23. package/dist/po-token/botguard/challenge.d.ts +22 -0
  24. package/dist/po-token/botguard/challenge.d.ts.map +1 -0
  25. package/dist/po-token/botguard/client.d.ts +25 -0
  26. package/dist/po-token/botguard/client.d.ts.map +1 -0
  27. package/dist/po-token/cache/token-cache.d.ts +24 -0
  28. package/dist/po-token/cache/token-cache.d.ts.map +1 -0
  29. package/dist/po-token/index.d.ts +14 -0
  30. package/dist/po-token/index.d.ts.map +1 -0
  31. package/dist/po-token/manager.d.ts +34 -0
  32. package/dist/po-token/manager.d.ts.map +1 -0
  33. package/dist/po-token/minter/web-minter.d.ts +20 -0
  34. package/dist/po-token/minter/web-minter.d.ts.map +1 -0
  35. package/dist/po-token/policies.d.ts +18 -0
  36. package/dist/po-token/policies.d.ts.map +1 -0
  37. package/dist/po-token/providers/local.provider.d.ts +26 -0
  38. package/dist/po-token/providers/local.provider.d.ts.map +1 -0
  39. package/dist/po-token/providers/provider.interface.d.ts +15 -0
  40. package/dist/po-token/providers/provider.interface.d.ts.map +1 -0
  41. package/dist/po-token/types.d.ts +160 -0
  42. package/dist/po-token/types.d.ts.map +1 -0
  43. package/dist/result/index.d.ts +6 -0
  44. package/dist/result/index.d.ts.map +1 -0
  45. package/dist/result/result.types.d.ts +14 -0
  46. package/dist/result/result.types.d.ts.map +1 -0
  47. package/dist/result/result.utils.d.ts +32 -0
  48. package/dist/result/result.utils.d.ts.map +1 -0
  49. package/dist/streaming/dash/parser.d.ts +37 -0
  50. package/dist/streaming/dash/parser.d.ts.map +1 -0
  51. package/dist/streaming/dash/segments.d.ts +58 -0
  52. package/dist/streaming/dash/segments.d.ts.map +1 -0
  53. package/dist/streaming/decipher.d.ts +24 -0
  54. package/dist/streaming/decipher.d.ts.map +1 -0
  55. package/dist/streaming/drm.d.ts +26 -0
  56. package/dist/streaming/drm.d.ts.map +1 -0
  57. package/dist/streaming/formats.d.ts +20 -0
  58. package/dist/streaming/formats.d.ts.map +1 -0
  59. package/dist/streaming/hls/parser.d.ts +10 -0
  60. package/dist/streaming/hls/parser.d.ts.map +1 -0
  61. package/dist/streaming/hls/segments.d.ts +37 -0
  62. package/dist/streaming/hls/segments.d.ts.map +1 -0
  63. package/dist/streaming/processor.d.ts +20 -0
  64. package/dist/streaming/processor.d.ts.map +1 -0
  65. package/dist/types/error.types.d.ts +12 -0
  66. package/dist/types/error.types.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +8 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/innertube.types.d.ts +155 -0
  70. package/dist/types/innertube.types.d.ts.map +1 -0
  71. package/dist/types/player.types.d.ts +30 -0
  72. package/dist/types/player.types.d.ts.map +1 -0
  73. package/dist/types/video.types.d.ts +112 -0
  74. package/dist/types/video.types.d.ts.map +1 -0
  75. package/dist/utils/constants.d.ts +129 -0
  76. package/dist/utils/constants.d.ts.map +1 -0
  77. package/dist/utils/m3u8.d.ts +31 -0
  78. package/dist/utils/m3u8.d.ts.map +1 -0
  79. package/dist/utils/xml.d.ts +41 -0
  80. package/dist/utils/xml.d.ts.map +1 -0
  81. package/dist/validation/schemas.d.ts +290 -0
  82. package/dist/validation/schemas.d.ts.map +1 -0
  83. package/package.json +72 -0
@@ -0,0 +1,155 @@
1
+ /**
2
+ * InnerTube API Types
3
+ */
4
+ export type ClientName = 'WEB' | 'WEB_REMIX' | 'WEB_EMBEDDED_PLAYER' | 'WEB_KIDS' | 'ANDROID' | 'ANDROID_MUSIC' | 'iOS' | 'TVHTML5' | 'MWEB';
5
+ export interface ClientConfig {
6
+ name: ClientName;
7
+ version: string;
8
+ clientId: string;
9
+ apiKey?: string;
10
+ userAgent: string;
11
+ platform?: string;
12
+ sdkVersion?: number;
13
+ deviceModel?: string;
14
+ osName?: string;
15
+ osVersion?: string;
16
+ }
17
+ export interface InnerTubeContext {
18
+ client: {
19
+ clientName: string;
20
+ clientVersion: string;
21
+ hl?: string;
22
+ gl?: string;
23
+ visitorData?: string;
24
+ userAgent?: string;
25
+ platform?: string;
26
+ clientFormFactor?: string;
27
+ clientScreen?: string;
28
+ androidSdkVersion?: number;
29
+ deviceModel?: string;
30
+ osName?: string;
31
+ osVersion?: string;
32
+ };
33
+ user?: {
34
+ lockedSafetyMode: boolean;
35
+ };
36
+ request?: {
37
+ useSsl: boolean;
38
+ internalExperimentFlags?: unknown[];
39
+ };
40
+ thirdParty?: {
41
+ embedUrl: string;
42
+ };
43
+ }
44
+ export interface InnerTubePayload {
45
+ context: InnerTubeContext;
46
+ videoId: string;
47
+ playbackContext?: {
48
+ contentPlaybackContext: {
49
+ signatureTimestamp?: number;
50
+ html5Preference?: string;
51
+ };
52
+ };
53
+ contentCheckOk?: boolean;
54
+ racyCheckOk?: boolean;
55
+ serviceIntegrityDimensions?: {
56
+ poToken?: string;
57
+ };
58
+ }
59
+ export interface PlayerResponse {
60
+ playabilityStatus: PlayabilityStatus;
61
+ videoDetails?: VideoDetails;
62
+ streamingData?: StreamingData;
63
+ captions?: CaptionsData;
64
+ microformat?: MicroformatData;
65
+ storyboards?: StoryboardData;
66
+ }
67
+ export interface PlayabilityStatus {
68
+ status: 'OK' | 'UNPLAYABLE' | 'LOGIN_REQUIRED' | 'AGE_CHECK_REQUIRED' | 'ERROR';
69
+ reason?: string;
70
+ playableInEmbed?: boolean;
71
+ liveStreamability?: unknown;
72
+ }
73
+ export interface VideoDetails {
74
+ videoId: string;
75
+ title: string;
76
+ lengthSeconds: string;
77
+ channelId: string;
78
+ shortDescription: string;
79
+ thumbnail: {
80
+ thumbnails: Array<{
81
+ url: string;
82
+ width: number;
83
+ height: number;
84
+ }>;
85
+ };
86
+ viewCount: string;
87
+ author: string;
88
+ isLiveContent: boolean;
89
+ isPrivate: boolean;
90
+ keywords?: string[];
91
+ }
92
+ export interface StreamingData {
93
+ expiresInSeconds: string;
94
+ formats?: RawFormat[];
95
+ adaptiveFormats?: RawFormat[];
96
+ hlsManifestUrl?: string;
97
+ dashManifestUrl?: string;
98
+ }
99
+ export interface RawFormat {
100
+ itag: number;
101
+ url?: string;
102
+ signatureCipher?: string;
103
+ cipher?: string;
104
+ mimeType: string;
105
+ bitrate: number;
106
+ width?: number;
107
+ height?: number;
108
+ fps?: number;
109
+ qualityLabel?: string;
110
+ quality: string;
111
+ audioQuality?: string;
112
+ audioSampleRate?: string;
113
+ audioChannels?: number;
114
+ contentLength?: string;
115
+ approxDurationMs?: string;
116
+ initRange?: {
117
+ start: string;
118
+ end: string;
119
+ };
120
+ indexRange?: {
121
+ start: string;
122
+ end: string;
123
+ };
124
+ lastModified?: string;
125
+ drmFamilies?: string[];
126
+ }
127
+ export interface CaptionsData {
128
+ playerCaptionsTracklistRenderer?: {
129
+ captionTracks?: CaptionTrack[];
130
+ };
131
+ }
132
+ export interface CaptionTrack {
133
+ baseUrl: string;
134
+ languageCode: string;
135
+ name: {
136
+ simpleText: string;
137
+ };
138
+ kind?: string;
139
+ isTranslatable?: boolean;
140
+ }
141
+ export interface MicroformatData {
142
+ playerMicroformatRenderer?: {
143
+ uploadDate?: string;
144
+ publishDate?: string;
145
+ category?: string;
146
+ isFamilySafe?: boolean;
147
+ lengthSeconds?: string;
148
+ };
149
+ }
150
+ export interface StoryboardData {
151
+ playerStoryboardSpecRenderer?: {
152
+ spec?: string;
153
+ };
154
+ }
155
+ //# sourceMappingURL=innertube.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"innertube.types.d.ts","sourceRoot":"","sources":["../../src/types/innertube.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Player Types - Cipher extraction
3
+ */
4
+ export interface PlayerInfo {
5
+ playerId: string;
6
+ playerUrl: string;
7
+ signatureTimestamp: number;
8
+ sigFunction: CipherFunction;
9
+ nFunction: CipherFunction;
10
+ cachedAt: number;
11
+ }
12
+ export type CipherFunction = (input: string) => string;
13
+ export interface SignatureCipher {
14
+ signature: string;
15
+ signatureParam: string;
16
+ url: string;
17
+ }
18
+ export interface ExtractedFunctions {
19
+ sigFunctionCode: string;
20
+ nFunctionCode: string;
21
+ signatureTimestamp: number;
22
+ helperCode: string;
23
+ }
24
+ export interface PlayerCache {
25
+ get(playerId: string): PlayerInfo | null;
26
+ set(playerId: string, player: PlayerInfo): void;
27
+ has(playerId: string): boolean;
28
+ clear(): void;
29
+ }
30
+ //# sourceMappingURL=player.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player.types.d.ts","sourceRoot":"","sources":["../../src/types/player.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAChD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Video Types for bundlp
3
+ */
4
+ export interface VideoInfo {
5
+ id: string;
6
+ title: string;
7
+ description: string;
8
+ duration: number;
9
+ uploadDate?: string;
10
+ channel: ChannelInfo;
11
+ viewCount: number;
12
+ likeCount?: number;
13
+ thumbnails: Thumbnail[];
14
+ formats: FormatCollection;
15
+ subtitles: Map<string, Subtitle[]>;
16
+ chapters?: Chapter[];
17
+ isLive: boolean;
18
+ isPrivate: boolean;
19
+ }
20
+ export interface ChannelInfo {
21
+ id: string;
22
+ name: string;
23
+ url: string;
24
+ }
25
+ export interface Thumbnail {
26
+ url: string;
27
+ width: number;
28
+ height: number;
29
+ }
30
+ export interface FormatCollection {
31
+ combined: Format[];
32
+ video: Format[];
33
+ audio: Format[];
34
+ hls?: HlsInfo;
35
+ dash?: DashInfo;
36
+ }
37
+ export interface Format {
38
+ itag: number;
39
+ url: string;
40
+ mimeType: string;
41
+ codecs: string[];
42
+ bitrate?: number;
43
+ width?: number;
44
+ height?: number;
45
+ fps?: number;
46
+ qualityLabel?: string;
47
+ quality?: string;
48
+ audioQuality?: string;
49
+ audioSampleRate?: number;
50
+ audioChannels?: number;
51
+ contentLength?: number;
52
+ initRange?: {
53
+ start: string;
54
+ end: string;
55
+ };
56
+ indexRange?: {
57
+ start: string;
58
+ end: string;
59
+ };
60
+ approxDurationMs?: number;
61
+ targetDurationSec?: number;
62
+ hasDrm: boolean;
63
+ isAdaptive: boolean;
64
+ }
65
+ export interface AudioFormat extends Format {
66
+ audioSampleRate: number;
67
+ audioChannels: number;
68
+ loudnessDb?: number;
69
+ }
70
+ export interface VideoFormat extends Format {
71
+ width: number;
72
+ height: number;
73
+ fps: number;
74
+ qualityLabel: string;
75
+ }
76
+ export interface HlsInfo {
77
+ manifestUrl: string;
78
+ variants: HlsVariant[];
79
+ }
80
+ export interface HlsVariant {
81
+ url: string;
82
+ bandwidth: number;
83
+ resolution?: string;
84
+ codecs?: string;
85
+ }
86
+ export interface DashInfo {
87
+ manifestUrl: string;
88
+ duration: number;
89
+ }
90
+ export interface Subtitle {
91
+ url: string;
92
+ language: string;
93
+ languageName: string;
94
+ isAutoGenerated: boolean;
95
+ format: 'vtt' | 'ttml' | 'srv1' | 'srv2' | 'srv3' | 'json3';
96
+ }
97
+ export interface Chapter {
98
+ title: string;
99
+ startTime: number;
100
+ endTime: number;
101
+ thumbnail?: Thumbnail;
102
+ }
103
+ export interface Storyboard {
104
+ templateUrl: string;
105
+ width: number;
106
+ height: number;
107
+ count: number;
108
+ interval: number;
109
+ columns: number;
110
+ rows: number;
111
+ }
112
+ //# sourceMappingURL=video.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.types.d.ts","sourceRoot":"","sources":["../../src/types/video.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ export declare const YOUTUBE_BASE_URL = "https://www.youtube.com";
2
+ export declare const INNER_TUBE_API_URL = "https://www.youtube.com/youtubei/v1";
3
+ export declare const VIDEO_ID_LENGTH = 11;
4
+ export declare const RETRY_DEFAULTS: {
5
+ readonly RETRIES: 3;
6
+ readonly DELAY: 1000;
7
+ readonly BACKOFF: 2;
8
+ readonly MAX_DELAY: 30000;
9
+ };
10
+ export declare const INNERTUBE_CLIENTS: {
11
+ readonly WEB: {
12
+ readonly NAME: "WEB";
13
+ readonly VERSION: "2.20250222.10.00";
14
+ readonly CLIENT_ID: 1;
15
+ readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
16
+ readonly INNERTUBE_CONTEXT: {
17
+ readonly client: {
18
+ readonly clientName: "WEB";
19
+ readonly clientVersion: "2.20250222.10.00";
20
+ readonly platform: "DESKTOP";
21
+ };
22
+ };
23
+ readonly HEADERS: {
24
+ readonly 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36";
25
+ readonly 'X-YouTube-Client-Name': "1";
26
+ readonly 'X-YouTube-Client-Version': "2.20250222.10.00";
27
+ };
28
+ };
29
+ readonly ANDROID: {
30
+ readonly NAME: "ANDROID";
31
+ readonly VERSION: "19.35.36";
32
+ readonly CLIENT_ID: 3;
33
+ readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
34
+ readonly SDK_VERSION: 33;
35
+ readonly INNERTUBE_CONTEXT: {
36
+ readonly client: {
37
+ readonly clientName: "ANDROID";
38
+ readonly clientVersion: "19.35.36";
39
+ readonly androidSdkVersion: 33;
40
+ };
41
+ };
42
+ readonly HEADERS: {
43
+ readonly 'User-Agent': "com.google.android.youtube/19.35.36(Linux; U; Android 13; en_US; SM-S908E Build/TP1A.220624.014) gzip";
44
+ readonly 'X-YouTube-Client-Name': "3";
45
+ readonly 'X-YouTube-Client-Version': "19.35.36";
46
+ };
47
+ };
48
+ readonly TV: {
49
+ readonly NAME: "TVHTML5";
50
+ readonly VERSION: "7.20250219.14.00";
51
+ readonly CLIENT_ID: 7;
52
+ readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
53
+ readonly INNERTUBE_CONTEXT: {
54
+ readonly client: {
55
+ readonly clientName: "TVHTML5";
56
+ readonly clientVersion: "7.20250219.14.00";
57
+ readonly clientScreen: "WATCH";
58
+ readonly platform: "TV";
59
+ };
60
+ };
61
+ readonly HEADERS: {
62
+ readonly 'User-Agent': "Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version";
63
+ readonly 'X-YouTube-Client-Name': "7";
64
+ readonly 'X-YouTube-Client-Version': "7.20250219.14.00";
65
+ };
66
+ };
67
+ readonly IOS: {
68
+ readonly NAME: "iOS";
69
+ readonly VERSION: "20.11.6";
70
+ readonly CLIENT_ID: 5;
71
+ readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
72
+ readonly INNERTUBE_CONTEXT: {
73
+ readonly client: {
74
+ readonly clientName: "iOS";
75
+ readonly clientVersion: "20.11.6";
76
+ readonly deviceModel: "iPhone10,4";
77
+ readonly osName: "iOS";
78
+ readonly osVersion: "16.7.7.20H330";
79
+ };
80
+ };
81
+ readonly HEADERS: {
82
+ readonly 'User-Agent': "com.google.ios.youtube/20.11.6 (iPhone10,4; U; CPU iOS 16_7_7 like Mac OS X)";
83
+ readonly 'X-YouTube-Client-Name': "5";
84
+ readonly 'X-YouTube-Client-Version': "20.11.6";
85
+ };
86
+ };
87
+ readonly ANDROID_SDKLESS: {
88
+ readonly NAME: "ANDROID";
89
+ readonly VERSION: "19.35.36";
90
+ readonly CLIENT_ID: 3;
91
+ readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
92
+ readonly INNERTUBE_CONTEXT: {
93
+ readonly client: {
94
+ readonly clientName: "ANDROID";
95
+ readonly clientVersion: "19.35.36";
96
+ readonly androidSdkVersion: 33;
97
+ };
98
+ };
99
+ readonly HEADERS: {
100
+ readonly 'User-Agent': "com.google.android.youtube/19.35.36 (Linux; U; Android 13; en_US; SM-S908E)";
101
+ readonly 'X-YouTube-Client-Name': "3";
102
+ readonly 'X-YouTube-Client-Version': "19.35.36";
103
+ };
104
+ };
105
+ readonly TV_EMBEDDED: {
106
+ readonly NAME: "TVHTML5_SIMPLY_EMBEDDED_PLAYER";
107
+ readonly VERSION: "2.0";
108
+ readonly CLIENT_ID: 85;
109
+ readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
110
+ readonly INNERTUBE_CONTEXT: {
111
+ readonly client: {
112
+ readonly clientName: "TVHTML5_SIMPLY_EMBEDDED_PLAYER";
113
+ readonly clientVersion: "2.0";
114
+ readonly clientScreen: "EMBED";
115
+ readonly platform: "TV";
116
+ };
117
+ readonly thirdParty: {
118
+ readonly embedUrl: "https://www.youtube.com/";
119
+ };
120
+ };
121
+ readonly HEADERS: {
122
+ readonly 'User-Agent': "Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version";
123
+ readonly 'X-YouTube-Client-Name': "85";
124
+ readonly 'X-YouTube-Client-Version': "2.0";
125
+ };
126
+ };
127
+ };
128
+ export type ClientName = keyof typeof INNERTUBE_CLIENTS;
129
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAC1D,eAAO,MAAM,kBAAkB,wCAAoC,CAAC;AACpE,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwHpB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,iBAAiB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface HlsPlaylist {
2
+ type: 'master' | 'media';
3
+ version: number;
4
+ variants?: HlsVariant[];
5
+ segments?: HlsSegment[];
6
+ targetDuration?: number;
7
+ }
8
+ export interface HlsVariant {
9
+ url: string;
10
+ bandwidth: number;
11
+ resolution?: string;
12
+ codecs?: string;
13
+ frameRate?: number;
14
+ }
15
+ export interface HlsSegment {
16
+ url: string;
17
+ duration: number;
18
+ byteRange?: {
19
+ start: number;
20
+ length: number;
21
+ };
22
+ }
23
+ import { type Result } from '../result';
24
+ import { type BundlpError } from '../types/error.types';
25
+ /**
26
+ * Parses an M3U8 playlist.
27
+ * @param content - M3U8 file content
28
+ * @returns Result containing parsed playlist or error
29
+ */
30
+ export declare function parseM3u8(content: string): Result<HlsPlaylist, BundlpError>;
31
+ //# sourceMappingURL=m3u8.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"m3u8.d.ts","sourceRoot":"","sources":["../../src/utils/m3u8.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAgC3E"}
@@ -0,0 +1,41 @@
1
+ export interface XmlNode {
2
+ type: 'element' | 'text';
3
+ name?: string;
4
+ attributes?: Record<string, string>;
5
+ children?: XmlNode[];
6
+ text?: string;
7
+ }
8
+ /**
9
+ * Parses XML string into a simple node tree.
10
+ * @param xml - XML string to parse
11
+ * @returns Root XML node
12
+ */
13
+ export declare function parseXml(xml: string): XmlNode;
14
+ /**
15
+ * Finds all nodes matching a tag name.
16
+ * @param node - Root node to search
17
+ * @param tagName - Tag name to match
18
+ * @returns Array of matching nodes
19
+ */
20
+ export declare function findAll(node: XmlNode, tagName: string): XmlNode[];
21
+ /**
22
+ * Finds the first node matching a tag name.
23
+ * @param node - Root node to search
24
+ * @param tagName - Tag name to match
25
+ * @returns First matching node or undefined
26
+ */
27
+ export declare function findFirst(node: XmlNode, tagName: string): XmlNode | undefined;
28
+ /**
29
+ * Gets attribute value from a node.
30
+ * @param node - XML node
31
+ * @param attrName - Attribute name
32
+ * @returns Attribute value or undefined
33
+ */
34
+ export declare function getAttribute(node: XmlNode, attrName: string): string | undefined;
35
+ /**
36
+ * Gets text content from a node.
37
+ * @param node - XML node
38
+ * @returns Text content or empty string
39
+ */
40
+ export declare function getTextContent(node: XmlNode): string;
41
+ //# sourceMappingURL=xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../src/utils/xml.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA6C7C;AAmBD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAcjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAYpD"}