@magicfeedback/popup-sdk 1.10.0 → 1.12.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/README.md +23 -1
- package/dist/index.d.mts +84 -4
- package/dist/index.d.ts +84 -4
- package/dist/index.js +253 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +235 -20
- package/dist/index.mjs.map +1 -1
- package/dist/react-native.d.mts +61 -3
- package/dist/react-native.d.ts +61 -3
- package/dist/react-native.js +254 -23
- package/dist/react-native.js.map +1 -1
- package/dist/react-native.mjs +236 -20
- package/dist/react-native.mjs.map +1 -1
- package/dist/{renderPopup-WLOFOCDR.mjs → renderPopup-JF6IB6HL.mjs} +22 -7
- package/dist/renderPopup-JF6IB6HL.mjs.map +1 -0
- package/dist/{renderPopup-424HR5LF.mjs → renderPopup-KSZJ5AN4.mjs} +22 -7
- package/dist/renderPopup-KSZJ5AN4.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/renderPopup-424HR5LF.mjs.map +0 -1
- package/dist/renderPopup-WLOFOCDR.mjs.map +0 -1
package/dist/react-native.d.mts
CHANGED
|
@@ -396,6 +396,14 @@ declare class DeepdotsPopups {
|
|
|
396
396
|
private popupContainer;
|
|
397
397
|
private popupDefinitions;
|
|
398
398
|
private popupsLoaded;
|
|
399
|
+
/**
|
|
400
|
+
* `true` mientras el `GET /sdk/{apiKey}/popups` de `init()` está en vuelo. En esa ventana los
|
|
401
|
+
* disparos del host (`triggerEvent`, `triggerSurvey`) no tienen contra qué evaluarse, así que
|
|
402
|
+
* se guardan en `pendingTriggers` y se reproducen al cargar. Click, scroll, time y exit no
|
|
403
|
+
* hacen falta: son listeners que `autoLaunch` instala ya con las definiciones cargadas.
|
|
404
|
+
*/
|
|
405
|
+
private awaitingPopups;
|
|
406
|
+
private pendingTriggers;
|
|
399
407
|
private pendingAutoLaunch;
|
|
400
408
|
private answeredSurveys;
|
|
401
409
|
private surveyProgress;
|
|
@@ -444,6 +452,13 @@ declare class DeepdotsPopups {
|
|
|
444
452
|
private lastEngagementAt;
|
|
445
453
|
/** Cuándo se ocultó la pestaña por última vez (ms epoch); null si está visible. */
|
|
446
454
|
private hiddenAt;
|
|
455
|
+
/**
|
|
456
|
+
* Sesión suspendida por un `pagehide` (ms epoch y `deepdots_user_id`); null si no hay.
|
|
457
|
+
* `openSession` la reanuda si sigue a tiempo (ver ANALYTICS_RESUME_WINDOW_MS).
|
|
458
|
+
*/
|
|
459
|
+
private suspended;
|
|
460
|
+
/** Integración de analytics del init: la sesión suspendida solo la hereda la misma. */
|
|
461
|
+
private analyticsIntegration;
|
|
447
462
|
/**
|
|
448
463
|
* Idioma resuelto en init() (explícito > navigator.language > Intl). Única fuente de
|
|
449
464
|
* verdad para el context de analytics Y para la segmentación por idioma de los popups.
|
|
@@ -556,8 +571,15 @@ declare class DeepdotsPopups {
|
|
|
556
571
|
*/
|
|
557
572
|
private closeSession;
|
|
558
573
|
/**
|
|
559
|
-
* Abre sesión (`session_start`) si no hay una abierta y el tracking está activo. Idempotente
|
|
560
|
-
*
|
|
574
|
+
* Abre sesión (`session_start`) si no hay una abierta y el tracking está activo. Idempotente.
|
|
575
|
+
* El `reason` dice por qué empieza (ver `SessionStartReason`):
|
|
576
|
+
* - `cold_start`: init() (carga de la página / arranque de la app RN).
|
|
577
|
+
* - `foreground`: onForeground() tras un cierre (RN).
|
|
578
|
+
* - `tracking_enabled`: setTrackingEnabled(true).
|
|
579
|
+
* - `user_change`: setUserId() o init() con otro userId.
|
|
580
|
+
* - `idle_timeout`: la pestaña vuelve a verse tras más de 30 min oculta.
|
|
581
|
+
* - `bfcache_restore`: vuelta desde la bfcache fuera de la ventana de reanudación.
|
|
582
|
+
* Si hay una sesión suspendida a tiempo emite `deepdots_session_resume` en su lugar, sin reason.
|
|
561
583
|
*/
|
|
562
584
|
private openSession;
|
|
563
585
|
/** Web: si la pestaña se ve. Sin `document` (RN) manda AppState vía onForeground/onBackground. */
|
|
@@ -586,6 +608,31 @@ declare class DeepdotsPopups {
|
|
|
586
608
|
* - Más: ya la cerró el backend → se descarta sin enviar nada.
|
|
587
609
|
*/
|
|
588
610
|
private onDocumentVisible;
|
|
611
|
+
/**
|
|
612
|
+
* `pagehide` en web: SUSPENDE la sesión en vez de cerrarla, porque el navegador lo lanza
|
|
613
|
+
* igual al recargar que al cerrar la pestaña. Vuelca lo pendiente (page_view de la
|
|
614
|
+
* pantalla, mini-services, engagement) con un `deepdots_session_suspend` y SIN
|
|
615
|
+
* `completed`, y deja el registro en `sessionStorage` (ver `suspended-session.ts`):
|
|
616
|
+
* - si la página vuelve a cargar en esta pestaña, `init()` sigue en el mismo registro;
|
|
617
|
+
* - si la pestaña se cerró, el backend lo cierra a los pocos minutos sin otro lote.
|
|
618
|
+
*
|
|
619
|
+
* Devuelve false cuando no se puede suspender — aún no se conoce el registro (el primer
|
|
620
|
+
* POST sigue en vuelo) o no hay `sessionStorage` — y entonces el caller cierra como antes.
|
|
621
|
+
*/
|
|
622
|
+
private suspendSession;
|
|
623
|
+
/**
|
|
624
|
+
* Recoge la sesión que dejó suspendida la carga anterior de esta pestaña (ver
|
|
625
|
+
* `suspendSession`). Solo con analytics configurado y el tracking activo: sin ellos no hay
|
|
626
|
+
* registro en el que seguir.
|
|
627
|
+
*/
|
|
628
|
+
private readResumableSession;
|
|
629
|
+
/**
|
|
630
|
+
* Consume la sesión suspendida al abrir: los ms que estuvo suspendida si se puede seguir en
|
|
631
|
+
* ella (mismo usuario, dentro de ANALYTICS_RESUME_WINDOW_MS); null si no había o ya no toca.
|
|
632
|
+
* En ese caso se olvida su registro sin enviar nada: lo cierra el backend, y la sesión que
|
|
633
|
+
* se abre ahora va a uno nuevo.
|
|
634
|
+
*/
|
|
635
|
+
private takeSuspendedSession;
|
|
589
636
|
/** Olvida la sesión abierta sin enviar nada (ver onDocumentVisible). */
|
|
590
637
|
private discardSession;
|
|
591
638
|
/**
|
|
@@ -611,6 +658,17 @@ declare class DeepdotsPopups {
|
|
|
611
658
|
triggerSurvey(surveyId: string, popupId?: string): void;
|
|
612
659
|
/** Trigger popups configured with trigger.type = 'event' and matching trigger.value */
|
|
613
660
|
triggerEvent(eventName: string): void;
|
|
661
|
+
private evaluateEvent;
|
|
662
|
+
/**
|
|
663
|
+
* Guarda `trigger` si las definiciones aún no han llegado. Devuelve `true` si lo guardó (el
|
|
664
|
+
* llamador no debe evaluarlo ahora) y `false` si no hay carga en vuelo (se evalúa ya, como
|
|
665
|
+
* siempre: tras cargar, tras un fallo o sin apiKey).
|
|
666
|
+
*/
|
|
667
|
+
private bufferIfAwaitingPopups;
|
|
668
|
+
/** La carga falló: sin definiciones no hay nada que reproducir, se descarta todo. */
|
|
669
|
+
private dropPendingTriggers;
|
|
670
|
+
/** Reproduce en orden por la evaluación normal (segmentos, cooldowns y condiciones de AHORA). */
|
|
671
|
+
private replayPendingTriggers;
|
|
614
672
|
private showDefinition;
|
|
615
673
|
private shouldShow;
|
|
616
674
|
private matchesSegmentsLang;
|
|
@@ -649,7 +707,7 @@ declare class DeepdotsPopups {
|
|
|
649
707
|
private removeDeferredExitPopup;
|
|
650
708
|
private getDeferredExitQueue;
|
|
651
709
|
private setDeferredExitQueue;
|
|
652
|
-
/** Fetch al servidor para obtener popups */
|
|
710
|
+
/** Fetch al servidor para obtener popups. `null` si la carga falló (red, no-2xx, payload inválido). */
|
|
653
711
|
private fetchPopupsFromServer;
|
|
654
712
|
/** Envía los atributos de contact a la API (`POST /sdk/popups/contact`). */
|
|
655
713
|
private postContact;
|
package/dist/react-native.d.ts
CHANGED
|
@@ -396,6 +396,14 @@ declare class DeepdotsPopups {
|
|
|
396
396
|
private popupContainer;
|
|
397
397
|
private popupDefinitions;
|
|
398
398
|
private popupsLoaded;
|
|
399
|
+
/**
|
|
400
|
+
* `true` mientras el `GET /sdk/{apiKey}/popups` de `init()` está en vuelo. En esa ventana los
|
|
401
|
+
* disparos del host (`triggerEvent`, `triggerSurvey`) no tienen contra qué evaluarse, así que
|
|
402
|
+
* se guardan en `pendingTriggers` y se reproducen al cargar. Click, scroll, time y exit no
|
|
403
|
+
* hacen falta: son listeners que `autoLaunch` instala ya con las definiciones cargadas.
|
|
404
|
+
*/
|
|
405
|
+
private awaitingPopups;
|
|
406
|
+
private pendingTriggers;
|
|
399
407
|
private pendingAutoLaunch;
|
|
400
408
|
private answeredSurveys;
|
|
401
409
|
private surveyProgress;
|
|
@@ -444,6 +452,13 @@ declare class DeepdotsPopups {
|
|
|
444
452
|
private lastEngagementAt;
|
|
445
453
|
/** Cuándo se ocultó la pestaña por última vez (ms epoch); null si está visible. */
|
|
446
454
|
private hiddenAt;
|
|
455
|
+
/**
|
|
456
|
+
* Sesión suspendida por un `pagehide` (ms epoch y `deepdots_user_id`); null si no hay.
|
|
457
|
+
* `openSession` la reanuda si sigue a tiempo (ver ANALYTICS_RESUME_WINDOW_MS).
|
|
458
|
+
*/
|
|
459
|
+
private suspended;
|
|
460
|
+
/** Integración de analytics del init: la sesión suspendida solo la hereda la misma. */
|
|
461
|
+
private analyticsIntegration;
|
|
447
462
|
/**
|
|
448
463
|
* Idioma resuelto en init() (explícito > navigator.language > Intl). Única fuente de
|
|
449
464
|
* verdad para el context de analytics Y para la segmentación por idioma de los popups.
|
|
@@ -556,8 +571,15 @@ declare class DeepdotsPopups {
|
|
|
556
571
|
*/
|
|
557
572
|
private closeSession;
|
|
558
573
|
/**
|
|
559
|
-
* Abre sesión (`session_start`) si no hay una abierta y el tracking está activo. Idempotente
|
|
560
|
-
*
|
|
574
|
+
* Abre sesión (`session_start`) si no hay una abierta y el tracking está activo. Idempotente.
|
|
575
|
+
* El `reason` dice por qué empieza (ver `SessionStartReason`):
|
|
576
|
+
* - `cold_start`: init() (carga de la página / arranque de la app RN).
|
|
577
|
+
* - `foreground`: onForeground() tras un cierre (RN).
|
|
578
|
+
* - `tracking_enabled`: setTrackingEnabled(true).
|
|
579
|
+
* - `user_change`: setUserId() o init() con otro userId.
|
|
580
|
+
* - `idle_timeout`: la pestaña vuelve a verse tras más de 30 min oculta.
|
|
581
|
+
* - `bfcache_restore`: vuelta desde la bfcache fuera de la ventana de reanudación.
|
|
582
|
+
* Si hay una sesión suspendida a tiempo emite `deepdots_session_resume` en su lugar, sin reason.
|
|
561
583
|
*/
|
|
562
584
|
private openSession;
|
|
563
585
|
/** Web: si la pestaña se ve. Sin `document` (RN) manda AppState vía onForeground/onBackground. */
|
|
@@ -586,6 +608,31 @@ declare class DeepdotsPopups {
|
|
|
586
608
|
* - Más: ya la cerró el backend → se descarta sin enviar nada.
|
|
587
609
|
*/
|
|
588
610
|
private onDocumentVisible;
|
|
611
|
+
/**
|
|
612
|
+
* `pagehide` en web: SUSPENDE la sesión en vez de cerrarla, porque el navegador lo lanza
|
|
613
|
+
* igual al recargar que al cerrar la pestaña. Vuelca lo pendiente (page_view de la
|
|
614
|
+
* pantalla, mini-services, engagement) con un `deepdots_session_suspend` y SIN
|
|
615
|
+
* `completed`, y deja el registro en `sessionStorage` (ver `suspended-session.ts`):
|
|
616
|
+
* - si la página vuelve a cargar en esta pestaña, `init()` sigue en el mismo registro;
|
|
617
|
+
* - si la pestaña se cerró, el backend lo cierra a los pocos minutos sin otro lote.
|
|
618
|
+
*
|
|
619
|
+
* Devuelve false cuando no se puede suspender — aún no se conoce el registro (el primer
|
|
620
|
+
* POST sigue en vuelo) o no hay `sessionStorage` — y entonces el caller cierra como antes.
|
|
621
|
+
*/
|
|
622
|
+
private suspendSession;
|
|
623
|
+
/**
|
|
624
|
+
* Recoge la sesión que dejó suspendida la carga anterior de esta pestaña (ver
|
|
625
|
+
* `suspendSession`). Solo con analytics configurado y el tracking activo: sin ellos no hay
|
|
626
|
+
* registro en el que seguir.
|
|
627
|
+
*/
|
|
628
|
+
private readResumableSession;
|
|
629
|
+
/**
|
|
630
|
+
* Consume la sesión suspendida al abrir: los ms que estuvo suspendida si se puede seguir en
|
|
631
|
+
* ella (mismo usuario, dentro de ANALYTICS_RESUME_WINDOW_MS); null si no había o ya no toca.
|
|
632
|
+
* En ese caso se olvida su registro sin enviar nada: lo cierra el backend, y la sesión que
|
|
633
|
+
* se abre ahora va a uno nuevo.
|
|
634
|
+
*/
|
|
635
|
+
private takeSuspendedSession;
|
|
589
636
|
/** Olvida la sesión abierta sin enviar nada (ver onDocumentVisible). */
|
|
590
637
|
private discardSession;
|
|
591
638
|
/**
|
|
@@ -611,6 +658,17 @@ declare class DeepdotsPopups {
|
|
|
611
658
|
triggerSurvey(surveyId: string, popupId?: string): void;
|
|
612
659
|
/** Trigger popups configured with trigger.type = 'event' and matching trigger.value */
|
|
613
660
|
triggerEvent(eventName: string): void;
|
|
661
|
+
private evaluateEvent;
|
|
662
|
+
/**
|
|
663
|
+
* Guarda `trigger` si las definiciones aún no han llegado. Devuelve `true` si lo guardó (el
|
|
664
|
+
* llamador no debe evaluarlo ahora) y `false` si no hay carga en vuelo (se evalúa ya, como
|
|
665
|
+
* siempre: tras cargar, tras un fallo o sin apiKey).
|
|
666
|
+
*/
|
|
667
|
+
private bufferIfAwaitingPopups;
|
|
668
|
+
/** La carga falló: sin definiciones no hay nada que reproducir, se descarta todo. */
|
|
669
|
+
private dropPendingTriggers;
|
|
670
|
+
/** Reproduce en orden por la evaluación normal (segmentos, cooldowns y condiciones de AHORA). */
|
|
671
|
+
private replayPendingTriggers;
|
|
614
672
|
private showDefinition;
|
|
615
673
|
private shouldShow;
|
|
616
674
|
private matchesSegmentsLang;
|
|
@@ -649,7 +707,7 @@ declare class DeepdotsPopups {
|
|
|
649
707
|
private removeDeferredExitPopup;
|
|
650
708
|
private getDeferredExitQueue;
|
|
651
709
|
private setDeferredExitQueue;
|
|
652
|
-
/** Fetch al servidor para obtener popups */
|
|
710
|
+
/** Fetch al servidor para obtener popups. `null` si la carga falló (red, no-2xx, payload inválido). */
|
|
653
711
|
private fetchPopupsFromServer;
|
|
654
712
|
/** Envía los atributos de contact a la API (`POST /sdk/popups/contact`). */
|
|
655
713
|
private postContact;
|