saltfish 0.3.76 → 0.3.78

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.
@@ -17,6 +17,7 @@ export declare class SaltfishPlayer {
17
17
  private managerOrchestrator;
18
18
  private managerFactory;
19
19
  private isInitialized;
20
+ private initializationPromise;
20
21
  private constructor();
21
22
  /**
22
23
  * Gets the singleton instance of the Saltfish playlist Player
@@ -36,10 +37,12 @@ export declare class SaltfishPlayer {
36
37
  initialize(config: SaltfishConfig): Promise<void>;
37
38
  /**
38
39
  * Identify a user with ID and optional data
40
+ * Waits for initialization to complete before identifying to ensure A/B tests are properly configured
39
41
  */
40
- identifyUser(userId: string, userData?: Record<string, unknown>): void;
42
+ identifyUser(userId: string, userData?: Record<string, unknown>): Promise<void>;
41
43
  /**
42
44
  * Identify user anonymously with optional data
45
+ * Waits for initialization to complete before identifying to ensure A/B tests are properly configured
43
46
  */
44
47
  identifyAnonymous(userData?: Record<string, unknown>): Promise<void>;
45
48
  /**
@@ -1 +1 @@
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;AAKrE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAGtD,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;IAsCP;;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;IAsBtB;;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,oDAGtB;IAED;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,WAAW;;;;;;;CASnB"}
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;AAKrE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAGtD,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;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D,OAAO;IAsCP;;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;IAoC9D;;;OAGG;IACU,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5F;;;OAGG;IACU,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjF;;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;IAsBtB;;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,oDAGtB;IAED;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,WAAW;;;;;;;CASnB"}
@@ -9,6 +9,11 @@ export declare class PlayerInitializationService implements IPlayerInitializatio
9
9
  private playlistOrchestrator?;
10
10
  private shareLinkService;
11
11
  private lastConfig;
12
+ private boundVisibilityHandler;
13
+ private lastUserDataFetchTimestamp;
14
+ private currentUserId;
15
+ private currentUserData;
16
+ private isAnonymousUser;
12
17
  constructor(managers: ManagedManagers);
13
18
  /**
14
19
  * Set the user management service for dependency
@@ -56,6 +61,28 @@ export declare class PlayerInitializationService implements IPlayerInitializatio
56
61
  * Get or create persistent anonymous user ID
57
62
  */
58
63
  getOrCreateAnonymousUserId(): string;
64
+ /**
65
+ * Set up visibility change listener to re-fetch user data and re-evaluate triggers
66
+ * when the user returns to the tab
67
+ */
68
+ private setupVisibilityChangeListener;
69
+ /**
70
+ * Remove visibility change listener
71
+ */
72
+ private removeVisibilityChangeListener;
73
+ /**
74
+ * Handle visibility change event - re-fetch user data and re-evaluate triggers
75
+ * when the tab becomes visible again
76
+ */
77
+ private handleVisibilityChange;
78
+ /**
79
+ * Refresh user data for identified users and re-evaluate triggers
80
+ */
81
+ private refreshIdentifiedUserData;
82
+ /**
83
+ * Refresh user data for anonymous users and re-evaluate triggers
84
+ */
85
+ private refreshAnonymousUserData;
59
86
  destroy(): void;
60
87
  }
61
88
  //# sourceMappingURL=PlayerInitializationService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerInitializationService.d.ts","sourceRoot":"","sources":["../../../src/core/services/PlayerInitializationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAWpE;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAC9E,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,qBAAqB,CAAC,CAAyB;IACvD,OAAO,CAAC,oBAAoB,CAAC,CAAwB;IACrD,OAAO,CAAC,gBAAgB,CAAmB;IAG3C,OAAO,CAAC,UAAU,CAA+B;gBAErC,QAAQ,EAAE,eAAe;IAKrC;;OAEG;IACI,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAItE;;OAEG;IACI,uBAAuB,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI;IAIzE;;OAEG;IACI,aAAa,IAAI,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkG9D;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2H7F;;OAEG;IACU,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwGrG;;OAEG;IACU,gCAAgC,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2DnG;;;;;OAKG;YACW,mCAAmC;IA8CjD;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACI,0BAA0B,IAAI,MAAM;IA8BpC,OAAO,IAAI,IAAI;CAGvB"}
1
+ {"version":3,"file":"PlayerInitializationService.d.ts","sourceRoot":"","sources":["../../../src/core/services/PlayerInitializationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAcpE;;GAEG;AACH,qBAAa,2BAA4B,YAAW,4BAA4B;IAC9E,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,qBAAqB,CAAC,CAAyB;IACvD,OAAO,CAAC,oBAAoB,CAAC,CAAwB;IACrD,OAAO,CAAC,gBAAgB,CAAmB;IAG3C,OAAO,CAAC,UAAU,CAA+B;IAGjD,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,0BAA0B,CAAa;IAC/C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,eAAe,CAAkB;gBAE7B,QAAQ,EAAE,eAAe;IAKrC;;OAEG;IACI,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAItE;;OAEG;IACI,uBAAuB,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI;IAIzE;;OAEG;IACI,aAAa,IAAI,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkG9D;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoI7F;;OAEG;IACU,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiHrG;;OAEG;IACU,gCAAgC,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2DnG;;;;;OAKG;YACW,mCAAmC;IA8CjD;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACI,0BAA0B,IAAI,MAAM;IA8B3C;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAarC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAQtC;;;OAGG;YACW,sBAAsB;IA4CpC;;OAEG;YACW,yBAAyB;IAiDvC;;OAEG;YACW,wBAAwB;IA6B/B,OAAO,IAAI,IAAI;CAQvB"}
@@ -27,6 +27,7 @@ export declare class ABTestManager extends EventSubscriberManager {
27
27
  initializeTests(abTests: ABTestConfig[]): void;
28
28
  /**
29
29
  * Assign a user to A/B tests based on their ID and test percentages
30
+ * Uses a two-pass approach: first assign non-linked tests, then linked tests
30
31
  * @param userId - User ID for consistent assignment
31
32
  * @param existingAssignments - Existing assignments from backend (for identified users)
32
33
  * @param userListAssignments - Assignments from backend for user list tests
@@ -40,6 +41,15 @@ export declare class ABTestManager extends EventSubscriberManager {
40
41
  * @returns true if user should be in test
41
42
  */
42
43
  private isUserInTest;
44
+ /**
45
+ * Determine if a user should be included in a linked test using parent's test ID
46
+ * This ensures linked tests use the same user cohort as their parent test
47
+ * @param userId - User ID
48
+ * @param parentTestId - Parent test ID to use for hashing
49
+ * @param percentage - Percentage threshold from parent test
50
+ * @returns true if user should be in test
51
+ */
52
+ private isUserInTestWithParentId;
43
53
  /**
44
54
  * Get playlists that the user should see based on A/B test assignments
45
55
  * @param allPlaylists - All available playlists
@@ -1 +1 @@
1
- {"version":3,"file":"ABTestManager.d.ts","sourceRoot":"","sources":["../../src/managers/ABTestManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,sBAAsB;IACvD;;;OAGG;gBACS,YAAY,CAAC,EAAE,YAAY;IAIvC;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IASnC;;;OAGG;IACI,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI;IAOrD;;;;;;OAMG;IACI,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IA6CnC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAsBpB;;;;OAIG;IACI,oBAAoB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;IAmCjF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;OAGG;IACI,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAKnE;;;;OAIG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAgBvD;;;OAGG;IACI,iBAAiB,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAY7G"}
1
+ {"version":3,"file":"ABTestManager.d.ts","sourceRoot":"","sources":["../../src/managers/ABTestManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,sBAAsB;IACvD;;;OAGG;gBACS,YAAY,CAAC,EAAE,YAAY;IAIvC;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IASnC;;;OAGG;IACI,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI;IAOrD;;;;;;;OAOG;IACI,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IA+FnC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAsBpB;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;;;OAIG;IACI,oBAAoB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;IAmCjF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;OAGG;IACI,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAKnE;;;;OAIG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAgBvD;;;OAGG;IACI,iBAAiB,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAY7G"}