@scarlett-player/core 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.
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +300 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +407 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2271 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +272 -0
- package/dist/logger.js.map +1 -0
- package/dist/plugin-api.d.ts +147 -0
- package/dist/plugin-api.d.ts.map +1 -0
- package/dist/plugin-api.js +160 -0
- package/dist/plugin-api.js.map +1 -0
- package/dist/plugin-manager.d.ts +52 -0
- package/dist/plugin-manager.d.ts.map +1 -0
- package/dist/plugin-manager.js +224 -0
- package/dist/plugin-manager.js.map +1 -0
- package/dist/scarlett-player.d.ts +404 -0
- package/dist/scarlett-player.d.ts.map +1 -0
- package/dist/scarlett-player.js +769 -0
- package/dist/scarlett-player.js.map +1 -0
- package/dist/state/computed.d.ts.map +1 -0
- package/dist/state/computed.js +134 -0
- package/dist/state/computed.js.map +1 -0
- package/dist/state/effect.d.ts.map +1 -0
- package/dist/state/effect.js +77 -0
- package/dist/state/effect.js.map +1 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +9 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/signal.d.ts.map +1 -0
- package/dist/state/signal.js +126 -0
- package/dist/state/signal.js.map +1 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +334 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/types/events.d.ts +323 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +7 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +141 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +8 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/state.d.ts +232 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +8 -0
- package/dist/types/state.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StateManager - Centralized reactive state management for Scarlett Player.
|
|
3
|
+
*
|
|
4
|
+
* Manages all player state using reactive signals. Each state property
|
|
5
|
+
* is a Signal that can be observed for changes.
|
|
6
|
+
*
|
|
7
|
+
* Target size: ~1-2KB (excluding type definitions)
|
|
8
|
+
*/
|
|
9
|
+
import { signal } from './signal';
|
|
10
|
+
/**
|
|
11
|
+
* Default initial values for all state properties.
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_STATE = {
|
|
14
|
+
// Core Playback State
|
|
15
|
+
playbackState: 'idle',
|
|
16
|
+
playing: false,
|
|
17
|
+
paused: true,
|
|
18
|
+
ended: false,
|
|
19
|
+
buffering: false,
|
|
20
|
+
waiting: false,
|
|
21
|
+
seeking: false,
|
|
22
|
+
// Time & Duration
|
|
23
|
+
currentTime: 0,
|
|
24
|
+
duration: NaN,
|
|
25
|
+
buffered: null,
|
|
26
|
+
bufferedAmount: 0,
|
|
27
|
+
// Media Info
|
|
28
|
+
mediaType: 'unknown',
|
|
29
|
+
source: null,
|
|
30
|
+
title: '',
|
|
31
|
+
poster: '',
|
|
32
|
+
// Volume & Audio
|
|
33
|
+
volume: 1.0,
|
|
34
|
+
muted: false,
|
|
35
|
+
// Playback Controls
|
|
36
|
+
playbackRate: 1.0,
|
|
37
|
+
fullscreen: false,
|
|
38
|
+
pip: false,
|
|
39
|
+
controlsVisible: true,
|
|
40
|
+
// Quality & Tracks
|
|
41
|
+
qualities: [],
|
|
42
|
+
currentQuality: null,
|
|
43
|
+
audioTracks: [],
|
|
44
|
+
currentAudioTrack: null,
|
|
45
|
+
textTracks: [],
|
|
46
|
+
currentTextTrack: null,
|
|
47
|
+
// Live/DVR State (TSP features)
|
|
48
|
+
live: false,
|
|
49
|
+
liveEdge: true,
|
|
50
|
+
seekableRange: null,
|
|
51
|
+
liveLatency: 0,
|
|
52
|
+
lowLatencyMode: false,
|
|
53
|
+
// Chapters (TSP features)
|
|
54
|
+
chapters: [],
|
|
55
|
+
currentChapter: null,
|
|
56
|
+
// Error State
|
|
57
|
+
error: null,
|
|
58
|
+
// Network & Performance
|
|
59
|
+
bandwidth: 0,
|
|
60
|
+
autoplay: false,
|
|
61
|
+
loop: false,
|
|
62
|
+
// Casting State
|
|
63
|
+
airplayAvailable: false,
|
|
64
|
+
airplayActive: false,
|
|
65
|
+
chromecastAvailable: false,
|
|
66
|
+
chromecastActive: false,
|
|
67
|
+
// UI State
|
|
68
|
+
interacting: false,
|
|
69
|
+
hovering: false,
|
|
70
|
+
focused: false,
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* StateManager manages all player state using reactive signals.
|
|
74
|
+
*
|
|
75
|
+
* Each state property is a Signal that automatically tracks dependencies
|
|
76
|
+
* and notifies subscribers when changed.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* const state = new StateManager();
|
|
81
|
+
*
|
|
82
|
+
* // Get a signal
|
|
83
|
+
* const playingSignal = state.get('playing');
|
|
84
|
+
* playingSignal.get(); // false
|
|
85
|
+
*
|
|
86
|
+
* // Set a value
|
|
87
|
+
* state.set('playing', true);
|
|
88
|
+
*
|
|
89
|
+
* // Subscribe to changes
|
|
90
|
+
* state.subscribe((event) => {
|
|
91
|
+
* console.log(`${event.key} changed to`, event.value);
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* // Batch updates
|
|
95
|
+
* state.update({
|
|
96
|
+
* playing: true,
|
|
97
|
+
* currentTime: 10,
|
|
98
|
+
* volume: 0.8,
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export class StateManager {
|
|
103
|
+
/**
|
|
104
|
+
* Create a new StateManager with default initial state.
|
|
105
|
+
*
|
|
106
|
+
* @param initialState - Optional partial initial state (merged with defaults)
|
|
107
|
+
*/
|
|
108
|
+
constructor(initialState) {
|
|
109
|
+
/** Internal map of state signals */
|
|
110
|
+
this.signals = new Map();
|
|
111
|
+
/** Global state change subscribers */
|
|
112
|
+
this.changeSubscribers = new Set();
|
|
113
|
+
this.initializeSignals(initialState);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Initialize all state signals with default or provided values.
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
initializeSignals(overrides) {
|
|
120
|
+
const initialState = { ...DEFAULT_STATE, ...overrides };
|
|
121
|
+
// Create signals for all state properties
|
|
122
|
+
for (const [key, value] of Object.entries(initialState)) {
|
|
123
|
+
const stateKey = key;
|
|
124
|
+
const stateSignal = signal(value);
|
|
125
|
+
// Subscribe to each signal to emit global change events
|
|
126
|
+
stateSignal.subscribe(() => {
|
|
127
|
+
this.notifyChangeSubscribers(stateKey);
|
|
128
|
+
});
|
|
129
|
+
this.signals.set(stateKey, stateSignal);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the signal for a state property.
|
|
134
|
+
*
|
|
135
|
+
* @param key - State property key
|
|
136
|
+
* @returns Signal for the property
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const playingSignal = state.get('playing');
|
|
141
|
+
* playingSignal.get(); // false
|
|
142
|
+
* playingSignal.set(true);
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
get(key) {
|
|
146
|
+
const stateSignal = this.signals.get(key);
|
|
147
|
+
if (!stateSignal) {
|
|
148
|
+
throw new Error(`[StateManager] Unknown state key: ${key}`);
|
|
149
|
+
}
|
|
150
|
+
return stateSignal;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get the current value of a state property (convenience method).
|
|
154
|
+
*
|
|
155
|
+
* @param key - State property key
|
|
156
|
+
* @returns Current value
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* state.getValue('playing'); // false
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
getValue(key) {
|
|
164
|
+
return this.get(key).get();
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Set the value of a state property.
|
|
168
|
+
*
|
|
169
|
+
* @param key - State property key
|
|
170
|
+
* @param value - New value
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* state.set('playing', true);
|
|
175
|
+
* state.set('currentTime', 10.5);
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
set(key, value) {
|
|
179
|
+
this.get(key).set(value);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Update multiple state properties at once (batch update).
|
|
183
|
+
*
|
|
184
|
+
* More efficient than calling set() multiple times.
|
|
185
|
+
*
|
|
186
|
+
* @param updates - Partial state object with updates
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```ts
|
|
190
|
+
* state.update({
|
|
191
|
+
* playing: true,
|
|
192
|
+
* currentTime: 0,
|
|
193
|
+
* volume: 1.0,
|
|
194
|
+
* });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
update(updates) {
|
|
198
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
199
|
+
const stateKey = key;
|
|
200
|
+
if (this.signals.has(stateKey)) {
|
|
201
|
+
this.set(stateKey, value);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Subscribe to changes on a specific state property.
|
|
207
|
+
*
|
|
208
|
+
* @param key - State property key
|
|
209
|
+
* @param callback - Callback function receiving new value
|
|
210
|
+
* @returns Unsubscribe function
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* const unsub = state.subscribe('playing', (value) => {
|
|
215
|
+
* console.log('Playing:', value);
|
|
216
|
+
* });
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
subscribeToKey(key, callback) {
|
|
220
|
+
const stateSignal = this.get(key);
|
|
221
|
+
return stateSignal.subscribe(() => {
|
|
222
|
+
callback(stateSignal.get());
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Subscribe to all state changes.
|
|
227
|
+
*
|
|
228
|
+
* Receives a StateChangeEvent for every state property change.
|
|
229
|
+
*
|
|
230
|
+
* @param callback - Callback function receiving change events
|
|
231
|
+
* @returns Unsubscribe function
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```ts
|
|
235
|
+
* const unsub = state.subscribe((event) => {
|
|
236
|
+
* console.log(`${event.key} changed:`, event.value);
|
|
237
|
+
* });
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
subscribe(callback) {
|
|
241
|
+
this.changeSubscribers.add(callback);
|
|
242
|
+
return () => this.changeSubscribers.delete(callback);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Notify all global change subscribers.
|
|
246
|
+
* @private
|
|
247
|
+
*/
|
|
248
|
+
notifyChangeSubscribers(key) {
|
|
249
|
+
const stateSignal = this.get(key);
|
|
250
|
+
const value = stateSignal.get();
|
|
251
|
+
const event = {
|
|
252
|
+
key,
|
|
253
|
+
value,
|
|
254
|
+
previousValue: value, // Note: We don't track previous values in this simple impl
|
|
255
|
+
};
|
|
256
|
+
this.changeSubscribers.forEach(subscriber => {
|
|
257
|
+
try {
|
|
258
|
+
subscriber(event);
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
console.error('[StateManager] Error in change subscriber:', error);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Reset all state to default values.
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```ts
|
|
270
|
+
* state.reset();
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
reset() {
|
|
274
|
+
this.update(DEFAULT_STATE);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Reset a specific state property to its default value.
|
|
278
|
+
*
|
|
279
|
+
* @param key - State property key
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* ```ts
|
|
283
|
+
* state.resetKey('playing');
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
resetKey(key) {
|
|
287
|
+
const defaultValue = DEFAULT_STATE[key];
|
|
288
|
+
this.set(key, defaultValue);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Get a snapshot of all current state values.
|
|
292
|
+
*
|
|
293
|
+
* @returns Frozen snapshot of current state
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* ```ts
|
|
297
|
+
* const snapshot = state.snapshot();
|
|
298
|
+
* console.log(snapshot.playing, snapshot.currentTime);
|
|
299
|
+
* ```
|
|
300
|
+
*/
|
|
301
|
+
snapshot() {
|
|
302
|
+
const snapshot = {};
|
|
303
|
+
for (const [key, stateSignal] of this.signals) {
|
|
304
|
+
snapshot[key] = stateSignal.get();
|
|
305
|
+
}
|
|
306
|
+
return Object.freeze(snapshot);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Get the number of subscribers for a state property (for debugging).
|
|
310
|
+
*
|
|
311
|
+
* @param key - State property key
|
|
312
|
+
* @returns Number of subscribers
|
|
313
|
+
* @internal
|
|
314
|
+
*/
|
|
315
|
+
getSubscriberCount(key) {
|
|
316
|
+
return this.signals.get(key)?.getSubscriberCount() ?? 0;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Destroy the state manager and cleanup all signals.
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```ts
|
|
323
|
+
* state.destroy();
|
|
324
|
+
* ```
|
|
325
|
+
*/
|
|
326
|
+
destroy() {
|
|
327
|
+
// Destroy all signals
|
|
328
|
+
this.signals.forEach(stateSignal => stateSignal.destroy());
|
|
329
|
+
this.signals.clear();
|
|
330
|
+
// Clear change subscribers
|
|
331
|
+
this.changeSubscribers.clear();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=state-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/state/state-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system type definitions for Scarlett Player.
|
|
3
|
+
*
|
|
4
|
+
* Type-safe event bus for plugin communication and player events.
|
|
5
|
+
*/
|
|
6
|
+
import type { StateChangeEvent } from './state';
|
|
7
|
+
import type { Chapter } from './state';
|
|
8
|
+
import type { PlayerError } from '../error-handler';
|
|
9
|
+
/**
|
|
10
|
+
* Core player events.
|
|
11
|
+
*/
|
|
12
|
+
export interface PlayerEventMap {
|
|
13
|
+
/** Player is ready (initialized) */
|
|
14
|
+
'player:ready': void;
|
|
15
|
+
/** Player is being destroyed */
|
|
16
|
+
'player:destroy': void;
|
|
17
|
+
/** Playback started */
|
|
18
|
+
'playback:play': void;
|
|
19
|
+
/** Playback paused */
|
|
20
|
+
'playback:pause': void;
|
|
21
|
+
/** Playback ended */
|
|
22
|
+
'playback:ended': void;
|
|
23
|
+
/** Playback time updated */
|
|
24
|
+
'playback:timeupdate': {
|
|
25
|
+
currentTime: number;
|
|
26
|
+
};
|
|
27
|
+
/** Seeking started */
|
|
28
|
+
'playback:seeking': {
|
|
29
|
+
time: number;
|
|
30
|
+
};
|
|
31
|
+
/** Seeking completed */
|
|
32
|
+
'playback:seeked': {
|
|
33
|
+
time: number;
|
|
34
|
+
};
|
|
35
|
+
/** Playback rate changed */
|
|
36
|
+
'playback:ratechange': {
|
|
37
|
+
rate: number;
|
|
38
|
+
};
|
|
39
|
+
/** Media source loaded */
|
|
40
|
+
'media:loaded': {
|
|
41
|
+
src: string;
|
|
42
|
+
type: string;
|
|
43
|
+
};
|
|
44
|
+
/** Media metadata loaded (duration, dimensions, etc.) */
|
|
45
|
+
'media:loadedmetadata': {
|
|
46
|
+
duration: number;
|
|
47
|
+
};
|
|
48
|
+
/** Media can play (buffered enough) */
|
|
49
|
+
'media:canplay': void;
|
|
50
|
+
/** Media can play through without buffering */
|
|
51
|
+
'media:canplaythrough': void;
|
|
52
|
+
/** Media is buffering/loading */
|
|
53
|
+
'media:waiting': void;
|
|
54
|
+
/** Media progress (buffering) */
|
|
55
|
+
'media:progress': {
|
|
56
|
+
buffered: number;
|
|
57
|
+
};
|
|
58
|
+
/** Media error occurred */
|
|
59
|
+
'media:error': {
|
|
60
|
+
error: Error;
|
|
61
|
+
};
|
|
62
|
+
/** Volume changed */
|
|
63
|
+
'volume:change': {
|
|
64
|
+
volume: number;
|
|
65
|
+
muted: boolean;
|
|
66
|
+
};
|
|
67
|
+
/** Mute toggled */
|
|
68
|
+
'volume:mute': {
|
|
69
|
+
muted: boolean;
|
|
70
|
+
};
|
|
71
|
+
/** Quality level changed */
|
|
72
|
+
'quality:change': {
|
|
73
|
+
quality: string;
|
|
74
|
+
auto: boolean;
|
|
75
|
+
};
|
|
76
|
+
/** Available qualities updated */
|
|
77
|
+
'quality:levels': {
|
|
78
|
+
levels: Array<{
|
|
79
|
+
id: string;
|
|
80
|
+
label: string;
|
|
81
|
+
}>;
|
|
82
|
+
};
|
|
83
|
+
/** User selected a quality level */
|
|
84
|
+
'quality:select': {
|
|
85
|
+
quality: string;
|
|
86
|
+
auto?: boolean;
|
|
87
|
+
};
|
|
88
|
+
/** Text track (subtitle/caption) changed */
|
|
89
|
+
'track:text': {
|
|
90
|
+
trackId: string | null;
|
|
91
|
+
};
|
|
92
|
+
/** Audio track changed */
|
|
93
|
+
'track:audio': {
|
|
94
|
+
trackId: string | null;
|
|
95
|
+
};
|
|
96
|
+
/** Entered fullscreen */
|
|
97
|
+
'fullscreen:enter': void;
|
|
98
|
+
/** Exited fullscreen */
|
|
99
|
+
'fullscreen:exit': void;
|
|
100
|
+
/** Fullscreen changed */
|
|
101
|
+
'fullscreen:change': {
|
|
102
|
+
fullscreen: boolean;
|
|
103
|
+
};
|
|
104
|
+
/** Entered PiP */
|
|
105
|
+
'pip:enter': void;
|
|
106
|
+
/** Exited PiP */
|
|
107
|
+
'pip:exit': void;
|
|
108
|
+
/** PiP changed */
|
|
109
|
+
'pip:change': {
|
|
110
|
+
pip: boolean;
|
|
111
|
+
};
|
|
112
|
+
/** AirPlay devices available */
|
|
113
|
+
'airplay:available': void;
|
|
114
|
+
/** AirPlay devices not available */
|
|
115
|
+
'airplay:unavailable': void;
|
|
116
|
+
/** AirPlay connected */
|
|
117
|
+
'airplay:connected': void;
|
|
118
|
+
/** AirPlay disconnected */
|
|
119
|
+
'airplay:disconnected': void;
|
|
120
|
+
/** Chromecast available */
|
|
121
|
+
'chromecast:available': void;
|
|
122
|
+
/** Chromecast unavailable */
|
|
123
|
+
'chromecast:unavailable': void;
|
|
124
|
+
/** Chromecast connected */
|
|
125
|
+
'chromecast:connected': {
|
|
126
|
+
deviceName: string;
|
|
127
|
+
};
|
|
128
|
+
/** Chromecast disconnected */
|
|
129
|
+
'chromecast:disconnected': void;
|
|
130
|
+
/** Chromecast error */
|
|
131
|
+
'chromecast:error': {
|
|
132
|
+
error: Error;
|
|
133
|
+
};
|
|
134
|
+
/** Live edge state changed */
|
|
135
|
+
'live:edgechange': {
|
|
136
|
+
atEdge: boolean;
|
|
137
|
+
};
|
|
138
|
+
/** Live latency updated */
|
|
139
|
+
'live:latency': {
|
|
140
|
+
latency: number;
|
|
141
|
+
};
|
|
142
|
+
/** Seekable range updated (DVR window) */
|
|
143
|
+
'live:seekablerange': {
|
|
144
|
+
start: number;
|
|
145
|
+
end: number;
|
|
146
|
+
};
|
|
147
|
+
/** Low-latency mode toggled */
|
|
148
|
+
'live:lowlatency': {
|
|
149
|
+
enabled: boolean;
|
|
150
|
+
};
|
|
151
|
+
/** Chapter changed (based on playback time) */
|
|
152
|
+
'chapter:change': {
|
|
153
|
+
chapter: Chapter | null;
|
|
154
|
+
previous: Chapter | null;
|
|
155
|
+
};
|
|
156
|
+
/** Chapters loaded/updated */
|
|
157
|
+
'chapter:loaded': {
|
|
158
|
+
chapters: Chapter[];
|
|
159
|
+
};
|
|
160
|
+
/** User clicked/selected a chapter */
|
|
161
|
+
'chapter:select': {
|
|
162
|
+
chapter: Chapter;
|
|
163
|
+
};
|
|
164
|
+
/** Controls shown */
|
|
165
|
+
'controls:show': void;
|
|
166
|
+
/** Controls hidden */
|
|
167
|
+
'controls:hide': void;
|
|
168
|
+
/** Controls visibility changed */
|
|
169
|
+
'controls:change': {
|
|
170
|
+
visible: boolean;
|
|
171
|
+
};
|
|
172
|
+
/** User started interacting */
|
|
173
|
+
'ui:interact:start': void;
|
|
174
|
+
/** User stopped interacting */
|
|
175
|
+
'ui:interact:end': void;
|
|
176
|
+
/** Mouse entered player */
|
|
177
|
+
'ui:mouseenter': void;
|
|
178
|
+
/** Mouse left player */
|
|
179
|
+
'ui:mouseleave': void;
|
|
180
|
+
/** Player gained focus */
|
|
181
|
+
'ui:focus': void;
|
|
182
|
+
/** Player lost focus */
|
|
183
|
+
'ui:blur': void;
|
|
184
|
+
/** Any state changed */
|
|
185
|
+
'state:change': StateChangeEvent;
|
|
186
|
+
/** Plugin registered */
|
|
187
|
+
'plugin:registered': {
|
|
188
|
+
name: string;
|
|
189
|
+
type: string;
|
|
190
|
+
};
|
|
191
|
+
/** Plugin activated */
|
|
192
|
+
'plugin:active': {
|
|
193
|
+
name: string;
|
|
194
|
+
};
|
|
195
|
+
/** Plugin destroyed */
|
|
196
|
+
'plugin:destroyed': {
|
|
197
|
+
name: string;
|
|
198
|
+
};
|
|
199
|
+
/** Plugin error */
|
|
200
|
+
'plugin:error': {
|
|
201
|
+
name: string;
|
|
202
|
+
error: Error;
|
|
203
|
+
};
|
|
204
|
+
/** General error occurred */
|
|
205
|
+
'error': PlayerError;
|
|
206
|
+
/** Network error */
|
|
207
|
+
'error:network': {
|
|
208
|
+
error: Error;
|
|
209
|
+
};
|
|
210
|
+
/** Media error (decode, format, etc.) */
|
|
211
|
+
'error:media': {
|
|
212
|
+
error: Error;
|
|
213
|
+
};
|
|
214
|
+
/** Plugin error */
|
|
215
|
+
'error:plugin': {
|
|
216
|
+
error: Error;
|
|
217
|
+
plugin: string;
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Event names (type-safe).
|
|
222
|
+
*/
|
|
223
|
+
export type EventName = keyof PlayerEventMap;
|
|
224
|
+
/**
|
|
225
|
+
* Event payload for a specific event name.
|
|
226
|
+
*/
|
|
227
|
+
export type EventPayload<T extends EventName> = PlayerEventMap[T];
|
|
228
|
+
/**
|
|
229
|
+
* Event handler function signature.
|
|
230
|
+
*/
|
|
231
|
+
export type EventHandler<T extends EventName = EventName> = (payload: EventPayload<T>) => void | Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Event interceptor function signature.
|
|
234
|
+
* Can modify payload or cancel event propagation.
|
|
235
|
+
*/
|
|
236
|
+
export type EventInterceptor<T extends EventName = EventName> = (payload: EventPayload<T>) => EventPayload<T> | null | Promise<EventPayload<T> | null>;
|
|
237
|
+
/**
|
|
238
|
+
* Event subscription interface.
|
|
239
|
+
*/
|
|
240
|
+
export interface EventSubscription {
|
|
241
|
+
/** Unsubscribe from event */
|
|
242
|
+
unsubscribe(): void;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Event bus interface.
|
|
246
|
+
*/
|
|
247
|
+
export interface EventBus {
|
|
248
|
+
/**
|
|
249
|
+
* Subscribe to an event.
|
|
250
|
+
*
|
|
251
|
+
* @param event - Event name
|
|
252
|
+
* @param handler - Event handler function
|
|
253
|
+
* @returns Unsubscribe function
|
|
254
|
+
*/
|
|
255
|
+
on<T extends EventName>(event: T, handler: EventHandler<T>): () => void;
|
|
256
|
+
/**
|
|
257
|
+
* Subscribe to an event once (auto-unsubscribe after first call).
|
|
258
|
+
*
|
|
259
|
+
* @param event - Event name
|
|
260
|
+
* @param handler - Event handler function
|
|
261
|
+
* @returns Unsubscribe function
|
|
262
|
+
*/
|
|
263
|
+
once<T extends EventName>(event: T, handler: EventHandler<T>): () => void;
|
|
264
|
+
/**
|
|
265
|
+
* Unsubscribe from an event.
|
|
266
|
+
*
|
|
267
|
+
* @param event - Event name
|
|
268
|
+
* @param handler - Event handler function to remove
|
|
269
|
+
*/
|
|
270
|
+
off<T extends EventName>(event: T, handler: EventHandler<T>): void;
|
|
271
|
+
/**
|
|
272
|
+
* Emit an event.
|
|
273
|
+
*
|
|
274
|
+
* @param event - Event name
|
|
275
|
+
* @param payload - Event payload
|
|
276
|
+
*/
|
|
277
|
+
emit<T extends EventName>(event: T, payload: EventPayload<T>): void;
|
|
278
|
+
/**
|
|
279
|
+
* Emit an event asynchronously (next tick).
|
|
280
|
+
*
|
|
281
|
+
* @param event - Event name
|
|
282
|
+
* @param payload - Event payload
|
|
283
|
+
*/
|
|
284
|
+
emitAsync<T extends EventName>(event: T, payload: EventPayload<T>): Promise<void>;
|
|
285
|
+
/**
|
|
286
|
+
* Add an event interceptor.
|
|
287
|
+
* Interceptors run before handlers and can modify/cancel events.
|
|
288
|
+
*
|
|
289
|
+
* @param event - Event name
|
|
290
|
+
* @param interceptor - Interceptor function
|
|
291
|
+
* @returns Remove interceptor function
|
|
292
|
+
*/
|
|
293
|
+
intercept<T extends EventName>(event: T, interceptor: EventInterceptor<T>): () => void;
|
|
294
|
+
/**
|
|
295
|
+
* Remove all listeners for an event (or all events if no event specified).
|
|
296
|
+
*
|
|
297
|
+
* @param event - Optional event name
|
|
298
|
+
*/
|
|
299
|
+
removeAllListeners(event?: EventName): void;
|
|
300
|
+
/**
|
|
301
|
+
* Get listener count for an event.
|
|
302
|
+
*
|
|
303
|
+
* @param event - Event name
|
|
304
|
+
* @returns Number of listeners
|
|
305
|
+
*/
|
|
306
|
+
listenerCount(event: EventName): number;
|
|
307
|
+
/**
|
|
308
|
+
* Destroy event bus and cleanup all listeners.
|
|
309
|
+
*/
|
|
310
|
+
destroy(): void;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Event emitter options.
|
|
314
|
+
*/
|
|
315
|
+
export interface EventEmitterOptions {
|
|
316
|
+
/** Maximum listeners per event (default: 100) */
|
|
317
|
+
maxListeners?: number;
|
|
318
|
+
/** Enable async event emission (default: false) */
|
|
319
|
+
async?: boolean;
|
|
320
|
+
/** Enable event interceptors (default: true) */
|
|
321
|
+
interceptors?: boolean;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scarlett Player Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Central export for all TypeScript types and interfaces.
|
|
5
|
+
*/
|
|
6
|
+
export type { Plugin, PluginType, PluginState, PluginConfig, PluginFactory, PluginDescriptor, IPluginAPI, } from './plugin';
|
|
7
|
+
export type { StateStore, StateKey, StateValue, StateUpdate, StateChangeEvent, IStateManager, PlaybackState, MediaType, MediaSource, Chapter, TextTrack, AudioTrack, QualityLevel, SeekableRange, } from './state';
|
|
8
|
+
export type { PlayerEventMap, EventName, EventPayload, EventHandler, EventInterceptor, EventSubscription, EventBus, EventEmitterOptions, } from './events';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|