@revturbine/sdk 0.2.33 → 0.2.34

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.
@@ -27,6 +27,7 @@
27
27
  * ```
28
28
  */
29
29
  import type { RevTurbineCustomerSdk, RevTurbineInitInputOptions, RevTurbinePlacementConfig, RevTurbineSurfaceSlotConfig, RevTurbinePlacementDecision, RevTurbinePlacementContent, RevTurbinePlacementDecisionOverrides, RevTurbinePlacementRequestConfig, RevTurbineContextMode, RevTurbineEntitlementContext, RevTurbineUserContext, EntitlementResult, PlacementOutput, UserTargetingContext, RevTurbineUsageSnapshot, RevTurbineTrialContext, UsageBalances, JsonObject } from './customer-side';
30
+ import type { ExposureBasis } from './telemetry';
30
31
  import type { RevTurbineTheme } from './theme/types';
31
32
  /** Callback used to subscribe to state changes in controllers. */
32
33
  export type ChangeListener = () => void;
@@ -61,6 +62,12 @@ export interface PlacementControllerState {
61
62
  readonly visible: boolean;
62
63
  readonly decision: RevTurbinePlacementDecision | null;
63
64
  readonly content: RevTurbinePlacementContent['content'] | null;
65
+ /**
66
+ * How the placement's visual root came to be considered exposed, or `null`
67
+ * before {@link PlacementController.markVisible} is called (plan 144 TASK-9).
68
+ * `'render_fallback'` when `IntersectionObserver` was unavailable (AC-10).
69
+ */
70
+ readonly exposureBasis: ExposureBasis | null;
64
71
  }
65
72
  /**
66
73
  * Framework-agnostic placement lifecycle controller.
@@ -88,9 +95,24 @@ export declare class PlacementController {
88
95
  private _error;
89
96
  private _impressionTracked;
90
97
  private _loadSeq;
98
+ private _exposed;
99
+ private _exposureBasis;
91
100
  constructor(sdk: RevTurbineCustomerSdk, options: PlacementControllerOptions);
92
101
  /** Current state snapshot. */
93
102
  get state(): PlacementControllerState;
103
+ /**
104
+ * Called by the viewport-exposure substrate when the placement's visual root
105
+ * first enters the viewport — or immediately with `'render_fallback'` when
106
+ * `IntersectionObserver` is unavailable (plan 144 TASK-9 / AC-10). Records the
107
+ * exposure and its basis; idempotent (only the first call takes effect).
108
+ *
109
+ * This is the seam the viewport-exposure opt-in builds on: under
110
+ * `placementExposure: 'viewport'` (TASK-11) the resolution-time impression
111
+ * moves here. In TASK-9 it records state without emitting an event.
112
+ *
113
+ * @param basis - how exposure was established; defaults to `'viewport'`
114
+ */
115
+ markVisible(basis?: ExposureBasis): void;
94
116
  /** Convenience: `true` when the current decision says the placement is visible. */
95
117
  get visible(): boolean;
96
118
  /** Current resolved content, or `null` if no decision has been loaded. */
@@ -106,7 +128,7 @@ export declare class PlacementController {
106
128
  * automatically records an impression event.
107
129
  */
108
130
  load(): Promise<RevTurbinePlacementDecision | null>;
109
- /** Re-fetch the placement decision (clears impression tracking). */
131
+ /** Re-fetch the placement decision (clears impression + exposure tracking). */
110
132
  refresh(): Promise<RevTurbinePlacementDecision | null>;
111
133
  /** Record a dismiss interaction and hide the placement. */
112
134
  dismiss(cooldownMs?: number): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../controllers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../controllers.ts"],"names":[],"mappings":"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"}
@@ -111,6 +111,15 @@ export interface PlacementSlotProps<C extends ResolvedContent = ResolvedContent>
111
111
  className?: string;
112
112
  /** Custom inline styles. */
113
113
  style?: React.CSSProperties;
114
+ /**
115
+ * Optional exposure ref (plan 144 TASK-9 / REQ-18). Attach it to the slot's
116
+ * true visual root so RevTurbine can observe when the placement actually
117
+ * enters the viewport for viewport-qualified exposure; when
118
+ * `IntersectionObserver` is unavailable it falls back to render
119
+ * (`exposure_basis: 'render_fallback'`). **Additive and optional** — omitting
120
+ * it changes nothing, and it never requires a wrapper element (REQ-18/REQ-19).
121
+ */
122
+ exposureRef?: (element: Element | null) => void;
114
123
  }
115
124
  /**
116
125
  * A placement slot type definition.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../placements/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../placements/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type RevTurbinePlacementConfig, type RevTurbineSurfaceSlotConfig, type RevTurbinePlacementContent, type RevTurbinePlacementDecision, type RevTurbinePlacementDecisionOverrides, type RevTurbineContextMode } from '../customer-side';
2
+ import { type ExposureBasis } from '../telemetry';
2
3
  /**
3
4
  * Options for the {@link usePlacement} hook.
4
5
  */
@@ -19,6 +20,13 @@ export type UsePlacementOptions = {
19
20
  ttlMs?: number;
20
21
  /** Automatically load a decision on mount. Default `true`. */
21
22
  autoLoad?: boolean;
23
+ /**
24
+ * Whether a visible decision auto-tracks a resolution-time impression. Default
25
+ * `true`. Set `false` to suppress it — e.g. when you attach {@link
26
+ * UsePlacementResult.exposureRef} and want the impression to fire on viewport
27
+ * exposure instead (plan 144 TASK-9 / REQ-15). Read at mount.
28
+ */
29
+ autoTrackImpression?: boolean;
22
30
  };
23
31
  /**
24
32
  * Result returned by the {@link usePlacement} hook.
@@ -36,6 +44,21 @@ export type UsePlacementResult = {
36
44
  remindMeLater: (seconds?: number) => Promise<void>;
37
45
  ctaClick: (ctaTarget?: string) => Promise<void>;
38
46
  ctaComplete: (ctaTarget?: string) => Promise<void>;
47
+ /**
48
+ * Ref callback to attach to the placement's true visual root (plan 144
49
+ * TASK-9). RevTurbine observes when that element enters the viewport for
50
+ * viewport-qualified exposure; when `IntersectionObserver` is unavailable it
51
+ * falls back to render (`exposure_basis: 'render_fallback'`, AC-10). Attaching
52
+ * it is optional and never adds a wrapper element (REQ-18/REQ-19).
53
+ */
54
+ exposureRef: (element: Element | null) => void;
55
+ /**
56
+ * How the placement's visual root was exposed, or `null` before it enters the
57
+ * viewport (plan 144 TASK-9). `'render_fallback'` when `IntersectionObserver`
58
+ * is unavailable (AC-10). Only meaningful once {@link
59
+ * UsePlacementResult.exposureRef} is attached.
60
+ */
61
+ exposureBasis: ExposureBasis | null;
39
62
  };
40
63
  /**
41
64
  * React hook for loading a placement decision and managing interactions.
@@ -59,5 +82,5 @@ export type UsePlacementResult = {
59
82
  * );
60
83
  * ```
61
84
  */
62
- export declare function usePlacement({ placement, surfaceSlot, userId, contextMode, overrides, traits, ttlMs, autoLoad, }: UsePlacementOptions): UsePlacementResult;
85
+ export declare function usePlacement({ placement, surfaceSlot, userId, contextMode, overrides, traits, ttlMs, autoLoad, autoTrackImpression, }: UsePlacementOptions): UsePlacementResult;
63
86
  //# sourceMappingURL=usePlacement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlacement.d.ts","sourceRoot":"","sources":["../../../../react/usePlacement.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAI1B;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,yEAAyE;IACzE,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,oDAAoD;IACpD,SAAS,CAAC,EAAE,oCAAoC,CAAC;IACjD,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,0BAA0B,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,MAAM,EACN,WAAoB,EACpB,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAe,GAChB,EAAE,mBAAmB,GAAG,kBAAkB,CA+E1C"}
1
+ {"version":3,"file":"usePlacement.d.ts","sourceRoot":"","sources":["../../../../react/usePlacement.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,yEAAyE;IACzE,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,oDAAoD;IACpD,SAAS,CAAC,EAAE,oCAAoC,CAAC;IACjD,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,0BAA0B,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,MAAM,EACN,WAAoB,EACpB,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAe,EACf,mBAAmB,GACpB,EAAE,mBAAmB,GAAG,kBAAkB,CAuG1C"}
@@ -12,4 +12,6 @@ export { deliverWithRetry } from './delivery';
12
12
  export type { DeliverOptions, DeliveryOutcome } from './delivery';
13
13
  export { createTelemetryCounters } from './counters';
14
14
  export type { TelemetryCounters } from './counters';
15
+ export { createExposureManager, exposureManager } from './visibility';
16
+ export type { ExposureBasis, ExposureManager, ExposureObserveOptions } from './visibility';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Viewport-exposure substrate (plan 144 TASK-9).
3
+ *
4
+ * A small manager over `IntersectionObserver` that answers "has this element
5
+ * actually entered the viewport?" for viewport-qualified exposure. It exists
6
+ * for REQ-18 (attach exposure to the true visual root) and AC-10 (degrade
7
+ * gracefully when `IntersectionObserver` is unavailable).
8
+ *
9
+ * Two design points the plan calls out:
10
+ * - **One shared observer per distinct config.** Elements requesting the same
11
+ * `threshold` + `rootMargin` share a single `IntersectionObserver` — one
12
+ * observer, many targets — rather than one observer per placement.
13
+ * - **Graceful fallback (AC-10).** With no `IntersectionObserver` (SSR, old
14
+ * browsers, a stubbed environment) the manager doesn't throw: it treats
15
+ * render as exposure and reports `exposure_basis: 'render_fallback'`, so the
16
+ * signal degrades instead of disappearing.
17
+ */
18
+ /**
19
+ * How an element came to be considered "exposed":
20
+ * - `viewport` — it crossed the visibility threshold in the viewport.
21
+ * - `render_fallback` — `IntersectionObserver` was unavailable, so render was
22
+ * treated as exposure (AC-10).
23
+ */
24
+ export type ExposureBasis = 'viewport' | 'render_fallback';
25
+ /** Per-element viewport-qualification options. */
26
+ export interface ExposureObserveOptions {
27
+ /** Fraction of the element that must be visible (0–1). Default 0.5. */
28
+ threshold?: number;
29
+ /** `IntersectionObserver` root margin. Default `'0px'`. */
30
+ rootMargin?: string;
31
+ /** Dwell: how long the element must stay visible before it counts. Default 0. */
32
+ minVisibleMs?: number;
33
+ }
34
+ /** Observes elements and reports when each first qualifies as exposed. */
35
+ export interface ExposureManager {
36
+ /** True when the runtime can actually observe viewport visibility. */
37
+ readonly supported: boolean;
38
+ /**
39
+ * Observe `el`; call `onExposed` once, the first time it qualifies. Returns an
40
+ * unobserve function to call on unmount (before exposure fires).
41
+ */
42
+ observe(el: Element, options: ExposureObserveOptions, onExposed: (basis: ExposureBasis) => void): () => void;
43
+ /** Tear down every shared observer. */
44
+ disconnect(): void;
45
+ }
46
+ /**
47
+ * Create an exposure manager. The SDK shares one instance across a page
48
+ * ({@link exposureManager}); tests create their own for isolation.
49
+ */
50
+ export declare function createExposureManager(): ExposureManager;
51
+ /**
52
+ * Process-wide exposure manager. Sharing one instance lets placements requesting
53
+ * the same config share a single `IntersectionObserver`.
54
+ */
55
+ export declare const exposureManager: ExposureManager;
56
+ //# sourceMappingURL=visibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../../../../telemetry/visibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE3D,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,CACL,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACxC,MAAM,IAAI,CAAC;IACd,uCAAuC;IACvC,UAAU,IAAI,IAAI,CAAC;CACpB;AAiBD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAgGvD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,eAAyC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revturbine/sdk",
3
- "version": "0.2.33",
3
+ "version": "0.2.34",
4
4
  "description": "RevTurbine customer-facing SDK — placement decisioning, entitlement checks, and usage tracking.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.12.0",