@openplayerjs/ads 3.4.0 → 3.4.2

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.
@@ -16,7 +16,7 @@ export declare class AdDomManager {
16
16
  private resolvedNonLinearContainer?;
17
17
  private resolvedCompanionContainer?;
18
18
  private sessionUnsubs;
19
- constructor(overlay: HTMLDivElement, cfg: Pick<AdsPluginConfig, 'nonLinearContainer' | 'nonLinearSelector' | 'companionContainer' | 'companionSelector' | 'mountEl' | 'mountSelector'>, getAdVideo: () => HTMLVideoElement | undefined, getTracker: () => any, onSkipCallback: SkipCallback);
19
+ constructor(overlay: HTMLDivElement, cfg: Pick<AdsPluginConfig, 'nonLinearContainer' | 'nonLinearSelector' | 'companionContainer' | 'companionSelector' | 'mountEl' | 'mountSelector' | 'labels'>, getAdVideo: () => HTMLVideoElement | undefined, getTracker: () => any, onSkipCallback: SkipCallback);
20
20
  addSessionUnsub(fn: () => void): void;
21
21
  clearSession(): void;
22
22
  resolveContainer(el?: HTMLElement, selector?: string): HTMLElement | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ad-dom.d.ts","sourceRoot":"","sources":["../../src/ad-dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,QAkD1D;AAED,KAAK,YAAY,GAAG,MAAM,IAAI,CAAC;AAE/B,qBAAa,YAAY;IAerB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IA1BxB,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,aAAa,CAAC,EAAE,cAAc,CAAC;IAE/B,OAAO,CAAC,0BAA0B,CAAC,CAAc;IACjD,OAAO,CAAC,0BAA0B,CAAC,CAAc;IAEjD,OAAO,CAAC,aAAa,CAAsB;gBAGjC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,IAAI,CACf,eAAe,EACb,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,SAAS,GACT,eAAe,CAClB,EACO,UAAU,EAAE,MAAM,gBAAgB,GAAG,SAAS,EAC9C,UAAU,EAAE,MAAM,GAAG,EACrB,cAAc,EAAE,YAAY;IAKtC,eAAe,CAAC,EAAE,EAAE,MAAM,IAAI;IAI9B,YAAY;IAQZ,gBAAgB,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAS9E,qBAAqB,IAAI,WAAW,GAAG,SAAS;IAMhD,qBAAqB,IAAI,WAAW,GAAG,SAAS;IAMhD,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW;IASlD,oBAAoB,CAAC,KAAK,EAAE,gBAAgB;IAiB5C,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAoDzC,cAAc,CAAC,MAAM,EAAE,MAAM;IAY7B,OAAO,CAAC,aAAa;IAuBrB,UAAU;IAMV,qBAAqB,CAAC,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI;IAmCjH,WAAW,CACT,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,EAClC,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAC7B,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI;IAgC5B,eAAe;IAaf,eAAe,CAAC,QAAQ,EAAE,GAAG;IA8B7B,eAAe,CAAC,SAAS,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IAwEnD,iCAAiC,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM;IAgBlD,kBAAkB;IAmBlB,eAAe,CAAC,EAAE,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IA8D5C,cAAc,CAAC,QAAQ,EAAE,GAAG;IAoB5B,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;CAyBjD"}
1
+ {"version":3,"file":"ad-dom.d.ts","sourceRoot":"","sources":["../../src/ad-dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,QAkD1D;AAED,KAAK,YAAY,GAAG,MAAM,IAAI,CAAC;AAE/B,qBAAa,YAAY;IAerB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IA3BxB,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,aAAa,CAAC,EAAE,cAAc,CAAC;IAE/B,OAAO,CAAC,0BAA0B,CAAC,CAAc;IACjD,OAAO,CAAC,0BAA0B,CAAC,CAAc;IAEjD,OAAO,CAAC,aAAa,CAAsB;gBAGjC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,IAAI,CACf,eAAe,EACb,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,SAAS,GACT,eAAe,GACf,QAAQ,CACX,EACO,UAAU,EAAE,MAAM,gBAAgB,GAAG,SAAS,EAC9C,UAAU,EAAE,MAAM,GAAG,EACrB,cAAc,EAAE,YAAY;IAKtC,eAAe,CAAC,EAAE,EAAE,MAAM,IAAI;IAI9B,YAAY;IAQZ,gBAAgB,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAS9E,qBAAqB,IAAI,WAAW,GAAG,SAAS;IAMhD,qBAAqB,IAAI,WAAW,GAAG,SAAS;IAMhD,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW;IASlD,oBAAoB,CAAC,KAAK,EAAE,gBAAgB;IAiB5C,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAoDzC,cAAc,CAAC,MAAM,EAAE,MAAM;IAY7B,OAAO,CAAC,aAAa;IAuBrB,UAAU;IAMV,qBAAqB,CAAC,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI;IAoCjH,WAAW,CACT,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,EAClC,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAC7B,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI;IAgC5B,eAAe;IAaf,eAAe,CAAC,QAAQ,EAAE,GAAG;IA8B7B,eAAe,CAAC,SAAS,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IAwEnD,iCAAiC,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM;IAgBlD,kBAAkB;IAmBlB,eAAe,CAAC,EAAE,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IA8D5C,cAAc,CAAC,QAAQ,EAAE,GAAG;IAoB5B,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;CAyBjD"}
@@ -1,67 +1,89 @@
1
1
  import type { PlayerPlugin, PluginContext } from '@openplayerjs/core';
2
- import type { AdsBreakConfig, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType, VastInput } from './types';
2
+ import type { AdsBreakConfig, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType } from './types';
3
3
  export type { AdsBreakConfig, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType };
4
+ /**
5
+ * `AdsPlugin` — thin dispatcher for ad delivery strategies.
6
+ *
7
+ * Selects an `AdSessionStrategy` based on `config.adDelivery` and delegates
8
+ * all lifecycle calls to it. Strategy selection:
9
+ *
10
+ * | `adDelivery` value | Strategy | Description |
11
+ * |--------------------|----------|-------------|
12
+ * | `'csai'` (default) | `CsaiAdStrategy` | Client-side insertion — fetches VAST/VMAP, renders an ad `<video>` |
13
+ * | `'ssai'` | `SsaiAdStrategy` | Server-side stitching — detects boundaries via SCTE-35 TextTrack cues |
14
+ * | `'hybrid'` | `HybridAdStrategy` | CSAI triggered by SCTE-35 OUT cues from the HLS engine |
15
+ *
16
+ * Auto-selection: if `scteSource` or `hybrid.scteSource` is provided without
17
+ * an explicit `adDelivery`, the mode defaults to `'hybrid'`.
18
+ *
19
+ * @example CSAI with preroll
20
+ * ```ts
21
+ * new AdsPlugin({
22
+ * breaks: [{ at: 'preroll', source: { type: 'VAST', src: 'https://example.com/vast.xml' } }],
23
+ * });
24
+ * ```
25
+ *
26
+ * @example SSAI with event sink
27
+ * ```ts
28
+ * new AdsPlugin({
29
+ * adDelivery: 'ssai',
30
+ * ssai: { eventSink: (e) => console.log(e.type, e.breakId) },
31
+ * });
32
+ * ```
33
+ *
34
+ * @example Hybrid CSAI + SCTE-35
35
+ * ```ts
36
+ * new AdsPlugin({
37
+ * adDelivery: 'hybrid',
38
+ * hybrid: {
39
+ * scteSource: hlsEngine,
40
+ * resolveScteUrl: (cue) => `https://ads.example.com/vast?id=${cue.id}`,
41
+ * },
42
+ * });
43
+ * ```
44
+ */
4
45
  export declare class AdsPlugin implements PlayerPlugin {
5
46
  name: string;
6
47
  version: string;
7
48
  capabilities: string[];
8
- private ctx;
9
- private bus;
10
- private _lastCreative;
11
- private overlayId;
12
- private adEndPromise;
13
- private cfg;
14
- private overlay;
15
- private adVideo?;
16
- private currentBreakMeta?;
17
- private vastClient;
18
- private tracker?;
19
- private globalUnsubs;
20
- private sessionUnsubs;
21
- private active;
22
- private resumeAfter;
23
- private contentMedia?;
24
- private contentHadControls;
25
- private startingBreak;
26
- private userPlayIntent;
27
- private forcedMuteUntilInteraction;
28
- private syncingVolume;
29
- private scheduler;
30
- private captionMgr;
31
- private _dom?;
32
- private get dom();
33
- private set dom(value);
34
- private simidSession?;
35
- private omidSession?;
49
+ private readonly rawConfig;
50
+ private strategy?;
51
+ private scteUnsub?;
36
52
  constructor(config?: AdsPluginConfig);
37
53
  setup(ctx: PluginContext): void;
38
54
  playAds(vastUrl: string): Promise<boolean>;
39
55
  playAdsFromXml(vastXml: string): Promise<boolean>;
40
56
  getDueMidrollBreaks(currentTime: number): AdsBreakConfig[];
41
57
  getDueMidrollBreak(currentTime: number): AdsBreakConfig | undefined;
58
+ requestSkip(reason?: 'button' | 'close' | 'api'): void;
42
59
  destroy(): void;
43
- /**
44
- * @deprecated Use SimidSession directly for full protocol support.
45
- * Best-effort SIMID iframe mounting from creative data.
46
- */
47
- tryMountSimidLayer(creative: any): void;
48
- private bindPrerollInterceptors;
49
- private shouldInterceptPreroll;
50
- private bindBreakScheduler;
51
- private startBreak;
52
- private startBreakGroup;
53
- private playBreakFromVast;
54
- private playNonLinearOnlyBreak;
55
- private playNonLinearOnlyBreakFromXml;
56
- private dismissNonLinear;
57
- private mountAdVideo;
58
- private bindAdSurfaceCommands;
59
- private bindTrackerAndTelemetry;
60
- private startAdPlayback;
61
- private waitForAdEnd;
62
- private requestSkip;
63
- private clearSession;
64
- private finish;
60
+ private bindScteSource;
61
+ private get csai();
62
+ private _lazyDom?;
63
+ private get lazyDom();
64
+ /** @internal */ get bus(): import("./types").PluginBus<AdsEvent> | undefined;
65
+ /** @internal */ get tracker(): any;
66
+ /** @internal */ get active(): boolean | undefined;
67
+ /** @internal */ set active(v: boolean | undefined);
68
+ /** @internal */ get overlay(): HTMLDivElement | undefined;
69
+ /** @internal */ get ctx(): PluginContext | undefined;
70
+ /** @internal */ get sessionUnsubs(): (() => void)[] | undefined;
71
+ /** @internal */ set sessionUnsubs(v: (() => void)[] | undefined);
72
+ /** @internal */ get resumeAfter(): boolean | undefined;
73
+ /** @internal */ get globalUnsubs(): (() => void)[];
74
+ /** @internal */ get adVideo(): HTMLVideoElement | undefined;
75
+ /** @internal */ set adVideo(v: HTMLVideoElement | undefined);
76
+ /** @internal */ get forcedMuteUntilInteraction(): boolean;
77
+ /** @internal */ set forcedMuteUntilInteraction(v: boolean);
78
+ /** @internal */ clearSession(): void | undefined;
79
+ /** @internal */ startAdPlayback(): void | undefined;
80
+ /** @internal */ mountAdVideo(...args: any[]): any;
81
+ /** @internal */ get vastClient(): any;
82
+ /** @internal */ set vastClient(v: any);
83
+ /** @internal */ shouldInterceptPreroll(): boolean | undefined;
84
+ /** @internal */ startBreak(...args: any[]): Promise<void> | undefined;
85
+ /** @internal */ startBreakGroup(...args: any[]): Promise<void> | undefined;
86
+ /** @internal */ playBreakFromVast(...args: any[]): Promise<boolean>;
65
87
  /** @internal */ getVastXmlText(input: any): Promise<string>;
66
88
  /** @internal */ normalizeVmapAdSource(adSource: any): any;
67
89
  /** @internal */ extractVastTagUri(adTagURI: any): string | undefined;
@@ -70,7 +92,7 @@ export declare class AdsPlugin implements PlayerPlugin {
70
92
  pendingPercent?: number | null;
71
93
  };
72
94
  /** @internal */ getVastInputFromBreak(b: AdsBreakConfig): {
73
- input?: VastInput;
95
+ input?: import("./types").VastInput;
74
96
  sourceType?: AdsSourceType;
75
97
  };
76
98
  /** @internal */ setSafeHTML(el: HTMLElement, html: string): void;
@@ -86,24 +108,22 @@ export declare class AdsPlugin implements PlayerPlugin {
86
108
  /** @internal */ collectPodAds(parsed: any): import("./types").PodAd[];
87
109
  /** @internal */ getPrerollBreak(): AdsBreakConfig | undefined;
88
110
  /** @internal */ getBreakId(b: AdsBreakConfig): string;
89
- /** @internal */ loadVmapAndMerge(existing: AdsBreakConfig[], src?: string): Promise<void>;
90
- /** @internal */ get resolvedBreaks(): AdsBreakConfig[];
91
- /** @internal */ set resolvedBreaks(v: AdsBreakConfig[]);
92
- /** @internal */ get pendingPercentBreaks(): any[];
93
- /** @internal */ set pendingPercentBreaks(v: any[]);
94
- /** @internal */ get playedBreaks(): Set<string>;
95
- /** @internal */ get vmapPending(): boolean;
96
- /** @internal */ get vmapLoadPromise(): Promise<void> | null;
111
+ /** @internal */ loadVmapAndMerge(existing: AdsBreakConfig[], src?: string): Promise<void | undefined>;
112
+ /** @internal */ get resolvedBreaks(): AdsBreakConfig[] | undefined;
113
+ /** @internal */ set resolvedBreaks(v: AdsBreakConfig[] | undefined);
114
+ /** @internal */ get pendingPercentBreaks(): any[] | undefined;
115
+ /** @internal */ set pendingPercentBreaks(v: any[] | undefined);
116
+ /** @internal */ get playedBreaks(): Set<string> | undefined;
117
+ /** @internal */ get vmapPending(): boolean | undefined;
118
+ /** @internal */ get vmapLoadPromise(): Promise<void> | null | undefined;
97
119
  /** @internal */ get pendingVmapSrc(): string | undefined;
98
- /** @internal */ isXmlString(src: string): boolean;
99
- /** @internal */ ensureOverlayMounted(): void;
120
+ /** @internal */ isXmlString(src: string): boolean | undefined;
121
+ /** @internal */ ensureOverlayMounted(): void | undefined;
100
122
  /** @internal */ mountCompanions(creative: any): void;
101
123
  /** @internal */ renderCompanion(companion: any): HTMLElement | null;
102
124
  /** @internal */ renderNonLinear(nl: any): HTMLElement | null;
103
- /** @internal */ ensureRawCaptions(mediaFileRaw: any, creative?: any): import("./types").CaptionResource[];
104
- /** @internal */ attachAdCaptionTracks(adVideo: HTMLVideoElement, raw: any, creative?: any): HTMLTrackElement[];
105
- private log;
106
- private warn;
125
+ /** @internal */ ensureRawCaptions(mediaFileRaw: any, creative?: any): import("./types").CaptionResource[] | undefined;
126
+ /** @internal */ attachAdCaptionTracks(adVideo: HTMLVideoElement, raw: any, creative?: any): HTMLTrackElement[] | undefined;
107
127
  }
108
128
  export { extendAds, installAds } from './install';
109
129
  //# sourceMappingURL=ads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ads.d.ts","sourceRoot":"","sources":["../../src/ads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ads.d.ts","sourceRoot":"","sources":["../../src/ads.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,46 @@
1
1
  /**
2
2
  * @openplayerjs/ads
3
3
  *
4
- * VAST / VMAP / SIMID / OMID ad-serving plugin for OpenPlayerJS.
4
+ * VAST / VMAP / SSAI / Hybrid ad-serving plugin for OpenPlayerJS.
5
5
  * Peer dependencies: @openplayerjs/core, @dailymotion/vast-client, @dailymotion/vmap
6
6
  *
7
- * ESM usage:
7
+ * Delivery modes (set via `adDelivery` in `AdsPluginConfig`):
8
+ * - 'csai' (default) — client-side insertion; fetches VAST/VMAP, renders an ad <video>
9
+ * - 'ssai' — server-side stitching; detects ad boundaries via SCTE-35 TextTrack cues
10
+ * - 'hybrid' — CSAI triggered by SCTE-35 OUT cues from the HLS engine
11
+ *
12
+ * ESM usage (CSAI):
8
13
  * import { AdsPlugin } from '@openplayerjs/ads';
9
- * new Core(el, { plugins: [new AdsPlugin({ breaks: [...] })] });
14
+ * new Core(el, {
15
+ * plugins: [new AdsPlugin({
16
+ * breaks: [{ at: 'preroll', source: { type: 'VAST', src: 'https://...' } }],
17
+ * })],
18
+ * });
19
+ *
20
+ * ESM usage (SSAI):
21
+ * new Core(el, {
22
+ * plugins: [new AdsPlugin({ adDelivery: 'ssai', ssai: { eventSink: (e) => log(e) } })],
23
+ * });
24
+ *
25
+ * ESM usage (Hybrid):
26
+ * new Core(el, {
27
+ * plugins: [new AdsPlugin({
28
+ * adDelivery: 'hybrid',
29
+ * hybrid: { scteSource: hlsEngine, resolveScteUrl: (cue) => myVastUrl(cue) },
30
+ * })],
31
+ * });
10
32
  *
11
33
  * UMD / CDN usage: load openplayer-ads.js after the main OpenPlayer bundle.
12
34
  * It auto-registers itself under window.OpenPlayerPlugins.ads.
13
35
  */
14
36
  export { AdsPlugin } from './ads';
15
- export { installAds, extendAds } from './install';
16
- export { SimidSession, SIMID_PLAYER, SIMID_CREATIVE } from './simid';
37
+ export { extendAds, installAds } from './install';
17
38
  export { OmidSession } from './omid';
18
- export type { AdsEvent, AdsPluginConfig, AdsSource, AdsBreakConfig, AdsSourceType, NormalizedMediaFile, AdVerification, } from './types';
39
+ export { SIMID_CREATIVE, SIMID_PLAYER, SimidSession } from './simid';
40
+ export { CsaiAdStrategy } from './strategies/csai';
41
+ export { HybridAdStrategy } from './strategies/hybrid';
42
+ export { decodeSplice } from './strategies/scte35';
43
+ export type { SpliceCommand } from './strategies/scte35';
44
+ export { SsaiAdStrategy } from './strategies/ssai';
45
+ export type { AdDeliveryMode, AdLifecycleEvent, AdsBreakConfig, AdSessionStrategy, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType, AdTagRequest, AdVerification, CsaiAdConfig, HybridAdConfig, NormalizedMediaFile, ScteOutCue, ScteSource, SsaiAdConfig, } from './types';
19
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,YAAY,EACV,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,SAAS,CAAC"}
@@ -55,5 +55,5 @@ export declare class AdScheduler {
55
55
  private parseVmapFallback;
56
56
  reset(): void;
57
57
  }
58
- export { };
58
+ export {};
59
59
  //# sourceMappingURL=schedule.d.ts.map
@@ -119,13 +119,15 @@ export declare class SimidSession {
119
119
  */
120
120
  private outgoingFormat;
121
121
  private _targetOrigin;
122
+ /** Authoritative window to postMessage to — pinned from event.source on first valid message. */
123
+ private creativeWindow;
122
124
  constructor(iframe: HTMLIFrameElement, adVideo: HTMLVideoElement, callbacks: SimidCallbacks, creativeInfo?: SimidCreativeInfo | undefined);
123
125
  private nextMsgId;
124
126
  /**
125
127
  * Returns the target origin for postMessage calls to the creative iframe.
126
- * Lazily derived from iframe.src so we don't need a constructor argument.
127
- * Falls back to '*' only when the src is not an absolute URL (e.g. data: URIs
128
- * used in tests), which is an acceptable edge case.
128
+ * Prefer the origin captured from the first incoming message (event.origin),
129
+ * which reflects where the iframe actually landed after any redirects.
130
+ * Falls back to deriving from iframe.src until the first message arrives.
129
131
  */
130
132
  private getTargetOrigin;
131
133
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"simid.d.ts","sourceRoot":"","sources":["../../src/simid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simid.d.ts","sourceRoot":"","sources":["../../src/simid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ import type { PluginContext } from '@openplayerjs/core';
2
+ import { AdDomManager } from '../ad-dom';
3
+ import { CaptionManager } from '../caption-manager';
4
+ import { AdScheduler } from '../schedule';
5
+ import type { AdDeliveryMode, AdSessionStrategy, AdsBreakConfig, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType, ScteSource, VastInput } from '../types';
6
+ import { PluginBus } from '../types';
7
+ export type NormalizedCsaiConfig = {
8
+ sources: AdsSource[];
9
+ breaks: AdsBreakConfig[];
10
+ interceptPlayForPreroll: boolean;
11
+ autoPlayOnReady: boolean;
12
+ allowNativeControls: boolean;
13
+ resumeContent: boolean;
14
+ preferredMediaTypes: string[];
15
+ debug: boolean;
16
+ breakTolerance: number;
17
+ adSourcesMode: 'waterfall' | 'playlist';
18
+ omid: {
19
+ accessMode?: 'domain' | 'limited';
20
+ };
21
+ labels: {
22
+ skip?: string;
23
+ advertisement?: string;
24
+ adEnded?: string;
25
+ };
26
+ adDelivery: AdDeliveryMode;
27
+ mountEl?: HTMLElement;
28
+ mountSelector?: string;
29
+ nonLinearContainer?: HTMLElement;
30
+ nonLinearSelector?: string;
31
+ companionContainer?: HTMLElement;
32
+ companionSelector?: string;
33
+ requestInterceptor?: AdsPluginConfig['requestInterceptor'];
34
+ eventSink?: AdsPluginConfig['eventSink'];
35
+ scteSource?: ScteSource;
36
+ resolveScteUrl?: AdsPluginConfig['resolveScteUrl'];
37
+ };
38
+ /**
39
+ * Client-side ad insertion strategy.
40
+ *
41
+ * Owns all CSAI-specific logic: scheduling, VAST fetching, ad video rendering,
42
+ * tracking, OMID/SIMID sessions, and break lifecycle management.
43
+ *
44
+ * `HybridAdStrategy` extends this class and adds SCTE-35 cue bridging on top.
45
+ */
46
+ export declare class CsaiAdStrategy implements AdSessionStrategy {
47
+ readonly mode: AdDeliveryMode;
48
+ /** @internal */ ctx: PluginContext;
49
+ /** @internal */ bus: PluginBus<AdsEvent>;
50
+ /** @internal */ cfg: NormalizedCsaiConfig;
51
+ /** @internal */ scheduler: AdScheduler;
52
+ /** @internal */ captionMgr: CaptionManager;
53
+ /** @internal */ _dom?: AdDomManager;
54
+ private overlayId;
55
+ /** @internal */ overlay: HTMLDivElement;
56
+ /** @internal */ adVideo?: HTMLVideoElement;
57
+ private adEndPromise;
58
+ private adEngineDetach?;
59
+ private currentBreakMeta?;
60
+ /** @internal */ vastClient: any;
61
+ /** @internal */ tracker?: any;
62
+ private _lastCreative;
63
+ /** @internal */ globalUnsubs: (() => void)[];
64
+ /** @internal */ sessionUnsubs: (() => void)[];
65
+ /** @internal */ active: boolean;
66
+ /** @internal */ resumeAfter: boolean;
67
+ private contentMedia?;
68
+ private contentHadControls;
69
+ private startingBreak;
70
+ private userPlayIntent;
71
+ /** @internal */ forcedMuteUntilInteraction: boolean;
72
+ private syncingVolume;
73
+ /**
74
+ * @internal
75
+ * Dispatch proxies — AdsPlugin replaces these after init() so that
76
+ * `jest.spyOn(plugin, 'startBreak')` etc. can intercept scheduler calls.
77
+ */
78
+ _dispatchStartBreak: (b: AdsBreakConfig, kind: 'preroll' | 'midroll' | 'postroll' | 'auto', opts?: {
79
+ suppressResume?: boolean;
80
+ }) => Promise<void>;
81
+ _dispatchStartBreakGroup: (breaks: AdsBreakConfig[], kind: 'preroll' | 'midroll' | 'postroll' | 'auto') => Promise<void>;
82
+ _dispatchPlayBreakFromVast: (input: VastInput, meta: {
83
+ kind: 'preroll' | 'midroll' | 'postroll' | 'auto' | 'manual';
84
+ id: string;
85
+ sourceType?: AdsSourceType;
86
+ }, opts?: {
87
+ suppressResumeOnError?: boolean;
88
+ suppressResumeOnSuccess?: boolean;
89
+ }) => Promise<boolean>;
90
+ _dispatchGetVastXmlText: (input: VastInput) => Promise<string>;
91
+ _dispatchBuildParsedForNonLinear: (xmlText: string) => XMLDocument | null;
92
+ _dispatchMountAdVideo: (contentMedia: HTMLMediaElement, mediaFile: {
93
+ fileURL: string;
94
+ raw: any;
95
+ }, creative?: any) => void;
96
+ _dispatchStartAdPlayback: () => void;
97
+ private simidSession?;
98
+ private omidSession?;
99
+ init(ctx: PluginContext, config: AdsPluginConfig): void;
100
+ destroy(): void;
101
+ playAds(vastUrl: string): Promise<boolean>;
102
+ playAdsFromXml(vastXml: string): Promise<boolean>;
103
+ getDueMidrollBreaks(currentTime: number): AdsBreakConfig[];
104
+ getDueMidrollBreak(currentTime: number): AdsBreakConfig | undefined;
105
+ requestSkip(reason?: 'button' | 'close' | 'api'): void;
106
+ /** @internal */
107
+ get dom(): AdDomManager;
108
+ /** @internal */
109
+ set dom(v: AdDomManager);
110
+ private bindPrerollInterceptors;
111
+ /** @internal */ shouldInterceptPreroll(): boolean;
112
+ private bindBreakScheduler;
113
+ /** @internal */ startBreak(b: AdsBreakConfig, kind: 'preroll' | 'midroll' | 'postroll' | 'auto', opts?: {
114
+ suppressResume?: boolean;
115
+ }): Promise<void>;
116
+ /** @internal */ startBreakGroup(breaks: AdsBreakConfig[], kind: 'preroll' | 'midroll' | 'postroll' | 'auto'): Promise<void>;
117
+ /** @internal */ playBreakFromVast(input: VastInput, meta: {
118
+ kind: 'preroll' | 'midroll' | 'postroll' | 'auto' | 'manual';
119
+ id: string;
120
+ sourceType?: AdsSourceType;
121
+ }, opts?: {
122
+ suppressResumeOnError?: boolean;
123
+ suppressResumeOnSuccess?: boolean;
124
+ }): Promise<boolean>;
125
+ private playNonLinearOnlyBreak;
126
+ private playNonLinearOnlyBreakFromXml;
127
+ private dismissNonLinear;
128
+ private mountAdVideo;
129
+ private bindAdSurfaceCommands;
130
+ private bindTrackerAndTelemetry;
131
+ /** @internal */ startAdPlayback(): void;
132
+ private waitForAdEnd;
133
+ /** @internal */ clearSession(): void;
134
+ private finish;
135
+ protected log(...args: any[]): void;
136
+ protected warn(...args: any[]): void;
137
+ /** @internal */ getVastXmlText(input: any): Promise<string>;
138
+ /** @internal */ buildParsedForNonLinearFromXml(xmlText: string): XMLDocument;
139
+ /** @internal */ computeSkipAtSecondsDelegate(skipOffset: string | undefined, duration: number): number | undefined;
140
+ /** @internal */ collectPodAdsDelegate(parsed: any): import("../types").PodAd[];
141
+ /** @internal */ getPrerollBreak(): AdsBreakConfig | undefined;
142
+ /** @internal */ getBreakId(b: AdsBreakConfig): string;
143
+ /** @internal */ loadVmapAndMerge(existing: AdsBreakConfig[], src?: string): Promise<void>;
144
+ /** @internal */ get resolvedBreaks(): AdsBreakConfig[];
145
+ /** @internal */ set resolvedBreaks(v: AdsBreakConfig[]);
146
+ /** @internal */ get pendingPercentBreaks(): any[];
147
+ /** @internal */ set pendingPercentBreaks(v: any[]);
148
+ /** @internal */ get playedBreaks(): Set<string>;
149
+ /** @internal */ get vmapPending(): boolean;
150
+ /** @internal */ get vmapLoadPromise(): Promise<void> | null;
151
+ /** @internal */ get pendingVmapSrc(): string | undefined;
152
+ /** @internal */ isXmlString(src: string): boolean;
153
+ /** @internal */ ensureOverlayMounted(): void;
154
+ /** @internal */ mountCompanions(creative: any): void;
155
+ /** @internal */ renderCompanion(companion: any): HTMLElement | null;
156
+ /** @internal */ renderNonLinear(nl: any): HTMLElement | null;
157
+ /** @internal */ ensureRawCaptions(mediaFileRaw: any, creative?: any): import("../types").CaptionResource[];
158
+ /** @internal */ attachAdCaptionTracks(adVideo: HTMLVideoElement, raw: any, creative?: any): HTMLTrackElement[];
159
+ }
160
+ //# sourceMappingURL=csai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csai.d.ts","sourceRoot":"","sources":["../../../src/strategies/csai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { AdDeliveryMode } from '../types';
2
+ import { CsaiAdStrategy } from './csai';
3
+ /**
4
+ * CSAI + SCTE-35 hybrid ad delivery strategy.
5
+ *
6
+ * Behaves identically to `CsaiAdStrategy` for ad rendering. The SCTE-35 cue
7
+ * bridging (mapping `engine.onCue` → `playAds()`) is handled by `AdsPlugin`
8
+ * so that spy/intercept tests can observe calls at the public API boundary.
9
+ *
10
+ * Configuration (prefer the sub-config form; flat aliases kept for backward compat):
11
+ * ```ts
12
+ * new AdsPlugin({
13
+ * adDelivery: 'hybrid',
14
+ * hybrid: {
15
+ * scteSource: hlsEngine, // any object with onCue?: (cue) => void
16
+ * resolveScteUrl: (cue) => adServerUrl(cue.id),
17
+ * },
18
+ * });
19
+ * ```
20
+ */
21
+ export declare class HybridAdStrategy extends CsaiAdStrategy {
22
+ readonly mode: AdDeliveryMode;
23
+ }
24
+ //# sourceMappingURL=hybrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../../src/strategies/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,SAAkB,IAAI,EAAE,cAAc,CAAY;CACnD"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Minimal SCTE-35 splice_info_section decoder.
3
+ *
4
+ * Accepts the three forms a splice_info_section can arrive in:
5
+ * - ArrayBuffer (DataCue.data from enableID3MetadataCues)
6
+ * - Uint8Array (same, already sliced)
7
+ * - base64 string (EXT-X-DATERANGE X-SCTE35 attribute value)
8
+ *
9
+ * Only splice_insert (0x05) and time_signal (0x06) are decoded.
10
+ * All other command types are returned as { type: 'unknown' }.
11
+ */
12
+ export type SpliceCommand = {
13
+ type: 'splice_insert';
14
+ outOfNetwork: boolean;
15
+ durationSecs: number | null;
16
+ autoReturn: boolean;
17
+ } | {
18
+ type: 'time_signal';
19
+ } | {
20
+ type: 'unknown';
21
+ commandType: number;
22
+ };
23
+ /**
24
+ * Decode a SCTE-35 splice_info_section.
25
+ * Returns `null` if the buffer cannot be parsed as a valid section.
26
+ */
27
+ export declare function decodeSplice(source: ArrayBufferLike | Uint8Array | string): SpliceCommand | null;
28
+ //# sourceMappingURL=scte35.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scte35.d.ts","sourceRoot":"","sources":["../../../src/strategies/scte35.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAClG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,IAAI,CAsDhG"}
@@ -0,0 +1,37 @@
1
+ import type { PluginContext } from '@openplayerjs/core';
2
+ import type { AdSessionStrategy, AdsPluginConfig } from '../types';
3
+ /**
4
+ * Server-side ad insertion strategy.
5
+ *
6
+ * Responsibilities:
7
+ * - Discover hls.js metadata TextTrack objects created by
8
+ * `enableDateRangeMetadataCues` / `enableID3MetadataCues`.
9
+ * - Subscribe to DOM `cuechange` events; parse SCTE-35 splice commands
10
+ * from active cues (DataCue ArrayBuffer path for ID3, or custom attributes
11
+ * for EXT-X-DATERANGE).
12
+ * - Track active ad breaks and emit IAB quartile events via `timeupdate`.
13
+ * - Report all lifecycle events through the configured `AdEventSink`.
14
+ *
15
+ * What this strategy does NOT do:
16
+ * - Fetch VAST/VMAP (no outbound ad-tagged network requests — ad-blocker-proof).
17
+ * - Render an ad <video> element (the content stream IS the ad stream).
18
+ * - Acquire a playback lease (the stream is continuous).
19
+ */
20
+ export declare class SsaiAdStrategy implements AdSessionStrategy {
21
+ readonly mode: "ssai";
22
+ private ctx;
23
+ private sink;
24
+ private boundTracks;
25
+ private activeBreaks;
26
+ private cleanups;
27
+ init(ctx: PluginContext, config: AdsPluginConfig): void;
28
+ destroy(): void;
29
+ private scanTracks;
30
+ private bindTrack;
31
+ private handleActiveCues;
32
+ private processCue;
33
+ private startBreak;
34
+ private endBreak;
35
+ private checkQuartiles;
36
+ }
37
+ //# sourceMappingURL=ssai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssai.d.ts","sourceRoot":"","sources":["../../../src/strategies/ssai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAoB,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAUrF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IACtD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAEhC,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,IAAI,CAAkD;IAE9D,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAsB;IAEtC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IA4BvD,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,UAAU;IAiElB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,cAAc;CAkBvB"}