@openplayerjs/ads 3.1.0 → 3.1.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.
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +3082 -2228
- package/dist/index.js.map +1 -1
- package/dist/openplayer-ads.js +1 -1
- package/dist/openplayer-ads.js.map +1 -1
- package/dist/types/ad-dom.d.ts +50 -0
- package/dist/types/ad-dom.d.ts.map +1 -0
- package/dist/types/ads.d.ts +63 -120
- package/dist/types/ads.d.ts.map +1 -1
- package/dist/types/caption-manager.d.ts +14 -0
- package/dist/types/caption-manager.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/install.d.ts +4 -0
- package/dist/types/install.d.ts.map +1 -0
- package/dist/types/omid.d.ts +64 -0
- package/dist/types/omid.d.ts.map +1 -0
- package/dist/types/schedule.d.ts +59 -0
- package/dist/types/schedule.d.ts.map +1 -0
- package/dist/types/simid.d.ts +76 -0
- package/dist/types/simid.d.ts.map +1 -0
- package/dist/types/types.d.ts +91 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/vast-parser.d.ts +33 -0
- package/dist/types/vast-parser.d.ts.map +1 -0
- package/package.json +10 -10
|
@@ -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"}
|
package/dist/types/ads.d.ts
CHANGED
|
@@ -1,37 +1,6 @@
|
|
|
1
1
|
import type { PlayerPlugin, PluginContext } from '@openplayerjs/core';
|
|
2
|
-
|
|
3
|
-
type
|
|
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
|
|
74
|
-
private
|
|
75
|
-
private
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
|
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
|
|
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
|
package/dist/types/ads.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ads.d.ts","sourceRoot":"","sources":["../../src/ads.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @openplayerjs/ads
|
|
3
3
|
*
|
|
4
|
-
* VAST / VMAP /
|
|
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 {
|
|
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;
|
|
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 @@
|
|
|
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"}
|