saltfish 0.1.93 → 0.1.95

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.
@@ -1,164 +1,91 @@
1
- import { VideoManager } from '../managers/VideoManager';
2
1
  import type { SaltfishEventName, EventHandler } from '../managers/EventManager';
3
2
  import type { SaltfishConfig, PlaylistOptions } from '../types';
3
+ import { PlayerInitializationService } from './services/PlayerInitializationService';
4
+ import { UserManagementService } from './services/UserManagementService';
5
+ import { PlaylistOrchestrator } from './services/PlaylistOrchestrator';
6
+ import { StateMachineActionHandler } from './services/StateMachineActionHandler';
7
+ import { ManagerOrchestrator } from './services/ManagerOrchestrator';
4
8
  /**
5
9
  * Main class for the Saltfish playlist Player
10
+ *
11
+ * Refactored to use service-oriented architecture with dependency injection
6
12
  */
7
13
  export declare class SaltfishPlayer {
8
14
  private static instance;
9
- private shadowDOMManager;
10
- videoManager: VideoManager;
11
- private cursorManager;
12
- private interactionManager;
13
- private analyticsManager;
14
- private sessionManager;
15
- private transitionManager;
16
- private triggerManager;
17
- private abTestManager;
18
- private eventManager;
19
- private playlistManager;
20
- private stepTimeoutManager;
21
- private uiManager;
22
- private storageManager;
23
- private uiUpdaterUnsubscribe;
24
- private eventUpdaterUnsubscribe;
15
+ private serviceContainer;
16
+ private playerInitializationService;
17
+ private userManagementService;
18
+ private playlistOrchestrator;
19
+ private stateMachineActionHandler;
20
+ private managerOrchestrator;
21
+ private managerFactory;
25
22
  private isInitialized;
26
- private static prevState;
27
- private lastConfig;
28
- private lastUserIdentification;
29
- private userDataLoadedPromise;
30
- private userDataLoadedResolve;
23
+ private constructor();
31
24
  /**
32
- * Creates a new Saltfish playlist Player instance
33
- * @private Constructor is private to enforce singleton pattern
25
+ * Set up dependencies between services
34
26
  */
35
- private constructor();
27
+ private setupServiceDependencies;
36
28
  /**
37
29
  * Gets the singleton instance of the Saltfish playlist Player
38
30
  */
39
31
  static getInstance(): SaltfishPlayer;
40
32
  /**
41
- * Gets the current sessionId (persistent across 30 minutes)
42
- * @returns The current sessionId
33
+ * Get session ID from SessionManager
43
34
  */
44
35
  getSessionId(): string;
45
36
  /**
46
- * Gets the current runId (unique per playlist execution)
47
- * @returns The current runId or null if no playlist is running
37
+ * Get run ID from SessionManager
48
38
  */
49
39
  getRunId(): string | null;
50
40
  /**
51
- * Initializes the Saltfish playlist Player
52
- * @param config - Configuration options
41
+ * Initialize the player with configuration
53
42
  */
54
43
  initialize(config: SaltfishConfig): Promise<void>;
55
44
  /**
56
- * Identifies the current user
57
- * @param userId - User ID
58
- * @param userData - Additional user data
45
+ * Identify a user with ID and optional data
59
46
  */
60
47
  identifyUser(userId: string, userData?: Record<string, unknown>): void;
61
48
  /**
62
- * Identifies the current user anonymously (localStorage only, no backend communication)
63
- * Automatically generates a persistent anonymous user ID stored in localStorage
64
- * @param userData - Optional additional user data
49
+ * Identify user anonymously with optional data
65
50
  */
66
51
  identifyAnonymous(userData?: Record<string, unknown>): Promise<void>;
67
52
  /**
68
- * Fetches user data from the backend
69
- * @param userId - User ID
70
- * @param userData - Additional user data
71
- */
72
- private fetchUserData;
73
- /**
74
- * Loads user data from localStorage for anonymous identification
75
- * @param userId - User ID
76
- * @param userData - Additional user data
77
- */
78
- private loadAnonymousUserData;
79
- /**
80
- * Checks for in-progress playlists and resumes them before trigger evaluation
81
- * Only resumes if the playlist was updated within the last 10 seconds
82
- * @param watchedPlaylists - User's watched playlists data
83
- * @returns Promise<boolean> - true if a playlist was resumed, false otherwise
84
- */
85
- private checkAndResumeInProgressPlaylist;
86
- /**
87
- * Gets or creates a persistent anonymous user ID
88
- * @returns A persistent anonymous user ID
89
- */
90
- private getOrCreateAnonymousUserId;
91
- /**
92
- * Starts a new playlist
93
- * @param playlistId - ID of the playlist to start
94
- * @param options - Optional playback options including position, drag behavior, and starting step
95
- * @param options.position - Position of the player on screen
96
- * @param options.allowDrag - Whether the player can be dragged
97
- * @param options.startNodeId - Optional step ID to start from instead of the manifest's default startStep
98
- *
99
- * If the player has been destroyed, it will automatically reinitialize using the last configuration
100
- * before starting the playlist.
53
+ * Start a playlist with given options
101
54
  */
102
55
  startPlaylist(playlistId: string, options?: PlaylistOptions): Promise<void>;
103
56
  /**
104
- * Registers action handlers with the state machine
105
- */
106
- private registerStateMachineActions;
107
- /**
108
- * Finds the URL of the next video in the playlist
109
- * @param currentStep - The current step being played
110
- * @returns The URL of the next video or null if no next video exists
111
- */
112
- private findNextVideoUrl;
113
- /**
114
- * Gets the appropriate video URL for a step, preferring compressedVideoUrl if available
115
- * Also checks for translations if a language is configured
116
- * @param step - The step to get the video URL for
117
- * @returns The video URL to use (translated, compressed if available, otherwise regular)
57
+ * Reset current playlist to initial state
118
58
  */
119
- private getVideoUrl;
120
- /**
121
- * Setup UI and Event updaters that subscribe to store changes
122
- */
123
- private setupUpdaters;
124
- /**
125
- * Handles store state changes
126
- */
127
- private handleStoreChanges;
128
- /**
129
- * Records an A/B test attempt when a user tries to access a playlist
130
- * This stores the assignment in the backend regardless of whether they get the playlist
131
- * @param playlistId - ID of the playlist being attempted
132
- */
133
- private recordABTestAttempt;
59
+ resetPlaylist(): void;
134
60
  /**
135
- * Destroys the Saltfish playlist Player instance
61
+ * Destroy the player and clean up all resources
136
62
  */
137
63
  destroy(): void;
138
64
  /**
139
- * Registers an event listener to be called when the given eventName is triggered
140
- * @param eventName - Name of event to listen for
141
- * @param listener - Function to call when the event is triggered
65
+ * Add event listener
142
66
  */
143
67
  on<T extends SaltfishEventName>(eventName: T, listener: EventHandler<T>): void;
144
68
  /**
145
- * Removes an event listener for the given eventName
146
- * @param eventName - Name of event to stop listening for
147
- * @param listener - Function to remove
148
- * @returns true if the listener was removed, false if it wasn't found
69
+ * Remove event listener
149
70
  */
150
71
  off<T extends SaltfishEventName>(eventName: T, listener: EventHandler<T>): boolean;
151
72
  /**
152
- * Resets the current playlist to its initial state
73
+ * Get VideoManager instance for backwards compatibility
153
74
  */
154
- resetPlaylist(): void;
75
+ get videoManager(): any;
155
76
  /**
156
- * Cleans up the current playlist state
77
+ * Get all managers for debugging/testing purposes
157
78
  */
158
- private cleanupCurrentPlaylist;
79
+ getManagers(): import("./services/ServiceInterfaces").ManagedManagers;
159
80
  /**
160
- * Cleans up playlist-specific resources while keeping trigger monitoring active
81
+ * Get services for debugging/testing purposes
161
82
  */
162
- private cleanupPlaylist;
83
+ getServices(): {
84
+ playerInitializationService: PlayerInitializationService;
85
+ userManagementService: UserManagementService;
86
+ playlistOrchestrator: PlaylistOrchestrator;
87
+ stateMachineActionHandler: StateMachineActionHandler;
88
+ managerOrchestrator: ManagerOrchestrator;
89
+ };
163
90
  }
164
91
  //# sourceMappingURL=SaltfishPlayer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SaltfishPlayer.d.ts","sourceRoot":"","sources":["../../src/core/SaltfishPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SaltfishPlayer.d.ts","sourceRoot":"","sources":["../../src/core/SaltfishPlayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAMrE;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAGtD,OAAO,CAAC,gBAAgB,CAAmB;IAG3C,OAAO,CAAC,2BAA2B,CAA8B;IACjE,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,mBAAmB,CAAsB;IAGjD,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;IAkDP;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;OAEG;WACW,WAAW,IAAI,cAAc;IAO3C;;OAEG;IACI,YAAY,IAAI,MAAM;IAK7B;;OAEG;IACI,QAAQ,IAAI,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9D;;OAEG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI7E;;OAEG;IACU,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjF;;OAEG;IACU,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxF;;OAEG;IACI,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACI,OAAO,IAAI,IAAI;IAyBtB;;OAEG;IACI,EAAE,CAAC,CAAC,SAAS,iBAAiB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrF;;OAEG;IACI,GAAG,CAAC,CAAC,SAAS,iBAAiB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAQzF;;OAEG;IACH,IAAW,YAAY,QAGtB;IAED;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,WAAW;;;;;;;CASnB"}
@@ -0,0 +1,19 @@
1
+ import type { IManagerFactory, ManagedManagers } from '../services/ServiceInterfaces';
2
+ /**
3
+ * Factory for creating and managing manager instances
4
+ */
5
+ export declare class ManagerFactory implements IManagerFactory {
6
+ /**
7
+ * Create all manager instances with proper dependencies
8
+ */
9
+ createManagers(): ManagedManagers;
10
+ /**
11
+ * Reset all managers that support reset
12
+ */
13
+ resetManagers(managers: ManagedManagers): void;
14
+ /**
15
+ * Destroy all managers
16
+ */
17
+ destroyManagers(managers: ManagedManagers): void;
18
+ }
19
+ //# sourceMappingURL=ManagerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagerFactory.d.ts","sourceRoot":"","sources":["../../../src/core/factories/ManagerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAiBtF;;GAEG;AACH,qBAAa,cAAe,YAAW,eAAe;IAEpD;;OAEG;IACI,cAAc,IAAI,eAAe;IA0DxC;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA8BrD;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;CAqBxD"}
@@ -0,0 +1,29 @@
1
+ import type { IServiceContainer } from '../services/ServiceInterfaces';
2
+ /**
3
+ * Simple dependency injection container for services
4
+ */
5
+ export declare class ServiceContainer implements IServiceContainer {
6
+ private services;
7
+ private instances;
8
+ /**
9
+ * Register a service factory
10
+ */
11
+ register<T>(key: string, factory: () => T): void;
12
+ /**
13
+ * Resolve a service instance (singleton pattern)
14
+ */
15
+ resolve<T>(key: string): T;
16
+ /**
17
+ * Check if a service is registered
18
+ */
19
+ has(key: string): boolean;
20
+ /**
21
+ * Get all registered service keys
22
+ */
23
+ getRegisteredServices(): string[];
24
+ /**
25
+ * Clean up all instances and registrations
26
+ */
27
+ cleanup(): void;
28
+ }
29
+ //# sourceMappingURL=ServiceContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../../src/core/factories/ServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,SAAS,CAA0B;IAE3C;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAKvD;;OAEG;IACI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAmBjC;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACI,qBAAqB,IAAI,MAAM,EAAE;IAIxC;;OAEG;IACI,OAAO,IAAI,IAAI;CAmBvB"}
@@ -0,0 +1,42 @@
1
+ import type { IManagerOrchestrator, ManagedManagers } from './ServiceInterfaces';
2
+ /**
3
+ * Service for handling manager coordination and lifecycle
4
+ */
5
+ export declare class ManagerOrchestrator implements IManagerOrchestrator {
6
+ private managers;
7
+ private uiUpdaterUnsubscribe;
8
+ private eventUpdaterUnsubscribe;
9
+ private static prevState;
10
+ private isInitialized;
11
+ constructor(managers: ManagedManagers);
12
+ /**
13
+ * Set initialization state
14
+ */
15
+ setInitialized(initialized: boolean): void;
16
+ /**
17
+ * Set up UI and event updaters
18
+ */
19
+ setupUpdaters(): void;
20
+ /**
21
+ * Handle store state changes
22
+ */
23
+ handleStoreChanges(): void;
24
+ /**
25
+ * Clean up current playlist state
26
+ */
27
+ cleanupCurrentPlaylist(): void;
28
+ /**
29
+ * Clean up playlist while preserving trigger monitoring
30
+ */
31
+ cleanupPlaylist(): void;
32
+ /**
33
+ * Destroy all managers and cleanup
34
+ */
35
+ destroyAll(): void;
36
+ /**
37
+ * Get all managed managers for external access
38
+ */
39
+ getManagers(): ManagedManagers;
40
+ destroy(): void;
41
+ }
42
+ //# sourceMappingURL=ManagerOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagerOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/services/ManagerOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQjF;;GAEG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAC9D,OAAO,CAAC,QAAQ,CAAkB;IAGlC,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,uBAAuB,CAA6B;IAG5D,OAAO,CAAC,MAAM,CAAC,SAAS,CAItB;IAGF,OAAO,CAAC,aAAa,CAAS;gBAElB,QAAQ,EAAE,eAAe;IAIrC;;OAEG;IACI,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAIjD;;OAEG;IACI,aAAa,IAAI,IAAI;IAuC5B;;OAEG;IACI,kBAAkB,IAAI,IAAI;IA6DjC;;OAEG;IACI,sBAAsB,IAAI,IAAI;IAwDrC;;OAEG;IACI,eAAe,IAAI,IAAI;IAqD9B;;OAEG;IACI,UAAU,IAAI,IAAI;IAyEzB;;OAEG;IACI,WAAW,IAAI,eAAe;IAI9B,OAAO,IAAI,IAAI;CAGvB"}
@@ -0,0 +1,46 @@
1
+ import type { IPlayerInitializationService, ManagedManagers } from './ServiceInterfaces';
2
+ import type { SaltfishConfig, WatchedPlaylists } from '../../types';
3
+ /**
4
+ * Service for handling player initialization logic
5
+ */
6
+ export declare class PlayerInitializationService implements IPlayerInitializationService {
7
+ private managers;
8
+ private userManagementService;
9
+ private playlistOrchestrator;
10
+ private lastConfig;
11
+ constructor(managers: ManagedManagers);
12
+ /**
13
+ * Set the user management service for dependency
14
+ */
15
+ setUserManagementService(service: any): void;
16
+ /**
17
+ * Set the playlist orchestrator for dependency
18
+ */
19
+ setPlaylistOrchestrator(orchestrator: any): void;
20
+ /**
21
+ * Get the last config for restoration
22
+ */
23
+ getLastConfig(): SaltfishConfig | null;
24
+ /**
25
+ * Initialize the player with configuration
26
+ */
27
+ initialize(config: SaltfishConfig): Promise<void>;
28
+ /**
29
+ * Fetch user data from backend
30
+ */
31
+ fetchUserData(userId: string, userData?: Record<string, unknown>): Promise<void>;
32
+ /**
33
+ * Load anonymous user data from localStorage
34
+ */
35
+ loadAnonymousUserData(userId: string, userData?: Record<string, unknown>): Promise<void>;
36
+ /**
37
+ * Check for in-progress playlists and resume them
38
+ */
39
+ checkAndResumeInProgressPlaylist(watchedPlaylists: WatchedPlaylists): Promise<boolean>;
40
+ /**
41
+ * Get or create persistent anonymous user ID
42
+ */
43
+ getOrCreateAnonymousUserId(): string;
44
+ destroy(): void;
45
+ }
46
+ //# sourceMappingURL=PlayerInitializationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerInitializationService.d.ts","sourceRoot":"","sources":["../../../src/core/services/PlayerInitializationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpE;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAC9E,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,oBAAoB,CAAM;IAGlC,OAAO,CAAC,UAAU,CAA+B;gBAErC,QAAQ,EAAE,eAAe;IAIrC;;OAEG;IACI,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAInD;;OAEG;IACI,uBAAuB,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IAIvD;;OAEG;IACI,aAAa,IAAI,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuF9D;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiG7F;;OAEG;IACU,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ErG;;OAEG;IACU,gCAAgC,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+EnG;;OAEG;IACI,0BAA0B,IAAI,MAAM;IAqBpC,OAAO,IAAI,IAAI;CAGvB"}
@@ -0,0 +1,47 @@
1
+ import type { IPlaylistOrchestrator, ManagedManagers } from './ServiceInterfaces';
2
+ import type { PlaylistOptions } from '../../types';
3
+ /**
4
+ * Service for handling playlist lifecycle and coordination
5
+ */
6
+ export declare class PlaylistOrchestrator implements IPlaylistOrchestrator {
7
+ private managers;
8
+ private userManagementService;
9
+ private managerOrchestrator;
10
+ private playerInitializationService;
11
+ private stateMachineActionHandler;
12
+ constructor(managers: ManagedManagers);
13
+ /**
14
+ * Set the user management service for dependency
15
+ */
16
+ setUserManagementService(service: any): void;
17
+ /**
18
+ * Set the manager orchestrator for dependency
19
+ */
20
+ setManagerOrchestrator(orchestrator: any): void;
21
+ /**
22
+ * Set the player initialization service for dependency
23
+ */
24
+ setPlayerInitializationService(service: any): void;
25
+ /**
26
+ * Set the state machine action handler for dependency
27
+ */
28
+ setStateMachineActionHandler(handler: any): void;
29
+ /**
30
+ * Start a playlist with given options
31
+ */
32
+ startPlaylist(playlistId: string, options?: PlaylistOptions): Promise<void>;
33
+ /**
34
+ * Reset current playlist to initial state
35
+ */
36
+ resetPlaylist(): void;
37
+ /**
38
+ * Check if the player is initialized
39
+ */
40
+ private isInitialized;
41
+ /**
42
+ * Reset managers that have reset capability
43
+ */
44
+ private resetManagers;
45
+ destroy(): void;
46
+ }
47
+ //# sourceMappingURL=PlaylistOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/services/PlaylistOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,2BAA2B,CAAM;IACzC,OAAO,CAAC,yBAAyB,CAAM;gBAE3B,QAAQ,EAAE,eAAe;IAIrC;;OAEG;IACI,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAInD;;OAEG;IACI,sBAAsB,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IAItD;;OAEG;IACI,8BAA8B,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAIzD;;OAEG;IACI,4BAA4B,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAIvD;;OAEG;IACU,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkRxF;;OAEG;IACI,aAAa,IAAI,IAAI;IAQ5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUd,OAAO,IAAI,IAAI;CAGvB"}
@@ -0,0 +1,151 @@
1
+ import type { SaltfishConfig, PlaylistOptions, WatchedPlaylists } from '../../types';
2
+ /**
3
+ * Base interface for all services
4
+ */
5
+ export interface Service {
6
+ /**
7
+ * Initialize the service with configuration
8
+ */
9
+ initialize?(config: SaltfishConfig): Promise<void>;
10
+ /**
11
+ * Cleanup service resources
12
+ */
13
+ destroy(): void;
14
+ }
15
+ /**
16
+ * Service for handling player initialization logic
17
+ */
18
+ export interface IPlayerInitializationService extends Service {
19
+ /**
20
+ * Initialize the player with configuration
21
+ */
22
+ initialize(config: SaltfishConfig): Promise<void>;
23
+ /**
24
+ * Fetch user data from backend
25
+ */
26
+ fetchUserData(userId: string, userData?: Record<string, unknown>): Promise<void>;
27
+ /**
28
+ * Load anonymous user data from localStorage
29
+ */
30
+ loadAnonymousUserData(userId: string, userData?: Record<string, unknown>): Promise<void>;
31
+ /**
32
+ * Check for in-progress playlists and resume them
33
+ */
34
+ checkAndResumeInProgressPlaylist(watchedPlaylists: WatchedPlaylists): Promise<boolean>;
35
+ /**
36
+ * Get or create persistent anonymous user ID
37
+ */
38
+ getOrCreateAnonymousUserId(): string;
39
+ }
40
+ /**
41
+ * Service for handling user identification and A/B testing
42
+ */
43
+ export interface IUserManagementService extends Service {
44
+ /**
45
+ * Identify a user with ID and optional data
46
+ */
47
+ identifyUser(userId: string, userData?: Record<string, unknown>): void;
48
+ /**
49
+ * Identify user anonymously with optional data
50
+ */
51
+ identifyAnonymous(userData?: Record<string, unknown>): Promise<void>;
52
+ /**
53
+ * Record A/B test attempt for analytics
54
+ */
55
+ recordABTestAttempt(playlistId: string): Promise<void>;
56
+ }
57
+ /**
58
+ * Service for handling playlist lifecycle and coordination
59
+ */
60
+ export interface IPlaylistOrchestrator extends Service {
61
+ /**
62
+ * Start a playlist with given options
63
+ */
64
+ startPlaylist(playlistId: string, options?: PlaylistOptions): Promise<void>;
65
+ /**
66
+ * Reset current playlist to initial state
67
+ */
68
+ resetPlaylist(): void;
69
+ }
70
+ /**
71
+ * Service for handling state machine action registration
72
+ */
73
+ export interface IStateMachineActionHandler extends Service {
74
+ /**
75
+ * Register all state machine actions with the store
76
+ */
77
+ registerStateMachineActions(): void;
78
+ /**
79
+ * Get video URL for a step (with translation support)
80
+ */
81
+ getVideoUrl(step: any): string;
82
+ /**
83
+ * Set the destroy callback for player destruction
84
+ */
85
+ setDestroyCallback(callback: () => void): void;
86
+ /**
87
+ * Find next video URL for preloading
88
+ */
89
+ findNextVideoUrl(currentStep: any): string | null;
90
+ }
91
+ /**
92
+ * Service for handling manager coordination and lifecycle
93
+ */
94
+ export interface IManagerOrchestrator extends Service {
95
+ /**
96
+ * Set up UI and event updaters
97
+ */
98
+ setupUpdaters(): void;
99
+ /**
100
+ * Handle store state changes
101
+ */
102
+ handleStoreChanges(): void;
103
+ /**
104
+ * Clean up current playlist state
105
+ */
106
+ cleanupCurrentPlaylist(): void;
107
+ /**
108
+ * Clean up playlist while preserving trigger monitoring
109
+ */
110
+ cleanupPlaylist(): void;
111
+ /**
112
+ * Get all managed managers for external access
113
+ */
114
+ getManagers(): ManagedManagers;
115
+ }
116
+ /**
117
+ * Collection of all manager instances
118
+ */
119
+ export interface ManagedManagers {
120
+ shadowDOMManager: any;
121
+ videoManager: any;
122
+ cursorManager: any;
123
+ interactionManager: any;
124
+ analyticsManager: any;
125
+ sessionManager: any;
126
+ transitionManager: any;
127
+ triggerManager: any;
128
+ abTestManager: any;
129
+ eventManager: any;
130
+ playlistManager: any;
131
+ stepTimeoutManager: any;
132
+ uiManager: any;
133
+ storageManager: any;
134
+ }
135
+ /**
136
+ * Service container for dependency injection
137
+ */
138
+ export interface IServiceContainer {
139
+ register<T>(key: string, factory: () => T): void;
140
+ resolve<T>(key: string): T;
141
+ cleanup(): void;
142
+ }
143
+ /**
144
+ * Factory for creating manager instances
145
+ */
146
+ export interface IManagerFactory {
147
+ createManagers(): ManagedManagers;
148
+ resetManagers(managers: ManagedManagers): void;
149
+ destroyManagers(managers: ManagedManagers): void;
150
+ }
151
+ //# sourceMappingURL=ServiceInterfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceInterfaces.d.ts","sourceRoot":"","sources":["../../../src/core/services/ServiceInterfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { IStateMachineActionHandler, ManagedManagers } from './ServiceInterfaces';
2
+ import type { Step } from '../../types';
3
+ /**
4
+ * Service for handling state machine action registration and video-related utilities
5
+ */
6
+ export declare class StateMachineActionHandler implements IStateMachineActionHandler {
7
+ private managers;
8
+ private destroyCallback;
9
+ constructor(managers: ManagedManagers);
10
+ /**
11
+ * Set the destroy callback for player destruction
12
+ */
13
+ setDestroyCallback(callback: () => void): void;
14
+ /**
15
+ * Register all state machine actions with the store
16
+ */
17
+ registerStateMachineActions(): void;
18
+ /**
19
+ * Gets the appropriate video URL for a step, preferring compressedVideoUrl if available
20
+ * Also checks for translations if a language is configured
21
+ */
22
+ getVideoUrl(step: Step): string;
23
+ /**
24
+ * Finds the URL of the next video in the playlist for preloading
25
+ */
26
+ findNextVideoUrl(currentStep: Step): string | null;
27
+ destroy(): void;
28
+ private handleStartVideoPlayback;
29
+ private handlePauseVideoPlayback;
30
+ private handleStartMutedLoopedVideo;
31
+ private handleStartIdleModeVideo;
32
+ private handleTrackPlaylistComplete;
33
+ private handleError;
34
+ private handleShowLoadingState;
35
+ private handleHideLoadingState;
36
+ private handleHideVideoControls;
37
+ private handleShowVideoControls;
38
+ private handleShowPlayButton;
39
+ private handleHidePlayButton;
40
+ private handleEnablePlayButtonProminent;
41
+ private handleDisablePlayButtonProminent;
42
+ private handleTriggerPlaylistDismissed;
43
+ private handleScheduleDestroy;
44
+ }
45
+ //# sourceMappingURL=StateMachineActionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMachineActionHandler.d.ts","sourceRoot":"","sources":["../../../src/core/services/StateMachineActionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAKxC;;GAEG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;IAC1E,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAA6B;gBAExC,QAAQ,EAAE,eAAe;IAIrC;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIrD;;OAEG;IACI,2BAA2B,IAAI,IAAI;IAsE1C;;;OAGG;IACI,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAgBtC;;OAEG;IACI,gBAAgB,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IA+BlD,OAAO,IAAI,IAAI;IAKtB,OAAO,CAAC,wBAAwB;IAsJhC,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,wBAAwB;IA8GhC,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,+BAA+B;IAKvC,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,qBAAqB;CAW9B"}