@openplayerjs/ads 3.1.1 → 3.2.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.
@@ -0,0 +1,50 @@
1
+ import type { AdsPluginConfig } from './types';
2
+ export declare function setSafeHTMLFn(el: HTMLElement, html: string): void;
3
+ type SkipCallback = () => void;
4
+ export declare class AdDomManager {
5
+ private overlay;
6
+ private cfg;
7
+ private getAdVideo;
8
+ private getTracker;
9
+ private onSkipCallback;
10
+ private skipWrap?;
11
+ private skipBtn?;
12
+ skipOffsetRaw?: string;
13
+ skipAtSeconds?: number;
14
+ companionWrap?: HTMLDivElement;
15
+ nonLinearWrap?: HTMLDivElement;
16
+ private resolvedNonLinearContainer?;
17
+ private resolvedCompanionContainer?;
18
+ private sessionUnsubs;
19
+ constructor(overlay: HTMLDivElement, cfg: Pick<AdsPluginConfig, 'nonLinearContainer' | 'nonLinearSelector' | 'companionContainer' | 'companionSelector' | 'mountEl' | 'mountSelector'>, getAdVideo: () => HTMLVideoElement | undefined, getTracker: () => any, onSkipCallback: SkipCallback);
20
+ addSessionUnsub(fn: () => void): void;
21
+ clearSession(): void;
22
+ resolveContainer(el?: HTMLElement, selector?: string): HTMLElement | undefined;
23
+ getNonLinearContainer(): HTMLElement | undefined;
24
+ getCompanionContainer(): HTMLElement | undefined;
25
+ resolveMount(media: HTMLMediaElement): HTMLElement;
26
+ ensureOverlayMounted(media: HTMLMediaElement): void;
27
+ setSafeHTML(el: HTMLElement, html: string): void;
28
+ safeWindowOpen(rawUrl: string): void;
29
+ private ensureSkipDom;
30
+ hideSkipUi(): void;
31
+ setupSkipUIForPodItem(item: {
32
+ skipOffset?: string;
33
+ creative: any;
34
+ sequence?: number;
35
+ }, log: (...a: any[]) => void): void;
36
+ requestSkip(reason: 'button' | 'close' | 'api', adVideo: HTMLVideoElement | undefined, currentBreakMeta: {
37
+ kind: string;
38
+ breakId: string;
39
+ } | undefined, emitSkip: (meta: any) => void, log: (...a: any[]) => void): void;
40
+ clearAdOverlays(): void;
41
+ mountCompanions(creative: any): void;
42
+ renderCompanion(companion: any): HTMLElement | null;
43
+ nonLinearSuggestedDurationSeconds(nl: any): number;
44
+ ensureNonLinearDom(): void;
45
+ renderNonLinear(nl: any): HTMLElement | null;
46
+ mountNonLinear(creative: any): void;
47
+ mountSimidIframe(url: string): HTMLIFrameElement;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=ad-dom.d.ts.map
@@ -0,0 +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,QAgC1D;AAED,KAAK,YAAY,GAAG,MAAM,IAAI,CAAC;AAE/B,qBAAa,YAAY;IAerB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IArBxB,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,EACf,oBAAoB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,SAAS,GAAG,eAAe,CACtH,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;IAkCzC,cAAc,CAAC,MAAM,EAAE,MAAM;IAU7B,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,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,EAAE,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI;IAyBjN,eAAe;IAaf,eAAe,CAAC,QAAQ,EAAE,GAAG;IA8B7B,eAAe,CAAC,SAAS,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IAmDnD,iCAAiC,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM;IAelD,kBAAkB;IAiBlB,eAAe,CAAC,EAAE,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IAqD5C,cAAc,CAAC,QAAQ,EAAE,GAAG;IAoB5B,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;CAyBjD"}
@@ -1,37 +1,6 @@
1
1
  import type { PlayerPlugin, PluginContext } from '@openplayerjs/core';
2
- export type AdsEvent = 'ads:requested' | 'ads:break:start' | 'ads:break:end' | 'ads:ad:start' | 'ads:ad:end' | 'ads:loaded' | 'ads:impression' | 'ads:quartile' | 'ads:clickthrough' | 'ads:error' | 'ads:timeupdate' | 'ads:duration' | 'ads:allAdsCompleted' | 'ads:skip' | 'ads:pause' | 'ads:resume' | 'ads:mute' | 'ads:unmute' | 'ads:volumeChange';
3
- type BreakAt = 'preroll' | 'postroll' | number;
4
- export type AdsSourceType = 'VAST' | 'VMAP' | 'NONLINEAR';
5
- export type AdsSource = {
6
- type: AdsSourceType;
7
- src: string;
8
- };
9
- export type AdsBreakConfig = {
10
- id?: string;
11
- at: BreakAt;
12
- source?: AdsSource;
13
- sources?: AdsSource[];
14
- once?: boolean;
15
- timeOffset?: string;
16
- };
17
- export type AdsPluginConfig = {
18
- sources?: AdsSource | AdsSource[];
19
- breaks?: AdsBreakConfig[];
20
- interceptPlayForPreroll?: boolean;
21
- autoPlayOnReady?: boolean;
22
- mountEl?: HTMLElement;
23
- mountSelector?: string;
24
- nonLinearContainer?: HTMLElement;
25
- nonLinearSelector?: string;
26
- companionContainer?: HTMLElement;
27
- companionSelector?: string;
28
- allowNativeControls?: boolean;
29
- resumeContent?: boolean;
30
- preferredMediaTypes?: string[];
31
- debug?: boolean;
32
- breakTolerance?: number;
33
- adSourcesMode?: 'waterfall' | 'playlist';
34
- };
2
+ import type { AdsBreakConfig, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType, VastInput } from './types';
3
+ export type { AdsBreakConfig, AdsEvent, AdsPluginConfig, AdsSource, AdsSourceType };
35
4
  export declare class AdsPlugin implements PlayerPlugin {
36
5
  name: string;
37
6
  version: string;
@@ -40,20 +9,10 @@ export declare class AdsPlugin implements PlayerPlugin {
40
9
  private bus;
41
10
  private _lastCreative;
42
11
  private overlayId;
43
- private prevActiveCaptionSig;
44
12
  private adEndPromise;
45
- private adTrackEls;
46
13
  private cfg;
47
14
  private overlay;
48
15
  private adVideo?;
49
- private skipWrap?;
50
- private skipBtn?;
51
- private skipOffsetRaw?;
52
- private skipAtSeconds?;
53
- private companionWrap?;
54
- private nonLinearWrap?;
55
- private resolvedNonLinearContainer?;
56
- private resolvedCompanionContainer?;
57
16
  private currentBreakMeta?;
58
17
  private vastClient;
59
18
  private tracker?;
@@ -64,103 +23,87 @@ export declare class AdsPlugin implements PlayerPlugin {
64
23
  private contentMedia?;
65
24
  private contentHadControls;
66
25
  private startingBreak;
67
- private playedBreaks;
68
26
  private userPlayIntent;
69
27
  private forcedMuteUntilInteraction;
70
- private resolvedBreaks;
71
- private pendingPercentBreaks;
72
28
  private syncingVolume;
73
- private vmapLoadPromise;
74
- private vmapPending;
75
- private pendingVmapSrc?;
29
+ private scheduler;
30
+ private captionMgr;
31
+ private _dom?;
32
+ private get dom();
33
+ private set dom(value);
34
+ private simidSession?;
35
+ private omidSession?;
76
36
  constructor(config?: AdsPluginConfig);
77
37
  setup(ctx: PluginContext): void;
78
38
  playAds(vastUrl: string): Promise<boolean>;
79
39
  playAdsFromXml(vastXml: string): Promise<boolean>;
80
40
  getDueMidrollBreaks(currentTime: number): AdsBreakConfig[];
81
- /** Returns the earliest due midroll break, if any. (Convenience for tests/debugging.) */
82
41
  getDueMidrollBreak(currentTime: number): AdsBreakConfig | undefined;
83
42
  destroy(): void;
84
- private inferSourceTypeForUrl;
85
- private resolveContainer;
86
- private getNonLinearContainer;
87
- private getCompanionContainer;
88
- private getSource;
89
- private getPrimaryVastLikeSource;
90
- private isXmlString;
91
- private getVastXmlText;
92
- private buildParsedForNonLinearFromXml;
93
- private setSafeHTML;
94
- private log;
95
- private warn;
96
- private rebuildSchedule;
97
- private normalizeVmapAdSource;
98
- private extractVastTagUri;
99
- private loadVmapAndMerge;
100
- private resolveMount;
101
- private parseVmapTimeOffset;
102
- private getVastInputFromBreak;
103
- private getPostrollBreak;
104
- private toXmlDocument;
105
- private getBreakId;
106
- private getPrerollBreak;
107
- private shouldInterceptPreroll;
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;
108
48
  private bindPrerollInterceptors;
49
+ private shouldInterceptPreroll;
109
50
  private bindBreakScheduler;
110
51
  private startBreak;
111
52
  private startBreakGroup;
112
- private extractAdsFromParsed;
113
- private collectPodAds;
114
- private collectPodAdsFromXml;
115
- private clearAdTracks;
116
- private buildCaptionsFromVastMediaFileRaw;
117
- private ensureRawCaptions;
118
- private attachAdCaptionTracks;
119
- private captionsSignature;
120
- private listCaptionTracks;
121
- private captureActiveCaptionTrack;
122
- private restoreActiveTextTrack;
123
- private extractClosedCaptions;
124
- private removeAdCaptions;
125
- private pickBestMediaFile;
126
- private extractSkipOffsetFromCreative;
127
- private parseTimecodeToSeconds;
128
- private computeSkipAtSeconds;
129
- private ensureSkipDom;
130
- private hideSkipUi;
131
- private setupSkipUIForPodItem;
132
- private onSkip;
133
- private requestSkip;
134
- private clearAdOverlays;
135
- private mountCompanions;
136
- private renderCompanion;
137
- private collectNonLinearCreatives;
138
- private collectNonLinearFromXml;
139
- private playNonLinearOnlyBreakFromXml;
140
- private ensureNonLinearDom;
141
- private renderNonLinear;
142
- private mountNonLinear;
143
- private nonLinearSuggestedDurationSeconds;
53
+ private playBreakFromVast;
144
54
  private playNonLinearOnlyBreak;
55
+ private playNonLinearOnlyBreakFromXml;
56
+ private dismissNonLinear;
145
57
  private mountAdVideo;
146
58
  private bindAdSurfaceCommands;
147
59
  private bindTrackerAndTelemetry;
148
- private getClickThroughUrl;
149
- private safeWindowOpen;
150
- private ensureOverlayMounted;
151
- /**
152
- * Best-effort SIMID mounting helper.
153
- * Some ad servers provide multiple SIMID iframe URLs; we mount all of them.
154
- * This is intentionally permissive and does not block playback if the creative doesn't contain SIMID data.
155
- */
156
- tryMountSimidLayer(creative: any): void;
157
- private playBreakFromVast;
158
- private waitForAdEnd;
159
60
  private startAdPlayback;
61
+ private waitForAdEnd;
62
+ private requestSkip;
160
63
  private clearSession;
161
64
  private finish;
65
+ /** @internal */ getVastXmlText(input: any): Promise<string>;
66
+ /** @internal */ normalizeVmapAdSource(adSource: any): any;
67
+ /** @internal */ extractVastTagUri(adTagURI: any): string | undefined;
68
+ /** @internal */ parseVmapTimeOffset(timeOffset: any): {
69
+ at: "preroll" | "postroll" | number;
70
+ pendingPercent?: number | null;
71
+ };
72
+ /** @internal */ getVastInputFromBreak(b: AdsBreakConfig): {
73
+ input?: VastInput;
74
+ sourceType?: AdsSourceType;
75
+ };
76
+ /** @internal */ setSafeHTML(el: HTMLElement, html: string): void;
77
+ /** @internal */ collectNonLinearCreatives(parsed: any): {
78
+ ad: any;
79
+ creative: any;
80
+ nonLinear: any;
81
+ sequence?: number;
82
+ }[];
83
+ /** @internal */ collectNonLinearFromXml(doc: any): import("./types").XmlNonLinearItem[];
84
+ /** @internal */ buildParsedForNonLinearFromXml(xmlText: string): XMLDocument;
85
+ /** @internal */ computeSkipAtSeconds(skipOffset: string | undefined, duration: number): number | undefined;
86
+ /** @internal */ collectPodAds(parsed: any): import("./types").PodAd[];
87
+ /** @internal */ getPrerollBreak(): AdsBreakConfig | undefined;
88
+ /** @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;
97
+ /** @internal */ get pendingVmapSrc(): string | undefined;
98
+ /** @internal */ isXmlString(src: string): boolean;
99
+ /** @internal */ ensureOverlayMounted(): void;
100
+ /** @internal */ mountCompanions(creative: any): void;
101
+ /** @internal */ renderCompanion(companion: any): HTMLElement | null;
102
+ /** @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;
162
107
  }
163
- export declare function installAds(PlayerCtor: any): void;
164
- export declare function extendAds(player: any, plugin: AdsPlugin): void;
165
- export {};
108
+ export { extendAds, installAds } from './install';
166
109
  //# 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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"}
@@ -0,0 +1,14 @@
1
+ import type { CaptionResource } from './types';
2
+ export declare class CaptionManager {
3
+ private adTrackEls;
4
+ private prevActiveCaptionSig;
5
+ captionsSignature(t: any): string;
6
+ listCaptionTracks(media: any): any[];
7
+ captureActiveCaptionTrack(media: any): void;
8
+ restoreActiveTextTrack(media: HTMLMediaElement | undefined): void;
9
+ ensureRawCaptions(mediaFileRaw: any, creative?: any): CaptionResource[];
10
+ attachAdCaptionTracks(adVideo: HTMLVideoElement, mediaFileRaw: any, creative?: any): HTMLTrackElement[];
11
+ clearAdTracks(): void;
12
+ removeAdCaptions(): void;
13
+ }
14
+ //# sourceMappingURL=caption-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caption-manager.d.ts","sourceRoot":"","sources":["../../src/caption-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM;IAOjC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE;IAcpC,yBAAyB,CAAC,KAAK,EAAE,GAAG;IAOpC,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS;IAa1D,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,eAAe,EAAE;IAuBvE,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,gBAAgB,EAAE;IAsBvG,aAAa;IAKb,gBAAgB;CAUjB"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @openplayerjs/ads
3
3
  *
4
- * VAST / VMAP / VPAID ad-serving plugin for OpenPlayerJS.
4
+ * VAST / VMAP / SIMID / OMID ad-serving plugin for OpenPlayerJS.
5
5
  * Peer dependencies: @openplayerjs/core, @dailymotion/vast-client, @dailymotion/vmap
6
6
  *
7
7
  * ESM usage:
@@ -12,5 +12,8 @@
12
12
  * It auto-registers itself under window.OpenPlayerPlugins.ads.
13
13
  */
14
14
  export { AdsPlugin } from './ads';
15
- export { extendAds, installAds } from './ads';
15
+ export { installAds, extendAds } from './install';
16
+ export { SimidSession, SIMID_PLAYER, SIMID_CREATIVE } from './simid';
17
+ export { OmidSession } from './omid';
18
+ export type { AdsEvent, AdsPluginConfig, AdsSource, AdsBreakConfig, AdsSourceType, NormalizedMediaFile, AdVerification, } from './types';
16
19
  //# 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;AAElC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC"}
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"}
@@ -0,0 +1,4 @@
1
+ import type { AdsPlugin } from './ads';
2
+ export declare function installAds(PlayerCtor: any): void;
3
+ export declare function extendAds(player: any, plugin: AdsPlugin): void;
4
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,UAAU,CAAC,UAAU,EAAE,GAAG,QAoCzC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,QAOvD"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * OmidSession — Full IAB OMID (Open Measurement Interface Definition) integration.
3
+ *
4
+ * Integrates with the IAB OMID Session Client SDK, which must be loaded by the page
5
+ * before ads play (e.g. <script src="omweb-v1.js"></script>).
6
+ *
7
+ * The SDK exposes:
8
+ * window.OmidSessionClient — namespace containing AdSession, Context, Partner,
9
+ * VideoEvents, AdEvents, etc.
10
+ *
11
+ * Spec: https://iabtechlab.com/standards/open-measurement-sdk/
12
+ *
13
+ * Usage:
14
+ * if (OmidSession.isAvailable()) {
15
+ * const omid = new OmidSession(adVideo, verifications, 'limited');
16
+ * omid.impression();
17
+ * omid.start(duration, volume);
18
+ * // … quartile calls …
19
+ * omid.destroy();
20
+ * }
21
+ */
22
+ import type { AdVerification } from './types';
23
+ type OmidPlayerState = 'normal' | 'minimized' | 'collapsed' | 'expanded' | 'fullscreen' | 'background';
24
+ type OmidInteractionType = 'click' | 'invocationCountExceeded' | 'acceptedLinearInvitation' | 'other';
25
+ export declare class OmidSession {
26
+ private adSession;
27
+ private videoEvents;
28
+ private adEvents;
29
+ private destroyed;
30
+ /**
31
+ * Returns true if the IAB OMID Session Client SDK is present on the page.
32
+ * Call this before constructing OmidSession to avoid unnecessary errors.
33
+ */
34
+ static isAvailable(): boolean;
35
+ /**
36
+ * Injects a verification script into the page as a <script> element.
37
+ * The `params` string is passed via `omidVerificationParameters` on the script element
38
+ * so the verification provider can read it from its own initialization logic.
39
+ */
40
+ static injectVerificationScript(scriptUrl: string, params: string): HTMLScriptElement;
41
+ constructor(adVideo: HTMLVideoElement, verifications: AdVerification[], accessMode?: 'domain' | 'limited');
42
+ /**
43
+ * Must be called once before any tracking events.
44
+ * Triggers the OMID session start and fires an impression.
45
+ */
46
+ impression(): void;
47
+ loaded(isSkippable?: boolean, skipOffset?: number, isAutoPlay?: boolean, position?: string): void;
48
+ start(duration: number, volume: number): void;
49
+ firstQuartile(): void;
50
+ midpoint(): void;
51
+ thirdQuartile(): void;
52
+ complete(): void;
53
+ pause(): void;
54
+ resume(): void;
55
+ skipped(): void;
56
+ volumeChange(volume: number): void;
57
+ playerStateChange(state: OmidPlayerState): void;
58
+ adUserInteraction(interactionType: OmidInteractionType): void;
59
+ bufferStart(): void;
60
+ bufferFinish(): void;
61
+ destroy(): void;
62
+ }
63
+ export {};
64
+ //# sourceMappingURL=omid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omid.d.ts","sourceRoot":"","sources":["../../src/omid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,KAAK,eAAe,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AACvG,KAAK,mBAAmB,GAAG,OAAO,GAAG,yBAAyB,GAAG,0BAA0B,GAAG,OAAO,CAAC;AAmDtG,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;IAI7B;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB;gBAUnF,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,cAAc,EAAE,EAC/B,UAAU,GAAE,QAAQ,GAAG,SAAqB;IAkC9C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAWlB,MAAM,CAAC,WAAW,UAAQ,EAAE,UAAU,SAAI,EAAE,UAAU,UAAQ,EAAE,QAAQ,SAAY,GAAG,IAAI;IAY3F,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS7C,aAAa,IAAI,IAAI;IASrB,QAAQ,IAAI,IAAI;IAShB,aAAa,IAAI,IAAI;IASrB,QAAQ,IAAI,IAAI;IAShB,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,IAAI;IASd,OAAO,IAAI,IAAI;IASf,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASlC,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAS/C,iBAAiB,CAAC,eAAe,EAAE,mBAAmB,GAAG,IAAI;IAS7D,WAAW,IAAI,IAAI;IASnB,YAAY,IAAI,IAAI;IASpB,OAAO,IAAI,IAAI;CAYhB"}
@@ -0,0 +1,59 @@
1
+ import type { PluginContext } from '@openplayerjs/core';
2
+ import type { AdsBreakConfig, AdsPluginConfig, AdsSource, AdsSourceType, VastInput } from './types';
3
+ export declare function normalizeVmapAdSourceFn(adSource: any): any | undefined;
4
+ export declare function extractVastTagUriFn(adTagURI: any): string | undefined;
5
+ export declare function parseVmapTimeOffsetFn(timeOffset: any): {
6
+ at: 'preroll' | 'postroll' | number;
7
+ pendingPercent?: number | null;
8
+ };
9
+ export declare function getVastInputFromBreakFn(b: AdsBreakConfig): {
10
+ input?: VastInput;
11
+ sourceType?: AdsSourceType;
12
+ };
13
+ export declare function getBreakIdFn(b: AdsBreakConfig): string;
14
+ type PendingPercentBreak = {
15
+ id: string;
16
+ percent: number;
17
+ once: boolean;
18
+ source: AdsSource;
19
+ };
20
+ export declare class AdScheduler {
21
+ private cfg;
22
+ private ctx;
23
+ private warn;
24
+ private onVmapError;
25
+ resolvedBreaks: AdsBreakConfig[];
26
+ pendingPercentBreaks: PendingPercentBreak[];
27
+ playedBreaks: Set<string>;
28
+ vmapPending: boolean;
29
+ vmapLoadPromise: Promise<void> | null;
30
+ pendingVmapSrc?: string;
31
+ constructor(cfg: Pick<Required<Omit<AdsPluginConfig, 'mountEl' | 'mountSelector' | 'nonLinearContainer' | 'nonLinearSelector' | 'companionContainer' | 'companionSelector'>>, 'sources' | 'breaks' | 'adSourcesMode' | 'breakTolerance' | 'debug'> & {
32
+ sources: AdsSource[];
33
+ }, ctx: PluginContext, warn: (...args: any[]) => void, onVmapError: (err: unknown) => void);
34
+ isXmlString(src: string): boolean;
35
+ getSource(type: AdsSourceType): AdsSource | undefined;
36
+ getPrimaryVastLikeSource(): AdsSource | undefined;
37
+ inferSourceTypeForUrl(url: string): 'NONLINEAR' | undefined;
38
+ getVastInputFromBreak(b: AdsBreakConfig): {
39
+ input?: VastInput;
40
+ sourceType?: AdsSourceType;
41
+ };
42
+ getBreakId(b: AdsBreakConfig): string;
43
+ getPrerollBreak(): AdsBreakConfig | undefined;
44
+ getPostrollBreak(): AdsBreakConfig | undefined;
45
+ getDueMidrollBreaks(currentTime: number): AdsBreakConfig[];
46
+ getDueMidrollBreak(currentTime: number): AdsBreakConfig | undefined;
47
+ rebuild(): void;
48
+ normalizeVmapAdSource(adSource: any): any | undefined;
49
+ extractVastTagUri(adTagURI: any): string | undefined;
50
+ parseVmapTimeOffset(timeOffset: any): {
51
+ at: 'preroll' | 'postroll' | number;
52
+ pendingPercent?: number | null;
53
+ };
54
+ loadVmapAndMerge(existing: AdsBreakConfig[], vmapSrc?: string): Promise<void>;
55
+ private parseVmapFallback;
56
+ reset(): void;
57
+ }
58
+ export {};
59
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/schedule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SimidSession — Full IAB SIMID (Secure Interactive Media Interface Definition) implementation.
3
+ *
4
+ * Protocol overview:
5
+ * - Player sends messages to the creative iframe via postMessage.
6
+ * - Creative sends messages back, handled by the player's message listener.
7
+ * - Each player→creative message carries a unique msgId. The creative responds
8
+ * with SIMID:Creative:resolve or SIMID:Creative:reject referencing that msgId.
9
+ *
10
+ * Spec: https://iabtechlab.com/standards/simid/
11
+ */
12
+ export declare const SIMID_PLAYER: {
13
+ readonly INIT: "SIMID:Player:init";
14
+ readonly START_AD: "SIMID:Player:startAd";
15
+ readonly AD_PROGRESS: "SIMID:Player:adProgress";
16
+ readonly AD_PAUSED: "SIMID:Player:adPaused";
17
+ readonly AD_PLAYING: "SIMID:Player:adPlaying";
18
+ readonly AD_STOPPED: "SIMID:Player:adStopped";
19
+ readonly AD_SKIPPED: "SIMID:Player:adSkipped";
20
+ readonly AD_VOLUME: "SIMID:Player:adVolume";
21
+ readonly RESIZE: "SIMID:Player:resize";
22
+ readonly FATAL: "SIMID:Player:fatal";
23
+ readonly LOG: "SIMID:Player:log";
24
+ };
25
+ export declare const SIMID_CREATIVE: {
26
+ readonly READY: "SIMID:Creative:ready";
27
+ readonly RESOLVE: "SIMID:Creative:resolve";
28
+ readonly REJECT: "SIMID:Creative:reject";
29
+ readonly REQUEST_FULLSCREEN: "SIMID:Creative:requestFullscreen";
30
+ readonly REQUEST_RESIZE: "SIMID:Creative:requestResize";
31
+ readonly CLICK_THROUGH: "SIMID:Creative:clickThrough";
32
+ readonly REPORT_TRACKING: "SIMID:Creative:reportTracking";
33
+ readonly REQUEST_SKIP: "SIMID:Creative:requestSkip";
34
+ readonly REQUEST_STOP: "SIMID:Creative:requestStop";
35
+ readonly REQUEST_PAUSE: "SIMID:Creative:requestPause";
36
+ readonly REQUEST_PLAY: "SIMID:Creative:requestPlay";
37
+ readonly FATAL: "SIMID:Creative:fatal";
38
+ readonly LOG: "SIMID:Creative:log";
39
+ };
40
+ export type SimidCallbacks = {
41
+ onSkip: () => void;
42
+ onStop: () => void;
43
+ onPause: () => void;
44
+ onPlay: () => void;
45
+ onClickThrough: (url: string) => void;
46
+ onTrackingEvent: (event: string, data?: any) => void;
47
+ onFatal: (errorCode: number, reason: string) => void;
48
+ onLog?: (data: any) => void;
49
+ };
50
+ export declare class SimidSession {
51
+ private iframe;
52
+ private adVideo;
53
+ private callbacks;
54
+ private msgId;
55
+ private pending;
56
+ private messageListener;
57
+ private started;
58
+ private destroyed;
59
+ constructor(iframe: HTMLIFrameElement, adVideo: HTMLVideoElement, callbacks: SimidCallbacks);
60
+ private nextMsgId;
61
+ private send;
62
+ private handleMessage;
63
+ private onCreativeReady;
64
+ init(creativeData: Record<string, unknown>, environmentData: Record<string, unknown>): Promise<any>;
65
+ start(): Promise<any>;
66
+ progress(currentTime: number, duration: number): void;
67
+ pause(): void;
68
+ resume(): void;
69
+ stop(): Promise<any>;
70
+ skip(): void;
71
+ volumeChange(volume: number, muted: boolean): void;
72
+ resize(width: number, height: number): Promise<any>;
73
+ fatal(errorCode: number, reason: string): void;
74
+ destroy(): void;
75
+ }
76
+ //# sourceMappingURL=simid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simid.d.ts","sourceRoot":"","sources":["../../src/simid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,YAAY;;;;;;;;;;;;CAYf,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAcjB,CAAC;AAiBX,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B,CAAA;AAED,qBAAa,YAAY;IAQrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAGhB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,cAAc;IAQnC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,aAAa;YAmFP,eAAe;IAyB7B,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAInG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAIrB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUrD,KAAK,IAAI,IAAI;IAKb,MAAM,IAAI,IAAI;IAKd,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IAKpB,IAAI,IAAI,IAAI;IAKZ,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAWlD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAInD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAW9C,OAAO;CAUR"}